|
|
@@ -1,136 +1,112 @@
|
|
|
module Docs
|
|
|
class Php
|
|
|
class EntriesFilter < Docs::EntriesFilter
|
|
|
- TYPES = {
|
|
|
- # [name-begin-with] => [type]
|
|
|
- 'AMQP' => 'AMQP',
|
|
|
- 'APCIterator' => 'APC',
|
|
|
- 'CURL' => 'cURL',
|
|
|
- 'Date' => 'Date and Time',
|
|
|
- 'DirectoryIterator' => 'Standard PHP Library',
|
|
|
- 'Directory' => 'Directories',
|
|
|
- 'DOM' => 'DOM',
|
|
|
- 'Gearman' => 'Gearman',
|
|
|
- 'Gmagick' => 'Gmagick',
|
|
|
- 'Http' => 'HTTP',
|
|
|
- 'Imagick' => 'Imagick',
|
|
|
- 'Collator' => 'Internationalization',
|
|
|
- 'NumberFormatter' => 'Internationalization',
|
|
|
- 'Locale' => 'Internationalization',
|
|
|
- 'MessageFormatter' => 'Internationalization',
|
|
|
- 'Normalizer' => 'Internationalization',
|
|
|
- 'Intl' => 'Internationalization',
|
|
|
- 'intl' => 'Internationalization',
|
|
|
- 'ResourceBundle' => 'Internationalization',
|
|
|
- 'Spoofchecker' => 'Internationalization',
|
|
|
- 'Transliterator' => 'Internationalization',
|
|
|
- 'UConverter' => 'Internationalization',
|
|
|
- 'grapheme' => 'Internationalization',
|
|
|
- 'idn' => 'Internationalization',
|
|
|
- 'Json' => 'JSON',
|
|
|
- 'mysqli' => 'mysqli',
|
|
|
- 'OAuth' => 'OAuth',
|
|
|
- 'PDO' => 'PDO',
|
|
|
- 'Thread' => 'pthreads',
|
|
|
- 'Worker' => 'pthreads',
|
|
|
- 'Stackable' => 'pthreads',
|
|
|
- 'Mutex' => 'pthreads',
|
|
|
- 'Cond' => 'pthreads',
|
|
|
- 'Exception' => 'Predefined Exceptions',
|
|
|
- 'ErrorException' => 'Predefined Exceptions',
|
|
|
- 'QuickHash' => 'QuickHash',
|
|
|
- 'Reflection' => 'Reflection',
|
|
|
- 'Reflector' => 'Reflection',
|
|
|
- 'Session' => 'Sessions',
|
|
|
- 'SimpleXML' => 'SimpleXML',
|
|
|
- 'Soap' => 'SOAP',
|
|
|
- 'Solr' => 'Solr',
|
|
|
- 'Sphinx' => 'Sphinx',
|
|
|
- 'Spl' => 'Standard PHP Library',
|
|
|
- 'ArrayObject' => 'Standard PHP Library',
|
|
|
- 'Countable' => 'Standard PHP Library',
|
|
|
- 'SQLite3' => 'SQLite3',
|
|
|
- 'streamWrapper' => 'Streams',
|
|
|
- 'php_user_filter' => 'Streams',
|
|
|
- 'tidy' => 'Tidy',
|
|
|
- 'V8Js' => 'V8js',
|
|
|
- 'Varnish' => 'Varnish',
|
|
|
- 'Weakref' => 'Weak References',
|
|
|
- 'WeakRef' => 'Weak References',
|
|
|
- 'WeakMap' => 'Weak References',
|
|
|
- 'XSLTProcessor' => 'XSLT',
|
|
|
- 'XsltProcessor' => 'XSLT',
|
|
|
- 'Yaf' => 'Yaf',
|
|
|
- 'ZipArchive' => 'Zip' }
|
|
|
+ TYPE_BY_NAME_STARTS_WITH = {
|
|
|
+ 'ArrayObject' => 'SPL',
|
|
|
+ 'Cond' => 'pthreads',
|
|
|
+ 'CURL' => 'cURL',
|
|
|
+ 'Date' => 'Date/Time',
|
|
|
+ 'ErrorException' => 'Predefined Exceptions',
|
|
|
+ 'Exception' => 'Predefined Exceptions',
|
|
|
+ 'Json' => 'JSON',
|
|
|
+ 'Http' => 'HTTP',
|
|
|
+ 'Mutex' => 'pthreads',
|
|
|
+ 'php_user_filter' => 'Stream',
|
|
|
+ 'Reflector' => 'Reflection',
|
|
|
+ 'Soap' => 'SOAP',
|
|
|
+ 'SplFile' => 'SPL/File',
|
|
|
+ 'SplTempFile' => 'SPL/File',
|
|
|
+ 'Spl' => 'SPL',
|
|
|
+ 'Stackable' => 'pthreads',
|
|
|
+ 'streamWrapper' => 'Stream',
|
|
|
+ 'Thread' => 'pthreads',
|
|
|
+ 'tidy' => 'Tidy',
|
|
|
+ 'Worker' => 'pthreads',
|
|
|
+ 'XsltProcessor' => 'XSLT',
|
|
|
+ 'ZipArchive' => 'Zip' }
|
|
|
+
|
|
|
+ %w(APC AMQP Directory DOM Gearman Gmagick Imagick mysqli OAuth PDO
|
|
|
+ Reflection Session SimpleXML Solr Sphinx SQLite3 Varnish XSLT Yaf).each do |str|
|
|
|
+ TYPE_BY_NAME_STARTS_WITH[str] = str
|
|
|
+ end
|
|
|
+
|
|
|
+ %w(ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Traversable).each do |str|
|
|
|
+ TYPE_BY_NAME_STARTS_WITH[str] = 'Predefined Interfaces and Classes'
|
|
|
+ end
|
|
|
+
|
|
|
+ %w(Collator grapheme idn Intl intl Locale MessageFormatter Normalizer
|
|
|
+ NumberFormatter ResourceBundle Spoofchecker Transliterator UConverter).each do |str|
|
|
|
+ TYPE_BY_NAME_STARTS_WITH[str] = 'Internationalization'
|
|
|
+ end
|
|
|
+
|
|
|
+ %w(Countable OuterIterator RecursiveIterator SeekableIterator ).each do |str|
|
|
|
+ TYPE_BY_NAME_STARTS_WITH[str] = 'SPL/Interfaces'
|
|
|
+ end
|
|
|
|
|
|
REPLACE_TYPES = {
|
|
|
- # [original-type] => [new-type]
|
|
|
- 'Array' => 'Arrays',
|
|
|
- 'Bzip2' => 'bzip2',
|
|
|
- 'Classes/Object' => 'Classes and Objects',
|
|
|
- 'Date/Time' => 'Date and Time',
|
|
|
- 'Directory' => 'Directories',
|
|
|
- 'Exceptions' => 'Standard PHP Library',
|
|
|
- 'Function handling' => 'Function Handling',
|
|
|
- 'GD and Image' => 'GD',
|
|
|
- 'Gettext' => 'gettext',
|
|
|
- 'Inotify' => 'inotify',
|
|
|
- 'Interfaces' => 'Standard PHP Library',
|
|
|
- 'Iterators' => 'Standard PHP Library',
|
|
|
- 'Libevent' => 'libevent',
|
|
|
- 'Mailparse' => 'Mail',
|
|
|
- 'Misc.' => 'Miscellaneous',
|
|
|
- 'Multibyte String' => 'Multibyte Strings',
|
|
|
- 'PCRE' => 'Regular Expressions',
|
|
|
- 'PHP Options/Info' => 'Options and Info',
|
|
|
- 'POSIX Regex' => 'Regular Expressions',
|
|
|
- 'Program execution' => 'Program Execution',
|
|
|
+ 'Exceptions' => 'SPL/Exceptions',
|
|
|
+ 'GD and Image' => 'Image',
|
|
|
+ 'Gmagick' => 'Image/GraphicsMagick',
|
|
|
+ 'Imagick' => 'Image/ImageMagick',
|
|
|
+ 'Interfaces' => 'SPL/Interfaces',
|
|
|
+ 'Iterators' => 'SPL/Iterators',
|
|
|
+ 'mysqli' => 'Database/MySQL',
|
|
|
+ 'PostgreSQL' => 'Database/PostgreSQL',
|
|
|
'Session' => 'Sessions',
|
|
|
- 'Session PgSQL' => 'PostgreSQL',
|
|
|
- 'SPL' => 'Standard PHP Library',
|
|
|
- 'Statistic' => 'Statistics',
|
|
|
+ 'Session PgSQL' => 'Database/PostgreSQL',
|
|
|
+ 'SQLite3' => 'Database/SQLite',
|
|
|
+ 'SQLSRV' => 'Database/SQL Server',
|
|
|
'Stream' => 'Streams',
|
|
|
- 'String' => 'Strings',
|
|
|
- 'Variable handling' => 'Variable Handling',
|
|
|
- 'XMLReader' => 'XML Reader',
|
|
|
- 'XMLWriter' => 'XML Writer',
|
|
|
- 'Yaml' => 'YAML',
|
|
|
- 'Zlib' => 'zlib' }
|
|
|
-
|
|
|
- IGNORE_SLUGS = %w(reserved.exceptions reserved.interfaces
|
|
|
- reserved.variables)
|
|
|
+ 'Yaml' => 'YAML' }
|
|
|
|
|
|
- def include_default_entry?
|
|
|
- !(slug.start_with?('book') || IGNORE_SLUGS.include?(slug))
|
|
|
- end
|
|
|
+ TYPE_GROUPS = {
|
|
|
+ 'Classes and Functions' => ['Classes/Object', 'Function handling', 'Predefined Interfaces and Classes', 'runkit'],
|
|
|
+ 'Encoding' => ['Gettext', 'iconv', 'Multibyte String'],
|
|
|
+ 'Compression' => ['Bzip2', 'Zip', 'Zlib'],
|
|
|
+ 'Cryptography' => ['Hash', 'Mcrypt', 'OpenSSL', 'Password Hashing'],
|
|
|
+ 'Database' => ['DBA', 'ODBC', 'PDO'],
|
|
|
+ 'Date and Time' => ['Calendar', 'Date/Time'],
|
|
|
+ 'Errors' => ['Error Handling', 'Predefined Exceptions'],
|
|
|
+ 'File System' => ['Directory', 'Fileinfo', 'Filesystem', 'Inotify'],
|
|
|
+ 'HTML' => ['DOM', 'Tidy'],
|
|
|
+ 'Language' => ['Control Structures', 'Misc.', 'PHP Options/Info', 'Predefined Variables'],
|
|
|
+ 'Mail' => ['Mail', 'Mailparse'],
|
|
|
+ 'Mathematics' => ['BC Math', 'Math', 'Statistic'],
|
|
|
+ 'Networking' => ['GeoIP', 'Network', 'Output Control', 'SSH2', 'Socket', 'URL'],
|
|
|
+ 'Process Control' => ['Eio', 'Libevent', 'POSIX', 'Program execution', 'pthreads'],
|
|
|
+ 'String' => ['Ctype', 'PCRE', 'POSIX Regex', 'Taint'],
|
|
|
+ 'Variables' => ['Filter', 'Variable handling'],
|
|
|
+ 'XML' => ['libxml', 'SimpleXML', 'XML Parser', 'XML-RPC', 'XMLReader', 'XMLWriter', 'XSLT'] }
|
|
|
|
|
|
def get_name
|
|
|
+ return 'IntlException' if slug == 'class.intlexception'
|
|
|
name = css('> .sect1 > .title', 'h1', 'h2').first.content
|
|
|
-
|
|
|
- if name == 'Exception class for intl errors'
|
|
|
- 'IntlException'
|
|
|
- else
|
|
|
- name.sub! 'The ', ''
|
|
|
- name.sub! ' class', ' (class)'
|
|
|
- name.sub! ' interface', ' (interface)'
|
|
|
- name
|
|
|
- end
|
|
|
+ name.sub! 'The ', ''
|
|
|
+ name.sub! ' class', ' (class)'
|
|
|
+ name.sub! ' interface', ' (interface)'
|
|
|
+ name
|
|
|
end
|
|
|
|
|
|
def get_type
|
|
|
- if key = TYPES.keys.detect { |t| name.start_with?(t) }
|
|
|
- TYPES[key]
|
|
|
- else
|
|
|
- type = at_css('.up').content.strip
|
|
|
- type.sub! ' Functions', ''
|
|
|
- type.sub! ' Obsolete Aliases and', ''
|
|
|
+ type = at_css('.up').content.strip
|
|
|
+ type = 'SPL/Iterators' if type.end_with? 'Iterator'
|
|
|
+ type.sub! ' Functions', ''
|
|
|
+
|
|
|
+ TYPE_BY_NAME_STARTS_WITH.each_pair do |key, value|
|
|
|
+ break type = value if name.start_with?(key)
|
|
|
+ end
|
|
|
|
|
|
- if type.end_with? 'Iterator'
|
|
|
- 'Standard PHP Library'
|
|
|
- else
|
|
|
- REPLACE_TYPES[type] || type
|
|
|
+ TYPE_GROUPS.each_pair do |replacement, types|
|
|
|
+ types.each do |t|
|
|
|
+ return replacement if type == t
|
|
|
end
|
|
|
end
|
|
|
+
|
|
|
+ REPLACE_TYPES[type] || type
|
|
|
+ end
|
|
|
+
|
|
|
+ def include_default_entry?
|
|
|
+ Php::INDEX_PATHS.exclude?(subpath) && doc.at_css('.reference', '.refentry', '.sect1')
|
|
|
end
|
|
|
end
|
|
|
end
|