rtml 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +396 -0
  3. data/PostInstall.txt +2 -0
  4. data/README.rdoc +42 -0
  5. data/Rakefile +33 -0
  6. data/app_generators/rtml/USAGE +5 -0
  7. data/app_generators/rtml/rtml_generator.rb +78 -0
  8. data/app_generators/rtml/templates/rails_template.rb +36 -0
  9. data/app_generators/rtml/templates/rtml/MIT-LICENSE +20 -0
  10. data/app_generators/rtml/templates/rtml/README +109 -0
  11. data/app_generators/rtml/templates/rtml/Rakefile +38 -0
  12. data/app_generators/rtml/templates/rtml/app/controllers/beryl_controller.rb +70 -0
  13. data/app_generators/rtml/templates/rtml/app/controllers/rtml/magcard_demo_controller.rb +9 -0
  14. data/app_generators/rtml/templates/rtml/app/controllers/rtml/oe/btmlpa_controller.rb +158 -0
  15. data/app_generators/rtml/templates/rtml/app/controllers/rtml/rtml_app_controller.rb +252 -0
  16. data/app_generators/rtml/templates/rtml/app/controllers/rtml/tml_app_controller.rb +418 -0
  17. data/app_generators/rtml/templates/rtml/app/helpers/beryl_helper.rb +72 -0
  18. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/auth_result.rb +56 -0
  19. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/common.rb +19 -0
  20. data/app_generators/rtml/templates/rtml/app/helpers/beryl_tml_helpers/index.rb +82 -0
  21. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_helper.rb +2 -0
  22. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/authorized.rb +10 -0
  23. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/common.rb +20 -0
  24. data/app_generators/rtml/templates/rtml/app/helpers/rtml/magcard_demo_tml_helpers/index.rb +33 -0
  25. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_helper.rb +2 -0
  26. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/auth_result.rb +23 -0
  27. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/common.rb +23 -0
  28. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/dynamic.rb +11 -0
  29. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/icc.rb +384 -0
  30. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/index.rb +191 -0
  31. data/app_generators/rtml/templates/rtml/app/helpers/rtml/oe/btmlpa_tml_helpers/receipt.rb +152 -0
  32. data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_helper.rb +74 -0
  33. data/app_generators/rtml/templates/rtml/app/helpers/rtml/rtml_app_tml_helpers/common.rb +9 -0
  34. data/app_generators/rtml/templates/rtml/app/helpers/rtml/tml_app_helper.rb +43 -0
  35. data/app_generators/rtml/templates/rtml/app/models/rtml/card.rb +83 -0
  36. data/app_generators/rtml/templates/rtml/app/models/rtml/card_avs.rb +14 -0
  37. data/app_generators/rtml/templates/rtml/app/models/rtml/card_cvv.rb +14 -0
  38. data/app_generators/rtml/templates/rtml/app/models/rtml/card_parser.rb +21 -0
  39. data/app_generators/rtml/templates/rtml/app/models/rtml/card_pin.rb +18 -0
  40. data/app_generators/rtml/templates/rtml/app/models/rtml/emv_card_data.rb +25 -0
  41. data/app_generators/rtml/templates/rtml/app/models/rtml/mag_card_data.rb +21 -0
  42. data/app_generators/rtml/templates/rtml/app/models/rtml/reference_code.rb +26 -0
  43. data/app_generators/rtml/templates/rtml/app/models/rtml/state.rb +12 -0
  44. data/app_generators/rtml/templates/rtml/app/models/rtml/terminal.rb +8 -0
  45. data/app_generators/rtml/templates/rtml/app/models/rtml/transaction.rb +68 -0
  46. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/another_rcpt.rtml.erb +15 -0
  47. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt.rtml.erb +108 -0
  48. data/app_generators/rtml/templates/rtml/app/views/beryl/auth_result/receipt_single_column.rtml.erb +106 -0
  49. data/app_generators/rtml/templates/rtml/app/views/beryl/index/about.rtml.erb +8 -0
  50. data/app_generators/rtml/templates/rtml/app/views/beryl/index/admin.rtml.erb +4 -0
  51. data/app_generators/rtml/templates/rtml/app/views/beryl/index/construction.rtml.erb +10 -0
  52. data/app_generators/rtml/templates/rtml/app/views/beryl/index/idle.rtml.erb +13 -0
  53. data/app_generators/rtml/templates/rtml/app/views/beryl/index/main_menu.rtml.erb +12 -0
  54. data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_credit.rtml.erb +8 -0
  55. data/app_generators/rtml/templates/rtml/app/views/beryl/index/menu_debit.rtml.erb +3 -0
  56. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_color.rtml.erb +24 -0
  57. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/beryl_mono.rtml.erb +8 -0
  58. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_color.rtml.erb +24 -0
  59. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/magcard_demo_mono.rtml.erb +3 -0
  60. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i5100.rtml.erb +3 -0
  61. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/oe/btmlpa_i8550.rtml.erb +17 -0
  62. data/app_generators/rtml/templates/rtml/app/views/layouts/rtml/uml.html.erb +11 -0
  63. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized.html.erb +15 -0
  64. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/authorized/main.rtml.erb +5 -0
  65. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index.html.erb +15 -0
  66. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/_error.rtml.erb +2 -0
  67. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/enter_amount.rtml.erb +5 -0
  68. data/app_generators/rtml/templates/rtml/app/views/rtml/magcard_demo/index/main.rtml.erb +4 -0
  69. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/dynamic/response.rtml.erb +2 -0
  70. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/icc.rtml.erb +760 -0
  71. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_enter_amount.rtml.erb +4 -0
  72. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_about.rtml.erb +8 -0
  73. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_duplicate.rtml.erb +9 -0
  74. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_examples.rtml.erb +9 -0
  75. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_logo.rtml.erb +11 -0
  76. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_other.rtml.erb +20 -0
  77. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_refund.rtml.erb +8 -0
  78. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_reversal.rtml.erb +9 -0
  79. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale.rtml.erb +8 -0
  80. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/_menu_sale_cashback.rtml.erb +8 -0
  81. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/about.rtml.erb +1 -0
  82. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/assert.rtml.erb +2 -0
  83. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/card_nmb.rtml.erb +19 -0
  84. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/compl_txn.rtml.erb +1 -0
  85. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/confirm_rev.rtml.erb +3 -0
  86. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/duplicate_na.rtml.erb +1 -0
  87. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/error_scr.rtml.erb +4 -0
  88. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.bak +31 -0
  89. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/main_menu.rtml.erb +40 -0
  90. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/print_pf.rtml.erb +1 -0
  91. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rd_sale_disp.rtml.erb +1 -0
  92. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_refund.rtml.erb +1 -0
  93. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/read_scb.rtml.erb +10 -0
  94. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/reject_trans.rtml.erb +1 -0
  95. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/remove_card.rtml.erb +1 -0
  96. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/rev_bad.rtml.erb +1 -0
  97. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/scb_check_f.rtml.erb +2 -0
  98. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/sign_check.rtml.erb +3 -0
  99. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/subm_err.rtml.erb +2 -0
  100. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/to_man_entry.rtml.erb +2 -0
  101. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/trans_abrt.rtml.erb +1 -0
  102. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/index/void_trans.rtml.erb +1 -0
  103. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/_receipt.rtml.erb +29 -0
  104. data/app_generators/rtml/templates/rtml/app/views/rtml/oe/btmlpa/receipt/error_paper.rtml.erb +3 -0
  105. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_development.html.erb +167 -0
  106. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_header.html.erb +12 -0
  107. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/_default_production.html.erb +8 -0
  108. data/app_generators/rtml/templates/rtml/app/views/rtml/rtml_app/charts.html.erb +14 -0
  109. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/do_tml_redirect.rtml.erb +7 -0
  110. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/get_terminal_info.rtml.erb +26 -0
  111. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_in_public.rtml.erb +9 -0
  112. data/app_generators/rtml/templates/rtml/app/views/rtml/tml_app/rescue_action_locally.rtml.erb +42 -0
  113. data/app_generators/rtml/templates/rtml/components/rtml/features/common.rb +303 -0
  114. data/app_generators/rtml/templates/rtml/components/rtml/features/force.rb +46 -0
  115. data/app_generators/rtml/templates/rtml/components/rtml/features/return.rb +22 -0
  116. data/app_generators/rtml/templates/rtml/components/rtml/features/sale.rb +49 -0
  117. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_confirmation.rtml.erb +10 -0
  118. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_agreement.rtml.erb +3 -0
  119. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_footer.rtml.erb +2 -0
  120. data/app_generators/rtml/templates/rtml/components/rtml/features/views/_receipt_header.rtml.erb +4 -0
  121. data/app_generators/rtml/templates/rtml/components/rtml/features/views/ask_cashback.rtml.erb +11 -0
  122. data/app_generators/rtml/templates/rtml/components/rtml/features/views/card_imprint.rtml.erb +7 -0
  123. data/app_generators/rtml/templates/rtml/components/rtml/features/views/check_cb.rtml.erb +11 -0
  124. data/app_generators/rtml/templates/rtml/components/rtml/features/views/conf_debit.rtml.erb +5 -0
  125. data/app_generators/rtml/templates/rtml/components/rtml/features/views/confirm_sale.rtml.erb +4 -0
  126. data/app_generators/rtml/templates/rtml/components/rtml/features/views/confrm_force.rtml.erb +4 -0
  127. data/app_generators/rtml/templates/rtml/components/rtml/features/views/cvv_skipped.rtml.erb +10 -0
  128. data/app_generators/rtml/templates/rtml/components/rtml/features/views/disp_avs.rtml.erb +8 -0
  129. data/app_generators/rtml/templates/rtml/components/rtml/features/views/do_avs_zip.rtml.erb +8 -0
  130. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_amount.rtml.erb +12 -0
  131. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_card.rtml.erb +8 -0
  132. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cashbk.rtml.erb +10 -0
  133. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_cvv2.rtml.erb +8 -0
  134. data/app_generators/rtml/templates/rtml/components/rtml/features/views/enter_expiry.rtml.erb +9 -0
  135. data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check1.rtml.erb +6 -0
  136. data/app_generators/rtml/templates/rtml/components/rtml/features/views/fraud_check2.rtml.erb +8 -0
  137. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_aprvl.rtml.erb +8 -0
  138. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_avs_zip.rtml.erb +8 -0
  139. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frc_bad_aprv.rtml.erb +5 -0
  140. data/app_generators/rtml/templates/rtml/components/rtml/features/views/frd_chk_fail.rtml.erb +5 -0
  141. data/app_generators/rtml/templates/rtml/components/rtml/features/views/invalid_exp.rtml.erb +1 -0
  142. data/app_generators/rtml/templates/rtml/components/rtml/features/views/no_entr_crd.rtml.erb +1 -0
  143. data/app_generators/rtml/templates/rtml/components/rtml/features/views/remove_card.rtml.erb +1 -0
  144. data/app_generators/rtml/templates/rtml/components/rtml/features/views/swipe_card.rtml.erb +7 -0
  145. data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_abort.rtml.erb +1 -0
  146. data/app_generators/rtml/templates/rtml/components/rtml/features/views/trans_reject.rtml.erb +1 -0
  147. data/app_generators/rtml/templates/rtml/components/rtml/features/views/void_ref.rtml.erb +10 -0
  148. data/app_generators/rtml/templates/rtml/components/rtml/features/void.rb +30 -0
  149. data/app_generators/rtml/templates/rtml/components/rtml/widgets/card_parser_widget.rb +90 -0
  150. data/app_generators/rtml/templates/rtml/components/rtml/widgets/display_widget.rb +66 -0
  151. data/app_generators/rtml/templates/rtml/components/rtml/widgets/element_builder_widget.rb +123 -0
  152. data/app_generators/rtml/templates/rtml/components/rtml/widgets/emv_support_widget.rb +365 -0
  153. data/app_generators/rtml/templates/rtml/components/rtml/widgets/form_submit_widget.rb +65 -0
  154. data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_transaction_variables_widget.rb +33 -0
  155. data/app_generators/rtml/templates/rtml/components/rtml/widgets/get_variable_widget.rb +39 -0
  156. data/app_generators/rtml/templates/rtml/components/rtml/widgets/receipt_widget.rb +66 -0
  157. data/app_generators/rtml/templates/rtml/components/rtml/widgets/screen_builder_widget.rb +49 -0
  158. data/app_generators/rtml/templates/rtml/db/migrate/20090825132217_create_rtml_states.rb +15 -0
  159. data/app_generators/rtml/templates/rtml/db/migrate/20090825132401_create_rtml_terminals.rb +16 -0
  160. data/app_generators/rtml/templates/rtml/db/migrate/20090825132530_create_rtml_transactions.rb +24 -0
  161. data/app_generators/rtml/templates/rtml/db/migrate/20090825134118_create_rtml_cards.rb +23 -0
  162. data/app_generators/rtml/templates/rtml/db/migrate/20090825134622_create_rtml_emv_card_data.rb +20 -0
  163. data/app_generators/rtml/templates/rtml/db/migrate/20090825134629_create_rtml_mag_card_data.rb +17 -0
  164. data/app_generators/rtml/templates/rtml/db/migrate/20090825135838_create_rtml_card_parsers.rb +19 -0
  165. data/app_generators/rtml/templates/rtml/db/migrate/20090826103509_create_reference_codes.rb +14 -0
  166. data/app_generators/rtml/templates/rtml/db/migrate/20090915030044_add_batch_to_rtml_transactions.rb +10 -0
  167. data/app_generators/rtml/templates/rtml/db/migrate/20090915031155_add_additional_data_to_rtml_transactions.rb +10 -0
  168. data/app_generators/rtml/templates/rtml/db/migrate/20090915031156_add_hidden_data_to_rtml_transactions.rb +10 -0
  169. data/app_generators/rtml/templates/rtml/db/migrate/20091016133313_create_rtml_card_avs.rb +16 -0
  170. data/app_generators/rtml/templates/rtml/db/migrate/20091016135800_create_rtml_card_cvvs.rb +16 -0
  171. data/app_generators/rtml/templates/rtml/db/migrate/20091016135810_create_rtml_card_pins.rb +16 -0
  172. data/app_generators/rtml/templates/rtml/db/migrate/20091016135820_reverse_card_transaction_relationship.rb +11 -0
  173. data/app_generators/rtml/templates/rtml/db/migrate/20100127115105_convert_rtml_migrations_to_rails_migrations.rb +31 -0
  174. data/app_generators/rtml/templates/rtml/generators/rtml_controller/USAGE +25 -0
  175. data/app_generators/rtml/templates/rtml/generators/rtml_controller/rtml_controller_generator.rb +49 -0
  176. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/common_tml_helper.rb +20 -0
  177. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/controller.rb +3 -0
  178. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_color.css +37 -0
  179. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/css_mono.css +12 -0
  180. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/functional_test.rb +11 -0
  181. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/helper.rb +2 -0
  182. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_color.rtml.erb +24 -0
  183. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/layout_mono.rtml.erb +3 -0
  184. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/tml_helper.rb +16 -0
  185. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.html.erb +15 -0
  186. data/app_generators/rtml/templates/rtml/generators/rtml_controller/templates/view.rtml.erb +2 -0
  187. data/app_generators/rtml/templates/rtml/generators/rtml_document/USAGE +8 -0
  188. data/app_generators/rtml/templates/rtml/generators/rtml_document/rtml_document_generator.rb +45 -0
  189. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/controller.rb +7 -0
  190. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/functional_test.rb +10 -0
  191. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/helper.rb +2 -0
  192. data/app_generators/rtml/templates/rtml/generators/rtml_document/templates/view.rtml.erb +11 -0
  193. data/app_generators/rtml/templates/rtml/generators/rtml_widget/USAGE +8 -0
  194. data/app_generators/rtml/templates/rtml/generators/rtml_widget/rtml_widget_generator.rb +66 -0
  195. data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget.rb +57 -0
  196. data/app_generators/rtml/templates/rtml/generators/rtml_widget/templates/basic_widget_no_help.rb +27 -0
  197. data/app_generators/rtml/templates/rtml/init.rb +40 -0
  198. data/app_generators/rtml/templates/rtml/install.rb +18 -0
  199. data/app_generators/rtml/templates/rtml/lib/environment.rb +61 -0
  200. data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/request.rb +9 -0
  201. data/app_generators/rtml/templates/rtml/lib/extensions/action_controller/routing/route_set.rb +34 -0
  202. data/app_generators/rtml/templates/rtml/lib/extensions/action_view/base.rb +74 -0
  203. data/app_generators/rtml/templates/rtml/lib/extensions/action_view/partial_template.rb +24 -0
  204. data/app_generators/rtml/templates/rtml/lib/extensions/active_record.rb +13 -0
  205. data/app_generators/rtml/templates/rtml/lib/extensions/active_support/dependencies.rb +25 -0
  206. data/app_generators/rtml/templates/rtml/lib/extensions/array.rb +15 -0
  207. data/app_generators/rtml/templates/rtml/lib/extensions/attr_boolean.rb +10 -0
  208. data/app_generators/rtml/templates/rtml/lib/extensions/hash.rb +28 -0
  209. data/app_generators/rtml/templates/rtml/lib/extensions/nil_class.rb +20 -0
  210. data/app_generators/rtml/templates/rtml/lib/extensions/rake.rb +19 -0
  211. data/app_generators/rtml/templates/rtml/lib/extensions/regexp.rb +16 -0
  212. data/app_generators/rtml/templates/rtml/lib/extensions/string.rb +37 -0
  213. data/app_generators/rtml/templates/rtml/lib/other_plugins.rb +23 -0
  214. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/MIT-LICENSE +20 -0
  215. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/README +36 -0
  216. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/Rakefile +44 -0
  217. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/init.rb +25 -0
  218. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/action_controller/filters/before_render_filter.rb +30 -0
  219. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render.rb +43 -0
  220. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/before_render_instance.rb +45 -0
  221. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_chain_has_many_types_of_filters.rb +87 -0
  222. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/lib/filter_has_before_render.rb +26 -0
  223. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/tasks/before_render_tasks.rake +25 -0
  224. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/before_render_test.rb +29 -0
  225. data/app_generators/rtml/templates/rtml/lib/other_plugins/before_render/test/test_helper.rb +24 -0
  226. data/app_generators/rtml/templates/rtml/lib/rtml.rb +77 -0
  227. data/app_generators/rtml/templates/rtml/lib/rtml/beryl/constants.rb +12 -0
  228. data/app_generators/rtml/templates/rtml/lib/rtml/beryl/version.rb +11 -0
  229. data/app_generators/rtml/templates/rtml/lib/rtml/common/renderable.rb +13 -0
  230. data/app_generators/rtml/templates/rtml/lib/rtml/core/include.rb +30 -0
  231. data/app_generators/rtml/templates/rtml/lib/rtml/core/layout.rb +59 -0
  232. data/app_generators/rtml/templates/rtml/lib/rtml/core/next.rb +188 -0
  233. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen.rb +91 -0
  234. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/iterators.rb +63 -0
  235. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/next_screen_methods.rb +70 -0
  236. data/app_generators/rtml/templates/rtml/lib/rtml/core/screen/variable_methods.rb +73 -0
  237. data/app_generators/rtml/templates/rtml/lib/rtml/core/support/importer.rb +55 -0
  238. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document.rb +318 -0
  239. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/screen_methods.rb +79 -0
  240. data/app_generators/rtml/templates/rtml/lib/rtml/core/tml_document/variable_methods.rb +83 -0
  241. data/app_generators/rtml/templates/rtml/lib/rtml/core/variable.rb +123 -0
  242. data/app_generators/rtml/templates/rtml/lib/rtml/debug/browser_emulator.rb +59 -0
  243. data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_controller_test_case.rb +7 -0
  244. data/app_generators/rtml/templates/rtml/lib/rtml/debug/rtml_core_unit_test.rb +11 -0
  245. data/app_generators/rtml/templates/rtml/lib/rtml/debug/unit_test.rb +3 -0
  246. data/app_generators/rtml/templates/rtml/lib/rtml/delegation.rb +8 -0
  247. data/app_generators/rtml/templates/rtml/lib/rtml/doc.rb +12 -0
  248. data/app_generators/rtml/templates/rtml/lib/rtml/element.rb +75 -0
  249. data/app_generators/rtml/templates/rtml/lib/rtml/errors/widget_accessor_failure.rb +9 -0
  250. data/app_generators/rtml/templates/rtml/lib/rtml/events/event_handler.rb +79 -0
  251. data/app_generators/rtml/templates/rtml/lib/rtml/events/event_processor.rb +106 -0
  252. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors.rb +10 -0
  253. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/defaults_processor.rb +18 -0
  254. data/app_generators/rtml/templates/rtml/lib/rtml/events/processors/key_processor.rb +21 -0
  255. data/app_generators/rtml/templates/rtml/lib/rtml/feature.rb +32 -0
  256. data/app_generators/rtml/templates/rtml/lib/rtml/feature_config.rb +195 -0
  257. data/app_generators/rtml/templates/rtml/lib/rtml/features.rb +18 -0
  258. data/app_generators/rtml/templates/rtml/lib/rtml/features/array_of_feature_instances.rb +17 -0
  259. data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_class_methods.rb +30 -0
  260. data/app_generators/rtml/templates/rtml/lib/rtml/features/controller_instance_methods.rb +35 -0
  261. data/app_generators/rtml/templates/rtml/lib/rtml/helpers.rb +21 -0
  262. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers.rb +59 -0
  263. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/controller_helpers/menu_helpers.rb +193 -0
  264. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/action_view_wrapper.rb +23 -0
  265. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/event_helpers.rb +28 -0
  266. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/layout_helpers.rb +47 -0
  267. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support.rb +181 -0
  268. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/widget_support/class_methods.rb +28 -0
  269. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/core_helpers/yield_helpers.rb +33 -0
  270. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/proxy_helpers/feature_helpers.rb +17 -0
  271. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/render_helper.rb +71 -0
  272. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/terminal_helpers.rb +21 -0
  273. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers.rb +6 -0
  274. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/tml_validation_assertions.rb +10 -0
  275. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/test_helpers/variable_assertions.rb +27 -0
  276. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/form_helpers.rb +70 -0
  277. data/app_generators/rtml/templates/rtml/lib/rtml/helpers/view_helpers/rtml_form_builder.rb +174 -0
  278. data/app_generators/rtml/templates/rtml/lib/rtml/oe/btmlpa_constants.rb +48 -0
  279. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/method_missing_methods.rb +14 -0
  280. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/rtml_interface.rb +33 -0
  281. data/app_generators/rtml/templates/rtml/lib/rtml/proxying/sandbox.rb +18 -0
  282. data/app_generators/rtml/templates/rtml/lib/rtml/text_utils.rb +51 -0
  283. data/app_generators/rtml/templates/rtml/lib/rtml/tml_param_parser.rb +95 -0
  284. data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_rule_parser.rb +61 -0
  285. data/app_generators/rtml/templates/rtml/lib/rtml/validation/dom_tag.rb +52 -0
  286. data/app_generators/rtml/templates/rtml/lib/rtml/validation/predefined_variable_rule_parser.rb +97 -0
  287. data/app_generators/rtml/templates/rtml/lib/rtml/validation/tml_validator.rb +16 -0
  288. data/app_generators/rtml/templates/rtml/lib/rtml/version.rb +11 -0
  289. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property.rb +11 -0
  290. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/property_accessors.rb +59 -0
  291. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget.rb +251 -0
  292. data/app_generators/rtml/templates/rtml/lib/rtml/widgets/widget_class_methods.rb +213 -0
  293. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/dot.gif +0 -0
  294. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_can.gif +0 -0
  295. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_cand.gif +0 -0
  296. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_en.gif +0 -0
  297. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_end.gif +0 -0
  298. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_i.gif +0 -0
  299. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icd.gif +0 -0
  300. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icl.gif +0 -0
  301. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icr.gif +0 -0
  302. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ics.gif +0 -0
  303. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icsw.gif +0 -0
  304. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_icv.gif +0 -0
  305. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int.gif +0 -0
  306. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_int2.gif +0 -0
  307. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_men.gif +0 -0
  308. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_mend.gif +0 -0
  309. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_next.gif +0 -0
  310. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_no.gif +0 -0
  311. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_nod.gif +0 -0
  312. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_ok.gif +0 -0
  313. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_okd.gif +0 -0
  314. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic1.gif +0 -0
  315. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic2.gif +0 -0
  316. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic3.gif +0 -0
  317. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_pic4.gif +0 -0
  318. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_top.gif +0 -0
  319. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_txn.gif +0 -0
  320. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yes.gif +0 -0
  321. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/btmlpa/nbg_yesd.gif +0 -0
  322. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/btmlpa.gif +0 -0
  323. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_dn.gif +0 -0
  324. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/can_up.gif +0 -0
  325. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/conf.gif +0 -0
  326. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/iccemv.gif +0 -0
  327. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/images.lib +0 -0
  328. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/magcard.gif +0 -0
  329. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_dn.gif +0 -0
  330. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/no_up.gif +0 -0
  331. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_dn.gif +0 -0
  332. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/ok_up.gif +0 -0
  333. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/top.gif +0 -0
  334. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_dn.gif +0 -0
  335. data/app_generators/rtml/templates/rtml/public/images/rtml/oe/examples/yes_up.gif +0 -0
  336. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_color.css +37 -0
  337. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/beryl_mono.css +17 -0
  338. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/charts.css +0 -0
  339. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i5100.css +12 -0
  340. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/i8550.css +37 -0
  341. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/btmlpa/receipt.css +4 -0
  342. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i5100.css +12 -0
  343. data/app_generators/rtml/templates/rtml/public/stylesheets/rtml/oe/examples/i8550.css +37 -0
  344. data/app_generators/rtml/templates/rtml/reporting/110409 +227 -0
  345. data/app_generators/rtml/templates/rtml/reporting/linecount.rb +42 -0
  346. data/app_generators/rtml/templates/rtml/rules/predefined_tml_variables.rb +63 -0
  347. data/app_generators/rtml/templates/rtml/rules/tml_document_structure.rb +84 -0
  348. data/app_generators/rtml/templates/rtml/rules/varns/audio.rb +30 -0
  349. data/app_generators/rtml/templates/rtml/rules/varns/card.rb +17 -0
  350. data/app_generators/rtml/templates/rtml/rules/varns/card/emv.rb +31 -0
  351. data/app_generators/rtml/templates/rtml/rules/varns/card/mag.rb +8 -0
  352. data/app_generators/rtml/templates/rtml/rules/varns/card/parser.rb +7 -0
  353. data/app_generators/rtml/templates/rtml/rules/varns/card/pin.rb +6 -0
  354. data/app_generators/rtml/templates/rtml/rules/varns/cfgm.rb +15 -0
  355. data/app_generators/rtml/templates/rtml/rules/varns/com.rb +9 -0
  356. data/app_generators/rtml/templates/rtml/rules/varns/err.rb +14 -0
  357. data/app_generators/rtml/templates/rtml/rules/varns/gma/event.rb +13 -0
  358. data/app_generators/rtml/templates/rtml/rules/varns/gprs.rb +8 -0
  359. data/app_generators/rtml/templates/rtml/rules/varns/imager.rb +8 -0
  360. data/app_generators/rtml/templates/rtml/rules/varns/ip.rb +15 -0
  361. data/app_generators/rtml/templates/rtml/rules/varns/oebr.rb +42 -0
  362. data/app_generators/rtml/templates/rtml/rules/varns/oebr/3rdparty.rb +7 -0
  363. data/app_generators/rtml/templates/rtml/rules/varns/oebr/backlight.rb +4 -0
  364. data/app_generators/rtml/templates/rtml/rules/varns/oebr/cache.rb +1 -0
  365. data/app_generators/rtml/templates/rtml/rules/varns/oebr/connect.rb +5 -0
  366. data/app_generators/rtml/templates/rtml/rules/varns/oebr/connection.rb +5 -0
  367. data/app_generators/rtml/templates/rtml/rules/varns/oebr/offline.rb +5 -0
  368. data/app_generators/rtml/templates/rtml/rules/varns/oegw.rb +12 -0
  369. data/app_generators/rtml/templates/rtml/rules/varns/payment.rb +21 -0
  370. data/app_generators/rtml/templates/rtml/rules/varns/ppp.rb +11 -0
  371. data/app_generators/rtml/templates/rtml/rules/varns/terminal.rb +29 -0
  372. data/app_generators/rtml/templates/rtml/tasks/rtml_tasks.rake +78 -0
  373. data/app_generators/rtml/templates/rtml/template.rb +64 -0
  374. data/app_generators/rtml/templates/rtml/test/core/element_test.rb +17 -0
  375. data/app_generators/rtml/templates/rtml/test/core/screen_test.rb +91 -0
  376. data/app_generators/rtml/templates/rtml/test/core/tml_document_test.rb +53 -0
  377. data/app_generators/rtml/templates/rtml/test/functional/beryl_controller_test.rb +13 -0
  378. data/app_generators/rtml/templates/rtml/test/functional/btmlpa_controller_test.rb +13 -0
  379. data/app_generators/rtml/templates/rtml/test/functional/magcard_demo_controller_test.rb +20 -0
  380. data/app_generators/rtml/templates/rtml/test/functional/rtml_app_controller_test.rb +9 -0
  381. data/app_generators/rtml/templates/rtml/test/functional/rtml_routing_test.rb +19 -0
  382. data/app_generators/rtml/templates/rtml/test/functional/tml_controller_params_test.rb +20 -0
  383. data/app_generators/rtml/templates/rtml/test/rtml_test_helper.rb +44 -0
  384. data/app_generators/rtml/templates/rtml/test/validation/predefined_variable_rule_parser_test.rb +11 -0
  385. data/app_generators/rtml/templates/rtml/uninstall.rb +1 -0
  386. data/app_generators/rtml/templates/rtml/update.rb +57 -0
  387. data/bin/rtml +36 -0
  388. data/lib/rtml.rb +4 -0
  389. data/script/console +10 -0
  390. data/script/destroy +14 -0
  391. data/script/generate +14 -0
  392. data/tasks/reglob.rake +28 -0
  393. data/test/test_generator_helper.rb +29 -0
  394. data/test/test_helper.rb +3 -0
  395. data/test/test_rtml.rb +11 -0
  396. data/test/test_rtml_generator.rb +43 -0
  397. metadata +516 -0
