diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php')
-rw-r--r-- | protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php | 69 |
1 files changed, 48 insertions, 21 deletions
diff --git a/protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php b/protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php index 11a281ce38..f30ca382e1 100644 --- a/protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php +++ b/protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php @@ -53,7 +53,7 @@ abstract class TlDocumentationGenerator } } if ($bracket_count === 0) { - if (ctype_upper($str[$pos + 1])) { + if (ord('A') <= ord($str[$pos + 1]) && ord($str[$pos + 1]) <= ord('Z')) { return substr($str, 0, -1).'.)'; } } else { @@ -87,13 +87,15 @@ abstract class TlDocumentationGenerator abstract protected function addAbstractClassDocumentation($class_name, $value); - abstract protected function addClassDocumentation($class_name, $base_class_name, $description, $return_type); + abstract protected function getFunctionReturnTypeDescription($return_type, $for_constructor); + + abstract protected function addClassDocumentation($class_name, $base_class_name, $return_type, $description); abstract protected function addFieldDocumentation($class_name, $field_name, $type_name, $field_info, $may_be_null); - abstract protected function addDefaultConstructorDocumentation($class_name); + abstract protected function addDefaultConstructorDocumentation($class_name, $class_description); - abstract protected function addFullConstructorDocumentation($class_name, $known_fields, $info); + abstract protected function addFullConstructorDocumentation($class_name, $class_description, $known_fields, $info); public function generate($tl_scheme_file, $source_file) { @@ -134,6 +136,9 @@ abstract class TlDocumentationGenerator $this->printError('Wrong description begin'); } + if (preg_match('/[^ ]@/', $description)) { + $this->printError("Wrong documentation '@' usage: $description"); + } $docs = explode('@', $description); array_shift($docs); $info = array(); @@ -146,7 +151,7 @@ abstract class TlDocumentationGenerator if ($key === 'description') { $need_class_description = false; - $value = $this->addDot($value); + $value = $this->escapeDocumentation($this->addDot($value)); $this->addAbstractClassDocumentation($current_class, $value); continue; @@ -207,43 +212,65 @@ abstract class TlDocumentationGenerator $known_fields[$field_name] = $field_type; continue; } - $this->printError("Have no info about field `$field_name`"); + $this->printError("Have no documentation for field `$field_name`"); } foreach ($info as $name => $value) { if (!$value) { - $this->printError("info[$name] for $class_name is empty"); - } elseif ($value[0] < 'A' || $value[0] > 'Z') { - $this->printError("info[$name] for $class_name doesn't begins with capital letter"); + $this->printError("Documentation for field $name of $class_name is empty"); + } elseif (($value[0] < 'A' || $value[0] > 'Z') && ($value[0] < '0' || $value[0] > '9')) { + $this->printError("Documentation for field $name of $class_name doesn't begin with a capital letter"); } } - foreach (array_diff_key($info, $known_fields) as $field_name => $field_info) { - if ($field_name !== 'description') { - $this->printError("Have info about unexisted field `$field_name`"); - } + foreach ($info as &$v) { + $v = $this->escapeDocumentation($this->addDot($v)); } - if (!$info['description']) { + $description = $info['description']; + unset($info['description']); + + if (!$description) { $this->printError("Have no description for class `$class_name`"); } - foreach ($info as &$v) { - $v = $this->escapeDocumentation($this->addDot($v)); + foreach (array_diff_key($info, $known_fields) as $field_name => $field_info) { + $this->printError("Have info about nonexistent field `$field_name`"); + } + + if (array_keys($info) !== array_keys($known_fields)) { + $this->printError("Have wrong documentation for class `$class_name`"); } $base_class_name = $current_class ?: $this->getBaseClassName($is_function); - $this->addClassDocumentation($class_name, $base_class_name, $info['description'], $is_function ? $this->getTypeName($type) : ''); + $class_description = $description; + $return_type = ""; + if ($is_function) { + $return_type = $this->getTypeName($type); + $class_description .= $this->getFunctionReturnTypeDescription($return_type, false); + } + $this->addClassDocumentation($class_name, $base_class_name, $return_type, $class_description); - foreach ($known_fields as $name => $type) { + foreach ($known_fields as $name => $field_type) { $may_be_null = stripos($info[$name], 'may be null') !== false; - $this->addFieldDocumentation($class_name, $this->getFieldName($name, $class_name), $this->getTypeName($type), $info[$name], $may_be_null); + $field_name = $this->getFieldName($name, $class_name); + $field_type_name = $this->getTypeName($field_type); + $this->addFieldDocumentation($class_name, $field_name, $field_type_name, $info[$name], $may_be_null); } - $this->addDefaultConstructorDocumentation($class_name); + if ($is_function) { + $default_constructor_prefix = 'Default constructor for a function, which '; + $full_constructor_prefix = 'Creates a function, which '; + $class_description = lcfirst($description); + $class_description .= $this->getFunctionReturnTypeDescription($this->getTypeName($type), true); + } else { + $default_constructor_prefix = ''; + $full_constructor_prefix = ''; + } + $this->addDefaultConstructorDocumentation($class_name, $default_constructor_prefix.$class_description); if ($known_fields) { - $this->addFullConstructorDocumentation($class_name, $known_fields, $info); + $this->addFullConstructorDocumentation($class_name, $full_constructor_prefix.$class_description, $known_fields, $info); } $description = ''; |