jsduck 2.0.pre4 → 3.0.pre

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 (485) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +126 -34
  3. data/Rakefile +343 -115
  4. data/bin/jsduck +4 -196
  5. data/example.js +144 -0
  6. data/jsduck.gemspec +4 -9
  7. data/lib/jsduck/aggregator.rb +1 -1
  8. data/lib/jsduck/app.rb +165 -182
  9. data/lib/jsduck/categories.rb +17 -2
  10. data/lib/jsduck/class.rb +10 -0
  11. data/lib/jsduck/class_formatter.rb +77 -0
  12. data/lib/jsduck/doc_formatter.rb +42 -4
  13. data/lib/jsduck/doc_parser.rb +64 -10
  14. data/lib/jsduck/examples.rb +33 -0
  15. data/lib/jsduck/exporter.rb +18 -42
  16. data/lib/jsduck/guides.rb +41 -74
  17. data/lib/jsduck/icons.rb +28 -0
  18. data/lib/jsduck/js_literal_builder.rb +21 -0
  19. data/lib/jsduck/js_literal_parser.rb +106 -0
  20. data/lib/jsduck/js_parser.rb +115 -97
  21. data/lib/jsduck/json_duck.rb +45 -0
  22. data/lib/jsduck/lexer.rb +55 -25
  23. data/lib/jsduck/lint.rb +84 -0
  24. data/lib/jsduck/merger.rb +91 -21
  25. data/lib/jsduck/options.rb +320 -0
  26. data/lib/jsduck/relations.rb +7 -1
  27. data/lib/jsduck/renderer.rb +315 -0
  28. data/lib/jsduck/source_writer.rb +2 -2
  29. data/lib/jsduck/type_parser.rb +85 -0
  30. data/lib/jsduck/videos.rb +33 -0
  31. data/lib/jsduck/welcome.rb +21 -0
  32. data/{template → template-min}/README.md +0 -0
  33. data/template-min/app.js +1 -0
  34. data/template-min/build-js.html +25 -0
  35. data/template-min/egIframe.html +24 -0
  36. data/template-min/extjs/bootstrap.js +73 -0
  37. data/template-min/extjs/ext-all-debug.js +90047 -0
  38. data/{template → template-min}/extjs/ext-all.js +0 -0
  39. data/template-min/extjs/resources/css/ext-all.css +1 -0
  40. data/template-min/extjs/resources/themes/images/default/boundlist/trigger-arrow.png +0 -0
  41. data/template-min/extjs/resources/themes/images/default/box/corners-blue.gif +0 -0
  42. data/template-min/extjs/resources/themes/images/default/box/corners.gif +0 -0
  43. data/template-min/extjs/resources/themes/images/default/box/l-blue.gif +0 -0
  44. data/template-min/extjs/resources/themes/images/default/box/l.gif +0 -0
  45. data/template-min/extjs/resources/themes/images/default/box/r-blue.gif +0 -0
  46. data/template-min/extjs/resources/themes/images/default/box/r.gif +0 -0
  47. data/template-min/extjs/resources/themes/images/default/box/tb-blue.gif +0 -0
  48. data/template-min/extjs/resources/themes/images/default/box/tb.gif +0 -0
  49. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-bg.gif +0 -0
  50. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-corners.gif +0 -0
  51. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-bg.gif +0 -0
  52. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-corners.gif +0 -0
  53. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-disabled-sides.gif +0 -0
  54. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-bg.gif +0 -0
  55. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-corners.gif +0 -0
  56. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-focus-sides.gif +0 -0
  57. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-bg.gif +0 -0
  58. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-corners.gif +0 -0
  59. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-over-sides.gif +0 -0
  60. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-bg.gif +0 -0
  61. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-corners.gif +0 -0
  62. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-pressed-sides.gif +0 -0
  63. data/template-min/extjs/resources/themes/images/default/btn/btn-default-large-sides.gif +0 -0
  64. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-bg.gif +0 -0
  65. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-corners.gif +0 -0
  66. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif +0 -0
  67. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif +0 -0
  68. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif +0 -0
  69. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-bg.gif +0 -0
  70. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-corners.gif +0 -0
  71. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-focus-sides.gif +0 -0
  72. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-bg.gif +0 -0
  73. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-corners.gif +0 -0
  74. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-over-sides.gif +0 -0
  75. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif +0 -0
  76. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif +0 -0
  77. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif +0 -0
  78. data/template-min/extjs/resources/themes/images/default/btn/btn-default-medium-sides.gif +0 -0
  79. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-bg.gif +0 -0
  80. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-corners.gif +0 -0
  81. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-bg.gif +0 -0
  82. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-corners.gif +0 -0
  83. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-disabled-sides.gif +0 -0
  84. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-bg.gif +0 -0
  85. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-corners.gif +0 -0
  86. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-focus-sides.gif +0 -0
  87. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-bg.gif +0 -0
  88. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-corners.gif +0 -0
  89. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-over-sides.gif +0 -0
  90. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-bg.gif +0 -0
  91. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-corners.gif +0 -0
  92. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-pressed-sides.gif +0 -0
  93. data/template-min/extjs/resources/themes/images/default/btn/btn-default-small-sides.gif +0 -0
  94. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-corners.gif +0 -0
  95. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif +0 -0
  96. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif +0 -0
  97. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif +0 -0
  98. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif +0 -0
  99. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif +0 -0
  100. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif +0 -0
  101. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif +0 -0
  102. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif +0 -0
  103. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif +0 -0
  104. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif +0 -0
  105. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif +0 -0
  106. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-large-sides.gif +0 -0
  107. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-corners.gif +0 -0
  108. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif +0 -0
  109. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif +0 -0
  110. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif +0 -0
  111. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif +0 -0
  112. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif +0 -0
  113. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif +0 -0
  114. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif +0 -0
  115. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif +0 -0
  116. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif +0 -0
  117. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif +0 -0
  118. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif +0 -0
  119. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-medium-sides.gif +0 -0
  120. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-corners.gif +0 -0
  121. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif +0 -0
  122. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif +0 -0
  123. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif +0 -0
  124. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif +0 -0
  125. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif +0 -0
  126. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif +0 -0
  127. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif +0 -0
  128. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif +0 -0
  129. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif +0 -0
  130. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif +0 -0
  131. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif +0 -0
  132. data/template-min/extjs/resources/themes/images/default/btn/btn-default-toolbar-small-sides.gif +0 -0
  133. data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif +0 -0
  134. data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-corners.gif +0 -0
  135. data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-sides.gif +0 -0
  136. data/template-min/extjs/resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif +0 -0
  137. data/template-min/extjs/resources/themes/images/default/button/arrow.gif +0 -0
  138. data/template-min/extjs/resources/themes/images/default/button/btn.gif +0 -0
  139. data/template-min/extjs/resources/themes/images/default/button/group-cs.gif +0 -0
  140. data/template-min/extjs/resources/themes/images/default/button/group-lr.gif +0 -0
  141. data/template-min/extjs/resources/themes/images/default/button/group-tb.gif +0 -0
  142. data/template-min/extjs/resources/themes/images/default/button/s-arrow-b-noline.gif +0 -0
  143. data/template-min/extjs/resources/themes/images/default/button/s-arrow-b.gif +0 -0
  144. data/template-min/extjs/resources/themes/images/default/button/s-arrow-bo.gif +0 -0
  145. data/template-min/extjs/resources/themes/images/default/button/s-arrow-light.gif +0 -0
  146. data/template-min/extjs/resources/themes/images/default/button/s-arrow-noline.gif +0 -0
  147. data/template-min/extjs/resources/themes/images/default/button/s-arrow-o.gif +0 -0
  148. data/template-min/extjs/resources/themes/images/default/button/s-arrow.gif +0 -0
  149. data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-footer-bg.gif +0 -0
  150. data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-footer-bg.png +0 -0
  151. data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-header-bg.gif +0 -0
  152. data/template-min/extjs/resources/themes/images/default/datepicker/datepicker-header-bg.png +0 -0
  153. data/template-min/extjs/resources/themes/images/default/dd/drop-add.gif +0 -0
  154. data/template-min/extjs/resources/themes/images/default/dd/drop-no.gif +0 -0
  155. data/template-min/extjs/resources/themes/images/default/dd/drop-yes.gif +0 -0
  156. data/template-min/extjs/resources/themes/images/default/editor/tb-sprite.gif +0 -0
  157. data/{template → template-min}/extjs/resources/themes/images/default/form/checkbox.gif +0 -0
  158. data/template-min/extjs/resources/themes/images/default/form/clear-trigger.gif +0 -0
  159. data/template-min/extjs/resources/themes/images/default/form/date-trigger.gif +0 -0
  160. data/template-min/extjs/resources/themes/images/default/form/error-tip-corners.gif +0 -0
  161. data/template-min/extjs/resources/themes/images/default/form/exclamation.gif +0 -0
  162. data/template-min/extjs/resources/themes/images/default/form/radio.gif +0 -0
  163. data/template-min/extjs/resources/themes/images/default/form/search-trigger.gif +0 -0
  164. data/template-min/extjs/resources/themes/images/default/form/spinner-small.gif +0 -0
  165. data/template-min/extjs/resources/themes/images/default/form/spinner.gif +0 -0
  166. data/{template → template-min}/extjs/resources/themes/images/default/form/text-bg.gif +0 -0
  167. data/template-min/extjs/resources/themes/images/default/form/trigger-square.gif +0 -0
  168. data/template-min/extjs/resources/themes/images/default/form/trigger-tpl.gif +0 -0
  169. data/template-min/extjs/resources/themes/images/default/form/trigger.gif +0 -0
  170. data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif +0 -0
  171. data/template-min/extjs/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif +0 -0
  172. data/template-min/extjs/resources/themes/images/default/grid/arrow-left-white.gif +0 -0
  173. data/template-min/extjs/resources/themes/images/default/grid/arrow-right-white.gif +0 -0
  174. data/template-min/extjs/resources/themes/images/default/grid/cell-special-bg.gif +0 -0
  175. data/template-min/extjs/resources/themes/images/default/grid/cell-special-bg.png +0 -0
  176. data/template-min/extjs/resources/themes/images/default/grid/cell-special-selected-bg.gif +0 -0
  177. data/template-min/extjs/resources/themes/images/default/grid/cell-special-selected-bg.png +0 -0
  178. data/template-min/extjs/resources/themes/images/default/grid/checked.gif +0 -0
  179. data/template-min/extjs/resources/themes/images/default/grid/col-move-bottom.gif +0 -0
  180. data/template-min/extjs/resources/themes/images/default/grid/col-move-top.gif +0 -0
  181. data/template-min/extjs/resources/themes/images/default/grid/column-header-bg.gif +0 -0
  182. data/template-min/extjs/resources/themes/images/default/grid/column-header-bg.png +0 -0
  183. data/template-min/extjs/resources/themes/images/default/grid/column-header-over-bg.gif +0 -0
  184. data/template-min/extjs/resources/themes/images/default/grid/column-header-over-bg.png +0 -0
  185. data/template-min/extjs/resources/themes/images/default/grid/columns.gif +0 -0
  186. data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-left.gif +0 -0
  187. data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-left.png +0 -0
  188. data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-right.gif +0 -0
  189. data/template-min/extjs/resources/themes/images/default/grid/dd-insert-arrow-right.png +0 -0
  190. data/template-min/extjs/resources/themes/images/default/grid/dirty.gif +0 -0
  191. data/template-min/extjs/resources/themes/images/default/grid/done.gif +0 -0
  192. data/template-min/extjs/resources/themes/images/default/grid/drop-no.gif +0 -0
  193. data/template-min/extjs/resources/themes/images/default/grid/drop-yes.gif +0 -0
  194. data/template-min/extjs/resources/themes/images/default/grid/footer-bg.gif +0 -0
  195. data/template-min/extjs/resources/themes/images/default/grid/grid-blue-hd.gif +0 -0
  196. data/template-min/extjs/resources/themes/images/default/grid/grid-blue-split.gif +0 -0
  197. data/template-min/extjs/resources/themes/images/default/grid/grid-hrow.gif +0 -0
  198. data/template-min/extjs/resources/themes/images/default/grid/grid-loading.gif +0 -0
  199. data/template-min/extjs/resources/themes/images/default/grid/grid-split.gif +0 -0
  200. data/template-min/extjs/resources/themes/images/default/grid/grid-vista-hd.gif +0 -0
  201. data/template-min/extjs/resources/themes/images/default/grid/grid3-hd-btn.gif +0 -0
  202. data/template-min/extjs/resources/themes/images/default/grid/grid3-hrow-over.gif +0 -0
  203. data/template-min/extjs/resources/themes/images/default/grid/grid3-hrow.gif +0 -0
  204. data/template-min/extjs/resources/themes/images/default/grid/grid3-rowheader.gif +0 -0
  205. data/template-min/extjs/resources/themes/images/default/grid/group-by.gif +0 -0
  206. data/template-min/extjs/resources/themes/images/default/grid/group-collapse.gif +0 -0
  207. data/template-min/extjs/resources/themes/images/default/grid/group-expand-sprite.gif +0 -0
  208. data/template-min/extjs/resources/themes/images/default/grid/group-expand.gif +0 -0
  209. data/template-min/extjs/resources/themes/images/default/grid/hd-pop.gif +0 -0
  210. data/template-min/extjs/resources/themes/images/default/grid/hmenu-asc.gif +0 -0
  211. data/template-min/extjs/resources/themes/images/default/grid/hmenu-desc.gif +0 -0
  212. data/template-min/extjs/resources/themes/images/default/grid/hmenu-lock.gif +0 -0
  213. data/template-min/extjs/resources/themes/images/default/grid/hmenu-lock.png +0 -0
  214. data/template-min/extjs/resources/themes/images/default/grid/hmenu-unlock.gif +0 -0
  215. data/template-min/extjs/resources/themes/images/default/grid/hmenu-unlock.png +0 -0
  216. data/template-min/extjs/resources/themes/images/default/grid/invalid_line.gif +0 -0
  217. data/{template → template-min}/extjs/resources/themes/images/default/grid/loading.gif +0 -0
  218. data/template-min/extjs/resources/themes/images/default/grid/mso-hd.gif +0 -0
  219. data/template-min/extjs/resources/themes/images/default/grid/nowait.gif +0 -0
  220. data/template-min/extjs/resources/themes/images/default/grid/page-first-disabled.gif +0 -0
  221. data/template-min/extjs/resources/themes/images/default/grid/page-first.gif +0 -0
  222. data/template-min/extjs/resources/themes/images/default/grid/page-last-disabled.gif +0 -0
  223. data/template-min/extjs/resources/themes/images/default/grid/page-last.gif +0 -0
  224. data/template-min/extjs/resources/themes/images/default/grid/page-next-disabled.gif +0 -0
  225. data/template-min/extjs/resources/themes/images/default/grid/page-next.gif +0 -0
  226. data/template-min/extjs/resources/themes/images/default/grid/page-prev-disabled.gif +0 -0
  227. data/template-min/extjs/resources/themes/images/default/grid/page-prev.gif +0 -0
  228. data/template-min/extjs/resources/themes/images/default/grid/pick-button.gif +0 -0
  229. data/template-min/extjs/resources/themes/images/default/grid/property-cell-bg.gif +0 -0
  230. data/template-min/extjs/resources/themes/images/default/grid/property-cell-selected-bg.gif +0 -0
  231. data/template-min/extjs/resources/themes/images/default/grid/refresh-disabled.gif +0 -0
  232. data/template-min/extjs/resources/themes/images/default/grid/refresh.gif +0 -0
  233. data/template-min/extjs/resources/themes/images/default/grid/row-check-sprite.gif +0 -0
  234. data/template-min/extjs/resources/themes/images/default/grid/row-expand-sprite.gif +0 -0
  235. data/template-min/extjs/resources/themes/images/default/grid/row-over.gif +0 -0
  236. data/template-min/extjs/resources/themes/images/default/grid/row-sel.gif +0 -0
  237. data/template-min/extjs/resources/themes/images/default/grid/sort-hd.gif +0 -0
  238. data/template-min/extjs/resources/themes/images/default/grid/sort_asc.gif +0 -0
  239. data/template-min/extjs/resources/themes/images/default/grid/sort_desc.gif +0 -0
  240. data/template-min/extjs/resources/themes/images/default/grid/unchecked.gif +0 -0
  241. data/template-min/extjs/resources/themes/images/default/grid/wait.gif +0 -0
  242. data/template-min/extjs/resources/themes/images/default/layout/mini-bottom.gif +0 -0
  243. data/template-min/extjs/resources/themes/images/default/layout/mini-left.gif +0 -0
  244. data/template-min/extjs/resources/themes/images/default/layout/mini-right.gif +0 -0
  245. data/template-min/extjs/resources/themes/images/default/layout/mini-top.gif +0 -0
  246. data/template-min/extjs/resources/themes/images/default/menu/checked.gif +0 -0
  247. data/template-min/extjs/resources/themes/images/default/menu/group-checked.gif +0 -0
  248. data/template-min/extjs/resources/themes/images/default/menu/item-over.gif +0 -0
  249. data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-bg.gif +0 -0
  250. data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-corners.gif +0 -0
  251. data/template-min/extjs/resources/themes/images/default/menu/menu-item-active-sides.gif +0 -0
  252. data/template-min/extjs/resources/themes/images/default/menu/menu-parent.gif +0 -0
  253. data/template-min/extjs/resources/themes/images/default/menu/menu.gif +0 -0
  254. data/template-min/extjs/resources/themes/images/default/menu/unchecked.gif +0 -0
  255. data/template-min/extjs/resources/themes/images/default/panel/panel-default-framed-corners.gif +0 -0
  256. data/template-min/extjs/resources/themes/images/default/panel/panel-default-framed-sides.gif +0 -0
  257. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif +0 -0
  258. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif +0 -0
  259. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif +0 -0
  260. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif +0 -0
  261. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif +0 -0
  262. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif +0 -0
  263. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif +0 -0
  264. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif +0 -0
  265. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif +0 -0
  266. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif +0 -0
  267. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif +0 -0
  268. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif +0 -0
  269. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif +0 -0
  270. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif +0 -0
  271. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif +0 -0
  272. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif +0 -0
  273. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif +0 -0
  274. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif +0 -0
  275. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif +0 -0
  276. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif +0 -0
  277. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif +0 -0
  278. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif +0 -0
  279. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif +0 -0
  280. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif +0 -0
  281. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif +0 -0
  282. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-left-bg.gif +0 -0
  283. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-right-bg.gif +0 -0
  284. data/template-min/extjs/resources/themes/images/default/panel-header/panel-header-default-top-bg.gif +0 -0
  285. data/template-min/extjs/resources/themes/images/default/progress/progress-default-bg.gif +0 -0
  286. data/template-min/extjs/resources/themes/images/default/shared/blue-loading.gif +0 -0
  287. data/template-min/extjs/resources/themes/images/default/shared/calendar.gif +0 -0
  288. data/template-min/extjs/resources/themes/images/default/shared/glass-bg.gif +0 -0
  289. data/template-min/extjs/resources/themes/images/default/shared/hd-sprite.gif +0 -0
  290. data/template-min/extjs/resources/themes/images/default/shared/icon-error.gif +0 -0
  291. data/template-min/extjs/resources/themes/images/default/shared/icon-info.gif +0 -0
  292. data/template-min/extjs/resources/themes/images/default/shared/icon-question.gif +0 -0
  293. data/template-min/extjs/resources/themes/images/default/shared/icon-warning.gif +0 -0
  294. data/template-min/extjs/resources/themes/images/default/shared/large-loading.gif +0 -0
  295. data/template-min/extjs/resources/themes/images/default/shared/left-btn.gif +0 -0
  296. data/template-min/extjs/resources/themes/images/default/shared/loading-balls.gif +0 -0
  297. data/template-min/extjs/resources/themes/images/default/shared/right-btn.gif +0 -0
  298. data/template-min/extjs/resources/themes/images/default/shared/shadow-c.png +0 -0
  299. data/template-min/extjs/resources/themes/images/default/shared/shadow-lr.png +0 -0
  300. data/template-min/extjs/resources/themes/images/default/shared/shadow.png +0 -0
  301. data/template-min/extjs/resources/themes/images/default/shared/warning.gif +0 -0
  302. data/template-min/extjs/resources/themes/images/default/sizer/e-handle-dark.gif +0 -0
  303. data/template-min/extjs/resources/themes/images/default/sizer/e-handle.gif +0 -0
  304. data/template-min/extjs/resources/themes/images/default/sizer/ne-handle-dark.gif +0 -0
  305. data/template-min/extjs/resources/themes/images/default/sizer/ne-handle.gif +0 -0
  306. data/template-min/extjs/resources/themes/images/default/sizer/nw-handle-dark.gif +0 -0
  307. data/template-min/extjs/resources/themes/images/default/sizer/nw-handle.gif +0 -0
  308. data/template-min/extjs/resources/themes/images/default/sizer/s-handle-dark.gif +0 -0
  309. data/template-min/extjs/resources/themes/images/default/sizer/s-handle.gif +0 -0
  310. data/template-min/extjs/resources/themes/images/default/sizer/se-handle-dark.gif +0 -0
  311. data/template-min/extjs/resources/themes/images/default/sizer/se-handle.gif +0 -0
  312. data/template-min/extjs/resources/themes/images/default/sizer/square.gif +0 -0
  313. data/template-min/extjs/resources/themes/images/default/sizer/sw-handle-dark.gif +0 -0
  314. data/template-min/extjs/resources/themes/images/default/sizer/sw-handle.gif +0 -0
  315. data/template-min/extjs/resources/themes/images/default/slider/slider-bg.gif +0 -0
  316. data/template-min/extjs/resources/themes/images/default/slider/slider-bg.png +0 -0
  317. data/template-min/extjs/resources/themes/images/default/slider/slider-thumb.gif +0 -0
  318. data/template-min/extjs/resources/themes/images/default/slider/slider-thumb.png +0 -0
  319. data/template-min/extjs/resources/themes/images/default/slider/slider-v-bg.gif +0 -0
  320. data/template-min/extjs/resources/themes/images/default/slider/slider-v-bg.png +0 -0
  321. data/template-min/extjs/resources/themes/images/default/slider/slider-v-thumb.gif +0 -0
  322. data/template-min/extjs/resources/themes/images/default/slider/slider-v-thumb.png +0 -0
  323. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-bg.gif +0 -0
  324. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-corners.gif +0 -0
  325. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-active-sides.gif +0 -0
  326. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-bg.gif +0 -0
  327. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-corners.gif +0 -0
  328. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif +0 -0
  329. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif +0 -0
  330. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif +0 -0
  331. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-bg.gif +0 -0
  332. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-corners.gif +0 -0
  333. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-over-sides.gif +0 -0
  334. data/template-min/extjs/resources/themes/images/default/tab/tab-default-bottom-sides.gif +0 -0
  335. data/template-min/extjs/resources/themes/images/default/tab/tab-default-close.gif +0 -0
  336. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-bg.gif +0 -0
  337. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-corners.gif +0 -0
  338. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-active-sides.gif +0 -0
  339. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-bg.gif +0 -0
  340. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-corners.gif +0 -0
  341. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-bg.gif +0 -0
  342. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-corners.gif +0 -0
  343. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-disabled-sides.gif +0 -0
  344. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-bg.gif +0 -0
  345. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-corners.gif +0 -0
  346. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-over-sides.gif +0 -0
  347. data/template-min/extjs/resources/themes/images/default/tab/tab-default-top-sides.gif +0 -0
  348. data/template-min/extjs/resources/themes/images/default/tab-bar/scroll-left.gif +0 -0
  349. data/template-min/extjs/resources/themes/images/default/tab-bar/scroll-right.gif +0 -0
  350. data/template-min/extjs/resources/themes/images/default/tab-bar/tab-bar-default-bg.gif +0 -0
  351. data/template-min/extjs/resources/themes/images/default/tip/tip-corners.gif +0 -0
  352. data/template-min/extjs/resources/themes/images/default/tip/tip-sides.gif +0 -0
  353. data/template-min/extjs/resources/themes/images/default/toolbar/more.gif +0 -0
  354. data/template-min/extjs/resources/themes/images/default/toolbar/scroll-left.gif +0 -0
  355. data/template-min/extjs/resources/themes/images/default/toolbar/scroll-right.gif +0 -0
  356. data/template-min/extjs/resources/themes/images/default/toolbar/toolbar-default-bg.gif +0 -0
  357. data/template-min/extjs/resources/themes/images/default/tools/tool-sprite-tpl.gif +0 -0
  358. data/template-min/extjs/resources/themes/images/default/tools/tool-sprites.gif +0 -0
  359. data/template-min/extjs/resources/themes/images/default/tools/tools-sprites-trans.gif +0 -0
  360. data/{template → template-min}/extjs/resources/themes/images/default/tree/arrows.gif +0 -0
  361. data/template-min/extjs/resources/themes/images/default/tree/drop-above.gif +0 -0
  362. data/template-min/extjs/resources/themes/images/default/tree/drop-add.gif +0 -0
  363. data/template-min/extjs/resources/themes/images/default/tree/drop-append.gif +0 -0
  364. data/template-min/extjs/resources/themes/images/default/tree/drop-below.gif +0 -0
  365. data/template-min/extjs/resources/themes/images/default/tree/drop-between.gif +0 -0
  366. data/template-min/extjs/resources/themes/images/default/tree/drop-no.gif +0 -0
  367. data/template-min/extjs/resources/themes/images/default/tree/drop-over.gif +0 -0
  368. data/template-min/extjs/resources/themes/images/default/tree/drop-under.gif +0 -0
  369. data/template-min/extjs/resources/themes/images/default/tree/drop-yes.gif +0 -0
  370. data/template-min/extjs/resources/themes/images/default/tree/elbow-end-minus-nl.gif +0 -0
  371. data/template-min/extjs/resources/themes/images/default/tree/elbow-end-minus.gif +0 -0
  372. data/template-min/extjs/resources/themes/images/default/tree/elbow-end-plus-nl.gif +0 -0
  373. data/template-min/extjs/resources/themes/images/default/tree/elbow-end-plus.gif +0 -0
  374. data/{template/resources/images → template-min/extjs/resources/themes/images/default/tree}/elbow-end.gif +0 -0
  375. data/template-min/extjs/resources/themes/images/default/tree/elbow-line.gif +0 -0
  376. data/template-min/extjs/resources/themes/images/default/tree/elbow-minus-nl.gif +0 -0
  377. data/template-min/extjs/resources/themes/images/default/tree/elbow-minus.gif +0 -0
  378. data/template-min/extjs/resources/themes/images/default/tree/elbow-plus-nl.gif +0 -0
  379. data/template-min/extjs/resources/themes/images/default/tree/elbow-plus.gif +0 -0
  380. data/template-min/extjs/resources/themes/images/default/tree/elbow.gif +0 -0
  381. data/template-min/extjs/resources/themes/images/default/tree/folder-open.gif +0 -0
  382. data/template-min/extjs/resources/themes/images/default/tree/folder.gif +0 -0
  383. data/template-min/extjs/resources/themes/images/default/tree/leaf.gif +0 -0
  384. data/template-min/extjs/resources/themes/images/default/tree/loading.gif +0 -0
  385. data/template-min/extjs/resources/themes/images/default/tree/s.gif +0 -0
  386. data/template-min/extjs/resources/themes/images/default/util/splitter/mini-bottom.gif +0 -0
  387. data/template-min/extjs/resources/themes/images/default/util/splitter/mini-left.gif +0 -0
  388. data/template-min/extjs/resources/themes/images/default/util/splitter/mini-right.gif +0 -0
  389. data/template-min/extjs/resources/themes/images/default/util/splitter/mini-top.gif +0 -0
  390. data/template-min/extjs/resources/themes/images/default/window/window-default-corners.gif +0 -0
  391. data/template-min/extjs/resources/themes/images/default/window/window-default-sides.gif +0 -0
  392. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-bottom-corners.gif +0 -0
  393. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-bottom-sides.gif +0 -0
  394. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-left-corners.gif +0 -0
  395. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-left-sides.gif +0 -0
  396. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-right-corners.gif +0 -0
  397. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-right-sides.gif +0 -0
  398. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-top-corners.gif +0 -0
  399. data/template-min/extjs/resources/themes/images/default/window-header/window-header-default-top-sides.gif +0 -0
  400. data/{template → template-min}/favicon.ico +0 -0
  401. data/template-min/index.php +59 -0
  402. data/template-min/print-template.html +22 -0
  403. data/template-min/resources/css/app.css +1 -0
  404. data/template-min/resources/images/arrows.png +0 -0
  405. data/{template → template-min}/resources/images/class-m.png +0 -0
  406. data/{template → template-min}/resources/images/class-sm.png +0 -0
  407. data/{template → template-min}/resources/images/component-m.png +0 -0
  408. data/{template → template-min}/resources/images/configs.png +0 -0
  409. data/{template → template-min}/resources/images/doc-m.png +0 -0
  410. data/template-min/resources/images/elbow-end.gif +0 -0
  411. data/{template → template-min}/resources/images/events.png +0 -0
  412. data/template-min/resources/images/example-icons.png +0 -0
  413. data/{template → template-min}/resources/images/expandcollapse.png +0 -0
  414. data/{template → template-min}/resources/images/guide-icon.png +0 -0
  415. data/{template → template-min}/resources/images/guides.png +0 -0
  416. data/template-min/resources/images/header.png +0 -0
  417. data/template-min/resources/images/hero-extjs4-alt.png +0 -0
  418. data/template-min/resources/images/icons.png +0 -0
  419. data/template-min/resources/images/link-green-standard-over.png +0 -0
  420. data/template-min/resources/images/link-green-standard.png +0 -0
  421. data/{template → template-min}/resources/images/loading-title.png +0 -0
  422. data/{template → template-min}/resources/images/loading.gif +0 -0
  423. data/template-min/resources/images/logo-screen-noglow.png +0 -0
  424. data/template-min/resources/images/logo.png +0 -0
  425. data/{template → template-min}/resources/images/member-collapsed.gif +0 -0
  426. data/{template → template-min}/resources/images/member-expanded.gif +0 -0
  427. data/{template → template-min}/resources/images/member-hover.gif +0 -0
  428. data/{template → template-min}/resources/images/methods.png +0 -0
  429. data/template-min/resources/images/more.png +0 -0
  430. data/template-min/resources/images/preview.png +0 -0
  431. data/template-min/resources/images/print.png +0 -0
  432. data/{template → template-min}/resources/images/properties.png +0 -0
  433. data/template-min/resources/images/search-box.png +0 -0
  434. data/{template → template-min}/resources/images/singleton-m.png +0 -0
  435. data/template-min/resources/images/tabs.png +0 -0
  436. data/{template → template-min}/resources/images/version-tabs.png +0 -0
  437. data/template-min/resources/images/welcome-bg-js4.gif +0 -0
  438. data/{template → template-min}/resources/images/x.png +0 -0
  439. data/{template → template-min}/resources/images/x12.png +0 -0
  440. data/template-min/resources/images/x122.png +0 -0
  441. data/{template/index.html → template-min/template.html} +9 -14
  442. data/template-min/welcome.html +78 -0
  443. metadata +429 -76
  444. data/lib/jsduck/jsonp.rb +0 -17
  445. data/lib/jsduck/tree.rb +0 -117
  446. data/lib/jsduck/tree_icons.rb +0 -19
  447. data/template/app/Application.js +0 -53
  448. data/template/app/Favorites.js +0 -88
  449. data/template/app/History.js +0 -45
  450. data/template/app/LocalStore.js +0 -45
  451. data/template/app/Settings.js +0 -39
  452. data/template/app/Syntax.js +0 -20
  453. data/template/app/controller/Classes.js +0 -301
  454. data/template/app/controller/Search.js +0 -189
  455. data/template/app/model/Favorite.js +0 -11
  456. data/template/app/model/Setting.js +0 -11
  457. data/template/app/store/Favorites.js +0 -7
  458. data/template/app/store/Search.js +0 -14
  459. data/template/app/store/Settings.js +0 -7
  460. data/template/app/view/ClassGrid.js +0 -114
  461. data/template/app/view/HoverMenu.js +0 -59
  462. data/template/app/view/HoverMenuButton.js +0 -147
  463. data/template/app/view/Viewport.js +0 -240
  464. data/template/app/view/cls/Header.js +0 -47
  465. data/template/app/view/cls/Overview.js +0 -415
  466. data/template/app/view/cls/Toolbar.js +0 -199
  467. data/template/app/view/index/Container.js +0 -62
  468. data/template/app/view/search/Dropdown.js +0 -115
  469. data/template/app/view/tree/Tree.js +0 -143
  470. data/template/app.js +0 -25
  471. data/template/prettify/prettify.css +0 -1
  472. data/template/prettify/prettify.js +0 -28
  473. data/template/resources/css/docs-ext.css +0 -3594
  474. data/template/resources/css/reset.css +0 -59
  475. data/template/resources/css/scrollbars.css +0 -14
  476. data/template/resources/css/viewport.css +0 -420
  477. data/template/resources/images/data-package.png +0 -0
  478. data/template/resources/images/drag-bar-center.png +0 -0
  479. data/template/resources/images/headBG.png +0 -0
  480. data/template/resources/images/header.gif +0 -0
  481. data/template/resources/images/icon.png +0 -0
  482. data/template/resources/images/icons.png +0 -0
  483. data/template/resources/images/model.png +0 -0
  484. data/template/resources/images/root-lines.png +0 -0
  485. data/template/resources/images/search-box.png +0 -0
