jsduck 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,45 @@
|
|
1
|
+
require 'jsduck/table'
|
2
|
+
require 'jsduck/short_params'
|
3
|
+
require 'jsduck/long_params'
|
4
|
+
|
5
|
+
module JsDuck
|
6
|
+
|
7
|
+
class MethodTable < Table
|
8
|
+
def initialize(cls)
|
9
|
+
super(cls)
|
10
|
+
@type = :method
|
11
|
+
@id = @cls.full_name + "-methods"
|
12
|
+
@title = "Public Methods"
|
13
|
+
@column_title = "Method"
|
14
|
+
@row_class = "method-row"
|
15
|
+
@short_params = ShortParams.new
|
16
|
+
@long_params = LongParams.new(@cls)
|
17
|
+
end
|
18
|
+
|
19
|
+
def signature_suffix(item)
|
20
|
+
@short_params.render(item[:params]) + " : " + item[:return][:type]
|
21
|
+
end
|
22
|
+
|
23
|
+
def extra_doc(item)
|
24
|
+
[
|
25
|
+
"<div class='mdetail-params'>",
|
26
|
+
"<strong>Parameters:</strong>",
|
27
|
+
@long_params.render(item[:params]),
|
28
|
+
"<strong>Returns:</strong>",
|
29
|
+
render_return(item),
|
30
|
+
"</div>"
|
31
|
+
].join("\n")
|
32
|
+
end
|
33
|
+
|
34
|
+
def render_return(item)
|
35
|
+
type = item[:return][:type]
|
36
|
+
doc = item[:return][:doc]
|
37
|
+
if type == "void" && doc.length == 0
|
38
|
+
"<ul><li>void</li></ul>"
|
39
|
+
else
|
40
|
+
"<ul><li><code>#{type}</code><div class='sub-desc'>#{doc}</div></li></ul>"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/lib/jsduck/page.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'jsduck/doc_formatter'
|
2
|
+
require 'jsduck/cfg_table'
|
3
|
+
require 'jsduck/property_table'
|
4
|
+
require 'jsduck/method_table'
|
5
|
+
require 'jsduck/event_table'
|
6
|
+
|
7
|
+
module JsDuck
|
8
|
+
|
9
|
+
# Creates HTML documentation page for one class.
|
10
|
+
class Page
|
11
|
+
def initialize(cls)
|
12
|
+
@cls = cls
|
13
|
+
@formatter = DocFormatter.new(cls.full_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_html
|
17
|
+
[
|
18
|
+
'<div class="body-wrap">',
|
19
|
+
heading,
|
20
|
+
abstract,
|
21
|
+
description,
|
22
|
+
"<div class='hr'></div>",
|
23
|
+
CfgTable.new(@cls).to_html,
|
24
|
+
PropertyTable.new(@cls).to_html,
|
25
|
+
MethodTable.new(@cls).to_html,
|
26
|
+
EventTable.new(@cls).to_html,
|
27
|
+
"</div>",
|
28
|
+
].join("\n")
|
29
|
+
end
|
30
|
+
|
31
|
+
def heading
|
32
|
+
"<h1>Class <a href='source/sample.html#cls-#{@cls.full_name}'>#{@cls.full_name}</a></h1>"
|
33
|
+
end
|
34
|
+
|
35
|
+
def abstract
|
36
|
+
[
|
37
|
+
"<table cellspacing='0'>",
|
38
|
+
abstract_row("Extends:", @cls.parent ? class_link(@cls.parent.full_name) : "Object"),
|
39
|
+
"</table>",
|
40
|
+
].join("\n")
|
41
|
+
end
|
42
|
+
|
43
|
+
def class_link(name)
|
44
|
+
"<a href='output/#{name}.html' ext:cls='#{name}'>#{name}</a>"
|
45
|
+
end
|
46
|
+
|
47
|
+
def abstract_row(label, info)
|
48
|
+
"<tr><td class='label'>#{label}</td><td class='hd-info'>#{info}</td></tr>"
|
49
|
+
end
|
50
|
+
|
51
|
+
def description
|
52
|
+
"<div class='description'>#{@formatter.format(@cls[:doc])}</div>"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
require 'jsduck/lexer'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
|
5
|
+
class Parser
|
6
|
+
def initialize(input)
|
7
|
+
@lex = Lexer.new(input)
|
8
|
+
@docs = []
|
9
|
+
end
|
10
|
+
|
11
|
+
# Parses the whole JavaScript block and returns array where for
|
12
|
+
# each doc-comment there is a hash of two values: the comment
|
13
|
+
# itself as string and parsed structure of the code that
|
14
|
+
# immediately follows the comment.
|
15
|
+
#
|
16
|
+
# For example with the following JavaScript input:
|
17
|
+
#
|
18
|
+
# /**
|
19
|
+
# * @param {String} foo
|
20
|
+
# */
|
21
|
+
# MyClass.doIt = function(foo, bar) {
|
22
|
+
# }
|
23
|
+
#
|
24
|
+
# The return value of this function will be:
|
25
|
+
#
|
26
|
+
# [
|
27
|
+
# {
|
28
|
+
# :comment => "/**\n * @param {String} foo\n */",
|
29
|
+
# :code => {
|
30
|
+
# :type => :assignment,
|
31
|
+
# :left => ["MyClass", "doIt"],
|
32
|
+
# :right => {
|
33
|
+
# :type => :function,
|
34
|
+
# :name => nil,
|
35
|
+
# :params => [
|
36
|
+
# {:name => "foo"},
|
37
|
+
# {:name => "bar"}
|
38
|
+
# ]
|
39
|
+
# }
|
40
|
+
# }
|
41
|
+
# }
|
42
|
+
# ]
|
43
|
+
#
|
44
|
+
def parse
|
45
|
+
while !@lex.empty? do
|
46
|
+
if look(:doc_comment) then
|
47
|
+
@docs << {
|
48
|
+
:comment => match(:doc_comment),
|
49
|
+
:code => code_block
|
50
|
+
}
|
51
|
+
else
|
52
|
+
@lex.next
|
53
|
+
end
|
54
|
+
end
|
55
|
+
@docs
|
56
|
+
end
|
57
|
+
|
58
|
+
# The following is a recursive-descent parser for JavaScript that
|
59
|
+
# can possibly follow a doc-comment
|
60
|
+
|
61
|
+
# <code-block> := <function> | <var-declaration> | <assignment> | <property-literal>
|
62
|
+
def code_block
|
63
|
+
if look("function") then
|
64
|
+
function
|
65
|
+
elsif look("var") then
|
66
|
+
var_declaration
|
67
|
+
elsif look(:ident, ":") || look(:string, ":") then
|
68
|
+
property_literal
|
69
|
+
elsif look(:ident) || look("this") then
|
70
|
+
maybe_assignment
|
71
|
+
elsif look(:string) then
|
72
|
+
{:type => :assignment, :left => [match(:string)]}
|
73
|
+
else
|
74
|
+
{:type => :nop}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# <function> := "function" [ <ident> ] <function-parameters> <function-body>
|
79
|
+
def function
|
80
|
+
match("function")
|
81
|
+
return {
|
82
|
+
:type => :function,
|
83
|
+
:name => look(:ident) ? match(:ident) : nil,
|
84
|
+
:params => function_parameters,
|
85
|
+
:body => function_body,
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
# <function-parameters> := "(" [ <ident> [ "," <ident> ]* ] ")"
|
90
|
+
def function_parameters
|
91
|
+
match("(")
|
92
|
+
params = look(:ident) ? [{:name => match(:ident)}] : []
|
93
|
+
while look(",", :ident) do
|
94
|
+
params << {:name => match(",", :ident)}
|
95
|
+
end
|
96
|
+
match(")")
|
97
|
+
return params
|
98
|
+
end
|
99
|
+
|
100
|
+
# <function-body> := "{" ...
|
101
|
+
def function_body
|
102
|
+
match("{")
|
103
|
+
end
|
104
|
+
|
105
|
+
# <var-declaration> := "var" <assignment>
|
106
|
+
def var_declaration
|
107
|
+
match("var")
|
108
|
+
maybe_assignment
|
109
|
+
end
|
110
|
+
|
111
|
+
# <maybe-assignment> := <ident-chain> [ "=" <expression> ]
|
112
|
+
def maybe_assignment
|
113
|
+
left = ident_chain
|
114
|
+
if look("=") then
|
115
|
+
match("=")
|
116
|
+
right = expression
|
117
|
+
end
|
118
|
+
return {
|
119
|
+
:type => :assignment,
|
120
|
+
:left => left,
|
121
|
+
:right => right,
|
122
|
+
}
|
123
|
+
end
|
124
|
+
|
125
|
+
# <ident-chain> := [ "this" | <ident> ] [ "." <ident> ]*
|
126
|
+
def ident_chain
|
127
|
+
if look("this")
|
128
|
+
chain = [match("this")]
|
129
|
+
else
|
130
|
+
chain = [match(:ident)]
|
131
|
+
end
|
132
|
+
|
133
|
+
while look(".", :ident) do
|
134
|
+
chain << match(".", :ident)
|
135
|
+
end
|
136
|
+
return chain
|
137
|
+
end
|
138
|
+
|
139
|
+
# <expression> := <function> | <ext-extend> | <literal>
|
140
|
+
# <literal> := <string> | <boolean> | <number> | <regex>
|
141
|
+
def expression
|
142
|
+
if look("function") then
|
143
|
+
function
|
144
|
+
elsif look("Ext", ".", "extend") then
|
145
|
+
ext_extend
|
146
|
+
elsif look(:string) then
|
147
|
+
{:type => :literal, :class => "String"}
|
148
|
+
elsif look("true") || look("false") then
|
149
|
+
{:type => :literal, :class => "Boolean"}
|
150
|
+
elsif look(:number) then
|
151
|
+
{:type => :literal, :class => "Number"}
|
152
|
+
elsif look(:regex) then
|
153
|
+
{:type => :literal, :class => "RegExp"}
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
# <ext-extend> := "Ext" "." "extend" "(" <ident-chain> "," ...
|
158
|
+
def ext_extend
|
159
|
+
match("Ext", ".", "extend", "(")
|
160
|
+
return {
|
161
|
+
:type => :ext_extend,
|
162
|
+
:extend => ident_chain,
|
163
|
+
}
|
164
|
+
end
|
165
|
+
|
166
|
+
# <property-literal> := ( <ident> | <string> ) ":" <expression>
|
167
|
+
def property_literal
|
168
|
+
left = look(:ident) ? match(:ident) : match(:string)
|
169
|
+
match(":")
|
170
|
+
right = expression
|
171
|
+
return {
|
172
|
+
:type => :assignment,
|
173
|
+
:left => [left],
|
174
|
+
:right => right,
|
175
|
+
}
|
176
|
+
end
|
177
|
+
|
178
|
+
# Matches all arguments, returns the value of last match
|
179
|
+
# When the whole sequence doesn't match, throws exception
|
180
|
+
def match(*args)
|
181
|
+
if look(*args) then
|
182
|
+
last = nil
|
183
|
+
args.length.times { last = @lex.next }
|
184
|
+
last
|
185
|
+
else
|
186
|
+
throw "Expected: " + args.join(", ")
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def look(*args)
|
191
|
+
@lex.look(*args)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'jsduck/table'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
|
5
|
+
class PropertyTable < Table
|
6
|
+
def initialize(cls)
|
7
|
+
super(cls)
|
8
|
+
@type = :property
|
9
|
+
@id = @cls.full_name + "-props"
|
10
|
+
@title = "Public Properties"
|
11
|
+
@column_title = "Property"
|
12
|
+
@row_class = "property-row"
|
13
|
+
end
|
14
|
+
|
15
|
+
def signature_suffix(item)
|
16
|
+
" : " + item[:type]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module JsDuck
|
2
|
+
|
3
|
+
# Renders method/event parameters list in short form
|
4
|
+
# for use in signatures
|
5
|
+
class ShortParams
|
6
|
+
def render(params)
|
7
|
+
if params.length > 0
|
8
|
+
"( " + params.collect {|p| render_single(p) }.join(", ") + " )"
|
9
|
+
else
|
10
|
+
"()"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def render_single(param)
|
15
|
+
str = "<code>#{param[:type]} #{param[:name]}</code>"
|
16
|
+
if optional?(param)
|
17
|
+
"<span title='Optional' class='optional'>[" + str + "]</span>"
|
18
|
+
else
|
19
|
+
str
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def optional?(param)
|
24
|
+
return param[:doc] =~ /\(optional\)/
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/lib/jsduck/table.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'jsduck/doc_formatter'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
|
5
|
+
# Base class for creating HTML tables of class members.
|
6
|
+
#
|
7
|
+
# Subclasses must set variables @type, @id, @title, @column_title,
|
8
|
+
# @row_class, and implement the signature_suffix() and extra_doc()
|
9
|
+
# methods.
|
10
|
+
class Table
|
11
|
+
def initialize(cls)
|
12
|
+
@cls = cls
|
13
|
+
@formatter = DocFormatter.new(cls.full_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_html
|
17
|
+
rows = @cls.members(@type).collect {|m| row(m) }
|
18
|
+
|
19
|
+
# When no rows to show, create no table whatsoever
|
20
|
+
return "" if rows.length == 0
|
21
|
+
|
22
|
+
[
|
23
|
+
"<a id='#{@id}'></a>",
|
24
|
+
"<h2>#{@title}</h2>",
|
25
|
+
"<table cellspacing='0' class='member-table'><tbody>",
|
26
|
+
"<tr><th colspan='2' class='sig-header'>#{@column_title}</th><th class='msource-header'>Defined By</th></tr>",
|
27
|
+
rows.join("\n"),
|
28
|
+
"</tbody></table>",
|
29
|
+
].join("\n")
|
30
|
+
end
|
31
|
+
|
32
|
+
def row(item)
|
33
|
+
p_doc = primary_doc(item)
|
34
|
+
e_doc = extra_doc(item)
|
35
|
+
description = expandable_desc(p_doc, e_doc)
|
36
|
+
expandable = expandable?(p_doc, e_doc) ? 'expandable' : ''
|
37
|
+
inherited = inherited?(item) ? 'inherited' : ''
|
38
|
+
source = inherited?(item) ? member_link(item) : Class.short_name(item[:member])
|
39
|
+
[
|
40
|
+
"<tr class='#{@row_class} #{expandable} #{inherited}'>",
|
41
|
+
"<td class='micon'><a href='#expand' class='exi'> </a></td>",
|
42
|
+
"<td class='sig'>#{signature(item)}<div class='mdesc'>#{description}</div></td>",
|
43
|
+
"<td class='msource'>#{source}</td>",
|
44
|
+
"</tr>",
|
45
|
+
].join("")
|
46
|
+
end
|
47
|
+
|
48
|
+
def member_link(item)
|
49
|
+
cls = item[:member]
|
50
|
+
member = item[:name]
|
51
|
+
"<a href='output/#{cls}.html##{member}' " +
|
52
|
+
"ext:member='##{member}' " +
|
53
|
+
"ext:cls='#{cls}'>#{Class.short_name(cls)}</a>"
|
54
|
+
end
|
55
|
+
|
56
|
+
def signature(item)
|
57
|
+
id = @cls.full_name+ "-" + item[:name]
|
58
|
+
src = "source/sample.html#" + id
|
59
|
+
return "<a id='#{id}'></a><b><a href='#{src}'>#{item[:name]}</a></b>" + signature_suffix(item)
|
60
|
+
end
|
61
|
+
|
62
|
+
# 116 chars is also where ext-doc makes its cut, but unlike
|
63
|
+
# ext-doc we only make the cut when there's more than 120 chars.
|
64
|
+
#
|
65
|
+
# This way we don't get stupid expansions like:
|
66
|
+
#
|
67
|
+
# Blah blah blah some text...
|
68
|
+
#
|
69
|
+
# expanding to:
|
70
|
+
#
|
71
|
+
# Blah blah blah some text.
|
72
|
+
#
|
73
|
+
def expandable_desc(p_doc, e_doc)
|
74
|
+
if expandable?(p_doc, e_doc)
|
75
|
+
# Only show ellipsis when primary_doc is shortened.
|
76
|
+
tagless = strip_tags(p_doc)
|
77
|
+
short_doc = tagless[0..116]
|
78
|
+
ellipsis = tagless.length > short_doc.length ? "..." : ""
|
79
|
+
"<div class='short'>#{short_doc}#{ellipsis}</div>" +
|
80
|
+
"<div class='long'>#{p_doc}#{e_doc}</div>"
|
81
|
+
else
|
82
|
+
p_doc
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def primary_doc(item)
|
87
|
+
@formatter.format(item[:doc])
|
88
|
+
end
|
89
|
+
|
90
|
+
# Override to append extra documentation to the doc found in item[:doc]
|
91
|
+
def extra_doc(item)
|
92
|
+
""
|
93
|
+
end
|
94
|
+
|
95
|
+
def expandable?(p_doc, e_doc)
|
96
|
+
strip_tags(p_doc).length > 120 || e_doc.length > 0
|
97
|
+
end
|
98
|
+
|
99
|
+
def strip_tags(str)
|
100
|
+
str.gsub(/<.*?>/, "")
|
101
|
+
end
|
102
|
+
|
103
|
+
def inherited?(item)
|
104
|
+
item[:member] != @cls.full_name
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|