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.
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,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
@@ -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