data/lib/jsduck/app.rb CHANGED
@@ -3,136 +3,108 @@ require 'jsduck/aggregator'
3
3
  require 'jsduck/source_file'
4
4
  require 'jsduck/source_writer'
5
5
  require 'jsduck/doc_formatter'
6
+ require 'jsduck/class_formatter'
6
7
  require 'jsduck/class'
7
- require 'jsduck/tree'
8
- require 'jsduck/tree_icons'
8
+ require 'jsduck/icons'
9
9
  require 'jsduck/search_data'
10
10
  require 'jsduck/relations'
11
11
  require 'jsduck/aliases'
12
12
  require 'jsduck/exporter'
13
+ require 'jsduck/renderer'
13
14
  require 'jsduck/timer'
14
15
  require 'jsduck/parallel_wrap'
15
16
  require 'jsduck/logger'
17
+ require 'jsduck/welcome'
16
18
  require 'jsduck/guides'
19
+ require 'jsduck/videos'
20
+ require 'jsduck/examples'
17
21
  require 'jsduck/categories'
18
- require 'jsduck/jsonp'
19
- require 'json'
22
+ require 'jsduck/json_duck'
23
+ require 'jsduck/lint'
20
24
  require 'fileutils'
21
25
 
22
26
  module JsDuck
23
27
 
