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
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
module Options
|
|
5
|
+
|
|
6
|
+
# JSDuck version of OptionParser
|
|
7
|
+
#
|
|
8
|
+
# Enhanced with ability to output options help in two ways:
|
|
9
|
+
#
|
|
10
|
+
# - short list of all options (with the built-in #help method)
|
|
11
|
+
# - long description of one option (with the added #help_single method)
|
|
12
|
+
#
|
|
13
|
+
class HelpfulParser < ::OptionParser
|
|
14
|
+
def initialize
|
|
15
|
+
@full_options_index = {}
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Override the #on method to do some pre-processing on its
|
|
20
|
+
# parameters before passing them to the original #on method.
|
|
21
|
+
#
|
|
22
|
+
# Options are defined as usual:
|
|
23
|
+
#
|
|
24
|
+
# opts.on("-v", "--version", Type, "First line of description.",
|
|
25
|
+
# "Second line of description.",
|
|
26
|
+
# "Third line of description.")
|
|
27
|
+
#
|
|
28
|
+
# But only the first line of description will be passed to
|
|
29
|
+
# original #on method - meaning that #help method will also only
|
|
30
|
+
# list this first line.
|
|
31
|
+
#
|
|
32
|
+
# The remaining lines are saved to a separate place and can be
|
|
33
|
+
# retrieved through asking for full docs for an option with
|
|
34
|
+
# #help_single method.
|
|
35
|
+
#
|
|
36
|
+
def on(*opts, &block)
|
|
37
|
+
core = []
|
|
38
|
+
keys = []
|
|
39
|
+
desc = []
|
|
40
|
+
|
|
41
|
+
desc_started = false
|
|
42
|
+
opts.each do |o|
|
|
43
|
+
if desc_started
|
|
44
|
+
desc << o
|
|
45
|
+
elsif String === o
|
|
46
|
+
if o =~ /^-/
|
|
47
|
+
core << o
|
|
48
|
+
keys << o
|
|
49
|
+
else
|
|
50
|
+
core << o
|
|
51
|
+
desc << o
|
|
52
|
+
desc_started = true
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
core << o
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
full = {:keys => keys, :desc => desc}
|
|
60
|
+
|
|
61
|
+
keys.each do |op|
|
|
62
|
+
each_index_key(op) {|k| @full_options_index[k] = full }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
super(*core, &block)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Helper that turns option name like --images=PATH into list of
|
|
69
|
+
# keys by which we index the options:
|
|
70
|
+
#
|
|
71
|
+
# "--images=PATH" --> ["--images", "images"]
|
|
72
|
+
#
|
|
73
|
+
# For options containing "[no-]" all the alternative forms are expanded:
|
|
74
|
+
#
|
|
75
|
+
# "--[no-]seo" --> ["--[no-]seo", "[no-]seo", "--seo", "seo", "--no-seo", "no-seo"]
|
|
76
|
+
#
|
|
77
|
+
def each_index_key(option_name)
|
|
78
|
+
key = option_name.sub(/\[?=.*/, '')
|
|
79
|
+
plain_key = key.sub(/^-*/, '')
|
|
80
|
+
[key, plain_key].each do |k|
|
|
81
|
+
yield k
|
|
82
|
+
if k =~ /\[no-\]/
|
|
83
|
+
yield k.sub(/\[no-\]/, '')
|
|
84
|
+
yield k.sub(/\[no-\]/, 'no-')
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns long help text for a single option.
|
|
90
|
+
def help_single(option_name)
|
|
91
|
+
o = @full_options_index[option_name] || {:keys => [option_name], :desc => ["No such option. See --help=help"]}
|
|
92
|
+
|
|
93
|
+
r = []
|
|
94
|
+
|
|
95
|
+
r << ""
|
|
96
|
+
r << " " + o[:keys].join(", ")
|
|
97
|
+
r << ""
|
|
98
|
+
|
|
99
|
+
o[:desc].each do |line|
|
|
100
|
+
r << " " + line
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
r << ""
|
|
104
|
+
r << ""
|
|
105
|
+
|
|
106
|
+
return r.join("\n")
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'jsduck/options/jsb'
|
|
2
|
+
require 'jsduck/logger'
|
|
3
|
+
|
|
4
|
+
module JsDuck
|
|
5
|
+
module Options
|
|
6
|
+
|
|
7
|
+
# Finalizes the list of input files.
|
|
8
|
+
class InputFiles
|
|
9
|
+
def initialize(opts)
|
|
10
|
+
@opts = opts
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Expands opts.input_files (modifying its contents):
|
|
14
|
+
#
|
|
15
|
+
# - When file is a directory, scans all JS, SCSS files in there.
|
|
16
|
+
# - When file is a .jsb3 file, extracts list of files from it.
|
|
17
|
+
# - Otherwise returns array with this same input filename.
|
|
18
|
+
#
|
|
19
|
+
# Then excludes the files and dirs listed in opts.exclude.
|
|
20
|
+
def expand!
|
|
21
|
+
@opts.input_files = expand_files(@opts.input_files)
|
|
22
|
+
exclude_files!(@opts.input_files, @opts.exclude)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def expand_files(unexpanded_files)
|
|
28
|
+
unexpanded_files.map {|fname| expand_filename(fname) }.flatten
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def expand_filename(fname)
|
|
32
|
+
files = []
|
|
33
|
+
|
|
34
|
+
if File.exists?(fname)
|
|
35
|
+
if File.directory?(fname)
|
|
36
|
+
Dir[fname+"/**/*.{js,scss}"].each {|f| files << f }
|
|
37
|
+
elsif fname =~ /\.jsb3$/
|
|
38
|
+
Options::Jsb.read(fname).each {|fn| read_filenames(fn) }
|
|
39
|
+
else
|
|
40
|
+
files << fname
|
|
41
|
+
end
|
|
42
|
+
else
|
|
43
|
+
Logger.warn(nil, "File not found", {:filename => fname})
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
files
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Removes the files matching exclude_paths from list of files
|
|
50
|
+
def exclude_files!(files, exclude_paths)
|
|
51
|
+
exclude_paths.each do |exclude_path|
|
|
52
|
+
exclude_re = Regexp.new('\A' + Regexp.escape(exclude_path))
|
|
53
|
+
files.reject! {|f| f =~ exclude_re }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'jsduck/util/json'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
module Options
|
|
5
|
+
|
|
6
|
+
# Handles reading of JSB3 files.
|
|
7
|
+
class Jsb
|
|
8
|
+
|
|
9
|
+
# Extracts files of first build in JSB3 file.
|
|
10
|
+
def self.read(filename)
|
|
11
|
+
json = Util::Json.read(filename)
|
|
12
|
+
basedir = File.dirname(filename)
|
|
13
|
+
|
|
14
|
+
return json["builds"][0]["packages"].map do |package_id|
|
|
15
|
+
package = json["packages"].find {|p| p["id"] == package_id }
|
|
16
|
+
(package ? package["files"] : []).map do |file|
|
|
17
|
+
File.expand_path(basedir + "/" + file["path"] + file["name"])
|
|
18
|
+
end
|
|
19
|
+
end.flatten
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,968 @@
|
|
|
1
|
+
require 'jsduck/options/helpful_parser'
|
|
2
|
+
require 'jsduck/options/record'
|
|
3
|
+
require 'jsduck/options/config'
|
|
4
|
+
require 'jsduck/warning/parser'
|
|
5
|
+
require 'jsduck/warning/warn_exception'
|
|
6
|
+
require 'jsduck/logger'
|
|
7
|
+
require 'jsduck/util/io'
|
|
8
|
+
require 'jsduck/version'
|
|
9
|
+
|
|
10
|
+
module JsDuck
|
|
11
|
+
module Options
|
|
12
|
+
|
|
13
|
+
# Performs parsing of JSDuck options.
|
|
14
|
+
class Parser
|
|
15
|
+
|
|
16
|
+
def initialize(file_class=File, config_class=Options::Config)
|
|
17
|
+
@file = file_class
|
|
18
|
+
@config = config_class
|
|
19
|
+
|
|
20
|
+
@opts = Options::Record.new
|
|
21
|
+
@defaults = {}
|
|
22
|
+
|
|
23
|
+
@root_dir = @file.dirname(@file.dirname(@file.dirname(@file.dirname(__FILE__))))
|
|
24
|
+
|
|
25
|
+
@optparser = Options::HelpfulParser.new
|
|
26
|
+
init_parser
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Parses array of command line options, returning
|
|
30
|
+
# Options::Record object containing all the options.
|
|
31
|
+
def parse(argv)
|
|
32
|
+
init_defaults
|
|
33
|
+
parse_options(argv)
|
|
34
|
+
auto_detect_config_file unless @opts.config
|
|
35
|
+
@opts
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def init_parser
|
|
41
|
+
banner "Usage: jsduck [options] files/dirs..."
|
|
42
|
+
|
|
43
|
+
separator ""
|
|
44
|
+
separator "For example:"
|
|
45
|
+
separator ""
|
|
46
|
+
separator " # Documentation for builtin JavaScript classes like Array and String"
|
|
47
|
+
separator " jsduck --output output/dir --builtin-classes"
|
|
48
|
+
separator ""
|
|
49
|
+
separator " # Documentation for your own JavaScript"
|
|
50
|
+
separator " jsduck --output output/dir input-file.js some/input/dir"
|
|
51
|
+
separator ""
|
|
52
|
+
separator "The main options:"
|
|
53
|
+
separator ""
|
|
54
|
+
|
|
55
|
+
attribute :input_files, []
|
|
56
|
+
validator :input_files do
|
|
57
|
+
if @opts.input_files.empty? && !@opts.welcome && !@opts.guides && !@opts.videos && !@opts.examples
|
|
58
|
+
"Please specify some input files, otherwise there's nothing I can do :("
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
attribute :output
|
|
63
|
+
option('-o', '--output=PATH',
|
|
64
|
+
"Directory to write all this documentation.",
|
|
65
|
+
"",
|
|
66
|
+
"This option is REQUIRED. When the directory exists,",
|
|
67
|
+
"it will be overwritten. Give dash '-' as argument",
|
|
68
|
+
"to write docs to STDOUT (works only with --export).") do |path|
|
|
69
|
+
if path == "-"
|
|
70
|
+
@opts.output = :stdout
|
|
71
|
+
else
|
|
72
|
+
@opts.output = canonical(path)
|
|
73
|
+
@opts.cache_dir = @opts.output + "/.cache" unless @opts.cache_dir
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
validator :output do
|
|
77
|
+
if @opts.output == :stdout
|
|
78
|
+
# No output dir needed for export
|
|
79
|
+
if !@opts.export
|
|
80
|
+
"Output to STDOUT only works when using --export option"
|
|
81
|
+
end
|
|
82
|
+
elsif !@opts.output
|
|
83
|
+
"Please specify an output directory, where to write all this amazing documentation"
|
|
84
|
+
elsif @file.exists?(@opts.output) && !@file.directory?(@opts.output)
|
|
85
|
+
"The output directory is not really a directory at all :("
|
|
86
|
+
elsif !@file.exists?(@file.dirname(@opts.output))
|
|
87
|
+
"The parent directory for #{@opts.output} doesn't exist"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
attribute :export
|
|
92
|
+
option('--export=full/examples',
|
|
93
|
+
"Exports docs in JSON.",
|
|
94
|
+
"",
|
|
95
|
+
"For each JavaScript class a JSON file gets written,",
|
|
96
|
+
"the contents of which are as follows:",
|
|
97
|
+
"",
|
|
98
|
+
"- full - docs and metadata for class and its members.",
|
|
99
|
+
"- examples - inline examples from classes and guides.") do |format|
|
|
100
|
+
@opts.export = format.to_sym
|
|
101
|
+
end
|
|
102
|
+
validator :export do
|
|
103
|
+
if ![nil, :full, :examples].include?(@opts.export)
|
|
104
|
+
"Unknown export format: #{@opts.export}"
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
option('--builtin-classes',
|
|
109
|
+
"Includes docs for JavaScript builtins.",
|
|
110
|
+
"",
|
|
111
|
+
"Docs for the following classes are included:",
|
|
112
|
+
"",
|
|
113
|
+
"- Array",
|
|
114
|
+
"- Boolean",
|
|
115
|
+
"- Date",
|
|
116
|
+
"- Function",
|
|
117
|
+
"- Number",
|
|
118
|
+
"- Object",
|
|
119
|
+
"- RegExp",
|
|
120
|
+
"- String") do
|
|
121
|
+
@opts.input_files << @root_dir + "/js-classes"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
attribute :seo, false
|
|
125
|
+
option('--[no-]seo', "Enables SEO-friendly print version. (OFF)",
|
|
126
|
+
"",
|
|
127
|
+
"Instead of index.html creates index.php that will serve",
|
|
128
|
+
"the regular docs, print-friendly docs, and search-engine-",
|
|
129
|
+
"friendly docs (the latter two are pretty much the same).",
|
|
130
|
+
"",
|
|
131
|
+
"Disabled by default.") do |on|
|
|
132
|
+
@opts.seo = on
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
attribute :config
|
|
136
|
+
option('--config=PATH',
|
|
137
|
+
"Loads config options from JSON file.",
|
|
138
|
+
"",
|
|
139
|
+
"An alternative to listing all options on command line.",
|
|
140
|
+
"",
|
|
141
|
+
"When the current directory contains jsduck.json file",
|
|
142
|
+
"then options are automatically read from there.",
|
|
143
|
+
"",
|
|
144
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Config-file") do |path|
|
|
145
|
+
path = canonical(path)
|
|
146
|
+
if @file.exists?(path)
|
|
147
|
+
config = read_json_config(path)
|
|
148
|
+
else
|
|
149
|
+
Logger.fatal("The config file #{path} doesn't exist")
|
|
150
|
+
exit(1)
|
|
151
|
+
end
|
|
152
|
+
# treat paths inside JSON config relative to the location of
|
|
153
|
+
# config file. When done, switch back to current working dir.
|
|
154
|
+
@working_dir = @file.dirname(path)
|
|
155
|
+
parse_options(config)
|
|
156
|
+
@working_dir = nil
|
|
157
|
+
@opts.config = path
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
attribute :encoding
|
|
161
|
+
option('--encoding=NAME', "Input encoding (defaults to UTF-8).") do |encoding|
|
|
162
|
+
@opts.encoding = encoding
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
attribute :exclude, []
|
|
166
|
+
option('--exclude=PATH1,PATH2', Array, "Exclude input file or directory.",
|
|
167
|
+
"",
|
|
168
|
+
"For example to include all the subdirs of",
|
|
169
|
+
"/app/js except /app/js/new, run JSDuck with:",
|
|
170
|
+
"",
|
|
171
|
+
" jsduck /app/js --exclude /app/js/new") do |paths|
|
|
172
|
+
@opts.exclude += paths.map {|p| canonical(p) }
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
separator ""
|
|
176
|
+
separator "Customizing output:"
|
|
177
|
+
separator ""
|
|
178
|
+
|
|
179
|
+
attribute :title, "Documentation - JSDuck"
|
|
180
|
+
option('--title=TEXT',
|
|
181
|
+
"Custom title text for the documentation.",
|
|
182
|
+
"",
|
|
183
|
+
"Defaults to 'Documentation - JSDuck'",
|
|
184
|
+
"",
|
|
185
|
+
"The title will be used both inside <title> and in",
|
|
186
|
+
"the header of the page. Inside page header the left",
|
|
187
|
+
"part (from ' - ' separator) will be shown in bold.") do |text|
|
|
188
|
+
@opts.title = text
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
attribute :footer, "Generated on {DATE} by {JSDUCK} {VERSION}."
|
|
192
|
+
option('--footer=TEXT',
|
|
193
|
+
"Custom footer text for the documentation.",
|
|
194
|
+
"",
|
|
195
|
+
"The text can contain various placeholders:",
|
|
196
|
+
"",
|
|
197
|
+
" {DATE} - current date and time.",
|
|
198
|
+
" {JSDUCK} - link to JSDuck homepage.",
|
|
199
|
+
" {VERSION} - JSDuck version number.",
|
|
200
|
+
"",
|
|
201
|
+
"Defaults to: 'Generated on {DATE} by {JSDUCK} {VERSION}.'") do |text|
|
|
202
|
+
@opts.footer = text
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
attribute :head_html, ""
|
|
206
|
+
option('--head-html=HTML',
|
|
207
|
+
"HTML for the <head> section of index.html.",
|
|
208
|
+
"",
|
|
209
|
+
"Useful for adding extra <style> and other tags.",
|
|
210
|
+
"",
|
|
211
|
+
"Also a name of an HTML file can be passed.",
|
|
212
|
+
"Then the contents of that file will be read in.",
|
|
213
|
+
"",
|
|
214
|
+
"This option can be used repeatedly to append several",
|
|
215
|
+
"things to the header.") do |html|
|
|
216
|
+
@opts.head_html += maybe_file(html)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
attribute :body_html, ""
|
|
220
|
+
option('--body-html=HTML',
|
|
221
|
+
"HTML for the <body> section of index.html.",
|
|
222
|
+
"",
|
|
223
|
+
"Useful for adding extra markup to the page.",
|
|
224
|
+
"",
|
|
225
|
+
"Also a name of an HTML file can be passed.",
|
|
226
|
+
"Then the contents of that file will be read in.",
|
|
227
|
+
"",
|
|
228
|
+
"This option can be used repeatedly to append several",
|
|
229
|
+
"things to the body.") do |html|
|
|
230
|
+
@opts.body_html += maybe_file(html)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
attribute :css, ""
|
|
234
|
+
option('--css=CSS',
|
|
235
|
+
"Extra CSS rules to include to the page.",
|
|
236
|
+
"",
|
|
237
|
+
"Also a name of a CSS file can be passed.",
|
|
238
|
+
"Then the contents of that file will be read in.",
|
|
239
|
+
"",
|
|
240
|
+
"This option can be used repeatedly to append multiple",
|
|
241
|
+
"chunks of CSS.") do |css|
|
|
242
|
+
@opts.css += maybe_file(css)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
attribute :message, ""
|
|
246
|
+
option('--message=HTML',
|
|
247
|
+
"(Warning) message to show prominently.",
|
|
248
|
+
"",
|
|
249
|
+
"Useful for warning users that they are viewing an old",
|
|
250
|
+
"version of the docs, and prividing a link to the new",
|
|
251
|
+
"version.") do |html|
|
|
252
|
+
@opts.message += html
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
attribute :welcome
|
|
256
|
+
option('--welcome=PATH',
|
|
257
|
+
"File with content for welcome page.",
|
|
258
|
+
"",
|
|
259
|
+
"Either HTML or Markdown file with content for welcome page.",
|
|
260
|
+
"HTML file must only contain the <body> part of the page.",
|
|
261
|
+
"Markdown file must have a .md or .markdown extension.",
|
|
262
|
+
"",
|
|
263
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Welcome-page") do |path|
|
|
264
|
+
@opts.welcome = canonical(path)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
attribute :guides
|
|
268
|
+
option('--guides=PATH',
|
|
269
|
+
"JSON file describing the guides.",
|
|
270
|
+
"",
|
|
271
|
+
"The file should be in a dir containing the actual guides.",
|
|
272
|
+
"A guide is a dir containing README.md, icon.png, and",
|
|
273
|
+
"other images referenced by the README.md file.",
|
|
274
|
+
"",
|
|
275
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Guides") do |path|
|
|
276
|
+
@opts.guides = canonical(path)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
attribute :guides_toc_level, 2
|
|
280
|
+
option('--guides-toc-level=LEVEL',
|
|
281
|
+
"Max heading level for guides' tables of contents.",
|
|
282
|
+
"",
|
|
283
|
+
"Values between 1 and 6 define the maximum level of a heading",
|
|
284
|
+
"to be included into guides' Table of Contents:",
|
|
285
|
+
"",
|
|
286
|
+
"1 - Hides the table of contents.",
|
|
287
|
+
"2 - <H2> headings are included.",
|
|
288
|
+
"3 - <H2>,<H3> headings are included.",
|
|
289
|
+
"4 - <H2>,<H3>,<H4> headings are included.",
|
|
290
|
+
"5 - <H2>,<H3>,<H4>,<H5> headings are included.",
|
|
291
|
+
"6 - <H2>,<H3>,<H4>,<H5>,<H6> headings are included.") do |level|
|
|
292
|
+
@opts.guides_toc_level = level.to_i
|
|
293
|
+
end
|
|
294
|
+
validator :guides_toc_level do
|
|
295
|
+
if !(1..6).include?(@opts.guides_toc_level)
|
|
296
|
+
"Unsupported --guides-toc-level: '#{@opts.guides_toc_level}'"
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
attribute :videos
|
|
301
|
+
option('--videos=PATH',
|
|
302
|
+
"JSON file describing the videos.",
|
|
303
|
+
"",
|
|
304
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Videos") do |path|
|
|
305
|
+
@opts.videos = canonical(path)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
attribute :examples
|
|
309
|
+
option('--examples=PATH',
|
|
310
|
+
"JSON file describing the examples.",
|
|
311
|
+
"",
|
|
312
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Examples") do |path|
|
|
313
|
+
@opts.examples = canonical(path)
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
attribute :categories
|
|
317
|
+
option('--categories=PATH',
|
|
318
|
+
"JSON file defining categories for classes.",
|
|
319
|
+
"",
|
|
320
|
+
"Without this option the classes will be categorized",
|
|
321
|
+
"based on how they are namespaced.",
|
|
322
|
+
"",
|
|
323
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Categories") do |path|
|
|
324
|
+
@opts.categories = canonical(path)
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
attribute :source, true
|
|
328
|
+
option('--[no-]source',
|
|
329
|
+
"Enables output of source files. (ON)",
|
|
330
|
+
"",
|
|
331
|
+
"Enabled by default.") do |on|
|
|
332
|
+
@opts.source = on
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
attribute :images, []
|
|
336
|
+
option('--images=PATH1,PATH2', Array,
|
|
337
|
+
"Paths for images referenced by {@img} tag.",
|
|
338
|
+
"",
|
|
339
|
+
"This option only applies to {@img} tags used in",
|
|
340
|
+
"API (classes/members) documentation. Images used",
|
|
341
|
+
"in guides must be located inside the directory of",
|
|
342
|
+
"the specific guide.") do |paths|
|
|
343
|
+
@opts.images += paths.map {|p| canonical(p) }
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
attribute :tests, false
|
|
347
|
+
option('--[no-]tests',
|
|
348
|
+
"Creates page for testing inline examples. (OFF)",
|
|
349
|
+
"",
|
|
350
|
+
"Disabled by default.") do |on|
|
|
351
|
+
@opts.tests = on
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
attribute :import, []
|
|
355
|
+
option('--import=VERSION:PATH',
|
|
356
|
+
"Imports exported docs generating @since & @new.",
|
|
357
|
+
"",
|
|
358
|
+
"First one should generate JSDuck export of some",
|
|
359
|
+
"older versions of his software:",
|
|
360
|
+
"",
|
|
361
|
+
" $ jsduck app/1.0/src --export=full -o exports/1.0",
|
|
362
|
+
" $ jsduck app/2.0/src --export=full -o exports/2.0",
|
|
363
|
+
"",
|
|
364
|
+
"And then this exported data can be supplied for",
|
|
365
|
+
"--import to generate versioning data:",
|
|
366
|
+
"",
|
|
367
|
+
" --import='1.0:exports/1.0'",
|
|
368
|
+
" --import='2.0:exports/2.0'",
|
|
369
|
+
" --import='3.0'",
|
|
370
|
+
"",
|
|
371
|
+
"Several versions can be imported using the option multiple",
|
|
372
|
+
"times. The last version must always be the current one",
|
|
373
|
+
"without the :PATH portion.",
|
|
374
|
+
"",
|
|
375
|
+
"JSDuck will then check in which version every class/member",
|
|
376
|
+
"first appears in and tag it with an appropriate @since tag.",
|
|
377
|
+
"Things appearing only in the latest version will also get",
|
|
378
|
+
"a @new tag (unless --new-since option is used).",
|
|
379
|
+
"",
|
|
380
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/@since") do |v|
|
|
381
|
+
if v =~ /\A(.*?):(.*)\z/
|
|
382
|
+
@opts.import << {:version => $1, :path => canonical($2)}
|
|
383
|
+
else
|
|
384
|
+
@opts.import << {:version => v}
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
attribute :new_since
|
|
389
|
+
option('--new-since=VERSION',
|
|
390
|
+
"Since when to label items with @new tag.",
|
|
391
|
+
"",
|
|
392
|
+
"The VERSION must be one of the version names defined",
|
|
393
|
+
"with --import option.",
|
|
394
|
+
"",
|
|
395
|
+
"Defaults to the last version listed by --import.") do |v|
|
|
396
|
+
@opts.new_since = v
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
attribute :comments_url
|
|
400
|
+
option('--comments-url=URL',
|
|
401
|
+
"Address of comments server.",
|
|
402
|
+
"",
|
|
403
|
+
"For example: http://projects.sencha.com/auth",
|
|
404
|
+
"",
|
|
405
|
+
"Must be used together with --comments-domain option.") do |url|
|
|
406
|
+
@opts.comments_url = url
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
attribute :comments_domain
|
|
410
|
+
option('--comments-domain=STRING',
|
|
411
|
+
"A name identifying the subset of comments.",
|
|
412
|
+
"",
|
|
413
|
+
"A string consisting of <name>/<version>.",
|
|
414
|
+
"",
|
|
415
|
+
"For example: ext-js/4",
|
|
416
|
+
"",
|
|
417
|
+
"Must be used together with --comments-url option.") do |domain|
|
|
418
|
+
@opts.comments_domain = domain
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
attribute :search, {}
|
|
422
|
+
option('--search-url=URL',
|
|
423
|
+
"Address of guides search server.",
|
|
424
|
+
"",
|
|
425
|
+
"When supplied, the search for guides is performed through this",
|
|
426
|
+
"external service and the results merged together with API search.",
|
|
427
|
+
"The search server must respond to JSONP requests.",
|
|
428
|
+
"",
|
|
429
|
+
"For example: http://sencha.com/docsearch",
|
|
430
|
+
"",
|
|
431
|
+
"Must be used together with --search-domain option.",
|
|
432
|
+
"",
|
|
433
|
+
"This option is EXPERIMENTAL.") do |url|
|
|
434
|
+
@opts.search[:url] = url
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
option('--search-domain=STRING',
|
|
438
|
+
"A name identifying the subset to search from.",
|
|
439
|
+
"",
|
|
440
|
+
"A string consisting of <name>/<version>.",
|
|
441
|
+
"",
|
|
442
|
+
"Tells the search engine which product and version",
|
|
443
|
+
"to include into search.",
|
|
444
|
+
"",
|
|
445
|
+
"For example: Ext JS/4.2.0",
|
|
446
|
+
"",
|
|
447
|
+
"Must be used together with --search-url option.",
|
|
448
|
+
"",
|
|
449
|
+
"This option is EXPERIMENTAL.") do |domain|
|
|
450
|
+
@opts.search[:product], @opts.search[:version] = domain.split(/\//)
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
separator ""
|
|
454
|
+
separator "Tweaking:"
|
|
455
|
+
separator ""
|
|
456
|
+
|
|
457
|
+
attribute :tags, []
|
|
458
|
+
option('--tags=PATH1,PATH2', Array,
|
|
459
|
+
"Paths to custom tag implementations.",
|
|
460
|
+
"",
|
|
461
|
+
"Paths can point to specific Ruby files or to a directory,",
|
|
462
|
+
"in which case all ruby files in that directory are loaded.",
|
|
463
|
+
"",
|
|
464
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Custom-tags") do |paths|
|
|
465
|
+
@opts.tags += paths.map {|p| canonical(p) }
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
attribute :ignore_global, false
|
|
469
|
+
option('--[no-]ignore-global',
|
|
470
|
+
"Turns off the creation of 'global' class. (OFF)",
|
|
471
|
+
"",
|
|
472
|
+
"The 'global' class gets created when members that",
|
|
473
|
+
"don't belong to any class are found - all these",
|
|
474
|
+
"members will be placed into the 'global' class.",
|
|
475
|
+
"",
|
|
476
|
+
"Using this option won't suppress the warning that's",
|
|
477
|
+
"given when global members are found. For that you",
|
|
478
|
+
"need to additionally use --warnings=-global",
|
|
479
|
+
"",
|
|
480
|
+
"Disabled by default.") do |on|
|
|
481
|
+
@opts.ignore_global = on
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
attribute :external, [
|
|
485
|
+
# JavaScript builtins
|
|
486
|
+
"Object",
|
|
487
|
+
"String",
|
|
488
|
+
"Number",
|
|
489
|
+
"Boolean",
|
|
490
|
+
"RegExp",
|
|
491
|
+
"Function",
|
|
492
|
+
"Array",
|
|
493
|
+
"Arguments",
|
|
494
|
+
"Date",
|
|
495
|
+
# JavaScript builtin error classes
|
|
496
|
+
# https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Error
|
|
497
|
+
"Error",
|
|
498
|
+
"EvalError",
|
|
499
|
+
"RangeError",
|
|
500
|
+
"ReferenceError",
|
|
501
|
+
"SyntaxError",
|
|
502
|
+
"TypeError",
|
|
503
|
+
"URIError",
|
|
504
|
+
# Special anything-goes type
|
|
505
|
+
"Mixed",
|
|
506
|
+
]
|
|
507
|
+
option('--external=Foo,Bar,Baz', Array,
|
|
508
|
+
"Declares list of external classes.",
|
|
509
|
+
"",
|
|
510
|
+
"These classes will then no more generate warnings",
|
|
511
|
+
"when used in type definitions or inherited from.",
|
|
512
|
+
"",
|
|
513
|
+
"Multiple classes can be given in comma-separated list,",
|
|
514
|
+
"or by using the option repeatedly.",
|
|
515
|
+
"",
|
|
516
|
+
"The wildcard '*' can be used to match a set of classes",
|
|
517
|
+
"e.g. to ignore all classes of a particular namespace:",
|
|
518
|
+
"",
|
|
519
|
+
" --external='Foo.*'",
|
|
520
|
+
"",
|
|
521
|
+
"The special keyword '@browser' includes a slew of standard",
|
|
522
|
+
"browser API classes like HTMLElement and XMLHttpRequest:",
|
|
523
|
+
"",
|
|
524
|
+
" --external='@browser'",
|
|
525
|
+
"",
|
|
526
|
+
"The list of these classes comes from Mozilla docs, not",
|
|
527
|
+
"including experimental, non-standard or obsolete APIs:",
|
|
528
|
+
"https://developer.mozilla.org/en-US/docs/Web/API",
|
|
529
|
+
"",
|
|
530
|
+
"NB! If you only need to reference a few of these classes",
|
|
531
|
+
"in your docs, it's better to define these explicitly, as",
|
|
532
|
+
"using '@browser' will bring along a slew of names like",
|
|
533
|
+
"Node, Attr, Blob, CSS, Range, Element, which you might",
|
|
534
|
+
"mistakenly use in your docs by writing Node instead of",
|
|
535
|
+
"MyNamespace.Node and JSDuck won't warn you about it.") do |classes|
|
|
536
|
+
@opts.external += classes
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
attribute :ext4_events
|
|
540
|
+
option('--[no-]ext4-events',
|
|
541
|
+
"Forces Ext4 options param on events. (AUTO)",
|
|
542
|
+
"",
|
|
543
|
+
"In Ext JS 4 and Sencha Touch 2 all event handlers are",
|
|
544
|
+
"passed an additional options object at the end of the",
|
|
545
|
+
"parameters list. This options object is skipped in the",
|
|
546
|
+
"documentation of Ext4/Touch2 events, so it needs to be",
|
|
547
|
+
"appended by JSDuck.",
|
|
548
|
+
"",
|
|
549
|
+
"The default is to auto-detect if we're using Ext JS 4",
|
|
550
|
+
"or Sencha Touch 2 based on whether the code defines",
|
|
551
|
+
"classes using Ext.define(), and only then append the",
|
|
552
|
+
"options parameter. This should work most of the time.",
|
|
553
|
+
"",
|
|
554
|
+
"Use this option to override the auto-detection.") do |on|
|
|
555
|
+
@opts.ext4_events = on
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
attribute :examples_base_url
|
|
559
|
+
option('--examples-base-url=URL',
|
|
560
|
+
"Base URL for examples with relative URL-s.",
|
|
561
|
+
" ",
|
|
562
|
+
"Defaults to: 'extjs-build/examples/'") do |path|
|
|
563
|
+
@opts.examples_base_url = path
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
attribute :link, '<a href="#!/api/%c%-%m" rel="%c%-%m" class="docClass">%a</a>'
|
|
567
|
+
option('--link=TPL',
|
|
568
|
+
"HTML template for replacing {@link}.",
|
|
569
|
+
"",
|
|
570
|
+
"Possible placeholders:",
|
|
571
|
+
"",
|
|
572
|
+
"%c - full class name (e.g. 'Ext.Panel')",
|
|
573
|
+
"%m - class member name prefixed with member type",
|
|
574
|
+
" (e.g. 'method-urlEncode')",
|
|
575
|
+
"%# - inserts '#' if member name present",
|
|
576
|
+
"%- - inserts '-' if member name present",
|
|
577
|
+
"%a - anchor text for link",
|
|
578
|
+
"",
|
|
579
|
+
"Defaults to: '<a href=\"#!/api/%c%-%m\" rel=\"%c%-%m\" class=\"docClass\">%a</a>'") do |tpl|
|
|
580
|
+
@opts.link = tpl
|
|
581
|
+
end
|
|
582
|
+
|
|
583
|
+
attribute :img, '<p><img src="%u" alt="%a" width="%w" height="%h"></p>'
|
|
584
|
+
option('--img=TPL',
|
|
585
|
+
"HTML template for replacing {@img}.",
|
|
586
|
+
"",
|
|
587
|
+
"Possible placeholders:",
|
|
588
|
+
"",
|
|
589
|
+
"%u - URL from @img tag (e.g. 'some/path.png')",
|
|
590
|
+
"%a - alt text for image",
|
|
591
|
+
"%w - width of image",
|
|
592
|
+
"%h - height of image",
|
|
593
|
+
"",
|
|
594
|
+
"Defaults to: '<p><img src=\"%u\" alt=\"%a\" width=\"%w\" height=\"%h\"></p>'") do |tpl|
|
|
595
|
+
@opts.img = tpl
|
|
596
|
+
end
|
|
597
|
+
|
|
598
|
+
attribute :eg_iframe
|
|
599
|
+
option('--eg-iframe=PATH',
|
|
600
|
+
"HTML file used to display inline examples.",
|
|
601
|
+
"",
|
|
602
|
+
"The file will be used inside <iframe> that renders the",
|
|
603
|
+
"example. Not just any HTML file will work - it needs to",
|
|
604
|
+
"define loadInlineExample function that will be called",
|
|
605
|
+
"with the example code.",
|
|
606
|
+
"",
|
|
607
|
+
"See also: https://github.com/senchalabs/jsduck/wiki/Inline-examples") do |path|
|
|
608
|
+
@opts.eg_iframe = canonical(path)
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
attribute :ext_namespaces
|
|
612
|
+
option('--ext-namespaces=Ext,Foo', Array,
|
|
613
|
+
"Additional Ext JS namespaces to recognize.",
|
|
614
|
+
"",
|
|
615
|
+
"Defaults to 'Ext'",
|
|
616
|
+
"",
|
|
617
|
+
"Useful when using Ext JS in sandbox mode where instead",
|
|
618
|
+
"of Ext.define() your code contains YourNs.define().",
|
|
619
|
+
"In such case pass --ext-namespaces=Ext,YourNS option",
|
|
620
|
+
"and JSDuck will recognize both Ext.define() and",
|
|
621
|
+
"YourNs.define() plus few other things that depend on",
|
|
622
|
+
"Ext namespace like Ext.emptyFn.") do |namespaces|
|
|
623
|
+
@opts.ext_namespaces = namespaces
|
|
624
|
+
end
|
|
625
|
+
|
|
626
|
+
attribute :touch_examples_ui, false
|
|
627
|
+
option('--[no-]touch-examples-ui',
|
|
628
|
+
"Turns on phone/tablet UI for examples. (OFF)",
|
|
629
|
+
"",
|
|
630
|
+
"This is a very Sencha Touch 2 docs specific option.",
|
|
631
|
+
"Effects both normal- and inline-examples.",
|
|
632
|
+
"",
|
|
633
|
+
"Disabled by default") do |on|
|
|
634
|
+
@opts.touch_examples_ui = on
|
|
635
|
+
end
|
|
636
|
+
|
|
637
|
+
attribute :ignore_html, {}
|
|
638
|
+
option('--ignore-html=TAG1,TAG2', Array,
|
|
639
|
+
"Ignore a particular unclosed HTML tag.",
|
|
640
|
+
"",
|
|
641
|
+
"Normally all tags like <foo> that aren't followed at some",
|
|
642
|
+
"point with </foo> will get automatically closed by JSDuck",
|
|
643
|
+
"and a warning will be generated. Except standard void tags",
|
|
644
|
+
"like <img> and <br>. Use this option to specify additional",
|
|
645
|
+
"tags not requirering a closing tag.",
|
|
646
|
+
"",
|
|
647
|
+
"Useful for ignoring the ExtJS preprocessor directives",
|
|
648
|
+
"<locale> and <debug> which would otherwise be reported",
|
|
649
|
+
"as unclosed tags.") do |tags|
|
|
650
|
+
tags.each do |tag|
|
|
651
|
+
@opts.ignore_html[tag] = true
|
|
652
|
+
end
|
|
653
|
+
end
|
|
654
|
+
|
|
655
|
+
separator ""
|
|
656
|
+
separator "Performance:"
|
|
657
|
+
separator ""
|
|
658
|
+
|
|
659
|
+
attribute :processes
|
|
660
|
+
option('-p', '--processes=COUNT',
|
|
661
|
+
"The number of parallel processes to use.",
|
|
662
|
+
"",
|
|
663
|
+
"Defaults to the number of processors/cores.",
|
|
664
|
+
"",
|
|
665
|
+
"Set to 0 to disable parallel processing completely.",
|
|
666
|
+
"This is often useful in debugging to get deterministic",
|
|
667
|
+
"results.",
|
|
668
|
+
"",
|
|
669
|
+
"In Windows this option is disabled.") do |count|
|
|
670
|
+
@opts.processes = count.to_i
|
|
671
|
+
end
|
|
672
|
+
validator :processes do
|
|
673
|
+
if @opts.processes.to_i < 0
|
|
674
|
+
"Number of processes must be a positive number."
|
|
675
|
+
end
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
attribute :cache, false
|
|
679
|
+
option('--[no-]cache',
|
|
680
|
+
"Turns parser cache on/off. (OFF)",
|
|
681
|
+
"",
|
|
682
|
+
"When enabled, the results of parsing source files is saved",
|
|
683
|
+
"inside the JSDuck output directory. Next time JSDuck runs,",
|
|
684
|
+
"only the files that have changed are parsed again, others",
|
|
685
|
+
"are read from the cache.",
|
|
686
|
+
"",
|
|
687
|
+
"Note that switching between Ruby and/or JSDuck versions",
|
|
688
|
+
"invalidates the whole cache. But changes in custom tags",
|
|
689
|
+
"don't invalidate the cache, so avoid caching when developing",
|
|
690
|
+
"your custom tags.",
|
|
691
|
+
"",
|
|
692
|
+
"To change the cache directory location, use --cache-dir.",
|
|
693
|
+
"",
|
|
694
|
+
"Disabled by default.") do |on|
|
|
695
|
+
@opts.cache = on
|
|
696
|
+
end
|
|
697
|
+
|
|
698
|
+
attribute :cache_dir
|
|
699
|
+
option('--cache-dir=PATH',
|
|
700
|
+
"Directory where to cache the parsed source.",
|
|
701
|
+
"",
|
|
702
|
+
"Defaults to: <output-dir>/.cache",
|
|
703
|
+
"",
|
|
704
|
+
"Each project needs to have a separate cache directory.",
|
|
705
|
+
"Instead of writing the cache into the output directory,",
|
|
706
|
+
"one might consider keeping it together with the source",
|
|
707
|
+
"files.",
|
|
708
|
+
"",
|
|
709
|
+
"Note that JSDuck ensures that the <output-dir>/.cache",
|
|
710
|
+
"dir is preserved when the rest of the <output-dir> gets",
|
|
711
|
+
"wiped clean during the docs generation. If you specify",
|
|
712
|
+
"cache dir like <output-dir>/.mycache, then this will also",
|
|
713
|
+
"be cleaned up during docs generation, and the caching",
|
|
714
|
+
"won't work.",
|
|
715
|
+
"",
|
|
716
|
+
"This option only has an effect when --cache is also used.") do |path|
|
|
717
|
+
@opts.cache_dir = path
|
|
718
|
+
end
|
|
719
|
+
|
|
720
|
+
separator ""
|
|
721
|
+
separator "Debugging:"
|
|
722
|
+
separator ""
|
|
723
|
+
|
|
724
|
+
attribute :verbose, false
|
|
725
|
+
option('-v', '--verbose',
|
|
726
|
+
"Turns on excessive logging.",
|
|
727
|
+
"",
|
|
728
|
+
"Log messages are written to STDERR.") do
|
|
729
|
+
@opts.verbose = true
|
|
730
|
+
end
|
|
731
|
+
|
|
732
|
+
attribute :warnings, []
|
|
733
|
+
option('--warnings=+A,-B,+C',
|
|
734
|
+
"Turns warnings selectively on/off.",
|
|
735
|
+
"",
|
|
736
|
+
" +all - to turn on all warnings.",
|
|
737
|
+
" -all - to turn off all warnings.",
|
|
738
|
+
"",
|
|
739
|
+
"Additionally a pattern can be specified to only apply the",
|
|
740
|
+
"setting for a particular set of files. (The pattern is just",
|
|
741
|
+
"a string against which the the full path of each filename",
|
|
742
|
+
"gets matched - attempting to use a pattern like '../foo' will",
|
|
743
|
+
"fail.) For example to turn off all warnings related to chart",
|
|
744
|
+
"classes:",
|
|
745
|
+
"",
|
|
746
|
+
" -all:extjs/src/chart",
|
|
747
|
+
"",
|
|
748
|
+
"Note, that the order of the rules matters. When you first",
|
|
749
|
+
"say +link and then -all, the result will be that all warnings",
|
|
750
|
+
"get disabled.",
|
|
751
|
+
"",
|
|
752
|
+
"List of all available warning types:",
|
|
753
|
+
"(Those with '+' in front of them default to on)",
|
|
754
|
+
"",
|
|
755
|
+
*Logger.doc_warnings) do |warnings|
|
|
756
|
+
begin
|
|
757
|
+
@opts.warnings += Warning::Parser.new(warnings).parse
|
|
758
|
+
rescue Warning::WarnException => e
|
|
759
|
+
Logger.warn(nil, e.message)
|
|
760
|
+
end
|
|
761
|
+
end
|
|
762
|
+
|
|
763
|
+
attribute :warnings_exit_nonzero, false
|
|
764
|
+
option('--[no-]warnings-exit-nonzero',
|
|
765
|
+
"Exits with non-zero exit code on warnings. (OFF)",
|
|
766
|
+
"",
|
|
767
|
+
"By default JSDuck only exits with non-zero exit code",
|
|
768
|
+
"when a fatal error is encountered (code 1).",
|
|
769
|
+
"",
|
|
770
|
+
"With this option the exit code will be 2 when any warning",
|
|
771
|
+
"gets printed.") do |on|
|
|
772
|
+
@opts.warnings_exit_nonzero = on
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
attribute :color
|
|
776
|
+
option('--[no-]color',
|
|
777
|
+
"Turn on/off colorized terminal output. (AUTO)",
|
|
778
|
+
"",
|
|
779
|
+
"By default the colored output is on, but gets disabled",
|
|
780
|
+
"automatically when output is not an interactive terminal",
|
|
781
|
+
"(or when running on Windows system).") do |on|
|
|
782
|
+
@opts.color = on
|
|
783
|
+
end
|
|
784
|
+
|
|
785
|
+
attribute :pretty_json
|
|
786
|
+
option('--[no-]pretty-json',
|
|
787
|
+
"Turns on pretty-printing of JSON. (OFF)",
|
|
788
|
+
"",
|
|
789
|
+
"This is useful when studying the JSON files generated",
|
|
790
|
+
"by --export option. But the option effects any JSON",
|
|
791
|
+
"that gets generated, so it's also useful when debugging",
|
|
792
|
+
"the resource files generated for the docs app.") do |on|
|
|
793
|
+
@opts.pretty_json = on
|
|
794
|
+
end
|
|
795
|
+
|
|
796
|
+
attribute :template, @root_dir + "/template-min"
|
|
797
|
+
option('--template=PATH',
|
|
798
|
+
"Dir containing the UI template files.",
|
|
799
|
+
"",
|
|
800
|
+
"Useful when developing the template files.") do |path|
|
|
801
|
+
@opts.template = canonical(path)
|
|
802
|
+
end
|
|
803
|
+
validator :template do
|
|
804
|
+
if @opts.export
|
|
805
|
+
# Don't check these things when exporting
|
|
806
|
+
elsif !@file.exists?(@opts.template + "/extjs")
|
|
807
|
+
[
|
|
808
|
+
"Oh noes! The template directory does not contain extjs/ directory :(",
|
|
809
|
+
"Please copy ExtJS over to template/extjs or create symlink.",
|
|
810
|
+
"For example:",
|
|
811
|
+
" $ cp -r /path/to/ext-4.0.0 " + @opts.template + "/extjs",
|
|
812
|
+
]
|
|
813
|
+
elsif !@file.exists?(@opts.template + "/resources/css")
|
|
814
|
+
[
|
|
815
|
+
"Oh noes! CSS files for custom ExtJS theme missing :(",
|
|
816
|
+
"Please compile SASS files in template/resources/sass with compass.",
|
|
817
|
+
"For example:",
|
|
818
|
+
" $ compass compile " + @opts.template + "/resources/sass",
|
|
819
|
+
]
|
|
820
|
+
end
|
|
821
|
+
end
|
|
822
|
+
|
|
823
|
+
attribute :template_links, false
|
|
824
|
+
option('--[no-]template-links',
|
|
825
|
+
"Creates symlinks to UI template files. (OFF)",
|
|
826
|
+
"",
|
|
827
|
+
"Useful for template files development.",
|
|
828
|
+
"Only works on platforms supporting symbolic links.") do |on|
|
|
829
|
+
@opts.template_links = on
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
option('-d', '--debug',
|
|
833
|
+
"Same as --template=template --template-links.",
|
|
834
|
+
"",
|
|
835
|
+
"Useful shorthand during development.") do
|
|
836
|
+
@opts.template = canonical("template")
|
|
837
|
+
@opts.template_links = true
|
|
838
|
+
end
|
|
839
|
+
|
|
840
|
+
attribute :extjs_path, "extjs/ext-all.js"
|
|
841
|
+
option('--extjs-path=PATH',
|
|
842
|
+
"Path for main ExtJS JavaScript file.",
|
|
843
|
+
"",
|
|
844
|
+
"This is the ExtJS file that's used by the docs app UI.",
|
|
845
|
+
"",
|
|
846
|
+
"Defaults to extjs/ext-all.js",
|
|
847
|
+
"",
|
|
848
|
+
"Useful for switching to extjs/ext-all-debug.js in development.") do |path|
|
|
849
|
+
@opts.extjs_path = path # NB! must be relative path
|
|
850
|
+
end
|
|
851
|
+
|
|
852
|
+
attribute :local_storage_db, "docs"
|
|
853
|
+
option('--local-storage-db=NAME',
|
|
854
|
+
"Prefix for LocalStorage database names.",
|
|
855
|
+
"",
|
|
856
|
+
"Defaults to 'docs'") do |name|
|
|
857
|
+
@opts.local_storage_db = name
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
option('-h', '--help[=--some-option]',
|
|
861
|
+
"Use --help=--option for help on option.",
|
|
862
|
+
"",
|
|
863
|
+
"For example To get help on --processes option any of the",
|
|
864
|
+
"following will work:",
|
|
865
|
+
"",
|
|
866
|
+
" --help=--processes",
|
|
867
|
+
" --help=processes",
|
|
868
|
+
" --help=-p",
|
|
869
|
+
" --help=p") do |v|
|
|
870
|
+
if v
|
|
871
|
+
puts @optparser.help_single(v)
|
|
872
|
+
else
|
|
873
|
+
puts @optparser.help
|
|
874
|
+
end
|
|
875
|
+
exit
|
|
876
|
+
end
|
|
877
|
+
|
|
878
|
+
option('--version', "Prints JSDuck version") do
|
|
879
|
+
puts "JSDuck " + JsDuck::VERSION + " (Ruby #{RUBY_VERSION})"
|
|
880
|
+
exit
|
|
881
|
+
end
|
|
882
|
+
end
|
|
883
|
+
|
|
884
|
+
# A little language for describing the options.
|
|
885
|
+
# Simple delegetions to @optparser and @opts.
|
|
886
|
+
|
|
887
|
+
def banner(txt)
|
|
888
|
+
@optparser.banner = txt
|
|
889
|
+
end
|
|
890
|
+
|
|
891
|
+
def separator(txt)
|
|
892
|
+
@optparser.separator(txt)
|
|
893
|
+
end
|
|
894
|
+
|
|
895
|
+
def option(*params, &block)
|
|
896
|
+
@optparser.on(*params, &block)
|
|
897
|
+
end
|
|
898
|
+
|
|
899
|
+
def attribute(name, value=nil)
|
|
900
|
+
@opts.attribute(name, value)
|
|
901
|
+
@defaults[name] = value
|
|
902
|
+
end
|
|
903
|
+
|
|
904
|
+
def validator(name, &block)
|
|
905
|
+
@opts.validator(name, &block)
|
|
906
|
+
end
|
|
907
|
+
|
|
908
|
+
# Initializes attributes with default values. This is needed to
|
|
909
|
+
# be able to run the most tests without re-instantiating this
|
|
910
|
+
# class every time.
|
|
911
|
+
def init_defaults
|
|
912
|
+
@defaults.each_pair do |name, value|
|
|
913
|
+
@opts.send(:"#{name}=", clone(value))
|
|
914
|
+
end
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
# clones hashes and arrays.
|
|
918
|
+
def clone(obj)
|
|
919
|
+
(obj.is_a?(Array) || obj.is_a?(Hash)) ? obj.clone : obj
|
|
920
|
+
end
|
|
921
|
+
|
|
922
|
+
# Parses the given command line options
|
|
923
|
+
# (could have also been read from config file)
|
|
924
|
+
def parse_options(options)
|
|
925
|
+
@optparser.parse!(options).each do |fname|
|
|
926
|
+
@opts.input_files << canonical(fname)
|
|
927
|
+
end
|
|
928
|
+
end
|
|
929
|
+
|
|
930
|
+
# Reads jsduck.json file in current directory
|
|
931
|
+
def auto_detect_config_file
|
|
932
|
+
fname = Dir.pwd + "/jsduck.json"
|
|
933
|
+
if @file.exists?(fname)
|
|
934
|
+
Logger.log("Auto-detected config file", fname)
|
|
935
|
+
parse_options(read_json_config(fname))
|
|
936
|
+
end
|
|
937
|
+
end
|
|
938
|
+
|
|
939
|
+
# Reads JSON configuration from file and returns an array of
|
|
940
|
+
# config options that can be feeded into optparser.
|
|
941
|
+
def read_json_config(filename)
|
|
942
|
+
@config.read(filename)
|
|
943
|
+
end
|
|
944
|
+
|
|
945
|
+
# When given string is a file, returns the contents of the file.
|
|
946
|
+
# Otherwise returns the string unchanged.
|
|
947
|
+
def maybe_file(str)
|
|
948
|
+
path = canonical(str)
|
|
949
|
+
if @file.exists?(path)
|
|
950
|
+
Util::IO.read(path)
|
|
951
|
+
else
|
|
952
|
+
str
|
|
953
|
+
end
|
|
954
|
+
end
|
|
955
|
+
|
|
956
|
+
# Converts relative path to full path
|
|
957
|
+
#
|
|
958
|
+
# Especially important for running on Windows where C:\foo\bar
|
|
959
|
+
# pathnames are converted to C:/foo/bar which ruby can work on
|
|
960
|
+
# more easily.
|
|
961
|
+
def canonical(path)
|
|
962
|
+
@file.expand_path(path, @working_dir)
|
|
963
|
+
end
|
|
964
|
+
|
|
965
|
+
end
|
|
966
|
+
|
|
967
|
+
end
|
|
968
|
+
end
|