origen 0.0.1 → 0.0.2

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 (336) hide show
  1. checksums.yaml +4 -4
  2. data/bin/ctags +0 -0
  3. data/bin/origen +165 -1
  4. data/bin/rgen +2 -0
  5. data/config/application.rb +141 -0
  6. data/config/commands.rb +72 -0
  7. data/config/development.rb +7 -0
  8. data/config/environment.rb +0 -0
  9. data/config/rgen.policy +7 -0
  10. data/config/rubocop/easy.yml +620 -0
  11. data/config/rubocop/easy_disabled.yml +271 -0
  12. data/config/rubocop/easy_enabled.yml +731 -0
  13. data/config/rubocop/strict.yml +620 -0
  14. data/config/rubocop/strict_disabled.yml +247 -0
  15. data/config/rubocop/strict_enabled.yml +755 -0
  16. data/config/users.rb +20 -0
  17. data/config/version.rb +1 -1
  18. data/helpers/url.rb +68 -0
  19. data/lib/c99/doc_interface.rb +56 -0
  20. data/lib/c99/j750_interface.rb +85 -0
  21. data/lib/c99/nvm.rb +89 -0
  22. data/lib/c99/target/mock2.rb +1 -0
  23. data/lib/c99/target/subdir/mock3.rb +1 -0
  24. data/lib/option_parser/optparse.rb +12 -0
  25. data/lib/origen/acronyms.rb +60 -0
  26. data/lib/origen/application/command_dispatcher.rb +12 -0
  27. data/lib/origen/application/configuration.rb +206 -0
  28. data/lib/origen/application/configuration_manager.rb +78 -0
  29. data/lib/origen/application/deployer.rb +367 -0
  30. data/lib/origen/application/environment.rb +186 -0
  31. data/lib/origen/application/lsf.rb +145 -0
  32. data/lib/origen/application/lsf_manager.rb +657 -0
  33. data/lib/origen/application/plugins_manager.rb +280 -0
  34. data/lib/origen/application/release.rb +359 -0
  35. data/lib/origen/application/runner.rb +246 -0
  36. data/lib/origen/application/statistics.rb +191 -0
  37. data/lib/origen/application/target.rb +374 -0
  38. data/lib/origen/application/version_tracker.rb +59 -0
  39. data/lib/origen/application/workspace_manager.rb +151 -0
  40. data/lib/origen/application.rb +746 -0
  41. data/lib/origen/bugs/bug.rb +36 -0
  42. data/lib/origen/bugs.rb +45 -0
  43. data/lib/origen/callbacks.rb +35 -0
  44. data/lib/origen/chip_mode.rb +118 -0
  45. data/lib/origen/chip_package.rb +461 -0
  46. data/lib/origen/client.rb +87 -0
  47. data/lib/origen/code_generators/actions.rb +258 -0
  48. data/lib/origen/code_generators/base.rb +57 -0
  49. data/lib/origen/code_generators/bundler.rb +17 -0
  50. data/lib/origen/code_generators/gem_setup.rb +49 -0
  51. data/lib/origen/code_generators/rake.rb +13 -0
  52. data/lib/origen/code_generators/rspec.rb +12 -0
  53. data/lib/origen/code_generators/semver.rb +39 -0
  54. data/lib/origen/code_generators/timever.rb +37 -0
  55. data/lib/origen/code_generators.rb +111 -0
  56. data/lib/origen/commands/add.rb +12 -0
  57. data/lib/origen/commands/compile.rb +62 -0
  58. data/lib/origen/commands/ctags.rb +9 -0
  59. data/lib/origen/commands/dispatch.rb +22 -0
  60. data/lib/origen/commands/environment.rb +11 -0
  61. data/lib/origen/commands/fetch.rb +63 -0
  62. data/lib/origen/commands/generate.rb +130 -0
  63. data/lib/origen/commands/interactive.rb +73 -0
  64. data/lib/origen/commands/lint.rb +82 -0
  65. data/lib/origen/commands/lsf.rb +93 -0
  66. data/lib/origen/commands/merge.rb +55 -0
  67. data/lib/origen/commands/modifications.rb +12 -0
  68. data/lib/origen/commands/new.rb +113 -0
  69. data/lib/origen/commands/plugin.rb +105 -0
  70. data/lib/origen/commands/program.rb +70 -0
  71. data/lib/origen/commands/rc.rb +442 -0
  72. data/lib/origen/commands/save.rb +56 -0
  73. data/lib/origen/commands/target.rb +27 -0
  74. data/lib/origen/commands/time.rb +127 -0
  75. data/lib/origen/commands/version.rb +17 -0
  76. data/lib/origen/commands/web.rb +221 -0
  77. data/lib/origen/commands.rb +272 -0
  78. data/lib/origen/commands_global.rb +76 -0
  79. data/lib/origen/controller.rb +94 -0
  80. data/lib/origen/core_ext/array.rb +23 -0
  81. data/lib/origen/core_ext/bignum.rb +36 -0
  82. data/lib/origen/core_ext/enumerable.rb +76 -0
  83. data/lib/origen/core_ext/fixnum.rb +46 -0
  84. data/lib/origen/core_ext/hash.rb +52 -0
  85. data/lib/origen/core_ext/module.rb +14 -0
  86. data/lib/origen/core_ext/numeric.rb +126 -0
  87. data/lib/origen/core_ext/object.rb +13 -0
  88. data/lib/origen/core_ext/range.rb +7 -0
  89. data/lib/origen/core_ext/string.rb +124 -0
  90. data/lib/origen/core_ext.rb +10 -0
  91. data/lib/origen/database/key_value_store.rb +111 -0
  92. data/lib/origen/database/key_value_stores.rb +108 -0
  93. data/lib/origen/database.rb +6 -0
  94. data/lib/origen/encodings.rb +102 -0
  95. data/lib/origen/features/feature.rb +22 -0
  96. data/lib/origen/features.rb +104 -0
  97. data/lib/origen/file_handler.rb +429 -0
  98. data/lib/origen/generator/comparator.rb +56 -0
  99. data/lib/origen/generator/compiler.rb +277 -0
  100. data/lib/origen/generator/flow.rb +49 -0
  101. data/lib/origen/generator/job.rb +131 -0
  102. data/lib/origen/generator/pattern.rb +356 -0
  103. data/lib/origen/generator/pattern_finder.rb +155 -0
  104. data/lib/origen/generator/pattern_iterator.rb +55 -0
  105. data/lib/origen/generator/renderer.rb +113 -0
  106. data/lib/origen/generator/resources.rb +40 -0
  107. data/lib/origen/generator/stage.rb +89 -0
  108. data/lib/origen/generator.rb +85 -0
  109. data/lib/origen/global_methods.rb +205 -0
  110. data/lib/origen/import_manager.rb +596 -0
  111. data/lib/origen/location/base.rb +116 -0
  112. data/lib/origen/location/map.rb +83 -0
  113. data/lib/origen/location.rb +6 -0
  114. data/lib/origen/log.rb +217 -0
  115. data/lib/origen/logger_methods.rb +56 -0
  116. data/lib/origen/mode.rb +61 -0
  117. data/lib/origen/model.rb +267 -0
  118. data/lib/origen/model_initializer.rb +45 -0
  119. data/lib/origen/nvm/block_array.rb +72 -0
  120. data/lib/origen/nvm.rb +6 -0
  121. data/lib/origen/parameters/live.rb +22 -0
  122. data/lib/origen/parameters/missing.rb +28 -0
  123. data/lib/origen/parameters/set.rb +144 -0
  124. data/lib/origen/parameters.rb +107 -0
  125. data/lib/origen/pdm.rb +218 -0
  126. data/lib/origen/pins/function_proxy.rb +36 -0
  127. data/lib/origen/pins/ground_pin.rb +6 -0
  128. data/lib/origen/pins/pin.rb +860 -0
  129. data/lib/origen/pins/pin_bank.rb +349 -0
  130. data/lib/origen/pins/pin_clock.rb +124 -0
  131. data/lib/origen/pins/pin_collection.rb +492 -0
  132. data/lib/origen/pins/pin_common.rb +206 -0
  133. data/lib/origen/pins/port.rb +268 -0
  134. data/lib/origen/pins/power_pin.rb +30 -0
  135. data/lib/origen/pins.rb +696 -0
  136. data/lib/origen/registers/bit.rb +562 -0
  137. data/lib/origen/registers/bit_collection.rb +787 -0
  138. data/lib/origen/registers/container.rb +288 -0
  139. data/lib/origen/registers/domain.rb +16 -0
  140. data/lib/origen/registers/reg.rb +1406 -0
  141. data/lib/origen/registers/reg_collection.rb +24 -0
  142. data/lib/origen/registers.rb +652 -0
  143. data/lib/origen/regression_manager.rb +251 -0
  144. data/lib/origen/remote_manager.rb +340 -0
  145. data/lib/origen/revision_control/base.rb +257 -0
  146. data/lib/origen/revision_control/design_sync.rb +276 -0
  147. data/lib/origen/revision_control/git.rb +243 -0
  148. data/lib/origen/revision_control/subversion.rb +6 -0
  149. data/lib/origen/revision_control.rb +44 -0
  150. data/lib/origen/ruby_version_check.rb +131 -0
  151. data/lib/origen/site_config.rb +61 -0
  152. data/lib/origen/specs/checkers.rb +103 -0
  153. data/lib/origen/specs/creation_info.rb +17 -0
  154. data/lib/origen/specs/doc_resource.rb +91 -0
  155. data/lib/origen/specs/exhibit.rb +17 -0
  156. data/lib/origen/specs/mode_select.rb +16 -0
  157. data/lib/origen/specs/note.rb +17 -0
  158. data/lib/origen/specs/override.rb +21 -0
  159. data/lib/origen/specs/power_supply.rb +13 -0
  160. data/lib/origen/specs/spec.rb +226 -0
  161. data/lib/origen/specs/version_history.rb +14 -0
  162. data/lib/origen/specs.rb +552 -0
  163. data/lib/origen/sub_blocks.rb +298 -0
  164. data/lib/origen/tester/api.rb +277 -0
  165. data/lib/origen/tester/bdm/bdm.rb +25 -0
  166. data/lib/origen/tester/command_based_tester.rb +46 -0
  167. data/lib/origen/tester/doc/doc.rb +226 -0
  168. data/lib/origen/tester/doc/generator/flow.rb +71 -0
  169. data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
  170. data/lib/origen/tester/doc/generator/test.rb +68 -0
  171. data/lib/origen/tester/doc/generator/test_group.rb +66 -0
  172. data/lib/origen/tester/doc/generator/tests.rb +47 -0
  173. data/lib/origen/tester/doc/generator.rb +126 -0
  174. data/lib/origen/tester/doc/model.rb +162 -0
  175. data/lib/origen/tester/generator/flow_control_api.rb +606 -0
  176. data/lib/origen/tester/generator/identity_map.rb +25 -0
  177. data/lib/origen/tester/generator/placeholder.rb +13 -0
  178. data/lib/origen/tester/generator/test_numberer.rb +25 -0
  179. data/lib/origen/tester/generator.rb +271 -0
  180. data/lib/origen/tester/interface.rb +154 -0
  181. data/lib/origen/tester/j750/files.rb +45 -0
  182. data/lib/origen/tester/j750/generator/flow.rb +123 -0
  183. data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
  184. data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
  185. data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
  186. data/lib/origen/tester/j750/generator/patset.rb +111 -0
  187. data/lib/origen/tester/j750/generator/patsets.rb +41 -0
  188. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
  189. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
  190. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
  191. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
  192. data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
  193. data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
  194. data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
  195. data/lib/origen/tester/j750/generator.rb +203 -0
  196. data/lib/origen/tester/j750/j750.rb +845 -0
  197. data/lib/origen/tester/j750/j750_hpt.rb +35 -0
  198. data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
  199. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  200. data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
  201. data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
  202. data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
  203. data/lib/origen/tester/j750/parser/flow.rb +111 -0
  204. data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
  205. data/lib/origen/tester/j750/parser/flows.rb +23 -0
  206. data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
  207. data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
  208. data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
  209. data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
  210. data/lib/origen/tester/j750/parser/timeset.rb +15 -0
  211. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  212. data/lib/origen/tester/j750/parser.rb +104 -0
  213. data/lib/origen/tester/jlink/jlink.rb +33 -0
  214. data/lib/origen/tester/parser/description_lookup.rb +64 -0
  215. data/lib/origen/tester/parser/searchable_array.rb +32 -0
  216. data/lib/origen/tester/parser/searchable_hash.rb +32 -0
  217. data/lib/origen/tester/parser.rb +24 -0
  218. data/lib/origen/tester/time.rb +338 -0
  219. data/lib/origen/tester/timing.rb +253 -0
  220. data/lib/origen/tester/ultraflex/files.rb +45 -0
  221. data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
  222. data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
  223. data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
  224. data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
  225. data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
  226. data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
  227. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
  228. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
  229. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
  230. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
  231. data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
  232. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
  233. data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
  234. data/lib/origen/tester/ultraflex/generator.rb +200 -0
  235. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
  236. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  237. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
  238. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
  239. data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
  240. data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
  241. data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
  242. data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
  243. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
  244. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
  245. data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
  246. data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
  247. data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
  248. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  249. data/lib/origen/tester/ultraflex/parser.rb +104 -0
  250. data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
  251. data/lib/origen/tester/v93k/generator/flow.rb +63 -0
  252. data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
  253. data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
  254. data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
  255. data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
  256. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
  257. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
  258. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
  259. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
  260. data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
  261. data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
  262. data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
  263. data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
  264. data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
  265. data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
  266. data/lib/origen/tester/v93k/generator.rb +80 -0
  267. data/lib/origen/tester/v93k/v93k.rb +420 -0
  268. data/lib/origen/tester/vector.rb +86 -0
  269. data/lib/origen/tester/vector_generator.rb +633 -0
  270. data/lib/origen/tester/vector_pipeline.rb +150 -0
  271. data/lib/origen/tester.rb +56 -0
  272. data/lib/origen/top_level.rb +134 -0
  273. data/lib/origen/users/ldap.rb +65 -0
  274. data/lib/origen/users/user.rb +149 -0
  275. data/lib/origen/users.rb +30 -0
  276. data/lib/origen/utility/block_args.rb +93 -0
  277. data/lib/origen/utility/csv_data.rb +110 -0
  278. data/lib/origen/utility/design_sync.rb +494 -0
  279. data/lib/origen/utility/diff.rb +158 -0
  280. data/lib/origen/utility/input_capture.rb +121 -0
  281. data/lib/origen/utility/mailer.rb +143 -0
  282. data/lib/origen/utility/s_record.rb +205 -0
  283. data/lib/origen/utility/time_and_date.rb +30 -0
  284. data/lib/origen/utility.rb +12 -0
  285. data/lib/origen/version_checker.rb +117 -0
  286. data/lib/origen/version_string.rb +356 -0
  287. data/lib/origen.rb +648 -0
  288. data/lib/tasks/gem.rake +27 -22
  289. data/origen_site_config.yml +36 -0
  290. data/source_setup +17 -0
  291. data/spec/format/rgen_formatter.rb +14 -0
  292. data/templates/api_doc/README.txt.erb +24 -0
  293. data/templates/code_generators/gemfile_app.rb +4 -0
  294. data/templates/code_generators/gemfile_plugin.rb +6 -0
  295. data/templates/code_generators/gemspec.rb +33 -0
  296. data/templates/code_generators/rakefile.rb +10 -0
  297. data/templates/code_generators/spec_helper.rb +49 -0
  298. data/templates/code_generators/version.rb +8 -0
  299. data/templates/code_generators/version_time.rb +3 -0
  300. data/templates/git/gitignore.erb +33 -0
  301. data/templates/j750/_vt_flow.txt.erb +8 -0
  302. data/templates/j750/_vt_instances.txt.erb +4 -0
  303. data/templates/j750/program_sheet.txt.erb +9 -0
  304. data/templates/nanoc/Rules +74 -0
  305. data/templates/nanoc/config.yaml +77 -0
  306. data/templates/nanoc/content/favicon.ico +0 -0
  307. data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
  308. data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
  309. data/templates/nanoc/layouts/freescale.html.erb +79 -0
  310. data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
  311. data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
  312. data/templates/nanoc/lib/default.rb +2 -0
  313. data/templates/nanoc/lib/gzip_filter.rb +16 -0
  314. data/templates/nanoc/lib/haml_code_filter.rb +41 -0
  315. data/templates/nanoc/lib/helpers.rb +1 -0
  316. data/templates/nanoc/lib/search_filter.rb +62 -0
  317. data/templates/nanoc_dynamic/content/search.js.erb +92 -0
  318. data/templates/shared/web/_logo.html +10 -0
  319. data/templates/test/_inline_sub.txt.erb +2 -0
  320. data/templates/test/environment.txt.erb +1 -0
  321. data/templates/test/inline.txt.erb +11 -0
  322. data/templates/test/inspections.txt.erb +19 -0
  323. data/templates/test/set1/_sub1.txt.erb +12 -0
  324. data/templates/test/set1/_sub4.txt.erb +1 -0
  325. data/templates/test/set1/_sub5.txt.erb +1 -0
  326. data/templates/test/set1/main.txt.erb +53 -0
  327. data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
  328. data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
  329. data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
  330. data/templates/test/set2/template_with_no_erb_1.txt +9 -0
  331. data/templates/test/set2/template_with_no_erb_2.txt +9 -0
  332. data/templates/test/set3/_layout.html.erb +4 -0
  333. data/templates/test/set3/content.html.erb +6 -0
  334. data/templates/time/filter.rb.erb +15 -0
  335. data/templates/time/rules.rb.erb +45 -0
  336. metadata +639 -5
