nudge 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (883) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +11 -7
  3. data/VERSION +1 -1
  4. data/lib/instructions/bool/bool_and.rb +19 -0
  5. data/lib/instructions/bool/bool_define.rb +6 -0
  6. data/lib/instructions/bool/bool_depth.rb +6 -0
  7. data/lib/instructions/bool/bool_duplicate.rb +6 -0
  8. data/lib/instructions/bool/bool_equal_q.rb +19 -0
  9. data/lib/instructions/bool/bool_flush.rb +6 -0
  10. data/lib/instructions/bool/bool_not.rb +18 -0
  11. data/lib/instructions/bool/bool_or.rb +19 -0
  12. data/lib/instructions/bool/bool_pop.rb +6 -0
  13. data/lib/instructions/bool/bool_random.rb +13 -0
  14. data/lib/instructions/bool/bool_rotate.rb +6 -0
  15. data/lib/instructions/bool/bool_shove.rb +6 -0
  16. data/lib/instructions/bool/bool_swap.rb +6 -0
  17. data/lib/instructions/bool/bool_xor.rb +19 -0
  18. data/lib/instructions/bool/bool_yank.rb +6 -0
  19. data/lib/instructions/bool/bool_yankdup.rb +6 -0
  20. data/lib/instructions/code/code_atom_q.rb +16 -0
  21. data/lib/instructions/code/code_backbone_points.rb +24 -0
  22. data/lib/instructions/code/code_car.rb +20 -0
  23. data/lib/instructions/code/code_cdr.rb +20 -0
  24. data/lib/instructions/code/code_concatenate.rb +31 -0
  25. data/lib/instructions/code/code_cons.rb +25 -0
  26. data/lib/instructions/code/code_container.rb +28 -0
  27. data/lib/instructions/code/code_contains_q.rb +22 -0
  28. data/lib/instructions/code/code_define.rb +21 -0
  29. data/lib/instructions/code/code_depth.rb +6 -0
  30. data/lib/instructions/code/code_discrepancy.rb +29 -0
  31. data/lib/instructions/code/code_do_count.rb +27 -0
  32. data/lib/instructions/code/code_do_range.rb +42 -0
  33. data/lib/instructions/code/code_do_times.rb +38 -0
  34. data/lib/instructions/code/code_duplicate.rb +6 -0
  35. data/lib/instructions/code/code_equal_q.rb +17 -0
  36. data/lib/instructions/code/code_execute.rb +19 -0
  37. data/lib/instructions/code/code_execute_then_pop.rb +20 -0
  38. data/lib/instructions/code/code_flush.rb +6 -0
  39. data/lib/instructions/code/code_gsub.rb +35 -0
  40. data/lib/instructions/code/code_if.rb +22 -0
  41. data/lib/instructions/code/code_instructions.rb +15 -0
  42. data/lib/instructions/code/code_list.rb +19 -0
  43. data/lib/instructions/code/code_member_q.rb +26 -0
  44. data/lib/instructions/code/code_name_lookup.rb +19 -0
  45. data/lib/instructions/code/code_nth.rb +24 -0
  46. data/lib/instructions/code/code_nth_cdr.rb +30 -0
  47. data/lib/instructions/code/code_nth_point.rb +21 -0
  48. data/lib/instructions/code/code_null_q.rb +15 -0
  49. data/lib/instructions/code/code_parses_q.rb +15 -0
  50. data/lib/instructions/code/code_points.rb +19 -0
  51. data/lib/instructions/code/code_pop.rb +6 -0
  52. data/lib/instructions/code/code_position.rb +22 -0
  53. data/lib/instructions/code/code_quote.rb +14 -0
  54. data/lib/instructions/code/code_replace_nth_point.rb +30 -0
  55. data/lib/instructions/code/code_rotate.rb +6 -0
  56. data/lib/instructions/code/code_shove.rb +6 -0
  57. data/lib/instructions/code/code_swap.rb +6 -0
  58. data/lib/instructions/code/code_yank.rb +6 -0
  59. data/lib/instructions/code/code_yankdup.rb +6 -0
  60. data/lib/instructions/conversion/bool_from_float.rb +14 -0
  61. data/lib/instructions/conversion/bool_from_int.rb +14 -0
  62. data/lib/instructions/conversion/code_from_bool.rb +16 -0
  63. data/lib/instructions/conversion/code_from_float.rb +16 -0
  64. data/lib/instructions/conversion/code_from_int.rb +17 -0
  65. data/lib/instructions/conversion/code_from_name.rb +16 -0
  66. data/lib/instructions/conversion/float_from_bool.rb +14 -0
  67. data/lib/instructions/conversion/float_from_int.rb +14 -0
  68. data/lib/instructions/conversion/int_from_bool.rb +14 -0
  69. data/lib/instructions/conversion/int_from_float.rb +14 -0
  70. data/lib/instructions/exec/exec_define.rb +6 -0
  71. data/lib/instructions/exec/exec_depth.rb +6 -0
  72. data/lib/instructions/exec/exec_do_count.rb +23 -0
  73. data/lib/instructions/exec/exec_do_range.rb +36 -0
  74. data/lib/instructions/exec/exec_do_times.rb +34 -0
  75. data/lib/instructions/exec/exec_duplicate.rb +6 -0
  76. data/lib/instructions/exec/exec_equal_q.rb +17 -0
  77. data/lib/instructions/exec/exec_flush.rb +6 -0
  78. data/lib/instructions/exec/exec_if.rb +8 -0
  79. data/lib/instructions/exec/exec_k.rb +14 -0
  80. data/lib/instructions/exec/exec_pop.rb +6 -0
  81. data/lib/instructions/exec/exec_rotate.rb +6 -0
  82. data/lib/instructions/exec/exec_s.rb +18 -0
  83. data/lib/instructions/exec/exec_shove.rb +6 -0
  84. data/lib/instructions/exec/exec_swap.rb +6 -0
  85. data/lib/instructions/exec/exec_y.rb +15 -0
  86. data/lib/instructions/exec/exec_yank.rb +6 -0
  87. data/lib/instructions/exec/exec_yankdup.rb +6 -0
  88. data/lib/instructions/float/float_abs.rb +14 -0
  89. data/lib/instructions/float/float_add.rb +15 -0
  90. data/lib/instructions/float/float_cosine.rb +14 -0
  91. data/lib/instructions/float/float_define.rb +6 -0
  92. data/lib/instructions/float/float_depth.rb +6 -0
  93. data/lib/instructions/float/float_divide.rb +20 -0
  94. data/lib/instructions/float/float_duplicate.rb +6 -0
  95. data/lib/instructions/float/float_equal_q.rb +15 -0
  96. data/lib/instructions/float/float_flush.rb +6 -0
  97. data/lib/instructions/float/float_greater_than_q.rb +15 -0
  98. data/lib/instructions/float/float_if.rb +8 -0
  99. data/lib/instructions/float/float_less_than_q.rb +15 -0
  100. data/lib/instructions/float/float_max.rb +15 -0
  101. data/lib/instructions/float/float_min.rb +15 -0
  102. data/lib/instructions/float/float_modulo.rb +20 -0
  103. data/lib/instructions/float/float_multiply.rb +15 -0
  104. data/lib/instructions/float/float_negative.rb +14 -0
  105. data/lib/instructions/float/float_pop.rb +6 -0
  106. data/lib/instructions/float/float_power.rb +20 -0
  107. data/lib/instructions/float/float_random.rb +13 -0
  108. data/lib/instructions/float/float_rotate.rb +6 -0
  109. data/lib/instructions/float/float_shove.rb +6 -0
  110. data/lib/instructions/float/float_sine.rb +14 -0
  111. data/lib/instructions/float/float_sqrt.rb +18 -0
  112. data/lib/instructions/float/float_subtract.rb +15 -0
  113. data/lib/instructions/float/float_swap.rb +6 -0
  114. data/lib/instructions/float/float_tangent.rb +14 -0
  115. data/lib/instructions/float/float_yank.rb +6 -0
  116. data/lib/instructions/float/float_yankdup.rb +6 -0
  117. data/lib/instructions/infrastructure.rb +335 -17
  118. data/lib/instructions/int/int_abs.rb +14 -0
  119. data/lib/instructions/int/int_add.rb +15 -0
  120. data/lib/instructions/int/int_define.rb +6 -0
  121. data/lib/instructions/int/int_depth.rb +6 -0
  122. data/lib/instructions/int/int_divide.rb +20 -0
  123. data/lib/instructions/int/int_duplicate.rb +6 -0
  124. data/lib/instructions/int/int_equal_q.rb +15 -0
  125. data/lib/instructions/int/int_flush.rb +6 -0
  126. data/lib/instructions/int/int_greater_than_q.rb +15 -0
  127. data/lib/instructions/int/int_if.rb +8 -0
  128. data/lib/instructions/int/int_less_than_q.rb +15 -0
  129. data/lib/instructions/int/int_max.rb +16 -0
  130. data/lib/instructions/int/int_min.rb +16 -0
  131. data/lib/instructions/int/int_modulo.rb +20 -0
  132. data/lib/instructions/int/int_multiply.rb +15 -0
  133. data/lib/instructions/int/int_negative.rb +14 -0
  134. data/lib/instructions/int/int_pop.rb +6 -0
  135. data/lib/instructions/int/int_power.rb +16 -0
  136. data/lib/instructions/int/int_random.rb +13 -0
  137. data/lib/instructions/int/int_rotate.rb +6 -0
  138. data/lib/instructions/int/int_shove.rb +6 -0
  139. data/lib/instructions/int/int_subtract.rb +16 -0
  140. data/lib/instructions/int/int_swap.rb +6 -0
  141. data/lib/instructions/int/int_yank.rb +6 -0
  142. data/lib/instructions/int/int_yankdup.rb +6 -0
  143. data/lib/instructions/name/name_depth.rb +6 -0
  144. data/lib/instructions/name/name_disable_lookup.rb +12 -0
  145. data/lib/instructions/name/name_duplicate.rb +6 -0
  146. data/lib/instructions/name/name_equal_q.rb +15 -0
  147. data/lib/instructions/name/name_flush.rb +6 -0
  148. data/lib/instructions/name/name_next.rb +14 -0
  149. data/lib/instructions/name/name_pop.rb +6 -0
  150. data/lib/instructions/name/name_random_bound.rb +14 -0
  151. data/lib/instructions/name/name_rotate.rb +6 -0
  152. data/lib/instructions/name/name_shove.rb +6 -0
  153. data/lib/instructions/name/name_swap.rb +6 -0
  154. data/lib/instructions/name/name_unbind.rb +17 -0
  155. data/lib/instructions/name/name_yank.rb +6 -0
  156. data/lib/instructions/name/name_yankdup.rb +6 -0
  157. data/lib/interpreter/grammars/nudge_codeblock.treetop +17 -0
  158. data/lib/interpreter/grammars/nudge_codeblock_helpers.rb +19 -0
  159. data/lib/interpreter/grammars/nudge_common.treetop +15 -0
  160. data/lib/interpreter/grammars/nudge_instruction.treetop +14 -0
  161. data/lib/interpreter/grammars/nudge_instruction_helpers.rb +14 -0
  162. data/lib/interpreter/grammars/nudge_reference.treetop +9 -0
  163. data/lib/interpreter/grammars/nudge_reference_helpers.rb +14 -0
  164. data/lib/interpreter/grammars/nudge_value.treetop +14 -0
  165. data/lib/interpreter/grammars/nudge_value_helpers.rb +19 -0
  166. data/lib/interpreter/interpreter.rb +74 -23
  167. data/lib/interpreter/nudge_program.rb +253 -0
  168. data/lib/interpreter/parse.tab.rb +264 -0
  169. data/lib/interpreter/programPoints.rb +119 -98
  170. data/lib/interpreter/types/codeType.rb +114 -89
  171. data/lib/interpreter/types/pushTypes.rb +33 -20
  172. data/lib/nudge.rb +25 -26
  173. data/readme.md +13 -10
  174. data/spec/fixtures/long_arithmetic.example +7 -4
  175. data/spec/instructions/bool/bool_and_spec.rb +61 -0
  176. data/spec/instructions/bool/bool_define_spec.rb +69 -0
  177. data/spec/instructions/bool/bool_depth_spec.rb +39 -0
  178. data/spec/instructions/bool/bool_equal_q_spec.rb +61 -0
  179. data/spec/instructions/bool/bool_flush_spec.rb +37 -0
  180. data/spec/instructions/bool/bool_not_spec.rb +61 -0
  181. data/spec/instructions/bool/bool_or_spec.rb +61 -0
  182. data/spec/instructions/bool/bool_random_spec.rb +39 -0
  183. data/spec/instructions/bool/bool_shove_spec.rb +69 -0
  184. data/spec/instructions/bool/bool_xor_spec.rb +61 -0
  185. data/spec/instructions/bool/bool_yank_spec.rb +71 -0
  186. data/spec/instructions/bool/bool_yankdup_spec.rb +70 -0
  187. data/spec/instructions/code/code_atom_q_spec.rb +44 -0
  188. data/spec/instructions/code/code_backbone_points_spec.rb +57 -0
  189. data/spec/instructions/code/code_car_spec.rb +50 -0
  190. data/spec/instructions/code/code_cdr_spec.rb +51 -0
  191. data/spec/instructions/code/code_concatenate_spec.rb +81 -0
  192. data/spec/instructions/code/code_cons_spec.rb +63 -0
  193. data/spec/instructions/code/code_container_spec.rb +77 -0
  194. data/spec/instructions/code/code_contains_q_spec.rb +82 -0
  195. data/spec/instructions/code/code_define_spec.rb +76 -0
  196. data/spec/instructions/code/code_discrepancy_spec.rb +81 -0
  197. data/spec/instructions/code/code_do_count_spec.rb +83 -0
  198. data/spec/instructions/code/code_do_range_spec.rb +113 -0
  199. data/spec/instructions/code/code_do_times_spec.rb +116 -0
  200. data/spec/instructions/code/code_equal_q_spec.rb +49 -0
  201. data/spec/instructions/code/code_execute_spec.rb +52 -0
  202. data/spec/instructions/code/code_execute_then_pop_spec.rb +61 -0
  203. data/spec/instructions/code/code_fromname_spec.rb +37 -0
  204. data/spec/instructions/code/code_gsub_spec.rb +112 -0
  205. data/spec/instructions/code/code_if_spec.rb +53 -0
  206. data/spec/instructions/code/code_instructions_spec.rb +42 -0
  207. data/spec/instructions/code/code_list_spec.rb +49 -0
  208. data/spec/instructions/code/code_member_q_spec.rb +77 -0
  209. data/spec/instructions/code/code_name_lookup_spec.rb +65 -0
  210. data/spec/instructions/code/code_noop_spec.rb +38 -0
  211. data/spec/instructions/code/code_nth_cdr_spec.rb +77 -0
  212. data/spec/instructions/code/code_nth_point_spec.rb +67 -0
  213. data/spec/instructions/code/code_nth_spec.rb +62 -0
  214. data/spec/instructions/code/code_null_q_spec.rb +44 -0
  215. data/spec/instructions/code/code_parses_q_spec.rb +73 -0
  216. data/spec/instructions/code/code_points_spec.rb +49 -0
  217. data/spec/instructions/code/code_position_spec.rb +74 -0
  218. data/spec/instructions/code/code_quote_spec.rb +53 -0
  219. data/spec/instructions/code/code_replace_nth_point_spec.rb +115 -0
  220. data/spec/instructions/code/code_stack_spec.rb +386 -0
  221. data/spec/instructions/exec/exec_define_spec.rb +70 -0
  222. data/spec/instructions/exec/exec_depth_spec.rb +39 -0
  223. data/spec/instructions/exec/exec_do_count_spec.rb +79 -0
  224. data/spec/instructions/exec/exec_do_range_spec.rb +98 -0
  225. data/spec/instructions/exec/exec_do_times_spec.rb +105 -0
  226. data/spec/instructions/exec/exec_duplicate_spec.rb +44 -0
  227. data/spec/instructions/exec/exec_equal_q_spec.rb +50 -0
  228. data/spec/instructions/exec/exec_flush_spec.rb +37 -0
  229. data/spec/instructions/exec/exec_if_spec.rb +51 -0
  230. data/spec/instructions/exec/exec_k_spec.rb +39 -0
  231. data/spec/instructions/exec/exec_pop_spec.rb +38 -0
  232. data/spec/instructions/exec/exec_rotate_spec.rb +40 -0
  233. data/spec/instructions/exec/exec_s_spec.rb +41 -0
  234. data/spec/instructions/exec/exec_shove_spec.rb +68 -0
  235. data/spec/instructions/exec/exec_swap_spec.rb +41 -0
  236. data/spec/instructions/exec/exec_y_spec.rb +41 -0
  237. data/spec/instructions/exec/exec_yank_spec.rb +66 -0
  238. data/spec/instructions/exec/exec_yankdup_spec.rb +69 -0
  239. data/spec/instructions/float/float_abs_spec.rb +50 -0
  240. data/spec/instructions/float/float_add_spec.rb +50 -0
  241. data/spec/instructions/float/float_cosine_spec.rb +61 -0
  242. data/spec/instructions/float/float_define_spec.rb +69 -0
  243. data/spec/instructions/float/float_depth_spec.rb +39 -0
  244. data/spec/instructions/float/float_divide_spec.rb +59 -0
  245. data/spec/instructions/float/float_equal_q_spec.rb +53 -0
  246. data/spec/instructions/float/float_flush_spec.rb +37 -0
  247. data/spec/instructions/float/float_greater_than_q_spec.rb +59 -0
  248. data/spec/instructions/float/float_if_spec.rb +49 -0
  249. data/spec/instructions/float/float_less_than_q_spec.rb +59 -0
  250. data/spec/instructions/float/float_max_spec.rb +51 -0
  251. data/spec/instructions/float/float_min_spec.rb +51 -0
  252. data/spec/instructions/float/float_modulo_spec.rb +59 -0
  253. data/spec/instructions/float/float_multiply_spec.rb +51 -0
  254. data/spec/instructions/float/float_negative_spec.rb +51 -0
  255. data/spec/instructions/float/float_power_spec.rb +59 -0
  256. data/spec/instructions/float/float_random_spec.rb +36 -0
  257. data/spec/instructions/float/float_shove_spec.rb +67 -0
  258. data/spec/instructions/float/float_sine_spec.rb +61 -0
  259. data/spec/instructions/float/float_sqrt_spec.rb +60 -0
  260. data/spec/instructions/float/float_subtract_spec.rb +51 -0
  261. data/spec/instructions/float/float_tangent_spec.rb +62 -0
  262. data/spec/instructions/float/float_yank_spec.rb +65 -0
  263. data/spec/instructions/float/float_yankdup_spec.rb +70 -0
  264. data/spec/instructions/instruction_class_spec.rb +31 -0
  265. data/spec/instructions/int/int_abs_spec.rb +61 -0
  266. data/spec/instructions/int/int_add_spec.rb +60 -0
  267. data/spec/instructions/int/int_define_spec.rb +73 -0
  268. data/spec/instructions/int/int_depth_spec.rb +37 -0
  269. data/spec/instructions/int/int_divide_spec.rb +69 -0
  270. data/spec/instructions/int/int_equal_q_spec.rb +52 -0
  271. data/spec/instructions/int/int_flush_spec.rb +37 -0
  272. data/spec/instructions/int/int_greater_than_q_spec.rb +59 -0
  273. data/spec/instructions/int/int_if_spec.rb +48 -0
  274. data/spec/instructions/int/int_less_than_q_spec.rb +59 -0
  275. data/spec/instructions/int/int_max_spec.rb +61 -0
  276. data/spec/instructions/int/int_min_spec.rb +61 -0
  277. data/spec/instructions/int/int_modulo_spec.rb +69 -0
  278. data/spec/instructions/int/int_multiply_spec.rb +61 -0
  279. data/spec/instructions/int/int_negative_spec.rb +61 -0
  280. data/spec/instructions/int/int_power_spec.rb +73 -0
  281. data/spec/instructions/int/int_random_spec.rb +36 -0
  282. data/spec/instructions/int/int_shove_spec.rb +67 -0
  283. data/spec/instructions/int/int_subtract_spec.rb +61 -0
  284. data/spec/instructions/int/int_yank_spec.rb +85 -0
  285. data/spec/instructions/int/int_yankdup_spec.rb +70 -0
  286. data/spec/instructions/name/name_depth_spec.rb +39 -0
  287. data/spec/instructions/name/name_disable_lookup_spec.rb +47 -0
  288. data/spec/instructions/name/name_equal_q_spec.rb +38 -0
  289. data/spec/instructions/name/name_flush_spec.rb +37 -0
  290. data/spec/instructions/name/name_next_spec.rb +39 -0
  291. data/spec/instructions/name/name_random_bound_spec.rb +57 -0
  292. data/spec/instructions/name/name_shove_spec.rb +67 -0
  293. data/spec/instructions/name/name_unbind_spec.rb +62 -0
  294. data/spec/instructions/name/name_yank_spec.rb +65 -0
  295. data/spec/instructions/name/name_yankdup_spec.rb +69 -0
  296. data/spec/instructions/split_these/bool_stack_spec.rb +95 -0
  297. data/spec/instructions/split_these/conversions_spec.rb +103 -0
  298. data/spec/instructions/split_these/float_stack_spec.rb +92 -0
  299. data/spec/instructions/split_these/int_stack_spec.rb +81 -0
  300. data/spec/instructions/split_these/name_stack_spec.rb +84 -0
  301. data/spec/interpreter/codeblock_point_spec.rb +164 -0
  302. data/spec/interpreter/codetype_spec.rb +219 -185
  303. data/spec/interpreter/instruction_spec.rb +87 -25
  304. data/spec/interpreter/interpreter_spec.rb +230 -36
  305. data/spec/interpreter/nil_point_spec.rb +32 -0
  306. data/spec/interpreter/nudge_program_spec.rb +774 -0
  307. data/spec/interpreter/reference_point_spec.rb +73 -0
  308. data/spec/interpreter/stack_spec.rb +1 -1
  309. data/spec/interpreter/treetophelpers.rb +94 -1
  310. data/spec/interpreter/types_spec.rb +125 -77
  311. data/spec/interpreter/value_point_spec.rb +173 -0
  312. data/spec/parsers/nudge_program_parser_spec.rb +86 -0
  313. data/spec/spec_helper.rb +26 -2
  314. metadata +464 -664
  315. data/_spikes/couch_document_spike.rb +0 -24
  316. data/_spikes/nested_parsing/nested.treetop +0 -6
  317. data/_spikes/nudge3_syntax_spike.txt +0 -23
  318. data/_spikes/nudgeview/init.rb +0 -19
  319. data/_spikes/nudgeview/public/javascripts/app.js +0 -12
  320. data/_spikes/nudgeview/public/javascripts/jquery.js +0 -4376
  321. data/_spikes/nudgeview/public/javascripts/jquery.svg.js +0 -1325
  322. data/_spikes/nudgeview/views/index.erb +0 -18
  323. data/_spikes/nudgeview/views/index.haml +0 -8
  324. data/_spikes/simplestWeb/simplest.rb +0 -44
  325. data/_spikes/simplestWeb/views/main.erb +0 -19
  326. data/_spikes/sketches/nudgecode_spike.rb +0 -146
  327. data/_spikes/sketches/searchDSL_spike.rb +0 -25
  328. data/_spikes/sketches/search_operator_sketch_spike.txt +0 -287
  329. data/_spikes/sketches/searchspace_spike.rb +0 -96
  330. data/_spikes/symbolic_regression/activate.rb +0 -35
  331. data/_spikes/symbolic_regression/config/environment.rb +0 -340
  332. data/_spikes/symbolic_regression/config/environments/deployment.rb +0 -0
  333. data/_spikes/symbolic_regression/config/environments/development.rb +0 -0
  334. data/_spikes/symbolic_regression/experiment/objectives/programLength.rb +0 -2
  335. data/_spikes/symbolic_regression/experiment/objectives/summedSquaredError.rb +0 -2
  336. data/_spikes/symbolic_regression/lib/tasks/run.rake +0 -0
  337. data/app_generators/nudge/USAGE +0 -5
  338. data/app_generators/nudge/nudge_generator.rb +0 -73
  339. data/app_generators/nudge/templates/activate.rb +0 -0
  340. data/bin/nudge +0 -17
  341. data/doc/classes/BlockNode.html +0 -146
  342. data/doc/classes/BlockNode.src/M000246.html +0 -18
  343. data/doc/classes/BoolAndInstruction.html +0 -218
  344. data/doc/classes/BoolAndInstruction.src/M000003.html +0 -15
  345. data/doc/classes/BoolAndInstruction.src/M000004.html +0 -16
  346. data/doc/classes/BoolAndInstruction.src/M000005.html +0 -15
  347. data/doc/classes/BoolAndInstruction.src/M000006.html +0 -15
  348. data/doc/classes/BoolEqualQInstruction.html +0 -218
  349. data/doc/classes/BoolEqualQInstruction.src/M000015.html +0 -15
  350. data/doc/classes/BoolEqualQInstruction.src/M000016.html +0 -16
  351. data/doc/classes/BoolEqualQInstruction.src/M000017.html +0 -15
  352. data/doc/classes/BoolEqualQInstruction.src/M000018.html +0 -15
  353. data/doc/classes/BoolFromFloatInstruction.html +0 -218
  354. data/doc/classes/BoolFromFloatInstruction.src/M000071.html +0 -15
  355. data/doc/classes/BoolFromFloatInstruction.src/M000072.html +0 -15
  356. data/doc/classes/BoolFromFloatInstruction.src/M000073.html +0 -15
  357. data/doc/classes/BoolFromFloatInstruction.src/M000074.html +0 -15
  358. data/doc/classes/BoolFromIntInstruction.html +0 -218
  359. data/doc/classes/BoolFromIntInstruction.src/M000067.html +0 -15
  360. data/doc/classes/BoolFromIntInstruction.src/M000068.html +0 -15
  361. data/doc/classes/BoolFromIntInstruction.src/M000069.html +0 -15
  362. data/doc/classes/BoolFromIntInstruction.src/M000070.html +0 -15
  363. data/doc/classes/BoolNotInstruction.html +0 -218
  364. data/doc/classes/BoolNotInstruction.src/M000019.html +0 -15
  365. data/doc/classes/BoolNotInstruction.src/M000020.html +0 -15
  366. data/doc/classes/BoolNotInstruction.src/M000021.html +0 -15
  367. data/doc/classes/BoolNotInstruction.src/M000022.html +0 -15
  368. data/doc/classes/BoolOrInstruction.html +0 -218
  369. data/doc/classes/BoolOrInstruction.src/M000007.html +0 -15
  370. data/doc/classes/BoolOrInstruction.src/M000008.html +0 -16
  371. data/doc/classes/BoolOrInstruction.src/M000009.html +0 -15
  372. data/doc/classes/BoolOrInstruction.src/M000010.html +0 -15
  373. data/doc/classes/BoolRandomInstruction.html +0 -218
  374. data/doc/classes/BoolRandomInstruction.src/M000187.html +0 -15
  375. data/doc/classes/BoolRandomInstruction.src/M000188.html +0 -14
  376. data/doc/classes/BoolRandomInstruction.src/M000189.html +0 -15
  377. data/doc/classes/BoolRandomInstruction.src/M000190.html +0 -15
  378. data/doc/classes/BoolType.html +0 -196
  379. data/doc/classes/BoolType.src/M000240.html +0 -16
  380. data/doc/classes/BoolType.src/M000241.html +0 -15
  381. data/doc/classes/BoolType.src/M000242.html +0 -15
  382. data/doc/classes/BoolXorInstruction.html +0 -218
  383. data/doc/classes/BoolXorInstruction.src/M000011.html +0 -15
  384. data/doc/classes/BoolXorInstruction.src/M000012.html +0 -16
  385. data/doc/classes/BoolXorInstruction.src/M000013.html +0 -15
  386. data/doc/classes/BoolXorInstruction.src/M000014.html +0 -15
  387. data/doc/classes/ChannelNode.html +0 -161
  388. data/doc/classes/ChannelNode.src/M000249.html +0 -15
  389. data/doc/classes/ChannelNode.src/M000250.html +0 -16
  390. data/doc/classes/CodeType.html +0 -269
  391. data/doc/classes/CodeType.src/M000219.html +0 -38
  392. data/doc/classes/CodeType.src/M000220.html +0 -16
  393. data/doc/classes/CodeType.src/M000221.html +0 -16
  394. data/doc/classes/CodeType.src/M000222.html +0 -16
  395. data/doc/classes/CodeType.src/M000223.html +0 -24
  396. data/doc/classes/CodeType.src/M000224.html +0 -42
  397. data/doc/classes/ERCNode.html +0 -183
  398. data/doc/classes/ERCNode.src/M000254.html +0 -15
  399. data/doc/classes/ERCNode.src/M000255.html +0 -16
  400. data/doc/classes/ERCNode.src/M000256.html +0 -16
  401. data/doc/classes/ExecPopInstruction.html +0 -218
  402. data/doc/classes/ExecPopInstruction.src/M000075.html +0 -15
  403. data/doc/classes/ExecPopInstruction.src/M000076.html +0 -14
  404. data/doc/classes/ExecPopInstruction.src/M000077.html +0 -15
  405. data/doc/classes/ExecPopInstruction.src/M000078.html +0 -14
  406. data/doc/classes/FloatAbsInstruction.html +0 -218
  407. data/doc/classes/FloatAbsInstruction.src/M000107.html +0 -15
  408. data/doc/classes/FloatAbsInstruction.src/M000108.html +0 -15
  409. data/doc/classes/FloatAbsInstruction.src/M000109.html +0 -15
  410. data/doc/classes/FloatAbsInstruction.src/M000110.html +0 -15
  411. data/doc/classes/FloatAddInstruction.html +0 -218
  412. data/doc/classes/FloatAddInstruction.src/M000079.html +0 -15
  413. data/doc/classes/FloatAddInstruction.src/M000080.html +0 -16
  414. data/doc/classes/FloatAddInstruction.src/M000081.html +0 -15
  415. data/doc/classes/FloatAddInstruction.src/M000082.html +0 -15
  416. data/doc/classes/FloatCosineInstruction.html +0 -218
  417. data/doc/classes/FloatCosineInstruction.src/M000123.html +0 -15
  418. data/doc/classes/FloatCosineInstruction.src/M000124.html +0 -15
  419. data/doc/classes/FloatCosineInstruction.src/M000125.html +0 -15
  420. data/doc/classes/FloatCosineInstruction.src/M000126.html +0 -15
  421. data/doc/classes/FloatDivideInstruction.html +0 -218
  422. data/doc/classes/FloatDivideInstruction.src/M000091.html +0 -15
  423. data/doc/classes/FloatDivideInstruction.src/M000092.html +0 -16
  424. data/doc/classes/FloatDivideInstruction.src/M000093.html +0 -20
  425. data/doc/classes/FloatDivideInstruction.src/M000094.html +0 -15
  426. data/doc/classes/FloatFromBoolInstruction.html +0 -218
  427. data/doc/classes/FloatFromBoolInstruction.src/M000055.html +0 -15
  428. data/doc/classes/FloatFromBoolInstruction.src/M000056.html +0 -15
  429. data/doc/classes/FloatFromBoolInstruction.src/M000057.html +0 -15
  430. data/doc/classes/FloatFromBoolInstruction.src/M000058.html +0 -15
  431. data/doc/classes/FloatFromIntInstruction.html +0 -218
  432. data/doc/classes/FloatFromIntInstruction.src/M000063.html +0 -15
  433. data/doc/classes/FloatFromIntInstruction.src/M000064.html +0 -15
  434. data/doc/classes/FloatFromIntInstruction.src/M000065.html +0 -15
  435. data/doc/classes/FloatFromIntInstruction.src/M000066.html +0 -15
  436. data/doc/classes/FloatGreaterThanQInstruction.html +0 -218
  437. data/doc/classes/FloatGreaterThanQInstruction.src/M000035.html +0 -15
  438. data/doc/classes/FloatGreaterThanQInstruction.src/M000036.html +0 -16
  439. data/doc/classes/FloatGreaterThanQInstruction.src/M000037.html +0 -15
  440. data/doc/classes/FloatGreaterThanQInstruction.src/M000038.html +0 -15
  441. data/doc/classes/FloatIfInstruction.html +0 -218
  442. data/doc/classes/FloatIfInstruction.src/M000047.html +0 -16
  443. data/doc/classes/FloatIfInstruction.src/M000048.html +0 -15
  444. data/doc/classes/FloatIfInstruction.src/M000049.html +0 -14
  445. data/doc/classes/FloatIfInstruction.src/M000050.html +0 -17
  446. data/doc/classes/FloatLessThanQInstruction.html +0 -218
  447. data/doc/classes/FloatLessThanQInstruction.src/M000039.html +0 -15
  448. data/doc/classes/FloatLessThanQInstruction.src/M000040.html +0 -16
  449. data/doc/classes/FloatLessThanQInstruction.src/M000041.html +0 -15
  450. data/doc/classes/FloatLessThanQInstruction.src/M000042.html +0 -15
  451. data/doc/classes/FloatMaxInstruction.html +0 -218
  452. data/doc/classes/FloatMaxInstruction.src/M000095.html +0 -15
  453. data/doc/classes/FloatMaxInstruction.src/M000096.html +0 -16
  454. data/doc/classes/FloatMaxInstruction.src/M000097.html +0 -15
  455. data/doc/classes/FloatMaxInstruction.src/M000098.html +0 -15
  456. data/doc/classes/FloatMinInstruction.html +0 -218
  457. data/doc/classes/FloatMinInstruction.src/M000099.html +0 -15
  458. data/doc/classes/FloatMinInstruction.src/M000100.html +0 -16
  459. data/doc/classes/FloatMinInstruction.src/M000101.html +0 -15
  460. data/doc/classes/FloatMinInstruction.src/M000102.html +0 -15
  461. data/doc/classes/FloatMultiplyInstruction.html +0 -218
  462. data/doc/classes/FloatMultiplyInstruction.src/M000083.html +0 -15
  463. data/doc/classes/FloatMultiplyInstruction.src/M000084.html +0 -16
  464. data/doc/classes/FloatMultiplyInstruction.src/M000085.html +0 -15
  465. data/doc/classes/FloatMultiplyInstruction.src/M000086.html +0 -15
  466. data/doc/classes/FloatNegativeInstruction.html +0 -218
  467. data/doc/classes/FloatNegativeInstruction.src/M000103.html +0 -15
  468. data/doc/classes/FloatNegativeInstruction.src/M000104.html +0 -15
  469. data/doc/classes/FloatNegativeInstruction.src/M000105.html +0 -15
  470. data/doc/classes/FloatNegativeInstruction.src/M000106.html +0 -15
  471. data/doc/classes/FloatPowerInstruction.html +0 -218
  472. data/doc/classes/FloatPowerInstruction.src/M000111.html +0 -15
  473. data/doc/classes/FloatPowerInstruction.src/M000112.html +0 -16
  474. data/doc/classes/FloatPowerInstruction.src/M000113.html +0 -20
  475. data/doc/classes/FloatPowerInstruction.src/M000114.html +0 -15
  476. data/doc/classes/FloatRandomInstruction.html +0 -218
  477. data/doc/classes/FloatRandomInstruction.src/M000191.html +0 -15
  478. data/doc/classes/FloatRandomInstruction.src/M000192.html +0 -14
  479. data/doc/classes/FloatRandomInstruction.src/M000193.html +0 -15
  480. data/doc/classes/FloatRandomInstruction.src/M000194.html +0 -15
  481. data/doc/classes/FloatSineInstruction.html +0 -218
  482. data/doc/classes/FloatSineInstruction.src/M000119.html +0 -15
  483. data/doc/classes/FloatSineInstruction.src/M000120.html +0 -15
  484. data/doc/classes/FloatSineInstruction.src/M000121.html +0 -15
  485. data/doc/classes/FloatSineInstruction.src/M000122.html +0 -15
  486. data/doc/classes/FloatSqrtInstruction.html +0 -218
  487. data/doc/classes/FloatSqrtInstruction.src/M000115.html +0 -15
  488. data/doc/classes/FloatSqrtInstruction.src/M000116.html +0 -15
  489. data/doc/classes/FloatSqrtInstruction.src/M000117.html +0 -19
  490. data/doc/classes/FloatSqrtInstruction.src/M000118.html +0 -15
  491. data/doc/classes/FloatSubtractInstruction.html +0 -218
  492. data/doc/classes/FloatSubtractInstruction.src/M000087.html +0 -15
  493. data/doc/classes/FloatSubtractInstruction.src/M000088.html +0 -16
  494. data/doc/classes/FloatSubtractInstruction.src/M000089.html +0 -15
  495. data/doc/classes/FloatSubtractInstruction.src/M000090.html +0 -15
  496. data/doc/classes/FloatTangentInstruction.html +0 -218
  497. data/doc/classes/FloatTangentInstruction.src/M000127.html +0 -15
  498. data/doc/classes/FloatTangentInstruction.src/M000128.html +0 -15
  499. data/doc/classes/FloatTangentInstruction.src/M000129.html +0 -15
  500. data/doc/classes/FloatTangentInstruction.src/M000130.html +0 -15
  501. data/doc/classes/FloatType.html +0 -196
  502. data/doc/classes/FloatType.src/M000243.html +0 -19
  503. data/doc/classes/FloatType.src/M000244.html +0 -15
  504. data/doc/classes/FloatType.src/M000245.html +0 -15
  505. data/doc/classes/Helpers.html +0 -161
  506. data/doc/classes/Helpers.src/M000343.html +0 -21
  507. data/doc/classes/Helpers.src/M000344.html +0 -24
  508. data/doc/classes/Instruction/InstructionMethodError.html +0 -110
  509. data/doc/classes/Instruction/NaNResultError.html +0 -110
  510. data/doc/classes/Instruction/NotEnoughStackItems.html +0 -110
  511. data/doc/classes/Instruction.html +0 -500
  512. data/doc/classes/Instruction.src/M000131.html +0 -17
  513. data/doc/classes/Instruction.src/M000132.html +0 -15
  514. data/doc/classes/Instruction.src/M000133.html +0 -15
  515. data/doc/classes/Instruction.src/M000134.html +0 -15
  516. data/doc/classes/Instruction.src/M000135.html +0 -15
  517. data/doc/classes/Instruction.src/M000136.html +0 -15
  518. data/doc/classes/Instruction.src/M000137.html +0 -15
  519. data/doc/classes/Instruction.src/M000138.html +0 -15
  520. data/doc/classes/Instruction.src/M000139.html +0 -22
  521. data/doc/classes/Instruction.src/M000140.html +0 -15
  522. data/doc/classes/Instruction.src/M000141.html +0 -25
  523. data/doc/classes/Instruction.src/M000142.html +0 -15
  524. data/doc/classes/Instruction.src/M000143.html +0 -15
  525. data/doc/classes/Instruction.src/M000144.html +0 -15
  526. data/doc/classes/Instruction.src/M000145.html +0 -15
  527. data/doc/classes/Instruction.src/M000146.html +0 -15
  528. data/doc/classes/InstructionNode.html +0 -161
  529. data/doc/classes/InstructionNode.src/M000247.html +0 -15
  530. data/doc/classes/InstructionNode.src/M000248.html +0 -16
  531. data/doc/classes/IntAbsInstruction.html +0 -218
  532. data/doc/classes/IntAbsInstruction.src/M000175.html +0 -15
  533. data/doc/classes/IntAbsInstruction.src/M000176.html +0 -15
  534. data/doc/classes/IntAbsInstruction.src/M000177.html +0 -15
  535. data/doc/classes/IntAbsInstruction.src/M000178.html +0 -15
  536. data/doc/classes/IntAddInstruction.html +0 -218
  537. data/doc/classes/IntAddInstruction.src/M000147.html +0 -15
  538. data/doc/classes/IntAddInstruction.src/M000148.html +0 -16
  539. data/doc/classes/IntAddInstruction.src/M000149.html +0 -15
  540. data/doc/classes/IntAddInstruction.src/M000150.html +0 -15
  541. data/doc/classes/IntDepthInstruction.html +0 -218
  542. data/doc/classes/IntDepthInstruction.src/M000211.html +0 -15
  543. data/doc/classes/IntDepthInstruction.src/M000212.html +0 -14
  544. data/doc/classes/IntDepthInstruction.src/M000213.html +0 -15
  545. data/doc/classes/IntDepthInstruction.src/M000214.html +0 -15
  546. data/doc/classes/IntDivideInstruction.html +0 -218
  547. data/doc/classes/IntDivideInstruction.src/M000155.html +0 -15
  548. data/doc/classes/IntDivideInstruction.src/M000156.html +0 -16
  549. data/doc/classes/IntDivideInstruction.src/M000157.html +0 -20
  550. data/doc/classes/IntDivideInstruction.src/M000158.html +0 -15
  551. data/doc/classes/IntDuplicateInstruction.html +0 -218
  552. data/doc/classes/IntDuplicateInstruction.src/M000203.html +0 -15
  553. data/doc/classes/IntDuplicateInstruction.src/M000204.html +0 -15
  554. data/doc/classes/IntDuplicateInstruction.src/M000205.html +0 -15
  555. data/doc/classes/IntDuplicateInstruction.src/M000206.html +0 -15
  556. data/doc/classes/IntEqualQInstruction.html +0 -218
  557. data/doc/classes/IntEqualQInstruction.src/M000023.html +0 -15
  558. data/doc/classes/IntEqualQInstruction.src/M000024.html +0 -16
  559. data/doc/classes/IntEqualQInstruction.src/M000025.html +0 -15
  560. data/doc/classes/IntEqualQInstruction.src/M000026.html +0 -15
  561. data/doc/classes/IntFlushInstruction.html +0 -218
  562. data/doc/classes/IntFlushInstruction.src/M000215.html +0 -15
  563. data/doc/classes/IntFlushInstruction.src/M000216.html +0 -14
  564. data/doc/classes/IntFlushInstruction.src/M000217.html +0 -14
  565. data/doc/classes/IntFlushInstruction.src/M000218.html +0 -15
  566. data/doc/classes/IntFromBoolInstruction.html +0 -218
  567. data/doc/classes/IntFromBoolInstruction.src/M000051.html +0 -15
  568. data/doc/classes/IntFromBoolInstruction.src/M000052.html +0 -15
  569. data/doc/classes/IntFromBoolInstruction.src/M000053.html +0 -15
  570. data/doc/classes/IntFromBoolInstruction.src/M000054.html +0 -15
  571. data/doc/classes/IntFromFloatInstruction.html +0 -218
  572. data/doc/classes/IntFromFloatInstruction.src/M000059.html +0 -15
  573. data/doc/classes/IntFromFloatInstruction.src/M000060.html +0 -15
  574. data/doc/classes/IntFromFloatInstruction.src/M000061.html +0 -15
  575. data/doc/classes/IntFromFloatInstruction.src/M000062.html +0 -15
  576. data/doc/classes/IntGreaterThanQInstruction.html +0 -218
  577. data/doc/classes/IntGreaterThanQInstruction.src/M000031.html +0 -15
  578. data/doc/classes/IntGreaterThanQInstruction.src/M000032.html +0 -16
  579. data/doc/classes/IntGreaterThanQInstruction.src/M000033.html +0 -15
  580. data/doc/classes/IntGreaterThanQInstruction.src/M000034.html +0 -15
  581. data/doc/classes/IntIfInstruction.html +0 -218
  582. data/doc/classes/IntIfInstruction.src/M000043.html +0 -16
  583. data/doc/classes/IntIfInstruction.src/M000044.html +0 -15
  584. data/doc/classes/IntIfInstruction.src/M000045.html +0 -14
  585. data/doc/classes/IntIfInstruction.src/M000046.html +0 -17
  586. data/doc/classes/IntLessThanQInstruction.html +0 -218
  587. data/doc/classes/IntLessThanQInstruction.src/M000027.html +0 -15
  588. data/doc/classes/IntLessThanQInstruction.src/M000028.html +0 -16
  589. data/doc/classes/IntLessThanQInstruction.src/M000029.html +0 -15
  590. data/doc/classes/IntLessThanQInstruction.src/M000030.html +0 -15
  591. data/doc/classes/IntMaxInstruction.html +0 -218
  592. data/doc/classes/IntMaxInstruction.src/M000167.html +0 -15
  593. data/doc/classes/IntMaxInstruction.src/M000168.html +0 -16
  594. data/doc/classes/IntMaxInstruction.src/M000169.html +0 -16
  595. data/doc/classes/IntMaxInstruction.src/M000170.html +0 -15
  596. data/doc/classes/IntMinInstruction.html +0 -218
  597. data/doc/classes/IntMinInstruction.src/M000171.html +0 -15
  598. data/doc/classes/IntMinInstruction.src/M000172.html +0 -16
  599. data/doc/classes/IntMinInstruction.src/M000173.html +0 -16
  600. data/doc/classes/IntMinInstruction.src/M000174.html +0 -15
  601. data/doc/classes/IntModuloInstruction.html +0 -218
  602. data/doc/classes/IntModuloInstruction.src/M000163.html +0 -15
  603. data/doc/classes/IntModuloInstruction.src/M000164.html +0 -16
  604. data/doc/classes/IntModuloInstruction.src/M000165.html +0 -20
  605. data/doc/classes/IntModuloInstruction.src/M000166.html +0 -15
  606. data/doc/classes/IntMultiplyInstruction.html +0 -218
  607. data/doc/classes/IntMultiplyInstruction.src/M000151.html +0 -15
  608. data/doc/classes/IntMultiplyInstruction.src/M000152.html +0 -16
  609. data/doc/classes/IntMultiplyInstruction.src/M000153.html +0 -15
  610. data/doc/classes/IntMultiplyInstruction.src/M000154.html +0 -15
  611. data/doc/classes/IntNegativeInstruction.html +0 -218
  612. data/doc/classes/IntNegativeInstruction.src/M000179.html +0 -15
  613. data/doc/classes/IntNegativeInstruction.src/M000180.html +0 -15
  614. data/doc/classes/IntNegativeInstruction.src/M000181.html +0 -15
  615. data/doc/classes/IntNegativeInstruction.src/M000182.html +0 -15
  616. data/doc/classes/IntPopInstruction.html +0 -218
  617. data/doc/classes/IntPopInstruction.src/M000195.html +0 -15
  618. data/doc/classes/IntPopInstruction.src/M000196.html +0 -15
  619. data/doc/classes/IntPopInstruction.src/M000197.html +0 -14
  620. data/doc/classes/IntPopInstruction.src/M000198.html +0 -14
  621. data/doc/classes/IntRandomInstruction.html +0 -218
  622. data/doc/classes/IntRandomInstruction.src/M000183.html +0 -15
  623. data/doc/classes/IntRandomInstruction.src/M000184.html +0 -14
  624. data/doc/classes/IntRandomInstruction.src/M000185.html +0 -15
  625. data/doc/classes/IntRandomInstruction.src/M000186.html +0 -15
  626. data/doc/classes/IntRotateInstruction.html +0 -218
  627. data/doc/classes/IntRotateInstruction.src/M000207.html +0 -15
  628. data/doc/classes/IntRotateInstruction.src/M000208.html +0 -17
  629. data/doc/classes/IntRotateInstruction.src/M000209.html +0 -14
  630. data/doc/classes/IntRotateInstruction.src/M000210.html +0 -17
  631. data/doc/classes/IntSubtractInstruction.html +0 -218
  632. data/doc/classes/IntSubtractInstruction.src/M000159.html +0 -15
  633. data/doc/classes/IntSubtractInstruction.src/M000160.html +0 -16
  634. data/doc/classes/IntSubtractInstruction.src/M000161.html +0 -16
  635. data/doc/classes/IntSubtractInstruction.src/M000162.html +0 -15
  636. data/doc/classes/IntSwapInstruction.html +0 -218
  637. data/doc/classes/IntSwapInstruction.src/M000199.html +0 -15
  638. data/doc/classes/IntSwapInstruction.src/M000200.html +0 -16
  639. data/doc/classes/IntSwapInstruction.src/M000201.html +0 -14
  640. data/doc/classes/IntSwapInstruction.src/M000202.html +0 -16
  641. data/doc/classes/IntType.html +0 -240
  642. data/doc/classes/IntType.src/M000235.html +0 -15
  643. data/doc/classes/IntType.src/M000236.html +0 -15
  644. data/doc/classes/IntType.src/M000237.html +0 -18
  645. data/doc/classes/IntType.src/M000238.html +0 -15
  646. data/doc/classes/IntType.src/M000239.html +0 -15
  647. data/doc/classes/LiteralNode.html +0 -183
  648. data/doc/classes/LiteralNode.src/M000251.html +0 -15
  649. data/doc/classes/LiteralNode.src/M000252.html +0 -16
  650. data/doc/classes/LiteralNode.src/M000253.html +0 -16
  651. data/doc/classes/Nudge/Channel.html +0 -437
  652. data/doc/classes/Nudge/Channel.src/M000286.html +0 -15
  653. data/doc/classes/Nudge/Channel.src/M000287.html +0 -19
  654. data/doc/classes/Nudge/Channel.src/M000288.html +0 -15
  655. data/doc/classes/Nudge/Channel.src/M000289.html +0 -15
  656. data/doc/classes/Nudge/Channel.src/M000290.html +0 -15
  657. data/doc/classes/Nudge/Channel.src/M000291.html +0 -19
  658. data/doc/classes/Nudge/Channel.src/M000292.html +0 -19
  659. data/doc/classes/Nudge/Channel.src/M000293.html +0 -17
  660. data/doc/classes/Nudge/Channel.src/M000294.html +0 -15
  661. data/doc/classes/Nudge/Channel.src/M000295.html +0 -20
  662. data/doc/classes/Nudge/Channel.src/M000296.html +0 -15
  663. data/doc/classes/Nudge/Channel.src/M000297.html +0 -17
  664. data/doc/classes/Nudge/Channel.src/M000298.html +0 -15
  665. data/doc/classes/Nudge/CodeBlock.html +0 -331
  666. data/doc/classes/Nudge/CodeBlock.src/M000263.html +0 -15
  667. data/doc/classes/Nudge/CodeBlock.src/M000264.html +0 -15
  668. data/doc/classes/Nudge/CodeBlock.src/M000265.html +0 -15
  669. data/doc/classes/Nudge/CodeBlock.src/M000266.html +0 -15
  670. data/doc/classes/Nudge/CodeBlock.src/M000267.html +0 -15
  671. data/doc/classes/Nudge/CodeBlock.src/M000268.html +0 -17
  672. data/doc/classes/Nudge/CodeBlock.src/M000269.html +0 -20
  673. data/doc/classes/Nudge/CodeBlock.src/M000270.html +0 -15
  674. data/doc/classes/Nudge/CodeBlock.src/M000271.html +0 -19
  675. data/doc/classes/Nudge/DeadLocation.html +0 -152
  676. data/doc/classes/Nudge/DeadLocation.src/M000334.html +0 -17
  677. data/doc/classes/Nudge/Erc.html +0 -335
  678. data/doc/classes/Nudge/Erc.src/M000278.html +0 -16
  679. data/doc/classes/Nudge/Erc.src/M000279.html +0 -15
  680. data/doc/classes/Nudge/Erc.src/M000280.html +0 -15
  681. data/doc/classes/Nudge/Erc.src/M000281.html +0 -15
  682. data/doc/classes/Nudge/Erc.src/M000282.html +0 -18
  683. data/doc/classes/Nudge/Erc.src/M000283.html +0 -15
  684. data/doc/classes/Nudge/Erc.src/M000284.html +0 -17
  685. data/doc/classes/Nudge/Erc.src/M000285.html +0 -15
  686. data/doc/classes/Nudge/Individual.html +0 -313
  687. data/doc/classes/Nudge/Individual.src/M000314.html +0 -21
  688. data/doc/classes/Nudge/Individual.src/M000315.html +0 -15
  689. data/doc/classes/Nudge/Individual.src/M000316.html +0 -15
  690. data/doc/classes/Nudge/Individual.src/M000317.html +0 -17
  691. data/doc/classes/Nudge/Individual.src/M000318.html +0 -25
  692. data/doc/classes/Nudge/InstructionPoint/InstructionNotFoundError.html +0 -110
  693. data/doc/classes/Nudge/InstructionPoint.html +0 -350
  694. data/doc/classes/Nudge/InstructionPoint.src/M000299.html +0 -15
  695. data/doc/classes/Nudge/InstructionPoint.src/M000300.html +0 -15
  696. data/doc/classes/Nudge/InstructionPoint.src/M000301.html +0 -17
  697. data/doc/classes/Nudge/InstructionPoint.src/M000302.html +0 -15
  698. data/doc/classes/Nudge/InstructionPoint.src/M000303.html +0 -17
  699. data/doc/classes/Nudge/InstructionPoint.src/M000304.html +0 -17
  700. data/doc/classes/Nudge/InstructionPoint.src/M000305.html +0 -17
  701. data/doc/classes/Nudge/InstructionPoint.src/M000306.html +0 -15
  702. data/doc/classes/Nudge/Interpreter.html +0 -369
  703. data/doc/classes/Nudge/Interpreter.src/M000257.html +0 -20
  704. data/doc/classes/Nudge/Interpreter.src/M000258.html +0 -19
  705. data/doc/classes/Nudge/Interpreter.src/M000259.html +0 -15
  706. data/doc/classes/Nudge/Interpreter.src/M000260.html +0 -19
  707. data/doc/classes/Nudge/Interpreter.src/M000261.html +0 -17
  708. data/doc/classes/Nudge/LiteralPoint.html +0 -291
  709. data/doc/classes/Nudge/LiteralPoint.src/M000272.html +0 -16
  710. data/doc/classes/Nudge/LiteralPoint.src/M000273.html +0 -15
  711. data/doc/classes/Nudge/LiteralPoint.src/M000274.html +0 -15
  712. data/doc/classes/Nudge/LiteralPoint.src/M000275.html +0 -18
  713. data/doc/classes/Nudge/LiteralPoint.src/M000276.html +0 -17
  714. data/doc/classes/Nudge/LiteralPoint.src/M000277.html +0 -15
  715. data/doc/classes/Nudge/Location.html +0 -525
  716. data/doc/classes/Nudge/Location.src/M000319.html +0 -19
  717. data/doc/classes/Nudge/Location.src/M000320.html +0 -15
  718. data/doc/classes/Nudge/Location.src/M000321.html +0 -26
  719. data/doc/classes/Nudge/Location.src/M000322.html +0 -15
  720. data/doc/classes/Nudge/Location.src/M000323.html +0 -20
  721. data/doc/classes/Nudge/Location.src/M000324.html +0 -16
  722. data/doc/classes/Nudge/Location.src/M000325.html +0 -25
  723. data/doc/classes/Nudge/Location.src/M000326.html +0 -15
  724. data/doc/classes/Nudge/Location.src/M000327.html +0 -21
  725. data/doc/classes/Nudge/Location.src/M000328.html +0 -16
  726. data/doc/classes/Nudge/Location.src/M000329.html +0 -15
  727. data/doc/classes/Nudge/Location.src/M000330.html +0 -16
  728. data/doc/classes/Nudge/Location.src/M000331.html +0 -20
  729. data/doc/classes/Nudge/Location.src/M000332.html +0 -17
  730. data/doc/classes/Nudge/Location.src/M000333.html +0 -17
  731. data/doc/classes/Nudge/NondominatedSubset.html +0 -196
  732. data/doc/classes/Nudge/NondominatedSubset.src/M000005.html +0 -19
  733. data/doc/classes/Nudge/NondominatedSubset.src/M000006.html +0 -19
  734. data/doc/classes/Nudge/NondominatedSubset.src/M000007.html +0 -25
  735. data/doc/classes/Nudge/NondominatedSubset.src/M000339.html +0 -19
  736. data/doc/classes/Nudge/NondominatedSubset.src/M000340.html +0 -19
  737. data/doc/classes/Nudge/NondominatedSubset.src/M000341.html +0 -25
  738. data/doc/classes/Nudge/PopulationResample.html +0 -175
  739. data/doc/classes/Nudge/PopulationResample.src/M000003.html +0 -22
  740. data/doc/classes/Nudge/PopulationResample.src/M000337.html +0 -22
  741. data/doc/classes/Nudge/ProgramPoint.html +0 -148
  742. data/doc/classes/Nudge/ProgramPoint.src/M000262.html +0 -15
  743. data/doc/classes/Nudge/RandomGuess.html +0 -176
  744. data/doc/classes/Nudge/RandomGuess.src/M000002.html +0 -21
  745. data/doc/classes/Nudge/RandomGuess.src/M000336.html +0 -21
  746. data/doc/classes/Nudge/ResampleValues.html +0 -169
  747. data/doc/classes/Nudge/ResampleValues.src/M000004.html +0 -36
  748. data/doc/classes/Nudge/ResampleValues.src/M000338.html +0 -36
  749. data/doc/classes/Nudge/SearchOperator.html +0 -175
  750. data/doc/classes/Nudge/SearchOperator.src/M000001.html +0 -15
  751. data/doc/classes/Nudge/SearchOperator.src/M000335.html +0 -15
  752. data/doc/classes/Nudge/Stack.html +0 -350
  753. data/doc/classes/Nudge/Stack.src/M000307.html +0 -15
  754. data/doc/classes/Nudge/Stack.src/M000308.html +0 -15
  755. data/doc/classes/Nudge/Stack.src/M000309.html +0 -18
  756. data/doc/classes/Nudge/Stack.src/M000310.html +0 -15
  757. data/doc/classes/Nudge/Stack.src/M000311.html +0 -15
  758. data/doc/classes/Nudge/Stack.src/M000312.html +0 -15
  759. data/doc/classes/Nudge/Stack.src/M000313.html +0 -15
  760. data/doc/classes/Nudge/UniformBackboneCrossover.html +0 -152
  761. data/doc/classes/Nudge/UniformBackboneCrossover.src/M000008.html +0 -35
  762. data/doc/classes/Nudge/UniformBackboneCrossover.src/M000342.html +0 -35
  763. data/doc/classes/Nudge.html +0 -174
  764. data/doc/classes/NudgeType.html +0 -363
  765. data/doc/classes/NudgeType.src/M000225.html +0 -17
  766. data/doc/classes/NudgeType.src/M000226.html +0 -15
  767. data/doc/classes/NudgeType.src/M000227.html +0 -15
  768. data/doc/classes/NudgeType.src/M000228.html +0 -15
  769. data/doc/classes/NudgeType.src/M000229.html +0 -15
  770. data/doc/classes/NudgeType.src/M000230.html +0 -15
  771. data/doc/classes/NudgeType.src/M000231.html +0 -15
  772. data/doc/classes/NudgeType.src/M000232.html +0 -15
  773. data/doc/classes/NudgeType.src/M000233.html +0 -15
  774. data/doc/classes/NudgeType.src/M000234.html +0 -15
  775. data/doc/created.rid +0 -1
  776. data/doc/files/lib/instructions/bool_basics_rb.html +0 -90
  777. data/doc/files/lib/instructions/comparisons_rb.html +0 -90
  778. data/doc/files/lib/instructions/conditionals_rb.html +0 -90
  779. data/doc/files/lib/instructions/conversions_rb.html +0 -90
  780. data/doc/files/lib/instructions/exec_rb.html +0 -90
  781. data/doc/files/lib/instructions/float_arithmetic_rb.html +0 -90
  782. data/doc/files/lib/instructions/float_transcendental_rb.html +0 -90
  783. data/doc/files/lib/instructions/infrastructure_rb.html +0 -100
  784. data/doc/files/lib/instructions/int_arithmetic_rb.html +0 -90
  785. data/doc/files/lib/instructions/random_value_rb.html +0 -90
  786. data/doc/files/lib/instructions/stack_manipulation_rb.html +0 -90
  787. data/doc/files/lib/interpreter/grammars/nudge_language_helpers_rb.html +0 -97
  788. data/doc/files/lib/interpreter/grammars/nudge_language_treetop.html +0 -180
  789. data/doc/files/lib/interpreter/interpreter_rb.html +0 -90
  790. data/doc/files/lib/interpreter/programPoints_rb.html +0 -90
  791. data/doc/files/lib/interpreter/stack_rb.html +0 -90
  792. data/doc/files/lib/interpreter/types/codeType_rb.html +0 -157
  793. data/doc/files/lib/interpreter/types/codeType_rb.src/M000001.html +0 -15
  794. data/doc/files/lib/interpreter/types/codeType_rb.src/M000002.html +0 -15
  795. data/doc/files/lib/interpreter/types/pushTypes_rb.html +0 -107
  796. data/doc/files/lib/nudge_rb.html +0 -152
  797. data/doc/files/lib/search/evaluators/structural_complexity_rb.html +0 -90
  798. data/doc/files/lib/search/helpers_rb.html +0 -90
  799. data/doc/files/lib/search/individual/individual_rb.html +0 -90
  800. data/doc/files/lib/search/locations/location_rb.html +0 -100
  801. data/doc/files/lib/search/operators/basic_operators_rb.html +0 -90
  802. data/doc/fr_class_index.html +0 -191
  803. data/doc/fr_file_index.html +0 -71
  804. data/doc/fr_method_index.html +0 -711
  805. data/doc/index.html +0 -21
  806. data/doc/rdoc-style.css +0 -299
  807. data/features/parser_recognizes_nudge_language.feature +0 -9
  808. data/lib/instructions/bool_basics.rb +0 -85
  809. data/lib/instructions/comparisons.rb +0 -152
  810. data/lib/instructions/conditionals.rb +0 -44
  811. data/lib/instructions/conversions.rb +0 -94
  812. data/lib/instructions/exec.rb +0 -154
  813. data/lib/instructions/float_arithmetic.rb +0 -201
  814. data/lib/instructions/float_transcendental.rb +0 -47
  815. data/lib/instructions/int_arithmetic.rb +0 -160
  816. data/lib/instructions/name_basics.rb +0 -44
  817. data/lib/instructions/name_bindings.rb +0 -65
  818. data/lib/instructions/random_value.rb +0 -43
  819. data/lib/instructions/stack_manipulation.rb +0 -739
  820. data/lib/interpreter/grammars/nudge_language.treetop +0 -83
  821. data/lib/interpreter/grammars/nudge_language_helpers.rb +0 -64
  822. data/lib/search/experiments/experiment.rb +0 -53
  823. data/lib/search/helpers.rb +0 -22
  824. data/lib/search/individual/batch.rb +0 -25
  825. data/lib/search/individual/individual.rb +0 -145
  826. data/lib/search/operators/basic_operators.rb +0 -230
  827. data/lib/search/operators/evaluators.rb +0 -107
  828. data/lib/search/operators/samplers_and_selectors.rb +0 -123
  829. data/lib/search/stations/station.rb +0 -147
  830. data/nudge.gemspec +0 -706
  831. data/push_language_coverage.md +0 -177
  832. data/script/console +0 -10
  833. data/script/destroy +0 -14
  834. data/script/generate +0 -14
  835. data/spec/data/couchdb_spec.rb +0 -2
  836. data/spec/instructions/bool_basics_spec.rb +0 -97
  837. data/spec/instructions/bool_stack_spec.rb +0 -391
  838. data/spec/instructions/code_basics_spec.rb +0 -43
  839. data/spec/instructions/code_stack_spec.rb +0 -382
  840. data/spec/instructions/comparisons_spec.rb +0 -486
  841. data/spec/instructions/conditionals_spec.rb +0 -162
  842. data/spec/instructions/conversions_spec.rb +0 -92
  843. data/spec/instructions/exec_spec.rb +0 -883
  844. data/spec/instructions/float_calculations_spec.rb +0 -148
  845. data/spec/instructions/float_stack_spec.rb +0 -382
  846. data/spec/instructions/float_transcendental_spec.rb +0 -89
  847. data/spec/instructions/int_calculations_spec.rb +0 -125
  848. data/spec/instructions/int_stack_spec.rb +0 -398
  849. data/spec/instructions/name_basics_spec.rb +0 -158
  850. data/spec/instructions/name_bindings_spec.rb +0 -257
  851. data/spec/instructions/name_stack_spec.rb +0 -382
  852. data/spec/instructions/random_values_spec.rb +0 -68
  853. data/spec/integration/search_integration.rb +0 -67
  854. data/spec/interpreter/channel_spec.rb +0 -92
  855. data/spec/interpreter/codeblock_spec.rb +0 -135
  856. data/spec/interpreter/erc_spec.rb +0 -130
  857. data/spec/interpreter/literal_spec.rb +0 -94
  858. data/spec/interpreter/parser_spec.rb +0 -324
  859. data/spec/search/batch_spec.rb +0 -30
  860. data/spec/search/experiments/experiment_spec.rb +0 -101
  861. data/spec/search/helpers_spec.rb +0 -59
  862. data/spec/search/individual_spec.rb +0 -356
  863. data/spec/search/operators/any_one_sampler_spec.rb +0 -40
  864. data/spec/search/operators/dominated_quantile_spec.rb +0 -111
  865. data/spec/search/operators/duplicate_genomes_spec.rb +0 -35
  866. data/spec/search/operators/evaluators/program_point_evaluator_spec.rb +0 -43
  867. data/spec/search/operators/evaluators/test_case_evaluator_spec.rb +0 -133
  868. data/spec/search/operators/infrastructure_spec.rb +0 -47
  869. data/spec/search/operators/most_dominated_subset_spec.rb +0 -47
  870. data/spec/search/operators/nondominated_subset_spec.rb +0 -97
  871. data/spec/search/operators/pointCrossover_spec.rb +0 -55
  872. data/spec/search/operators/pointDeletion_spec.rb +0 -57
  873. data/spec/search/operators/pointMutation_spec.rb +0 -71
  874. data/spec/search/operators/random_guess_spec.rb +0 -51
  875. data/spec/search/operators/resample_and_clone_spec.rb +0 -50
  876. data/spec/search/operators/resample_values_spec.rb +0 -126
  877. data/spec/search/operators/sizePreservingMutation_spec.rb +0 -2
  878. data/spec/search/operators/uniformBackboneCrossover_spec.rb +0 -63
  879. data/spec/search/stations/station_spec.rb +0 -496
  880. data/test/test_generator_helper.rb +0 -29
  881. data/test/test_nudge_generator.rb +0 -43
  882. /data/lib/instructions/{code_basics.rb → code/code_noop.rb} +0 -0
  883. /data/{_spikes/nested_parsing/nested.rb → spec/support/shared_examples.rb} +0 -0
