rtml 1.2.2 → 2.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. data/History.txt +2 -2
  2. data/Manifest.txt +199 -389
  3. data/PostInstall.txt +6 -1
  4. data/README.rdoc +111 -26
  5. data/Rakefile +29 -33
  6. data/app_generators/rtml/USAGE +2 -2
  7. data/app_generators/rtml/rtml_generator.rb +2 -2
  8. data/app_generators/rtml/templates/rtml_template.rb +26 -0
  9. data/bin/rtml +2 -2
  10. data/builtin/controllers/rtml_controller.rb +58 -0
  11. data/builtin/models/rtml/document.rb +150 -0
  12. data/builtin/models/rtml/dom/element.rb +196 -0
  13. data/builtin/models/rtml/dom/frontend_element.rb +48 -0
  14. data/builtin/models/rtml/dom/property.rb +71 -0
  15. data/builtin/models/rtml/dom/screen_element.rb +14 -0
  16. data/builtin/models/rtml/instruction.rb +52 -0
  17. data/builtin/models/rtml/instruction/follow_class_methods.rb +101 -0
  18. data/builtin/models/rtml/state.rb +20 -0
  19. data/builtin/models/rtml/state/variable_mapping.rb +13 -0
  20. data/builtin/models/rtml/view.rb +5 -0
  21. data/builtin/rtml_helpers/rtml/get_state.rb +23 -0
  22. data/builtin/rtml_helpers/rtml/rescue_action.rb +25 -0
  23. data/builtin/views/rtml/rescue_action_in_public.rtml.erb +1 -0
  24. data/builtin/views/rtml/rescue_action_locally.rtml.erb +29 -0
  25. data/builtin/widgets/default_document.rb +25 -0
  26. data/builtin/widgets/document_variable_processing.rb +133 -0
  27. data/builtin/widgets/element_builder.rb +148 -0
  28. data/builtin/widgets/event_listener.rb +41 -0
  29. data/builtin/widgets/frontend.rb +71 -0
  30. data/builtin/widgets/highlevel_variable_processing.rb +130 -0
  31. data/builtin/widgets/screen_variable_processing.rb +63 -0
  32. data/builtin/widgets/screen_variants.rb +110 -0
  33. data/builtin/widgets/screens.rb +73 -0
  34. data/builtin/widgets/shorthand.rb +49 -0
  35. data/builtin/widgets/static_content.rb +51 -0
  36. data/builtin/widgets/subroutine.rb +54 -0
  37. data/generators/rtml_widget/USAGE +19 -0
  38. data/generators/rtml_widget/rtml_widget_generator.rb +59 -0
  39. data/generators/rtml_widget/templates/default_widget.erb +10 -0
  40. data/generators/rtml_widget/templates/default_widget.feature.erb +11 -0
  41. data/generators/rtml_widget/templates/default_widget_spec.erb +13 -0
  42. data/generators/rtml_widget/templates/default_widget_test.erb +13 -0
  43. data/lib/extensions/action_controller/response.rb +30 -0
  44. data/lib/extensions/action_controller/routing/route_set.rb +42 -0
  45. data/lib/extensions/active_support/test_case.rb +3 -0
  46. data/lib/extensions/hpricot/doc.rb +5 -0
  47. data/lib/extensions/hpricot/elem.rb +5 -0
  48. data/lib/extensions/string.rb +35 -0
  49. data/lib/rtml.rb +88 -2
  50. data/lib/rtml/configuration.rb +40 -0
  51. data/lib/rtml/controller/before_filters.rb +51 -0
  52. data/lib/rtml/controller/cache_helpers.rb +26 -0
  53. data/lib/rtml/controller/class_methods/rtml_action_helpers.rb +18 -0
  54. data/lib/rtml/controller/document_generator.rb +60 -0
  55. data/lib/rtml/controller/render_helpers.rb +29 -0
  56. data/lib/rtml/controller/rtml_helpers.rb +37 -0
  57. data/lib/rtml/controller/state.rb +73 -0
  58. data/lib/rtml/controller/template_helpers.rb +21 -0
  59. data/lib/rtml/controller/url_helpers.rb +9 -0
  60. data/lib/rtml/dependencies.rb +27 -0
  61. data/lib/rtml/dsl.rb +81 -0
  62. data/lib/rtml/environment.rb +28 -0
  63. data/lib/rtml/errors/invalid_format.rb +4 -0
  64. data/lib/rtml/errors/invalid_operation.rb +4 -0
  65. data/lib/rtml/errors/invalid_option_error.rb +4 -0
  66. data/lib/rtml/errors/missing_document_error.rb +4 -0
  67. data/lib/rtml/errors/missing_variable_error.rb +4 -0
  68. data/lib/rtml/errors/multiple_roots_error.rb +4 -0
  69. data/lib/rtml/errors/processing_error.rb +4 -0
  70. data/lib/rtml/errors/rules_violation_error.rb +4 -0
  71. data/lib/rtml/errors/screen_not_found.rb +4 -0
  72. data/lib/rtml/errors/screen_variant_error.rb +4 -0
  73. data/lib/rtml/errors/sti_type_error.rb +4 -0
  74. data/lib/rtml/errors/subprocessing_not_supported.rb +4 -0
  75. data/lib/rtml/errors/unknown_rtml_action.rb +4 -0
  76. data/lib/rtml/high_level/managed_variable.rb +72 -0
  77. data/lib/rtml/high_level/subroutine.rb +22 -0
  78. data/lib/rtml/high_level/variable_manager.rb +35 -0
  79. data/lib/rtml/inherited_instance_variables.rb +25 -0
  80. data/lib/rtml/init.rb +82 -0
  81. data/lib/rtml/reverse_engineering/crawler.rb +58 -0
  82. data/lib/rtml/reverse_engineering/simulator.rb +269 -0
  83. data/lib/rtml/reverse_engineering/simulator/casting.rb +9 -0
  84. data/lib/rtml/reverse_engineering/simulator/snapshot.rb +18 -0
  85. data/lib/rtml/reverse_engineering/simulator/variable_lookup.rb +32 -0
  86. data/lib/rtml/reverse_engineering/simulator/variable_value.rb +105 -0
  87. data/lib/rtml/rules/dom_ruleset.rb +166 -0
  88. data/lib/rtml/rules/dom_tag.rb +43 -0
  89. data/lib/rtml/rules/dom_validation.rb +162 -0
  90. data/{app_generators/rtml/templates/rtml/lib/rtml → lib/rtml/rules}/tml_param_parser.rb +14 -15
  91. data/lib/rtml/test/spec.rb +14 -0
  92. data/lib/rtml/tmlized_conditions.rb +37 -0
  93. data/lib/rtml/version.rb +10 -0
  94. data/lib/rtml/widget.rb +150 -0
  95. data/lib/rtml/widget_core/class_methods.rb +193 -0
  96. data/lib/rtml/widget_core/gui_configuration.rb +94 -0
  97. data/lib/rtml/widget_core/widget_accessor_class_methods.rb +12 -0
  98. data/lib/rtml/widget_core/widget_accessor_instance_methods.rb +19 -0
  99. data/lib/rtml/widget_core/widget_proxy.rb +70 -0
  100. data/lib/rtml/widgets.rb +112 -0
  101. data/lib/rtml_routes.rb +3 -0
  102. data/rails/init.rb +6 -0
  103. data/rails_generators/rtml/USAGE +19 -0
  104. data/rails_generators/rtml/rtml_generator.rb +64 -0
  105. data/rails_generators/rtml/templates/config/initializers/rtml.rb +13 -0
  106. data/rails_generators/rtml/templates/config/tml_dom_ruleset.rb +81 -0
  107. data/rails_generators/rtml/templates/db/migrate/20100108163703_create_rtml_dom_elements.rb +16 -0
  108. data/rails_generators/rtml/templates/db/migrate/20100108163827_create_rtml_dom_properties.rb +16 -0
  109. data/rails_generators/rtml/templates/db/migrate/20100108165127_create_rtml_documents.rb +15 -0
  110. data/rails_generators/rtml/templates/db/migrate/20100110060124_create_rtml_instructions.rb +15 -0
  111. data/rails_generators/rtml/templates/db/migrate/20100110071920_add_parent_id_to_rtml_instructions.rb +9 -0
  112. data/rails_generators/rtml/templates/db/migrate/20100113131401_add_options_to_properties.rb +9 -0
  113. data/rails_generators/rtml/templates/db/migrate/20100127173146_add_parent_type_to_rtml_dom_elements.rb +9 -0
  114. data/rails_generators/rtml/templates/db/migrate/20100208114234_create_rtml_states.rb +20 -0
  115. data/rails_generators/rtml/templates/db/migrate/20100303021609_add_x_and_y_to_rtml_instructions.rb +12 -0
  116. data/rails_generators/rtml/templates/doc/io_tml-application-development-guidelines.pdf +0 -0
  117. data/rails_generators/rtml/templates/lib/tasks/rtml.rake +65 -0
  118. data/rails_generators/rtml_action/USAGE +15 -0
  119. data/rails_generators/rtml_action/rtml_action_generator.rb +51 -0
  120. data/rails_generators/rtml_action/templates/action.erb +12 -0
  121. data/rails_generators/rtml_action/templates/view.erb +2 -0
  122. data/rails_generators/widget/USAGE +19 -0
  123. data/rails_generators/widget/templates/default_widget.erb +10 -0
  124. data/rails_generators/widget/templates/default_widget.feature.erb +11 -0
  125. data/rails_generators/widget/templates/default_widget_spec.erb +13 -0
  126. data/rails_generators/widget/templates/default_widget_test.erb +13 -0
  127. data/rails_generators/widget/widget_generator.rb +48 -0
  128. data/script/console +5 -2
  129. data/script/server +3 -0
  130. data/spec/controllers/inherited_controller_spec.rb +19 -0
  131. data/spec/controllers/rtml_controller_spec.rb +94 -0
  132. data/spec/lib/extensions/hpricot/doc_spec.rb +6 -0
  133. data/spec/lib/extensions/hpricot/elem_spec.rb +6 -0
  134. data/spec/lib/extensions/string_spec.rb +5 -0
  135. data/spec/lib/rtml/extensions_spec.rb +12 -0
  136. data/spec/lib/rtml/reverse_engineering/crawler_spec.rb +24 -0
  137. data/spec/lib/rtml/reverse_engineering/simulator/variable_value_spec.rb +120 -0
  138. data/spec/lib/rtml/reverse_engineering/simulator_spec.rb +96 -0
  139. data/spec/lib/rtml/routes_spec.rb +51 -0
  140. data/spec/lib/rtml/rules/dom_ruleset_spec.rb +54 -0
  141. data/spec/lib/rtml/rules/dom_validation_spec.rb +112 -0
  142. data/spec/lib/rtml/widget_core/generic_widget_consumer_spec.rb +28 -0
  143. data/spec/lib/rtml/widget_core/gui_configuration_spec.rb +109 -0
  144. data/spec/lib/rtml/widget_core/widget_proxy_spec.rb +31 -0
  145. data/spec/lib/rtml/widget_spec.rb +57 -0
  146. data/spec/lib/rtml/widgets_spec.rb +7 -0
  147. data/spec/models/rtml/document_spec.rb +97 -0
  148. data/spec/models/rtml/dom/element_spec.rb +14 -0
  149. data/spec/models/rtml/dom/frontend_element_spec.rb +22 -0
  150. data/spec/models/rtml/dom/property_spec.rb +28 -0
  151. data/spec/models/rtml/dom/screen_element_spec.rb +11 -0
  152. data/spec/models/rtml/instruction_spec.rb +45 -0
  153. data/spec/models/rtml/state/variable_mapping_spec.rb +9 -0
  154. data/spec/models/rtml/state_spec.rb +8 -0
  155. data/spec/rcov.opts +3 -0
  156. data/spec/spec.opts +5 -0
  157. data/spec/spec_helper.rb +45 -0
  158. data/spec/support/app/controllers/application_controller.rb +2 -0
  159. data/spec/support/app/controllers/inherited_controller.rb +8 -0
  160. data/spec/support/app/rtml_helpers/inherited/index.rb +10 -0
  161. data/spec/support/app/rtml_helpers/rtml/index.rb +14 -0
  162. data/spec/support/app/views/README.txt +6 -0
  163. data/spec/support/app/views/layouts/layout.rtml.erb +3 -0
  164. data/spec/support/app/views/magcard/_partial.erb +1 -0
  165. data/spec/support/app/views/magcard/main.rtml.erb +1 -0
  166. data/spec/support/app/views/rtml/index.html.erb +9 -0
  167. data/spec/support/app/views/rtml/index/main.rtml.erb +1 -0
  168. data/spec/support/config/database.yml +17 -0
  169. data/spec/support/config/environment.rb +1 -0
  170. data/{app_generators/rtml/templates/rtml/public/stylesheets/rtml/charts.css → spec/support/config/environments/development.rb} +0 -0
  171. data/spec/support/config/initializers/rtml.rb +6 -0
  172. data/spec/support/config/routes.rb +3 -0
  173. data/spec/support/config/tml_dom_ruleset.rb +82 -0
  174. data/spec/support/db/rtml_test_db.sqlite3 +0 -0
  175. data/spec/support/db/schema.rb +14 -0
  176. data/spec/support/lib/rtml/widgets/test_widget1.rb +15 -0
  177. data/spec/support/lib/rtml/widgets/test_widget2.rb +4 -0
  178. data/spec/support/rails.rb +22 -0
  179. data/spec/support/raw_tml/valid_document.tml +108 -0
  180. data/spec/support/rspec/example_groups.rb +3 -0
  181. data/spec/support/rspec/matchers.rb +53 -0
  182. data/spec/support/vendor/gems/rtml-bootstrapper-2.0.0/.specification +61 -0
  183. data/spec/support/vendor/gems/rtml-bootstrapper-2.0.0/lib/init_rtml_working_copy.rb +1 -0
  184. data/spec/support/vendor/gems/rtml-bootstrapper-2.0.0/rtml.gemspec +11 -0
  185. data/spec/widgets/document_variable_processing_spec.rb +84 -0
  186. data/spec/widgets/element_builder_spec.rb +124 -0
  187. data/spec/widgets/event_listener_spec.rb +51 -0
  188. data/spec/widgets/frontend_spec.rb +59 -0
  189. data/spec/widgets/highlevel_variable_processing_spec.rb +149 -0
  190. data/spec/widgets/screen_variable_processing_spec.rb +57 -0
  191. data/spec/widgets/screen_variants_spec.rb +97 -0
  192. data/spec/widgets/screens_spec.rb +55 -0
  193. data/spec/widgets/static_content_spec.rb +43 -0
  194. data/spec/widgets/subroutine_spec.rb +109 -0
  195. data/tasks/db.rake +6 -0
  196. data/tasks/rspec.rake +20 -0
  197. data/tasks/rtml.rake +5 -0
  198. data/test/test_generator_helper.rb +22 -0
  199. data/test/test_helper.rb +1 -1
  200. data/test/test_rtml_action_generator.rb +65 -0
  201. data/test/test_rtml_generator.rb +24 -4
  202. data/test/test_rtml_widget_generator.rb +47 -0
  203. data/test/test_widget_generator.rb +49 -0
  204. data/update.rb +19 -0
  205. metadata +343 -428
  206. data/app_generators/rtml/templates/rails_template.rb +0 -36
  207. data/app_generators/rtml/templates/rtml/MIT-LICENSE +0 -20
  208. data/app_generators/rtml/templates/rtml/README +0 -109
  209. data/app_generators/rtml/templates/rtml/Rakefile +0 -38
  210. data/app_generators/rtml/templates/rtml/app/controllers/beryl_controller.rb +0 -70
  211. data/app_generators/rtml/templates/rtml/app/controllers/rtml/magcard_demo_controller.rb +0 -9
  212. data/app_generators/rtml/templates/rtml/app/controllers/rtml/oe/btmlpa_controller.rb +0 -158
  213. data/app_generators/rtml/templates/rtml/app/controllers/rtml/rtml_app_controller.rb +0 -252
  214. data/app_generators/rtml/templates/rtml/app/controllers/rtml/tml_app_controller.rb +0 -418
  215. data/app_generators/rtml/templates/rtml/app/helpers/beryl_helper.rb +0 -72
  216. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/auth_result.rb +0 -56
  217. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/common.rb +0 -19
  218. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/index.rb +0 -82
  219. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_helper.rb +0 -2
  220. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/authorized.rb +0 -10
  221. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/common.rb +0 -20
  222. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/index.rb +0 -33
  223. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_helper.rb +0 -2
  224. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/auth_result.rb +0 -23
  225. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/common.rb +0 -23
  226. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/dynamic.rb +0 -11
  227. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/icc.rb +0 -384
  228. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/index.rb +0 -191
  229. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/receipt.rb +0 -152
  230. data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_helper.rb +0 -74
  231. data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_tml_helpers/common.rb +0 -9
  232. data/app_generators/rtml/templates/rtml/app/helpers/rtml/tml_app_helper.rb +0 -43
  233. data/app_generators/rtml/templates/rtml/app/models/rtml/card.rb +0 -83
  234. data/app_generators/rtml/templates/rtml/app/models/rtml/card_avs.rb +0 -14
  235. data/app_generators/rtml/templates/rtml/app/models/rtml/card_cvv.rb +0 -14
  236. data/app_generators/rtml/templates/rtml/app/models/rtml/card_parser.rb +0 -21
  237. data/app_generators/rtml/templates/rtml/app/models/rtml/card_pin.rb +0 -18
  238. data/app_generators/rtml/templates/rtml/app/models/rtml/emv_card_data.rb +0 -25
  239. data/app_generators/rtml/templates/rtml/app/models/rtml/mag_card_data.rb +0 -21
  240. data/app_generators/rtml/templates/rtml/app/models/rtml/reference_code.rb +0 -26
  241. data/app_generators/rtml/templates/rtml/app/models/rtml/state.rb +0 -12
  242. data/app_generators/rtml/templates/rtml/app/models/rtml/terminal.rb +0 -8
  243. data/app_generators/rtml/templates/rtml/app/models/rtml/transaction.rb +0 -68
  244. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/another_rcpt.rtml.erb +0 -15
  245. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt.rtml.erb +0 -108
  246. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt_single_column.rtml.erb +0 -106
  247. data/app_generators/rtml/templates/rtml/app/views/beryl/index/about.rtml.erb +0 -8
  248. data/app_generators/rtml/templates/rtml/app/views/beryl/index/admin.rtml.erb +0 -4
  249. data/app_generators/rtml/templates/rtml/app/views/beryl/index/construction.rtml.erb +0 -10
  250. data/app_generators/rtml/templates/rtml/app/views/beryl/index/idle.rtml.erb +0 -13
  251. data/app_generators/rtml/templates/rtml/app/views/beryl/index/main_menu.rtml.erb +0 -12
  252. data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_credit.rtml.erb +0 -8
  253. data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_debit.rtml.erb +0 -3
  254. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_color.rtml.erb +0 -24
  255. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_mono.rtml.erb +0 -8
  256. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_color.rtml.erb +0 -24
  257. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_mono.rtml.erb +0 -3
  258. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i5100.rtml.erb +0 -3
  259. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i8550.rtml.erb +0 -17
  260. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/uml.html.erb +0 -11
  261. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized.html.erb +0 -15
  262. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized/main.rtml.erb +0 -5
  263. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index.html.erb +0 -15
  264. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/_error.rtml.erb +0 -2
  265. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/enter_amount.rtml.erb +0 -5
  266. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/main.rtml.erb +0 -4
  267. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/dynamic/response.rtml.erb +0 -2
  268. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/icc.rtml.erb +0 -760
  269. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_enter_amount.rtml.erb +0 -4
  270. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_about.rtml.erb +0 -8
  271. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_duplicate.rtml.erb +0 -9
  272. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_examples.rtml.erb +0 -9
  273. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_logo.rtml.erb +0 -11
  274. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_other.rtml.erb +0 -20
  275. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_refund.rtml.erb +0 -8
  276. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_reversal.rtml.erb +0 -9
  277. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale.rtml.erb +0 -8
  278. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale_cashback.rtml.erb +0 -8
  279. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/about.rtml.erb +0 -1
  280. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/assert.rtml.erb +0 -2
  281. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/card_nmb.rtml.erb +0 -19
  282. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/compl_txn.rtml.erb +0 -1
  283. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/confirm_rev.rtml.erb +0 -3
  284. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/duplicate_na.rtml.erb +0 -1
  285. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/error_scr.rtml.erb +0 -4
  286. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.bak +0 -31
  287. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.erb +0 -40
  288. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/print_pf.rtml.erb +0 -1
  289. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rd_sale_disp.rtml.erb +0 -1
  290. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_refund.rtml.erb +0 -1
  291. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_scb.rtml.erb +0 -10
  292. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/reject_trans.rtml.erb +0 -1
  293. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/remove_card.rtml.erb +0 -1
  294. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rev_bad.rtml.erb +0 -1
  295. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/scb_check_f.rtml.erb +0 -2
  296. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/sign_check.rtml.erb +0 -3
  297. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/subm_err.rtml.erb +0 -2
  298. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/to_man_entry.rtml.erb +0 -2
  299. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/trans_abrt.rtml.erb +0 -1
  300. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/void_trans.rtml.erb +0 -1
  301. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/_receipt.rtml.erb +0 -29
  302. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/error_paper.rtml.erb +0 -3
  303. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_development.html.erb +0 -167
  304. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_header.html.erb +0 -12
  305. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_production.html.erb +0 -8
  306. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/charts.html.erb +0 -14
  307. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/do_tml_redirect.rtml.erb +0 -7
  308. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/get_terminal_info.rtml.erb +0 -26
  309. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_in_public.rtml.erb +0 -9
  310. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_locally.rtml.erb +0 -42
  311. data/app_generators/rtml/templates/rtml/components/rtml/features/common.rb +0 -303
  312. data/app_generators/rtml/templates/rtml/components/rtml/features/force.rb +0 -46
  313. data/app_generators/rtml/templates/rtml/components/rtml/features/return.rb +0 -22
  314. data/app_generators/rtml/templates/rtml/components/rtml/features/sale.rb +0 -49
  315. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_confirmation.rtml.erb +0 -10
  316. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_agreement.rtml.erb +0 -3
  317. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_footer.rtml.erb +0 -2
  318. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_header.rtml.erb +0 -4
  319. data/app_generators/rtml/templates/rtml/components/rtml/features/views/ask_cashback.rtml.erb +0 -11
  320. data/app_generators/rtml/templates/rtml/components/rtml/features/views/card_imprint.rtml.erb +0 -7
  321. data/app_generators/rtml/templates/rtml/components/rtml/features/views/check_cb.rtml.erb +0 -11
  322. data/app_generators/rtml/templates/rtml/components/rtml/features/views/conf_debit.rtml.erb +0 -5
  323. data/app_generators/rtml/templates/rtml/components/rtml/features/views/confirm_sale.rtml.erb +0 -4
  324. data/app_generators/rtml/templates/rtml/components/rtml/features/views/confrm_force.rtml.erb +0 -4
  325. data/app_generators/rtml/templates/rtml/components/rtml/features/views/cvv_skipped.rtml.erb +0 -10
  326. data/app_generators/rtml/templates/rtml/components/rtml/features/views/disp_avs.rtml.erb +0 -8
  327. data/app_generators/rtml/templates/rtml/components/rtml/features/views/do_avs_zip.rtml.erb +0 -8
  328. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_amount.rtml.erb +0 -12
  329. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_card.rtml.erb +0 -8
  330. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cashbk.rtml.erb +0 -10
  331. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cvv2.rtml.erb +0 -8
  332. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_expiry.rtml.erb +0 -9
  333. data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check1.rtml.erb +0 -6
  334. data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check2.rtml.erb +0 -8
  335. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_aprvl.rtml.erb +0 -8
  336. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_avs_zip.rtml.erb +0 -8
  337. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_bad_aprv.rtml.erb +0 -5
  338. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frd_chk_fail.rtml.erb +0 -5
  339. data/app_generators/rtml/templates/rtml/components/rtml/features/views/invalid_exp.rtml.erb +0 -1
  340. data/app_generators/rtml/templates/rtml/components/rtml/features/views/no_entr_crd.rtml.erb +0 -1
  341. data/app_generators/rtml/templates/rtml/components/rtml/features/views/remove_card.rtml.erb +0 -1
  342. data/app_generators/rtml/templates/rtml/components/rtml/features/views/swipe_card.rtml.erb +0 -7
  343. data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_abort.rtml.erb +0 -1
  344. data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_reject.rtml.erb +0 -1
  345. data/app_generators/rtml/templates/rtml/components/rtml/features/views/void_ref.rtml.erb +0 -10
  346. data/app_generators/rtml/templates/rtml/components/rtml/features/void.rb +0 -30
  347. data/app_generators/rtml/templates/rtml/components/rtml/widgets/card_parser_widget.rb +0 -90
  348. data/app_generators/rtml/templates/rtml/components/rtml/widgets/display_widget.rb +0 -66
  349. data/app_generators/rtml/templates/rtml/components/rtml/widgets/element_builder_widget.rb +0 -123
  350. data/app_generators/rtml/templates/rtml/components/rtml/widgets/emv_support_widget.rb +0 -365
  351. data/app_generators/rtml/templates/rtml/components/rtml/widgets/form_submit_widget.rb +0 -65
  352. data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_transaction_variables_widget.rb +0 -33
  353. data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_variable_widget.rb +0 -39
  354. data/app_generators/rtml/templates/rtml/components/rtml/widgets/receipt_widget.rb +0 -66
  355. data/app_generators/rtml/templates/rtml/components/rtml/widgets/screen_builder_widget.rb +0 -49
  356. data/app_generators/rtml/templates/rtml/db/migrate/20090825132217_create_rtml_states.rb +0 -15
  357. data/app_generators/rtml/templates/rtml/db/migrate/20090825132401_create_rtml_terminals.rb +0 -16
  358. data/app_generators/rtml/templates/rtml/db/migrate/20090825132530_create_rtml_transactions.rb +0 -24
  359. data/app_generators/rtml/templates/rtml/db/migrate/20090825134118_create_rtml_cards.rb +0 -23
  360. data/app_generators/rtml/templates/rtml/db/migrate/20090825134622_create_rtml_emv_card_data.rb +0 -20
  361. data/app_generators/rtml/templates/rtml/db/migrate/20090825134629_create_rtml_mag_card_data.rb +0 -17
  362. data/app_generators/rtml/templates/rtml/db/migrate/20090825135838_create_rtml_card_parsers.rb +0 -19
  363. data/app_generators/rtml/templates/rtml/db/migrate/20090826103509_create_reference_codes.rb +0 -14
  364. data/app_generators/rtml/templates/rtml/db/migrate/20090915030044_add_batch_to_rtml_transactions.rb +0 -10
  365. data/app_generators/rtml/templates/rtml/db/migrate/20090915031155_add_additional_data_to_rtml_transactions.rb +0 -10
  366. data/app_generators/rtml/templates/rtml/db/migrate/20090915031156_add_hidden_data_to_rtml_transactions.rb +0 -10
  367. data/app_generators/rtml/templates/rtml/db/migrate/20091016133313_create_rtml_card_avs.rb +0 -16
  368. data/app_generators/rtml/templates/rtml/db/migrate/20091016135800_create_rtml_card_cvvs.rb +0 -16
  369. data/app_generators/rtml/templates/rtml/db/migrate/20091016135810_create_rtml_card_pins.rb +0 -16
  370. data/app_generators/rtml/templates/rtml/db/migrate/20091016135820_reverse_card_transaction_relationship.rb +0 -11
  371. data/app_generators/rtml/templates/rtml/db/migrate/20100127115105_convert_rtml_migrations_to_rails_migrations.rb +0 -31
  372. data/app_generators/rtml/templates/rtml/generators/rtml_controller/USAGE +0 -25
  373. data/app_generators/rtml/templates/rtml/generators/rtml_controller/rtml_controller_generator.rb +0 -49
  374. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/common_tml_helper.rb +0 -20
  375. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/controller.rb +0 -3
  376. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_color.css +0 -37
  377. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_mono.css +0 -12
  378. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/functional_test.rb +0 -11
  379. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/helper.rb +0 -2
  380. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_color.rtml.erb +0 -24
  381. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_mono.rtml.erb +0 -3
  382. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/tml_helper.rb +0 -16
  383. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.html.erb +0 -15
  384. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.rtml.erb +0 -2
  385. data/app_generators/rtml/templates/rtml/generators/rtml_document/USAGE +0 -8
  386. data/app_generators/rtml/templates/rtml/generators/rtml_document/rtml_document_generator.rb +0 -45
  387. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/controller.rb +0 -7
  388. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/functional_test.rb +0 -10
  389. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/helper.rb +0 -2
  390. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/view.rtml.erb +0 -11
  391. data/app_generators/rtml/templates/rtml/generators/rtml_widget/USAGE +0 -8
  392. data/app_generators/rtml/templates/rtml/generators/rtml_widget/rtml_widget_generator.rb +0 -66
  393. data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget.rb +0 -57
  394. data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget_no_help.rb +0 -27
  395. data/app_generators/rtml/templates/rtml/init.rb +0 -40
  396. data/app_generators/rtml/templates/rtml/install.rb +0 -18
  397. data/app_generators/rtml/templates/rtml/lib/environment.rb +0 -61
  398. data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/request.rb +0 -9
  399. data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/routing/route_set.rb +0 -34
  400. data/app_generators/rtml/templates/rtml/lib/extensions/action_view/base.rb +0 -74
  401. data/app_generators/rtml/templates/rtml/lib/extensions/action_view/partial_template.rb +0 -24
  402. data/app_generators/rtml/templates/rtml/lib/extensions/active_record.rb +0 -13
  403. data/app_generators/rtml/templates/rtml/lib/extensions/active_support/dependencies.rb +0 -25
  404. data/app_generators/rtml/templates/rtml/lib/extensions/array.rb +0 -15
  405. data/app_generators/rtml/templates/rtml/lib/extensions/attr_boolean.rb +0 -10
  406. data/app_generators/rtml/templates/rtml/lib/extensions/hash.rb +0 -28
  407. data/app_generators/rtml/templates/rtml/lib/extensions/nil_class.rb +0 -20
  408. data/app_generators/rtml/templates/rtml/lib/extensions/rake.rb +0 -19
  409. data/app_generators/rtml/templates/rtml/lib/extensions/regexp.rb +0 -16
  410. data/app_generators/rtml/templates/rtml/lib/extensions/string.rb +0 -37
  411. data/app_generators/rtml/templates/rtml/lib/other_plugins.rb +0 -23
  412. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/MIT-LICENSE +0 -20
  413. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/README +0 -36
  414. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/Rakefile +0 -44
  415. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/init.rb +0 -25
  416. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/action_controller/filters/before_render_filter.rb +0 -30
  417. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render.rb +0 -43
  418. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render_instance.rb +0 -45
  419. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_chain_has_many_types_of_filters.rb +0 -87
  420. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_has_before_render.rb +0 -26
  421. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/tasks/before_render_tasks.rake +0 -25
  422. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/before_render_test.rb +0 -29
  423. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/test_helper.rb +0 -24
  424. data/app_generators/rtml/templates/rtml/lib/rtml.rb +0 -77
  425. data/app_generators/rtml/templates/rtml/lib/rtml/beryl/constants.rb +0 -12
  426. data/app_generators/rtml/templates/rtml/lib/rtml/beryl/version.rb +0 -11
  427. data/app_generators/rtml/templates/rtml/lib/rtml/common/renderable.rb +0 -13
  428. data/app_generators/rtml/templates/rtml/lib/rtml/core/include.rb +0 -30
  429. data/app_generators/rtml/templates/rtml/lib/rtml/core/layout.rb +0 -59
  430. data/app_generators/rtml/templates/rtml/lib/rtml/core/next.rb +0 -188
  431. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen.rb +0 -91
  432. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/iterators.rb +0 -63
  433. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/next_screen_methods.rb +0 -70
  434. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/variable_methods.rb +0 -73
  435. data/app_generators/rtml/templates/rtml/lib/rtml/core/support/importer.rb +0 -55
  436. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document.rb +0 -318
  437. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/screen_methods.rb +0 -79
  438. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/variable_methods.rb +0 -83
  439. data/app_generators/rtml/templates/rtml/lib/rtml/core/variable.rb +0 -123
  440. data/app_generators/rtml/templates/rtml/lib/rtml/debug/browser_emulator.rb +0 -59
  441. data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_controller_test_case.rb +0 -7
  442. data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_core_unit_test.rb +0 -11
  443. data/app_generators/rtml/templates/rtml/lib/rtml/debug/unit_test.rb +0 -3
  444. data/app_generators/rtml/templates/rtml/lib/rtml/delegation.rb +0 -8
  445. data/app_generators/rtml/templates/rtml/lib/rtml/doc.rb +0 -12
  446. data/app_generators/rtml/templates/rtml/lib/rtml/element.rb +0 -75
  447. data/app_generators/rtml/templates/rtml/lib/rtml/errors/widget_accessor_failure.rb +0 -9
  448. data/app_generators/rtml/templates/rtml/lib/rtml/events/event_handler.rb +0 -79
  449. data/app_generators/rtml/templates/rtml/lib/rtml/events/event_processor.rb +0 -106
  450. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors.rb +0 -10
  451. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/defaults_processor.rb +0 -18
  452. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/key_processor.rb +0 -21
  453. data/app_generators/rtml/templates/rtml/lib/rtml/feature.rb +0 -32
  454. data/app_generators/rtml/templates/rtml/lib/rtml/feature_config.rb +0 -195
  455. data/app_generators/rtml/templates/rtml/lib/rtml/features.rb +0 -18
  456. data/app_generators/rtml/templates/rtml/lib/rtml/features/array_of_feature_instances.rb +0 -17
  457. data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_class_methods.rb +0 -30
  458. data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_instance_methods.rb +0 -35
  459. data/app_generators/rtml/templates/rtml/lib/rtml/helpers.rb +0 -21
  460. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers.rb +0 -59
  461. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers/menu_helpers.rb +0 -193
  462. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/action_view_wrapper.rb +0 -23
  463. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/event_helpers.rb +0 -28
  464. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/layout_helpers.rb +0 -47
  465. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support.rb +0 -181
  466. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support/class_methods.rb +0 -28
  467. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/yield_helpers.rb +0 -33
  468. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/proxy_helpers/feature_helpers.rb +0 -17
  469. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/render_helper.rb +0 -71
  470. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/terminal_helpers.rb +0 -21
  471. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers.rb +0 -6
  472. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/tml_validation_assertions.rb +0 -10
  473. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/variable_assertions.rb +0 -27
  474. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/form_helpers.rb +0 -70
  475. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/rtml_form_builder.rb +0 -174
  476. data/app_generators/rtml/templates/rtml/lib/rtml/oe/btmlpa_constants.rb +0 -48
  477. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/method_missing_methods.rb +0 -14
  478. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/rtml_interface.rb +0 -33
  479. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/sandbox.rb +0 -18
  480. data/app_generators/rtml/templates/rtml/lib/rtml/text_utils.rb +0 -51
  481. data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_rule_parser.rb +0 -61
  482. data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_tag.rb +0 -52
  483. data/app_generators/rtml/templates/rtml/lib/rtml/validation/predefined_variable_rule_parser.rb +0 -97
  484. data/app_generators/rtml/templates/rtml/lib/rtml/validation/tml_validator.rb +0 -16
  485. data/app_generators/rtml/templates/rtml/lib/rtml/version.rb +0 -11
  486. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property.rb +0 -11
  487. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property_accessors.rb +0 -59
  488. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget.rb +0 -251
  489. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget_class_methods.rb +0 -213
  490. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/dot.gif +0 -0
  491. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_can.gif +0 -0
  492. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_cand.gif +0 -0
  493. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_en.gif +0 -0
  494. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_end.gif +0 -0
  495. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_i.gif +0 -0
  496. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icd.gif +0 -0
  497. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icl.gif +0 -0
  498. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icr.gif +0 -0
  499. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ics.gif +0 -0
  500. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icsw.gif +0 -0
  501. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icv.gif +0 -0
  502. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int.gif +0 -0
  503. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int2.gif +0 -0
  504. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_men.gif +0 -0
  505. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_mend.gif +0 -0
  506. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_next.gif +0 -0
  507. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_no.gif +0 -0
  508. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_nod.gif +0 -0
  509. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ok.gif +0 -0
  510. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_okd.gif +0 -0
  511. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic1.gif +0 -0
  512. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic2.gif +0 -0
  513. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic3.gif +0 -0
  514. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic4.gif +0 -0
  515. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_top.gif +0 -0
  516. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_txn.gif +0 -0
  517. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yes.gif +0 -0
  518. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yesd.gif +0 -0
  519. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/btmlpa.gif +0 -0
  520. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_dn.gif +0 -0
  521. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_up.gif +0 -0
  522. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/conf.gif +0 -0
  523. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/iccemv.gif +0 -0
  524. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/images.lib +0 -0
  525. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/magcard.gif +0 -0
  526. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_dn.gif +0 -0
  527. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_up.gif +0 -0
  528. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_dn.gif +0 -0
  529. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_up.gif +0 -0
  530. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/top.gif +0 -0
  531. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_dn.gif +0 -0
  532. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_up.gif +0 -0
  533. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_color.css +0 -37
  534. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_mono.css +0 -17
  535. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i5100.css +0 -12
  536. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i8550.css +0 -37
  537. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/receipt.css +0 -4
  538. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i5100.css +0 -12
  539. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i8550.css +0 -37
  540. data/app_generators/rtml/templates/rtml/reporting/110409 +0 -227
  541. data/app_generators/rtml/templates/rtml/reporting/linecount.rb +0 -42
  542. data/app_generators/rtml/templates/rtml/rules/predefined_tml_variables.rb +0 -63
  543. data/app_generators/rtml/templates/rtml/rules/tml_document_structure.rb +0 -84
  544. data/app_generators/rtml/templates/rtml/rules/varns/audio.rb +0 -30
  545. data/app_generators/rtml/templates/rtml/rules/varns/card.rb +0 -17
  546. data/app_generators/rtml/templates/rtml/rules/varns/card/emv.rb +0 -31
  547. data/app_generators/rtml/templates/rtml/rules/varns/card/mag.rb +0 -8
  548. data/app_generators/rtml/templates/rtml/rules/varns/card/parser.rb +0 -7
  549. data/app_generators/rtml/templates/rtml/rules/varns/card/pin.rb +0 -6
  550. data/app_generators/rtml/templates/rtml/rules/varns/cfgm.rb +0 -15
  551. data/app_generators/rtml/templates/rtml/rules/varns/com.rb +0 -9
  552. data/app_generators/rtml/templates/rtml/rules/varns/err.rb +0 -14
  553. data/app_generators/rtml/templates/rtml/rules/varns/gma/event.rb +0 -13
  554. data/app_generators/rtml/templates/rtml/rules/varns/gprs.rb +0 -8
  555. data/app_generators/rtml/templates/rtml/rules/varns/imager.rb +0 -8
  556. data/app_generators/rtml/templates/rtml/rules/varns/ip.rb +0 -15
  557. data/app_generators/rtml/templates/rtml/rules/varns/oebr.rb +0 -42
  558. data/app_generators/rtml/templates/rtml/rules/varns/oebr/3rdparty.rb +0 -7
  559. data/app_generators/rtml/templates/rtml/rules/varns/oebr/backlight.rb +0 -4
  560. data/app_generators/rtml/templates/rtml/rules/varns/oebr/cache.rb +0 -1
  561. data/app_generators/rtml/templates/rtml/rules/varns/oebr/connect.rb +0 -5
  562. data/app_generators/rtml/templates/rtml/rules/varns/oebr/connection.rb +0 -5
  563. data/app_generators/rtml/templates/rtml/rules/varns/oebr/offline.rb +0 -5
  564. data/app_generators/rtml/templates/rtml/rules/varns/oegw.rb +0 -12
  565. data/app_generators/rtml/templates/rtml/rules/varns/payment.rb +0 -21
  566. data/app_generators/rtml/templates/rtml/rules/varns/ppp.rb +0 -11
  567. data/app_generators/rtml/templates/rtml/rules/varns/terminal.rb +0 -29
  568. data/app_generators/rtml/templates/rtml/tasks/rtml_tasks.rake +0 -78
  569. data/app_generators/rtml/templates/rtml/template.rb +0 -64
  570. data/app_generators/rtml/templates/rtml/test/core/element_test.rb +0 -17
  571. data/app_generators/rtml/templates/rtml/test/core/screen_test.rb +0 -91
  572. data/app_generators/rtml/templates/rtml/test/core/tml_document_test.rb +0 -53
  573. data/app_generators/rtml/templates/rtml/test/functional/beryl_controller_test.rb +0 -13
  574. data/app_generators/rtml/templates/rtml/test/functional/btmlpa_controller_test.rb +0 -13
  575. data/app_generators/rtml/templates/rtml/test/functional/magcard_demo_controller_test.rb +0 -20
  576. data/app_generators/rtml/templates/rtml/test/functional/rtml_app_controller_test.rb +0 -9
  577. data/app_generators/rtml/templates/rtml/test/functional/rtml_routing_test.rb +0 -19
  578. data/app_generators/rtml/templates/rtml/test/functional/tml_controller_params_test.rb +0 -20
  579. data/app_generators/rtml/templates/rtml/test/rtml_test_helper.rb +0 -44
  580. data/app_generators/rtml/templates/rtml/test/validation/predefined_variable_rule_parser_test.rb +0 -11
  581. data/app_generators/rtml/templates/rtml/uninstall.rb +0 -1
  582. data/app_generators/rtml/templates/rtml/update.rb +0 -57
  583. data/tasks/reglob.rake +0 -28
  584. data/test/test_rtml.rb +0 -11