@@ -0,0 +1,49 @@
1
+ require 'nokogiri'
2
+ #require "byebug"
3
+
4
+ class BootstrapFilter < Nanoc::Filter
5
+ identifier :bootstrap
6
+
7
+ def run(content, params={})
8
+ doc = Nokogiri::HTML.fragment(content)
9
+
10
+ # Add table class to all tables so that they are formatted by bootstrap
11
+ doc.search('table').tap{ |ns| ns.add_class('table') }.each do |n|
12
+ n.text
13
+ end
14
+
15
+ # Add an anchor to all headers
16
+ if item[:header_anchors].nil? || item[:header_anchors]
17
+ tags = "h1, h2, h3, h4"
18
+ first_done = false
19
+ doc.css(tags).each do |header|
20
+ # Skip the first header in the doc, looks better and no advantage to having an anchor on it
21
+ if first_done
22
+ # Don't add an anchor link to headers that already contain a link
23
+ unless header.at_css("a")
24
+ tag = header.name
25
+ cls = header.attr("class")
26
+ unless cls && cls =~ /(topic-title|topic-subtitle|no-anchor)/
27
+ header.replace anchor(tag, header.text)
28
+ end
29
+ end
30
+ end
31
+ first_done = true
32
+ end
33
+ end
34
+
35
+ doc.to_html
36
+ end
37
+
38
+ def anchor(tag, msg)
39
+ id = msg.gsub(" ", "_")
40
+ html = <<-END
41
+ <div>
42
+ <a class="anchor" name="#{id}"></a>
43
+ <#{tag}><a href="##{id}">#{msg}</a></#{tag}>
44
+ </div>
45
+ END
46
+ # Need to pass back a node, couldn't work out better syntax to do this
47
+ Nokogiri::HTML(html).css("div")
48
+ end
49
+ end
@@ -0,0 +1,41 @@
1
+ require 'nokogiri'
2
+ require "coderay"
3
+
4
+ module CodeRay
5
+ class << self
6
+ alias :orig_scan :scan
7
+ # Override the coderay scan method to remove escaped underscores prior
8
+ # to passing over
9
+ def scan(*args)
10
+ args.first.gsub!("\\_", "_")
11
+ orig_scan(*args)
12
+ end
13
+ end
14
+ end
15
+
16
+ class CodeblocksFilter < Nanoc::Filter
17
+ identifier :codeblocks
18
+
19
+ def run(content, params={})
20
+ doc = Nokogiri::HTML.fragment(content)
21
+ # Remove any escaped underscores from code blocks that are not marked
22
+ # up by coderay
23
+ doc.search('code').each do |n|
24
+ n.content = n.content.gsub("\\_", "_")
25
+ end
26
+ # Same for coderay markup, not sure if this will apply always,
27
+ # but seems to deal with highlighted Ruby
28
+ # Keeping for future reference, but now replaced by remove underscores
29
+ # prior to passing to coderay above
30
+ #doc.search('.CodeRay .code').each do |n|
31
+ # n.xpath("//text()[. = '\\_']").each do |n|
32
+ # n.content = n.content.gsub("\\_", "_")
33
+ # end
34
+ # n.xpath("//text()[. = '\\']").each do |n|
35
+ # n.content = n.content.gsub("\\", "")
36
+ # end
37
+ #end
38
+ doc.to_html
39
+ end
40
+
41
+ end
@@ -0,0 +1,2 @@
1
+ # All files in the 'lib' directory will be loaded
2
+ # before nanoc starts compiling.
@@ -0,0 +1,16 @@
1
+ require "zlib"
2
+
3
+ class GzipFilter < Nanoc::Filter
4
+ identifier :gzip
5
+
6
+ type text: :binary
7
+
8
+ def run(content, params = {})
9
+ Zlib::GzipWriter.open(output_filename, Zlib::BEST_COMPRESSION) do |gz|
10
+ gz.orig_name = "index.html"
11
+ gz.mtime = File.mtime(item[:filename]).to_i
12
+ gz.write content
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,41 @@
1
+ # Disabled this for now, don't think anyone uses it.
2
+ # Problem is that the HAML gem seems to have changed in the upgrade to
3
+ # Ruby v2.1.0 and the below will need to be updated accordingly.
4
+ #
5
+ #require "haml"
6
+ #
7
+ ## This adds a :code filter to allow code snippets to be embedded in HAML
8
+ ## docs which are then highlighted by Coderay. Ruby is the default language, select
9
+ ## another by including #!language in the code snippet.
10
+ ##
11
+ ## :code
12
+ ## def say(msg)
13
+ ## puts "#{msg}"
14
+ ## end
15
+ #module Haml::Filters::Code
16
+ #
17
+ # include Haml::Filters::Base
18
+ # lazy_require "coderay"
19
+ #
20
+ # def render(content, options={})
21
+ # ::CodeRay.scan(*prepare(content)).send(:div, {})
22
+ # end
23
+ #
24
+ # # Prepares the text for passing to `::CodeRay.scan`.
25
+ # #
26
+ # # @param [String] text
27
+ # # @return [Array<String, Symbol>] code and language
28
+ # def prepare(text)
29
+ # if text =~ /#!(\S+)/
30
+ # [ text.sub(/\A\s*#!(\S+)\s*\n+/, ""), $1.downcase.to_sym ]
31
+ # else
32
+ # [ text, :ruby ]
33
+ # end
34
+ # end
35
+ #
36
+ # def compile(precompiler, text)
37
+ # text = Haml::Helpers::find_and_preserve(render(text).rstrip, precompiler.options[:preserve])
38
+ # precompiler.send(:push_text, text)
39
+ # end
40
+ #
41
+ #end
@@ -0,0 +1 @@
1
+ include Nanoc::Helpers::Rendering
@@ -0,0 +1,62 @@
1
+ # Modified from: https://github.com/severinh/nanoc-lunr-js-search/blob/master/lib/nanoc/filters/lunr_js_search.rb
2
+ require 'json'
3
+ require 'nokogiri'
4
+
5
+ class SearchFilter < Nanoc::Filter
6
+ identifier :search
7
+
8
+ def run(content, params={})
9
+ doc = Nokogiri::HTML(content)
10
+ url = assigns[:item_rep].path
11
+ #first_image = doc.xpath('//img/@src').to_a[0]
12
+ document = {
13
+ title: extract_first(doc, '//article//*[self::h1 or self::h2]/text()'),
14
+ subtitle: extract_first(doc, '//article//*[self::h3]/text()'),
15
+ body: extract_all(doc, '//article//*/text()'),
16
+ #img: (first_image.nil?) ? '' : first_image.value(),
17
+ #alt: extract_values(doc, '//article//img/@alt')
18
+ }
19
+
20
+ if File.exist?(search_file)
21
+ documents = JSON.parse(File.read(search_file))
22
+ else
23
+ documents = {}
24
+ end
25
+
26
+ documents[url] = document
27
+
28
+ File.open(search_file, 'w') do |file|
29
+ file.write(JSON.pretty_generate(documents))
30
+ end
31
+
32
+ content
33
+ end
34
+
35
+ def search_file
36
+ @search_file ||= File.join(@site.config[:output_dir],
37
+ @site.config[:search_file] || 'search.json')
38
+ end
39
+
40
+ def extract_first(doc, path)
41
+ extract_text(doc, path).first
42
+ end
43
+
44
+ def extract_all(doc, path)
45
+ extract_text(doc, path).join(' ')
46
+ end
47
+
48
+ def extract_text(doc, path)
49
+ doc.xpath(path).to_a.map { |t|
50
+ t.content.gsub('\r', ' ').gsub('\n', ' ').squeeze(' ').strip
51
+ }.reject { |t|
52
+ t.empty?
53
+ }
54
+ end
55
+
56
+ def extract_values(doc, path)
57
+ tokens = doc.xpath(path).to_a.map { |t|
58
+ t.value().gsub('\r', ' ').gsub('\n', ' ').squeeze(' ').strip
59
+ }
60
+ tokens.join(' ')
61
+ end
62
+ end
@@ -0,0 +1,92 @@
1
+ $.getJSON("<%= path 'search.json' %>", function(json) {
2
+ window.index = lunr(function() {
3
+ this.field("title", {boost: 10});
4
+ this.field("subtitle", {boost: 5});
5
+ this.field("body");
6
+ this.ref("id");
7
+ });
8
+ window.articles = json;
9
+ $.each(json, function(id, content) {
10
+ window.index.add({
11
+ id: id,
12
+ title: content.title,
13
+ subtitle: content.subtitle,
14
+ body: content.body
15
+ });
16
+ });
17
+ });
18
+
19
+ $(function() {
20
+ $("#search button").click(function() {
21
+ search(true);
22
+ });
23
+ $("#search input").keypress(function(e) {
24
+ if(e.which == 13) {
25
+ e.preventDefault();
26
+ search(false);
27
+ }
28
+ });
29
+ })
30
+
31
+ function search(go) {
32
+ var term = $("#search input").val();
33
+ // Wait for search index to populate
34
+ while (!window.index) {};
35
+ var results = window.index.search(term);
36
+
37
+ if(results && results.length == 1) {
38
+ window.location.replace("<%= path "" %>" + results[0].ref + "?highlight=" + escape(term));
39
+ } else if(results && results.length > 1) {
40
+ if (go) {
41
+ window.location.replace("<%= path "" %>" + results[0].ref + "?highlight=" + escape(term));
42
+ } else {
43
+ displayResults(results, term);
44
+ }
45
+ } else {
46
+ alert("Found nothing");
47
+ }
48
+ }
49
+
50
+ function displayResults(results, term) {
51
+ var resultTemplate = $("search-view-template");
52
+ var container = $("article");
53
+
54
+ container.empty();
55
+ container.append("<h2>Results</h2>");
56
+
57
+ $.each(results, function(i, result) {
58
+ var article = window.articles[result.ref];
59
+ container.append("<p><a href=\"<%= path "" %>" + result.ref + "?highlight=" + escape(term) + "\">" + article.title + " - " + article.subtitle + "</a></p>");
60
+ });
61
+ }
62
+
63
+ function getParams() {
64
+ var query_string = {};
65
+ var query = window.location.search.substring(1);
66
+ var vars = query.split("&");
67
+ for (var i=0;i<vars.length;i++) {
68
+ var pair = vars[i].split("=");
69
+ // If first entry with this name
70
+ if (typeof query_string[pair[0]] === "undefined") {
71
+ query_string[pair[0]] = pair[1];
72
+ // If second entry with this name
73
+ } else if (typeof query_string[pair[0]] === "string") {
74
+ var arr = [ query_string[pair[0]], pair[1] ];
75
+ query_string[pair[0]] = arr;
76
+ // If third or later entry with this name
77
+ } else {
78
+ query_string[pair[0]].push(pair[1]);
79
+ }
80
+ }
81
+ return query_string;
82
+ }
83
+
84
+ $(document).ready(function() {
85
+ var params = getParams();
86
+ $("#search input").focus();
87
+
88
+ if (params.highlight) {
89
+ var term = unescape(params.highlight);
90
+ $('article').highlight(term);
91
+ }
92
+ });
@@ -0,0 +1,10 @@
1
+ <div class="pull-right logo-rgen" style="margin-top: 18px; margin-left: 10px">
2
+ <a href="http://rgen.freescale.net" style="text-decoration: none; color: #e66a08; font-weight: bold; font-size: 20px;">
3
+ <span>RGen</span>
4
+ </a>
5
+ </div>
6
+ <div class="pull-right">
7
+ <a href="http://rgen.freescale.net">
8
+ <img src="http://rgen.freescale.net/img/fsl_logo.png" style="height:40px">
9
+ </a>
10
+ </div>
@@ -0,0 +1,2 @@
1
+ From a sub!
2
+ x = <%= options[:x] %>
@@ -0,0 +1 @@
1
+ Current environment: <%= RGen.environment.name %>
@@ -0,0 +1,11 @@
1
+ <%= 5 * 5 %>
2
+ Hello
3
+ % if options[:extra]
4
+ and goodbye
5
+ % end
6
+ % if options[:test_scope]
7
+ <%= secret %>
8
+ % end
9
+ % if options[:test_render]
10
+ <%= render "inline_sub", x: 10 %>
11
+ % end
@@ -0,0 +1,19 @@
1
+ This template is used to test that the custom inspect methods of the various RGen datatypes work
2
+
3
+ Should display a list of registers:
4
+
5
+ <%= $nvm.regs.inspect %>
6
+
7
+ Should display an actual register:
8
+
9
+ <%= $nvm.regs(:mclkdiv).inspect %>
10
+
11
+ This one had problems in real life:
12
+
13
+ % $nvm.add_proth_reg
14
+ <%= $nvm.regs(:proth).inspect %>
15
+
16
+ Check the multi bitgroups scattered through the register
17
+
18
+ % $nvm.add_multi_split_reg
19
+ <%= $nvm.regs(:multi_group).inspect %>
@@ -0,0 +1,12 @@
1
+ sub1: This is content from sub1
2
+ sub1:
3
+ sub1: This data value should be 0 to prove that it has not
4
+ sub1: been influenced by the calling context:
5
+ sub1:
6
+ sub1: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
7
+ sub1:
8
+ % if options[:data]
9
+ sub1: Data values passed in: 0x<%= options[:data].to_s(16).upcase %>
10
+ % else
11
+ sub1: No data value passed in!
12
+ % end
@@ -0,0 +1 @@
1
+ sub4: This is a single line from sub4!
@@ -0,0 +1 @@
1
+ sub5: The value of $nvm.attribute_x is: <%= $nvm.attribute_x %>
@@ -0,0 +1,53 @@
1
+ main: This is a basic template example to test the RGen template compiler.
2
+ main:
3
+ main: Verify that the target objects can be accessed:
4
+ main:
5
+ % $nvm.reg(:data).write(0x5555)
6
+ main: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
7
+ main:
8
+ main: Verify that sub templates can be rendered and executed within their own context:
9
+ main:
10
+ <%= render "sub1" %>
11
+ main: Verify that import is an alias for render
12
+ main:
13
+ <%= import "sub1" %>
14
+ main:
15
+ main: Rendering the template should not disrupt the current context, verify that the
16
+ main: data is still 0x5555:
17
+ main:
18
+ main: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
19
+ main:
20
+ main: Verify that option data can be passed to rendered templates, the data
21
+ main: printed here should be 0x1234:
22
+ main:
23
+ <%= render "sub1", data: 0x1234 %>
24
+ main:
25
+ main: Again verify that the current context is still intact:
26
+ main: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
27
+ main:
28
+ main: Verify that templates from sub directories can be rendered:
29
+ main:
30
+ <%= render "sub_dir/sub2" %>
31
+ main:
32
+ main: Again verify that the current context is still intact:
33
+ main: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
34
+ main:
35
+ main: Verify that no extra linebreaks are added:
36
+ <%= render "sub4.txt.erb" %>
37
+ main: This should butt up against the sub 4 line
38
+ main:
39
+ main: And that leading spaces are stripped, there should be
40
+ main: no leading whitespace before the sub 4 line:
41
+ <%= render "sub4.txt.erb" %>
42
+ main: This is a test that helpers can compile templates inline
43
+ <%= test_compile_inline_from_helper %>
44
+ main: This is a test that indent works
45
+ <%= render "sub1", indent: 10 %>
46
+ main: Verify by default that render will reload the target,
47
+ main: the value here should be blank
48
+ % $nvm.attribute_x = "X"
49
+ <%= render "sub5" %>
50
+ main: Verify that target reload can optionally be inhibited,
51
+ main: the value here should be X
52
+ % $nvm.attribute_x = "X"
53
+ <%= render "sub5", preserve_target: true %>
@@ -0,0 +1,20 @@
1
+ sub2: This is content from sub2
2
+ sub2:
3
+ sub2: This data value should be 0 to prove that it has not
4
+ sub2: been influenced by the calling context:
5
+ sub2:
6
+ sub2: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
7
+ sub2:
8
+ % if options[:data]
9
+ sub2: Data values passed in: 0x<%= options[:data].to_s(16).upcase %>
10
+ % else
11
+ sub2: No data value passed in!
12
+ % end
13
+ sub2:
14
+ sub2: Verify that templates can render additional sub-templates:
15
+ sub2:
16
+ % if options[:data]
17
+ <%= render "sub3", data: options[:data] * 2 %>
18
+ % else
19
+ <%= render "sub3" %>
20
+ % end
@@ -0,0 +1,12 @@
1
+ sub3: This is content from sub3
2
+ sub3:
3
+ sub3: This data value should be 0 to prove that it has not
4
+ sub3: been influenced by the calling context:
5
+ sub3:
6
+ sub3: Data: 0x<%= $nvm.reg(:data).val.to_s(16).upcase %>
7
+ sub3:
8
+ % if options[:data]
9
+ sub3: Data values passed in: 0x<%= options[:data].to_s(16).upcase %>
10
+ % else
11
+ sub3: No data value passed in!
12
+ % end
@@ -0,0 +1,4 @@
1
+ main2: Another simple template to prove that things work from a
2
+ main2: sub-directory
3
+ main2:
4
+ <%= render "sub2", data: 0x1111 %>
@@ -0,0 +1,9 @@
1
+ This is a template without a
2
+ .erb extension.
3
+
4
+ It should only compile if
5
+ RGen.config.compile_only_dot_erb_files == false
6
+
7
+ % 10.times do
8
+ RGen.config.compile_only_dot_erb_files is <%= RGen.config.compile_only_dot_erb_files %>
9
+ % end
@@ -0,0 +1,9 @@
1
+ This is a template without a
2
+ .erb extension.
3
+
4
+ It should only compile if
5
+ RGen.config.compile_only_dot_erb_files == false
6
+
7
+ % 10.times do
8
+ RGen.config.compile_only_dot_erb_files is <%= RGen.config.compile_only_dot_erb_files %>
9
+ % end
@@ -0,0 +1,4 @@
1
+ <div class="container">
2
+ <%= yield %>
3
+ <%= options[:repeat] %>
4
+ </div>
@@ -0,0 +1,6 @@
1
+ <p>I'm before the layout</p>
2
+ % render "layout", repeat: 2 do
3
+ <p>I'm inside the layout</p>
4
+ <p>The value of repeat is...</p>
5
+ % end
6
+ <p>I'm after the layout</p>
@@ -0,0 +1,15 @@
1
+ class TestTimeFilter
2
+
3
+ # All tests to be imported will be passed to this method, if it returns
4
+ # true then the test will be imported, if it returns false then it will not
5
+ def import?(test)
6
+ # For example to only import tests beginning with "nvm":
7
+ # if test =~ /^nvm/
8
+ # true
9
+ # else
10
+ # false
11
+ # end
12
+ true
13
+ end
14
+
15
+ end
@@ -0,0 +1,45 @@
1
+ class TestTimeRules
2
+
3
+ # All tests to be imported will be passed to this method after they have been filtered.
4
+ #
5
+ # Whatever this method returns will be assigned as the rule to be used to work out how
6
+ # that test scales from one target to another.
7
+ def assign(name, attrs, options={})
8
+ :constant
9
+ end
10
+
11
+ # This method will be called to evaluate the result of the rule for the reference target -
12
+ # that is the target used when importing an execution time profile.
13
+ #
14
+ # The rule name can be obtained from attrs["rule"]
15
+ def evaluate(name, attrs, options={})
16
+ rule = attrs["rule"]
17
+
18
+ case rule
19
+ when :constant
20
+ 1
21
+ else
22
+ raise "Rule not implemented - #{rule}"
23
+ end
24
+ end
25
+
26
+ # This method will be called for each test to forecast what the time will be for the current
27
+ # target, it must return a numeric value in all cases.
28
+ #
29
+ # The rule name can obtained from attrs["rule"] and the results from the reference target can
30
+ # be obtained from attrs["reference"].
31
+ #
32
+ # The most basic way to forecast (and which could get you pretty far) is simply to ratio the rule
33
+ # result for the reference target with the result from the current target, and then multiply
34
+ # that by the reference time - an example of this is shown below.
35
+ def forecast(name, attrs, options={})
36
+ ref = attrs["reference"]
37
+
38
+ val_for_current_target = evaluate(name, attrs, options)
39
+ val_for_reference_target = ref["rule_result"]
40
+
41
+ ref["time"] * (val_for_current_target / val_for_reference_target.to_f) # Force to a float so the
42
+ # result is not an integer
43
+ end
44
+
45
+ end