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