@@ -1,1325 +0,0 @@
1
- /* http://keith-wood.name/svg.html
2
- SVG for jQuery v1.4.2.
3
- Written by Keith Wood (kbwood{at}iinet.com.au) August 2007.
4
- Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
5
- MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
6
- Please attribute the author if you use it. */
7
-
8
- (function($) { // Hide scope, no $ conflict
9
-
10
- /* SVG manager.
11
- Use the singleton instance of this class, $.svg,
12
- to interact with the SVG functionality. */
13
- function SVGManager() {
14
- this._settings = []; // Settings to be remembered per SVG object
15
- this._extensions = []; // List of SVG extensions added to SVGWrapper
16
- // for each entry [0] is extension name, [1] is extension class (function)
17
- // the function takes one parameter - the SVGWrapper instance
18
- this.regional = []; // Localisations, indexed by language, '' for default (English)
19
- this.regional[''] = {errorLoadingText: 'Error loading',
20
- notSupportedText: 'This browser does not support SVG'};
21
- this.local = this.regional['']; // Current localisation
22
- this._uuid = new Date().getTime();
23
- this._renesis = detectActiveX('RenesisX.RenesisCtrl');
24
- }
25
-
26
- /* Determine whether a given ActiveX control is available.
27
- @param classId (string) the ID for the ActiveX control
28
- @return (boolean) true if found, false if not */
29
- function detectActiveX(classId) {
30
- try {
31
- return !!(window.ActiveXObject && new ActiveXObject(classId));
32
- }
33
- catch (e) {
34
- return false;
35
- }
36
- }
37
-
38
- var PROP_NAME = 'svgwrapper';
39
-
40
- $.extend(SVGManager.prototype, {
41
- /* Class name added to elements to indicate already configured with SVG. */
42
- markerClassName: 'hasSVG',
43
-
44
- /* SVG namespace. */
45
- svgNS: 'http://www.w3.org/2000/svg',
46
- /* XLink namespace. */
47
- xlinkNS: 'http://www.w3.org/1999/xlink',
48
-
49
- /* SVG wrapper class. */
50
- _wrapperClass: SVGWrapper,
51
-
52
- /* Camel-case versions of attribute names containing dashes or are reserved words. */
53
- _attrNames: {class_: 'class', in_: 'in',
54
- alignmentBaseline: 'alignment-baseline', baselineShift: 'baseline-shift',
55
- clipPath: 'clip-path', clipRule: 'clip-rule',
56
- colorInterpolation: 'color-interpolation',
57
- colorInterpolationFilters: 'color-interpolation-filters',
58
- colorRendering: 'color-rendering', dominantBaseline: 'dominant-baseline',
59
- enableBackground: 'enable-background', fillOpacity: 'fill-opacity',
60
- fillRule: 'fill-rule', floodColor: 'flood-color',
61
- floodOpacity: 'flood-opacity', fontFamily: 'font-family',
62
- fontSize: 'font-size', fontSizeAdjust: 'font-size-adjust',
63
- fontStretch: 'font-stretch', fontStyle: 'font-style',
64
- fontVariant: 'font-variant', fontWeight: 'font-weight',
65
- glyphOrientationHorizontal: 'glyph-orientation-horizontal',
66
- glyphOrientationVertical: 'glyph-orientation-vertical',
67
- horizAdvX: 'horiz-adv-x', horizOriginX: 'horiz-origin-x',
68
- imageRendering: 'image-rendering', letterSpacing: 'letter-spacing',
69
- lightingColor: 'lighting-color', markerEnd: 'marker-end',
70
- markerMid: 'marker-mid', markerStart: 'marker-start',
71
- stopColor: 'stop-color', stopOpacity: 'stop-opacity',
72
- strikethroughPosition: 'strikethrough-position',
73
- strikethroughThickness: 'strikethrough-thickness',
74
- strokeDashArray: 'stroke-dasharray', strokeDashOffset: 'stroke-dashoffset',
75
- strokeLineCap: 'stroke-linecap', strokeLineJoin: 'stroke-linejoin',
76
- strokeMiterLimit: 'stroke-miterlimit', strokeOpacity: 'stroke-opacity',
77
- strokeWidth: 'stroke-width', textAnchor: 'text-anchor',
78
- textDecoration: 'text-decoration', textRendering: 'text-rendering',
79
- underlinePosition: 'underline-position', underlineThickness: 'underline-thickness',
80
- vertAdvY: 'vert-adv-y', vertOriginY: 'vert-origin-y',
81
- wordSpacing: 'word-spacing', writingMode: 'writing-mode'},
82
-
83
- /* Add the SVG object to its container. */
84
- _attachSVG: function(container, settings) {
85
- if ($(container).hasClass(this.markerClassName)) {
86
- return;
87
- }
88
- if (typeof settings == 'string') {
89
- settings = {loadURL: settings};
90
- }
91
- else if (typeof settings == 'function') {
92
- settings = {onLoad: settings};
93
- }
94
- $(container).addClass(this.markerClassName);
95
- try {
96
- var svg = document.createElementNS(this.svgNS, 'svg');
97
- svg.setAttribute('version', '1.1');
98
- svg.setAttribute('width', container.clientWidth);
99
- svg.setAttribute('height', container.clientHeight);
100
- container.appendChild(svg);
101
- this._afterLoad(container, svg, settings);
102
- }
103
- catch (e) {
104
- if ($.browser.msie) {
105
- if (!container.id) {
106
- container.id = 'svg' + (this._uuid++);
107
- }
108
- this._settings[container.id] = settings;
109
- container.innerHTML = '<embed type="image/svg+xml" width="100%" ' +
110
- 'height="100%" src="' + (settings.initPath || '') + 'blank.svg"/>';
111
- }
112
- else {
113
- container.innerHTML = '<p class="svg_error">' +
114
- this.local.notSupportedText + '</p>';
115
- }
116
- }
117
- },
118
-
119
- /* SVG callback after loading - register SVG root. */
120
- _registerSVG: function() {
121
- for (var i = 0; i < document.embeds.length; i++) { // Check all
122
- var container = document.embeds[i].parentNode;
123
- if (!$(container).hasClass($.svg.markerClassName) || // Not SVG
124
- $.data(container, PROP_NAME)) { // Already done
125
- continue;
126
- }
127
- var svg = null;
128
- try {
129
- svg = document.embeds[i].getSVGDocument();
130
- }
131
- catch(e) {
132
- setTimeout($.svg._registerSVG, 250); // Renesis takes longer to load
133
- return;
134
- }
135
- svg = (svg ? svg.documentElement : null);
136
- if (svg) {
137
- $.svg._afterLoad(container, svg);
138
- }
139
- }
140
- },
141
-
142
- /* Post-processing once loaded. */
143
- _afterLoad: function(container, svg, settings) {
144
- var settings = settings || this._settings[container.id];
145
- this._settings[container.id] = null;
146
- var wrapper = new this._wrapperClass(svg, container);
147
- $.data(container, PROP_NAME, wrapper);
148
- try {
149
- if (settings.loadURL) { // Load URL
150
- wrapper.load(settings.loadURL, settings);
151
- }
152
- if (settings.settings) { // Additional settings
153
- wrapper.configure(settings.settings);
154
- }
155
- if (settings.onLoad && !settings.loadURL) { // Onload callback
156
- settings.onLoad.apply(container, [wrapper]);
157
- }
158
- }
159
- catch (e) {
160
- alert(e);
161
- }
162
- },
163
-
164
- /* Return the SVG wrapper created for a given container.
165
- @param container (string) selector for the container or
166
- (element) the container for the SVG object or
167
- jQuery collection - first entry is the container
168
- @return (SVGWrapper) the corresponding SVG wrapper element, or null if not attached */
169
- _getSVG: function(container) {
170
- container = (typeof container == 'string' ? $(container)[0] :
171
- (container.jquery ? container[0] : container));
172
- return $.data(container, PROP_NAME);
173
- },
174
-
175
- /* Remove the SVG functionality from a div.
176
- @param container (element) the container for the SVG object */
177
- _destroySVG: function(container) {
178
- var $container = $(container);
179
- if (!$container.hasClass(this.markerClassName)) {
180
- return;
181
- }
182
- $container.removeClass(this.markerClassName).empty();
183
- $.removeData(container, PROP_NAME);
184
- },
185
-
186
- /* Extend the SVGWrapper object with an embedded class.
187
- The constructor function must take a single parameter that is
188
- a reference to the owning SVG root object. This allows the
189
- extension to access the basic SVG functionality.
190
- @param name (string) the name of the SVGWrapper attribute to access the new class
191
- @param extClass (function) the extension class constructor */
192
- addExtension: function(name, extClass) {
193
- this._extensions.push([name, extClass]);
194
- }
195
- });
196
-
197
- /* The main SVG interface, which encapsulates the SVG element.
198
- Obtain a reference from $().svg('get') */
199
- function SVGWrapper(svg, container) {
200
- this._svg = svg; // The SVG root node
201
- this._container = container; // The containing div
202
- for (var i = 0; i < $.svg._extensions.length; i++) {
203
- var extension = $.svg._extensions[i];
204
- this[extension[0]] = new extension[1](this);
205
- }
206
- }
207
-
208
- $.extend(SVGWrapper.prototype, {
209
-
210
- /* Retrieve the width of the SVG object. */
211
- _width: function() {
212
- return this._container.clientWidth;
213
- },
214
-
215
- /* Retrieve the height of the SVG object. */
216
- _height: function() {
217
- return this._container.clientHeight;
218
- },
219
-
220
- /* Retrieve the root SVG element.
221
- @return the top-level SVG element */
222
- root: function() {
223
- return this._svg;
224
- },
225
-
226
- /* Configure the SVG root.
227
- @param settings (object) additional settings for the root
228
- @param clear (boolean) true to remove existing attributes first,
229
- false to add to what is already there (optional)
230
- @return (SVGWrapper) this root */
231
- configure: function(settings, clear) {
232
- if (clear) {
233
- for (var i = this._svg.attributes.length - 1; i >= 0; i--) {
234
- var attr = this._svg.attributes.item(i);
235
- if (!(attr.nodeName == 'onload' || attr.nodeName == 'version' ||
236
- attr.nodeName.substring(0, 5) == 'xmlns')) {
237
- this._svg.attributes.removeNamedItem(attr.nodeName);
238
- }
239
- }
240
- }
241
- for (var attrName in settings) {
242
- this._svg.setAttribute(attrName, settings[attrName]);
243
- }
244
- return this;
245
- },
246
-
247
- /* Locate a specific element in the SVG document.
248
- @param id (string) the element's identifier
249
- @return (element) the element reference, or null if not found */
250
- getElementById: function(id) {
251
- return this._svg.ownerDocument.getElementById(id);
252
- },
253
-
254
- /* Change the attributes for a SVG node.
255
- @param element (SVG element) the node to change
256
- @param settings (object) the new settings
257
- @return (SVGWrapper) this root */
258
- change: function(element, settings) {
259
- if (element) {
260
- for (var name in settings) {
261
- if (settings[name] == null) {
262
- element.removeAttribute(name);
263
- }
264
- else {
265
- element.setAttribute(name, settings[name]);
266
- }
267
- }
268
- }
269
- return this;
270
- },
271
-
272
- /* Check for parent being absent and adjust arguments accordingly. */
273
- _args: function(values, names, optSettings) {
274
- names.splice(0, 0, 'parent');
275
- names.splice(names.length, 0, 'settings');
276
- var args = {};
277
- var offset = 0;
278
- if (values[0] != null && (typeof values[0] != 'object' || !values[0].nodeName)) {
279
- args['parent'] = null;
280
- offset = 1;
281
- }
282
- for (var i = 0; i < values.length; i++) {
283
- args[names[i + offset]] = values[i];
284
- }
285
- if (optSettings) {
286
- $.each(optSettings, function(i, value) {
287
- if (typeof args[value] == 'object') {
288
- args.settings = args[value];
289
- args[value] = null;
290
- }
291
- });
292
- }
293
- return args;
294
- },
295
-
296
- /* Add a title.
297
- @param parent (element) the parent node for the new title (optional)
298
- @param text (string) the text of the title
299
- @param settings (object) additional settings for the title (optional)
300
- @return (element) the new title node */
301
- title: function(parent, text, settings) {
302
- var args = this._args(arguments, ['text']);
303
- var node = this._makeNode(args.parent, 'title', args.settings || {});
304
- node.appendChild(this._svg.ownerDocument.createTextNode(args.text));
305
- return node;
306
- },
307
-
308
- /* Add a description.
309
- @param parent (element) the parent node for the new description (optional)
310
- @param text (string) the text of the description
311
- @param settings (object) additional settings for the description (optional)
312
- @return (element) the new description node */
313
- describe: function(parent, text, settings) {
314
- var args = this._args(arguments, ['text']);
315
- var node = this._makeNode(args.parent, 'desc', args.settings || {});
316
- node.appendChild(this._svg.ownerDocument.createTextNode(args.text));
317
- return node;
318
- },
319
-
320
- /* Add a definitions node.
321
- @param parent (element) the parent node for the new definitions (optional)
322
- @param id (string) the ID of this definitions (optional)
323
- @param settings (object) additional settings for the definitions (optional)
324
- @return (element) the new definitions node */
325
- defs: function(parent, id, settings) {
326
- var args = this._args(arguments, ['id'], ['id']);
327
- return this._makeNode(args.parent, 'defs', $.extend(
328
- (args.id ? {id: args.id} : {}), args.settings || {}));
329
- },
330
-
331
- /* Add a symbol definition.
332
- @param parent (element) the parent node for the new symbol (optional)
333
- @param id (string) the ID of this symbol
334
- @param x1 (number) the left coordinate for this symbol
335
- @param y1 (number) the top coordinate for this symbol
336
- @param x2 (number) the right coordinate for this symbol
337
- @param y2 (number) the bottom coordinate for this symbol
338
- @param settings (object) additional settings for the symbol (optional)
339
- @return (element) the new symbol node */
340
- symbol: function(parent, id, x1, y1, x2, y2, settings) {
341
- var args = this._args(arguments, ['id', 'x1', 'y1', 'x2', 'y2']);
342
- return this._makeNode(args.parent, 'symbol', $.extend(
343
- {id: args.id, viewBox: args.x1 + ' ' + args.y1 + ' ' + args.x2 + ' ' + args.y2},
344
- args.settings || {}));
345
- },
346
-
347
- /* Add a marker definition.
348
- @param parent (element) the parent node for the new marker (optional)
349
- @param id (string) the ID of this marker
350
- @param refX (number) the x-coordinate for the reference point
351
- @param refY (number) the y-coordinate for the reference point
352
- @param mWidth (number) the marker viewport width
353
- @param mHeight (number) the marker viewport height
354
- @param orient (string or int) 'auto' or angle (degrees) (optional)
355
- @param settings (object) additional settings for the marker (optional)
356
- @return (element) the new marker node */
357
- marker: function(parent, id, refX, refY, mWidth, mHeight, orient, settings) {
358
- var args = this._args(arguments, ['id', 'refX', 'refY',
359
- 'mWidth', 'mHeight', 'orient'], ['orient']);
360
- return this._makeNode(args.parent, 'marker', $.extend(
361
- {id: args.id, refX: args.refX, refY: args.refY, markerWidth: args.mWidth,
362
- markerHeight: args.mHeight, orient: args.orient || 'auto'}, args.settings || {}));
363
- },
364
-
365
- /* Add a style node.
366
- @param parent (element) the parent node for the new node (optional)
367
- @param styles (string) the CSS styles
368
- @param settings (object) additional settings for the node (optional)
369
- @return (element) the new style node */
370
- style: function(parent, styles, settings) {
371
- var args = this._args(arguments, ['styles']);
372
- var node = this._makeNode(args.parent, 'style', $.extend(
373
- {type: 'text/css'}, args.settings || {}));
374
- node.appendChild(this._svg.ownerDocument.createTextNode(args.styles));
375
- if ($.browser.opera) {
376
- $('head').append('<style type="text/css">' + args.styles + '</style>');
377
- }
378
- return node;
379
- },
380
-
381
- /* Add a script node.
382
- @param parent (element) the parent node for the new node (optional)
383
- @param script (string) the JavaScript code
384
- @param type (string) the MIME type for the code (optional, default 'text/javascript')
385
- @param settings (object) additional settings for the node (optional)
386
- @return (element) the new script node */
387
- script: function(parent, script, type, settings) {
388
- var args = this._args(arguments, ['script', 'type'], ['type']);
389
- var node = this._makeNode(args.parent, 'script', $.extend(
390
- {type: args.type || 'text/javascript'}, args.settings || {}));
391
- node.appendChild(this._svg.ownerDocument.createTextNode(this._escapeXML(args.script)));
392
- if (!$.browser.mozilla) {
393
- $.globalEval(args.script);
394
- }
395
- return node;
396
- },
397
-
398
- /* Add a linear gradient definition.
399
- Specify all of x1, y1, x2, y2 or none of them.
400
- @param parent (element) the parent node for the new gradient (optional)
401
- @param id (string) the ID for this gradient
402
- @param stops (string[][]) the gradient stops, each entry is
403
- [0] is offset (0.0-1.0 or 0%-100%), [1] is colour,
404
- [2] is opacity (optional)
405
- @param x1 (number) the x-coordinate of the gradient start (optional)
406
- @param y1 (number) the y-coordinate of the gradient start (optional)
407
- @param x2 (number) the x-coordinate of the gradient end (optional)
408
- @param y2 (number) the y-coordinate of the gradient end (optional)
409
- @param settings (object) additional settings for the gradient (optional)
410
- @return (element) the new gradient node */
411
- linearGradient: function(parent, id, stops, x1, y1, x2, y2, settings) {
412
- var args = this._args(arguments,
413
- ['id', 'stops', 'x1', 'y1', 'x2', 'y2'], ['x1']);
414
- var sets = $.extend({id: args.id},
415
- (args.x1 != null ? {x1: args.x1, y1: args.y1, x2: args.x2, y2: args.y2} : {}));
416
- return this._gradient(args.parent, 'linearGradient',
417
- $.extend(sets, args.settings || {}), args.stops);
418
- },
419
-
420
- /* Add a radial gradient definition.
421
- Specify all of cx, cy, r, fx, fy or none of them.
422
- @param parent (element) the parent node for the new gradient (optional)
423
- @param id (string) the ID for this gradient
424
- @param stops (string[][]) the gradient stops, each entry
425
- [0] is offset, [1] is colour, [2] is opacity (optional)
426
- @param cx (number) the x-coordinate of the largest circle centre (optional)
427
- @param cy (number) the y-coordinate of the largest circle centre (optional)
428
- @param r (number) the radius of the largest circle (optional)
429
- @param fx (number) the x-coordinate of the gradient focus (optional)
430
- @param fy (number) the y-coordinate of the gradient focus (optional)
431
- @param settings (object) additional settings for the gradient (optional)
432
- @return (element) the new gradient node */
433
- radialGradient: function(parent, id, stops, cx, cy, r, fx, fy, settings) {
434
- var args = this._args(arguments,
435
- ['id', 'stops', 'cx', 'cy', 'r', 'fx', 'fy'], ['cx']);
436
- var sets = $.extend({id: args.id}, (args.cx != null ?
437
- {cx: args.cx, cy: args.cy, r: args.r, fx: args.fx, fy: args.fy} : {}));
438
- return this._gradient(args.parent, 'radialGradient',
439
- $.extend(sets, args.settings || {}), args.stops);
440
- },
441
-
442
- /* Add a gradient node. */
443
- _gradient: function(parent, name, settings, stops) {
444
- var node = this._makeNode(parent, name, settings);
445
- for (var i = 0; i < stops.length; i++) {
446
- var stop = stops[i];
447
- this._makeNode(node, 'stop', $.extend(
448
- {offset: stop[0], stopColor: stop[1]},
449
- (stop[2] != null ? {stopOpacity: stop[2]} : {})));
450
- }
451
- return node;
452
- },
453
-
454
- /* Add a pattern definition.
455
- Specify all of vx, vy, xwidth, vheight or none of them.
456
- @param parent (element) the parent node for the new pattern (optional)
457
- @param id (string) the ID for this pattern
458
- @param x (number) the x-coordinate for the left edge of the pattern
459
- @param y (number) the y-coordinate for the top edge of the pattern
460
- @param width (number) the width of the pattern
461
- @param height (number) the height of the pattern
462
- @param vx (number) the minimum x-coordinate for view box (optional)
463
- @param vy (number) the minimum y-coordinate for the view box (optional)
464
- @param vwidth (number) the width of the view box (optional)
465
- @param vheight (number) the height of the view box (optional)
466
- @param settings (object) additional settings for the pattern (optional)
467
- @return (element) the new pattern node */
468
- pattern: function(parent, id, x, y, width, height, vx, vy, vwidth, vheight, settings) {
469
- var args = this._args(arguments, ['id', 'x', 'y', 'width', 'height',
470
- 'vx', 'vy', 'vwidth', 'vheight'], ['vx']);
471
- var sets = $.extend({id: args.id, x: args.x, y: args.y,
472
- width: args.width, height: args.height}, (args.vx != null ?
473
- {viewBox: args.vx + ' ' + args.vy + ' ' + args.vwidth + ' ' + args.vheight} : {}));
474
- return this._makeNode(args.parent, 'pattern', $.extend(sets, args.settings || {}));
475
- },
476
-
477
- /* Add a mask definition.
478
- @param parent (element) the parent node for the new mask (optional)
479
- @param id (string) the ID for this mask
480
- @param x (number) the x-coordinate for the left edge of the mask
481
- @param y (number) the y-coordinate for the top edge of the mask
482
- @param width (number) the width of the mask
483
- @param height (number) the height of the mask
484
- @param settings (object) additional settings for the mask (optional)
485
- @return (element) the new mask node */
486
- mask: function(parent, id, x, y, width, height, settings) {
487
- var args = this._args(arguments, ['id', 'x', 'y', 'width', 'height']);
488
- return this._makeNode(args.parent, 'mask', $.extend(
489
- {id: args.id, x: args.x, y: args.y, width: args.width, height: args.height},
490
- args.settings || {}));
491
- },
492
-
493
- /* Create a new path object.
494
- @return (SVGPath) a new path object */
495
- createPath: function() {
496
- return new SVGPath();
497
- },
498
-
499
- /* Create a new text object.
500
- @return (SVGText) a new text object */
501
- createText: function() {
502
- return new SVGText();
503
- },
504
-
505
- /* Add an embedded SVG element.
506
- Specify all of vx, vy, vwidth, vheight or none of them.
507
- @param parent (element) the parent node for the new node (optional)
508
- @param x (number) the x-coordinate for the left edge of the node
509
- @param y (number) the y-coordinate for the top edge of the node
510
- @param width (number) the width of the node
511
- @param height (number) the height of the node
512
- @param vx (number) the minimum x-coordinate for view box (optional)
513
- @param vy (number) the minimum y-coordinate for the view box (optional)
514
- @param vwidth (number) the width of the view box (optional)
515
- @param vheight (number) the height of the view box (optional)
516
- @param settings (object) additional settings for the node (optional)
517
- @return (element) the new node */
518
- svg: function(parent, x, y, width, height, vx, vy, vwidth, vheight, settings) {
519
- var args = this._args(arguments, ['x', 'y', 'width', 'height',
520
- 'vx', 'vy', 'vwidth', 'vheight'], ['vx']);
521
- var sets = $.extend({x: args.x, y: args.y, width: args.width, height: args.height},
522
- (args.vx != null ? {viewBox: args.vx + ' ' + args.vy + ' ' +
523
- args.vwidth + ' ' + args.vheight} : {}));
524
- return this._makeNode(args.parent, 'svg', $.extend(sets, args.settings || {}));
525
- },
526
-
527
- /* Create a group.
528
- @param parent (element) the parent node for the new group (optional)
529
- @param id (string) the ID of this group (optional)
530
- @param settings (object) additional settings for the group (optional)
531
- @return (element) the new group node */
532
- group: function(parent, id, settings) {
533
- var args = this._args(arguments, ['id'], ['id']);
534
- return this._makeNode(args.parent, 'g', $.extend({id: args.id}, args.settings || {}));
535
- },
536
-
537
- /* Add a usage reference.
538
- Specify all of x, y, width, height or none of them.
539
- @param parent (element) the parent node for the new node (optional)
540
- @param x (number) the x-coordinate for the left edge of the node (optional)
541
- @param y (number) the y-coordinate for the top edge of the node (optional)
542
- @param width (number) the width of the node (optional)
543
- @param height (number) the height of the node (optional)
544
- @param ref (string) the ID of the definition node
545
- @param settings (object) additional settings for the node (optional)
546
- @return (element) the new node */
547
- use: function(parent, x, y, width, height, ref, settings) {
548
- var args = this._args(arguments, ['x', 'y', 'width', 'height', 'ref']);
549
- if (typeof args.x == 'string') {
550
- args.ref = args.x;
551
- args.settings = args.y;
552
- args.x = args.y = args.width = args.height = null;
553
- }
554
- var node = this._makeNode(args.parent, 'use', $.extend(
555
- {x: args.x, y: args.y, width: args.width, height: args.height},
556
- args.settings || {}));
557
- node.setAttributeNS($.svg.xlinkNS, 'href', args.ref);
558
- return node;
559
- },
560
-
561
- /* Add a link, which applies to all child elements.
562
- @param parent (element) the parent node for the new link (optional)
563
- @param ref (string) the target URL
564
- @param settings (object) additional settings for the link (optional)
565
- @return (element) the new link node */
566
- link: function(parent, ref, settings) {
567
- var args = this._args(arguments, ['ref']);
568
- var node = this._makeNode(args.parent, 'a', args.settings);
569
- node.setAttributeNS($.svg.xlinkNS, 'href', args.ref);
570
- return node;
571
- },
572
-
573
- /* Add an image.
574
- @param parent (element) the parent node for the new image (optional)
575
- @param x (number) the x-coordinate for the left edge of the image
576
- @param y (number) the y-coordinate for the top edge of the image
577
- @param width (number) the width of the image
578
- @param height (number) the height of the image
579
- @param ref (string) the path to the image
580
- @param settings (object) additional settings for the image (optional)
581
- @return (element) the new image node */
582
- image: function(parent, x, y, width, height, ref, settings) {
583
- var args = this._args(arguments, ['x', 'y', 'width', 'height', 'ref']);
584
- var node = this._makeNode(args.parent, 'image', $.extend(
585
- {x: args.x, y: args.y, width: args.width, height: args.height},
586
- args.settings || {}));
587
- node.setAttributeNS($.svg.xlinkNS, 'href', args.ref);
588
- return node;
589
- },
590
-
591
- /* Draw a path.
592
- @param parent (element) the parent node for the new shape (optional)
593
- @param path (string or SVGPath) the path to draw
594
- @param settings (object) additional settings for the shape (optional)
595
- @return (element) the new shape node */
596
- path: function(parent, path, settings) {
597
- var args = this._args(arguments, ['path']);
598
- return this._makeNode(args.parent, 'path', $.extend(
599
- {d: (args.path.path ? args.path.path() : args.path)}, args.settings || {}));
600
- },
601
-
602
- /* Draw a rectangle.
603
- Specify both of rx and ry or neither.
604
- @param parent (element) the parent node for the new shape (optional)
605
- @param x (number) the x-coordinate for the left edge of the rectangle
606
- @param y (number) the y-coordinate for the top edge of the rectangle
607
- @param width (number) the width of the rectangle
608
- @param height (number) the height of the rectangle
609
- @param rx (number) the x-radius of the ellipse for the rounded corners (optional)
610
- @param ry (number) the y-radius of the ellipse for the rounded corners (optional)
611
- @param settings (object) additional settings for the shape (optional)
612
- @return (element) the new shape node */
613
- rect: function(parent, x, y, width, height, rx, ry, settings) {
614
- var args = this._args(arguments, ['x', 'y', 'width', 'height', 'rx', 'ry'], ['rx']);
615
- return this._makeNode(args.parent, 'rect', $.extend(
616
- {x: args.x, y: args.y, width: args.width, height: args.height},
617
- (args.rx ? {rx: args.rx, ry: args.ry} : {}), args.settings || {}));
618
- },
619
-
620
- /* Draw a circle.
621
- @param parent (element) the parent node for the new shape (optional)
622
- @param cx (number) the x-coordinate for the centre of the circle
623
- @param cy (number) the y-coordinate for the centre of the circle
624
- @param r (number) the radius of the circle
625
- @param settings (object) additional settings for the shape (optional)
626
- @return (element) the new shape node */
627
- circle: function(parent, cx, cy, r, settings) {
628
- var args = this._args(arguments, ['cx', 'cy', 'r']);
629
- return this._makeNode(args.parent, 'circle', $.extend(
630
- {cx: args.cx, cy: args.cy, r: args.r}, args.settings || {}));
631
- },
632
-
633
- /* Draw an ellipse.
634
- @param parent (element) the parent node for the new shape (optional)
635
- @param cx (number) the x-coordinate for the centre of the ellipse
636
- @param cy (number) the y-coordinate for the centre of the ellipse
637
- @param rx (number) the x-radius of the ellipse
638
- @param ry (number) the y-radius of the ellipse
639
- @param settings (object) additional settings for the shape (optional)
640
- @return (element) the new shape node */
641
- ellipse: function(parent, cx, cy, rx, ry, settings) {
642
- var args = this._args(arguments, ['cx', 'cy', 'rx', 'ry']);
643
- return this._makeNode(args.parent, 'ellipse', $.extend(
644
- {cx: args.cx, cy: args.cy, rx: args.rx, ry: args.ry}, args.settings || {}));
645
- },
646
-
647
- /* Draw a line.
648
- @param parent (element) the parent node for the new shape (optional)
649
- @param x1 (number) the x-coordinate for the start of the line
650
- @param y1 (number) the y-coordinate for the start of the line
651
- @param x2 (number) the x-coordinate for the end of the line
652
- @param y2 (number) the y-coordinate for the end of the line
653
- @param settings (object) additional settings for the shape (optional)
654
- @return (element) the new shape node */
655
- line: function(parent, x1, y1, x2, y2, settings) {
656
- var args = this._args(arguments, ['x1', 'y1', 'x2', 'y2']);
657
- return this._makeNode(args.parent, 'line', $.extend(
658
- {x1: args.x1, y1: args.y1, x2: args.x2, y2: args.y2}, args.settings || {}));
659
- },
660
-
661
- /* Draw a polygonal line.
662
- @param parent (element) the parent node for the new shape (optional)
663
- @param points (number[][]) the x-/y-coordinates for the points on the line
664
- @param settings (object) additional settings for the shape (optional)
665
- @return (element) the new shape node */
666
- polyline: function(parent, points, settings) {
667
- var args = this._args(arguments, ['points']);
668
- return this._poly(args.parent, 'polyline', args.points, args.settings);
669
- },
670
-
671
- /* Draw a polygonal shape.
672
- @param parent (element) the parent node for the new shape (optional)
673
- @param points (number[][]) the x-/y-coordinates for the points on the shape
674
- @param settings (object) additional settings for the shape (optional)
675
- @return (element) the new shape node */
676
- polygon: function(parent, points, settings) {
677
- var args = this._args(arguments, ['points']);
678
- return this._poly(args.parent, 'polygon', args.points, args.settings);
679
- },
680
-
681
- /* Draw a polygonal line or shape. */
682
- _poly: function(parent, name, points, settings) {
683
- var ps = '';
684
- for (var i = 0; i < points.length; i++) {
685
- ps += points[i].join() + ' ';
686
- }
687
- return this._makeNode(parent, name, $.extend(
688
- {points: $.trim(ps)}, settings || {}));
689
- },
690
-
691
- /* Draw text.
692
- Specify both of x and y or neither of them.
693
- @param parent (element) the parent node for the text (optional)
694
- @param x (number or number[]) the x-coordinate(s) for the text (optional)
695
- @param y (number or number[]) the y-coordinate(s) for the text (optional)
696
- @param value (string) the text content or
697
- (SVGText) text with spans and references
698
- @param settings (object) additional settings for the text (optional)
699
- @return (element) the new text node */
700
- text: function(parent, x, y, value, settings) {
701
- var args = this._args(arguments, ['x', 'y', 'value']);
702
- if (typeof args.x == 'string' && arguments.length < 4) {
703
- args.value = args.x;
704
- args.settings = args.y;
705
- args.x = args.y = null;
706
- }
707
- return this._text(args.parent, 'text', args.value, $.extend(
708
- {x: (args.x && isArray(args.x) ? args.x.join(' ') : args.x),
709
- y: (args.y && isArray(args.y) ? args.y.join(' ') : args.y)},
710
- args.settings || {}));
711
- },
712
-
713
- /* Draw text along a path.
714
- @param parent (element) the parent node for the text (optional)
715
- @param path (string) the ID of the path
716
- @param value (string) the text content or
717
- (SVGText) text with spans and references
718
- @param settings (object) additional settings for the text (optional)
719
- @return (element) the new text node */
720
- textpath: function(parent, path, value, settings) {
721
- var args = this._args(arguments, ['path', 'value']);
722
- var node = this._text(args.parent, 'textPath', args.value, args.settings || {});
723
- node.setAttributeNS($.svg.xlinkNS, 'href', args.path);
724
- return node;
725
- },
726
-
727
- /* Draw text. */
728
- _text: function(parent, name, value, settings) {
729
- var node = this._makeNode(parent, name, settings);
730
- if (typeof value == 'string') {
731
- node.appendChild(node.ownerDocument.createTextNode(value));
732
- }
733
- else {
734
- for (var i = 0; i < value._parts.length; i++) {
735
- var part = value._parts[i];
736
- if (part[0] == 'tspan') {
737
- var child = this._makeNode(node, part[0], part[2]);
738
- child.appendChild(node.ownerDocument.createTextNode(part[1]));
739
- node.appendChild(child);
740
- }
741
- else if (part[0] == 'tref') {
742
- var child = this._makeNode(node, part[0], part[2]);
743
- child.setAttributeNS($.svg.xlinkNS, 'href', part[1]);
744
- node.appendChild(child);
745
- }
746
- else if (part[0] == 'textpath') {
747
- var set = $.extend({}, part[2]);
748
- set.href = null;
749
- var child = this._makeNode(node, part[0], set);
750
- child.setAttributeNS($.svg.xlinkNS, 'href', part[2].href);
751
- child.appendChild(node.ownerDocument.createTextNode(part[1]));
752
- node.appendChild(child);
753
- }
754
- else { // straight text
755
- node.appendChild(node.ownerDocument.createTextNode(part[1]));
756
- }
757
- }
758
- }
759
- return node;
760
- },
761
-
762
- /* Add a custom SVG element.
763
- @param parent (element) the parent node for the new element (optional)
764
- @param name (string) the name of the element
765
- @param settings (object) additional settings for the element (optional)
766
- @return (element) the new title node */
767
- other: function(parent, name, settings) {
768
- var args = this._args(arguments, ['name']);
769
- return this._makeNode(args.parent, args.name, args.settings || {});
770
- },
771
-
772
- /* Create a shape node with the given settings. */
773
- _makeNode: function(parent, name, settings) {
774
- parent = parent || this._svg;
775
- var node = this._svg.ownerDocument.createElementNS($.svg.svgNS, name);
776
- for (var name in settings) {
777
- var value = settings[name];
778
- if (value != null && value != null &&
779
- (typeof value != 'string' || value != '')) {
780
- node.setAttribute($.svg._attrNames[name] || name, value);
781
- }
782
- }
783
- parent.appendChild(node);
784
- return node;
785
- },
786
-
787
- /* Add an existing SVG node to the diagram.
788
- @param parent (element) the parent node for the new node (optional)
789
- @param node (element) the new node to add or
790
- (string) the jQuery selector for the node or
791
- (jQuery collection) set of nodes to add
792
- @return (SVGWrapper) this wrapper */
793
- add: function(parent, node) {
794
- var args = this._args(arguments, ['node']);
795
- var svg = this;
796
- args.parent = args.parent || this._svg;
797
- try {
798
- if ($.svg._renesis) {
799
- throw 'Force traversal';
800
- }
801
- args.parent.appendChild(args.node.cloneNode(true));
802
- }
803
- catch (e) {
804
- args.node = (args.node.jquery ? args.node : $(args.node));
805
- args.node.each(function() {
806
- var child = svg._cloneAsSVG(this);
807
- if (child) {
808
- args.parent.appendChild(child);
809
- }
810
- });
811
- }
812
- return this;
813
- },
814
-
815
- /* SVG nodes must belong to the SVG namespace, so clone and ensure this is so. */
816
- _cloneAsSVG: function(node) {
817
- var newNode = null;
818
- if (node.nodeType == 1) { // element
819
- newNode = this._svg.ownerDocument.createElementNS(
820
- $.svg.svgNS, this._checkName(node.nodeName));
821
- for (var i = 0; i < node.attributes.length; i++) {
822
- var attr = node.attributes.item(i);
823
- if (attr.nodeName != 'xmlns' && attr.nodeValue) {
824
- if (attr.prefix == 'xlink') {
825
- newNode.setAttributeNS($.svg.xlinkNS, attr.localName, attr.nodeValue);
826
- }
827
- else {
828
- newNode.setAttribute(this._checkName(attr.nodeName), attr.nodeValue);
829
- }
830
- }
831
- }
832
- for (var i = 0; i < node.childNodes.length; i++) {
833
- var child = this._cloneAsSVG(node.childNodes[i]);
834
- if (child) {
835
- newNode.appendChild(child);
836
- }
837
- }
838
- }
839
- else if (node.nodeType == 3) { // text
840
- if ($.trim(node.nodeValue)) {
841
- newNode = this._svg.ownerDocument.createTextNode(node.nodeValue);
842
- }
843
- }
844
- else if (node.nodeType == 4) { // CDATA
845
- if ($.trim(node.nodeValue)) {
846
- try {
847
- newNode = this._svg.ownerDocument.createCDATASection(node.nodeValue);
848
- }
849
- catch (e) {
850
- newNode = this._svg.ownerDocument.createTextNode(
851
- node.nodeValue.replace(/&/g, '&amp;').
852
- replace(/</g, '&lt;').replace(/>/g, '&gt;'));
853
- }
854
- }
855
- }
856
- return newNode;
857
- },
858
-
859
- /* Node names must be lower case and without SVG namespace prefix. */
860
- _checkName: function(name) {
861
- name = (name.substring(0, 1) >= 'A' && name.substring(0, 1) <= 'Z' ?
862
- name.toLowerCase() : name);
863
- return (name.substring(0, 4) == 'svg:' ? name.substring(4) : name);
864
- },
865
-
866
- /* Load an external SVG document.
867
- @param url (string) the location of the SVG document or
868
- the actual SVG content
869
- @param settings (boolean) see addTo below or
870
- (function) see onLoad below or
871
- (object) additional settings for the load with attributes below:
872
- addTo (boolean) true to add to what's already there,
873
- or false to clear the canvas first
874
- changeSize (boolean) true to allow the canvas size to change,
875
- or false to retain the original
876
- onLoad (function) callback after the document has loaded,
877
- 'this' is the container, receives SVG object and
878
- optional error message as a parameter
879
- @return (SVGWrapper) this root */
880
- load: function(url, settings) {
881
- settings = (typeof settings == 'boolean'? {addTo: settings} :
882
- (typeof settings == 'function'? {onLoad: settings} : settings || {}));
883
- if (!settings.addTo) {
884
- this.clear(false);
885
- }
886
- var size = [this._svg.getAttribute('width'), this._svg.getAttribute('height')];
887
- var wrapper = this;
888
- // Report a problem with the load
889
- var reportError = function(message) {
890
- message = $.svg.local.errorLoadingText + ': ' + message;
891
- if (settings.onLoad) {
892
- settings.onLoad.apply(wrapper._container, [wrapper, message]);
893
- }
894
- else {
895
- wrapper.text(null, 10, 20, message);
896
- }
897
- };
898
- // Create a DOM from SVG content
899
- var loadXML4IE = function(data) {
900
- var xml = new ActiveXObject('Microsoft.XMLDOM');
901
- xml.validateOnParse = false;
902
- xml.resolveExternals = false;
903
- xml.async = false;
904
- xml.loadXML(data);
905
- if (xml.parseError.errorCode != 0) {
906
- reportError(xml.parseError.reason);
907
- return null;
908
- }
909
- return xml;
910
- };
911
- // Load the SVG DOM
912
- var loadSVG = function(data) {
913
- if (!data) {
914
- return;
915
- }
916
- if (data.documentElement.nodeName != 'svg') {
917
- var errors = data.getElementsByTagName('parsererror');
918
- var messages = (errors.length ? errors[0].getElementsByTagName('div') : []); // Safari
919
- reportError(!errors.length ? '???' :
920
- (messages.length ? messages[0] : errors[0]).firstChild.nodeValue);
921
- return;
922
- }
923
- var attrs = {};
924
- for (var i = 0; i < data.documentElement.attributes.length; i++) {
925
- var attr = data.documentElement.attributes.item(i);
926
- if (!(attr.nodeName == 'version' || attr.nodeName.substring(0, 5) == 'xmlns')) {
927
- attrs[attr.nodeName] = attr.nodeValue;
928
- }
929
- }
930
- wrapper.configure(attrs, true);
931
- var nodes = data.documentElement.childNodes;
932
- for (var i = 0; i < nodes.length; i++) {
933
- try {
934
- if ($.svg._renesis) {
935
- throw 'Force traversal';
936
- }
937
- wrapper._svg.appendChild(nodes[i].cloneNode(true));
938
- }
939
- catch (e) {
940
- wrapper.add(null, nodes[i]);
941
- }
942
- }
943
- if (!settings.changeSize) {
944
- wrapper.configure({width: size[0], height: size[1]});
945
- }
946
- if (settings.onLoad) {
947
- settings.onLoad.apply(wrapper._container, [wrapper]);
948
- }
949
- };
950
- if (url.match('<svg')) { // Inline SVG
951
- loadSVG($.browser.msie ? loadXML4IE(url) :
952
- new DOMParser().parseFromString(url, 'text/xml'));
953
- }
954
- else { // Remote SVG
955
- $.ajax({url: url, dataType: ($.browser.msie ? 'text' : 'xml'),
956
- success: function(xml) {
957
- loadSVG($.browser.msie ? loadXML4IE(xml) : xml);
958
- }, error: function(http, message, exc) {
959
- reportError(message + (exc ? ' ' + exc.message : ''));
960
- }});
961
- }
962
- return this;
963
- },
964
-
965
- /* Delete a specified node.
966
- @param node (element) the drawing node to remove
967
- @return (SVGWrapper) this root */
968
- remove: function(node) {
969
- node.parentNode.removeChild(node);
970
- return this;
971
- },
972
-
973
- /* Delete everything in the current document.
974
- @param attrsToo (boolean) true to clear any root attributes as well,
975
- false to leave them (optional)
976
- @return (SVGWrapper) this root */
977
- clear: function(attrsToo) {
978
- if (attrsToo) {
979
- this.configure({}, true);
980
- }
981
- while (this._svg.firstChild) {
982
- this._svg.removeChild(this._svg.firstChild);
983
- }
984
- return this;
985
- },
986
-
987
- /* Serialise the current diagram into an SVG text document.
988
- @param node (SVG element) the starting node (optional)
989
- @return (string) the SVG as text */
990
- toSVG: function(node) {
991
- node = node || this._svg;
992
- return (typeof XMLSerializer == 'undefined' ? this._toSVG(node) :
993
- new XMLSerializer().serializeToString(node));
994
- },
995
-
996
- /* Serialise one node in the SVG hierarchy. */
997
- _toSVG: function(node) {
998
- var svgDoc = '';
999
- if (!node) {
1000
- return svgDoc;
1001
- }
1002
- if (node.nodeType == 3) { // Text
1003
- svgDoc = node.nodeValue;
1004
- }
1005
- else if (node.nodeType == 4) { // CDATA
1006
- svgDoc = '<![CDATA[' + node.nodeValue + ']]>';
1007
- }
1008
- else { // Element
1009
- svgDoc = '<' + node.nodeName;
1010
- if (node.attributes) {
1011
- for (var i = 0; i < node.attributes.length; i++) {
1012
- var attr = node.attributes.item(i);
1013
- if (!($.trim(attr.nodeValue) == '' || attr.nodeValue.match(/^\[object/) ||
1014
- attr.nodeValue.match(/^function/))) {
1015
- svgDoc += ' ' + (attr.namespaceURI == $.svg.xlinkNS ? 'xlink:' : '') +
1016
- attr.nodeName + '="' + attr.nodeValue + '"';
1017
- }
1018
- }
1019
- }
1020
- if (node.firstChild) {
1021
- svgDoc += '>';
1022
- var child = node.firstChild;
1023
- while (child) {
1024
- svgDoc += this._toSVG(child);
1025
- child = child.nextSibling;
1026
- }
1027
- svgDoc += '</' + node.nodeName + '>';
1028
- }
1029
- else {
1030
- svgDoc += '/>';
1031
- }
1032
- }
1033
- return svgDoc;
1034
- },
1035
-
1036
- /* Escape reserved characters in XML. */
1037
- _escapeXML: function(text) {
1038
- text = text.replace(/&/g, '&amp;');
1039
- text = text.replace(/</g, '&lt;');
1040
- text = text.replace(/>/g, '&gt;');
1041
- return text;
1042
- }
1043
- });
1044
-
1045
- /* Helper to generate an SVG path.
1046
- Obtain an instance from the SVGWrapper object.
1047
- String calls together to generate the path and use its value:
1048
- var path = root.createPath();
1049
- root.path(null, path.move(100, 100).line(300, 100).line(200, 300).close(), {fill: 'red'});
1050
- or
1051
- root.path(null, path.move(100, 100).line([[300, 100], [200, 300]]).close(), {fill: 'red'}); */
1052
- function SVGPath() {
1053
- this._path = '';
1054
- }
1055
-
1056
- $.extend(SVGPath.prototype, {
1057
- /* Prepare to create a new path.
1058
- @return (SVGPath) this path */
1059
- reset: function() {
1060
- this._path = '';
1061
- return this;
1062
- },
1063
-
1064
- /* Move the pointer to a position.
1065
- @param x (number) x-coordinate to move to or
1066
- (number[][]) x-/y-coordinates to move to
1067
- @param y (number) y-coordinate to move to (omitted if x is array)
1068
- @param relative (boolean) true for coordinates relative to the current point,
1069
- false for coordinates being absolute
1070
- @return (SVGPath) this path */
1071
- move: function(x, y, relative) {
1072
- relative = (isArray(x) ? y : relative);
1073
- return this._coords((relative ? 'm' : 'M'), x, y);
1074
- },
1075
-
1076
- /* Draw a line to a position.
1077
- @param x (number) x-coordinate to move to or
1078
- (number[][]) x-/y-coordinates to move to
1079
- @param y (number) y-coordinate to move to (omitted if x is array)
1080
- @param relative (boolean) true for coordinates relative to the current point,
1081
- false for coordinates being absolute
1082
- @return (SVGPath) this path */
1083
- line: function(x, y, relative) {
1084
- relative = (isArray(x) ? y : relative);
1085
- return this._coords((relative ? 'l' : 'L'), x, y);
1086
- },
1087
-
1088
- /* Draw a horizontal line to a position.
1089
- @param x (number) x-coordinate to draw to or
1090
- (number[]) x-coordinates to draw to
1091
- @param relative (boolean) true for coordinates relative to the current point,
1092
- false for coordinates being absolute
1093
- @return (SVGPath) this path */
1094
- horiz: function(x, relative) {
1095
- this._path += (relative ? 'h' : 'H') + (isArray(x) ? x.join(' ') : x);
1096
- return this;
1097
- },
1098
-
1099
- /* Draw a vertical line to a position.
1100
- @param y (number) y-coordinate to draw to or
1101
- (number[]) y-coordinates to draw to
1102
- @param relative (boolean) true for coordinates relative to the current point,
1103
- false for coordinates being absolute
1104
- @return (SVGPath) this path */
1105
- vert: function(y, relative) {
1106
- this._path += (relative ? 'v' : 'V') + (isArray(y) ? y.join(' ') : y);
1107
- return this;
1108
- },
1109
-
1110
- /* Draw a cubic B�zier curve.
1111
- @param x1 (number) x-coordinate of beginning control point or
1112
- (number[][]) x-/y-coordinates of control and end points to draw to
1113
- @param y1 (number) y-coordinate of beginning control point (omitted if x1 is array)
1114
- @param x2 (number) x-coordinate of ending control point (omitted if x1 is array)
1115
- @param y2 (number) y-coordinate of ending control point (omitted if x1 is array)
1116
- @param x (number) x-coordinate of curve end (omitted if x1 is array)
1117
- @param y (number) y-coordinate of curve end (omitted if x1 is array)
1118
- @param relative (boolean) true for coordinates relative to the current point,
1119
- false for coordinates being absolute
1120
- @return (SVGPath) this path */
1121
- curveC: function(x1, y1, x2, y2, x, y, relative) {
1122
- relative = (isArray(x1) ? y1 : relative);
1123
- return this._coords((relative ? 'c' : 'C'), x1, y1, x2, y2, x, y);
1124
- },
1125
-
1126
- /* Continue a cubic B�zier curve.
1127
- Starting control point is the reflection of the previous end control point.
1128
- @param x2 (number) x-coordinate of ending control point or
1129
- (number[][]) x-/y-coordinates of control and end points to draw to
1130
- @param y2 (number) y-coordinate of ending control point (omitted if x2 is array)
1131
- @param x (number) x-coordinate of curve end (omitted if x2 is array)
1132
- @param y (number) y-coordinate of curve end (omitted if x2 is array)
1133
- @param relative (boolean) true for coordinates relative to the current point,
1134
- false for coordinates being absolute
1135
- @return (SVGPath) this path */
1136
- smoothC: function(x2, y2, x, y, relative) {
1137
- relative = (isArray(x2) ? y2 : relative);
1138
- return this._coords((relative ? 's' : 'S'), x2, y2, x, y);
1139
- },
1140
-
1141
- /* Draw a quadratic B�zier curve.
1142
- @param x1 (number) x-coordinate of control point or
1143
- (number[][]) x-/y-coordinates of control and end points to draw to
1144
- @param y1 (number) y-coordinate of control point (omitted if x1 is array)
1145
- @param x (number) x-coordinate of curve end (omitted if x1 is array)
1146
- @param y (number) y-coordinate of curve end (omitted if x1 is array)
1147
- @param relative (boolean) true for coordinates relative to the current point,
1148
- false for coordinates being absolute
1149
- @return (SVGPath) this path */
1150
- curveQ: function(x1, y1, x, y, relative) {
1151
- relative = (isArray(x1) ? y1 : relative);
1152
- return this._coords((relative ? 'q' : 'Q'), x1, y1, x, y);
1153
- },
1154
-
1155
- /* Continue a quadratic B�zier curve.
1156
- Control point is the reflection of the previous control point.
1157
- @param x (number) x-coordinate of curve end or
1158
- (number[][]) x-/y-coordinates of points to draw to
1159
- @param y (number) y-coordinate of curve end (omitted if x is array)
1160
- @param relative (boolean) true for coordinates relative to the current point,
1161
- false for coordinates being absolute
1162
- @return (SVGPath) this path */
1163
- smoothQ: function(x, y, relative) {
1164
- relative = (isArray(x) ? y : relative);
1165
- return this._coords((relative ? 't' : 'T'), x, y);
1166
- },
1167
-
1168
- /* Generate a path command with (a list of) coordinates. */
1169
- _coords: function(cmd, x1, y1, x2, y2, x3, y3) {
1170
- if (isArray(x1)) {
1171
- for (var i = 0; i < x1.length; i++) {
1172
- var cs = x1[i];
1173
- this._path += (i == 0 ? cmd : ' ') + cs[0] + ',' + cs[1] +
1174
- (cs.length < 4 ? '' : ' ' + cs[2] + ',' + cs[3] +
1175
- (cs.length < 6 ? '': ' ' + cs[4] + ',' + cs[5]));
1176
- }
1177
- }
1178
- else {
1179
- this._path += cmd + x1 + ',' + y1 +
1180
- (x2 == null ? '' : ' ' + x2 + ',' + y2 +
1181
- (x3 == null ? '' : ' ' + x3 + ',' + y3));
1182
- }
1183
- return this;
1184
- },
1185
-
1186
- /* Draw an arc to a position.
1187
- @param rx (number) x-radius of arc or
1188
- (number/boolean[][]) x-/y-coordinates and flags for points to draw to
1189
- @param ry (number) y-radius of arc (omitted if rx is array)
1190
- @param xRotate (number) x-axis rotation (degrees, clockwise) (omitted if rx is array)
1191
- @param large (boolean) true to draw the large part of the arc,
1192
- false to draw the small part (omitted if rx is array)
1193
- @param clockwise (boolean) true to draw the clockwise arc,
1194
- false to draw the anti-clockwise arc (omitted if rx is array)
1195
- @param x (number) x-coordinate of arc end (omitted if rx is array)
1196
- @param y (number) y-coordinate of arc end (omitted if rx is array)
1197
- @param relative (boolean) true for coordinates relative to the current point,
1198
- false for coordinates being absolute
1199
- @return (SVGPath) this path */
1200
- arc: function(rx, ry, xRotate, large, clockwise, x, y, relative) {
1201
- relative = (isArray(rx) ? ry : relative);
1202
- this._path += (relative ? 'a' : 'A');
1203
- if (isArray(rx)) {
1204
- for (var i = 0; i < rx.length; i++) {
1205
- var cs = rx[i];
1206
- this._path += (i == 0 ? '' : ' ') + cs[0] + ',' + cs[1] + ' ' +
1207
- cs[2] + ' ' + (cs[3] ? '1' : '0') + ',' +
1208
- (cs[4] ? '1' : '0') + ' ' + cs[5] + ',' + cs[6];
1209
- }
1210
- }
1211
- else {
1212
- this._path += rx + ',' + ry + ' ' + xRotate + ' ' +
1213
- (large ? '1' : '0') + ',' + (clockwise ? '1' : '0') + ' ' + x + ',' + y;
1214
- }
1215
- return this;
1216
- },
1217
-
1218
- /* Close the current path.
1219
- @return (SVGPath) this path */
1220
- close: function() {
1221
- this._path += 'z';
1222
- return this;
1223
- },
1224
-
1225
- /* Return the string rendering of the specified path.
1226
- @return (string) stringified path */
1227
- path: function() {
1228
- return this._path;
1229
- }
1230
- });
1231
-
1232
- SVGPath.prototype.moveTo = SVGPath.prototype.move;
1233
- SVGPath.prototype.lineTo = SVGPath.prototype.line;
1234
- SVGPath.prototype.horizTo = SVGPath.prototype.horiz;
1235
- SVGPath.prototype.vertTo = SVGPath.prototype.vert;
1236
- SVGPath.prototype.curveCTo = SVGPath.prototype.curveC;
1237
- SVGPath.prototype.smoothCTo = SVGPath.prototype.smoothC;
1238
- SVGPath.prototype.curveQTo = SVGPath.prototype.curveQ;
1239
- SVGPath.prototype.smoothQTo = SVGPath.prototype.smoothQ;
1240
- SVGPath.prototype.arcTo = SVGPath.prototype.arc;
1241
-
1242
- /* Helper to generate an SVG text object.
1243
- Obtain an instance from the SVGWrapper object.
1244
- String calls together to generate the text and use its value:
1245
- var text = root.createText();
1246
- root.text(null, x, y, text.string('This is ').
1247
- span('red', {fill: 'red'}).string('!'), {fill: 'blue'}); */
1248
- function SVGText() {
1249
- this._parts = []; // The components of the text object
1250
- }
1251
-
1252
- $.extend(SVGText.prototype, {
1253
- /* Prepare to create a new text object.
1254
- @return (SVGText) this text */
1255
- reset: function() {
1256
- this._parts = [];
1257
- return this;
1258
- },
1259
-
1260
- /* Add a straight string value.
1261
- @param value (string) the actual text
1262
- @return (SVGText) this text object */
1263
- string: function(value) {
1264
- this._parts[this._parts.length] = ['text', value];
1265
- return this;
1266
- },
1267
-
1268
- /* Add a separate text span that has its own settings.
1269
- @param value (string) the actual text
1270
- @param settings (object) the settings for this text
1271
- @return (SVGText) this text object */
1272
- span: function(value, settings) {
1273
- this._parts[this._parts.length] = ['tspan', value, settings];
1274
- return this;
1275
- },
1276
-
1277
- /* Add a reference to a previously defined text string.
1278
- @param id (string) the ID of the actual text
1279
- @param settings (object) the settings for this text
1280
- @return (SVGText) this text object */
1281
- ref: function(id, settings) {
1282
- this._parts[this._parts.length] = ['tref', id, settings];
1283
- return this;
1284
- },
1285
-
1286
- /* Add text drawn along a path.
1287
- @param id (string) the ID of the path
1288
- @param value (string) the actual text
1289
- @param settings (object) the settings for this text
1290
- @return (SVGText) this text object */
1291
- path: function(id, value, settings) {
1292
- this._parts[this._parts.length] = ['textpath', value,
1293
- $.extend({href: id}, settings || {})];
1294
- return this;
1295
- }
1296
- });
1297
-
1298
- /* Attach the SVG functionality to a jQuery selection.
1299
- @param command (string) the command to run (optional, default 'attach')
1300
- @param options (object) the new settings to use for these SVG instances
1301
- @return jQuery (object) for chaining further calls */
1302
- $.fn.svg = function(options) {
1303
- var otherArgs = Array.prototype.slice.call(arguments, 1);
1304
- if (typeof options == 'string' && options == 'get') {
1305
- return $.svg['_' + options + 'SVG'].apply($.svg, [this[0]].concat(otherArgs));
1306
- }
1307
- return this.each(function() {
1308
- if (typeof options == 'string') {
1309
- $.svg['_' + options + 'SVG'].apply($.svg, [this].concat(otherArgs));
1310
- }
1311
- else {
1312
- $.svg._attachSVG(this, options || {});
1313
- }
1314
- });
1315
- };
1316
-
1317
- /* Determine whether an object is an array. */
1318
- function isArray(a) {
1319
- return (a && a.constructor == Array);
1320
- }
1321
-
1322
- // Singleton primary SVG interface
1323
- $.svg = new SVGManager();
1324
-
1325
- })(jQuery);