solvas-jsduck 6.0.0.beta.1888
Sign up to get free protection for your applications and to get access to all the features.
- 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
|