@@ -0,0 +1,196 @@
1
+ class Rtml::Dom::Element < ActiveRecord::Base
2
+ @@tml_ids = {}
3
+ set_table_name 'rtml_dom_elements'
4
+ belongs_to :document, :class_name => 'Rtml::Document'
5
+ belongs_to :parent, :polymorphic => true#:class_name => 'Rtml::Dom::Element'
6
+ has_many :elements, :class_name => 'Rtml::Dom::Element', :as => :parent, :autosave => true
7
+ has_many :properties, :class_name => 'Rtml::Dom::Property', :foreign_key => 'element_id', :autosave => true
8
+ #alias_method :children, :elements
9
+ include Rtml::DSL
10
+ include Rtml::Widgets
11
+
12
+ delegate :request, :response, :params, :flash, :controller, :to => :document
13
+ delegate :params, :url_for, :to => :controller
14
+
15
+ def initialize(*args) #:nodoc:
16
+ options = args.extract_options!
17
+ options[:name] = options[:name].to_s if options.key?(:name)
18
+ properties = options.delete(:properties)
19
+ if options.empty? then super(options)
20
+ else super options
21
+ end
22
+ update_properties(properties) if properties
23
+ end
24
+
25
+ include Rtml::InheritedInstanceVariables
26
+ protected_instance_variables.concat ["@controller", "@changed_attributes", "@view", "@new_record", "@initialize_to_empty", "@widget_instances", "@rules", "@root", "@attributes_cache", "@attributes"]
27
+
28
+ def after_initialize
29
+ Rtml::Widgets.add_proxies_to_base(self)
30
+ end
31
+
32
+ def rules; document ? document.rules : nil; end #:nodoc:
33
+
34
+ def name #:nodoc:
35
+ (s = super).kind_of?(String) ? s : s.to_s
36
+ end
37
+
38
+ def contains?(query)
39
+ !(self / query).empty?
40
+ end
41
+
42
+ # def respond_to?(name) #:nodoc:
43
+ # if name.to_s == 'name'
44
+ # attributes.keys.include?('name')
45
+ # else super
46
+ # end
47
+ # end
48
+
49
+ # call-seq:
50
+ # ele / str => ele
51
+ # ele / str => nil
52
+ # ele / str => [ele, ele, ...]
53
+ #
54
+ # Searches this element and sub-elements for those whose tag names are equal to the specified one.
55
+ # Returns an array of matching elements, or an empty array if none match.
56
+ #
57
+ # Also accepts attribute-based searching in the form of [name1=value1&name2=value2]
58
+ #
59
+ # Examples:
60
+ # tml / 'screen'
61
+ # tml / 'screen[id=idle]'
62
+ #
63
+ def /(query)
64
+ attr_query = []
65
+ element_name = query
66
+ if element_name =~ /\[(.*)?\]/
67
+ m = $~[1]
68
+ element_name.sub! /#{Regexp::escape $~[0]}/, ''
69
+ m.split(/\&/).each do |attr|
70
+ attr_query << attr.split(/=/)
71
+ end
72
+ end
73
+ ret = full_tree.flatten.select do |i|#([self] + elements).select do |i|
74
+ attr_match = true
75
+ attr_query.each { |k| attr_match = false unless i.property(k[0]) == k[1] }
76
+ (i.name == element_name.to_s || i.property('id').to_s == element_name.to_s) && attr_match
77
+ end
78
+ # attr_match = true
79
+ # attr_query.each { |k| attr_match = false unless self[k[0]] == k[1] }
80
+ #
81
+ # ret = []
82
+ # ret << self if (self.name == element_name || self['id'] == element_name.to_s) && attr_match
83
+ # elements.each { |i| ret.concat(i / query) }
84
+ ret
85
+ end
86
+
87
+ def full_tree
88
+ [self] + elements.collect { |child| child.full_tree }
89
+ end
90
+
91
+ # Produces the TML for this element and its children.
92
+ def to_tml
93
+ top = "#{name} #{properties_string}".strip
94
+ # Going to add a comment here to make it easier for the user to find their junk in raw TML
95
+ r = (property?('id') && !property('id').blank?) ? "<!--#{property('id')}-->".ljust(30) : ""
96
+ if elements.empty?
97
+ "#{r}<#{top} /> "
98
+ else
99
+ "#{r}<#{top}> \n#{elements.collect { |i| i.to_tml }.join("\n").indent}\n</#{name}>"
100
+ end
101
+ end
102
+
103
+ # Produces the TML properties string for this element.
104
+ # For instance, if this element has a property with name :next and value 'credit', this method will return:
105
+ # "next=\"credit\""
106
+ def properties_string
107
+ if properties.empty?
108
+ ""
109
+ else
110
+ properties.collect { |a| a.to_tml }.select { |a| !a.blank? }.join(" ")
111
+ end
112
+ end
113
+
114
+ # Assigns the properties contained by the keys in the hash to their corresponding values for this Element.
115
+ def update_properties(props_hash)
116
+ props_hash.each do |key, value|
117
+ self.find_or_add_property(key, value)
118
+ end
119
+ end
120
+
121
+ # Returns true if a property with this name can be found.
122
+ def property?(name)
123
+ not properties.select { |p| p.name.to_s == name.to_s }.empty?
124
+ end
125
+
126
+ # Finds or adds a property to this element with the specified name, assigns its value if given, and returns its value.
127
+ def property(name, value = :__no_assignment, options = {})
128
+ if value == :__no_assignment
129
+ prop = find_or_add_property(name, options.merge(:drop_if_blank => true))
130
+ else
131
+ prop = find_or_add_property(name, options.merge(:value => value, :drop_if_blank => true))
132
+ end
133
+ prop.value
134
+ end
135
+
136
+ # Finds or adds a property for this element with the specified name
137
+ def find_or_add_property(name, options={:drop_if_blank => true})
138
+ options = {:value => options} unless options.kind_of?(Hash)
139
+ prop = properties.select { |p| p.name == name.to_s }.first
140
+ if prop
141
+ if options.key?(:value)
142
+ if prop.new_record? || prop.changed?
143
+ prop.value = options.delete(:value)
144
+ else
145
+ prop.update_attribute(:value, options.delete(:value))
146
+ end
147
+ end
148
+ else
149
+ if new_record? || changed?
150
+ prop = properties.build(:name => name.to_s, :value => options.delete(:value), :options => options.with_indifferent_access)
151
+ prop.element = self
152
+ else
153
+ prop = properties.create!(:name => name.to_s, :value => options.delete(:value), :options => options.with_indifferent_access)
154
+ end
155
+ #prop = Rtml::Dom::Property.new(:name => name.to_s, :element => self)
156
+ #properties << prop
157
+ #prop.options.merge!(options)
158
+ end
159
+ prop
160
+ end
161
+
162
+ class << self #:nodoc:
163
+ ## STI hack; allows you to pass :type => 'SomeClassName' so that they're not all instances of Element
164
+ def new_with_cast(*a, &b)
165
+ if (h = a.first).is_a? Hash and (type = (h[:type] || h['type'])) and (klass = type.constantize) != self
166
+ raise Rtml::Errors::StiTypeError unless klass < self # klass should be a descendant of us
167
+ return klass.new(*a, &b)
168
+ end
169
+
170
+ new_without_cast(*a, &b)
171
+ end
172
+ alias_method_chain :new, :cast
173
+
174
+ # Some elements must have an "id" property according to the TML specification, and other elements must be able to
175
+ # reference them by this ID. Unfortunately, according to the spec, the ID must not be greater than 12 characters long.
176
+ # This is a decided disadvantage, so we're going to allow RTML developers to create elements with longer names and
177
+ # reference them -- within RTML. The generated TML itself must conform to TML standards, of course, so the IDs may
178
+ # need to be truncated. Also, they need a unique identifier attached to them in case the truncation results in
179
+ # ambiguities with other screens. This method takes the specified name and processes it as mentioned, returning
180
+ # this element's TML-ID counterpart.
181
+ def lookup_tml_id(rtml_name)
182
+ rtml_name = rtml_name.to_s
183
+ if @@tml_ids.key?(rtml_name)
184
+ return @@tml_ids[rtml_name]
185
+ end
186
+
187
+ next_tml_id = @@tml_ids.keys.length.to_s
188
+ tmlid = rtml_name
189
+ @@tml_ids[rtml_name] =
190
+ if tmlid.length > 12
191
+ tmlid[0...(12-next_tml_id.length)] + next_tml_id
192
+ else tmlid.dup
193
+ end
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,48 @@
1
+ class Rtml::Dom::FrontendElement < Rtml::Dom::Element
2
+ def screen
3
+ return @screen if @screen
4
+ p = self
5
+ while (p = p.parent).kind_of?(Rtml::Dom::Element)
6
+ return @screen = p if p.name == 'screen'
7
+ end
8
+ raise "Could not find screen for #{self.inspect}"
9
+ end
10
+
11
+ def inner_content=(text)
12
+ self.property 'inner_content', text
13
+ end
14
+
15
+ def content_options=(hash)
16
+ hash.each do |key, value|
17
+ self.property key, value
18
+ end
19
+ end
20
+
21
+ def to_tml
22
+ if self.property('inner_content').blank?
23
+ options = HashWithIndifferentAccess.new
24
+ properties.each { |p| options[p.name] = p.value unless p.blank? }
25
+ if (options.keys - ['layout']).empty?
26
+ options[:file] = screen.path
27
+ elsif document && document.name
28
+ options.each do |key, value|
29
+ case key.to_s
30
+ when 'partial', 'file', 'template'
31
+ unless document.nil? or document.name.blank? or value =~ /\//
32
+ value = "#{document.name}/#{value}"
33
+ options[key] = value
34
+ end
35
+ end
36
+ end
37
+ end
38
+ # Options is passed directly into the document's view.
39
+ if document
40
+ document.render(options)
41
+ else
42
+ raise Rtml::Errors::MissingDocumentError, "No document through which to render options: #{options.inspect}"
43
+ end
44
+ else
45
+ self.property('inner_content').to_s
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,71 @@
1
+ class Rtml::Dom::Property < ActiveRecord::Base
2
+ set_table_name 'rtml_dom_properties'
3
+ serialize :options, HashWithIndifferentAccess
4
+ serialize :value
5
+ belongs_to :element, :class_name => 'Rtml::Dom::Element'
6
+ delegate :document, :to => :element
7
+ validates_presence_of :name
8
+ validates_uniqueness_of :name, :scope => :element_id
9
+
10
+ def after_initialize
11
+ self.options ||= HashWithIndifferentAccess.new
12
+ end
13
+
14
+ def value
15
+ r = super
16
+ return r.to_s if r.kind_of? Symbol
17
+ r
18
+ end
19
+
20
+ # See +Rtml::Dom::Element#lookup_tml_id(name)+
21
+ def self.lookup_tml_id(name)
22
+ Rtml::Dom::Element.lookup_tml_id(name)
23
+ end
24
+
25
+ def to_s
26
+ value.to_s
27
+ end
28
+
29
+ def blank?
30
+ value.blank?
31
+ end
32
+
33
+ def nil?
34
+ value.nil?
35
+ end
36
+
37
+ # Returns the TML counterpart of just the value of this property.
38
+ # If this is a TML ID property, the return value is a call to #lookup_tml_id.
39
+ # If this is has the :id_ref option, the return value is a reference to the element with this ID.
40
+ # In all other cases, the value of this property is returned.
41
+ def tml_value
42
+ id_ref = options.key?(:id_ref) ? options[:id_ref] : self.name == 'uri'
43
+ val = tml_valid(self.value)
44
+ val = val.to_s if val.kind_of?(Symbol) or val.kind_of?(Numeric)
45
+ val = self.class.lookup_tml_id(value) if name == 'id'
46
+ if id_ref && element && document
47
+ match = document.screens.select { |s| s.property(:id).to_s == val.to_s }.first
48
+ if match
49
+ val = "##{self.class.lookup_tml_id(val)}"
50
+ end
51
+ end
52
+ val
53
+ end
54
+
55
+ # Produces the TML for this property.
56
+ def to_tml
57
+ val = tml_value
58
+ return val if val.blank? and options[:drop_if_blank]
59
+ return "" if val.nil? # always drop nils
60
+ "#{self.name}=#{val.inspect.ljust(15)}" # the ljust is for pretty formatting during my tests and could be removed
61
+ end
62
+
63
+ # Handles various special-case values, like "true" and "false", which must be converted to 1, 0, and so on.
64
+ def tml_valid(i)
65
+ case i
66
+ when true, :true then 1
67
+ when false, :false then 0
68
+ else i
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,14 @@
1
+ class Rtml::Dom::ScreenElement < Rtml::Dom::Element
2
+ def after_initialize
3
+ super
4
+ find_or_add_property(:next, :id_ref => true, :drop_if_blank => true)
5
+ end
6
+
7
+ def path
8
+ if document && document.name
9
+ "#{document.name}/#{property('id')}"
10
+ else
11
+ property('id').to_s
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,52 @@
1
+ class Rtml::Instruction < ActiveRecord::Base
2
+ extend Rtml::Instruction::FollowClassMethods
3
+
4
+ set_table_name 'rtml_instructions'
5
+ serialize :arguments#, Array
6
+ belongs_to :source, :polymorphic => true
7
+ validates_presence_of :source, :name, :x, :y
8
+ validates_presence_of :widget
9
+
10
+ #has_many :instructions, :as => :source # referencing this seems to raise Rtml is not missing constant Instruction ??
11
+ #So I added a migration and an extra key (parent_id) and source_id and source_type aren't used for children. Whatever.
12
+ #has_many :instructions, :class_name => 'Rtml::Instruction', :foreign_key => 'parent_id', :dependent => :destroy
13
+ #belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Rtml::Instruction'
14
+
15
+ # It's because of the namespace.
16
+ has_many :instructions, :as => :source, :class_name => 'Rtml::Instruction'
17
+ delegate :gui_configuration, :to => :widget
18
+
19
+ def to_json(options = {})
20
+ super(options.merge(:methods => :widget_fields))
21
+ end
22
+
23
+ def after_initialize
24
+ self.arguments ||= Hash.new
25
+ end
26
+
27
+ def widget
28
+ return nil unless source
29
+ source_name = source.kind_of?(Rtml::Document) ? 'document' : source.name
30
+ Rtml::Widgets.affecting(source_name).each do |widget|
31
+ return widget if widget.entry_points.include?(name)
32
+ end
33
+ nil
34
+ end
35
+
36
+ def widget_name
37
+ widget.name
38
+ end
39
+
40
+ def widget_fields
41
+ gui_configuration.fields_with_inferences
42
+ end
43
+
44
+ def follow(source = self.source)
45
+ raise ArgumentError, "Source is required" unless source
46
+
47
+ src = source.send("#{name}_from_hash", arguments)
48
+ instructions.each do |instruction|
49
+ instruction.follow(src)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,101 @@
1
+ module Rtml::Instruction::FollowClassMethods
2
+ # Simply follows the supplied array of instructions. Each instruction is considered to have run on the result
3
+ # of the previous instruction. If that result doesn't respond_to? the instruction or does not support
4
+ # subprocessing, then the instruction is run on its parent result instead.
5
+ #
6
+ # Use "pop" as an instruction at any time to force the next instruction to run on the current result's parent.
7
+ #
8
+ # Examples:
9
+ #
10
+ # follow_instructions ['screen :init, :idle',
11
+ # 'screen :idle',
12
+ # 'display',
13
+ # 'screen :main',
14
+ # 'submit "http://www.google.com"',
15
+ # 'getvar "txn.amount"'
16
+ # ]
17
+ #
18
+ # The above instructions are equivalent to the following RTML code:
19
+ #
20
+ # screen :init, :idle
21
+ #
22
+ # screen :idle do
23
+ # display
24
+ # end
25
+ #
26
+ # screen :main do
27
+ # submit "http://www.google.com" do
28
+ # getvar "txn.amount"
29
+ # end
30
+ # end
31
+ #
32
+ def follow(instructions_array, options = {})
33
+ instructions = instructions_array
34
+ options.each { |k, v| options[k] = v.to_s if [:controller, :action].include?(k) && v.is_a?(Symbol) }
35
+ if controller = options.delete(:controller)
36
+ action = options.delete(:action) || "index"
37
+ controller = "#{controller.camelize}Controller".constantize
38
+
39
+ Rtml::actions_for controller do
40
+ define_method action do
41
+ Rtml::Instruction.follow instructions
42
+ end
43
+ end
44
+ else
45
+ rtml_document = options.delete(:rtml_document) || options.delete(:document) || Rtml::Document.new(:name => "untitled")
46
+
47
+ instructions = instructions.raw.flatten if defined?(Cucumber) && instructions.kind_of?(Cucumber::Ast::Table)
48
+ reset_stack(rtml_document)
49
+ process_instructions(instructions)
50
+
51
+ rtml_document
52
+ end
53
+ end
54
+
55
+
56
+ def process_instructions(instructions)
57
+ remaining = instructions
58
+ if current = remaining.shift
59
+ arguments = current.split
60
+ method_name = arguments.shift
61
+ arguments = arguments.join(" ").strip
62
+
63
+ if current.strip == 'pop'
64
+ @stack.pop
65
+ elsif current_target.respond_to?(method_name) || @stack.length == 1
66
+ block = remaining.empty? ? nil : proc { |target| @stack.push target }
67
+ evaluate_instruction(method_name, arguments, &block)
68
+ else
69
+ @stack.pop
70
+ remaining = [current]+remaining
71
+ end
72
+ process_instructions(remaining)
73
+ end
74
+ end
75
+
76
+ def evaluate_instruction(method_name, arguments, &block)
77
+ arguments = "*[]" if arguments.blank?
78
+ instruction = "current_target.#{method_name}(#{arguments}, &block)"
79
+ eval(instruction, binding, __FILE__, __LINE__)
80
+ rescue Rtml::Errors::SubprocessingNotSupported
81
+ # This error is raised before the block is evaluated, hence, @stack.push never occurs, hence, there's
82
+ # no need to pop. Simply perform the next instruction on the current_target, which hasn't changed.
83
+ rescue SyntaxError
84
+ # This is usually because instruction looked something like:
85
+ # current_target.controller.response.status(= 500, &block)
86
+ # The solution is to simply evaluate it exactly as it was written in the instruction:
87
+ # [current_target.]controller.response.status = 500
88
+ eval("current_target.#{method_name} #{arguments}", binding, __FILE__, __LINE__)
89
+ end
90
+
91
+ def current_target
92
+ @stack.last
93
+ end
94
+
95
+ def reset_stack(document)
96
+ if @stack then @stack.clear
97
+ else @stack = []
98
+ end
99
+ @stack << document
100
+ end
101
+ end