24
28
  # The main application logic of jsduck
25
29
  class App
26
- # These are basically input parameters for app
27
- attr_accessor :output_dir
28
- attr_accessor :template_dir
29
- attr_accessor :guides_dir
30
- attr_accessor :guides_order
31
- attr_accessor :categories_path
32
- attr_accessor :template_links
33
- attr_accessor :input_files
34
- attr_accessor :export
35
- attr_accessor :link_tpl
36
- attr_accessor :img_tpl
37
- attr_accessor :ignore_global
38
- attr_accessor :external_classes
39
- attr_accessor :show_private_classes
40
- attr_accessor :title
41
- attr_accessor :footer
42
- attr_accessor :extjs_path
43
- attr_accessor :local_storage_db
44
- attr_accessor :head_html
45
- attr_accessor :body_html
46
-
47
- def initialize
48
- @output_dir = nil
49
- @template_dir = nil
50
- @guides_dir = nil
51
- @guides_order = nil
52
- @categories_path = nil
53
- @template_links = false
54
- @input_files = []
55
- @warnings = true
56
- @export = nil
57
- @link_tpl = nil
58
- @img_tpl = nil
59
- @ignore_global = false
60
- @external_classes = []
61
- @show_private_classes = false
62
- @title = "Ext JS API Documentation"
63
- @footer = 'Generated with <a href="https://github.com/senchalabs/jsduck">JSDuck</a>.'
64
- @extjs_path = "extjs/ext-all.js"
65
- @local_storage_db = "docs"
66
- @head_html = ""
67
- @body_html = ""
30
+ # Initializes app with JsDuck::Options object
31
+ def initialize(opts)
32
+ @opts = opts
68
33
  @timer = Timer.new
