solvas-jsduck 6.0.0.beta.1888
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COPYING +674 -0
- data/README.md +115 -0
- data/bin/solvas-jsduck +27 -0
- data/js-classes/Array.js +1054 -0
- data/js-classes/Boolean.js +110 -0
- data/js-classes/Date.js +1022 -0
- data/js-classes/Function.js +336 -0
- data/js-classes/Number.js +308 -0
- data/js-classes/Object.js +1042 -0
- data/js-classes/RegExp.js +415 -0
- data/js-classes/String.js +1052 -0
- data/lib/jsduck/aggregator.rb +200 -0
- data/lib/jsduck/app.rb +63 -0
- data/lib/jsduck/assets.rb +54 -0
- data/lib/jsduck/base_type.rb +53 -0
- data/lib/jsduck/batch_parser.rb +46 -0
- data/lib/jsduck/batch_processor.rb +83 -0
- data/lib/jsduck/cache.rb +137 -0
- data/lib/jsduck/categories/auto.rb +83 -0
- data/lib/jsduck/categories/class_name.rb +39 -0
- data/lib/jsduck/categories/factory.rb +75 -0
- data/lib/jsduck/categories/file.rb +69 -0
- data/lib/jsduck/class.rb +218 -0
- data/lib/jsduck/class_doc_expander.rb +132 -0
- data/lib/jsduck/class_name.rb +23 -0
- data/lib/jsduck/class_writer.rb +53 -0
- data/lib/jsduck/columns.rb +56 -0
- data/lib/jsduck/css/parser.rb +90 -0
- data/lib/jsduck/css/type.rb +57 -0
- data/lib/jsduck/doc/comment.rb +40 -0
- data/lib/jsduck/doc/delimited_parser.rb +105 -0
- data/lib/jsduck/doc/map.rb +23 -0
- data/lib/jsduck/doc/parser.rb +135 -0
- data/lib/jsduck/doc/processor.rb +52 -0
- data/lib/jsduck/doc/scanner.rb +83 -0
- data/lib/jsduck/doc/standard_tag_parser.rb +125 -0
- data/lib/jsduck/doc/subproperties.rb +71 -0
- data/lib/jsduck/examples.rb +63 -0
- data/lib/jsduck/export_writer.rb +63 -0
- data/lib/jsduck/exporter/app.rb +80 -0
- data/lib/jsduck/exporter/examples.rb +58 -0
- data/lib/jsduck/exporter/full.rb +60 -0
- data/lib/jsduck/external_classes.rb +362 -0
- data/lib/jsduck/format/batch.rb +58 -0
- data/lib/jsduck/format/class.rb +62 -0
- data/lib/jsduck/format/doc.rb +172 -0
- data/lib/jsduck/format/html_stack.rb +108 -0
- data/lib/jsduck/format/shortener.rb +55 -0
- data/lib/jsduck/format/subproperties.rb +64 -0
- data/lib/jsduck/grouped_asset.rb +59 -0
- data/lib/jsduck/guide_anchors.rb +39 -0
- data/lib/jsduck/guide_toc.rb +68 -0
- data/lib/jsduck/guide_toc_entry.rb +54 -0
- data/lib/jsduck/guide_writer.rb +58 -0
- data/lib/jsduck/guides.rb +188 -0
- data/lib/jsduck/img/dir.rb +94 -0
- data/lib/jsduck/img/dir_set.rb +39 -0
- data/lib/jsduck/img/writer.rb +23 -0
- data/lib/jsduck/inline/auto_link.rb +106 -0
- data/lib/jsduck/inline/example.rb +44 -0
- data/lib/jsduck/inline/img.rb +63 -0
- data/lib/jsduck/inline/link.rb +100 -0
- data/lib/jsduck/inline/link_renderer.rb +70 -0
- data/lib/jsduck/inline/video.rb +61 -0
- data/lib/jsduck/inline_examples.rb +94 -0
- data/lib/jsduck/js/associator.rb +224 -0
- data/lib/jsduck/js/ast.rb +69 -0
- data/lib/jsduck/js/class.rb +248 -0
- data/lib/jsduck/js/evaluator.rb +70 -0
- data/lib/jsduck/js/event.rb +34 -0
- data/lib/jsduck/js/ext_define.rb +46 -0
- data/lib/jsduck/js/ext_patterns.rb +75 -0
- data/lib/jsduck/js/fires.rb +42 -0
- data/lib/jsduck/js/listener.rb +35 -0
- data/lib/jsduck/js/method.rb +99 -0
- data/lib/jsduck/js/method_calls.rb +40 -0
- data/lib/jsduck/js/node.rb +267 -0
- data/lib/jsduck/js/node_array.rb +36 -0
- data/lib/jsduck/js/parser.rb +44 -0
- data/lib/jsduck/js/property.rb +81 -0
- data/lib/jsduck/js/returns.rb +211 -0
- data/lib/jsduck/js/rkelly_adapter.rb +587 -0
- data/lib/jsduck/js/scoped_traverser.rb +42 -0
- data/lib/jsduck/js/serializer.rb +263 -0
- data/lib/jsduck/js/utils.rb +21 -0
- data/lib/jsduck/logger.rb +186 -0
- data/lib/jsduck/member_registry.rb +41 -0
- data/lib/jsduck/members_index.rb +141 -0
- data/lib/jsduck/merger.rb +83 -0
- data/lib/jsduck/news.rb +149 -0
- data/lib/jsduck/options/config.rb +35 -0
- data/lib/jsduck/options/helpful_parser.rb +111 -0
- data/lib/jsduck/options/input_files.rb +60 -0
- data/lib/jsduck/options/jsb.rb +25 -0
- data/lib/jsduck/options/parser.rb +968 -0
- data/lib/jsduck/options/processor.rb +47 -0
- data/lib/jsduck/options/record.rb +51 -0
- data/lib/jsduck/output_dir.rb +29 -0
- data/lib/jsduck/params_merger.rb +47 -0
- data/lib/jsduck/parser.rb +76 -0
- data/lib/jsduck/process/accessors.rb +152 -0
- data/lib/jsduck/process/circular_deps.rb +58 -0
- data/lib/jsduck/process/components.rb +19 -0
- data/lib/jsduck/process/enums.rb +90 -0
- data/lib/jsduck/process/ext4_events.rb +46 -0
- data/lib/jsduck/process/fires.rb +71 -0
- data/lib/jsduck/process/global_members.rb +35 -0
- data/lib/jsduck/process/ignored_classes.rb +16 -0
- data/lib/jsduck/process/importer.rb +75 -0
- data/lib/jsduck/process/inherit_class.rb +58 -0
- data/lib/jsduck/process/inherit_doc.rb +32 -0
- data/lib/jsduck/process/inherit_members.rb +259 -0
- data/lib/jsduck/process/lint.rb +118 -0
- data/lib/jsduck/process/no_doc.rb +50 -0
- data/lib/jsduck/process/overrides.rb +99 -0
- data/lib/jsduck/process/return_values.rb +72 -0
- data/lib/jsduck/process/versions.rb +137 -0
- data/lib/jsduck/relations.rb +95 -0
- data/lib/jsduck/render/class.rb +152 -0
- data/lib/jsduck/render/sidebar.rb +97 -0
- data/lib/jsduck/render/signature_util.rb +14 -0
- data/lib/jsduck/render/subproperties.rb +117 -0
- data/lib/jsduck/render/tags.rb +50 -0
- data/lib/jsduck/source/file.rb +89 -0
- data/lib/jsduck/tag/abstract.rb +11 -0
- data/lib/jsduck/tag/accessor.rb +10 -0
- data/lib/jsduck/tag/alias.rb +42 -0
- data/lib/jsduck/tag/alternate_class_names.rb +13 -0
- data/lib/jsduck/tag/aside.rb +71 -0
- data/lib/jsduck/tag/author.rb +30 -0
- data/lib/jsduck/tag/boolean_tag.rb +24 -0
- data/lib/jsduck/tag/cfg.rb +79 -0
- data/lib/jsduck/tag/chainable.rb +12 -0
- data/lib/jsduck/tag/class.rb +77 -0
- data/lib/jsduck/tag/class_list_tag.rb +40 -0
- data/lib/jsduck/tag/component.rb +19 -0
- data/lib/jsduck/tag/constructor.rb +24 -0
- data/lib/jsduck/tag/css_mixin.rb +31 -0
- data/lib/jsduck/tag/css_var.rb +50 -0
- data/lib/jsduck/tag/default.rb +25 -0
- data/lib/jsduck/tag/deprecated.rb +23 -0
- data/lib/jsduck/tag/deprecated_tag.rb +60 -0
- data/lib/jsduck/tag/doc.rb +32 -0
- data/lib/jsduck/tag/docauthor.rb +12 -0
- data/lib/jsduck/tag/enum.rb +67 -0
- data/lib/jsduck/tag/event.rb +36 -0
- data/lib/jsduck/tag/evented.rb +10 -0
- data/lib/jsduck/tag/experimental.rb +28 -0
- data/lib/jsduck/tag/extends.rb +39 -0
- data/lib/jsduck/tag/fires.rb +55 -0
- data/lib/jsduck/tag/ftype.rb +19 -0
- data/lib/jsduck/tag/hide.rb +11 -0
- data/lib/jsduck/tag/icons/cfg.png +0 -0
- data/lib/jsduck/tag/icons/class-large.png +0 -0
- data/lib/jsduck/tag/icons/class-redirect.png +0 -0
- data/lib/jsduck/tag/icons/class.png +0 -0
- data/lib/jsduck/tag/icons/component-large.png +0 -0
- data/lib/jsduck/tag/icons/component-redirect.png +0 -0
- data/lib/jsduck/tag/icons/component.png +0 -0
- data/lib/jsduck/tag/icons/css_mixin.png +0 -0
- data/lib/jsduck/tag/icons/css_var.png +0 -0
- data/lib/jsduck/tag/icons/event.png +0 -0
- data/lib/jsduck/tag/icons/listener.png +0 -0
- data/lib/jsduck/tag/icons/method.png +0 -0
- data/lib/jsduck/tag/icons/property.png +0 -0
- data/lib/jsduck/tag/icons/singleton-large.png +0 -0
- data/lib/jsduck/tag/icons/singleton-redirect.png +0 -0
- data/lib/jsduck/tag/icons/singleton.png +0 -0
- data/lib/jsduck/tag/ignore.rb +12 -0
- data/lib/jsduck/tag/inheritable.rb +10 -0
- data/lib/jsduck/tag/inheritdoc.rb +48 -0
- data/lib/jsduck/tag/listener.rb +36 -0
- data/lib/jsduck/tag/localdoc.rb +33 -0
- data/lib/jsduck/tag/markdown.rb +14 -0
- data/lib/jsduck/tag/member.rb +24 -0
- data/lib/jsduck/tag/member_tag.rb +131 -0
- data/lib/jsduck/tag/method.rb +75 -0
- data/lib/jsduck/tag/mixins.rb +27 -0
- data/lib/jsduck/tag/new.rb +32 -0
- data/lib/jsduck/tag/override.rb +37 -0
- data/lib/jsduck/tag/overrides.rb +29 -0
- data/lib/jsduck/tag/param.rb +46 -0
- data/lib/jsduck/tag/preventable.rb +37 -0
- data/lib/jsduck/tag/private.rb +35 -0
- data/lib/jsduck/tag/property.rb +67 -0
- data/lib/jsduck/tag/protected.rb +12 -0
- data/lib/jsduck/tag/ptype.rb +19 -0
- data/lib/jsduck/tag/readonly.rb +11 -0
- data/lib/jsduck/tag/removed.rb +32 -0
- data/lib/jsduck/tag/required.rb +23 -0
- data/lib/jsduck/tag/requires.rb +13 -0
- data/lib/jsduck/tag/return.rb +48 -0
- data/lib/jsduck/tag/since.rb +30 -0
- data/lib/jsduck/tag/singleton.rb +28 -0
- data/lib/jsduck/tag/static.rb +12 -0
- data/lib/jsduck/tag/subproperties.rb +23 -0
- data/lib/jsduck/tag/tag.rb +164 -0
- data/lib/jsduck/tag/template.rb +29 -0
- data/lib/jsduck/tag/throws.rb +39 -0
- data/lib/jsduck/tag/type.rb +38 -0
- data/lib/jsduck/tag/uses.rb +13 -0
- data/lib/jsduck/tag/xtype.rb +31 -0
- data/lib/jsduck/tag_loader.rb +50 -0
- data/lib/jsduck/tag_registry.rb +95 -0
- data/lib/jsduck/type_parser.rb +388 -0
- data/lib/jsduck/util/html.rb +27 -0
- data/lib/jsduck/util/io.rb +49 -0
- data/lib/jsduck/util/json.rb +60 -0
- data/lib/jsduck/util/md5.rb +32 -0
- data/lib/jsduck/util/null_object.rb +36 -0
- data/lib/jsduck/util/os.rb +14 -0
- data/lib/jsduck/util/parallel.rb +38 -0
- data/lib/jsduck/util/singleton.rb +35 -0
- data/lib/jsduck/util/stdout.rb +33 -0
- data/lib/jsduck/version.rb +5 -0
- data/lib/jsduck/videos.rb +40 -0
- data/lib/jsduck/warning/all.rb +36 -0
- data/lib/jsduck/warning/basic.rb +57 -0
- data/lib/jsduck/warning/deprecated.rb +40 -0
- data/lib/jsduck/warning/nodoc.rb +79 -0
- data/lib/jsduck/warning/parser.rb +168 -0
- data/lib/jsduck/warning/registry.rb +108 -0
- data/lib/jsduck/warning/tag.rb +57 -0
- data/lib/jsduck/warning/warn_exception.rb +10 -0
- data/lib/jsduck/web/class_icons.rb +76 -0
- data/lib/jsduck/web/css.rb +40 -0
- data/lib/jsduck/web/data.rb +52 -0
- data/lib/jsduck/web/index_html.rb +105 -0
- data/lib/jsduck/web/member_icons.rb +43 -0
- data/lib/jsduck/web/search.rb +153 -0
- data/lib/jsduck/web/source.rb +89 -0
- data/lib/jsduck/web/template.rb +51 -0
- data/lib/jsduck/web/tree.rb +22 -0
- data/lib/jsduck/web/writer.rb +100 -0
- data/lib/jsduck/welcome.rb +31 -0
- data/template-min/README.md +14 -0
- data/template-min/app-0f524ddd276c4019a11a6128932a9c96.js +1 -0
- data/template-min/eg-iframe.html +26 -0
- data/template-min/extjs/ext-all.js +38 -0
- data/template-min/extjs/resources/themes/images/default/boundlist/trigger-arrow.png +0 -0
- data/template-min/extjs/resources/themes/images/default/box/corners-blue.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/l-blue.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/l.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/r-blue.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/r.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/tb-blue.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/box/tb.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/arrow.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/btn.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/group-cs.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/group-lr.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/group-tb.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-b-noline.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-b.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-bo.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-light.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-noline.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow-o.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/button/s-arrow.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-footer-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-footer-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-header-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-header-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/dd/drop-add.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/dd/drop-no.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/dd/drop-yes.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/editor/tb-sprite.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/checkbox.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/clear-trigger.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/date-trigger.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/error-tip-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/exclamation.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/radio.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/search-trigger.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/spinner-small.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/spinner.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/text-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/trigger-square.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/trigger-tpl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/form/trigger.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/arrow-left-white.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/arrow-right-white.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/cell-special-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/cell-special-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/cell-special-selected-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/cell-special-selected-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/checked.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/col-move-bottom.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/col-move-top.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/column-header-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/column-header-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/column-header-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/column-header-over-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/columns.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-left.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-left.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-right.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-right.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/dirty.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/done.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/drop-no.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/drop-yes.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/footer-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-blue-hd.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-blue-split.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-hrow.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-loading.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-split.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid-vista-hd.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid3-hd-btn.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid3-hrow-over.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid3-hrow.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/grid3-rowheader.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/group-by.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/group-collapse.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/group-expand-sprite.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/group-expand.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hd-pop.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-asc.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-desc.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-lock.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-lock.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-unlock.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/hmenu-unlock.png +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/invalid_line.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/loading.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/mso-hd.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/nowait.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-first-disabled.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-first.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-last-disabled.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-last.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-next-disabled.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-next.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-prev-disabled.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/page-prev.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/pick-button.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/property-cell-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/property-cell-selected-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/refresh-disabled.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/refresh.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/row-check-sprite.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/row-expand-sprite.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/row-over.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/row-sel.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/sort-hd.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/sort_asc.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/sort_desc.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/unchecked.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/grid/wait.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/layout/mini-bottom.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/layout/mini-left.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/layout/mini-right.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/layout/mini-top.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/checked.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/group-checked.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/item-over.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/menu-parent.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/menu.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/menu/unchecked.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-left-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-right-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-top-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel/panel-default-framed-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/panel/panel-default-framed-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/progress/progress-default-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/blue-loading.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/calendar.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/glass-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/hd-sprite.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/icon-error.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/icon-info.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/icon-question.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/icon-warning.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/large-loading.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/left-btn.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/loading-balls.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/right-btn.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/shadow-c.png +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/shadow-lr.png +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/shadow.png +0 -0
- data/template-min/extjs/resources/themes/images/default/shared/warning.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/e-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/e-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/ne-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/ne-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/nw-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/nw-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/s-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/s-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/se-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/se-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/square.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/sw-handle-dark.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/sizer/sw-handle.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-thumb.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-thumb.png +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-v-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-v-bg.png +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-v-thumb.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/slider/slider-v-thumb.png +0 -0
- data/template-min/extjs/resources/themes/images/default/tab-bar/scroll-left.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab-bar/scroll-right.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab-bar/tab-bar-default-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-close.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tip/tip-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tip/tip-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/toolbar/more.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/toolbar/scroll-left.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/toolbar/scroll-right.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/toolbar/toolbar-default-bg.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tools/tool-sprite-tpl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tools/tool-sprites.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tools/tools-sprites-trans.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/arrows.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-above.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-add.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-append.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-below.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-between.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-no.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-over.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-under.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/drop-yes.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-end-minus.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-end-plus.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-end.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-line.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-minus-nl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-minus.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-plus-nl.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow-plus.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/elbow.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/folder-open.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/folder.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/leaf.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/loading.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/tree/s.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/util/splitter/mini-bottom.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/util/splitter/mini-left.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/util/splitter/mini-right.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/util/splitter/mini-top.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-bottom-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-bottom-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-left-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-left-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-right-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-right-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-top-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-top-sides.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window/window-default-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window/window-default-sides.gif +0 -0
- data/template-min/favicon.ico +0 -0
- data/template-min/index-template.html +35 -0
- data/template-min/index.php +95 -0
- data/template-min/mobile-redirect.js +1 -0
- data/template-min/print-template.html +52 -0
- data/template-min/resources/css/app-de670120f43fdad3091a0cc2c10daadb.css +1 -0
- data/template-min/resources/images/ajax-loader.gif +0 -0
- data/template-min/resources/images/arrows.png +0 -0
- data/template-min/resources/images/comment-bubble.png +0 -0
- data/template-min/resources/images/comment.png +0 -0
- data/template-min/resources/images/default-guide.png +0 -0
- data/template-min/resources/images/doc-m.png +0 -0
- data/template-min/resources/images/down-arr.png +0 -0
- data/template-min/resources/images/elbow-end.gif +0 -0
- data/template-min/resources/images/example-icons.png +0 -0
- data/template-min/resources/images/expandcollapse.png +0 -0
- data/template-min/resources/images/group-expand-sprite.gif +0 -0
- data/template-min/resources/images/header.png +0 -0
- data/template-min/resources/images/hero-extjs4-alt.png +0 -0
- data/template-min/resources/images/icons.png +0 -0
- data/template-min/resources/images/icons.xcf +0 -0
- data/template-min/resources/images/link-green-standard-over.png +0 -0
- data/template-min/resources/images/link-green-standard.png +0 -0
- data/template-min/resources/images/loading.gif +0 -0
- data/template-min/resources/images/logo-screen-noglow.png +0 -0
- data/template-min/resources/images/logo.png +0 -0
- data/template-min/resources/images/member-collapsed.gif +0 -0
- data/template-min/resources/images/member-expanded.gif +0 -0
- data/template-min/resources/images/member-hover.gif +0 -0
- data/template-min/resources/images/more.png +0 -0
- data/template-min/resources/images/phone-l.jpg +0 -0
- data/template-min/resources/images/phone-p.jpg +0 -0
- data/template-min/resources/images/phone-small-l.jpg +0 -0
- data/template-min/resources/images/phone-small-p.jpg +0 -0
- data/template-min/resources/images/print.png +0 -0
- data/template-min/resources/images/sample-over.gif +0 -0
- data/template-min/resources/images/search-box.png +0 -0
- data/template-min/resources/images/tablet-l.jpg +0 -0
- data/template-min/resources/images/tablet-p.jpg +0 -0
- data/template-min/resources/images/tabs.png +0 -0
- data/template-min/resources/images/text-bg.gif +0 -0
- data/template-min/resources/images/vote-arrows.png +0 -0
- data/template-min/resources/images/welcome-bg-js4.gif +0 -0
- data/template-min/resources/images/x.png +0 -0
- data/template-min/resources/images/x12.png +0 -0
- data/template-min/resources/prettify/prettify.css +1 -0
- data/template-min/resources/prettify/prettify.js +30 -0
- data/template-min/template.html +44 -0
- metadata +828 -0
data/lib/jsduck/cache.rb
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
require 'digest/md5'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'jsduck/util/null_object'
|
|
4
|
+
require 'jsduck/version'
|
|
5
|
+
require 'set'
|
|
6
|
+
|
|
7
|
+
module JsDuck
|
|
8
|
+
|
|
9
|
+
# Reads/writes parsed files in cache.
|
|
10
|
+
#
|
|
11
|
+
# When writing to cache:
|
|
12
|
+
#
|
|
13
|
+
# - makes MD5 hash of <file name> + <file contents>
|
|
14
|
+
# - Dumps the the parsed data structure using Marshal into <md5>.dat
|
|
15
|
+
#
|
|
16
|
+
# When reading from cache:
|
|
17
|
+
#
|
|
18
|
+
# - makes MD5 hash of <file name> + <file contents>
|
|
19
|
+
# - Reads the parsed data structure using Marshal from <md5>.dat
|
|
20
|
+
#
|
|
21
|
+
# Additionally a manifest.txt file is saved into the cache
|
|
22
|
+
# directory, the contents of which is a string like the following:
|
|
23
|
+
#
|
|
24
|
+
# Ruby: 1.9.3, JSDuck: 5.2.0
|
|
25
|
+
#
|
|
26
|
+
# This file is consulted before all other cache operations. When
|
|
27
|
+
# the version numbers in there don't match with current Ruby and
|
|
28
|
+
# JSDuck versions, the whole cache gets invalidated - all cached
|
|
29
|
+
# files get deleted. This is to avoid problems with the Marshal
|
|
30
|
+
# file format changes between Ruby versions and parsed data
|
|
31
|
+
# structure changes between JSDuck versions.
|
|
32
|
+
#
|
|
33
|
+
# After all files have been checked into cache, the files that
|
|
34
|
+
# weren't touched get deleted (using the #cleanup method). This
|
|
35
|
+
# ensures that the number of files in cache only grows when more
|
|
36
|
+
# files are added to the documentation.
|
|
37
|
+
#
|
|
38
|
+
class Cache
|
|
39
|
+
|
|
40
|
+
# Factory method to produce a cache object. When caching is
|
|
41
|
+
# disabled, returns a NullObject which emulates a cache that's
|
|
42
|
+
# always empty.
|
|
43
|
+
def self.create(opts)
|
|
44
|
+
# Check also for cache_dir, which will be nil when output_dir is :stdout
|
|
45
|
+
if opts.cache && opts.cache_dir
|
|
46
|
+
Cache.new(opts)
|
|
47
|
+
else
|
|
48
|
+
Util::NullObject.new(
|
|
49
|
+
:read => nil,
|
|
50
|
+
:write => nil,
|
|
51
|
+
:previous_entry => nil,
|
|
52
|
+
:cleanup => nil
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# The name of the cache file that was previously read or written.
|
|
58
|
+
# When the #read call failed to find the file, it will be nil.
|
|
59
|
+
# But it will always be available after the #write call.
|
|
60
|
+
attr_reader :previous_entry
|
|
61
|
+
|
|
62
|
+
def initialize(opts)
|
|
63
|
+
@cache_dir = opts.cache_dir
|
|
64
|
+
@manifest_file = @cache_dir + "/manifest.txt"
|
|
65
|
+
@previous_entry = nil
|
|
66
|
+
|
|
67
|
+
FileUtils.mkdir_p(@cache_dir) unless File.exists?(@cache_dir)
|
|
68
|
+
|
|
69
|
+
# Invalidate the whole cache when it was generated with a
|
|
70
|
+
# different Ruby and/or JSDuck version.
|
|
71
|
+
invalidate_all! unless valid_manifest?
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Given the name and contents of a source file, reads the already
|
|
75
|
+
# parsed data structure from cache. Returns nil when not found.
|
|
76
|
+
def read(file_name, file_contents)
|
|
77
|
+
fname = cache_file_name(file_name, file_contents)
|
|
78
|
+
if File.exists?(fname)
|
|
79
|
+
@previous_entry = fname
|
|
80
|
+
File.open(fname, "rb") {|file| Marshal::load(file) }
|
|
81
|
+
else
|
|
82
|
+
@previous_entry = nil
|
|
83
|
+
nil
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Writes parse data into cache under a name generated from the
|
|
88
|
+
# name and contents of a source file.
|
|
89
|
+
def write(file_name, file_contents, data)
|
|
90
|
+
fname = cache_file_name(file_name, file_contents)
|
|
91
|
+
@previous_entry = fname
|
|
92
|
+
File.open(fname, "wb") {|file| Marshal::dump(data, file) }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Given listing of used cache files (those that were either read
|
|
96
|
+
# or written during this jsduck run) removes rest of the files
|
|
97
|
+
# from cache directory that were unused.
|
|
98
|
+
def cleanup(used_cache_entries)
|
|
99
|
+
used = Set.new(used_cache_entries)
|
|
100
|
+
|
|
101
|
+
Dir[@cache_dir + "/*.dat"].each do |file|
|
|
102
|
+
FileUtils.rm_rf(file) unless used.include?(file)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
private
|
|
107
|
+
|
|
108
|
+
def cache_file_name(file_name, file_contents)
|
|
109
|
+
@cache_dir + "/" + md5(file_name + file_contents) + ".dat"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def md5(string)
|
|
113
|
+
Digest::MD5.hexdigest(string)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def valid_manifest?
|
|
117
|
+
manifest = File.exists?(@manifest_file) ? Util::IO.read(@manifest_file) : ""
|
|
118
|
+
return manifest == current_manifest
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def invalidate_all!
|
|
122
|
+
FileUtils.rm_rf(@cache_dir)
|
|
123
|
+
FileUtils.mkdir(@cache_dir)
|
|
124
|
+
save_manifest
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def save_manifest
|
|
128
|
+
File.open(@manifest_file, "w") {|f| f.write(current_manifest) }
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def current_manifest
|
|
132
|
+
"Ruby: #{RUBY_VERSION}, JSDuck: #{JsDuck::VERSION}\n"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module JsDuck
|
|
2
|
+
module Categories
|
|
3
|
+
|
|
4
|
+
# Automatically divides all available classes into categories
|
|
5
|
+
class Auto
|
|
6
|
+
def initialize(relations)
|
|
7
|
+
@relations = relations
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Performs the generation
|
|
11
|
+
def generate
|
|
12
|
+
# list names of all public classes
|
|
13
|
+
class_names = @relations.to_a.find_all {|cls| !cls[:private] }.map {|cls| cls[:name] }
|
|
14
|
+
|
|
15
|
+
# divide classes into top-level categories by namespace
|
|
16
|
+
categories = categorize(class_names)
|
|
17
|
+
|
|
18
|
+
# in each category, create sub-categories
|
|
19
|
+
categories.each_pair do |ns, classes|
|
|
20
|
+
categories[ns] = categorize(classes, 1)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Turn categories hash into array, sort everything
|
|
24
|
+
categories_array = []
|
|
25
|
+
categories.each_pair do |ns, groups|
|
|
26
|
+
groups_array = []
|
|
27
|
+
groups.each_pair do |gns, classes|
|
|
28
|
+
groups_array << {
|
|
29
|
+
"name" => gns,
|
|
30
|
+
"classes" => classes.sort
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
groups_array.sort! {|a, b| cat_compare(a, b) }
|
|
34
|
+
categories_array << {
|
|
35
|
+
"name" => ns,
|
|
36
|
+
"groups" => groups_array
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
categories_array.sort! {|a, b| cat_compare(a, b) }
|
|
40
|
+
|
|
41
|
+
return categories_array
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Divides classes into categories by namespace. Collapses
|
|
45
|
+
# categories having only one class into a category "Others..."
|
|
46
|
+
def categorize(class_names, level=0)
|
|
47
|
+
categories = {}
|
|
48
|
+
class_names.each do |name|
|
|
49
|
+
ns = name.split(/\./)[level] || name.split(/\./)[0]
|
|
50
|
+
categories[ns] = [] unless categories[ns]
|
|
51
|
+
categories[ns] << name
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
globals = []
|
|
55
|
+
categories.each_pair do |ns, classes|
|
|
56
|
+
if classes.length == 1
|
|
57
|
+
globals << classes[0]
|
|
58
|
+
categories.delete(ns)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
if globals.length > 0
|
|
62
|
+
categories["Others..."] = globals
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
categories
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Comparison function for sorting categories that always places
|
|
69
|
+
# "Others..." category at the end.
|
|
70
|
+
def cat_compare(a, b)
|
|
71
|
+
if a["name"] == "Others..."
|
|
72
|
+
1
|
|
73
|
+
elsif b["name"] == "Others..."
|
|
74
|
+
-1
|
|
75
|
+
else
|
|
76
|
+
a["name"] <=> b["name"]
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module JsDuck
|
|
2
|
+
module Categories
|
|
3
|
+
|
|
4
|
+
# Renders class names for class categories page.
|
|
5
|
+
class ClassName
|
|
6
|
+
def initialize(doc_formatter, relations={})
|
|
7
|
+
@doc_formatter = doc_formatter
|
|
8
|
+
@relations = relations
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Renders the class name as a link or plain text.
|
|
12
|
+
#
|
|
13
|
+
# For new classes appends a star behind class name. For classes
|
|
14
|
+
# with new members appends list n small stars behind class name
|
|
15
|
+
# (reflecting the number of new members).
|
|
16
|
+
def render(name)
|
|
17
|
+
cls = @relations[name]
|
|
18
|
+
if cls
|
|
19
|
+
@doc_formatter.link(name, nil, name) + render_new_label(cls)
|
|
20
|
+
else
|
|
21
|
+
name
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
# Adds small star to new classes in the current version.
|
|
28
|
+
def render_new_label(cls)
|
|
29
|
+
if cls[:new]
|
|
30
|
+
" <span class='new-class' title='New class'>★</span>"
|
|
31
|
+
else
|
|
32
|
+
""
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'jsduck/logger'
|
|
2
|
+
require 'jsduck/categories/file'
|
|
3
|
+
require 'jsduck/categories/auto'
|
|
4
|
+
require 'jsduck/categories/class_name'
|
|
5
|
+
require 'jsduck/columns'
|
|
6
|
+
|
|
7
|
+
module JsDuck
|
|
8
|
+
module Categories
|
|
9
|
+
|
|
10
|
+
# Reads in categories and outputs them as HTML div
|
|
11
|
+
class Factory
|
|
12
|
+
def self.create(filename, doc_formatter, relations)
|
|
13
|
+
if filename
|
|
14
|
+
categories = Categories::File.new(filename, relations)
|
|
15
|
+
else
|
|
16
|
+
categories = Categories::Auto.new(relations)
|
|
17
|
+
end
|
|
18
|
+
Categories::Factory.new(categories.generate, doc_formatter, relations)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def initialize(categories, doc_formatter, relations={})
|
|
22
|
+
@categories = categories
|
|
23
|
+
@class_name = Categories::ClassName.new(doc_formatter, relations)
|
|
24
|
+
@columns = Columns.new("classes")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Returns HTML listing of classes divided into categories
|
|
28
|
+
def to_html(style="")
|
|
29
|
+
html = @categories.map do |category|
|
|
30
|
+
[
|
|
31
|
+
"<div class='section'>",
|
|
32
|
+
"<h1>#{category['name']}</h1>",
|
|
33
|
+
render_columns(category['groups']),
|
|
34
|
+
"<div style='clear:both'></div>",
|
|
35
|
+
"</div>",
|
|
36
|
+
]
|
|
37
|
+
end.flatten.join("\n")
|
|
38
|
+
|
|
39
|
+
return <<-EOHTML
|
|
40
|
+
<div id='categories-content' style='#{style}'>
|
|
41
|
+
#{html}
|
|
42
|
+
</div>
|
|
43
|
+
EOHTML
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def render_columns(groups)
|
|
49
|
+
align = ["left-column", "middle-column", "right-column"]
|
|
50
|
+
i = -1
|
|
51
|
+
return @columns.split(groups, 3).map do |col|
|
|
52
|
+
i += 1
|
|
53
|
+
[
|
|
54
|
+
"<div class='#{align[i]}'>",
|
|
55
|
+
render_groups(col),
|
|
56
|
+
"</div>",
|
|
57
|
+
]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def render_groups(groups)
|
|
62
|
+
return groups.map do |g|
|
|
63
|
+
[
|
|
64
|
+
"<h3>#{g['name']}</h3>",
|
|
65
|
+
"<ul class='links'>",
|
|
66
|
+
g["classes"].map {|cls| "<li>" + @class_name.render(cls) + "</li>" },
|
|
67
|
+
"</ul>",
|
|
68
|
+
]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'jsduck/logger'
|
|
2
|
+
require 'jsduck/util/json'
|
|
3
|
+
|
|
4
|
+
module JsDuck
|
|
5
|
+
module Categories
|
|
6
|
+
|
|
7
|
+
# Reads categories info from config file
|
|
8
|
+
class File
|
|
9
|
+
def initialize(filename, relations)
|
|
10
|
+
@filename = filename
|
|
11
|
+
@relations = relations
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Parses categories in JSON file
|
|
15
|
+
def generate
|
|
16
|
+
@categories = Util::Json.read(@filename)
|
|
17
|
+
|
|
18
|
+
# Perform expansion on all class names containing * wildcard
|
|
19
|
+
@categories.each do |cat|
|
|
20
|
+
cat["groups"].each do |group|
|
|
21
|
+
group["classes"] = group["classes"].map do |name|
|
|
22
|
+
expand(name)
|
|
23
|
+
end.flatten
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
validate
|
|
28
|
+
|
|
29
|
+
@categories
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Expands class name like 'Foo.*' into multiple class names.
|
|
33
|
+
def expand(name)
|
|
34
|
+
re = Regexp.new("^" + name.split(/\*/, -1).map {|part| Regexp.escape(part) }.join('.*') + "$")
|
|
35
|
+
|
|
36
|
+
classes = @relations.to_a.find_all do |cls|
|
|
37
|
+
re =~ cls[:name] && !cls[:private] && !cls[:deprecated]
|
|
38
|
+
end.map {|cls| cls[:name] }.sort
|
|
39
|
+
|
|
40
|
+
if classes.length == 0
|
|
41
|
+
Logger.warn(:cat_no_match, "No class found matching a pattern '#{name}' in categories file", {:filename => @filename})
|
|
42
|
+
end
|
|
43
|
+
classes
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Prints warnings for missing classes in categories file
|
|
47
|
+
def validate
|
|
48
|
+
# Build a map of all classes listed in categories
|
|
49
|
+
listed_classes = {}
|
|
50
|
+
@categories.each do |cat|
|
|
51
|
+
cat["groups"].each do |group|
|
|
52
|
+
group["classes"].each do |cls_name|
|
|
53
|
+
listed_classes[cls_name] = true
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Check that each existing non-private & non-deprecated class is listed
|
|
59
|
+
@relations.each do |cls|
|
|
60
|
+
unless listed_classes[cls[:name]] || cls[:private] || cls[:deprecated]
|
|
61
|
+
Logger.warn(:cat_class_missing, "Class '#{cls[:name]}' not found in categories file", {:filename => @filename})
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
end
|
data/lib/jsduck/class.rb
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
require 'jsduck/logger'
|
|
2
|
+
require 'jsduck/members_index'
|
|
3
|
+
|
|
4
|
+
module JsDuck
|
|
5
|
+
|
|
6
|
+
# Encapsulates class documentation and provides some commonly needed
|
|
7
|
+
# methods on it. Otherwise it acts like Hash, providing the []
|
|
8
|
+
# method.
|
|
9
|
+
class Class
|
|
10
|
+
attr_accessor :relations
|
|
11
|
+
|
|
12
|
+
# Used only by MembersIndex class itself to access the
|
|
13
|
+
# MembersIndex instances of parents and mixins.
|
|
14
|
+
attr_accessor :members_index
|
|
15
|
+
|
|
16
|
+
# Creates JSDuck class.
|
|
17
|
+
#
|
|
18
|
+
# Pass true as second parameter to create a placeholder class.
|
|
19
|
+
def initialize(doc, class_exists=true)
|
|
20
|
+
@doc = doc
|
|
21
|
+
|
|
22
|
+
# Wrap classname into custom string class that allows
|
|
23
|
+
# differenciating between existing and missing classes.
|
|
24
|
+
@doc[:name] = ClassNameString.new(@doc[:name], class_exists)
|
|
25
|
+
|
|
26
|
+
@doc[:members] = [] if !@doc[:members]
|
|
27
|
+
|
|
28
|
+
@members_index = MembersIndex.new(self)
|
|
29
|
+
|
|
30
|
+
@relations = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Returns the internal doc object.
|
|
34
|
+
def internal_doc
|
|
35
|
+
@doc
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Sets the internal doc object.
|
|
39
|
+
#
|
|
40
|
+
# The doc object is processed in parallel and then assigned back
|
|
41
|
+
# through this method. But because of parallel processing the
|
|
42
|
+
# assigned doc object will not be just a modified old @doc but a
|
|
43
|
+
# completely new. If we were to just assign to @doc the
|
|
44
|
+
# #find_members caches would still point to old @doc members
|
|
45
|
+
# resulting in mysterious errors further along...
|
|
46
|
+
def internal_doc=(doc)
|
|
47
|
+
@doc.merge!(doc) do |key, oldval, newval|
|
|
48
|
+
if key == :members
|
|
49
|
+
oldval.zip(newval) do |ms|
|
|
50
|
+
ms[0].merge!(ms[1])
|
|
51
|
+
end
|
|
52
|
+
oldval
|
|
53
|
+
else
|
|
54
|
+
newval
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Accessor to internal hash
|
|
60
|
+
def [](key)
|
|
61
|
+
@doc[key]
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Assignment to internal hash keys
|
|
65
|
+
def []=(key, value)
|
|
66
|
+
@doc[key] = value
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Returns instance of parent class, or nil if there is none
|
|
70
|
+
def parent
|
|
71
|
+
@doc[:extends] ? lookup(@doc[:extends]) : nil
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Returns array of ancestor classes.
|
|
75
|
+
# Example result when asking ancestors of MyPanel might be:
|
|
76
|
+
#
|
|
77
|
+
# [Ext.util.Observable, Ext.Component, Ext.Panel]
|
|
78
|
+
#
|
|
79
|
+
def superclasses
|
|
80
|
+
p = parent
|
|
81
|
+
p ? p.superclasses + [p] : []
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Returns all direct mixins of this class. Same as #deps(:mixins).
|
|
85
|
+
def mixins
|
|
86
|
+
deps(:mixins)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns an array of class instances this class directly depends on.
|
|
90
|
+
# Possible types are:
|
|
91
|
+
#
|
|
92
|
+
# - :mixins
|
|
93
|
+
# - :requires
|
|
94
|
+
# - :uses
|
|
95
|
+
#
|
|
96
|
+
def deps(type)
|
|
97
|
+
@doc[type] ? @doc[type].collect {|classname| lookup(classname) } : []
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Same ase #deps, but pulls out the dependencies from all parent classes.
|
|
101
|
+
def parent_deps(type)
|
|
102
|
+
parent ? parent.deps(type) + parent.parent_deps(type) : []
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Looks up class object by name
|
|
106
|
+
# When not found, prints warning message.
|
|
107
|
+
def lookup(classname)
|
|
108
|
+
if @relations[classname]
|
|
109
|
+
@relations[classname]
|
|
110
|
+
elsif @relations.ignore?(classname) || classname =~ /\*/
|
|
111
|
+
# Ignore explicitly ignored classes and classnames with
|
|
112
|
+
# wildcards in them. We could expand the wildcard, but that
|
|
113
|
+
# can result in a very long list of classes, like when
|
|
114
|
+
# somebody requires 'Ext.form.*', so for now we do the
|
|
115
|
+
# simplest thing and ignore it.
|
|
116
|
+
Class.new({:name => classname}, false)
|
|
117
|
+
else
|
|
118
|
+
Logger.warn(:extend, "Class #{classname} not found", @doc[:files][0])
|
|
119
|
+
# Create placeholder class
|
|
120
|
+
Class.new({:name => classname}, false)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Returns true when this class inherits from the specified class.
|
|
125
|
+
# Also returns true when the class itself is the one we are asking about.
|
|
126
|
+
def inherits_from?(class_name)
|
|
127
|
+
return @doc[:name] == class_name || (parent ? parent.inherits_from?(class_name) : false)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Returns list of members filtered by a query.
|
|
131
|
+
# Searches both local and inherited members.
|
|
132
|
+
#
|
|
133
|
+
# The query hash can contain the following fields:
|
|
134
|
+
#
|
|
135
|
+
# - :name : String - the name of the member to find.
|
|
136
|
+
#
|
|
137
|
+
# - :tagname : Symbol - the member type to look for.
|
|
138
|
+
#
|
|
139
|
+
# - :static : Boolean - true to only return static members,
|
|
140
|
+
# false to only return instance members.
|
|
141
|
+
# When nil or unspecified, both static
|
|
142
|
+
# and instance members are returned.
|
|
143
|
+
#
|
|
144
|
+
# - :local : Boolean - true to only return non-inherited members.
|
|
145
|
+
#
|
|
146
|
+
# When called without arguments all members are returned.
|
|
147
|
+
#
|
|
148
|
+
# When nothing found, an empty array is returned.
|
|
149
|
+
def find_members(query={})
|
|
150
|
+
if query[:name]
|
|
151
|
+
ms = @members_index.global_by_name[query[:name]] || []
|
|
152
|
+
ms = ms.find_all {|m| m[:owner] == @doc[:name]} if query[:local]
|
|
153
|
+
elsif query[:local]
|
|
154
|
+
ms = @members_index.all_local
|
|
155
|
+
else
|
|
156
|
+
ms = @members_index.all_global
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
if query[:tagname]
|
|
160
|
+
ms = ms.find_all {|m| m[:tagname] == query[:tagname] }
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
if query[:static] == true
|
|
164
|
+
ms = ms.find_all {|m| m[:static] }
|
|
165
|
+
elsif query[:static] == false
|
|
166
|
+
ms = ms.reject {|m| m[:static] }
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
ms
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# This must be called whenever member hashes are changed.
|
|
173
|
+
# It updates the :id fields of members and clears the caches.
|
|
174
|
+
def refresh_member_ids!
|
|
175
|
+
@doc[:members].each do |m|
|
|
176
|
+
m[:id] = Class.member_id(m)
|
|
177
|
+
end
|
|
178
|
+
@members_index.invalidate!
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Returns all local members of class
|
|
182
|
+
def all_local_members
|
|
183
|
+
@doc[:members]
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Static methods
|
|
187
|
+
|
|
188
|
+
# Generates member :id from member hash
|
|
189
|
+
def self.member_id(m)
|
|
190
|
+
# Sanitize $ in member names with something safer
|
|
191
|
+
name = m[:name].gsub(/\$/, 'S-')
|
|
192
|
+
"#{m[:static] ? 'static-' : ''}#{m[:tagname]}-#{name}"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# True if the given member is a constructor method
|
|
196
|
+
def self.constructor?(member)
|
|
197
|
+
member[:tagname] == :method && member[:name] == "constructor"
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
# String class for classnames that has extra method #exists? which
|
|
202
|
+
# returns false when class with such name doesn't exist.
|
|
203
|
+
#
|
|
204
|
+
# This ability is used by JsDuck::Renderer, which only receives
|
|
205
|
+
# names of various classes but needs to only render existing classes
|
|
206
|
+
# as links.
|
|
207
|
+
class ClassNameString < String
|
|
208
|
+
def initialize(str, exists=true)
|
|
209
|
+
super(str)
|
|
210
|
+
@exists = exists
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def exists?
|
|
214
|
+
@exists
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
end
|