summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php')
-rw-r--r--protocols/Telegram/tdlib/td/td/generate/TlDocumentationGenerator.php69
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 = '';