69
- @parallel = ParallelWrap.new
70
- end
71
-
72
- # Sets the nr of parallel processes to use.
73
- # Set to 0 to disable parallelization completely.
74
- def processes=(count)
75
- @parallel = ParallelWrap.new(:in_processes => count)
76
- end
77
-
78
- # Sets warnings on or off
79
- def warnings=(enabled)
80
- Logger.instance.warnings = enabled
81
- end
82
-
83
- # Sets verbose mode on or off
84
- def verbose=(enabled)
85
- Logger.instance.verbose = enabled
34
+ # Sets the nr of parallel processes to use.
35
+ # Set to 0 to disable parallelization completely.
36
+ @parallel = ParallelWrap.new(:in_processes => @opts.processes)
37
+ # Sets warnings and verbose mode on or off
38
+ Logger.instance.warnings = @opts.warnings
39
+ Logger.instance.verbose = @opts.verbose
40
+ # Turn JSON pretty-printing on/off
41
+ JsonDuck.pretty = @opts.pretty_json
86
42
  end
87
43
 
88
44
  # Call this after input parameters set
89
45
  def run
90
- # Set default templates
91
- @link_tpl ||= '<a href="#/api/%c%-%m" rel="%c%-%m" class="docClass">%a</a>'
92
- # Note that we wrap image template inside <p> because {@img} often
93
- # appears inline within text, but that just looks ugly in HTML
94
- @img_tpl ||= '<p><img src="doc-resources/%u" alt="%a"></p>'
95
-
96
- parsed_files = @timer.time(:parsing) { parallel_parse(@input_files) }
46
+ parsed_files = @timer.time(:parsing) { parallel_parse(@opts.input_files) }
97
47
  result = @timer.time(:aggregating) { aggregate(parsed_files) }
