jsduck 0.6.1 → 2.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (453) hide show
  1. data/.gitignore +4 -0
  2. data/README.md +35 -13
  3. data/Rakefile +129 -0
  4. data/bin/jsduck +112 -20
  5. data/jsduck.gemspec +10 -7
  6. data/lib/jsduck/aggregator.rb +46 -20
  7. data/lib/jsduck/aliases.rb +39 -0
  8. data/lib/jsduck/app.rb +123 -51
  9. data/lib/jsduck/categories.rb +132 -0
  10. data/lib/jsduck/class.rb +71 -18
  11. data/lib/jsduck/doc_formatter.rb +61 -26
  12. data/lib/jsduck/doc_parser.rb +53 -2
  13. data/lib/jsduck/exporter.rb +14 -15
  14. data/lib/jsduck/guides.rb +110 -0
  15. data/lib/jsduck/js_parser.rb +18 -4
  16. data/lib/jsduck/jsonp.rb +17 -0
  17. data/lib/jsduck/logger.rb +36 -0
  18. data/lib/jsduck/merger.rb +69 -51
  19. data/lib/jsduck/page.rb +1 -1
  20. data/lib/jsduck/relations.rb +14 -3
  21. data/lib/jsduck/{members.rb → search_data.rb} +3 -28
  22. data/lib/jsduck/source_file.rb +4 -4
  23. data/lib/jsduck/source_writer.rb +2 -2
  24. data/lib/jsduck/timer.rb +6 -2
  25. data/lib/jsduck/tree.rb +29 -16
  26. data/lib/jsduck/tree_icons.rb +1 -1
  27. data/template/README.md +14 -0
  28. data/template/app.js +25 -0
  29. data/template/app/Application.js +53 -0
  30. data/template/app/Favorites.js +88 -0
  31. data/template/app/History.js +45 -0
  32. data/template/app/LocalStore.js +45 -0
  33. data/template/app/Settings.js +39 -0
  34. data/template/app/Syntax.js +20 -0
  35. data/template/app/controller/Classes.js +301 -0
  36. data/template/app/controller/Search.js +156 -0
  37. data/template/app/model/Favorite.js +11 -0
  38. data/template/app/model/Setting.js +11 -0
  39. data/template/app/store/Favorites.js +7 -0
  40. data/template/app/store/Search.js +14 -0
  41. data/template/app/store/Settings.js +7 -0
  42. data/template/app/view/ClassGrid.js +109 -0
  43. data/template/app/view/HoverMenu.js +59 -0
  44. data/template/app/view/HoverMenuButton.js +147 -0
  45. data/template/app/view/Viewport.js +240 -0
  46. data/template/app/view/cls/Header.js +47 -0
  47. data/template/app/view/cls/Overview.js +415 -0
  48. data/template/app/view/cls/Toolbar.js +199 -0
  49. data/template/app/view/index/Container.js +63 -0
  50. data/template/app/view/search/Dropdown.js +53 -0
  51. data/template/app/view/tree/Tree.js +133 -0
  52. data/template/favicon.ico +0 -0
  53. data/template/index.html +32 -37
  54. data/template/{resources/prettify → prettify}/prettify.css +0 -0
  55. data/template/{resources/prettify → prettify}/prettify.js +0 -0
  56. data/template/resources/images/class-m.png +0 -0
  57. data/template/resources/images/class-sm.png +0 -0
  58. data/template/resources/images/component-m.png +0 -0
  59. data/template/resources/images/configs.png +0 -0
  60. data/template/resources/images/data-package.png +0 -0
  61. data/template/resources/images/doc-m.png +0 -0
  62. data/template/resources/images/drag-bar-center.png +0 -0
  63. data/template/resources/{elbow-end.gif → images/elbow-end.gif} +0 -0
  64. data/template/resources/images/events.png +0 -0
  65. data/template/resources/images/expandcollapse.png +0 -0
  66. data/template/resources/images/guide-icon.png +0 -0
  67. data/template/resources/images/guides.png +0 -0
  68. data/template/resources/images/headBG.png +0 -0
  69. data/template/resources/images/header.gif +0 -0
  70. data/template/resources/images/icon.png +0 -0
  71. data/template/resources/images/icons.png +0 -0
  72. data/template/resources/images/loading-title.png +0 -0
  73. data/template/resources/images/loading.gif +0 -0
  74. data/template/resources/{member-collapsed.gif → images/member-collapsed.gif} +0 -0
  75. data/template/resources/{member-expanded.gif → images/member-expanded.gif} +0 -0
  76. data/template/resources/{member-hover.gif → images/member-hover.gif} +0 -0
  77. data/template/resources/images/methods.png +0 -0
  78. data/template/resources/images/model.png +0 -0
  79. data/template/resources/images/properties.png +0 -0
  80. data/template/resources/images/root-lines.png +0 -0
  81. data/template/resources/images/search-box.png +0 -0
  82. data/template/resources/images/singleton-m.png +0 -0
  83. data/template/resources/images/version-tabs.png +0 -0
  84. data/template/resources/images/x.png +0 -0
  85. data/template/resources/images/x12.png +0 -0
  86. metadata +84 -387
  87. data/lib/jsduck/cfg_table.rb +0 -21
  88. data/lib/jsduck/event_table.rb +0 -33
  89. data/lib/jsduck/inheritance_tree.rb +0 -42
  90. data/lib/jsduck/long_params.rb +0 -30
  91. data/lib/jsduck/method_table.rb +0 -45
  92. data/lib/jsduck/property_table.rb +0 -21
  93. data/lib/jsduck/short_params.rb +0 -24
  94. data/lib/jsduck/table.rb +0 -121
  95. data/template/resources/TabCloseMenu.js +0 -150
  96. data/template/resources/block-bottom.gif +0 -0
  97. data/template/resources/block-top.gif +0 -0
  98. data/template/resources/class.gif +0 -0
  99. data/template/resources/cmp.gif +0 -0
  100. data/template/resources/collapse-all.gif +0 -0
  101. data/template/resources/config.gif +0 -0
  102. data/template/resources/css/ext-all.css +0 -6993
  103. data/template/resources/css/xtheme-gray.css +0 -1654
  104. data/template/resources/docs.css +0 -361
  105. data/template/resources/docs.gif +0 -0
  106. data/template/resources/docs.js +0 -769
  107. data/template/resources/event.gif +0 -0
  108. data/template/resources/expand-all.gif +0 -0
  109. data/template/resources/expand-bg-over.gif +0 -0
  110. data/template/resources/expand-bg.gif +0 -0
  111. data/template/resources/expand-members.gif +0 -0
  112. data/template/resources/ext-all.js +0 -11
  113. data/template/resources/ext-base.js +0 -7
  114. data/template/resources/extanim32.gif +0 -0
  115. data/template/resources/fav.gif +0 -0
  116. data/template/resources/favicon.ico +0 -0
  117. data/template/resources/hd-bg.png +0 -0
  118. data/template/resources/hide-inherited.gif +0 -0
  119. data/template/resources/images/default/box/corners-blue.gif +0 -0
  120. data/template/resources/images/default/box/corners.gif +0 -0
  121. data/template/resources/images/default/box/l-blue.gif +0 -0
  122. data/template/resources/images/default/box/l.gif +0 -0
  123. data/template/resources/images/default/box/r-blue.gif +0 -0
  124. data/template/resources/images/default/box/r.gif +0 -0
  125. data/template/resources/images/default/box/tb-blue.gif +0 -0
  126. data/template/resources/images/default/box/tb.gif +0 -0
  127. data/template/resources/images/default/button/arrow.gif +0 -0
  128. data/template/resources/images/default/button/btn.gif +0 -0
  129. data/template/resources/images/default/button/group-cs.gif +0 -0
  130. data/template/resources/images/default/button/group-lr.gif +0 -0
  131. data/template/resources/images/default/button/group-tb.gif +0 -0
  132. data/template/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  133. data/template/resources/images/default/button/s-arrow-b.gif +0 -0
  134. data/template/resources/images/default/button/s-arrow-bo.gif +0 -0
  135. data/template/resources/images/default/button/s-arrow-noline.gif +0 -0
  136. data/template/resources/images/default/button/s-arrow-o.gif +0 -0
  137. data/template/resources/images/default/button/s-arrow.gif +0 -0
  138. data/template/resources/images/default/dd/drop-add.gif +0 -0
  139. data/template/resources/images/default/dd/drop-no.gif +0 -0
  140. data/template/resources/images/default/dd/drop-yes.gif +0 -0
  141. data/template/resources/images/default/editor/tb-sprite.gif +0 -0
  142. data/template/resources/images/default/form/checkbox.gif +0 -0
  143. data/template/resources/images/default/form/clear-trigger.gif +0 -0
  144. data/template/resources/images/default/form/clear-trigger.psd +0 -0
  145. data/template/resources/images/default/form/date-trigger.gif +0 -0
  146. data/template/resources/images/default/form/date-trigger.psd +0 -0
  147. data/template/resources/images/default/form/error-tip-corners.gif +0 -0
  148. data/template/resources/images/default/form/exclamation.gif +0 -0
  149. data/template/resources/images/default/form/radio.gif +0 -0
  150. data/template/resources/images/default/form/search-trigger.gif +0 -0
  151. data/template/resources/images/default/form/search-trigger.psd +0 -0
  152. data/template/resources/images/default/form/text-bg.gif +0 -0
  153. data/template/resources/images/default/form/trigger-square.gif +0 -0
  154. data/template/resources/images/default/form/trigger-square.psd +0 -0
  155. data/template/resources/images/default/form/trigger-tpl.gif +0 -0
  156. data/template/resources/images/default/form/trigger.gif +0 -0
  157. data/template/resources/images/default/form/trigger.psd +0 -0
  158. data/template/resources/images/default/gradient-bg.gif +0 -0
  159. data/template/resources/images/default/grid/arrow-left-white.gif +0 -0
  160. data/template/resources/images/default/grid/arrow-right-white.gif +0 -0
  161. data/template/resources/images/default/grid/col-move-bottom.gif +0 -0
  162. data/template/resources/images/default/grid/col-move-top.gif +0 -0
  163. data/template/resources/images/default/grid/columns.gif +0 -0
  164. data/template/resources/images/default/grid/dirty.gif +0 -0
  165. data/template/resources/images/default/grid/done.gif +0 -0
  166. data/template/resources/images/default/grid/drop-no.gif +0 -0
  167. data/template/resources/images/default/grid/drop-yes.gif +0 -0
  168. data/template/resources/images/default/grid/footer-bg.gif +0 -0
  169. data/template/resources/images/default/grid/grid-blue-hd.gif +0 -0
  170. data/template/resources/images/default/grid/grid-blue-split.gif +0 -0
  171. data/template/resources/images/default/grid/grid-hrow.gif +0 -0
  172. data/template/resources/images/default/grid/grid-loading.gif +0 -0
  173. data/template/resources/images/default/grid/grid-split.gif +0 -0
  174. data/template/resources/images/default/grid/grid-vista-hd.gif +0 -0
  175. data/template/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  176. data/template/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  177. data/template/resources/images/default/grid/grid3-hrow.gif +0 -0
  178. data/template/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  179. data/template/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  180. data/template/resources/images/default/grid/group-by.gif +0 -0
  181. data/template/resources/images/default/grid/group-collapse.gif +0 -0
  182. data/template/resources/images/default/grid/group-expand-sprite.gif +0 -0
  183. data/template/resources/images/default/grid/group-expand.gif +0 -0
  184. data/template/resources/images/default/grid/hd-pop.gif +0 -0
  185. data/template/resources/images/default/grid/hmenu-asc.gif +0 -0
  186. data/template/resources/images/default/grid/hmenu-desc.gif +0 -0
  187. data/template/resources/images/default/grid/hmenu-lock.gif +0 -0
  188. data/template/resources/images/default/grid/hmenu-lock.png +0 -0
  189. data/template/resources/images/default/grid/hmenu-unlock.gif +0 -0
  190. data/template/resources/images/default/grid/hmenu-unlock.png +0 -0
  191. data/template/resources/images/default/grid/invalid_line.gif +0 -0
  192. data/template/resources/images/default/grid/loading.gif +0 -0
  193. data/template/resources/images/default/grid/mso-hd.gif +0 -0
  194. data/template/resources/images/default/grid/nowait.gif +0 -0
  195. data/template/resources/images/default/grid/page-first-disabled.gif +0 -0
  196. data/template/resources/images/default/grid/page-first.gif +0 -0
  197. data/template/resources/images/default/grid/page-last-disabled.gif +0 -0
  198. data/template/resources/images/default/grid/page-last.gif +0 -0
  199. data/template/resources/images/default/grid/page-next-disabled.gif +0 -0
  200. data/template/resources/images/default/grid/page-next.gif +0 -0
  201. data/template/resources/images/default/grid/page-prev-disabled.gif +0 -0
  202. data/template/resources/images/default/grid/page-prev.gif +0 -0
  203. data/template/resources/images/default/grid/pick-button.gif +0 -0
  204. data/template/resources/images/default/grid/refresh.gif +0 -0
  205. data/template/resources/images/default/grid/row-check-sprite.gif +0 -0
  206. data/template/resources/images/default/grid/row-expand-sprite.gif +0 -0
  207. data/template/resources/images/default/grid/row-over.gif +0 -0
  208. data/template/resources/images/default/grid/row-sel.gif +0 -0
  209. data/template/resources/images/default/grid/sort-hd.gif +0 -0
  210. data/template/resources/images/default/grid/sort_asc.gif +0 -0
  211. data/template/resources/images/default/grid/sort_desc.gif +0 -0
  212. data/template/resources/images/default/grid/wait.gif +0 -0
  213. data/template/resources/images/default/layout/collapse.gif +0 -0
  214. data/template/resources/images/default/layout/expand.gif +0 -0
  215. data/template/resources/images/default/layout/gradient-bg.gif +0 -0
  216. data/template/resources/images/default/layout/mini-bottom.gif +0 -0
  217. data/template/resources/images/default/layout/mini-left.gif +0 -0
  218. data/template/resources/images/default/layout/mini-right.gif +0 -0
  219. data/template/resources/images/default/layout/mini-top.gif +0 -0
  220. data/template/resources/images/default/layout/ns-collapse.gif +0 -0
  221. data/template/resources/images/default/layout/ns-expand.gif +0 -0
  222. data/template/resources/images/default/layout/panel-close.gif +0 -0
  223. data/template/resources/images/default/layout/panel-title-bg.gif +0 -0
  224. data/template/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  225. data/template/resources/images/default/layout/stick.gif +0 -0
  226. data/template/resources/images/default/layout/stuck.gif +0 -0
  227. data/template/resources/images/default/layout/tab-close-on.gif +0 -0
  228. data/template/resources/images/default/layout/tab-close.gif +0 -0
  229. data/template/resources/images/default/menu/checked.gif +0 -0
  230. data/template/resources/images/default/menu/group-checked.gif +0 -0
  231. data/template/resources/images/default/menu/item-over.gif +0 -0
  232. data/template/resources/images/default/menu/menu-parent.gif +0 -0
  233. data/template/resources/images/default/menu/menu.gif +0 -0
  234. data/template/resources/images/default/menu/unchecked.gif +0 -0
  235. data/template/resources/images/default/panel/corners-sprite.gif +0 -0
  236. data/template/resources/images/default/panel/left-right.gif +0 -0
  237. data/template/resources/images/default/panel/light-hd.gif +0 -0
  238. data/template/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  239. data/template/resources/images/default/panel/tool-sprites.gif +0 -0
  240. data/template/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  241. data/template/resources/images/default/panel/top-bottom.gif +0 -0
  242. data/template/resources/images/default/panel/top-bottom.png +0 -0
  243. data/template/resources/images/default/panel/white-corners-sprite.gif +0 -0
  244. data/template/resources/images/default/panel/white-left-right.gif +0 -0
  245. data/template/resources/images/default/panel/white-top-bottom.gif +0 -0
  246. data/template/resources/images/default/progress/progress-bg.gif +0 -0
  247. data/template/resources/images/default/qtip/bg.gif +0 -0
  248. data/template/resources/images/default/qtip/close.gif +0 -0
  249. data/template/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  250. data/template/resources/images/default/qtip/tip-sprite.gif +0 -0
  251. data/template/resources/images/default/s.gif +0 -0
  252. data/template/resources/images/default/shadow-c.png +0 -0
  253. data/template/resources/images/default/shadow-lr.png +0 -0
  254. data/template/resources/images/default/shadow.png +0 -0
  255. data/template/resources/images/default/shared/blue-loading.gif +0 -0
  256. data/template/resources/images/default/shared/calendar.gif +0 -0
  257. data/template/resources/images/default/shared/glass-bg.gif +0 -0
  258. data/template/resources/images/default/shared/hd-sprite.gif +0 -0
  259. data/template/resources/images/default/shared/large-loading.gif +0 -0
  260. data/template/resources/images/default/shared/left-btn.gif +0 -0
  261. data/template/resources/images/default/shared/loading-balls.gif +0 -0
  262. data/template/resources/images/default/shared/right-btn.gif +0 -0
  263. data/template/resources/images/default/shared/warning.gif +0 -0
  264. data/template/resources/images/default/sizer/e-handle-dark.gif +0 -0
  265. data/template/resources/images/default/sizer/e-handle.gif +0 -0
  266. data/template/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  267. data/template/resources/images/default/sizer/ne-handle.gif +0 -0
  268. data/template/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  269. data/template/resources/images/default/sizer/nw-handle.gif +0 -0
  270. data/template/resources/images/default/sizer/s-handle-dark.gif +0 -0
  271. data/template/resources/images/default/sizer/s-handle.gif +0 -0
  272. data/template/resources/images/default/sizer/se-handle-dark.gif +0 -0
  273. data/template/resources/images/default/sizer/se-handle.gif +0 -0
  274. data/template/resources/images/default/sizer/square.gif +0 -0
  275. data/template/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  276. data/template/resources/images/default/sizer/sw-handle.gif +0 -0
  277. data/template/resources/images/default/slider/slider-bg.png +0 -0
  278. data/template/resources/images/default/slider/slider-thumb.png +0 -0
  279. data/template/resources/images/default/slider/slider-v-bg.png +0 -0
  280. data/template/resources/images/default/slider/slider-v-thumb.png +0 -0
  281. data/template/resources/images/default/tabs/scroll-left.gif +0 -0
  282. data/template/resources/images/default/tabs/scroll-right.gif +0 -0
  283. data/template/resources/images/default/tabs/scroller-bg.gif +0 -0
  284. data/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  285. data/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  286. data/template/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  287. data/template/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
  288. data/template/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
  289. data/template/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  290. data/template/resources/images/default/tabs/tab-close.gif +0 -0
  291. data/template/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  292. data/template/resources/images/default/tabs/tab-strip-bg.png +0 -0
  293. data/template/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  294. data/template/resources/images/default/tabs/tabs-sprite.gif +0 -0
  295. data/template/resources/images/default/toolbar/bg.gif +0 -0
  296. data/template/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  297. data/template/resources/images/default/toolbar/btn-arrow.gif +0 -0
  298. data/template/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  299. data/template/resources/images/default/toolbar/gray-bg.gif +0 -0
  300. data/template/resources/images/default/toolbar/more.gif +0 -0
  301. data/template/resources/images/default/toolbar/tb-bg.gif +0 -0
  302. data/template/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  303. data/template/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  304. data/template/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  305. data/template/resources/images/default/tree/arrows.gif +0 -0
  306. data/template/resources/images/default/tree/drop-add.gif +0 -0
  307. data/template/resources/images/default/tree/drop-between.gif +0 -0
  308. data/template/resources/images/default/tree/drop-no.gif +0 -0
  309. data/template/resources/images/default/tree/drop-over.gif +0 -0
  310. data/template/resources/images/default/tree/drop-under.gif +0 -0
  311. data/template/resources/images/default/tree/drop-yes.gif +0 -0
  312. data/template/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  313. data/template/resources/images/default/tree/elbow-end-minus.gif +0 -0
  314. data/template/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  315. data/template/resources/images/default/tree/elbow-end-plus.gif +0 -0
  316. data/template/resources/images/default/tree/elbow-end.gif +0 -0
  317. data/template/resources/images/default/tree/elbow-line.gif +0 -0
  318. data/template/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  319. data/template/resources/images/default/tree/elbow-minus.gif +0 -0
  320. data/template/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  321. data/template/resources/images/default/tree/elbow-plus.gif +0 -0
  322. data/template/resources/images/default/tree/elbow.gif +0 -0
  323. data/template/resources/images/default/tree/folder-open.gif +0 -0
  324. data/template/resources/images/default/tree/folder.gif +0 -0
  325. data/template/resources/images/default/tree/leaf.gif +0 -0
  326. data/template/resources/images/default/tree/loading.gif +0 -0
  327. data/template/resources/images/default/tree/s.gif +0 -0
  328. data/template/resources/images/default/window/icon-error.gif +0 -0
  329. data/template/resources/images/default/window/icon-info.gif +0 -0
  330. data/template/resources/images/default/window/icon-question.gif +0 -0
  331. data/template/resources/images/default/window/icon-warning.gif +0 -0
  332. data/template/resources/images/default/window/left-corners.png +0 -0
  333. data/template/resources/images/default/window/left-corners.psd +0 -0
  334. data/template/resources/images/default/window/left-right.png +0 -0
  335. data/template/resources/images/default/window/left-right.psd +0 -0
  336. data/template/resources/images/default/window/right-corners.png +0 -0
  337. data/template/resources/images/default/window/right-corners.psd +0 -0
  338. data/template/resources/images/default/window/top-bottom.png +0 -0
  339. data/template/resources/images/default/window/top-bottom.psd +0 -0
  340. data/template/resources/images/gray/button/btn-arrow.gif +0 -0
  341. data/template/resources/images/gray/button/btn-sprite.gif +0 -0
  342. data/template/resources/images/gray/button/btn.gif +0 -0
  343. data/template/resources/images/gray/button/group-cs.gif +0 -0
  344. data/template/resources/images/gray/button/group-lr.gif +0 -0
  345. data/template/resources/images/gray/button/group-tb.gif +0 -0
  346. data/template/resources/images/gray/button/s-arrow-bo.gif +0 -0
  347. data/template/resources/images/gray/button/s-arrow-o.gif +0 -0
  348. data/template/resources/images/gray/form/clear-trigger.gif +0 -0
  349. data/template/resources/images/gray/form/date-trigger.gif +0 -0
  350. data/template/resources/images/gray/form/search-trigger.gif +0 -0
  351. data/template/resources/images/gray/form/trigger-square.gif +0 -0
  352. data/template/resources/images/gray/form/trigger.gif +0 -0
  353. data/template/resources/images/gray/gradient-bg.gif +0 -0
  354. data/template/resources/images/gray/grid/col-move-bottom.gif +0 -0
  355. data/template/resources/images/gray/grid/col-move-top.gif +0 -0
  356. data/template/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
  357. data/template/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
  358. data/template/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
  359. data/template/resources/images/gray/grid/grid3-hrow.gif +0 -0
  360. data/template/resources/images/gray/grid/grid3-hrow2.gif +0 -0
  361. data/template/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
  362. data/template/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
  363. data/template/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
  364. data/template/resources/images/gray/grid/group-collapse.gif +0 -0
  365. data/template/resources/images/gray/grid/group-expand-sprite.gif +0 -0
  366. data/template/resources/images/gray/grid/group-expand.gif +0 -0
  367. data/template/resources/images/gray/grid/page-first.gif +0 -0
  368. data/template/resources/images/gray/grid/page-last.gif +0 -0
  369. data/template/resources/images/gray/grid/page-next.gif +0 -0
  370. data/template/resources/images/gray/grid/page-prev.gif +0 -0
  371. data/template/resources/images/gray/grid/refresh.gif +0 -0
  372. data/template/resources/images/gray/grid/row-expand-sprite.gif +0 -0
  373. data/template/resources/images/gray/grid/sort_asc.gif +0 -0
  374. data/template/resources/images/gray/grid/sort_desc.gif +0 -0
  375. data/template/resources/images/gray/menu/group-checked.gif +0 -0
  376. data/template/resources/images/gray/menu/item-over-disabled.gif +0 -0
  377. data/template/resources/images/gray/menu/item-over.gif +0 -0
  378. data/template/resources/images/gray/menu/menu-parent.gif +0 -0
  379. data/template/resources/images/gray/panel/corners-sprite.gif +0 -0
  380. data/template/resources/images/gray/panel/left-right.gif +0 -0
  381. data/template/resources/images/gray/panel/light-hd.gif +0 -0
  382. data/template/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
  383. data/template/resources/images/gray/panel/tool-sprites.gif +0 -0
  384. data/template/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
  385. data/template/resources/images/gray/panel/top-bottom.gif +0 -0
  386. data/template/resources/images/gray/panel/top-bottom.png +0 -0
  387. data/template/resources/images/gray/panel/white-corners-sprite.gif +0 -0
  388. data/template/resources/images/gray/panel/white-left-right.gif +0 -0
  389. data/template/resources/images/gray/panel/white-top-bottom.gif +0 -0
  390. data/template/resources/images/gray/progress/progress-bg.gif +0 -0
  391. data/template/resources/images/gray/qtip/bg.gif +0 -0
  392. data/template/resources/images/gray/qtip/close.gif +0 -0
  393. data/template/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
  394. data/template/resources/images/gray/qtip/tip-sprite.gif +0 -0
  395. data/template/resources/images/gray/s.gif +0 -0
  396. data/template/resources/images/gray/shared/hd-sprite.gif +0 -0
  397. data/template/resources/images/gray/shared/left-btn.gif +0 -0
  398. data/template/resources/images/gray/shared/right-btn.gif +0 -0
  399. data/template/resources/images/gray/sizer/e-handle.gif +0 -0
  400. data/template/resources/images/gray/sizer/ne-handle.gif +0 -0
  401. data/template/resources/images/gray/sizer/nw-handle.gif +0 -0
  402. data/template/resources/images/gray/sizer/s-handle.gif +0 -0
  403. data/template/resources/images/gray/sizer/se-handle.gif +0 -0
  404. data/template/resources/images/gray/sizer/square.gif +0 -0
  405. data/template/resources/images/gray/sizer/sw-handle.gif +0 -0
  406. data/template/resources/images/gray/slider/slider-thumb.png +0 -0
  407. data/template/resources/images/gray/slider/slider-v-thumb.png +0 -0
  408. data/template/resources/images/gray/tabs/scroll-left.gif +0 -0
  409. data/template/resources/images/gray/tabs/scroll-right.gif +0 -0
  410. data/template/resources/images/gray/tabs/scroller-bg.gif +0 -0
  411. data/template/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
  412. data/template/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
  413. data/template/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
  414. data/template/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
  415. data/template/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
  416. data/template/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
  417. data/template/resources/images/gray/tabs/tab-close.gif +0 -0
  418. data/template/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
  419. data/template/resources/images/gray/tabs/tab-strip-bg.png +0 -0
  420. data/template/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
  421. data/template/resources/images/gray/tabs/tabs-sprite.gif +0 -0
  422. data/template/resources/images/gray/toolbar/bg.gif +0 -0
  423. data/template/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
  424. data/template/resources/images/gray/toolbar/btn-arrow.gif +0 -0
  425. data/template/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
  426. data/template/resources/images/gray/toolbar/gray-bg.gif +0 -0
  427. data/template/resources/images/gray/toolbar/more.gif +0 -0
  428. data/template/resources/images/gray/toolbar/tb-bg.gif +0 -0
  429. data/template/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
  430. data/template/resources/images/gray/tree/arrows.gif +0 -0
  431. data/template/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
  432. data/template/resources/images/gray/tree/elbow-end-minus.gif +0 -0
  433. data/template/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
  434. data/template/resources/images/gray/tree/elbow-end-plus.gif +0 -0
  435. data/template/resources/images/gray/window/icon-error.gif +0 -0
  436. data/template/resources/images/gray/window/icon-info.gif +0 -0
  437. data/template/resources/images/gray/window/icon-question.gif +0 -0
  438. data/template/resources/images/gray/window/icon-warning.gif +0 -0
  439. data/template/resources/images/gray/window/left-corners.png +0 -0
  440. data/template/resources/images/gray/window/left-corners.pspimage +0 -0
  441. data/template/resources/images/gray/window/left-right.png +0 -0
  442. data/template/resources/images/gray/window/right-corners.png +0 -0
  443. data/template/resources/images/gray/window/top-bottom.png +0 -0
  444. data/template/resources/inherited.gif +0 -0
  445. data/template/resources/method.gif +0 -0
  446. data/template/resources/pkg-closed.gif +0 -0
  447. data/template/resources/pkg-open.gif +0 -0
  448. data/template/resources/pkg.gif +0 -0
  449. data/template/resources/prop.gif +0 -0
  450. data/template/resources/s.gif +0 -0
  451. data/template/resources/static.gif +0 -0
  452. data/template/resources/style.css +0 -291
  453. data/template/welcome.html +0 -45