@@ -0,0 +1,79 @@
1
+ module Rtml::Core::TMLDocument::ScreenMethods
2
+ # Declares a new screen to be embedded within this document. The screen ID must
3
+ # be supplied, as well as a block to configure its contents.
4
+ # *other takes the place of options when the :next key is omitted. Example:
5
+ #
6
+ # screen :first, :second, :timeout => 2
7
+ #
8
+ # is equivalent to:
9
+ #
10
+ # screen :first, :next => :second, :timeout => 2
11
+ #
12
+ def screen(id, options = {}, *other, &blk)
13
+ scr = nil
14
+ index = -1
15
+
16
+ @screens.each_with_index { |s,i| index = i if s.id.to_s == id.to_s } if @screens
17
+
18
+ if index == -1 or block_given? then scr = Rtml::Core::Screen.new(action_view, id, self, &blk)
19
+ else scr = @screens[index]
20
+ end
21
+
22
+ scr.layout self.layout unless self.layout.nil? or not scr.layout.nil?
23
+
24
+ if options.kind_of? String or options.kind_of? Symbol
25
+ options = other.extract_options!.merge(:next_screen => options)
26
+ end
27
+
28
+ if options.kind_of? Hash then options.each { |n,v| scr.send(n, v) }
29
+ else raise ArgumentError.new("Invalid type for options in screen #{id}: Expected String, Symbol or Hash")
30
+ end
31
+
32
+ if index == -1 then @screens << scr if @screens
33
+ else
34
+ scr.next_screen(@screens[index].next_screen) unless scr.next_screen
35
+ @screens[index] = scr
36
+ end
37
+ scr
38
+ end
39
+
40
+ # Returns the screen with the specified ID, or nil if it cannot be found.
41
+ def find(id)
42
+ screens.find(id)
43
+ end
44
+
45
+ # Deletes and returns the screen with the specified ID from the list of screens.
46
+ # Alternatively, an actual Screen object may be supplied.
47
+ def remove_screen(id)
48
+ ret = nil
49
+ if id.kind_of? Rtml::Core::Screen
50
+ screens.delete((ret = id))
51
+ else
52
+ screens.delete((ret = screens.find(id)))
53
+ end
54
+ ret
55
+ end
56
+
57
+ alias delete_screen remove_screen
58
+
59
+ # Declares multiple screens to be embedded within this document. Takes an
60
+ # array of screen IDs, or an array of Hashes, in which case the keys are screen IDs
61
+ # and the values are either the "next" screen, or a set of options to be passed directly
62
+ # to that Screen's initializer. Also expects a block, which has an optional parameter
63
+ # (the screen itself). If the optional parameter is omitted, the screen's context is
64
+ # transferred to the supplied block.
65
+ #
66
+ # Alternatively, if no parameters are supplied, and a block is given, then a
67
+ # ScreenBuilderWidget will be constructed and the block will be passed to it.
68
+ def screens(list_of_screens = nil, &block)
69
+ return Rtml::Widgets::ScreenBuilderWidget.new(self, &block) if list_of_screens.nil? and block_given?
70
+ return @screens if list_of_screens.nil?
71
+ list_of_screens.each do |scrid|
72
+ id, options = ((scrid.is_a? Array) ? [scrid[0],scrid[1]] : [scrid,{}])
73
+ options = { :next => options } unless options.kind_of? Hash
74
+ if block.arity <= 0 then screen id, options do yield end
75
+ else screen id, options do |scr| yield scr end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,83 @@
1
+ module Rtml::Core::TMLDocument::VariableMethods
2
+ def self.included(base) #:nodoc:
3
+ base.send :attr_reader, :variables
4
+ base.send :attr_reader, :vardecs
5
+ end
6
+
7
+ # Returns an array of strings, containing the name of each variable used in this document
8
+ def variables_used
9
+ used = []
10
+ screens.each do |scr|
11
+ used.concat scr.variables_used
12
+ # variables.select { |var| not used.include? var }.each do |var|
13
+ # used << var if scr.uses_variable? var
14
+ # end
15
+ end
16
+ used
17
+ end
18
+
19
+ def self.variable_declarators(type, *method_names) #:nodoc:
20
+ method_names.each do |method_name|
21
+ module_eval <<-end_code
22
+ def #{method_name}(*var_names)
23
+ options = var_names.extract_options!
24
+ # If hash notation was used (:transid => -1, :currency_code => 'USD'),
25
+ # then extract_options! may have mistakenly placed it within the variable options.
26
+ # We need to manually put them back into the var_names array if that's the case.
27
+ var_names.concat((options.keys - Rtml::Core::Variable::VALID_OPTIONS).collect do |a|
28
+ { a => options.delete(a) }
29
+ end)
30
+ for var_name in var_names
31
+ if var_name.kind_of? Hash
32
+ var_hash = var_name
33
+ var_hash.each do |var_name,value|
34
+ var_options = (value.kind_of?(Hash) ? value : { :value => value })
35
+ variable variable_options(var_name, var_options).merge(:type => #{type.inspect})
36
+ end
37
+ elsif var_name.kind_of? Array
38
+ #{method_name} *var_name
39
+ else
40
+ variable variable_options(var_name, options).merge(:type => #{type.inspect})
41
+ end
42
+ end
43
+ end
44
+ end_code
45
+ end
46
+ end
47
+
48
+ # Declares a new variable to be used with this TML document.
49
+ def declare_variable(var)
50
+ register_variable var
51
+ @vardecs << var unless @vardecs.include? var
52
+ end
53
+
54
+ # Registers a variable for use with this document, even if it has not been declared.
55
+ # This is important for built-in TML variables.
56
+ def register_variable(var)
57
+ @variables << var unless @variables.include? var
58
+ end
59
+
60
+ variable_declarators :integer, :integer, :integers
61
+ variable_declarators :string, :string, :strings
62
+ variable_declarators :opaque, :opaque, :opaques
63
+ variable_declarators :date, :date, :dates
64
+
65
+ def variable_options(name, options = {}) #:nodoc:
66
+ options.merge(
67
+ case name
68
+ when Hash then { :name => name.keys[0], :value => name.values[0] }
69
+ else { :name => name }
70
+ end
71
+ )
72
+ end
73
+
74
+ # Declares an arbitrary variable to be used in this terminal application. Note that you must
75
+ # supply the :type option, which is one of :integer, :string, :opaque or :date. See the
76
+ # Rtml::Helpers::Variable class for more information on other options. Calls declare_variable.
77
+ def variable(options)
78
+ #options[:name] = qualified_variable_name options[:name]
79
+ var = Rtml::Core::Variable.new(action_view, options, self)
80
+ declare_variable var if self.respond_to? :declare_variable
81
+ var
82
+ end
83
+ end
@@ -0,0 +1,123 @@
1
+ module Rtml
2
+ module Core
3
+ #Defines a TML variable declaration (vardcl).
4
+ #User should not have to instantiate this object directly.
5
+ #See TMLDocument for details.
6
+ class Variable < Element
7
+ include Rtml::Common::Renderable
8
+ VALID_OPTIONS = [ :name, :type, :volatile, :value, :format, :perms ]
9
+
10
+ #Construct a new Variable using the specified ActionView and options hash.
11
+ #options[:type] defaults to :string if not found, and must be one of
12
+ # [:string, :integer, :date, :opaque]
13
+ #Other options include :name, :volatile, :value, :format, and :perms, and
14
+ #correlate to the TML definitions for these parameters.
15
+ def initialize(view = nil, options = { }, parent = nil)
16
+ raise "Must specify variable name" if options[:name].nil?
17
+ unless (o = (options.keys - VALID_OPTIONS)).empty?
18
+ raise "Invalid options specified for variable #{options[:name]}: #{o.join("; ")}"
19
+ end
20
+ options[:name] = options[:name].to_s if options[:name].kind_of? Symbol
21
+ options[:type] ||= :string
22
+ if options[:volatile].nil? or (options[:volatile] and options[:volatile].downcase != 'no')
23
+ options[:volatile] = 'yes'
24
+ else
25
+ options[:volatile] = 'no'
26
+ end
27
+
28
+ raise "Variable type must be one of :string, :integer, :date, :opaque" unless [:string,:integer,:date,:opaque].include? options[:type]
29
+ super view, options, VALID_OPTIONS, parent
30
+ end
31
+
32
+ VALID_OPTIONS.each do |method|
33
+ define_method method do
34
+ properties[method]
35
+ end
36
+ define_method "#{method}=" do |a|
37
+ properties[method] = a
38
+ end
39
+ end
40
+
41
+ # Constructs the TML declaration for this variable.
42
+ def to_tml; declaration; end
43
+ # Constructs the TML declaration for this variable.
44
+ def declaration; "<vardcl " + properties.to_s + " />"; end
45
+
46
+ # Constructs a TML getvar directive
47
+ def getvar(fmt = nil)
48
+ r = "<getvar name='#{name}' "
49
+ r.concat "format='#{fmt}'" if fmt
50
+ r.concat "/>"
51
+ end
52
+
53
+ # Constructs a TML variable assignment with the specified value.
54
+ # Examples:
55
+ # setvar [ "tmlvar:i", "+", "1" ]
56
+ # setvar "tmlvar:i"
57
+ # setvar :true
58
+ # setvar "tmlvar:i + 1"
59
+ # setvar :to => [ "tmlvar:i", "+", "1" ]
60
+ # setvar :to => "tmlvar:i + 1"
61
+ # setvar :to => true
62
+ # setvar :value => [ "tmlvar:i", "+", "1" ]
63
+ # setvar :value => "tmlvar:i + 1"
64
+ # setvar :value => "tmlvar:i"
65
+ def setvar(a, options = {})
66
+ valid_operators = [ '+', '-', 'plus', 'minus', 'item']
67
+ tml = "<setvar name='#{name}' "
68
+ lo = ''
69
+ ro = op = nil
70
+ case a.class.to_s
71
+ when 'Array'
72
+ raise "Variable#setvar(Array) should be given exactly 3 elements in [lo,op,ro] order." unless a.length == 3
73
+ (lo, op, ro) = a
74
+ when 'Hash'
75
+ a.merge! options
76
+ los = ros = ops = nil
77
+ lo = (a[:to] or a[:value])
78
+ return setvar(lo, a.merge(:to => nil, :value => nil)) if lo
79
+ a.keys.each { |key| (los = key) and break if [ :lo, :left, :left_operand, :left_op, :lop, :lft ].include? key }
80
+ a.keys.each { |key| (ros = key) and break if [ :ro, :right,:right_operand,:right_op,:rop, :rgt ].include? key }
81
+ a.keys.each { |key| (ops = key) and break if [ :op, :operation, :operator, :oper ].include? key }
82
+ raise "Variable#setvar(Hash) must include a :left_operand (:lo, :left, :left_opeand, :left_op, :lop, :rgt)" unless los
83
+ lo = a[los]
84
+ ro = a[ros]
85
+ op = a[ops]
86
+ options[:format] = (a[:format] or a[:fmt]) unless options[:format]
87
+ when 'String', 'Fixnum', 'Symbol'
88
+ ary = a.to_s.split(/[\s\n\t]+/m)
89
+ # ary = %W(#{a})
90
+ return setvar(ary) if ary.length == 3 and valid_operators.include? ary[1]
91
+ lo = a.to_s
92
+ else
93
+ raise "Variable#setvar(#{a.class}): Could not determine how to handle value of type #{a.class}"
94
+ end
95
+ # if not (op and ro) and (op or ro)
96
+ # raise "Variable#setvar: If either :op or :ro is specified, the other must also be supplied."
97
+ # end
98
+
99
+ case op.to_s
100
+ when '+','plus' then op = 'plus'
101
+ when '-','minus' then op = 'minus'
102
+ # else raise "Variable#setvar: Invalid operation '#{op}'. Specify plus or minus; shorthand '+' and '-' are allowed"
103
+ end unless op.nil?
104
+
105
+ case lo.to_s
106
+ when 'true' then lo = 'yes'
107
+ when 'false' then lo = 'no'
108
+ end
109
+
110
+ case ro.to_s
111
+ when 'true' then ro = 'yes'
112
+ when 'false' then ro = 'no'
113
+ end
114
+
115
+ tml.concat "lo=#{lo.to_s.inspect} "
116
+ tml.concat "op=#{op.to_s.inspect} " if op
117
+ tml.concat "ro=#{ro.to_s.inspect} " if ro
118
+ tml.concat "format=#{options[:format].to_s.inspect}" if options[:format]
119
+ tml.concat "/>"
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,59 @@
1
+ module Rtml
2
+ module Debug
3
+ # BrowserEmulator is a glorified Hash that stores faked request headers, similar
4
+ # in structure to the object returned by ActionController::Base#headers. The reason
5
+ # for this is so that a standard browser (Internet Explorer, Firefox, etc.) can be
6
+ # made to look like OpenEstate/Incendo terminal browsers which download TML. This
7
+ # creates a "state" object so that your RTML doesn't croak when it is referenced
8
+ # from within your browser.
9
+ #
10
+ # The reason this is useful is because it is often much easier to debug TML when you
11
+ # can simply view its XML structure in your browser -- and, of course, it makes
12
+ # Rails' error reporting much easier to follow, too.
13
+ class BrowserEmulator < HashWithIndifferentAccess
14
+ # Initialize this emulator from the actual headers sent by the browser.
15
+ def initialize(headers)
16
+ @defaults = { :debugger => true,
17
+ :datetime_start => Date.parse('2006/01/01'),
18
+ :os => '03.27',
19
+ :itid => '111111111',
20
+ :itsn => headers['HTTP_USER_AGENT'],
21
+ :itpn => 'I8550_BROWSER',
22
+ :model => 8550,
23
+ :datetime => Time.now,
24
+ :part_number => 'I8550_BROWSER' }
25
+
26
+ headers = headers.dup
27
+ # As of Rails 2.3.2 ActionController::Request inherits from Rack::Request, so all of the
28
+ # Rack stuff has to be removed by hand.
29
+ %W(action_controller. rack. HTTP_ REQUEST_ SERVER_
30
+ SCRIPT_ PATH_ REMOTE_ QUERY_ GATEWAY_).each do |i|
31
+ headers.keys.select { |j| j =~ /^#{Regexp.escape i}/ }.each { |key| headers.delete key }
32
+ end
33
+ super(headers)
34
+ self.defaults = @defaults
35
+ #@defaults.keys.each { |key| self[key.to_s.upcase] ||= self[key] }
36
+ end
37
+
38
+ def [](a) #:nodoc:
39
+ return super(a.to_s.downcase) if a.kind_of? String or a.kind_of? Symbol
40
+ super
41
+ end
42
+
43
+ def []=(a, b) #:nodoc:
44
+ return super(a.to_s.downcase, b) if a.kind_of? String or a.kind_of? Symbol
45
+ super
46
+ end
47
+
48
+ # Assigns default values to this object. If a value already exists for a given key,
49
+ # and it is not an empty string, then that key is ignored.
50
+ def defaults=(hash)
51
+ hash.each do |key,val|
52
+ # this includes empty strings, in the case of incomplete query strings
53
+ self[key] = val if self[key].blank?
54
+ end
55
+ self
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,7 @@
1
+ class Rtml::Debug::RtmlControllerTestCase < ActionController::TestCase
2
+ include Rtml::Helpers::TestHelpers
3
+
4
+ def document
5
+ (@controller ? @controller.rtml_document : nil)
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ class Rtml::Debug::RtmlCoreUnitTest < Rtml::Debug::RtmlControllerTestCase
2
+ def setup
3
+ @controller = Rtml::RtmlAppController.new
4
+ get :get_terminal_info, :format => :rtml
5
+ document.reset!
6
+ end
7
+
8
+ def teardown
9
+ assert_valid_tml(document.to_tml) if document
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ class Rtml::Debug::UnitTest < ActiveSupport::TestCase
2
+ include Rtml::Helpers::TestHelpers
3
+ end
@@ -0,0 +1,8 @@
1
+ module Rtml::Delegation
2
+ # controller methods
3
+ delegate :feature_config, :request, :response, :params, :state, :logger, :menu_item, :render, :to => :controller
4
+
5
+ # view methods
6
+ delegate :link_to, :link_to_if, :link_to_unless, :link_to_unless_current, :mail_to,
7
+ :url_for, :h, :to => :action_view
8
+ end
@@ -0,0 +1,12 @@
1
+ module Rtml
2
+ # Helper module defining some constants to help with documentation generation
3
+ # when the user runs rake doc:plugins:rtml.
4
+ module Doc
5
+ AccessorList = [ :property, :accessor, :accessor_alias ]
6
+ AccessorText = {
7
+ :property => 'property',
8
+ :accessor => 'accessors',
9
+ :accessor_alias => 'access name'
10
+ }
11
+ end
12
+ end
@@ -0,0 +1,75 @@
1
+ module Rtml
2
+ # The lowest level of RTML. \Element is extended by most base objects, such as
3
+ # TMLDocument, Screen and Display, but is not used or extended by Widgets.
4
+ # The \Element class is essentially an object representation of a generic
5
+ # \TML \element. It includes properties like id and class.
6
+ class Element
7
+ include Rtml::Delegation
8
+ include Rtml::Common::Renderable
9
+ include Rtml::Helpers::ViewHelpers::FormHelpers
10
+ include Rtml::Helpers::CoreHelpers::WidgetSupport
11
+ include Rtml::Helpers::CoreHelpers::YieldHelpers
12
+ include Rtml::Helpers::CoreHelpers::EventHelpers
13
+ include Rtml::Helpers::CoreHelpers::ActionViewWrapper
14
+ include Rtml::Helpers::TerminalHelpers
15
+
16
+ attr_reader :event_handler
17
+ # A Hash containing the properties for this Element.
18
+ attr_reader :properties
19
+ # A unique numeric ID for this element
20
+ attr_reader :element_id
21
+
22
+ # A reference to this element's parent element, or nil if there is none.
23
+ attr_reader :parent
24
+
25
+ @@id_tracker = 0
26
+
27
+ def initialize(view = nil, props = { }, valids = nil, parent = nil)
28
+ @element_id = (@@id_tracker += 1)
29
+ props ||= {}
30
+ @event_handler = Events::EventHandler.new
31
+ check_valid_properties props, valids unless valids.class != Array or props.class != Hash
32
+ @parent = parent
33
+ @root_element = parent.root_element if parent.respond_to? :root_element
34
+ if root_element.class.name != 'Rtml::Core::TMLDocument'
35
+ raise "Assertion error: Expected root_element of #{self.class} to be TMLDocument (found #{root_element.class})"
36
+ end
37
+ document.modify! if document
38
+ @properties = HashWithIndifferentAccess.new
39
+ @properties.merge! props if props.class == Hash
40
+ protect_all_instance_variables!
41
+ wrap_view(view)
42
+ end
43
+
44
+ def protect_all_instance_variables!
45
+ instance_variables.each { |v| protected_instance_variables << v unless protected_instance_variables.include? v }
46
+ end
47
+
48
+ def protected_instance_variables
49
+ @protected_instance_variables ||= ["@protected_instance_variables"]
50
+ end
51
+
52
+ def inspect
53
+ x = "#<#{self.class.name} "
54
+ x.concat "#{@properties.to_s} " unless @properties.empty?
55
+ x.concat "widgets=#{widgets.inspect}" if self.respond_to? :widgets
56
+ x.concat ">"
57
+ end
58
+
59
+ # Returns the value of the requested property for this element.
60
+ def [](a); @properties[a]; end
61
+
62
+ # Sets the value of the specified property for this element.
63
+ def []=(a,b); @properties[a] = b; end
64
+
65
+ def root_element; @root_element || self; end
66
+
67
+ private
68
+ def check_valid_properties(properties, valids)
69
+ properties.each do |n,v|
70
+ raise "Invalid property: #{n}" unless valids.include? n
71
+ end
72
+ true
73
+ end
74
+ end
75
+ end