98
- relations = @timer.time(:aggregating) { filter_classes(result) }
99
- Aliases.new(relations).resolve_all
100
- warn_globals(relations)
101
- warn_unnamed(relations)
48
+ @relations = @timer.time(:aggregating) { filter_classes(result) }
49
+ Aliases.new(@relations).resolve_all
50
+ Lint.new(@relations).run
102
51
 
103
- @guides = Guides.new(get_doc_formatter(relations), @guides_order)
104
- if @guides_dir
105
- @timer.time(:parsing) { @guides.parse_dir(@guides_dir) }
52
+ @welcome = Welcome.new
53
+ if @opts.welcome
54
+ @timer.time(:parsing) { @welcome.parse(@opts.welcome) }
106
55
  end
107
56
 
108
- @categories = Categories.new(get_doc_formatter(relations), relations)
109
- if @categories_path
57
+ @guides = Guides.new(get_doc_formatter)
58
+ if @opts.guides
59
+ @timer.time(:parsing) { @guides.parse(@opts.guides) }
60
+ end
61
+
62
+ @videos = Videos.new
63
+ if @opts.videos
64
+ @timer.time(:parsing) { @videos.parse(@opts.videos) }
65
+ end
66
+
67
+ @examples = Examples.new
68
+ if @opts.examples
69
+ @timer.time(:parsing) { @examples.parse(@opts.examples) }
70
+ end
71
+
72
+ @categories = Categories.new(get_doc_formatter, @relations)
73
+ if @opts.categories_path
110
74
  @timer.time(:parsing) do