data/.gitignore CHANGED
@@ -1 +1,5 @@
1
1
  *.gem
2
+ template/extjs
3
+ template/resources/css
4
+ template/resources/sass/.sass-cache
5
+ sdk-vars.rb
data/README.md CHANGED
@@ -102,7 +102,7 @@ Standard rubygems install should do:
102
102
 
103
103
  For hacking fork it from github.
104
104
 
105
- $ git clone git://github.com/nene/jsduck.git
105
+ $ git clone git://github.com/senchalabs/jsduck.git
106
106
  $ cd jsduck
107
107
  $ rake --tasks
108
108
 
@@ -152,20 +152,20 @@ Documentation
152
152
 
153
153
  Overview of documenting your code with JsDuck:
154
154
 
155
- * [Class](https://github.com/nene/jsduck/wiki/Class)
156
- * [Constructor](https://github.com/nene/jsduck/wiki/Constructor)
157
- * [Config options](https://github.com/nene/jsduck/wiki/Cfg)
158
- * [Properties](https://github.com/nene/jsduck/wiki/Property)
159
- * [Methods](https://github.com/nene/jsduck/wiki/Method)
160
- * [Events](https://github.com/nene/jsduck/wiki/Event)
155
+ * [Class](https://github.com/senchalabs/jsduck/wiki/Class)
156
+ * [Constructor](https://github.com/senchalabs/jsduck/wiki/Constructor)
157
+ * [Config options](https://github.com/senchalabs/jsduck/wiki/Cfg)
158
+ * [Properties](https://github.com/senchalabs/jsduck/wiki/Property)
159
+ * [Methods](https://github.com/senchalabs/jsduck/wiki/Method)
160
+ * [Events](https://github.com/senchalabs/jsduck/wiki/Event)
161
161
 
162
162
  More details:
163
163
 
164
164
  * [List of supported @tags][tags]
165
165
  * [List of doc-comment errors(?) found in ExtJS source][errors]
166
166
 
167
- [tags]: https://github.com/nene/jsduck/wiki/List-of-supported-@tags
168
- [errors]: https://github.com/nene/jsduck/wiki/List-of-doc-comment-errors(%3F)-found-in-ExtJS-source
167
+ [tags]: https://github.com/senchalabs/jsduck/wiki/List-of-supported-@tags
168
+ [errors]: https://github.com/senchalabs/jsduck/wiki/List-of-doc-comment-errors(%3F)-found-in-ExtJS-source
169
169
 
170
170
 
171
171
  Features and differences from ext-doc
@@ -204,10 +204,30 @@ and [Nick Poulden](https://github.com/nick).
204
204
  Changelog
205
205
  ---------
206
206
 
207
- * 0.6.1 - Bug fixes.
208
- * Fix scrolling to class members in Chrome 12.
209
- * Make JSDuck work with Ruby 1.8.6.
210
- * Upgrade the embedded ExtJS to 3.4.0.
207
+ * 2.0.pre - Prerelease of the Ext4-themed version. Generates docs in
208
+ exactly the same style as the official ExtJS4 docs. Lots and lots
209
+ of changes. But also possibly several bugs. Use the --pre option
210
+ to install:
211
+
212
+ $ gem install --pre jsduck
213
+
214
+ To run it on ExtJS4:
215
+
216
+ $ jsduck --output your/docs/ ext-4.0.2a/src --ignore-global
217
+
218
+ This will generate a lot of warnings. Those should be fixed in some
219
+ upcoming release of ExtJS4. You can disable them with `--no-warnings`.
220
+ Additionally you will need to copy over the images:
221
+
222
+ $ cp -r ext-4.0.2a/docs/doc-resources your/docs/doc-resources
223
+
224
+ You can also get the class-listing to the main page by downloading
225
+ [overviewData.json][] and passing it to JSDuck with:
226
+
227
+ --categories overviewData.json
228
+
229
+ This file should in the future be found inside the ExtJS4 release,
230
+ along with the source code for guides.
211
231
 
212
232
  * 0.6 - JsDuck is now used for creating the official ExtJS4 documentation.
213
233
  * Automatic linking of class names found in comments. Instead of writing
@@ -265,3 +285,5 @@ Changelog
265
285
  * List of subclasses
266
286
 
267
287
  * 0.1 - initial version.
288
+
289
+ [overviewData.json]: https://raw.github.com/senchalabs/jsduck/3ee0653554da1ddc54576e7df442d08c9a6d22fd/template/overviewData.json
data/Rakefile CHANGED
@@ -20,4 +20,133 @@ task :install => :build do
20
20
  system "gem install --user-install jsduck"
21
21
  end
22
22
 
23
+ def load_sdk_vars
24
+ if File.exists?("sdk-vars.rb")
25
+ require "sdk-vars.rb"
26
+ else
27
+ puts "Error: sdk-vars.rb not found."
28
+ puts
29
+ puts "Please create file sdk-vars.rb and define constants SDK_DIR and OUT_DIR in it."
30
+ puts
31
+ puts "For example:"
32
+ puts
33
+ puts " SDK_DIR='/path/to/SDK'"
34
+ puts " OUT_DIR='/path/to/ouput/dir'"
35
+ puts " EXT_DIR='/path/to/ext/dir'"
36
+ exit 1
37
+ end
38
+ end
39
+
40
+ def run_jsduck(extra_options)
41
+ # Pass multiple arguments to system, so we'll take advantage of the built-in escaping
42
+ system(*[
43
+ "ruby", "bin/jsduck",
44
+ # --external=Error to ignore the Error class that Ext.Error extends.
45
+ "--external", "Error",
46
+ "--guides", "#{SDK_DIR}/guides",
47
+ "--guides-order", "getting,class,application,layouts,data,grid,tree,drawing,forms,components,theming,direct",
48
+ "--categories", "#{SDK_DIR}/extjs/doc-resources/categories.json",
49
+ "--output", "#{OUT_DIR}",
50
+ ].concat(extra_options))
51
+
52
+ # Finally copy over the images that documentation links to.
53
+ system "cp -r #{SDK_DIR}/extjs/doc-resources #{OUT_DIR}/doc-resources"
54
+ system "cp -r #{SDK_DIR}/platform/doc-resources/* #{OUT_DIR}/doc-resources"
55
+ end
56
+
57
+ desc "Run JSDuck on ExtJS SDK"
58
+ task :sdk do
59
+ load_sdk_vars
60
+ run_jsduck([
61
+ "--extjs-path", "extjs/ext-debug.js",
62
+ # to create symbolic links to template files instead of copying them over.
63
+ # Useful for development. Turn off for deployment.
64
+ "--template-links",
65
+ "#{SDK_DIR}/extjs/src",
66
+ "#{SDK_DIR}/platform/src",
67
+ "#{SDK_DIR}/platform/core/src",
68
+ ])
69
+ end
70
+
71
+ def run_jsduck_export(extra_options, ext_dir)
72
+ load_sdk_vars
73
+ rev = `git rev-parse HEAD`.slice(0, 7)
74
+
75
+ run_jsduck([
76
+ "--title", "Ext JS 4.0.2a API Documentation",
77
+ "--footer", "ExtJS 4.0.2a Documentation from Sencha. Generated with <a href='https://github.com/nene/jsduck'>JSDuck</a> revison #{rev}",
78
+ "#{SDK_DIR}/extjs/src",
79
+ "#{SDK_DIR}/platform/src",
80
+ "#{SDK_DIR}/platform/core/src",
81
+ ].concat(extra_options))
82
+
83
+ system "rm #{OUT_DIR}/extjs"
84
+ system "mkdir -p #{OUT_DIR}/extjs/resources/themes/images"
85
+ system "cp #{EXT_DIR}/ext-all.js #{OUT_DIR}/extjs"
86
+ system "cp -r #{ext_dir}/resources/themes/images/default #{OUT_DIR}/extjs/resources/themes/images"
87
+ system "rm -rf #{ext_dir}/resources/sass"
88
+ system "rm -rf #{OUT_DIR}/resources/.sass-cache"
89
+ end
90
+
91
+ desc "Run JSDuck on ExtJS SDK to create release version of docs app"
92
+ task :export do
93
+ load_sdk_vars
94
+ run_jsduck_export([
95
+ "--append-html", <<-EOHTML
96
+ <div id="notice-text" style="display: none">
97
+ Use <a href="http://docs.sencha.com/ext-js/4-0">http://docs.sencha.com/ext-js/4-0</a> for up to date documentation and features
98
+ </div>
99
+ EOHTML
100
+ ], EXT_DIR)
101
+ end
102
+
103
+ desc "Run JSDuck on ExtJS SDK to create live docs app"
104
+ task :live_docs do
105
+ load_sdk_vars
106
+ run_jsduck_export([
107
+ "--append-html", <<-EOHTML
108
+ <script type="text/javascript">
109
+ var _gaq = _gaq || [];
110
+ _gaq.push(['_setAccount', 'UA-1396058-10']);
111
+ _gaq.push(['_trackPageview']);
112
+ (function() {
113
+ var ga = document.createElement('script');
114
+ ga.type = 'text/javascript';
115
+ ga.async = true;
116
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
117
+ var s = document.getElementsByTagName('script')[0];
118
+ s.parentNode.insertBefore(ga, s);
119
+ })();
120
+
121
+ Docs.initEventTracking = function() {
122
+ Docs.App.getController('Classes').addListener({
123
+ showClass: function(cls) {
124
+ _gaq.push(['_trackEvent', 'Classes', 'Show', cls]);
125
+ },
126
+ showMember: function(cls, anchor) {
127
+ _gaq.push(['_trackEvent', 'Classes', 'Member', cls + ' - ' + anchor]);
128
+ },
129
+ showGuide: function(guide) {
130
+ _gaq.push(['_trackEvent', 'Guides', 'Show', guide]);
131
+ }
132
+ });
133
+ }
134
+ </script>
135
+ EOHTML
136
+ ], "#{SDK_DIR}/extjs/build/sdk")
137
+ end
138
+
139
+ desc "Run JSDuck on the Docs app itself"
140
+ task :docs do
141
+ load_sdk_vars
142
+ run_jsduck([
143
+ "--template-links",
144
+ "#{SDK_DIR}/extjs/src",
145
+ "#{SDK_DIR}/platform/src",
146
+ "#{SDK_DIR}/platform/core/src",
147
+ "template/app",
148
+ "template/app.js",
149
+ ])
150
+ end
151
+
23
152
  task :default => :spec
data/bin/jsduck CHANGED
@@ -24,57 +24,137 @@ app = JsDuck::App.new
24
24
  app.template_dir = File.dirname(File.dirname(__FILE__)) + "/template"
25
25
 
26
26
  opts = OptionParser.new do | opts |
27
- opts.banner = "Usage: jsduck [options] files/dirs..."
27
+ opts.banner = "Usage: jsduck [options] files/dirs...\n\n"
28
28
 
29
- opts.on('-o', '--output=PATH', "Directory to output all this amazing documentation.") do |path|
29
+ opts.on('-o', '--output=PATH',
30
+ "Directory to output all this amazing documentation.",
31
+ "This option MUST be specified.", " ") do |path|
30
32
  app.output_dir = path
31
33
  end
32
34
 
33
- opts.on('-t', '--template=PATH', "Directory containing doc-browser UI template.") do |path|
34
- app.template_dir = path
35
+ opts.on('--ignore-global', "Turns off the creation of global class.", " ") do
36
+ app.ignore_global = true
35
37
  end
36
38
 
37
- opts.on('--json', "Produces JSON export instead of HTML documentation.") do
38
- app.export = :json
39
+ opts.on('--private-classes', "Include private classes to docs.", " ") do
40
+ app.show_private_classes = true
41
+ end
42
+
43
+ opts.on('--external=CLASSNAME',
44
+ "Declares an external class. When declared as",
45
+ "external, inheriting from this class will not",
46
+ "trigger warnings. Useful when you are extending",
47
+ "a class for which you can not supply source code.", " ") do |classname|
48
+ app.external_classes << classname
49
+ end
50
+
51
+ opts.on('--no-warnings', "Turns off warnings.", " ") do
52
+ app.warnings = false
53
+ end
54
+
55
+ opts.on('-v', '--verbose', "This will fill up your console.", " ") do
56
+ app.verbose = true
39
57
  end
40
58
 
41
- opts.on('--link=TPL', "HTML template for replacing {@link}.",
59
+ opts.separator "Customizing output:"
60
+ opts.separator ""
61
+
62
+ opts.on('--title=TEXT',
63
+ "Custom title for the documentation app.",
64
+ "Defaults to 'ExtJS API Documentation'", " ") do |text|
65
+ app.title = text
66
+ end
67
+
68
+ opts.on('--footer=TEXT',
69
+ "Custom footer text for the documentation app.",
70
+ "Defaults to: 'Generated with JSDuck.'", " ") do |text|
71
+ app.footer = text
72
+ end
73
+
74
+ opts.on('--append-html=HTML', "Extra code to append to the index.html page.", " ") do |html|
75
+ app.append_html = html
76
+ end
77
+
78
+ opts.on('--guides=PATH', "Path to guides directory.",
79
+ "Each subdirectory of that is treated as a guide",
80
+ "and is expectd to contain a REAME.md file,",
81
+ "which will be converted into a README.js.", " ") do |path|
82
+ app.guides_dir = path
83
+ end
84
+
85
+ opts.on('--guides-order=a,b,c', Array,
86
+ "The order in which the guides should appear. When",
87
+ "a guide name is not specified here, it will be excluded.",
88
+ "You don't have to write the whole name of the guide,",
89
+ "just the beginning of it, as long as it's unique.", " ") do |list|
90
+ app.guides_order = list
91
+ end
92
+
93
+ opts.on('--categories=PATH',
94
+ "Path to JSON file which defines categories for classes.", " ") do |path|
95
+ app.categories_path = path
96
+ end
97
+
98
+ opts.on('--link=TPL',
99
+ "HTML template for replacing {@link}.",
42
100
  "Possible placeholders:",
43
101
  "%c - full class name (e.g. 'Ext.Panel')",
44
- "%m - class member name (e.g. 'urlEncode')",
45
- "%M - class member name, prefixed with hash (e.g. '#urlEncode')",
102
+ "%m - class member name prefixed with member type",
103
+ " (e.g. 'method-urlEncode')",
104
+ "%# - inserts '#' if member name present",
105
+ "%- - inserts '-' if member name present",
46
106
  "%a - anchor text for link",
47
- "Default value in export: '<a href=\"%c%M\">%a</a>'") do |tpl|
107
+ "Default is: '<a href=\"#/api/%c%-%m\" rel=\"%c%-%m\" class=\"docClass\">%a</a>'", " ") do |tpl|
48
108
  app.link_tpl = tpl
49
109
  end
50
110
 
51
- opts.on('--img=TPL', "HTML template for replacing {@img}.",
111
+ opts.on('--img=TPL',
112
+ "HTML template for replacing {@img}.",
52
113
  "Possible placeholders:",
53
114
  "%u - URL from @img tag (e.g. 'some/path.png')",
54
115
  "%a - alt text for image",
55
- "Default value in export: '<img src=\"%u\" alt=\"%a\"/>'") do |tpl|
116
+ "Default is: '<p><img src=\"doc-resources/%u\" alt=\"%a\"></p>'", " ") do |tpl|
56
117
  app.img_tpl = tpl
57
118
  end
58
119
 
120
+ opts.on('--json', "Produces JSON export instead of HTML documentation.", " ") do
121
+ app.export = :json
122
+ end
123
+
124
+ opts.separator "Debugging:"
125
+ opts.separator ""
126
+
59
127
  # For debugging it's often useful to set --processes=0 to get deterministic results.
60
- opts.on('-p', '--processes=COUNT', "The number of parallel processes to use.",
128
+ opts.on('-p', '--processes=COUNT',
129
+ "The number of parallel processes to use.",
61
130
  "Defaults to the number of processors/cores.",
62
- "Set to 0 to disable parallel processing completely.") do |count|
131
+ "Set to 0 to disable parallel processing completely.", " ") do |count|
63
132
  app.processes = count.to_i
64
133
  end
65
134
 
66
- opts.on('--ignore-global', "Turns off the creation of global class.") do
67
- app.ignore_global = true
135
+ opts.on('--template=PATH',
136
+ "Directory containing doc-browser UI template.", " ") do |path|
137
+ app.template_dir = path
68
138
  end
69
139
 
70
- opts.on('-v', '--verbose', "This will fill up your console.") do
71
- app.verbose = true
140
+ opts.on('--template-links',
141
+ "Instead of copying template files, create symbolic",
142
+ "links. Useful for template files development.",
143
+ "Only works on platforms supporting symbolic links.", " ") do
144
+ app.template_links = true
145
+ end
146
+
147
+ opts.on('--extjs-path=PATH',
148
+ "Path for main ExtJS JavaScript file. Useful for specifying",
149
+ "something different than extjs/ext-all.js", " ") do |path|
150
+ app.extjs_path = path
72
151
  end
73
152
 
74
- opts.on('-h', '--help', "Prints this help message") do
153
+ opts.on('-h', '--help', "Prints this help message", " ") do
75
154
  puts opts
76
155
  exit
77
156
  end
157
+
78
158
  end
79
159
 
80
160
  js_files = []
@@ -102,7 +182,19 @@ elsif File.exists?(app.output_dir) && !File.directory?(app.output_dir)
102
182
  puts "Oh noes! The output directory is not really a directory at all :("
103
183
  exit(1)
104
184
  elsif !File.exists?(File.dirname(app.output_dir))
105
- puts "Oh noes! The parent directory for #{output_dir} doesn't exist."
185
+ puts "Oh noes! The parent directory for #{app.output_dir} doesn't exist."
186
+ exit(1)
187
+ elsif !File.exists?(app.template_dir + "/extjs")
188
+ puts "Oh noes! The template directory does not contain extjs/ directory :("
189
+ puts "Please copy ExtJS over to template/extjs or create symlink."
190
+ puts "For example:"
191
+ puts " $ cp -r /path/to/ext-4.0.0 " + app.template_dir + "/extjs"
192
+ exit(1)
193
+ elsif !File.exists?(app.template_dir + "/resources/css")
194
+ puts "Oh noes! CSS files for custom ExtJS theme missing :("
195
+ puts "Please compile SASS files in template/resources/sass with compass."
196
+ puts "For example:"
197
+ puts " $ compass compile " + app.template_dir + "/resources/sass"
106
198
  exit(1)
107
199
  end
108
200
 
@@ -2,18 +2,21 @@ Gem::Specification.new do |s|
2
2
  s.required_rubygems_version = ">= 1.3.7"
3
3
 
4
4
  s.name = 'jsduck'
5
- s.version = '0.6.1'
6
- s.date = '2011-07-07'
5
+ s.version = '2.0.pre'
6
+ s.date = '2011-06-30'
7
7
  s.summary = "Simple JavaScript Duckumentation generator"
8
- s.description = "Better ext-doc like JavaScript documentation generator for ExtJS"
9
- s.homepage = "https://github.com/nene/jsduck"
10
- s.authors = ["Rene Saarsoo"]
11
- s.email = "nene@triin.net"
8
+ s.description = "Documentation generator for ExtJS 4"
9
+ s.homepage = "https://github.com/senchalabs/jsduck"
10
+ s.authors = ["Rene Saarsoo", "Nick Poulden"]
11
+ s.email = "rene.saarsoo@sencha.com"
12
12
  s.rubyforge_project = s.name
13
13
 
14
14
  s.files = `git ls-files`.split("\n").find_all do |file|
15
- file !~ /spec.rb$/ && file !~ /benchmark/
15
+ file !~ /spec.rb$/ && file !~ /benchmark/ && file !~ /resources\/sass/
16
16
  end
17
+ # Add files not in git
18
+ s.files += ['template/extjs/ext-all.js']
19
+ s.files += Dir['template/resources/css/*.css']
17
20
 
18
21
  s.executables = ["jsduck"]
19
22
 
@@ -1,3 +1,5 @@
1
+ require 'jsduck/class'
2
+
1
3
  module JsDuck
2
4
 
3
5
  # Combines JavaScript Parser, DocParser and Merger.
@@ -48,14 +50,16 @@ module JsDuck
48
50
 
49
51
  # Merges new class-doc into old one.
50
52
  def merge_classes(old, new)
51
- [:extends, :xtype, :singleton, :private].each do |tag|
53
+ [:extends, :xtype, :singleton, :private, :protected].each do |tag|
52
54
  old[tag] = old[tag] || new[tag]
53
55
  end
54
- [:mixins, :alternateClassNames].each do |tag|
56
+ [:mixins, :alternateClassNames, :xtypes].each do |tag|
55
57
  old[tag] = old[tag] + new[tag]
56
58
  end
57
59
  old[:doc] = old[:doc].length > 0 ? old[:doc] : new[:doc]
58
- old[:cfg] = old[:cfg] + new[:cfg]
60
+ # Additionally the doc-comment can contain configs and constructor
61
+ old[:members][:cfg] += new[:members][:cfg]
62
+ old[:members][:method] += new[:members][:method]
59
63
  end
60
64
 
61
65
  # Tries to place members into classes where they belong.
@@ -68,39 +72,43 @@ module JsDuck
68
72
  # Items without @member belong by default to the preceding class.
69
73
  # When no class precedes them - they too are orphaned.
70
74
  def add_member(node)
71
- if node[:member]
72
- if @classes[node[:member]]
73
- @classes[node[:member]][node[:tagname]] << node
75
+ if node[:owner]
76
+ if @classes[node[:owner]]
77
+ add_to_class(@classes[node[:owner]], node)
74
78
  else
75
79
  add_orphan(node)
76
80
  end
77
81
  elsif @current_class
78
- node[:member] = @current_class[:name]
79
- @current_class[ node[:tagname] ] << node
82
+ node[:owner] = @current_class[:name]
83
+ add_to_class(@current_class, node)
80
84
  else
81
85
  add_orphan(node)
82
86
  end
83
87
  end
84
88
 
89
+ def add_to_class(cls, member)
90
+ cls[member[:static] ? :statics : :members][member[:tagname]] << member
91
+ end
92
+
85
93
  def add_orphan(node)
86
94
  @orphans << node
87
95
  end
88
96
 
89
97
  # Inserts available orphans to class
90
98
  def insert_orphans(cls)
91
- members = @orphans.find_all {|node| node[:member] == cls[:name] }
99
+ members = @orphans.find_all {|node| node[:owner] == cls[:name] }
92
100
  members.each do |node|
93
- cls[node[:tagname]] << node
101
+ add_to_class(cls, node)
94
102
  @orphans.delete(node)
95
103
  end
96
104
  end
97
105
 
98
- # Creates classes for orphans that have :member property defined,
106
+ # Creates classes for orphans that have :owner property defined,
99
107
  # and then inserts orphans to these classes.
100
108
  def classify_orphans
101
109
  @orphans.each do |orph|
102
- if orph[:member]
103
- class_name = orph[:member]
110
+ if orph[:owner]
111
+ class_name = orph[:owner]
104
112
  if !@classes[class_name]
105
113
  add_empty_class(class_name)
106
114
  end
@@ -117,7 +125,7 @@ module JsDuck
117
125
 
118
126
  add_empty_class("global", "Global variables and functions.")
119
127
  @orphans.each do |orph|
120
- orph[:member] = "global"
128
+ orph[:owner] = "global"
121
129
  add_member(orph)
122
130
  end
123
131
  @orphans = []
@@ -130,18 +138,36 @@ module JsDuck
130
138
  :doc => doc,
131
139
  :mixins => [],
132
140
  :alternateClassNames => [],
133
- :cfg => [],
134
- :property => [],
135
- :method => [],
136
- :event => [],
137
- :css_var => [],
138
- :css_mixin => [],
141
+ :members => Class.default_members_hash,
142
+ :statics => Class.default_members_hash,
139
143
  :filename => "",
140
144
  :html_filename => "",
141
145
  :linenr => 0,
142
146
  })
143
147
  end
144
148
 
149
+ # Appends Ext4 options parameter to each event parameter list.
150
+ # But only when we are dealing with Ext4 codebase.
151
+ def append_ext4_event_options
152
+ return unless ext4?
153
+
154
+ options = {
155
+ :tagname => :param,
156
+ :name => "options",
157
+ :type => "Object",
158
+ :doc => "The options object passed to {@link Ext.util.Observable#addListener}."
159
+ }
160
+ @classes.each_value do |cls|
161
+ cls[:members][:event].each {|e| e[:params] << options }
162
+ end
163
+ end
164
+
165
+ # Are we dealing with ExtJS 4?
166
+ # True if any of the classes is defined with Ext.define()
167
+ def ext4?
168
+ @documentation.any? {|cls| cls[:code_type] == :ext_define }
169
+ end
170
+
145
171
  def result
146
172
  @documentation + @orphans
147
173
  end