jsduck 2.0.pre4 → 3.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +126 -34
- data/Rakefile +343 -115
- data/bin/jsduck +4 -196
- data/example.js +144 -0
- data/jsduck.gemspec +4 -9
- data/lib/jsduck/aggregator.rb +1 -1
- data/lib/jsduck/app.rb +165 -182
- data/lib/jsduck/categories.rb +17 -2
- data/lib/jsduck/class.rb +10 -0
- data/lib/jsduck/class_formatter.rb +77 -0
- data/lib/jsduck/doc_formatter.rb +42 -4
- data/lib/jsduck/doc_parser.rb +64 -10
- data/lib/jsduck/examples.rb +33 -0
- data/lib/jsduck/exporter.rb +18 -42
- data/lib/jsduck/guides.rb +41 -74
- data/lib/jsduck/icons.rb +28 -0
- data/lib/jsduck/js_literal_builder.rb +21 -0
- data/lib/jsduck/js_literal_parser.rb +106 -0
- data/lib/jsduck/js_parser.rb +115 -97
- data/lib/jsduck/json_duck.rb +45 -0
- data/lib/jsduck/lexer.rb +55 -25
- data/lib/jsduck/lint.rb +84 -0
- data/lib/jsduck/merger.rb +91 -21
- data/lib/jsduck/options.rb +320 -0
- data/lib/jsduck/relations.rb +7 -1
- data/lib/jsduck/renderer.rb +315 -0
- data/lib/jsduck/source_writer.rb +2 -2
- data/lib/jsduck/type_parser.rb +85 -0
- data/lib/jsduck/videos.rb +33 -0
- data/lib/jsduck/welcome.rb +21 -0
- data/{template → template-min}/README.md +0 -0
- data/template-min/app.js +1 -0
- data/template-min/build-js.html +25 -0
- data/template-min/egIframe.html +24 -0
- data/template-min/extjs/bootstrap.js +73 -0
- data/template-min/extjs/ext-all-debug.js +90047 -0
- data/{template → template-min}/extjs/ext-all.js +0 -0
- data/template-min/extjs/resources/css/ext-all.css +1 -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/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/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/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 → 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 → 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/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/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 → 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/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/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/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/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/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/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 → 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/resources/images → 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/window-default-corners.gif +0 -0
- data/template-min/extjs/resources/themes/images/default/window/window-default-sides.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-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 → template-min}/favicon.ico +0 -0
- data/template-min/index.php +59 -0
- data/template-min/print-template.html +22 -0
- data/template-min/resources/css/app.css +1 -0
- data/template-min/resources/images/arrows.png +0 -0
- data/{template → template-min}/resources/images/class-m.png +0 -0
- data/{template → template-min}/resources/images/class-sm.png +0 -0
- data/{template → template-min}/resources/images/component-m.png +0 -0
- data/{template → template-min}/resources/images/configs.png +0 -0
- data/{template → template-min}/resources/images/doc-m.png +0 -0
- data/template-min/resources/images/elbow-end.gif +0 -0
- data/{template → template-min}/resources/images/events.png +0 -0
- data/template-min/resources/images/example-icons.png +0 -0
- data/{template → template-min}/resources/images/expandcollapse.png +0 -0
- data/{template → template-min}/resources/images/guide-icon.png +0 -0
- data/{template → template-min}/resources/images/guides.png +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/link-green-standard-over.png +0 -0
- data/template-min/resources/images/link-green-standard.png +0 -0
- data/{template → template-min}/resources/images/loading-title.png +0 -0
- data/{template → 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 → template-min}/resources/images/member-collapsed.gif +0 -0
- data/{template → template-min}/resources/images/member-expanded.gif +0 -0
- data/{template → template-min}/resources/images/member-hover.gif +0 -0
- data/{template → template-min}/resources/images/methods.png +0 -0
- data/template-min/resources/images/more.png +0 -0
- data/template-min/resources/images/preview.png +0 -0
- data/template-min/resources/images/print.png +0 -0
- data/{template → template-min}/resources/images/properties.png +0 -0
- data/template-min/resources/images/search-box.png +0 -0
- data/{template → template-min}/resources/images/singleton-m.png +0 -0
- data/template-min/resources/images/tabs.png +0 -0
- data/{template → template-min}/resources/images/version-tabs.png +0 -0
- data/template-min/resources/images/welcome-bg-js4.gif +0 -0
- data/{template → template-min}/resources/images/x.png +0 -0
- data/{template → template-min}/resources/images/x12.png +0 -0
- data/template-min/resources/images/x122.png +0 -0
- data/{template/index.html → template-min/template.html} +9 -14
- data/template-min/welcome.html +78 -0
- metadata +429 -76
- data/lib/jsduck/jsonp.rb +0 -17
- data/lib/jsduck/tree.rb +0 -117
- data/lib/jsduck/tree_icons.rb +0 -19
- data/template/app/Application.js +0 -53
- data/template/app/Favorites.js +0 -88
- data/template/app/History.js +0 -45
- data/template/app/LocalStore.js +0 -45
- data/template/app/Settings.js +0 -39
- data/template/app/Syntax.js +0 -20
- data/template/app/controller/Classes.js +0 -301
- data/template/app/controller/Search.js +0 -189
- data/template/app/model/Favorite.js +0 -11
- data/template/app/model/Setting.js +0 -11
- data/template/app/store/Favorites.js +0 -7
- data/template/app/store/Search.js +0 -14
- data/template/app/store/Settings.js +0 -7
- data/template/app/view/ClassGrid.js +0 -114
- data/template/app/view/HoverMenu.js +0 -59
- data/template/app/view/HoverMenuButton.js +0 -147
- data/template/app/view/Viewport.js +0 -240
- data/template/app/view/cls/Header.js +0 -47
- data/template/app/view/cls/Overview.js +0 -415
- data/template/app/view/cls/Toolbar.js +0 -199
- data/template/app/view/index/Container.js +0 -62
- data/template/app/view/search/Dropdown.js +0 -115
- data/template/app/view/tree/Tree.js +0 -143
- data/template/app.js +0 -25
- data/template/prettify/prettify.css +0 -1
- data/template/prettify/prettify.js +0 -28
- data/template/resources/css/docs-ext.css +0 -3594
- data/template/resources/css/reset.css +0 -59
- data/template/resources/css/scrollbars.css +0 -14
- data/template/resources/css/viewport.css +0 -420
- data/template/resources/images/data-package.png +0 -0
- data/template/resources/images/drag-bar-center.png +0 -0
- data/template/resources/images/headBG.png +0 -0
- data/template/resources/images/header.gif +0 -0
- data/template/resources/images/icon.png +0 -0
- data/template/resources/images/icons.png +0 -0
- data/template/resources/images/model.png +0 -0
- data/template/resources/images/root-lines.png +0 -0
- data/template/resources/images/search-box.png +0 -0
data/lib/jsduck/app.rb
CHANGED
@@ -3,136 +3,108 @@ require 'jsduck/aggregator'
|
|
3
3
|
require 'jsduck/source_file'
|
4
4
|
require 'jsduck/source_writer'
|
5
5
|
require 'jsduck/doc_formatter'
|
6
|
+
require 'jsduck/class_formatter'
|
6
7
|
require 'jsduck/class'
|
7
|
-
require 'jsduck/
|
8
|
-
require 'jsduck/tree_icons'
|
8
|
+
require 'jsduck/icons'
|
9
9
|
require 'jsduck/search_data'
|
10
10
|
require 'jsduck/relations'
|
11
11
|
require 'jsduck/aliases'
|
12
12
|
require 'jsduck/exporter'
|
13
|
+
require 'jsduck/renderer'
|
13
14
|
require 'jsduck/timer'
|
14
15
|
require 'jsduck/parallel_wrap'
|
15
16
|
require 'jsduck/logger'
|
17
|
+
require 'jsduck/welcome'
|
16
18
|
require 'jsduck/guides'
|
19
|
+
require 'jsduck/videos'
|
20
|
+
require 'jsduck/examples'
|
17
21
|
require 'jsduck/categories'
|
18
|
-
require 'jsduck/
|
19
|
-
require '
|
22
|
+
require 'jsduck/json_duck'
|
23
|
+
require 'jsduck/lint'
|
20
24
|
require 'fileutils'
|
21
25
|
|
22
26
|
module JsDuck
|
23
27
|
|
24
28
|
# The main application logic of jsduck
|
25
29
|
class App
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
attr_accessor :guides_dir
|
30
|
-
attr_accessor :guides_order
|
31
|
-
attr_accessor :categories_path
|
32
|
-
attr_accessor :template_links
|
33
|
-
attr_accessor :input_files
|
34
|
-
attr_accessor :export
|
35
|
-
attr_accessor :link_tpl
|
36
|
-
attr_accessor :img_tpl
|
37
|
-
attr_accessor :ignore_global
|
38
|
-
attr_accessor :external_classes
|
39
|
-
attr_accessor :show_private_classes
|
40
|
-
attr_accessor :title
|
41
|
-
attr_accessor :footer
|
42
|
-
attr_accessor :extjs_path
|
43
|
-
attr_accessor :local_storage_db
|
44
|
-
attr_accessor :head_html
|
45
|
-
attr_accessor :body_html
|
46
|
-
|
47
|
-
def initialize
|
48
|
-
@output_dir = nil
|
49
|
-
@template_dir = nil
|
50
|
-
@guides_dir = nil
|
51
|
-
@guides_order = nil
|
52
|
-
@categories_path = nil
|
53
|
-
@template_links = false
|
54
|
-
@input_files = []
|
55
|
-
@warnings = true
|
56
|
-
@export = nil
|
57
|
-
@link_tpl = nil
|
58
|
-
@img_tpl = nil
|
59
|
-
@ignore_global = false
|
60
|
-
@external_classes = []
|
61
|
-
@show_private_classes = false
|
62
|
-
@title = "Ext JS API Documentation"
|
63
|
-
@footer = 'Generated with <a href="https://github.com/senchalabs/jsduck">JSDuck</a>.'
|
64
|
-
@extjs_path = "extjs/ext-all.js"
|
65
|
-
@local_storage_db = "docs"
|
66
|
-
@head_html = ""
|
67
|
-
@body_html = ""
|
30
|
+
# Initializes app with JsDuck::Options object
|
31
|
+
def initialize(opts)
|
32
|
+
@opts = opts
|
68
33
|
@timer = Timer.new
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
# Sets warnings on or off
|
79
|
-
def warnings=(enabled)
|
80
|
-
Logger.instance.warnings = enabled
|
81
|
-
end
|
82
|
-
|
83
|
-
# Sets verbose mode on or off
|
84
|
-
def verbose=(enabled)
|
85
|
-
Logger.instance.verbose = enabled
|
34
|
+
# Sets the nr of parallel processes to use.
|
35
|
+
# Set to 0 to disable parallelization completely.
|
36
|
+
@parallel = ParallelWrap.new(:in_processes => @opts.processes)
|
37
|
+
# Sets warnings and verbose mode on or off
|
38
|
+
Logger.instance.warnings = @opts.warnings
|
39
|
+
Logger.instance.verbose = @opts.verbose
|
40
|
+
# Turn JSON pretty-printing on/off
|
41
|
+
JsonDuck.pretty = @opts.pretty_json
|
86
42
|
end
|
87
43
|
|
88
44
|
# Call this after input parameters set
|
89
45
|
def run
|
90
|
-
|
91
|
-
@link_tpl ||= '<a href="#/api/%c%-%m" rel="%c%-%m" class="docClass">%a</a>'
|
92
|
-
# Note that we wrap image template inside <p> because {@img} often
|
93
|
-
# appears inline within text, but that just looks ugly in HTML
|
94
|
-
@img_tpl ||= '<p><img src="doc-resources/%u" alt="%a"></p>'
|
95
|
-
|
96
|
-
parsed_files = @timer.time(:parsing) { parallel_parse(@input_files) }
|
46
|
+
parsed_files = @timer.time(:parsing) { parallel_parse(@opts.input_files) }
|
97
47
|
result = @timer.time(:aggregating) { aggregate(parsed_files) }
|
98
|
-
relations = @timer.time(:aggregating) { filter_classes(result) }
|
99
|
-
Aliases.new(relations).resolve_all
|
100
|
-
|
101
|
-
warn_unnamed(relations)
|
48
|
+
@relations = @timer.time(:aggregating) { filter_classes(result) }
|
49
|
+
Aliases.new(@relations).resolve_all
|
50
|
+
Lint.new(@relations).run
|
102
51
|
|
103
|
-
@
|
104
|
-
if @
|
105
|
-
@timer.time(:parsing) { @
|
52
|
+
@welcome = Welcome.new
|
53
|
+
if @opts.welcome
|
54
|
+
@timer.time(:parsing) { @welcome.parse(@opts.welcome) }
|
106
55
|
end
|
107
56
|
|
108
|
-
@
|
109
|
-
if @
|
57
|
+
@guides = Guides.new(get_doc_formatter)
|
58
|
+
if @opts.guides
|
59
|
+
@timer.time(:parsing) { @guides.parse(@opts.guides) }
|
60
|
+
end
|
61
|
+
|
62
|
+
@videos = Videos.new
|
63
|
+
if @opts.videos
|
64
|
+
@timer.time(:parsing) { @videos.parse(@opts.videos) }
|
65
|
+
end
|
66
|
+
|
67
|
+
@examples = Examples.new
|
68
|
+
if @opts.examples
|
69
|
+
@timer.time(:parsing) { @examples.parse(@opts.examples) }
|
70
|
+
end
|
71
|
+
|
72
|
+
@categories = Categories.new(get_doc_formatter, @relations)
|
73
|
+
if @opts.categories_path
|
110
74
|
@timer.time(:parsing) do
|
111
|
-
@categories.parse(@categories_path)
|
75
|
+
@categories.parse(@opts.categories_path)
|
112
76
|
@categories.validate
|
113
77
|
end
|
114
78
|
end
|
115
79
|
|
116
|
-
|
117
|
-
if @export == :stdout
|
118
|
-
@timer.time(:generating) { puts
|
119
|
-
elsif @export == :json
|
120
|
-
FileUtils.mkdir(@output_dir)
|
121
|
-
init_output_dirs
|
122
|
-
@timer.time(:generating) { write_src(
|
123
|
-
@timer.time(:generating) {
|
80
|
+
clear_output_dir unless @opts.export == :stdout
|
81
|
+
if @opts.export == :stdout
|
82
|
+
@timer.time(:generating) { puts JsonDuck.generate(@relations.classes) }
|
83
|
+
elsif @opts.export == :json
|
84
|
+
FileUtils.mkdir(@opts.output_dir)
|
85
|
+
init_output_dirs
|
86
|
+
@timer.time(:generating) { write_src(parsed_files) }
|
87
|
+
@timer.time(:generating) { format_classes }
|
88
|
+
@timer.time(:generating) { write_classes }
|
124
89
|
else
|
125
|
-
if @template_links
|
126
|
-
link_template
|
90
|
+
if @opts.template_links
|
91
|
+
link_template
|
127
92
|
else
|
128
|
-
copy_template
|
93
|
+
copy_template
|
94
|
+
end
|
95
|
+
create_template_html
|
96
|
+
create_print_template_html
|
97
|
+
if !@opts.seo
|
98
|
+
FileUtils.rm(@opts.output_dir+"/index.php")
|
99
|
+
FileUtils.cp(@opts.output_dir+"/template.html", @opts.output_dir+"/index.html")
|
129
100
|
end
|
130
|
-
|
131
|
-
@timer.time(:generating) {
|
132
|
-
@timer.time(:generating) {
|
133
|
-
@timer.time(:generating) {
|
134
|
-
@timer.time(:generating) {
|
135
|
-
@timer.time(:generating) { @
|
101
|
+
@timer.time(:generating) { write_src(parsed_files) }
|
102
|
+
@timer.time(:generating) { format_classes }
|
103
|
+
@timer.time(:generating) { write_app_data }
|
104
|
+
@timer.time(:generating) { write_classes }
|
105
|
+
@timer.time(:generating) { @guides.write(@opts.output_dir+"/guides") }
|
106
|
+
@timer.time(:generating) { @videos.write(@opts.output_dir+"/videos") }
|
107
|
+
@timer.time(:generating) { @examples.write(@opts.output_dir+"/examples") }
|
136
108
|
end
|
137
109
|
|
138
110
|
@timer.report
|
@@ -154,7 +126,7 @@ module JsDuck
|
|
154
126
|
agr.aggregate(file)
|
155
127
|
end
|
156
128
|
agr.classify_orphans
|
157
|
-
agr.create_global_class unless @ignore_global
|
129
|
+
agr.create_global_class unless @opts.ignore_global
|
158
130
|
agr.append_ext4_event_options
|
159
131
|
agr.result
|
160
132
|
end
|
@@ -165,7 +137,7 @@ module JsDuck
|
|
165
137
|
classes = []
|
166
138
|
docs.each do |d|
|
167
139
|
if d[:tagname] == :class
|
168
|
-
classes << Class.new(d)
|
140
|
+
classes << Class.new(d)
|
169
141
|
else
|
170
142
|
type = d[:tagname].to_s
|
171
143
|
name = d[:name]
|
@@ -174,69 +146,57 @@ module JsDuck
|
|
174
146
|
Logger.instance.warn("Ignoring #{type}: #{name} in #{file} line #{line}")
|
175
147
|
end
|
176
148
|
end
|
177
|
-
Relations.new(classes, @external_classes)
|
149
|
+
Relations.new(classes, @opts.external_classes)
|
178
150
|
end
|
179
151
|
|
180
|
-
#
|
181
|
-
def
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
line = member[:linenr]
|
189
|
-
Logger.instance.warn("Global #{type}: #{name} in #{file} line #{line}")
|
190
|
-
end
|
152
|
+
# Formats each class
|
153
|
+
def format_classes
|
154
|
+
formatter = ClassFormatter.new(@relations, get_doc_formatter)
|
155
|
+
# Don't format types when exporting
|
156
|
+
formatter.include_types = !@opts.export
|
157
|
+
# Format all doc-objects in parallel
|
158
|
+
formatted_docs = @parallel.map(@relations.classes) do |cls|
|
159
|
+
formatter.format(cls.internal_doc)
|
191
160
|
end
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
def warn_unnamed(relations)
|
196
|
-
relations.each do |cls|
|
197
|
-
cls[:members].each_pair do |type, members|
|
198
|
-
members.each do |member|
|
199
|
-
if !member[:name] || member[:name] == ""
|
200
|
-
file = member[:filename]
|
201
|
-
line = member[:linenr]
|
202
|
-
Logger.instance.warn("Unnamed #{type} in #{file} line #{line}")
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
161
|
+
# Then merge the data back to classes sequentially
|
162
|
+
formatted_docs.each do |doc|
|
163
|
+
@relations[doc[:name]].internal_doc = doc
|
206
164
|
end
|
207
165
|
end
|
208
166
|
|
209
|
-
#
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
167
|
+
# Writes classes, guides, videos, and search data to one big .js file
|
168
|
+
def write_app_data
|
169
|
+
js = "Docs.data = " + JsonDuck.generate({
|
170
|
+
:classes => Icons.new.create(@relations.classes),
|
171
|
+
:guides => @guides.to_array,
|
172
|
+
:videos => @videos.to_array,
|
173
|
+
:examples => @examples.to_array,
|
174
|
+
:search => SearchData.new.create(@relations.classes),
|
175
|
+
}) + ";\n"
|
176
|
+
File.open(@opts.output_dir+"/data.js", 'w') {|f| f.write(js) }
|
217
177
|
end
|
218
178
|
|
219
|
-
#
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
end
|
226
|
-
|
227
|
-
# Writes JsonP export file for each class
|
228
|
-
def write_classes(path, relations)
|
229
|
-
exporter = Exporter.new(relations, get_doc_formatter(relations))
|
230
|
-
@parallel.each(relations.classes) do |cls|
|
231
|
-
filename = path + "/" + cls[:name] + ".js"
|
179
|
+
# Writes JSON export or JsonP file for each class
|
180
|
+
def write_classes
|
181
|
+
exporter = Exporter.new(@relations)
|
182
|
+
renderer = Renderer.new
|
183
|
+
@parallel.each(@relations.classes) do |cls|
|
184
|
+
filename = @opts.output_dir+"/output/" + cls[:name] + (@opts.export ? ".json" : ".js")
|
232
185
|
Logger.instance.log("Writing to #{filename} ...")
|
233
|
-
|
186
|
+
data = exporter.export(cls)
|
187
|
+
if @opts.export
|
188
|
+
JsonDuck.write_json(filename, data)
|
189
|
+
else
|
190
|
+
data[:html] = renderer.render(data)
|
191
|
+
data = exporter.compact(data)
|
192
|
+
JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), data)
|
193
|
+
end
|
234
194
|
end
|
235
195
|
end
|
236
196
|
|
237
197
|
# Writes formatted HTML source code for each input file
|
238
|
-
def write_src(
|
239
|
-
src = SourceWriter.new(
|
198
|
+
def write_src(parsed_files)
|
199
|
+
src = SourceWriter.new(@opts.output_dir + "/source", @opts.export ? nil : :page)
|
240
200
|
# Can't be done in parallel, because file.html_filename= method
|
241
201
|
# updates all the doc-objects related to the file
|
242
202
|
parsed_files.each do |file|
|
@@ -247,53 +207,76 @@ module JsDuck
|
|
247
207
|
end
|
248
208
|
|
249
209
|
# Creates and initializes DocFormatter
|
250
|
-
def get_doc_formatter
|
210
|
+
def get_doc_formatter
|
251
211
|
formatter = DocFormatter.new
|
252
|
-
formatter.link_tpl = @link_tpl if @link_tpl
|
253
|
-
formatter.img_tpl = @img_tpl if @img_tpl
|
254
|
-
formatter.relations = relations
|
212
|
+
formatter.link_tpl = @opts.link_tpl if @opts.link_tpl
|
213
|
+
formatter.img_tpl = @opts.img_tpl if @opts.img_tpl
|
214
|
+
formatter.relations = @relations
|
215
|
+
if @opts.inline_examples_dir
|
216
|
+
formatter.get_example = lambda {|path| IO.read(@opts.inline_examples_dir + "/" + path) }
|
217
|
+
end
|
255
218
|
formatter
|
256
219
|
end
|
257
220
|
|
258
|
-
def copy_template
|
259
|
-
Logger.instance.log("Copying template files to #{
|
260
|
-
FileUtils.cp_r(template_dir,
|
261
|
-
init_output_dirs
|
221
|
+
def copy_template
|
222
|
+
Logger.instance.log("Copying template files to #{@opts.output_dir}...")
|
223
|
+
FileUtils.cp_r(@opts.template_dir, @opts.output_dir)
|
224
|
+
init_output_dirs
|
262
225
|
end
|
263
226
|
|
264
|
-
def link_template
|
265
|
-
Logger.instance.log("Linking template files to #{
|
266
|
-
FileUtils.mkdir(
|
267
|
-
Dir.glob(template_dir + "/*").each do |file|
|
268
|
-
File.symlink(File.expand_path(file),
|
227
|
+
def link_template
|
228
|
+
Logger.instance.log("Linking template files to #{@opts.output_dir}...")
|
229
|
+
FileUtils.mkdir(@opts.output_dir)
|
230
|
+
Dir.glob(@opts.template_dir + "/*").each do |file|
|
231
|
+
File.symlink(File.expand_path(file), @opts.output_dir+"/"+File.basename(file))
|
269
232
|
end
|
270
|
-
init_output_dirs
|
233
|
+
init_output_dirs
|
271
234
|
end
|
272
235
|
|
273
|
-
def
|
274
|
-
if File.exists?(
|
275
|
-
FileUtils.rm_r(
|
236
|
+
def clear_output_dir
|
237
|
+
if File.exists?(@opts.output_dir)
|
238
|
+
FileUtils.rm_r(@opts.output_dir)
|
276
239
|
end
|
277
240
|
end
|
278
241
|
|
279
|
-
def init_output_dirs
|
280
|
-
FileUtils.mkdir(
|
281
|
-
FileUtils.mkdir(
|
242
|
+
def init_output_dirs
|
243
|
+
FileUtils.mkdir(@opts.output_dir + "/output")
|
244
|
+
FileUtils.mkdir(@opts.output_dir + "/source")
|
245
|
+
end
|
246
|
+
|
247
|
+
def create_template_html
|
248
|
+
write_template("template.html", {
|
249
|
+
"{title}" => @opts.title,
|
250
|
+
"{header}" => @opts.header,
|
251
|
+
"{footer}" => "<div id='footer-content' style='display: none'>#{@opts.footer}</div>",
|
252
|
+
"{extjs_path}" => @opts.extjs_path,
|
253
|
+
"{local_storage_db}" => @opts.local_storage_db,
|
254
|
+
"{welcome}" => @welcome.to_html,
|
255
|
+
"{categories}" => @categories.to_html,
|
256
|
+
"{guides}" => @guides.to_html,
|
257
|
+
"{head_html}" => @opts.head_html,
|
258
|
+
"{body_html}" => @opts.body_html,
|
259
|
+
})
|
282
260
|
end
|
283
261
|
|
284
|
-
def
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
262
|
+
def create_print_template_html
|
263
|
+
write_template("print-template.html", {
|
264
|
+
"{title}" => @opts.title,
|
265
|
+
"{header}" => @opts.header,
|
266
|
+
})
|
267
|
+
end
|
268
|
+
|
269
|
+
# Opens file in template dir, replaces {keys} inside it, writes to output dir
|
270
|
+
def write_template(filename, replacements)
|
271
|
+
in_file = @opts.template_dir + '/' + filename
|
272
|
+
out_file = @opts.output_dir + '/' + filename
|
273
|
+
Logger.instance.log("Creating #{out_file}...")
|
274
|
+
html = IO.read(in_file)
|
275
|
+
html.gsub!(/\{\w+\}/) do |key|
|
276
|
+
replacements[key] ? replacements[key] : key
|
277
|
+
end
|
278
|
+
FileUtils.rm(out_file)
|
279
|
+
File.open(out_file, 'w') {|f| f.write(html) }
|
297
280
|
end
|
298
281
|
end
|
299
282
|
|
data/lib/jsduck/categories.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'jsduck/logger'
|
2
|
-
require '
|
2
|
+
require 'jsduck/json_duck'
|
3
3
|
|
4
4
|
module JsDuck
|
5
5
|
|
@@ -13,7 +13,22 @@ module JsDuck
|
|
13
13
|
|
14
14
|
# Parses categories in JSON file
|
15
15
|
def parse(path)
|
16
|
-
@categories =
|
16
|
+
@categories = JsonDuck.read(path)["categories"]
|
17
|
+
|
18
|
+
# Perform expansion on all class names containing * wildcard
|
19
|
+
@categories.each do |cat|
|
20
|
+
cat["groups"].each do |group|
|
21
|
+
group["classes"] = group["classes"].map do |name|
|
22
|
+
expand(name) # name =~ /\*/ ? expand(name) : name
|
23
|
+
end.flatten
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Expands class name like 'Foo.*' into multiple class names.
|
29
|
+
def expand(name)
|
30
|
+
re = Regexp.new("^" + name.split(/\*/, -1).map {|part| Regexp.escape(part) }.join('.*') + "$")
|
31
|
+
@relations.to_a.find_all {|cls| re =~ cls[:name] && !cls[:private] }.map {|cls| cls[:name] }.sort
|
17
32
|
end
|
18
33
|
|
19
34
|
# Prints warnings for missing classes in categories file
|
data/lib/jsduck/class.rb
CHANGED
@@ -15,6 +15,16 @@ module JsDuck
|
|
15
15
|
@relations = nil
|
16
16
|
end
|
17
17
|
|
18
|
+
# Accessors for internal doc object. These are used to run
|
19
|
+
# ClassFormatter on the internal doc object and then assign it
|
20
|
+
# back.
|
21
|
+
def internal_doc
|
22
|
+
@doc
|
23
|
+
end
|
24
|
+
def internal_doc=(doc)
|
25
|
+
@doc = doc
|
26
|
+
end
|
27
|
+
|
18
28
|
def [](key)
|
19
29
|
@doc[key]
|
20
30
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'jsduck/type_parser'
|
2
|
+
require 'jsduck/logger'
|
3
|
+
|
4
|
+
module JsDuck
|
5
|
+
|
6
|
+
# Converts :doc properties of class from markdown to HTML, resolves
|
7
|
+
# @links, and converts type definitions to HTML. Also removes
|
8
|
+
# private members.
|
9
|
+
class ClassFormatter
|
10
|
+
# Set to false to disable HTML-formatting of type definitions.
|
11
|
+
attr_accessor :include_types
|
12
|
+
|
13
|
+
def initialize(relations, formatter)
|
14
|
+
@relations = relations
|
15
|
+
@formatter = formatter
|
16
|
+
@include_types = true
|
17
|
+
end
|
18
|
+
|
19
|
+
# Runs the formatter on doc object of a class.
|
20
|
+
# Accessed using Class#internal_doc
|
21
|
+
def format(cls)
|
22
|
+
@cls = cls
|
23
|
+
@formatter.class_context = cls[:name]
|
24
|
+
@formatter.doc_context = cls
|
25
|
+
cls[:doc] = @formatter.format(cls[:doc]) if cls[:doc]
|
26
|
+
cls[:members].each_pair do |type, members|
|
27
|
+
cls[:members][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
|
28
|
+
end
|
29
|
+
cls[:statics].each_pair do |type, members|
|
30
|
+
cls[:statics][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
|
31
|
+
end
|
32
|
+
cls
|
33
|
+
end
|
34
|
+
|
35
|
+
def format_member(m)
|
36
|
+
@formatter.doc_context = m
|
37
|
+
m[:doc] = @formatter.format(m[:doc]) if m[:doc]
|
38
|
+
m[:deprecated][:text] = @formatter.format(m[:deprecated][:text]) if m[:deprecated]
|
39
|
+
if expandable?(m) || @formatter.too_long?(m[:doc])
|
40
|
+
m[:shortDoc] = @formatter.shorten(m[:doc])
|
41
|
+
end
|
42
|
+
m[:html_type] = format_type(m[:type]) if m[:type] && @include_types
|
43
|
+
m[:params] = m[:params].map {|p| format_item(p) } if m[:params]
|
44
|
+
m[:return] = format_item(m[:return]) if m[:return]
|
45
|
+
m[:properties] = m[:properties].map {|b| format_item(b) } if m[:properties]
|
46
|
+
m
|
47
|
+
end
|
48
|
+
|
49
|
+
def expandable?(m)
|
50
|
+
m[:params] || (m[:properties] && m[:properties].length > 0) || m[:default] || m[:deprecated]
|
51
|
+
end
|
52
|
+
|
53
|
+
def format_item(it)
|
54
|
+
it[:doc] = @formatter.format(it[:doc]) if it[:doc]
|
55
|
+
it[:html_type] = format_type(it[:type]) if it[:type] && @include_types
|
56
|
+
it[:properties] = it[:properties].map {|s| format_item(s) } if it[:properties]
|
57
|
+
it
|
58
|
+
end
|
59
|
+
|
60
|
+
def format_type(type)
|
61
|
+
tp = TypeParser.new(@relations, @formatter)
|
62
|
+
if tp.parse(type)
|
63
|
+
tp.out
|
64
|
+
else
|
65
|
+
context = @formatter.doc_context
|
66
|
+
if tp.error == :syntax
|
67
|
+
Logger.instance.warn("Incorrect type syntax #{type} in #{context[:filename]} line #{context[:linenr]}")
|
68
|
+
else
|
69
|
+
Logger.instance.warn("Unknown type #{type} in #{context[:filename]} line #{context[:linenr]}")
|
70
|
+
end
|
71
|
+
type
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
data/lib/jsduck/doc_formatter.rb
CHANGED
@@ -29,6 +29,10 @@ module JsDuck
|
|
29
29
|
# Default value: '<img src="%u" alt="%a"/>'
|
30
30
|
attr_accessor :img_tpl
|
31
31
|
|
32
|
+
# Assign to this a function that retrieves the example code when
|
33
|
+
# passed in a filename
|
34
|
+
attr_accessor :get_example
|
35
|
+
|
32
36
|
# Sets up instance to work in context of particular class, so
|
33
37
|
# that when {@link #blah} is encountered it knows that
|
34
38
|
# Context#blah is meant.
|
@@ -55,8 +59,11 @@ module JsDuck
|
|
55
59
|
@relations = {}
|
56
60
|
@link_tpl = '<a href="%c%#%m">%a</a>'
|
57
61
|
@img_tpl = '<img src="%u" alt="%a"/>'
|
62
|
+
@example_tpl = '<pre class="inline-example"><code>%a</code></pre>'
|
58
63
|
@link_re = /\{@link\s+(\S*?)(?:\s+(.+?))?\}/m
|
59
64
|
@img_re = /\{@img\s+(\S*?)(?:\s+(.+?))?\}/m
|
65
|
+
@example_re = /\{@example\s+(\S*?)\s*\}/m
|
66
|
+
@example_annotation_re = /<pre><code>@example( +[^\n]*)?\s+/m
|
60
67
|
end
|
61
68
|
|
62
69
|
# Replaces {@link} and {@img} tags, auto-generates links for
|
@@ -67,6 +74,10 @@ module JsDuck
|
|
67
74
|
#
|
68
75
|
# Replaces {@img path/to/image.jpg Alt text} with HTML from @img_tpl.
|
69
76
|
#
|
77
|
+
# Replaces {@example path/to/example.js} with source from that file.
|
78
|
+
#
|
79
|
+
# Adds 'inline-example' class to code examples beginning with @example.
|
80
|
+
#
|
70
81
|
# Additionally replaces strings recognized as ClassNames with
|
71
82
|
# links to these classes. So one doesn even need to use the @link
|
72
83
|
# tag to create a link.
|
@@ -78,10 +89,15 @@ module JsDuck
|
|
78
89
|
out += replace_link_tag(s.scan(@link_re))
|
79
90
|
elsif s.check(@img_re)
|
80
91
|
out += replace_img_tag(s.scan(@img_re))
|
81
|
-
elsif s.check(
|
82
|
-
out += s.scan(
|
92
|
+
elsif s.check(@example_re)
|
93
|
+
out += replace_example_tag(s.scan(@example_re))
|
94
|
+
elsif s.check(@example_annotation_re)
|
95
|
+
s.scan(@example_annotation_re)
|
96
|
+
out += '<pre class="inline-example"><code>'
|
97
|
+
elsif s.check(/[{<]/)
|
98
|
+
out += s.scan(/[{<]/)
|
83
99
|
else
|
84
|
-
out += replace_class_names(s.scan(/[^{]+/))
|
100
|
+
out += replace_class_names(s.scan(/[^{<]+/))
|
85
101
|
end
|
86
102
|
end
|
87
103
|
out
|
@@ -128,6 +144,10 @@ module JsDuck
|
|
128
144
|
input.sub(@img_re) { img($1, $2) }
|
129
145
|
end
|
130
146
|
|
147
|
+
def replace_example_tag(input)
|
148
|
+
input.sub(@example_re) { example($1) }
|
149
|
+
end
|
150
|
+
|
131
151
|
def replace_class_names(input)
|
132
152
|
input.gsub(/(\A|\s)([A-Z][A-Za-z0-9.]*[A-Za-z0-9])(?:(#)([A-Za-z0-9]+))?([.,]?(?:\s|\Z))/m) do
|
133
153
|
before = $1
|
@@ -136,7 +156,7 @@ module JsDuck
|
|
136
156
|
member = $4
|
137
157
|
after = $5
|
138
158
|
|
139
|
-
if @relations[cls] && (
|
159
|
+
if @relations[cls] && (member ? get_member(cls, member) : cls =~ /\./)
|
140
160
|
label = member ? cls+"."+member : cls
|
141
161
|
before + link(cls, member, label) + after
|
142
162
|
else
|
@@ -159,6 +179,24 @@ module JsDuck
|
|
159
179
|
end
|
160
180
|
end
|
161
181
|
|
182
|
+
# Replaces example template with example read from file
|
183
|
+
def example(path)
|
184
|
+
@example_tpl.gsub(/(%\w)/) do
|
185
|
+
case $1
|
186
|
+
when '%a'
|
187
|
+
if @get_example
|
188
|
+
CGI.escapeHTML(@get_example.call(path))
|
189
|
+
else
|
190
|
+
file = @doc_context[:filename]
|
191
|
+
line = @doc_context[:linenr]
|
192
|
+
Logger.instance.warn("--examples not specified, but {@example} found in #{file} line #{line}.")
|
193
|
+
end
|
194
|
+
else
|
195
|
+
$1
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
162
200
|
# applies the link template
|
163
201
|
def link(cls, member, anchor_text, type=nil)
|
164
202
|
# Use the canonical class name for link (not some alternateClassName)
|