111
- @categories.parse(@categories_path)
75
+ @categories.parse(@opts.categories_path)
112
76
  @categories.validate
113
77
  end
114
78
  end
115
79
 
116
- clear_dir(@output_dir) unless @export == :stdout
117
- if @export == :stdout
118
- @timer.time(:generating) { puts JSON.generate(relations.classes) }
119
- elsif @export == :json
120
- FileUtils.mkdir(@output_dir)
121
- init_output_dirs(@output_dir)
122
- @timer.time(:generating) { write_src(@output_dir+"/source", parsed_files) }
123
- @timer.time(:generating) { write_classes(@output_dir+"/output", relations) }
80
+ clear_output_dir unless @opts.export == :stdout
81
+ if @opts.export == :stdout
82
+ @timer.time(:generating) { puts JsonDuck.generate(@relations.classes) }
83
+ elsif @opts.export == :json
84
+ FileUtils.mkdir(@opts.output_dir)
85
+ init_output_dirs
86
+ @timer.time(:generating) { write_src(parsed_files) }
87
+ @timer.time(:generating) { format_classes }
88
+ @timer.time(:generating) { write_classes }
124
89
  else
125
- if @template_links
126
- link_template(@template_dir, @output_dir)
90
+ if @opts.template_links
91
+ link_template
127
92
  else
128
- copy_template(@template_dir, @output_dir)
93
+ copy_template
94
+ end
95
+ create_template_html
96
+ create_print_template_html
97
+ if !@opts.seo
98
+ FileUtils.rm(@opts.output_dir+"/index.php")
99
+ FileUtils.cp(@opts.output_dir+"/template.html", @opts.output_dir+"/index.html")
129
100
  end
130
- create_index_html(@template_dir, @output_dir)
131
- @timer.time(:generating) { write_src(@output_dir+"/source", parsed_files) }
132
- @timer.time(:generating) { write_tree(@output_dir+"/output/tree.js", relations) }
133
- @timer.time(:generating) { write_search_data(@output_dir+"/output/searchData.js", relations) }
134
- @timer.time(:generating) { write_classes(@output_dir+"/output", relations) }
135
- @timer.time(:generating) { @guides.write(@output_dir+"/guides") }
101
+ @timer.time(:generating) { write_src(parsed_files) }
102
+ @timer.time(:generating) { format_classes }
103
+ @timer.time(:generating) { write_app_data }
104
+ @timer.time(:generating) { write_classes }
105
+ @timer.time(:generating) { @guides.write(@opts.output_dir+"/guides") }
106
+ @timer.time(:generating) { @videos.write(@opts.output_dir+"/videos") }
107
+ @timer.time(:generating) { @examples.write(@opts.output_dir+"/examples") }
136
108
  end
137
109
 
138
110
  @timer.report
@@ -154,7 +126,7 @@ module JsDuck
154
126
  agr.aggregate(file)
155
127
  end
156
128
  agr.classify_orphans
157
- agr.create_global_class unless @ignore_global
129
+ agr.create_global_class unless @opts.ignore_global
158
130
  agr.append_ext4_event_options
159
131
  agr.result
160
132
  end
@@ -165,7 +137,7 @@ module JsDuck
165
137
  classes = []
166
138
  docs.each do |d|
167
139
  if d[:tagname] == :class
168
- classes << Class.new(d) if !d[:private] || @show_private_classes
140
+ classes << Class.new(d)
169
141
  else
170
142
  type = d[:tagname].to_s
171
143
  name = d[:name]
@@ -174,69 +146,57 @@ module JsDuck
174
146
  Logger.instance.warn("Ignoring #{type}: #{name} in #{file} line #{line}")
175
147
  end
176
148
  end
177
- Relations.new(classes, @external_classes)
149
+ Relations.new(classes, @opts.external_classes)
178
150
  end
179
151
 
180
- # print warning for each global member
181
- def warn_globals(relations)
182
- global = relations["global"]
183
- return unless global
184
- global[:members].each_key do |type|
185
- global.members(type).each do |member|
186
- name = member[:name]
187
- file = member[:filename]
188
- line = member[:linenr]
189
- Logger.instance.warn("Global #{type}: #{name} in #{file} line #{line}")
190
- end
152
+ # Formats each class
153
+ def format_classes
154
+ formatter = ClassFormatter.new(@relations, get_doc_formatter)
155
+ # Don't format types when exporting
156
+ formatter.include_types = !@opts.export
157
+ # Format all doc-objects in parallel
158
+ formatted_docs = @parallel.map(@relations.classes) do |cls|
159
+ formatter.format(cls.internal_doc)
191
160
  end
192
- end
193
-
194
- # print warning for each member with no name
195
- def warn_unnamed(relations)
196
- relations.each do |cls|
197
- cls[:members].each_pair do |type, members|
198
- members.each do |member|
199
- if !member[:name] || member[:name] == ""
200
- file = member[:filename]
201
- line = member[:linenr]
202
- Logger.instance.warn("Unnamed #{type} in #{file} line #{line}")
203
- end
204
- end
205
- end
161
+ # Then merge the data back to classes sequentially
162
+ formatted_docs.each do |doc|
163
+ @relations[doc[:name]].internal_doc = doc
206
164
  end
207
165
  end
208
166
 
209
- # Given all classes, generates namespace tree and writes it
210
- # in JSON form into a file.
211
- def write_tree(filename, relations)
212
- tree = Tree.new.create(relations.classes, @guides)
213
- icons = TreeIcons.new.extract_icons(tree)
214
- js = "Docs.classData = " + JSON.generate( tree ) + ";"
215
- js += "Docs.icons = " + JSON.generate( icons ) + ";"
216
- File.open(filename, 'w') {|f| f.write(js) }
167
+ # Writes classes, guides, videos, and search data to one big .js file
168
+ def write_app_data
169
+ js = "Docs.data = " + JsonDuck.generate({
170
+ :classes => Icons.new.create(@relations.classes),
171
+ :guides => @guides.to_array,
172
+ :videos => @videos.to_array,
173
+ :examples => @examples.to_array,
174
+ :search => SearchData.new.create(@relations.classes),
175
+ }) + ";\n"
176
+ File.open(@opts.output_dir+"/data.js", 'w') {|f| f.write(js) }
217
177
  end
218
178
 
219
- # Given all classes, generates members data for search and writes in
220
- # in JSON form into a file.
221
- def write_search_data(filename, relations)
222
- search_data = SearchData.new.create(relations.classes)
223
- js = "Docs.searchData = " + JSON.generate( {:data => search_data} ) + ";"
224
- File.open(filename, 'w') {|f| f.write(js) }
225
- end
226
-
227
- # Writes JsonP export file for each class
228
- def write_classes(path, relations)
229
- exporter = Exporter.new(relations, get_doc_formatter(relations))
230
- @parallel.each(relations.classes) do |cls|
231
- filename = path + "/" + cls[:name] + ".js"
179
+ # Writes JSON export or JsonP file for each class
180
+ def write_classes
181
+ exporter = Exporter.new(@relations)
182
+ renderer = Renderer.new
183
+ @parallel.each(@relations.classes) do |cls|
184
+ filename = @opts.output_dir+"/output/" + cls[:name] + (@opts.export ? ".json" : ".js")
232
185
  Logger.instance.log("Writing to #{filename} ...")
