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,20 @@
1
+ class Rtml::State < ActiveRecord::Base
2
+ serialize :other_data, HashWithIndifferentAccess
3
+ set_table_name 'rtml_states'
4
+ validates_presence_of :model
5
+ validates_uniqueness_of :itid
6
+
7
+ def after_initialize
8
+ self.other_data ||= {}.with_indifferent_access
9
+ end
10
+
11
+ def [](key)
12
+ return self.send(key) if attributes.keys.include?(key)
13
+ other_data[key]
14
+ end
15
+
16
+ def []=(key, value)
17
+ return self.send("#{key}=", value) if attributes.keys.include?(key)
18
+ other_data[key] = value
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ class Rtml::State::VariableMapping < HashWithIndifferentAccess
2
+ def initialize(*args)
3
+ super
4
+ setup_default_mapping
5
+ end
6
+
7
+ # Sets up the variable mapping. Override this method if you intend to add custom variables to the mapping.
8
+ def setup_default_mapping
9
+ %w(datetime datetime_start itid model os part_number serial_number).each do |var|
10
+ self["terminal.#{var}"] = var
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class Rtml::View < ActiveRecord::Base
2
+ set_table_name "rtml_views"
3
+ validates_presence_of :name
4
+ validates_uniqueness_of :name
5
+ end
@@ -0,0 +1,23 @@
1
+ Rtml::actions_for :rtml do
2
+ def get_state
3
+ cache false
4
+ expires_at { Time.at(0) }
5
+ on :cancel => embedded_app
6
+
7
+ screen :gather_data, :submit_err do
8
+ build :submit, :tgt => url_for(params), :econn => "#submit_err", :cache => "deny" do
9
+ [:datetime, :datetime_start, :itid, :model, :os, :part_number, :serial_number].each do |field|
10
+ build :getvar, :name => "terminal.#{field}"
11
+ end
12
+ end
13
+ end
14
+
15
+ screen :submit_err do
16
+ display <<-end_tml
17
+ <br/><br/>
18
+ Error initializing session state data. See logs for more details.<br/>
19
+ <getvar name='err.baddata_reason' />
20
+ end_tml
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ Rtml::actions_for :rtml do
2
+ def rescue_action_locally
3
+ #on :cancel => embedded_app
4
+ #cache false
5
+ #expires_at { Time.at(0) }
6
+
7
+ screen :rescue, :next => "/index.tml" do
8
+ clean_params = request.parameters.clone
9
+ clean_params.delete "action"
10
+ clean_params.delete "controller"
11
+ @request_dump = clean_params.empty? ? "None" : clean_params.inspect.gsub(',', ",\n")
12
+
13
+ display :file => "rtml/rescue_action_locally"
14
+ end
15
+ end
16
+
17
+ def rescue_action_in_public
18
+ #cache false
19
+ #expires_at { Time.at(0) }
20
+
21
+ screen :rescue, :next => '/index.tml' do
22
+ display :file => "rtml/rescue_action_in_public"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1 @@
1
+ <p>Could not complete transaction. Please try again.</p>
@@ -0,0 +1,29 @@
1
+ <h1>
2
+ <%=h @exception.class%> in
3
+ <%=h request.parameters["controller"].capitalize if request.parameters["controller"]%>#<%=h request.parameters["action"]%>
4
+ </h1>
5
+ <br/>
6
+
7
+ <h2>Message: <%=h(@exception ? @exception.message : "")%></h2>
8
+ <br/>
9
+
10
+ <%=link_to "Retry Request", params%> |
11
+ <%=link_to "Restart Application", "/index.tml"%> |
12
+ <%=link_to "Configuration", embedded_app%>
13
+ <br/><br/>
14
+
15
+ <pre>RAILS_ROOT: <%=defined?(RAILS_ROOT) ? RAILS_ROOT : "unset"%></pre>
16
+ <br/>
17
+
18
+ <div id="traces">
19
+ <%=@exception ?
20
+ @exception.application_backtrace.select { |i| not(i =~ /lib\/ruby\/gems/) }.collect { |i| h(i) }.join("<br/>\n") :
21
+ ""%>
22
+ </div>
23
+
24
+ <h2>Request</h2>
25
+ Parameters: <pre><%=h @request_dump%></pre>
26
+ <br/>
27
+
28
+ <h2>Response</h2>
29
+ Headers: <pre><%=h(response ? response.headers.inspect.gsub(',', ",\n") : "None")%></pre>
@@ -0,0 +1,25 @@
1
+ class Rtml::Widgets::DefaultDocument < Rtml::Widget
2
+ affects :document
3
+ entry_point :setup_default_document
4
+
5
+ # Runs the initial setup for an instance of Rtml::Document. This is triggered by
6
+ # the #initialize method of that class. It should be safe to call this method
7
+ # multiple times if you need to, but the only effect after the first will be a call to
8
+ # Rtml::Document#apply_document_options. See that method for information about what
9
+ # options are available.
10
+ def setup_default_document(options = {})
11
+ apply_document_options(options)
12
+ if parent.root.blank?
13
+ parent.build :tml, :xmlns => "http://www.ingenico.co.uk/tml", :cache => "allow" do
14
+ head
15
+ end
16
+
17
+ document.during_finalization do
18
+ screen :assert do
19
+ display "<h1>Assertion Error!</h1>On screen: <getvar name='oebr.prev_screen' />"
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,133 @@
1
+ class Rtml::Widgets::DocumentVariableProcessing < Rtml::Widget
2
+ VALID_OPTIONS = %w(type name format perms value)
3
+ VALID_TYPES = %w(integer string opaque datetime)
4
+
5
+ affects :document
6
+ entry_point :declare_variable, :define_variable, :variable?, :variable_declared?, :variable_defined?
7
+ entry_point :string, :integer, :opaque, :datetime, :binary, :boolean
8
+ entry_point :strings, :integers, :opaques, :datetimes, :binaries, :booleans
9
+ entry_point :string?, :integer?, :opaque?, :datetime?, :binary?, :boolean?
10
+ entry_point :defined_variables, :variable_definitions
11
+ entry_point :declared_variables, :variable_declarations
12
+ entry_point :variable
13
+
14
+ # Declares a TML variable to be used within this document. Valid options include:
15
+ # :name the name of the variable
16
+ # :type string, integer, opaque, date
17
+ # :volatile yes, no
18
+ # :perms "rw---", "rwxrw", etc
19
+ def declare_variable(name, options = { })
20
+ unless variable?(name)
21
+ define_variable name, options
22
+ document.root.build :vardcl, options.merge(:name => name.to_s)
23
+ end
24
+ end
25
+
26
+ # Defines a TML variable to be used within this document, without explicitly declaring it.
27
+ # This is useful for adding built-in TML variables, or those set at the Incendo gateway level,
28
+ # to RTML's scope.
29
+ def define_variable(name, options = {})
30
+ options_with_name = options.merge(:name => name.to_s)
31
+ validate_options(options_with_name)
32
+ vd = variable_definitions(options[:type])
33
+ vd << options_with_name.with_indifferent_access
34
+ vd
35
+ end
36
+
37
+ def validate_options(options)
38
+ options.each do |key, value|
39
+ unless VALID_OPTIONS.include?(key.to_s)
40
+ raise Rtml::Errors::InvalidOptionError, "Option '#{key}' is not allowed; expected one of #{VALID_OPTIONS.inspect}"
41
+ end
42
+ case key.to_s
43
+ when 'type'
44
+ unless VALID_TYPES.include?(value.to_s)
45
+ raise Rtml::Errors::InvalidOptionError, "Type must be one of #{VALID_TYPES.inspect}; found #{value}"
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ # Returns all known variable definitions of the specified type, which can be one of
52
+ # :all, :string, :datetime, :opaque, :binary, :integer, :boolean
53
+ def variable_definitions(type = :all)
54
+ vdn = '@variable_definitions'
55
+ type = "opaque" if type.to_s == "binary"
56
+ vd = document.instance_variable_get(vdn) || document.instance_variable_set(vdn, {}.with_indifferent_access)
57
+ if type == :all
58
+ vd.collect { |i, j| j }.flatten
59
+ else
60
+ vd[type] = [] unless vd[type]
61
+ document.instance_variable_set(vdn, vd)
62
+ vd[type]
63
+ end
64
+ end
65
+ alias defined_variables variable_definitions
66
+
67
+ # Returns all explicit variable declarations of the specified type, which can be one of
68
+ # :all, :string, :datetime, :opaque, :binary, :integer, :boolean
69
+ def variable_declarations(type = :all)
70
+ r = []
71
+ type = "opaque" if type.to_s == "binary"
72
+ type = "integer" if type.to_s == "boolean"
73
+ vardecs = (document / 'vardcl') || []
74
+ vardecs = [vardecs] unless vardecs.kind_of? Array
75
+ vardecs.each do |vardec|
76
+ if type == :all || vardec.property('type') == type
77
+ r << vardec
78
+ end
79
+ end
80
+ r
81
+ end
82
+
83
+ alias declared_variables variable_declarations
84
+
85
+ %w(string integer opaque datetime).each do |type|
86
+ line = __LINE__ + 2
87
+ code = <<-end_code
88
+ def #{type}(*names)
89
+ options = names.extract_options!
90
+ names.each do |name|
91
+ declare_variable(name, (options || {}).merge(:type => #{type.inspect}))
92
+ end
93
+ end
94
+
95
+ def #{type.pluralize}(*names)
96
+ if names.empty?
97
+ variable_declarations(#{type.inspect})
98
+ else #{type}(*names)
99
+ end
100
+ end
101
+
102
+ def #{type}?(name)
103
+ name = name.to_s
104
+ !variable_definitions(#{type.inspect}).collect { |var| var[:name] == name }.empty?
105
+ end
106
+ end_code
107
+ eval code, binding, __FILE__, line
108
+ end
109
+
110
+ def variable_defined?(name)
111
+ name = name.to_s
112
+ !variable_definitions(:all).select { |var| var[:name] == name }.empty?
113
+ end
114
+
115
+ def variable_declared?(name)
116
+ name = name.to_s
117
+ !variable_declarations(:all).select { |var| var.property(:name) == name }.empty?
118
+ end
119
+
120
+ alias variable? variable_defined?
121
+
122
+ alias binary opaque
123
+ alias binaries opaques
124
+ alias binary? opaque?
125
+
126
+ alias boolean integer
127
+ alias booleans integers
128
+ alias boolean? integer?
129
+
130
+ def document
131
+ parent
132
+ end
133
+ end
@@ -0,0 +1,148 @@
1
+ # The ElementBuilder Widget is the heart of RTML document generation. All other Widgets are built on top of this one,
2
+ # and use it to formulate a valid document object model (DOM) representing the TML to be sent downstream.
3
+ #
4
+ # ElementBuilder can be invoked from any document or element via its entry point, #build. Any options are converted
5
+ # into element properties.
6
+ #
7
+ # ElementBuilder will create an instance of Rtml::Dom::Element whose parent is whichever element you invoked the
8
+ # ElementBuilder from and whose name is set accordingly. An error will be raised if the element does not match any
9
+ # of the parent's valid children.
10
+ #
11
+ # A block can be passed to the ElementBuilder invocation in order to create children of the initially-built element.
12
+ # In this case, a set of methods are predefined to match the names of valid children. Calling one of those methods
13
+ # is exactly the same as calling #build with the first argument being the name of the element.
14
+ #
15
+ # Examples:
16
+ # document = Rtml::Document.new
17
+ # document.build(:tml) do
18
+ # head
19
+ # screen :id => 'gather_data' do
20
+ # submit :target => url_for(params), :error => '#submit_err', :cache => "deny" do
21
+ # getvar :name => 'terminal.datetime'
22
+ # end
23
+ # end
24
+ # end
25
+ #
26
+ # It should be noted that generating a document using solely the ElementBuilder would be little different than writing
27
+ # it in raw TML. This is discouraged. ElementBuilder is meant to serve as an interface upon which other Widgets can be
28
+ # constructed. There's certainly no reason you can't use it to accomplish something the other Widgets do not, but you
29
+ # might consider writing a brand-new Widget to accomplish the same task instead, so that others (and perhaps yourself
30
+ # in the future) may benefit from your contribution of missing functionality.
31
+ #
32
+ # In the event that the method name that would be used to generate a child element is also the name of a Widget entry
33
+ # point, that entry point takes priority over the generated method.
34
+ #
35
+ class Rtml::Widgets::ElementBuilder < Rtml::Widget
36
+ affects :document, :element # all elements
37
+ entry_point :build
38
+ attr_reader :name
39
+ disable_subprocessing!
40
+
41
+ def rules_apply?
42
+ parent.respond_to?(:document) && parent.document ? parent.document.rules :
43
+ (parent.respond_to?(:rules) && parent.rules)
44
+ end
45
+
46
+ def build(name, properties = {}, &block)
47
+ @name = name.to_s
48
+ raise ArgumentError, "Expected properties to be a Hash", caller unless properties.kind_of?(Hash)
49
+ skip_validation = properties.delete(:skip_validation) || false
50
+ valid_tag_names = (rules_apply? ? case parent
51
+ when Rtml::Document
52
+ validate_tag_is_the_only_root unless skip_validation
53
+ [ rules.root ]
54
+ else
55
+ validate_tag_is_in_order unless skip_validation
56
+ rules.tag(parent.name).children
57
+ end : [])
58
+ validate_name_is_one_of(valid_tag_names) if rules_apply? and not skip_validation
59
+
60
+ # validation passed, so create the element
61
+ @element = parent.build_element(name, properties)
62
+ if @element.respond_to?(:parent=)
63
+ if @element.changed? || @element.new_record?
64
+ @element.parent = parent
65
+ else
66
+ @element.update_attribute(:parent, parent)
67
+ end
68
+ end
69
+
70
+ rebuild_invalid_elements
71
+ add_method_proxies
72
+ begin
73
+ @element.process &block
74
+ rescue
75
+ # if the subprocessing failed, then remove the element from parent.
76
+ if parent.respond_to?(:elements)
77
+ parent.elements.delete @element
78
+ elsif parent.respond_to?(:root) && parent.root == @element
79
+ parent.root = nil
80
+ end
81
+ raise
82
+ end if block_given?
83
+ @element
84
+ end
85
+
86
+ private
87
+ # Removes elements in the @out_of_order array from the parent element, and then rebuilds them. This ensures
88
+ # that they come *after* the current element, because #validate_tag_is_in_order has already verified that that
89
+ # is where they belong.
90
+ def rebuild_invalid_elements
91
+ @out_of_order.each do |o|
92
+ ele = o
93
+ parent.elements.delete o
94
+ parent.elements << o
95
+ end if @out_of_order
96
+ end
97
+
98
+ # Aliases #build in the newly-created element for each valid child of that element.
99
+ def add_method_proxies
100
+ if rules_apply?
101
+ code = ""
102
+ tag = rules.tag(name)
103
+ proxy = Module.new
104
+ entry_points = @element.widget_entry_points
105
+
106
+ tag.children.each do |method_name|
107
+ # we can't abort if respond_to? is true because that would prevent things like "display" or "p" from working
108
+ # as expected. So we get a list of known entry points, and ignore them because anything we define here will
109
+ # likely override them. (Since ElementBuilder is considerably low-level, that is probably the opposite of what
110
+ # the user writing the Widget in question would expect.) Then we continue, even if the method already exists,
111
+ # as long as it's not a Widget entry point.
112
+ next if entry_points.include? method_name
113
+ #puts "#{@element.name} - #{method_name}"
114
+ code.concat "def #{method_name}(*a, &b); build('#{method_name}', *a, &b); end\n"
115
+ end if tag && !tag.kind_of?(Array)
116
+ proxy.class_eval code, __FILE__, __LINE__ unless code.blank?
117
+ (class << @element; self; end).send(:include, proxy)
118
+ end
119
+ end
120
+
121
+ # Raises RulesViolationError if #name is out of the accepted order.
122
+ def validate_tag_is_in_order
123
+ order = rules.order(parent.name)
124
+ first = order.index(name)
125
+ after = order.select { |i| order.index(i) > first }
126
+ out_of_order = parent.elements.select { |c| after.include?(c.name) }
127
+
128
+ # out_of_order is supposed to come after first, but is already in the list so is placed before it.
129
+ # (first hasn't been created yet.)
130
+ @out_of_order = out_of_order
131
+ end
132
+
133
+ # Raises RulesViolationError if #name is not a root tag or if there is already a root tag.
134
+ def validate_tag_is_the_only_root
135
+ unless name == rules.root
136
+ raise Rtml::Errors::RulesViolationError, "Tag must be a root tag (#{rules.root.inspect}); was #{name.inspect}"
137
+ end
138
+ if (first = parent.root)
139
+ raise Rtml::Errors::RulesViolationError, "Already have a root tag (#{first.name.inspect})"
140
+ end
141
+ end
142
+
143
+ # Raises RulesViolationError if #name is not in the specified array.
144
+ def validate_name_is_one_of(valid_tag_names)
145
+ return if valid_tag_names.include? name
146
+ raise Rtml::Errors::RulesViolationError, "Tag name should be one of #{valid_tag_names.inspect}; was #{name.inspect}"
147
+ end
148
+ end
@@ -0,0 +1,41 @@
1
+ class Rtml::Widgets::EventListener < Rtml::Widget
2
+ affects :document, :screen
3
+ entry_point :on
4
+ disable_subprocessing!
5
+
6
+ def on(events)
7
+ events.each do |key, destination|
8
+ make_sure_key_is_valid(key)
9
+ register_event(key, destination)
10
+ end
11
+ end
12
+
13
+ def valid_keys
14
+ case source_type
15
+ when :document then %w(menu cancel)
16
+ when :screen then %w(0 1 2 3 4 5 6 7 8 9 00 f1 f2 f3 f4 f5 f6 f7 f8 f9 down up menu stop cancel enter)
17
+ end
18
+ end
19
+
20
+ # Returns the +defaults+ TML tag beneath the document's +head+ TML tag, or creates it.
21
+ def defaults_tag
22
+ head = (document / "head").first
23
+ (head / "defaults").first || head.build(:defaults)
24
+ end
25
+
26
+ private
27
+ def make_sure_key_is_valid(key)
28
+ if !valid_keys.include?(key.to_s)
29
+ raise Rtml::Errors::RulesViolationError,
30
+ "Expected key to be one of #{valid_keys.to_sentence(:locale => :en)}; found #{key.inspect}"
31
+ end
32
+ end
33
+
34
+ def register_event(key, destination)
35
+ if source_type == :document
36
+ defaults_tag.property(key, destination, :id_ref => true)
37
+ else
38
+ parent.goto destination, :key => key
39
+ end
40
+ end
41
+ end