jsduck 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. data/.gitignore +1 -0
  2. data/COPYING +674 -0
  3. data/README.md +197 -0
  4. data/Rakefile +23 -0
  5. data/bin/jsduck +63 -0
  6. data/jsduck.gemspec +21 -0
  7. data/lib/jsduck/aggregator.rb +104 -0
  8. data/lib/jsduck/app.rb +89 -0
  9. data/lib/jsduck/cfg_table.rb +21 -0
  10. data/lib/jsduck/class.rb +116 -0
  11. data/lib/jsduck/doc_formatter.rb +69 -0
  12. data/lib/jsduck/doc_parser.rb +277 -0
  13. data/lib/jsduck/event_table.rb +33 -0
  14. data/lib/jsduck/lexer.rb +193 -0
  15. data/lib/jsduck/long_params.rb +31 -0
  16. data/lib/jsduck/merger.rb +286 -0
  17. data/lib/jsduck/method_table.rb +45 -0
  18. data/lib/jsduck/page.rb +56 -0
  19. data/lib/jsduck/parser.rb +195 -0
  20. data/lib/jsduck/property_table.rb +21 -0
  21. data/lib/jsduck/short_params.rb +28 -0
  22. data/lib/jsduck/table.rb +109 -0
  23. data/lib/jsduck/tree.rb +104 -0
  24. data/lib/jsduck/tree_icons.rb +19 -0
  25. data/template/index.html +45 -0
  26. data/template/resources/TabCloseMenu.js +150 -0
  27. data/template/resources/block-bottom.gif +0 -0
  28. data/template/resources/block-top.gif +0 -0
  29. data/template/resources/class.gif +0 -0
  30. data/template/resources/cmp.gif +0 -0
  31. data/template/resources/collapse-all.gif +0 -0
  32. data/template/resources/config.gif +0 -0
  33. data/template/resources/css/ext-all.css +6789 -0
  34. data/template/resources/css/xtheme-gray.css +1654 -0
  35. data/template/resources/docs.css +359 -0
  36. data/template/resources/docs.gif +0 -0
  37. data/template/resources/docs.js +672 -0
  38. data/template/resources/event.gif +0 -0
  39. data/template/resources/expand-all.gif +0 -0
  40. data/template/resources/expand-bg-over.gif +0 -0
  41. data/template/resources/expand-bg.gif +0 -0
  42. data/template/resources/expand-members.gif +0 -0
  43. data/template/resources/ext-all.js +11 -0
  44. data/template/resources/ext-base.js +7 -0
  45. data/template/resources/extanim32.gif +0 -0
  46. data/template/resources/fav.gif +0 -0
  47. data/template/resources/favicon.ico +0 -0
  48. data/template/resources/hd-bg.png +0 -0
  49. data/template/resources/hide-inherited.gif +0 -0
  50. data/template/resources/images/default/box/corners-blue.gif +0 -0
  51. data/template/resources/images/default/box/corners.gif +0 -0
  52. data/template/resources/images/default/box/l-blue.gif +0 -0
  53. data/template/resources/images/default/box/l.gif +0 -0
  54. data/template/resources/images/default/box/r-blue.gif +0 -0
  55. data/template/resources/images/default/box/r.gif +0 -0
  56. data/template/resources/images/default/box/tb-blue.gif +0 -0
  57. data/template/resources/images/default/box/tb.gif +0 -0
  58. data/template/resources/images/default/button/arrow.gif +0 -0
  59. data/template/resources/images/default/button/btn.gif +0 -0
  60. data/template/resources/images/default/button/group-cs.gif +0 -0
  61. data/template/resources/images/default/button/group-lr.gif +0 -0
  62. data/template/resources/images/default/button/group-tb.gif +0 -0
  63. data/template/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  64. data/template/resources/images/default/button/s-arrow-b.gif +0 -0
  65. data/template/resources/images/default/button/s-arrow-bo.gif +0 -0
  66. data/template/resources/images/default/button/s-arrow-noline.gif +0 -0
  67. data/template/resources/images/default/button/s-arrow-o.gif +0 -0
  68. data/template/resources/images/default/button/s-arrow.gif +0 -0
  69. data/template/resources/images/default/dd/drop-add.gif +0 -0
  70. data/template/resources/images/default/dd/drop-no.gif +0 -0
  71. data/template/resources/images/default/dd/drop-yes.gif +0 -0
  72. data/template/resources/images/default/editor/tb-sprite.gif +0 -0
  73. data/template/resources/images/default/form/checkbox.gif +0 -0
  74. data/template/resources/images/default/form/clear-trigger.gif +0 -0
  75. data/template/resources/images/default/form/clear-trigger.psd +0 -0
  76. data/template/resources/images/default/form/date-trigger.gif +0 -0
  77. data/template/resources/images/default/form/date-trigger.psd +0 -0
  78. data/template/resources/images/default/form/error-tip-corners.gif +0 -0
  79. data/template/resources/images/default/form/exclamation.gif +0 -0
  80. data/template/resources/images/default/form/radio.gif +0 -0
  81. data/template/resources/images/default/form/search-trigger.gif +0 -0
  82. data/template/resources/images/default/form/search-trigger.psd +0 -0
  83. data/template/resources/images/default/form/text-bg.gif +0 -0
  84. data/template/resources/images/default/form/trigger-square.gif +0 -0
  85. data/template/resources/images/default/form/trigger-square.psd +0 -0
  86. data/template/resources/images/default/form/trigger-tpl.gif +0 -0
  87. data/template/resources/images/default/form/trigger.gif +0 -0
  88. data/template/resources/images/default/form/trigger.psd +0 -0
  89. data/template/resources/images/default/gradient-bg.gif +0 -0
  90. data/template/resources/images/default/grid/arrow-left-white.gif +0 -0
  91. data/template/resources/images/default/grid/arrow-right-white.gif +0 -0
  92. data/template/resources/images/default/grid/col-move-bottom.gif +0 -0
  93. data/template/resources/images/default/grid/col-move-top.gif +0 -0
  94. data/template/resources/images/default/grid/columns.gif +0 -0
  95. data/template/resources/images/default/grid/dirty.gif +0 -0
  96. data/template/resources/images/default/grid/done.gif +0 -0
  97. data/template/resources/images/default/grid/drop-no.gif +0 -0
  98. data/template/resources/images/default/grid/drop-yes.gif +0 -0
  99. data/template/resources/images/default/grid/footer-bg.gif +0 -0
  100. data/template/resources/images/default/grid/grid-blue-hd.gif +0 -0
  101. data/template/resources/images/default/grid/grid-blue-split.gif +0 -0
  102. data/template/resources/images/default/grid/grid-hrow.gif +0 -0
  103. data/template/resources/images/default/grid/grid-loading.gif +0 -0
  104. data/template/resources/images/default/grid/grid-split.gif +0 -0
  105. data/template/resources/images/default/grid/grid-vista-hd.gif +0 -0
  106. data/template/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  107. data/template/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  108. data/template/resources/images/default/grid/grid3-hrow.gif +0 -0
  109. data/template/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  110. data/template/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  111. data/template/resources/images/default/grid/group-by.gif +0 -0
  112. data/template/resources/images/default/grid/group-collapse.gif +0 -0
  113. data/template/resources/images/default/grid/group-expand-sprite.gif +0 -0
  114. data/template/resources/images/default/grid/group-expand.gif +0 -0
  115. data/template/resources/images/default/grid/hd-pop.gif +0 -0
  116. data/template/resources/images/default/grid/hmenu-asc.gif +0 -0
  117. data/template/resources/images/default/grid/hmenu-desc.gif +0 -0
  118. data/template/resources/images/default/grid/hmenu-lock.gif +0 -0
  119. data/template/resources/images/default/grid/hmenu-lock.png +0 -0
  120. data/template/resources/images/default/grid/hmenu-unlock.gif +0 -0
  121. data/template/resources/images/default/grid/hmenu-unlock.png +0 -0
  122. data/template/resources/images/default/grid/invalid_line.gif +0 -0
  123. data/template/resources/images/default/grid/loading.gif +0 -0
  124. data/template/resources/images/default/grid/mso-hd.gif +0 -0
  125. data/template/resources/images/default/grid/nowait.gif +0 -0
  126. data/template/resources/images/default/grid/page-first-disabled.gif +0 -0
  127. data/template/resources/images/default/grid/page-first.gif +0 -0
  128. data/template/resources/images/default/grid/page-last-disabled.gif +0 -0
  129. data/template/resources/images/default/grid/page-last.gif +0 -0
  130. data/template/resources/images/default/grid/page-next-disabled.gif +0 -0
  131. data/template/resources/images/default/grid/page-next.gif +0 -0
  132. data/template/resources/images/default/grid/page-prev-disabled.gif +0 -0
  133. data/template/resources/images/default/grid/page-prev.gif +0 -0
  134. data/template/resources/images/default/grid/pick-button.gif +0 -0
  135. data/template/resources/images/default/grid/refresh.gif +0 -0
  136. data/template/resources/images/default/grid/row-check-sprite.gif +0 -0
  137. data/template/resources/images/default/grid/row-expand-sprite.gif +0 -0
  138. data/template/resources/images/default/grid/row-over.gif +0 -0
  139. data/template/resources/images/default/grid/row-sel.gif +0 -0
  140. data/template/resources/images/default/grid/sort-hd.gif +0 -0
  141. data/template/resources/images/default/grid/sort_asc.gif +0 -0
  142. data/template/resources/images/default/grid/sort_desc.gif +0 -0
  143. data/template/resources/images/default/grid/wait.gif +0 -0
  144. data/template/resources/images/default/layout/collapse.gif +0 -0
  145. data/template/resources/images/default/layout/expand.gif +0 -0
  146. data/template/resources/images/default/layout/gradient-bg.gif +0 -0
  147. data/template/resources/images/default/layout/mini-bottom.gif +0 -0
  148. data/template/resources/images/default/layout/mini-left.gif +0 -0
  149. data/template/resources/images/default/layout/mini-right.gif +0 -0
  150. data/template/resources/images/default/layout/mini-top.gif +0 -0
  151. data/template/resources/images/default/layout/ns-collapse.gif +0 -0
  152. data/template/resources/images/default/layout/ns-expand.gif +0 -0
  153. data/template/resources/images/default/layout/panel-close.gif +0 -0
  154. data/template/resources/images/default/layout/panel-title-bg.gif +0 -0
  155. data/template/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  156. data/template/resources/images/default/layout/stick.gif +0 -0
  157. data/template/resources/images/default/layout/stuck.gif +0 -0
  158. data/template/resources/images/default/layout/tab-close-on.gif +0 -0
  159. data/template/resources/images/default/layout/tab-close.gif +0 -0
  160. data/template/resources/images/default/menu/checked.gif +0 -0
  161. data/template/resources/images/default/menu/group-checked.gif +0 -0
  162. data/template/resources/images/default/menu/item-over.gif +0 -0
  163. data/template/resources/images/default/menu/menu-parent.gif +0 -0
  164. data/template/resources/images/default/menu/menu.gif +0 -0
  165. data/template/resources/images/default/menu/unchecked.gif +0 -0
  166. data/template/resources/images/default/panel/corners-sprite.gif +0 -0
  167. data/template/resources/images/default/panel/left-right.gif +0 -0
  168. data/template/resources/images/default/panel/light-hd.gif +0 -0
  169. data/template/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  170. data/template/resources/images/default/panel/tool-sprites.gif +0 -0
  171. data/template/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  172. data/template/resources/images/default/panel/top-bottom.gif +0 -0
  173. data/template/resources/images/default/panel/top-bottom.png +0 -0
  174. data/template/resources/images/default/panel/white-corners-sprite.gif +0 -0
  175. data/template/resources/images/default/panel/white-left-right.gif +0 -0
  176. data/template/resources/images/default/panel/white-top-bottom.gif +0 -0
  177. data/template/resources/images/default/progress/progress-bg.gif +0 -0
  178. data/template/resources/images/default/qtip/bg.gif +0 -0
  179. data/template/resources/images/default/qtip/close.gif +0 -0
  180. data/template/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  181. data/template/resources/images/default/qtip/tip-sprite.gif +0 -0
  182. data/template/resources/images/default/s.gif +0 -0
  183. data/template/resources/images/default/shadow-c.png +0 -0
  184. data/template/resources/images/default/shadow-lr.png +0 -0
  185. data/template/resources/images/default/shadow.png +0 -0
  186. data/template/resources/images/default/shared/blue-loading.gif +0 -0
  187. data/template/resources/images/default/shared/calendar.gif +0 -0
  188. data/template/resources/images/default/shared/glass-bg.gif +0 -0
  189. data/template/resources/images/default/shared/hd-sprite.gif +0 -0
  190. data/template/resources/images/default/shared/large-loading.gif +0 -0
  191. data/template/resources/images/default/shared/left-btn.gif +0 -0
  192. data/template/resources/images/default/shared/loading-balls.gif +0 -0
  193. data/template/resources/images/default/shared/right-btn.gif +0 -0
  194. data/template/resources/images/default/shared/warning.gif +0 -0
  195. data/template/resources/images/default/sizer/e-handle-dark.gif +0 -0
  196. data/template/resources/images/default/sizer/e-handle.gif +0 -0
  197. data/template/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  198. data/template/resources/images/default/sizer/ne-handle.gif +0 -0
  199. data/template/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  200. data/template/resources/images/default/sizer/nw-handle.gif +0 -0
  201. data/template/resources/images/default/sizer/s-handle-dark.gif +0 -0
  202. data/template/resources/images/default/sizer/s-handle.gif +0 -0
  203. data/template/resources/images/default/sizer/se-handle-dark.gif +0 -0
  204. data/template/resources/images/default/sizer/se-handle.gif +0 -0
  205. data/template/resources/images/default/sizer/square.gif +0 -0
  206. data/template/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  207. data/template/resources/images/default/sizer/sw-handle.gif +0 -0
  208. data/template/resources/images/default/slider/slider-bg.png +0 -0
  209. data/template/resources/images/default/slider/slider-thumb.png +0 -0
  210. data/template/resources/images/default/slider/slider-v-bg.png +0 -0
  211. data/template/resources/images/default/slider/slider-v-thumb.png +0 -0
  212. data/template/resources/images/default/tabs/scroll-left.gif +0 -0
  213. data/template/resources/images/default/tabs/scroll-right.gif +0 -0
  214. data/template/resources/images/default/tabs/scroller-bg.gif +0 -0
  215. data/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  216. data/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  217. data/template/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  218. data/template/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
  219. data/template/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
  220. data/template/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  221. data/template/resources/images/default/tabs/tab-close.gif +0 -0
  222. data/template/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  223. data/template/resources/images/default/tabs/tab-strip-bg.png +0 -0
  224. data/template/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  225. data/template/resources/images/default/tabs/tabs-sprite.gif +0 -0
  226. data/template/resources/images/default/toolbar/bg.gif +0 -0
  227. data/template/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  228. data/template/resources/images/default/toolbar/btn-arrow.gif +0 -0
  229. data/template/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  230. data/template/resources/images/default/toolbar/gray-bg.gif +0 -0
  231. data/template/resources/images/default/toolbar/more.gif +0 -0
  232. data/template/resources/images/default/toolbar/tb-bg.gif +0 -0
  233. data/template/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  234. data/template/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  235. data/template/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  236. data/template/resources/images/default/tree/arrows.gif +0 -0
  237. data/template/resources/images/default/tree/drop-add.gif +0 -0
  238. data/template/resources/images/default/tree/drop-between.gif +0 -0
  239. data/template/resources/images/default/tree/drop-no.gif +0 -0
  240. data/template/resources/images/default/tree/drop-over.gif +0 -0
  241. data/template/resources/images/default/tree/drop-under.gif +0 -0
  242. data/template/resources/images/default/tree/drop-yes.gif +0 -0
  243. data/template/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  244. data/template/resources/images/default/tree/elbow-end-minus.gif +0 -0
  245. data/template/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  246. data/template/resources/images/default/tree/elbow-end-plus.gif +0 -0
  247. data/template/resources/images/default/tree/elbow-end.gif +0 -0
  248. data/template/resources/images/default/tree/elbow-line.gif +0 -0
  249. data/template/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  250. data/template/resources/images/default/tree/elbow-minus.gif +0 -0
  251. data/template/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  252. data/template/resources/images/default/tree/elbow-plus.gif +0 -0
  253. data/template/resources/images/default/tree/elbow.gif +0 -0
  254. data/template/resources/images/default/tree/folder-open.gif +0 -0
  255. data/template/resources/images/default/tree/folder.gif +0 -0
  256. data/template/resources/images/default/tree/leaf.gif +0 -0
  257. data/template/resources/images/default/tree/loading.gif +0 -0
  258. data/template/resources/images/default/tree/s.gif +0 -0
  259. data/template/resources/images/default/window/icon-error.gif +0 -0
  260. data/template/resources/images/default/window/icon-info.gif +0 -0
  261. data/template/resources/images/default/window/icon-question.gif +0 -0
  262. data/template/resources/images/default/window/icon-warning.gif +0 -0
  263. data/template/resources/images/default/window/left-corners.png +0 -0
  264. data/template/resources/images/default/window/left-corners.psd +0 -0
  265. data/template/resources/images/default/window/left-right.png +0 -0
  266. data/template/resources/images/default/window/left-right.psd +0 -0
  267. data/template/resources/images/default/window/right-corners.png +0 -0
  268. data/template/resources/images/default/window/right-corners.psd +0 -0
  269. data/template/resources/images/default/window/top-bottom.png +0 -0
  270. data/template/resources/images/default/window/top-bottom.psd +0 -0
  271. data/template/resources/images/gray/button/btn-arrow.gif +0 -0
  272. data/template/resources/images/gray/button/btn-sprite.gif +0 -0
  273. data/template/resources/images/gray/button/btn.gif +0 -0
  274. data/template/resources/images/gray/button/group-cs.gif +0 -0
  275. data/template/resources/images/gray/button/group-lr.gif +0 -0
  276. data/template/resources/images/gray/button/group-tb.gif +0 -0
  277. data/template/resources/images/gray/button/s-arrow-bo.gif +0 -0
  278. data/template/resources/images/gray/button/s-arrow-o.gif +0 -0
  279. data/template/resources/images/gray/form/clear-trigger.gif +0 -0
  280. data/template/resources/images/gray/form/date-trigger.gif +0 -0
  281. data/template/resources/images/gray/form/search-trigger.gif +0 -0
  282. data/template/resources/images/gray/form/trigger-square.gif +0 -0
  283. data/template/resources/images/gray/form/trigger.gif +0 -0
  284. data/template/resources/images/gray/gradient-bg.gif +0 -0
  285. data/template/resources/images/gray/grid/col-move-bottom.gif +0 -0
  286. data/template/resources/images/gray/grid/col-move-top.gif +0 -0
  287. data/template/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
  288. data/template/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
  289. data/template/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
  290. data/template/resources/images/gray/grid/grid3-hrow.gif +0 -0
  291. data/template/resources/images/gray/grid/grid3-hrow2.gif +0 -0
  292. data/template/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
  293. data/template/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
  294. data/template/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
  295. data/template/resources/images/gray/grid/group-collapse.gif +0 -0
  296. data/template/resources/images/gray/grid/group-expand-sprite.gif +0 -0
  297. data/template/resources/images/gray/grid/group-expand.gif +0 -0
  298. data/template/resources/images/gray/grid/page-first.gif +0 -0
  299. data/template/resources/images/gray/grid/page-last.gif +0 -0
  300. data/template/resources/images/gray/grid/page-next.gif +0 -0
  301. data/template/resources/images/gray/grid/page-prev.gif +0 -0
  302. data/template/resources/images/gray/grid/refresh.gif +0 -0
  303. data/template/resources/images/gray/grid/row-expand-sprite.gif +0 -0
  304. data/template/resources/images/gray/grid/sort_asc.gif +0 -0
  305. data/template/resources/images/gray/grid/sort_desc.gif +0 -0
  306. data/template/resources/images/gray/menu/group-checked.gif +0 -0
  307. data/template/resources/images/gray/menu/item-over-disabled.gif +0 -0
  308. data/template/resources/images/gray/menu/item-over.gif +0 -0
  309. data/template/resources/images/gray/menu/menu-parent.gif +0 -0
  310. data/template/resources/images/gray/panel/corners-sprite.gif +0 -0
  311. data/template/resources/images/gray/panel/left-right.gif +0 -0
  312. data/template/resources/images/gray/panel/light-hd.gif +0 -0
  313. data/template/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
  314. data/template/resources/images/gray/panel/tool-sprites.gif +0 -0
  315. data/template/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
  316. data/template/resources/images/gray/panel/top-bottom.gif +0 -0
  317. data/template/resources/images/gray/panel/top-bottom.png +0 -0
  318. data/template/resources/images/gray/panel/white-corners-sprite.gif +0 -0
  319. data/template/resources/images/gray/panel/white-left-right.gif +0 -0
  320. data/template/resources/images/gray/panel/white-top-bottom.gif +0 -0
  321. data/template/resources/images/gray/progress/progress-bg.gif +0 -0
  322. data/template/resources/images/gray/qtip/bg.gif +0 -0
  323. data/template/resources/images/gray/qtip/close.gif +0 -0
  324. data/template/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
  325. data/template/resources/images/gray/qtip/tip-sprite.gif +0 -0
  326. data/template/resources/images/gray/s.gif +0 -0
  327. data/template/resources/images/gray/shared/hd-sprite.gif +0 -0
  328. data/template/resources/images/gray/shared/left-btn.gif +0 -0
  329. data/template/resources/images/gray/shared/right-btn.gif +0 -0
  330. data/template/resources/images/gray/sizer/e-handle.gif +0 -0
  331. data/template/resources/images/gray/sizer/ne-handle.gif +0 -0
  332. data/template/resources/images/gray/sizer/nw-handle.gif +0 -0
  333. data/template/resources/images/gray/sizer/s-handle.gif +0 -0
  334. data/template/resources/images/gray/sizer/se-handle.gif +0 -0
  335. data/template/resources/images/gray/sizer/square.gif +0 -0
  336. data/template/resources/images/gray/sizer/sw-handle.gif +0 -0
  337. data/template/resources/images/gray/slider/slider-thumb.png +0 -0
  338. data/template/resources/images/gray/slider/slider-v-thumb.png +0 -0
  339. data/template/resources/images/gray/tabs/scroll-left.gif +0 -0
  340. data/template/resources/images/gray/tabs/scroll-right.gif +0 -0
  341. data/template/resources/images/gray/tabs/scroller-bg.gif +0 -0
  342. data/template/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
  343. data/template/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
  344. data/template/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
  345. data/template/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
  346. data/template/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
  347. data/template/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
  348. data/template/resources/images/gray/tabs/tab-close.gif +0 -0
  349. data/template/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
  350. data/template/resources/images/gray/tabs/tab-strip-bg.png +0 -0
  351. data/template/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
  352. data/template/resources/images/gray/tabs/tabs-sprite.gif +0 -0
  353. data/template/resources/images/gray/toolbar/bg.gif +0 -0
  354. data/template/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
  355. data/template/resources/images/gray/toolbar/btn-arrow.gif +0 -0
  356. data/template/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
  357. data/template/resources/images/gray/toolbar/gray-bg.gif +0 -0
  358. data/template/resources/images/gray/toolbar/more.gif +0 -0
  359. data/template/resources/images/gray/toolbar/tb-bg.gif +0 -0
  360. data/template/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
  361. data/template/resources/images/gray/tree/arrows.gif +0 -0
  362. data/template/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
  363. data/template/resources/images/gray/tree/elbow-end-minus.gif +0 -0
  364. data/template/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
  365. data/template/resources/images/gray/tree/elbow-end-plus.gif +0 -0
  366. data/template/resources/images/gray/window/icon-error.gif +0 -0
  367. data/template/resources/images/gray/window/icon-info.gif +0 -0
  368. data/template/resources/images/gray/window/icon-question.gif +0 -0
  369. data/template/resources/images/gray/window/icon-warning.gif +0 -0
  370. data/template/resources/images/gray/window/left-corners.png +0 -0
  371. data/template/resources/images/gray/window/left-corners.pspimage +0 -0
  372. data/template/resources/images/gray/window/left-right.png +0 -0
  373. data/template/resources/images/gray/window/right-corners.png +0 -0
  374. data/template/resources/images/gray/window/top-bottom.png +0 -0
  375. data/template/resources/inherited.gif +0 -0
  376. data/template/resources/member-collapsed.gif +0 -0
  377. data/template/resources/member-expanded.gif +0 -0
  378. data/template/resources/member-hover.gif +0 -0
  379. data/template/resources/method.gif +0 -0
  380. data/template/resources/pkg-closed.gif +0 -0
  381. data/template/resources/pkg-open.gif +0 -0
  382. data/template/resources/pkg.gif +0 -0
  383. data/template/resources/prop.gif +0 -0
  384. data/template/resources/s.gif +0 -0
  385. data/template/resources/static.gif +0 -0
  386. data/template/resources/style.css +302 -0
  387. data/template/welcome.html +45 -0
  388. 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
@@ -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
@@ -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'>&nbsp;</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