233
- JsonP.write(filename, cls[:name].gsub(/\./, "_"), exporter.export(cls))
186
+ data = exporter.export(cls)
187
+ if @opts.export
188
+ JsonDuck.write_json(filename, data)
189
+ else
190
+ data[:html] = renderer.render(data)
191
+ data = exporter.compact(data)
192
+ JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), data)
193
+ end
234
194
  end
235
195
  end
236
196
 
237
197
  # Writes formatted HTML source code for each input file
238
- def write_src(path, parsed_files)
239
- src = SourceWriter.new(path, @export ? nil : :page)
198
+ def write_src(parsed_files)
199
+ src = SourceWriter.new(@opts.output_dir + "/source", @opts.export ? nil : :page)
240
200
  # Can't be done in parallel, because file.html_filename= method
241
201
  # updates all the doc-objects related to the file
242
202
  parsed_files.each do |file|
@@ -247,53 +207,76 @@ module JsDuck
247
207
  end
248
208
 
249
209
  # Creates and initializes DocFormatter
250
- def get_doc_formatter(relations)
210
+ def get_doc_formatter
251
211
  formatter = DocFormatter.new
252
- formatter.link_tpl = @link_tpl if @link_tpl
253
- formatter.img_tpl = @img_tpl if @img_tpl
254
- formatter.relations = relations
212
+ formatter.link_tpl = @opts.link_tpl if @opts.link_tpl
213
+ formatter.img_tpl = @opts.img_tpl if @opts.img_tpl
214
+ formatter.relations = @relations
215
+ if @opts.inline_examples_dir
216
+ formatter.get_example = lambda {|path| IO.read(@opts.inline_examples_dir + "/" + path) }
217
+ end
255
218
  formatter
256
219
  end
257
220
 
258
- def copy_template(template_dir, dir)
259
- Logger.instance.log("Copying template files to #{dir}...")
260
- FileUtils.cp_r(template_dir, dir)
261
- init_output_dirs(dir)
221
+ def copy_template
222
+ Logger.instance.log("Copying template files to #{@opts.output_dir}...")
223
+ FileUtils.cp_r(@opts.template_dir, @opts.output_dir)
224
+ init_output_dirs
262
225
  end
263
226
 
264
- def link_template(template_dir, dir)
265
- Logger.instance.log("Linking template files to #{dir}...")
266
- FileUtils.mkdir(dir)
267
- Dir.glob(template_dir + "/*").each do |file|
268
- File.symlink(File.expand_path(file), dir+"/"+File.basename(file))
227
+ def link_template
228
+ Logger.instance.log("Linking template files to #{@opts.output_dir}...")
229
+ FileUtils.mkdir(@opts.output_dir)
230
+ Dir.glob(@opts.template_dir + "/*").each do |file|
231
+ File.symlink(File.expand_path(file), @opts.output_dir+"/"+File.basename(file))
269
232
  end
270
- init_output_dirs(dir)
233
+ init_output_dirs
271
234
  end
272
235
 
273
- def clear_dir(dir)
274
- if File.exists?(dir)
275
- FileUtils.rm_r(dir)
236
+ def clear_output_dir
237
+ if File.exists?(@opts.output_dir)
238
+ FileUtils.rm_r(@opts.output_dir)
276
239
  end
277
240
  end
278
241
 
279
- def init_output_dirs(dir)
280
- FileUtils.mkdir(dir + "/output")
281
- FileUtils.mkdir(dir + "/source")
242
+ def init_output_dirs
243
+ FileUtils.mkdir(@opts.output_dir + "/output")
244
+ FileUtils.mkdir(@opts.output_dir + "/source")
245
+ end
246
+
247
+ def create_template_html
248
+ write_template("template.html", {
249
+ "{title}" => @opts.title,
250
+ "{header}" => @opts.header,
251
+ "{footer}" => "<div id='footer-content' style='display: none'>#{@opts.footer}</div>",
252
+ "{extjs_path}" => @opts.extjs_path,
253
+ "{local_storage_db}" => @opts.local_storage_db,
254
+ "{welcome}" => @welcome.to_html,
255
+ "{categories}" => @categories.to_html,
256
+ "{guides}" => @guides.to_html,
257
+ "{head_html}" => @opts.head_html,
258
+ "{body_html}" => @opts.body_html,
259
+ })
282
260
  end
283
261
 
284
- def create_index_html(template_dir, dir)
285
- Logger.instance.log("Creating #{dir}/index.html...")
286
- html = IO.read(template_dir+"/index.html")
287
- html.gsub!("{title}", @title)
288
- html.gsub!("{footer}", "<div id='footer-content' style='display: none'>#{@footer}</div>")
289
- html.gsub!("{extjs_path}", @extjs_path)
290
- html.gsub!("{local_storage_db}", @local_storage_db)
291
- html.gsub!("{guides}", @guides.to_html)
292
- html.gsub!("{categories}", @categories.to_html)
293
- html.gsub!("{head_html}", @head_html)
294
- html.gsub!("{body_html}", @body_html)
295
- FileUtils.rm(dir+"/index.html")
296
- File.open(dir+"/index.html", 'w') {|f| f.write(html) }
262
+ def create_print_template_html
263
+ write_template("print-template.html", {
264
+ "{title}" => @opts.title,
265
+ "{header}" => @opts.header,
266
+ })
267
+ end
268
+
269
+ # Opens file in template dir, replaces {keys} inside it, writes to output dir
270
+ def write_template(filename, replacements)
271
+ in_file = @opts.template_dir + '/' + filename
272
+ out_file = @opts.output_dir + '/' + filename
273
+ Logger.instance.log("Creating #{out_file}...")
274
+ html = IO.read(in_file)
275
+ html.gsub!(/\{\w+\}/) do |key|
276
+ replacements[key] ? replacements[key] : key
277
+ end
278
+ FileUtils.rm(out_file)
279
+ File.open(out_file, 'w') {|f| f.write(html) }
297
280
  end
298
281
  end
299
282
 
@@ -1,5 +1,5 @@
1
1
  require 'jsduck/logger'
2
- require 'json'
2
+ require 'jsduck/json_duck'
3
3
 
4
4
  module JsDuck
5
5
 
@@ -13,7 +13,22 @@ module JsDuck
13
13
 
14
14
  # Parses categories in JSON file
15
15
  def parse(path)
16
- @categories = JSON.parse(IO.read(path))["categories"]
16
+ @categories = JsonDuck.read(path)["categories"]
17
+
18
+ # Perform expansion on all class names containing * wildcard
19
+ @categories.each do |cat|
20
+ cat["groups"].each do |group|
21
+ group["classes"] = group["classes"].map do |name|
22
+ expand(name) # name =~ /\*/ ? expand(name) : name
23
+ end.flatten
24
+ end
25
+ end
26
+ end
27
+
28
+ # Expands class name like 'Foo.*' into multiple class names.
29
+ def expand(name)
30
+ re = Regexp.new("^" + name.split(/\*/, -1).map {|part| Regexp.escape(part) }.join('.*') + "$")
31
+ @relations.to_a.find_all {|cls| re =~ cls[:name] && !cls[:private] }.map {|cls| cls[:name] }.sort
17
32
  end
18
33
 
19
34
  # Prints warnings for missing classes in categories file
data/lib/jsduck/class.rb CHANGED
@@ -15,6 +15,16 @@ module JsDuck
15
15
  @relations = nil
16
16
  end
17
17
 
