jsduck 2.0.pre4 → 3.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
require 'cgi'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
|
|
5
|
+
# Ruby-side implementation of class docs Renderer.
|
|
6
|
+
# Uses PhantomJS to run Docs.Renderer JavaScript.
|
|
7
|
+
class Renderer
|
|
8
|
+
def render(cls)
|
|
9
|
+
@cls = cls
|
|
10
|
+
|
|
11
|
+
return [
|
|
12
|
+
"<div>",
|
|
13
|
+
render_hierarchy,
|
|
14
|
+
"<div class='doc-contents'>",
|
|
15
|
+
render_private_class_notice,
|
|
16
|
+
@cls[:doc],
|
|
17
|
+
"</div>",
|
|
18
|
+
"<div class='members'>",
|
|
19
|
+
render_member_sections,
|
|
20
|
+
"</div>",
|
|
21
|
+
"</div>",
|
|
22
|
+
].flatten.compact.join
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def render_private_class_notice
|
|
26
|
+
return if !@cls[:private]
|
|
27
|
+
return [
|
|
28
|
+
"<p class='private'><strong>NOTE</strong> ",
|
|
29
|
+
"This is a private utility class for internal use by the framework. ",
|
|
30
|
+
"Don't rely on its existence.</p>",
|
|
31
|
+
]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def render_hierarchy
|
|
35
|
+
has_parents = @cls[:extends] && @cls[:extends] != "Object"
|
|
36
|
+
has_alt_names = @cls[:alternateClassNames].length > 0
|
|
37
|
+
has_mixins = @cls[:superclasses].length > 0
|
|
38
|
+
|
|
39
|
+
return if !has_parents && !has_alt_names && !has_mixins
|
|
40
|
+
|
|
41
|
+
return [
|
|
42
|
+
'<pre class="hierarchy">',
|
|
43
|
+
render_alternate_class_names,
|
|
44
|
+
render_tree,
|
|
45
|
+
render_mixins,
|
|
46
|
+
'</pre>'
|
|
47
|
+
]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def render_alternate_class_names
|
|
51
|
+
return if @cls[:alternateClassNames].length == 0
|
|
52
|
+
return [
|
|
53
|
+
"<h4>Alternate names</h4>",
|
|
54
|
+
@cls[:alternateClassNames].map {|name| "<div class='alternate-class-name'>#{name}</div>" },
|
|
55
|
+
]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def render_mixins
|
|
59
|
+
return if @cls[:allMixins].length == 0
|
|
60
|
+
return [
|
|
61
|
+
"<h4>Mixins</h4>",
|
|
62
|
+
@cls[:allMixins].map {|name| "<div class='mixin'>#{render_link(name)}</div>" },
|
|
63
|
+
]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Take care of the special case where class has parent for which we have no docs.
|
|
67
|
+
# In that case the "extends" property exists but "superclasses" is empty.
|
|
68
|
+
# We still create the tree, but without links in it.
|
|
69
|
+
def render_tree
|
|
70
|
+
return if !@cls[:extends] || @cls[:extends] == "Object"
|
|
71
|
+
tree = ["<h4>Hierarchy</h4>"]
|
|
72
|
+
|
|
73
|
+
if @cls[:superclasses].length > 0
|
|
74
|
+
tree + render_class_tree(@cls[:superclasses].concat([@cls[:name]]), {:first => true, :links => true})
|
|
75
|
+
else
|
|
76
|
+
tree + render_class_tree([@cls[:extends], @cls[:name]], {:first => true})
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def render_class_tree(superclasses, o)
|
|
81
|
+
return "" if superclasses.length == 0
|
|
82
|
+
|
|
83
|
+
name = superclasses[0]
|
|
84
|
+
return [
|
|
85
|
+
"<div class='subclass #{o[:first] ? 'first-child' : ''}'>",
|
|
86
|
+
superclasses.length > 1 ? (o[:links] ? render_link(name) : name) : "<strong>#{name}</strong>",
|
|
87
|
+
render_class_tree(superclasses.slice(1, superclasses.length-1), {:links => o[:links]}),
|
|
88
|
+
"</div>",
|
|
89
|
+
]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def render_link(cls_name)
|
|
93
|
+
return "<a href='#!/api/#{cls_name}' rel='#{cls_name}' class='docClass'>#{cls_name}</a>"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def render_member_sections
|
|
97
|
+
sections = [
|
|
98
|
+
{:type => :cfg, :title => "Config options"},
|
|
99
|
+
{:type => :property, :title => "Properties"},
|
|
100
|
+
{:type => :method, :title => "Methods"},
|
|
101
|
+
{:type => :event, :title => "Events"},
|
|
102
|
+
{:type => :css_var, :title => "CSS Variables"},
|
|
103
|
+
{:type => :css_mixin, :title => "CSS Mixins"},
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
# Skip rendering empty sections
|
|
107
|
+
sections.map do |sec|
|
|
108
|
+
members = @cls[:members][sec[:type]]
|
|
109
|
+
statics = @cls[:statics][sec[:type]]
|
|
110
|
+
if members.length > 0 || statics.length > 0
|
|
111
|
+
[
|
|
112
|
+
"<div id='m-#{sec[:type]}'>",
|
|
113
|
+
statics.length == 0 ? "<div class='definedBy'>Defined By</div>" : "",
|
|
114
|
+
"<h3 class='members-title'>#{sec[:title]}</h3>",
|
|
115
|
+
render_subsection(members, statics.length > 0 ? "Instance #{sec[:title]}" : nil),
|
|
116
|
+
render_subsection(statics, "Static #{sec[:title]}"),
|
|
117
|
+
"</div>",
|
|
118
|
+
]
|
|
119
|
+
else
|
|
120
|
+
nil
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def render_subsection(members, title)
|
|
126
|
+
return if members.length == 0
|
|
127
|
+
index = 0
|
|
128
|
+
return [
|
|
129
|
+
"<div class='subsection'>",
|
|
130
|
+
title ? "<div class='definedBy'>Defined By</div><h4 class='members-subtitle'>#{title}</h3>" : "",
|
|
131
|
+
members.map {|m| index += 1; render_member(m, index == 1) },
|
|
132
|
+
"</div>",
|
|
133
|
+
]
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def render_member(m, is_first)
|
|
137
|
+
# use classname "first-child" when it's first member in its category
|
|
138
|
+
first_child = is_first ? "first-child" : ""
|
|
139
|
+
# use classname "expandable" when member has shortened description
|
|
140
|
+
expandable = m[:shortDoc] ? "expandable" : "not-expandable"
|
|
141
|
+
# shorthand to owner class
|
|
142
|
+
owner = m[:owner]
|
|
143
|
+
# use classname "inherited" when member is not defined in this class
|
|
144
|
+
inherited = owner == @cls[:name] ? "not-inherited" : "inherited"
|
|
145
|
+
|
|
146
|
+
return [
|
|
147
|
+
"<div id='#{m[:tagname]}-#{m[:name]}' class='member #{first_child} #{inherited}'>",
|
|
148
|
+
# leftmost column: expand button
|
|
149
|
+
"<a href='#' class='side #{expandable}'>",
|
|
150
|
+
"<span> </span>",
|
|
151
|
+
"</a>",
|
|
152
|
+
# member name and type + link to owner class and source
|
|
153
|
+
"<div class='title'>",
|
|
154
|
+
"<div class='meta'>",
|
|
155
|
+
"<a href='#!/api/#{owner}' rel='#{owner}' class='definedIn docClass'>#{owner}</a><br/>",
|
|
156
|
+
"<a href='source/#{m[:href]}' target='_blank' class='viewSource'>view source</a>",
|
|
157
|
+
"</div>",
|
|
158
|
+
# method params signature or property type signature
|
|
159
|
+
render_signature(m),
|
|
160
|
+
"</div>",
|
|
161
|
+
# short and long descriptions
|
|
162
|
+
"<div class='description'>",
|
|
163
|
+
"<div class='short'>",
|
|
164
|
+
m[:shortDoc] ? m[:shortDoc] : m[:doc],
|
|
165
|
+
"</div>",
|
|
166
|
+
"<div class='long'>",
|
|
167
|
+
render_long_doc(m),
|
|
168
|
+
"</div>",
|
|
169
|
+
"</div>",
|
|
170
|
+
"</div>",
|
|
171
|
+
]
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def render_signature(m)
|
|
175
|
+
expandable = m[:shortDoc] ? "expandable" : "not-expandable"
|
|
176
|
+
|
|
177
|
+
name = m[:name]
|
|
178
|
+
before = ""
|
|
179
|
+
if m[:tagname] == :method && m[:name] == "constructor"
|
|
180
|
+
before = "<strong class='constructor-signature'>new</strong>"
|
|
181
|
+
name = @cls[:name]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
if m[:tagname] == :cfg || m[:tagname] == :property || m[:tagname] == :css_var
|
|
185
|
+
params = "<span> : #{m[:html_type]}</span>"
|
|
186
|
+
else
|
|
187
|
+
ps = m[:params].map {|p| render_short_param(p) }.join(", ")
|
|
188
|
+
params = "( <span class='pre'>#{ps}</span> )"
|
|
189
|
+
if m[:tagname] == :method && m[:return][:type] != "undefined"
|
|
190
|
+
params += " : " + m[:return][:html_type]
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
after = ""
|
|
195
|
+
if m[:protected]
|
|
196
|
+
after += "<strong class='protected-signature'>protected</strong>"
|
|
197
|
+
end
|
|
198
|
+
if m[:static]
|
|
199
|
+
after += "<strong class='static-signature'>static</strong>"
|
|
200
|
+
end
|
|
201
|
+
if m[:deprecated]
|
|
202
|
+
after += "<strong class='deprecated-signature'>deprecated</strong>"
|
|
203
|
+
end
|
|
204
|
+
if m[:tagname] == :cfg && !m[:optional]
|
|
205
|
+
after += "<strong class='required-signature'>required</strong>"
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
uri = "#!/api/#{m[:owner]}-#{m[:tagname]}-#{m[:name]}"
|
|
209
|
+
|
|
210
|
+
return [
|
|
211
|
+
before,
|
|
212
|
+
"<a href='#{uri}' class='name #{expandable}'>#{name}</a>",
|
|
213
|
+
params,
|
|
214
|
+
after
|
|
215
|
+
]
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def render_short_param(param)
|
|
219
|
+
p = param[:html_type] + " " + param[:name]
|
|
220
|
+
return param[:optional] ? "["+p+"]" : p
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def render_long_doc(m)
|
|
224
|
+
doc = [m[:doc]]
|
|
225
|
+
|
|
226
|
+
if m[:default] && m[:default] != "undefined"
|
|
227
|
+
doc << "<p>Defaults to: <code>" + CGI.escapeHTML(m[:default]) + "</code></p>"
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
if m[:deprecated]
|
|
231
|
+
v = m[:deprecated][:version] ? "since " + m[:deprecated][:version] : ""
|
|
232
|
+
doc << [
|
|
233
|
+
"<div class='deprecated'>",
|
|
234
|
+
"<p>This #{m[:tagname]} has been <strong>deprecated</strong> #{v}</p>",
|
|
235
|
+
m[:deprecated][:text],
|
|
236
|
+
"</div>",
|
|
237
|
+
]
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
doc << render_params_and_return(m)
|
|
241
|
+
|
|
242
|
+
doc
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# Handles both rendering of method parameters and return value.
|
|
246
|
+
# Plus the rendering of object properties, which could also be
|
|
247
|
+
# functions in which case they too will be rendered with
|
|
248
|
+
# parameters and return value.
|
|
249
|
+
def render_params_and_return(item)
|
|
250
|
+
doc = []
|
|
251
|
+
|
|
252
|
+
if item[:params] && item[:params].length > 0
|
|
253
|
+
params = item[:params]
|
|
254
|
+
elsif item[:properties] && item[:properties].length > 0
|
|
255
|
+
params = item[:properties]
|
|
256
|
+
# If the name of last property is "return"
|
|
257
|
+
# remove it from params list and handle it separately afterwards
|
|
258
|
+
if params.last[:name] == "return"
|
|
259
|
+
ret = params.last
|
|
260
|
+
params = params.slice(0, params.length-1)
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
if params
|
|
265
|
+
if item[:type] == "Function" || item[:tagname] == :method || item[:tagname] == :event
|
|
266
|
+
doc << '<h3 class="pa">Parameters</h3>'
|
|
267
|
+
end
|
|
268
|
+
doc << [
|
|
269
|
+
"<ul>",
|
|
270
|
+
params.map {|p| render_long_param(p) },
|
|
271
|
+
"</ul>",
|
|
272
|
+
]
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
if item[:return]
|
|
276
|
+
doc << render_return(item[:return])
|
|
277
|
+
elsif ret
|
|
278
|
+
doc << render_return(ret)
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
doc
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def render_long_param(p)
|
|
285
|
+
return [
|
|
286
|
+
"<li>",
|
|
287
|
+
"<span class='pre'>#{p[:name]}</span> : ",
|
|
288
|
+
p[:html_type],
|
|
289
|
+
p[:optional] ? " (optional)" : "",
|
|
290
|
+
"<div class='sub-desc'>",
|
|
291
|
+
p[:doc],
|
|
292
|
+
p[:default] ? "<p>Defaults to: <code>#{CGI.escapeHTML(p[:default])}</code></p>" : "",
|
|
293
|
+
p[:properties] && p[:properties].length > 0 ? render_params_and_return(p) : "",
|
|
294
|
+
"</div>",
|
|
295
|
+
"</li>",
|
|
296
|
+
]
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def render_return(ret)
|
|
300
|
+
return [
|
|
301
|
+
"<h3 class='pa'>Returns</h3>",
|
|
302
|
+
"<ul>",
|
|
303
|
+
"<li>",
|
|
304
|
+
"<span class='pre'>#{ret[:html_type]}</span>",
|
|
305
|
+
"<div class='sub-desc'>",
|
|
306
|
+
ret[:doc],
|
|
307
|
+
ret[:properties] && ret[:properties].length > 0 ? render_params_and_return(ret) : "",
|
|
308
|
+
"</div>",
|
|
309
|
+
"</li>",
|
|
310
|
+
"</ul>",
|
|
311
|
+
]
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
end
|
data/lib/jsduck/source_writer.rb
CHANGED
|
@@ -51,8 +51,8 @@ module JsDuck
|
|
|
51
51
|
<head>
|
|
52
52
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
53
53
|
<title>The source code</title>
|
|
54
|
-
<link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
|
|
55
|
-
<script type="text/javascript" src="../prettify/prettify.js"></script>
|
|
54
|
+
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
|
|
55
|
+
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
|
|
56
56
|
<style type="text/css">
|
|
57
57
|
.highlight { display: block; background-color: #ddd; }
|
|
58
58
|
</style>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require 'strscan'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
|
|
5
|
+
# Validates the syntax of type definitions
|
|
6
|
+
#
|
|
7
|
+
# Quick summary of supported types:
|
|
8
|
+
#
|
|
9
|
+
# - SomeType
|
|
10
|
+
# - Name.spaced.Type
|
|
11
|
+
# - Number[]
|
|
12
|
+
# - String/RegExp
|
|
13
|
+
# - Type...
|
|
14
|
+
#
|
|
15
|
+
# Details are covered in spec.
|
|
16
|
+
#
|
|
17
|
+
class TypeParser
|
|
18
|
+
# Allows to check the type of error that was encountered.
|
|
19
|
+
# It will be either of the two:
|
|
20
|
+
# - :syntax - type definition syntax is incorrect
|
|
21
|
+
# - :name - one of the names of the types is unknown
|
|
22
|
+
attr_reader :error
|
|
23
|
+
|
|
24
|
+
# When parsing was successful, then contains the output HTML - the
|
|
25
|
+
# input type-definition with types themselves replaced with links.
|
|
26
|
+
attr_reader :out
|
|
27
|
+
|
|
28
|
+
# Initializes the parser with hash of valid type names and doc_formatter.
|
|
29
|
+
def initialize(relations={}, formatter={})
|
|
30
|
+
@relations = relations
|
|
31
|
+
@formatter = formatter
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def parse(str)
|
|
35
|
+
@input = StringScanner.new(str)
|
|
36
|
+
@error = :syntax
|
|
37
|
+
@out = []
|
|
38
|
+
|
|
39
|
+
# Return immediately if base type doesn't match
|
|
40
|
+
return false unless base_type
|
|
41
|
+
|
|
42
|
+
# Go through enumeration of types, separated with "/"
|
|
43
|
+
while @input.check(/\//)
|
|
44
|
+
@out << @input.scan(/\//)
|
|
45
|
+
# Fail if there's no base type after "/"
|
|
46
|
+
return false unless base_type
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# The definition might end with an ellipsis
|
|
50
|
+
@out << "..." if @input.scan(/\.\.\./)
|
|
51
|
+
|
|
52
|
+
# Concatenate all output
|
|
53
|
+
@out = @out.join
|
|
54
|
+
|
|
55
|
+
# Success if we have reached the end of input
|
|
56
|
+
return @input.eos?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# The basic type
|
|
60
|
+
#
|
|
61
|
+
# <ident> [ "." <ident> ]* [ "[]" ]
|
|
62
|
+
#
|
|
63
|
+
# dot-separated identifiers followed by optional "[]"
|
|
64
|
+
def base_type
|
|
65
|
+
type = @input.scan(/[a-zA-Z_]+(\.[a-zA-Z_]+)*/)
|
|
66
|
+
|
|
67
|
+
if !type
|
|
68
|
+
return false
|
|
69
|
+
elsif @relations[type]
|
|
70
|
+
@out << @formatter.link(type, nil, type)
|
|
71
|
+
elsif @relations.ignore?(type) || type == "undefined"
|
|
72
|
+
@out << type
|
|
73
|
+
else
|
|
74
|
+
@error = :name
|
|
75
|
+
return false
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
@out << "[]" if @input.scan(/\[\]/)
|
|
79
|
+
|
|
80
|
+
true
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'jsduck/json_duck'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
|
|
5
|
+
# Reads in videos JSON file
|
|
6
|
+
class Videos
|
|
7
|
+
def initialize
|
|
8
|
+
@videos = []
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Parses videos config file
|
|
12
|
+
def parse(filename)
|
|
13
|
+
@videos = JsonDuck.read(filename)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Writes videos JSON file to a dir
|
|
17
|
+
def write(dir)
|
|
18
|
+
return if @videos.length == 0
|
|
19
|
+
|
|
20
|
+
FileUtils.mkdir(dir) unless File.exists?(dir)
|
|
21
|
+
# Write the JSON to output dir, so it's available in released
|
|
22
|
+
# version of docs and people can use it with JSDuck by themselves.
|
|
23
|
+
JsonDuck.write_json(dir+"/videos.json", @videos)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Returns all videos as array
|
|
27
|
+
def to_array
|
|
28
|
+
@videos
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module JsDuck
|
|
2
|
+
|
|
3
|
+
# Reads in HTML file with content for welcome page
|
|
4
|
+
class Welcome
|
|
5
|
+
# Parses welcome HTML file
|
|
6
|
+
def parse(filename)
|
|
7
|
+
@html = IO.read(filename)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Returns the HTML
|
|
11
|
+
def to_html
|
|
12
|
+
if @html
|
|
13
|
+
"<div id='welcome-content' style='display:none'>#{@html}</div>"
|
|
14
|
+
else
|
|
15
|
+
""
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
File without changes
|