jsduck 0.1
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/COPYING +674 -0
- data/README.md +197 -0
- data/Rakefile +23 -0
- data/bin/jsduck +63 -0
- data/jsduck.gemspec +21 -0
- data/lib/jsduck/aggregator.rb +104 -0
- data/lib/jsduck/app.rb +89 -0
- data/lib/jsduck/cfg_table.rb +21 -0
- data/lib/jsduck/class.rb +116 -0
- data/lib/jsduck/doc_formatter.rb +69 -0
- data/lib/jsduck/doc_parser.rb +277 -0
- data/lib/jsduck/event_table.rb +33 -0
- data/lib/jsduck/lexer.rb +193 -0
- data/lib/jsduck/long_params.rb +31 -0
- data/lib/jsduck/merger.rb +286 -0
- data/lib/jsduck/method_table.rb +45 -0
- data/lib/jsduck/page.rb +56 -0
- data/lib/jsduck/parser.rb +195 -0
- data/lib/jsduck/property_table.rb +21 -0
- data/lib/jsduck/short_params.rb +28 -0
- data/lib/jsduck/table.rb +109 -0
- data/lib/jsduck/tree.rb +104 -0
- data/lib/jsduck/tree_icons.rb +19 -0
- data/template/index.html +45 -0
- data/template/resources/TabCloseMenu.js +150 -0
- data/template/resources/block-bottom.gif +0 -0
- data/template/resources/block-top.gif +0 -0
- data/template/resources/class.gif +0 -0
- data/template/resources/cmp.gif +0 -0
- data/template/resources/collapse-all.gif +0 -0
- data/template/resources/config.gif +0 -0
- data/template/resources/css/ext-all.css +6789 -0
- data/template/resources/css/xtheme-gray.css +1654 -0
- data/template/resources/docs.css +359 -0
- data/template/resources/docs.gif +0 -0
- data/template/resources/docs.js +672 -0
- data/template/resources/event.gif +0 -0
- data/template/resources/expand-all.gif +0 -0
- data/template/resources/expand-bg-over.gif +0 -0
- data/template/resources/expand-bg.gif +0 -0
- data/template/resources/expand-members.gif +0 -0
- data/template/resources/ext-all.js +11 -0
- data/template/resources/ext-base.js +7 -0
- data/template/resources/extanim32.gif +0 -0
- data/template/resources/fav.gif +0 -0
- data/template/resources/favicon.ico +0 -0
- data/template/resources/hd-bg.png +0 -0
- data/template/resources/hide-inherited.gif +0 -0
- data/template/resources/images/default/box/corners-blue.gif +0 -0
- data/template/resources/images/default/box/corners.gif +0 -0
- data/template/resources/images/default/box/l-blue.gif +0 -0
- data/template/resources/images/default/box/l.gif +0 -0
- data/template/resources/images/default/box/r-blue.gif +0 -0
- data/template/resources/images/default/box/r.gif +0 -0
- data/template/resources/images/default/box/tb-blue.gif +0 -0
- data/template/resources/images/default/box/tb.gif +0 -0
- data/template/resources/images/default/button/arrow.gif +0 -0
- data/template/resources/images/default/button/btn.gif +0 -0
- data/template/resources/images/default/button/group-cs.gif +0 -0
- data/template/resources/images/default/button/group-lr.gif +0 -0
- data/template/resources/images/default/button/group-tb.gif +0 -0
- data/template/resources/images/default/button/s-arrow-b-noline.gif +0 -0
- data/template/resources/images/default/button/s-arrow-b.gif +0 -0
- data/template/resources/images/default/button/s-arrow-bo.gif +0 -0
- data/template/resources/images/default/button/s-arrow-noline.gif +0 -0
- data/template/resources/images/default/button/s-arrow-o.gif +0 -0
- data/template/resources/images/default/button/s-arrow.gif +0 -0
- data/template/resources/images/default/dd/drop-add.gif +0 -0
- data/template/resources/images/default/dd/drop-no.gif +0 -0
- data/template/resources/images/default/dd/drop-yes.gif +0 -0
- data/template/resources/images/default/editor/tb-sprite.gif +0 -0
- data/template/resources/images/default/form/checkbox.gif +0 -0
- data/template/resources/images/default/form/clear-trigger.gif +0 -0
- data/template/resources/images/default/form/clear-trigger.psd +0 -0
- data/template/resources/images/default/form/date-trigger.gif +0 -0
- data/template/resources/images/default/form/date-trigger.psd +0 -0
- data/template/resources/images/default/form/error-tip-corners.gif +0 -0
- data/template/resources/images/default/form/exclamation.gif +0 -0
- data/template/resources/images/default/form/radio.gif +0 -0
- data/template/resources/images/default/form/search-trigger.gif +0 -0
- data/template/resources/images/default/form/search-trigger.psd +0 -0
- data/template/resources/images/default/form/text-bg.gif +0 -0
- data/template/resources/images/default/form/trigger-square.gif +0 -0
- data/template/resources/images/default/form/trigger-square.psd +0 -0
- data/template/resources/images/default/form/trigger-tpl.gif +0 -0
- data/template/resources/images/default/form/trigger.gif +0 -0
- data/template/resources/images/default/form/trigger.psd +0 -0
- data/template/resources/images/default/gradient-bg.gif +0 -0
- data/template/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/template/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/template/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/template/resources/images/default/grid/col-move-top.gif +0 -0
- data/template/resources/images/default/grid/columns.gif +0 -0
- data/template/resources/images/default/grid/dirty.gif +0 -0
- data/template/resources/images/default/grid/done.gif +0 -0
- data/template/resources/images/default/grid/drop-no.gif +0 -0
- data/template/resources/images/default/grid/drop-yes.gif +0 -0
- data/template/resources/images/default/grid/footer-bg.gif +0 -0
- data/template/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/template/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/template/resources/images/default/grid/grid-hrow.gif +0 -0
- data/template/resources/images/default/grid/grid-loading.gif +0 -0
- data/template/resources/images/default/grid/grid-split.gif +0 -0
- data/template/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/template/resources/images/default/grid/grid3-hd-btn.gif +0 -0
- data/template/resources/images/default/grid/grid3-hrow-over.gif +0 -0
- data/template/resources/images/default/grid/grid3-hrow.gif +0 -0
- data/template/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
- data/template/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/template/resources/images/default/grid/group-by.gif +0 -0
- data/template/resources/images/default/grid/group-collapse.gif +0 -0
- data/template/resources/images/default/grid/group-expand-sprite.gif +0 -0
- data/template/resources/images/default/grid/group-expand.gif +0 -0
- data/template/resources/images/default/grid/hd-pop.gif +0 -0
- data/template/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/template/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/template/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/template/resources/images/default/grid/hmenu-lock.png +0 -0
- data/template/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/template/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/template/resources/images/default/grid/invalid_line.gif +0 -0
- data/template/resources/images/default/grid/loading.gif +0 -0
- data/template/resources/images/default/grid/mso-hd.gif +0 -0
- data/template/resources/images/default/grid/nowait.gif +0 -0
- data/template/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/template/resources/images/default/grid/page-first.gif +0 -0
- data/template/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/template/resources/images/default/grid/page-last.gif +0 -0
- data/template/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/template/resources/images/default/grid/page-next.gif +0 -0
- data/template/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/template/resources/images/default/grid/page-prev.gif +0 -0
- data/template/resources/images/default/grid/pick-button.gif +0 -0
- data/template/resources/images/default/grid/refresh.gif +0 -0
- data/template/resources/images/default/grid/row-check-sprite.gif +0 -0
- data/template/resources/images/default/grid/row-expand-sprite.gif +0 -0
- data/template/resources/images/default/grid/row-over.gif +0 -0
- data/template/resources/images/default/grid/row-sel.gif +0 -0
- data/template/resources/images/default/grid/sort-hd.gif +0 -0
- data/template/resources/images/default/grid/sort_asc.gif +0 -0
- data/template/resources/images/default/grid/sort_desc.gif +0 -0
- data/template/resources/images/default/grid/wait.gif +0 -0
- data/template/resources/images/default/layout/collapse.gif +0 -0
- data/template/resources/images/default/layout/expand.gif +0 -0
- data/template/resources/images/default/layout/gradient-bg.gif +0 -0
- data/template/resources/images/default/layout/mini-bottom.gif +0 -0
- data/template/resources/images/default/layout/mini-left.gif +0 -0
- data/template/resources/images/default/layout/mini-right.gif +0 -0
- data/template/resources/images/default/layout/mini-top.gif +0 -0
- data/template/resources/images/default/layout/ns-collapse.gif +0 -0
- data/template/resources/images/default/layout/ns-expand.gif +0 -0
- data/template/resources/images/default/layout/panel-close.gif +0 -0
- data/template/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/template/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/template/resources/images/default/layout/stick.gif +0 -0
- data/template/resources/images/default/layout/stuck.gif +0 -0
- data/template/resources/images/default/layout/tab-close-on.gif +0 -0
- data/template/resources/images/default/layout/tab-close.gif +0 -0
- data/template/resources/images/default/menu/checked.gif +0 -0
- data/template/resources/images/default/menu/group-checked.gif +0 -0
- data/template/resources/images/default/menu/item-over.gif +0 -0
- data/template/resources/images/default/menu/menu-parent.gif +0 -0
- data/template/resources/images/default/menu/menu.gif +0 -0
- data/template/resources/images/default/menu/unchecked.gif +0 -0
- data/template/resources/images/default/panel/corners-sprite.gif +0 -0
- data/template/resources/images/default/panel/left-right.gif +0 -0
- data/template/resources/images/default/panel/light-hd.gif +0 -0
- data/template/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
- data/template/resources/images/default/panel/tool-sprites.gif +0 -0
- data/template/resources/images/default/panel/tools-sprites-trans.gif +0 -0
- data/template/resources/images/default/panel/top-bottom.gif +0 -0
- data/template/resources/images/default/panel/top-bottom.png +0 -0
- data/template/resources/images/default/panel/white-corners-sprite.gif +0 -0
- data/template/resources/images/default/panel/white-left-right.gif +0 -0
- data/template/resources/images/default/panel/white-top-bottom.gif +0 -0
- data/template/resources/images/default/progress/progress-bg.gif +0 -0
- data/template/resources/images/default/qtip/bg.gif +0 -0
- data/template/resources/images/default/qtip/close.gif +0 -0
- data/template/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
- data/template/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/template/resources/images/default/s.gif +0 -0
- data/template/resources/images/default/shadow-c.png +0 -0
- data/template/resources/images/default/shadow-lr.png +0 -0
- data/template/resources/images/default/shadow.png +0 -0
- data/template/resources/images/default/shared/blue-loading.gif +0 -0
- data/template/resources/images/default/shared/calendar.gif +0 -0
- data/template/resources/images/default/shared/glass-bg.gif +0 -0
- data/template/resources/images/default/shared/hd-sprite.gif +0 -0
- data/template/resources/images/default/shared/large-loading.gif +0 -0
- data/template/resources/images/default/shared/left-btn.gif +0 -0
- data/template/resources/images/default/shared/loading-balls.gif +0 -0
- data/template/resources/images/default/shared/right-btn.gif +0 -0
- data/template/resources/images/default/shared/warning.gif +0 -0
- data/template/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/e-handle.gif +0 -0
- data/template/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/ne-handle.gif +0 -0
- data/template/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/nw-handle.gif +0 -0
- data/template/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/s-handle.gif +0 -0
- data/template/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/se-handle.gif +0 -0
- data/template/resources/images/default/sizer/square.gif +0 -0
- data/template/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/template/resources/images/default/sizer/sw-handle.gif +0 -0
- data/template/resources/images/default/slider/slider-bg.png +0 -0
- data/template/resources/images/default/slider/slider-thumb.png +0 -0
- data/template/resources/images/default/slider/slider-v-bg.png +0 -0
- data/template/resources/images/default/slider/slider-v-thumb.png +0 -0
- data/template/resources/images/default/tabs/scroll-left.gif +0 -0
- data/template/resources/images/default/tabs/scroll-right.gif +0 -0
- data/template/resources/images/default/tabs/scroller-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-close.gif +0 -0
- data/template/resources/images/default/tabs/tab-strip-bg.gif +0 -0
- data/template/resources/images/default/tabs/tab-strip-bg.png +0 -0
- data/template/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/template/resources/images/default/tabs/tabs-sprite.gif +0 -0
- data/template/resources/images/default/toolbar/bg.gif +0 -0
- data/template/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/template/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/template/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/template/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/template/resources/images/default/toolbar/more.gif +0 -0
- data/template/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/template/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/template/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/template/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
- data/template/resources/images/default/tree/arrows.gif +0 -0
- data/template/resources/images/default/tree/drop-add.gif +0 -0
- data/template/resources/images/default/tree/drop-between.gif +0 -0
- data/template/resources/images/default/tree/drop-no.gif +0 -0
- data/template/resources/images/default/tree/drop-over.gif +0 -0
- data/template/resources/images/default/tree/drop-under.gif +0 -0
- data/template/resources/images/default/tree/drop-yes.gif +0 -0
- data/template/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/template/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/template/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/template/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/template/resources/images/default/tree/elbow-end.gif +0 -0
- data/template/resources/images/default/tree/elbow-line.gif +0 -0
- data/template/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/template/resources/images/default/tree/elbow-minus.gif +0 -0
- data/template/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/template/resources/images/default/tree/elbow-plus.gif +0 -0
- data/template/resources/images/default/tree/elbow.gif +0 -0
- data/template/resources/images/default/tree/folder-open.gif +0 -0
- data/template/resources/images/default/tree/folder.gif +0 -0
- data/template/resources/images/default/tree/leaf.gif +0 -0
- data/template/resources/images/default/tree/loading.gif +0 -0
- data/template/resources/images/default/tree/s.gif +0 -0
- data/template/resources/images/default/window/icon-error.gif +0 -0
- data/template/resources/images/default/window/icon-info.gif +0 -0
- data/template/resources/images/default/window/icon-question.gif +0 -0
- data/template/resources/images/default/window/icon-warning.gif +0 -0
- data/template/resources/images/default/window/left-corners.png +0 -0
- data/template/resources/images/default/window/left-corners.psd +0 -0
- data/template/resources/images/default/window/left-right.png +0 -0
- data/template/resources/images/default/window/left-right.psd +0 -0
- data/template/resources/images/default/window/right-corners.png +0 -0
- data/template/resources/images/default/window/right-corners.psd +0 -0
- data/template/resources/images/default/window/top-bottom.png +0 -0
- data/template/resources/images/default/window/top-bottom.psd +0 -0
- data/template/resources/images/gray/button/btn-arrow.gif +0 -0
- data/template/resources/images/gray/button/btn-sprite.gif +0 -0
- data/template/resources/images/gray/button/btn.gif +0 -0
- data/template/resources/images/gray/button/group-cs.gif +0 -0
- data/template/resources/images/gray/button/group-lr.gif +0 -0
- data/template/resources/images/gray/button/group-tb.gif +0 -0
- data/template/resources/images/gray/button/s-arrow-bo.gif +0 -0
- data/template/resources/images/gray/button/s-arrow-o.gif +0 -0
- data/template/resources/images/gray/form/clear-trigger.gif +0 -0
- data/template/resources/images/gray/form/date-trigger.gif +0 -0
- data/template/resources/images/gray/form/search-trigger.gif +0 -0
- data/template/resources/images/gray/form/trigger-square.gif +0 -0
- data/template/resources/images/gray/form/trigger.gif +0 -0
- data/template/resources/images/gray/gradient-bg.gif +0 -0
- data/template/resources/images/gray/grid/col-move-bottom.gif +0 -0
- data/template/resources/images/gray/grid/col-move-top.gif +0 -0
- data/template/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
- data/template/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
- data/template/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
- data/template/resources/images/gray/grid/grid3-hrow.gif +0 -0
- data/template/resources/images/gray/grid/grid3-hrow2.gif +0 -0
- data/template/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
- data/template/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
- data/template/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
- data/template/resources/images/gray/grid/group-collapse.gif +0 -0
- data/template/resources/images/gray/grid/group-expand-sprite.gif +0 -0
- data/template/resources/images/gray/grid/group-expand.gif +0 -0
- data/template/resources/images/gray/grid/page-first.gif +0 -0
- data/template/resources/images/gray/grid/page-last.gif +0 -0
- data/template/resources/images/gray/grid/page-next.gif +0 -0
- data/template/resources/images/gray/grid/page-prev.gif +0 -0
- data/template/resources/images/gray/grid/refresh.gif +0 -0
- data/template/resources/images/gray/grid/row-expand-sprite.gif +0 -0
- data/template/resources/images/gray/grid/sort_asc.gif +0 -0
- data/template/resources/images/gray/grid/sort_desc.gif +0 -0
- data/template/resources/images/gray/menu/group-checked.gif +0 -0
- data/template/resources/images/gray/menu/item-over-disabled.gif +0 -0
- data/template/resources/images/gray/menu/item-over.gif +0 -0
- data/template/resources/images/gray/menu/menu-parent.gif +0 -0
- data/template/resources/images/gray/panel/corners-sprite.gif +0 -0
- data/template/resources/images/gray/panel/left-right.gif +0 -0
- data/template/resources/images/gray/panel/light-hd.gif +0 -0
- data/template/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
- data/template/resources/images/gray/panel/tool-sprites.gif +0 -0
- data/template/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
- data/template/resources/images/gray/panel/top-bottom.gif +0 -0
- data/template/resources/images/gray/panel/top-bottom.png +0 -0
- data/template/resources/images/gray/panel/white-corners-sprite.gif +0 -0
- data/template/resources/images/gray/panel/white-left-right.gif +0 -0
- data/template/resources/images/gray/panel/white-top-bottom.gif +0 -0
- data/template/resources/images/gray/progress/progress-bg.gif +0 -0
- data/template/resources/images/gray/qtip/bg.gif +0 -0
- data/template/resources/images/gray/qtip/close.gif +0 -0
- data/template/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
- data/template/resources/images/gray/qtip/tip-sprite.gif +0 -0
- data/template/resources/images/gray/s.gif +0 -0
- data/template/resources/images/gray/shared/hd-sprite.gif +0 -0
- data/template/resources/images/gray/shared/left-btn.gif +0 -0
- data/template/resources/images/gray/shared/right-btn.gif +0 -0
- data/template/resources/images/gray/sizer/e-handle.gif +0 -0
- data/template/resources/images/gray/sizer/ne-handle.gif +0 -0
- data/template/resources/images/gray/sizer/nw-handle.gif +0 -0
- data/template/resources/images/gray/sizer/s-handle.gif +0 -0
- data/template/resources/images/gray/sizer/se-handle.gif +0 -0
- data/template/resources/images/gray/sizer/square.gif +0 -0
- data/template/resources/images/gray/sizer/sw-handle.gif +0 -0
- data/template/resources/images/gray/slider/slider-thumb.png +0 -0
- data/template/resources/images/gray/slider/slider-v-thumb.png +0 -0
- data/template/resources/images/gray/tabs/scroll-left.gif +0 -0
- data/template/resources/images/gray/tabs/scroll-right.gif +0 -0
- data/template/resources/images/gray/tabs/scroller-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-close.gif +0 -0
- data/template/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tab-strip-bg.png +0 -0
- data/template/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
- data/template/resources/images/gray/tabs/tabs-sprite.gif +0 -0
- data/template/resources/images/gray/toolbar/bg.gif +0 -0
- data/template/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
- data/template/resources/images/gray/toolbar/btn-arrow.gif +0 -0
- data/template/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
- data/template/resources/images/gray/toolbar/gray-bg.gif +0 -0
- data/template/resources/images/gray/toolbar/more.gif +0 -0
- data/template/resources/images/gray/toolbar/tb-bg.gif +0 -0
- data/template/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
- data/template/resources/images/gray/tree/arrows.gif +0 -0
- data/template/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
- data/template/resources/images/gray/tree/elbow-end-minus.gif +0 -0
- data/template/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
- data/template/resources/images/gray/tree/elbow-end-plus.gif +0 -0
- data/template/resources/images/gray/window/icon-error.gif +0 -0
- data/template/resources/images/gray/window/icon-info.gif +0 -0
- data/template/resources/images/gray/window/icon-question.gif +0 -0
- data/template/resources/images/gray/window/icon-warning.gif +0 -0
- data/template/resources/images/gray/window/left-corners.png +0 -0
- data/template/resources/images/gray/window/left-corners.pspimage +0 -0
- data/template/resources/images/gray/window/left-right.png +0 -0
- data/template/resources/images/gray/window/right-corners.png +0 -0
- data/template/resources/images/gray/window/top-bottom.png +0 -0
- data/template/resources/inherited.gif +0 -0
- data/template/resources/member-collapsed.gif +0 -0
- data/template/resources/member-expanded.gif +0 -0
- data/template/resources/member-hover.gif +0 -0
- data/template/resources/method.gif +0 -0
- data/template/resources/pkg-closed.gif +0 -0
- data/template/resources/pkg-open.gif +0 -0
- data/template/resources/pkg.gif +0 -0
- data/template/resources/prop.gif +0 -0
- data/template/resources/s.gif +0 -0
- data/template/resources/static.gif +0 -0
- data/template/resources/style.css +302 -0
- data/template/welcome.html +45 -0
- metadata +481 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'jsduck/table'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
|
|
5
|
+
class CfgTable < Table
|
|
6
|
+
def initialize(cls)
|
|
7
|
+
super(cls)
|
|
8
|
+
@type = :cfg
|
|
9
|
+
@id = @cls.full_name + "-configs"
|
|
10
|
+
@title = "Config Options"
|
|
11
|
+
@column_title = "Config Options"
|
|
12
|
+
@row_class = "config-row"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def signature_suffix(item)
|
|
16
|
+
" : " + item[:type]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
data/lib/jsduck/class.rb
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
module JsDuck
|
|
2
|
+
|
|
3
|
+
# Encapsulates class documentation and provides some commonly needed
|
|
4
|
+
# methods on it. Otherwise it acts like Hash, providing the []
|
|
5
|
+
# method.
|
|
6
|
+
class Class
|
|
7
|
+
def initialize(doc, classes={})
|
|
8
|
+
@doc = doc
|
|
9
|
+
@classes = classes
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def [](key)
|
|
13
|
+
@doc[key]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns instance of parent class, or nil if there is none
|
|
17
|
+
def parent
|
|
18
|
+
@doc[:extends] ? @classes[@doc[:extends]] : nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Returns true when this class inherits from the specified class.
|
|
22
|
+
# Also returns true when the class itself is the one we are asking about.
|
|
23
|
+
def inherits_from?(class_name)
|
|
24
|
+
return full_name == class_name || (parent ? parent.inherits_from?(class_name) : false)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Returns array of all public members of particular type in a class,
|
|
28
|
+
# sorted by name.
|
|
29
|
+
#
|
|
30
|
+
# For methods the the constructor is listed as first method having
|
|
31
|
+
# the same name as class itself.
|
|
32
|
+
#
|
|
33
|
+
# See members_hash for details.
|
|
34
|
+
def members(type)
|
|
35
|
+
ms = members_hash(type).values.sort {|a,b| a[:name] <=> b[:name] }
|
|
36
|
+
type == :method ? constructor_first(ms) : ms
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# If methods list contains constructor, rename it with class name
|
|
40
|
+
# and move into beginning of methods list.
|
|
41
|
+
def constructor_first(ms)
|
|
42
|
+
constr = ms.find {|m| m[:name] == "constructor" }
|
|
43
|
+
if constr
|
|
44
|
+
ms.delete(constr)
|
|
45
|
+
# Clone it. Otherwise the search for "constructor" from this
|
|
46
|
+
# class will return nothing as we have renamed it.
|
|
47
|
+
constr2 = constr.clone
|
|
48
|
+
constr2[:name] = short_name
|
|
49
|
+
ms.unshift(constr2)
|
|
50
|
+
end
|
|
51
|
+
ms
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Returns hash of public members of class (and parent classes).
|
|
55
|
+
# Members are methods, properties, cfgs, events (member type
|
|
56
|
+
# is speified through 'type' parameter).
|
|
57
|
+
#
|
|
58
|
+
# When parent and child have members with same name,
|
|
59
|
+
# member from child overrides tha parent member.
|
|
60
|
+
#
|
|
61
|
+
# We also set :member property to each member to the full class
|
|
62
|
+
# name where it belongs, so one can tell them apart afterwards.
|
|
63
|
+
def members_hash(type)
|
|
64
|
+
parent_members = parent ? parent.members_hash(type) : {}
|
|
65
|
+
@doc[type].each do |m|
|
|
66
|
+
parent_members[m[:name]] = m if !m[:private]
|
|
67
|
+
end
|
|
68
|
+
parent_members
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# A way to access full class name with similar syntax to
|
|
72
|
+
# package_name and short_name
|
|
73
|
+
def full_name
|
|
74
|
+
@doc[:name]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Returns package name of the class.
|
|
78
|
+
#
|
|
79
|
+
# That is the namespace part of full class name.
|
|
80
|
+
#
|
|
81
|
+
# For example "My.package" is package_name of "My.package.Class"
|
|
82
|
+
def package_name
|
|
83
|
+
Class.package_name(@doc[:name])
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Returns last part of full class name
|
|
87
|
+
#
|
|
88
|
+
# For example for "My.package.Class" it is "Class"
|
|
89
|
+
def short_name
|
|
90
|
+
Class.short_name(@doc[:name])
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Static methods
|
|
94
|
+
|
|
95
|
+
# Utility method that given a package or class name finds the name
|
|
96
|
+
# of its parent package.
|
|
97
|
+
def self.package_name(name)
|
|
98
|
+
name.slice(0, name.length - self.short_name(name).length - 1) || ""
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Utility method that given full package or class name extracts
|
|
102
|
+
# the "class"-part of the name.
|
|
103
|
+
#
|
|
104
|
+
# Because we try to emulate ext-doc, it's not as simple as just
|
|
105
|
+
# taking the last part. See class_spec.rb for details.
|
|
106
|
+
def self.short_name(name)
|
|
107
|
+
parts = name.split(/\./)
|
|
108
|
+
short = parts.pop
|
|
109
|
+
while parts.length > 1 && parts.last =~ /^[A-Z]/
|
|
110
|
+
short = parts.pop + "." + short
|
|
111
|
+
end
|
|
112
|
+
short
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rdiscount'
|
|
3
|
+
|
|
4
|
+
module JsDuck
|
|
5
|
+
|
|
6
|
+
# Formats doc-comments
|
|
7
|
+
class DocFormatter
|
|
8
|
+
# Initializes instance to work in context of particular class, so
|
|
9
|
+
# that when {@link #blah} is encountered it knows that
|
|
10
|
+
# Context#blah is meant.
|
|
11
|
+
def initialize(context)
|
|
12
|
+
@context = context
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Replaces {@link Class#member link text} in given string with
|
|
16
|
+
# HTML links pointing to documentation. In addition to the href
|
|
17
|
+
# attribute links will also contain ext:cls and ext:member
|
|
18
|
+
# attributes.
|
|
19
|
+
def replace(input)
|
|
20
|
+
input.gsub(/\{@link +(\S*?)(?: +(.+?))?\}/) do
|
|
21
|
+
target = $1
|
|
22
|
+
text = $2
|
|
23
|
+
if target =~ /^(.*)#(.*)$/
|
|
24
|
+
cls = $1.empty? ? @context : $1
|
|
25
|
+
member = $2
|
|
26
|
+
else
|
|
27
|
+
cls = target
|
|
28
|
+
member = false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Construct link attributes
|
|
32
|
+
href = " href=\"output/#{cls}.html" + (member ? "#" + cls + "-" + member : "") + '"'
|
|
33
|
+
ext_cls = ' ext:cls="' + cls + '"'
|
|
34
|
+
ext_member = member ? ' ext:member="' + member + '"' : ""
|
|
35
|
+
|
|
36
|
+
# Construct link text
|
|
37
|
+
if text
|
|
38
|
+
text = text
|
|
39
|
+
elsif member
|
|
40
|
+
text = (cls == @context) ? member : (cls + "." + member)
|
|
41
|
+
else
|
|
42
|
+
text = cls
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
"<a" + href + ext_cls + ext_member + ">" + text + "</a>"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Formats doc-comment for placement into HTML.
|
|
50
|
+
# Renders it with Markdown-formatter and replaces @link-s.
|
|
51
|
+
def format(input)
|
|
52
|
+
# In ExtJS source "<pre>" is often at the end of paragraph, not
|
|
53
|
+
# on its own line. But in that case RDiscount doesn't recognize
|
|
54
|
+
# it as the beginning of <pre>-block and goes on parsing it as
|
|
55
|
+
# normal Markdown, which often causes nested <pre>-blocks.
|
|
56
|
+
#
|
|
57
|
+
# To prevent this, we always add extra newline before <pre>.
|
|
58
|
+
input.gsub!(/([^\n])<pre>/, "\\1\n<pre>")
|
|
59
|
+
|
|
60
|
+
# But we remove trailing newline after <pre> to prevent
|
|
61
|
+
# code-blocks beginning with empty line.
|
|
62
|
+
input.gsub!(/<pre>(<code>)?\n?/, "<pre>\\1")
|
|
63
|
+
|
|
64
|
+
replace(RDiscount.new(input).to_html)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
require 'strscan'
|
|
2
|
+
|
|
3
|
+
module JsDuck
|
|
4
|
+
|
|
5
|
+
# Parses doc-comment into array of @tags
|
|
6
|
+
#
|
|
7
|
+
# For each @tag it produces Hash like the following:
|
|
8
|
+
#
|
|
9
|
+
# {
|
|
10
|
+
# :tagname => :cfg/:property/:type/:extends/...,
|
|
11
|
+
# :doc => "Some documentation for this tag",
|
|
12
|
+
# ...@tag specific stuff like :name, :type, and so on...
|
|
13
|
+
# }
|
|
14
|
+
#
|
|
15
|
+
# When doc-comment begins with comment, not preceded by @tag, then
|
|
16
|
+
# the comment will be placed into Hash with :tagname => :default.
|
|
17
|
+
#
|
|
18
|
+
# Unrecognized @tags are left as is into documentation as if they
|
|
19
|
+
# were normal text.
|
|
20
|
+
#
|
|
21
|
+
# @see and {@link} are parsed separately in JsDuck::DocFormatter.
|
|
22
|
+
#
|
|
23
|
+
class DocParser
|
|
24
|
+
def parse(input)
|
|
25
|
+
@tags = []
|
|
26
|
+
@input = StringScanner.new(purify(input))
|
|
27
|
+
parse_loop
|
|
28
|
+
# The parsing process can leave whitespace at the ends of
|
|
29
|
+
# doc-strings, here we get rid of it. Additionally null all empty docs
|
|
30
|
+
@tags.each do |tag|
|
|
31
|
+
tag[:doc].strip!
|
|
32
|
+
tag[:doc] = nil if tag[:doc] == ""
|
|
33
|
+
end
|
|
34
|
+
# Get rid of empty default tag
|
|
35
|
+
if @tags.first && @tags.first[:tagname] == :default && !@tags.first[:doc]
|
|
36
|
+
@tags.shift
|
|
37
|
+
end
|
|
38
|
+
@tags
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Extracts content inside /** ... */
|
|
42
|
+
def purify(input)
|
|
43
|
+
result = []
|
|
44
|
+
# Remove the beginning /** and end */
|
|
45
|
+
input = input.sub(/\A\/\*\* ?/, "").sub(/ ?\*\/\Z/, "")
|
|
46
|
+
# Now we are left with only two types of lines:
|
|
47
|
+
# - those beginning with *
|
|
48
|
+
# - and those without it
|
|
49
|
+
input.each_line do |line|
|
|
50
|
+
line.chomp!
|
|
51
|
+
if line =~ /\A\s*\*\s?(.*)\Z/ then
|
|
52
|
+
result << $1
|
|
53
|
+
else
|
|
54
|
+
result << line
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
return result.join("\n")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def add_tag(tag)
|
|
61
|
+
@tags << @current_tag = {:tagname => tag, :doc => ""}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def parse_loop
|
|
65
|
+
add_tag(:default)
|
|
66
|
+
while !@input.eos? do
|
|
67
|
+
if look(/@class\b/) then
|
|
68
|
+
at_class
|
|
69
|
+
elsif look(/@extends\b/) then
|
|
70
|
+
at_extends
|
|
71
|
+
elsif look(/@singleton\b/) then
|
|
72
|
+
boolean_at_tag(/@singleton/, :singleton)
|
|
73
|
+
elsif look(/@event\b/) then
|
|
74
|
+
at_event
|
|
75
|
+
elsif look(/@method\b/) then
|
|
76
|
+
at_method
|
|
77
|
+
elsif look(/@constructor\b/) then
|
|
78
|
+
boolean_at_tag(/@constructor/, :constructor)
|
|
79
|
+
elsif look(/@param\b/) then
|
|
80
|
+
at_param
|
|
81
|
+
elsif look(/@returns?\b/) then
|
|
82
|
+
at_return
|
|
83
|
+
elsif look(/@cfg\b/) then
|
|
84
|
+
at_cfg
|
|
85
|
+
elsif look(/@property\b/) then
|
|
86
|
+
at_property
|
|
87
|
+
elsif look(/@type\b/) then
|
|
88
|
+
at_type
|
|
89
|
+
elsif look(/@xtype\b/) then
|
|
90
|
+
at_xtype
|
|
91
|
+
elsif look(/@member\b/) then
|
|
92
|
+
at_member
|
|
93
|
+
elsif look(/@static\b/) then
|
|
94
|
+
boolean_at_tag(/@static/, :static)
|
|
95
|
+
elsif look(/@(private|ignore|hide|protected)\b/) then
|
|
96
|
+
boolean_at_tag(/@(private|ignore|hide|protected)/, :private)
|
|
97
|
+
elsif look(/@/) then
|
|
98
|
+
@current_tag[:doc] += @input.scan(/@/)
|
|
99
|
+
elsif look(/[^@]/) then
|
|
100
|
+
@current_tag[:doc] += @input.scan(/[^@]+/)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# matches @class name ...
|
|
106
|
+
def at_class
|
|
107
|
+
match(/@class/)
|
|
108
|
+
add_tag(:class)
|
|
109
|
+
maybe_ident_chain(:name)
|
|
110
|
+
skip_white
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# matches @extends name ...
|
|
114
|
+
def at_extends
|
|
115
|
+
match(/@extends/)
|
|
116
|
+
add_tag(:extends)
|
|
117
|
+
maybe_ident_chain(:extends)
|
|
118
|
+
skip_white
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# matches @event name ...
|
|
122
|
+
def at_event
|
|
123
|
+
match(/@event/)
|
|
124
|
+
add_tag(:event)
|
|
125
|
+
maybe_name
|
|
126
|
+
skip_white
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# matches @method name ...
|
|
130
|
+
def at_method
|
|
131
|
+
match(/@method/)
|
|
132
|
+
add_tag(:method)
|
|
133
|
+
maybe_name
|
|
134
|
+
skip_white
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# matches @param {type} variable ...
|
|
138
|
+
def at_param
|
|
139
|
+
match(/@param/)
|
|
140
|
+
add_tag(:param)
|
|
141
|
+
maybe_type
|
|
142
|
+
maybe_name
|
|
143
|
+
skip_white
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# matches @return {type} ...
|
|
147
|
+
def at_return
|
|
148
|
+
match(/@returns?/)
|
|
149
|
+
add_tag(:return)
|
|
150
|
+
maybe_type
|
|
151
|
+
skip_white
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# matches @cfg {type} name ...
|
|
155
|
+
def at_cfg
|
|
156
|
+
match(/@cfg/)
|
|
157
|
+
add_tag(:cfg)
|
|
158
|
+
maybe_type
|
|
159
|
+
maybe_name
|
|
160
|
+
skip_white
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# matches @property {type} name ...
|
|
164
|
+
#
|
|
165
|
+
# ext-doc doesn't support {type} and name for @property - name is
|
|
166
|
+
# inferred from source and @type is required to specify type,
|
|
167
|
+
# jsdoc-toolkit on the other hand follows the sensible route, and
|
|
168
|
+
# so do we.
|
|
169
|
+
def at_property
|
|
170
|
+
match(/@property/)
|
|
171
|
+
add_tag(:property)
|
|
172
|
+
maybe_type
|
|
173
|
+
maybe_name
|
|
174
|
+
skip_white
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# matches @type {type} or @type type
|
|
178
|
+
#
|
|
179
|
+
# The presence of @type implies that we are dealing with property.
|
|
180
|
+
# ext-doc allows type name to be either inside curly braces or
|
|
181
|
+
# without them at all.
|
|
182
|
+
def at_type
|
|
183
|
+
match(/@type/)
|
|
184
|
+
add_tag(:type)
|
|
185
|
+
skip_horiz_white
|
|
186
|
+
if look(/\{/) then
|
|
187
|
+
@current_tag[:type] = typedef
|
|
188
|
+
elsif look(/\S/) then
|
|
189
|
+
@current_tag[:type] = @input.scan(/\S+/)
|
|
190
|
+
end
|
|
191
|
+
skip_white
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# matches @xtype name
|
|
195
|
+
def at_xtype
|
|
196
|
+
match(/@xtype/)
|
|
197
|
+
add_tag(:xtype)
|
|
198
|
+
maybe_name
|
|
199
|
+
skip_white
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# matches @member name ...
|
|
203
|
+
def at_member
|
|
204
|
+
match(/@member/)
|
|
205
|
+
add_tag(:member)
|
|
206
|
+
maybe_ident_chain(:member)
|
|
207
|
+
skip_white
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Used to match @private, @ignore, @hide, ...
|
|
211
|
+
def boolean_at_tag(regex, propname)
|
|
212
|
+
match(regex)
|
|
213
|
+
add_tag(propname)
|
|
214
|
+
skip_white
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# matches {type} if possible and sets it on @current_tag
|
|
218
|
+
def maybe_type
|
|
219
|
+
skip_horiz_white
|
|
220
|
+
if look(/\{/) then
|
|
221
|
+
@current_tag[:type] = typedef
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# matches identifier name if possible and sets it on @current_tag
|
|
226
|
+
def maybe_name
|
|
227
|
+
skip_horiz_white
|
|
228
|
+
if look(/\w/) then
|
|
229
|
+
@current_tag[:name] = ident
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
# matches ident.chain if possible and sets it on @current_tag
|
|
234
|
+
def maybe_ident_chain(propname)
|
|
235
|
+
skip_horiz_white
|
|
236
|
+
if look(/\w/) then
|
|
237
|
+
@current_tag[propname] = ident_chain
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# matches {...} and returns text inside brackets
|
|
242
|
+
def typedef
|
|
243
|
+
match(/\{/)
|
|
244
|
+
name = @input.scan(/[^}]+/)
|
|
245
|
+
match(/\}/)
|
|
246
|
+
return name
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# matches chained.identifier.name and returns it
|
|
250
|
+
def ident_chain
|
|
251
|
+
@input.scan(/[\w.]+/)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# matches identifier and returns its name
|
|
255
|
+
def ident
|
|
256
|
+
@input.scan(/\w+/)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def look(re)
|
|
260
|
+
@input.check(re)
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def match(re)
|
|
264
|
+
@input.scan(re)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def skip_white
|
|
268
|
+
@input.scan(/\s+/)
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
# skips horizontal whitespace (tabs and spaces)
|
|
272
|
+
def skip_horiz_white
|
|
273
|
+
@input.scan(/[ \t]+/)
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
end
|