18
+ # Accessors for internal doc object. These are used to run
19
+ # ClassFormatter on the internal doc object and then assign it
20
+ # back.
21
+ def internal_doc
22
+ @doc
23
+ end
24
+ def internal_doc=(doc)
25
+ @doc = doc
26
+ end
27
+
18
28
  def [](key)
19
29
  @doc[key]
20
30
  end
@@ -0,0 +1,77 @@
1
+ require 'jsduck/type_parser'
2
+ require 'jsduck/logger'
3
+
4
+ module JsDuck
5
+
6
+ # Converts :doc properties of class from markdown to HTML, resolves
7
+ # @links, and converts type definitions to HTML. Also removes
8
+ # private members.
9
+ class ClassFormatter
10
+ # Set to false to disable HTML-formatting of type definitions.
11
+ attr_accessor :include_types
12
+
13
+ def initialize(relations, formatter)
14
+ @relations = relations
15
+ @formatter = formatter
16
+ @include_types = true
17
+ end
18
+
19
+ # Runs the formatter on doc object of a class.
20
+ # Accessed using Class#internal_doc
21
+ def format(cls)
22
+ @cls = cls
23
+ @formatter.class_context = cls[:name]
24
+ @formatter.doc_context = cls
25
+ cls[:doc] = @formatter.format(cls[:doc]) if cls[:doc]
26
+ cls[:members].each_pair do |type, members|
27
+ cls[:members][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
28
+ end
29
+ cls[:statics].each_pair do |type, members|
30
+ cls[:statics][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
31
+ end
32
+ cls
33
+ end
34
+
35
+ def format_member(m)
36
+ @formatter.doc_context = m
37
+ m[:doc] = @formatter.format(m[:doc]) if m[:doc]
38
+ m[:deprecated][:text] = @formatter.format(m[:deprecated][:text]) if m[:deprecated]
39
+ if expandable?(m) || @formatter.too_long?(m[:doc])
40
+ m[:shortDoc] = @formatter.shorten(m[:doc])
41
+ end
42
+ m[:html_type] = format_type(m[:type]) if m[:type] && @include_types
43
+ m[:params] = m[:params].map {|p| format_item(p) } if m[:params]
44
+ m[:return] = format_item(m[:return]) if m[:return]
45
+ m[:properties] = m[:properties].map {|b| format_item(b) } if m[:properties]
46
+ m
47
+ end
48
+
49
+ def expandable?(m)
50
+ m[:params] || (m[:properties] && m[:properties].length > 0) || m[:default] || m[:deprecated]
51
+ end
52
+
53
+ def format_item(it)
54
+ it[:doc] = @formatter.format(it[:doc]) if it[:doc]
55
+ it[:html_type] = format_type(it[:type]) if it[:type] && @include_types
56
+ it[:properties] = it[:properties].map {|s| format_item(s) } if it[:properties]
57
+ it
58
+ end
59
+
60
+ def format_type(type)
61
+ tp = TypeParser.new(@relations, @formatter)
62
+ if tp.parse(type)
63
+ tp.out
64
+ else
65
+ context = @formatter.doc_context
66
+ if tp.error == :syntax
67
+ Logger.instance.warn("Incorrect type syntax #{type} in #{context[:filename]} line #{context[:linenr]}")
68
+ else
69
+ Logger.instance.warn("Unknown type #{type} in #{context[:filename]} line #{context[:linenr]}")
70
+ end
71
+ type
72
+ end
73
+ end
74
+
75
+ end
76
+
77
+ end
@@ -29,6 +29,10 @@ module JsDuck
29
29
  # Default value: '<img src="%u" alt="%a"/>'
30
30
  attr_accessor :img_tpl
31
31
 
32
+ # Assign to this a function that retrieves the example code when
33
+ # passed in a filename
34
+ attr_accessor :get_example
35
+
32
36
  # Sets up instance to work in context of particular class, so
33
37
  # that when {@link #blah} is encountered it knows that
34
38
  # Context#blah is meant.
@@ -55,8 +59,11 @@ module JsDuck
55
59
  @relations = {}
56
60
  @link_tpl = '<a href="%c%#%m">%a</a>'
57
61
  @img_tpl = '<img src="%u" alt="%a"/>'
62
+ @example_tpl = '<pre class="inline-example"><code>%a</code></pre>'
58
63
  @link_re = /\{@link\s+(\S*?)(?:\s+(.+?))?\}/m
59
64
  @img_re = /\{@img\s+(\S*?)(?:\s+(.+?))?\}/m
65
+ @example_re = /\{@example\s+(\S*?)\s*\}/m
66
+ @example_annotation_re = /<pre><code>@example( +[^\n]*)?\s+/m
60
67
  end
61
68
 
62
69
  # Replaces {@link} and {@img} tags, auto-generates links for
@@ -67,6 +74,10 @@ module JsDuck
67
74
  #
68
75
  # Replaces {@img path/to/image.jpg Alt text} with HTML from @img_tpl.
69
76
  #
77
+ # Replaces {@example path/to/example.js} with source from that file.
78
+ #
79
+ # Adds 'inline-example' class to code examples beginning with @example.
80
+ #
70
81
  # Additionally replaces strings recognized as ClassNames with
71
82
  # links to these classes. So one doesn even need to use the @link
72
83
  # tag to create a link.
@@ -78,10 +89,15 @@ module JsDuck
78
89
  out += replace_link_tag(s.scan(@link_re))
79
90
  elsif s.check(@img_re)
80
91
  out += replace_img_tag(s.scan(@img_re))
81
- elsif s.check(/\{/)
82
- out += s.scan(/\{/)
92
+ elsif s.check(@example_re)
93
+ out += replace_example_tag(s.scan(@example_re))
94
+ elsif s.check(@example_annotation_re)
95
+ s.scan(@example_annotation_re)
96
+ out += '<pre class="inline-example"><code>'
97
+ elsif s.check(/[{<]/)
98
+ out += s.scan(/[{<]/)
83
99
  else
84
- out += replace_class_names(s.scan(/[^{]+/))
100
+ out += replace_class_names(s.scan(/[^{<]+/))
85
101
  end
86
102
  end
87
103
  out
@@ -128,6 +144,10 @@ module JsDuck
128
144
  input.sub(@img_re) { img($1, $2) }
129
145
  end
130
146
 
147
+ def replace_example_tag(input)
148
+ input.sub(@example_re) { example($1) }
149
+ end
150
+
131
151
  def replace_class_names(input)
132
152
  input.gsub(/(\A|\s)([A-Z][A-Za-z0-9.]*[A-Za-z0-9])(?:(#)([A-Za-z0-9]+))?([.,]?(?:\s|\Z))/m) do
133
153
  before = $1
@@ -136,7 +156,7 @@ module JsDuck
136
156
  member = $4
137
157
  after = $5
138
158
 
139
- if @relations[cls] && (!member || get_member(cls, member))
159
+ if @relations[cls] && (member ? get_member(cls, member) : cls =~ /\./)
140
160
  label = member ? cls+"."+member : cls
141
161
  before + link(cls, member, label) + after
142
162
  else
@@ -159,6 +179,24 @@ module JsDuck
159
179
  end
160
180
  end
161
181
 
182
+ # Replaces example template with example read from file
183
+ def example(path)
184
+ @example_tpl.gsub(/(%\w)/) do
185
+ case $1
186
+ when '%a'
187
+ if @get_example
188
+ CGI.escapeHTML(@get_example.call(path))
189
+ else
190
+ file = @doc_context[:filename]
191
+ line = @doc_context[:linenr]
192
+ Logger.instance.warn("--examples not specified, but {@example} found in #{file} line #{line}.")
193
+ end
194
+ else
195
+ $1
196
+ end
197
+ end
198
+ end
199
+
162
200
  # applies the link template
163
201
  def link(cls, member, anchor_text, type=nil)
164
202
  # Use the canonical class name for link (not some alternateClassName)