public function test_regReplace() { $alpha = F\regReplace('/[^a-z]+/i', ''); $this->assertEquals('AbFd', $alpha('A12;b_{F}|d')); }
/** * Converts the given syntax to a string. * * @param Tarsana\Syntax\Syntax $value the data to encode * @return string */ protected function doDump($value) { $result = ''; if ($value instanceof StringSyntax) { $result = F\regReplace('/[^a-zA-Z-_]+/', '', $value->description()); } else { if ($value instanceof NumberSyntax) { $result = '#' . F\regReplace('/[^a-zA-Z-_]+/', '', $value->description()); } else { if ($value instanceof BooleanSyntax) { $result = F\regReplace('/[^a-zA-Z-_]+/', '', $value->description()) . '?'; } else { if ($value instanceof ArraySyntax) { $item = $value->itemSyntax(); $oldDescription = $item->description(); $text = $this->dump($item->description($value->description())); $item->description($oldDescription); $result = "{$text}[{$value->separator()}]"; } else { if ($value instanceof ObjectSyntax) { $fields = []; foreach ($value->fields() as $name => $item) { $oldDescription = $item->description(); $item->description($name); $fields[] = $this->dump($item); $item->description($oldDescription); } $fields = F\join($this->fieldsSeparator, $fields); $name = F\regReplace('/[^a-zA-Z-_]+/', '', $value->description()); $result = "{$name}{{$value->separator()}{$this->fieldsSeparator}{$fields}}"; } } } } } if (!$value->isRequired()) { $result = "[{$result}]"; } return $result; }