templet_rails 0.1.0 → 0.2.0

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 (276) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +334 -269
  4. data/Rakefile +21 -7
  5. data/app/assets/config/templet_rails_manifest.js +2 -0
  6. data/app/assets/javascripts/templet_rails/application.js +15 -0
  7. data/app/assets/stylesheets/templet_rails/application.css +15 -0
  8. data/app/controllers/templet/json_rendering_helpers.rb +12 -0
  9. data/app/controllers/templet/rendering_helpers.rb +53 -0
  10. data/app/controllers/templet/viewer_call_string.rb +144 -0
  11. data/app/controllers/templet/viewer_call_string_class.rb +65 -0
  12. data/app/controllers/templet/viewer_responders.rb +121 -0
  13. data/app/controllers/templet_rails/application_controller.rb +5 -0
  14. data/app/helpers/templet/constants.rb +54 -0
  15. data/app/helpers/templet/forms/bs_form.rb +73 -0
  16. data/app/helpers/templet/forms/bs_form_errors.rb +38 -0
  17. data/app/helpers/templet/forms/bs_form_field.rb +114 -0
  18. data/app/helpers/templet/forms/bs_form_group.rb +115 -0
  19. data/app/helpers/templet/layouts/html_rails.rb +36 -0
  20. data/app/helpers/templet/links.rb +28 -0
  21. data/app/helpers/templet/links/bs_btn_class.rb +61 -0
  22. data/app/helpers/templet/links/bs_link_set_base.rb +168 -0
  23. data/app/helpers/templet/links/bs_link_set_collection.rb +21 -0
  24. data/app/helpers/templet/links/bs_link_set_navigation.rb +62 -0
  25. data/app/helpers/templet/links/rest_link_procs.rb +163 -0
  26. data/app/helpers/templet/links/rest_link_procs_parent.rb +39 -0
  27. data/app/helpers/templet/links/rest_link_procs_sets.rb +30 -0
  28. data/app/helpers/templet/links/rest_link_text.rb +102 -0
  29. data/app/helpers/templet/links/rest_path.rb +90 -0
  30. data/app/helpers/templet/mixins.rb +9 -0
  31. data/app/helpers/templet/mixins/bs.rb +11 -0
  32. data/app/helpers/templet/mixins/bs/grid.rb +53 -0
  33. data/app/helpers/templet/mixins/bs/lists.rb +77 -0
  34. data/app/helpers/templet/mixins/field_procs.rb +140 -0
  35. data/app/helpers/templet/mixins/html_presenters.rb +82 -0
  36. data/app/helpers/templet/require_all.rb +45 -0
  37. data/app/helpers/templet/utils/html_search_form.rb +53 -0
  38. data/app/helpers/templet/utils/link_set_factory.rb +46 -0
  39. data/app/helpers/templet/utils/link_set_factory_wrapper.rb +53 -0
  40. data/app/helpers/templet/utils/list_model_parents.rb +27 -0
  41. data/app/helpers/templet/utils/navbar_form.rb +26 -0
  42. data/app/helpers/templet/utils/selected_wrapper.rb +40 -0
  43. data/app/helpers/templet/viewer.rb +11 -0
  44. data/app/helpers/templet/viewer/meta_model.rb +66 -0
  45. data/app/helpers/templet/viewer/meta_model_defaults.rb +56 -0
  46. data/app/helpers/templet/viewer/presenters.rb +44 -0
  47. data/app/helpers/templet/viewer/rest_actions.rb +24 -0
  48. data/app/helpers/templet/viewer_base.rb +111 -0
  49. data/app/helpers/templet/viewer_rest.rb +144 -0
  50. data/app/helpers/templet_helper.rb +10 -0
  51. data/app/helpers/templet_rails/application_helper.rb +4 -0
  52. data/app/jobs/templet_rails/application_job.rb +4 -0
  53. data/app/mailers/templet_rails/application_mailer.rb +6 -0
  54. data/app/models/templet_rails/application_record.rb +5 -0
  55. data/app/views/layouts/templet_rails/application.html.erb +16 -0
  56. data/config/routes.rb +2 -0
  57. data/lib/generators/templet/controller/controller_generator.rb +70 -68
  58. data/lib/generators/templet/core_install/USAGE +14 -0
  59. data/lib/generators/templet/core_install/core_install_generator.rb +77 -0
  60. data/lib/generators/templet/core_rspec/USAGE +5 -8
  61. data/lib/generators/templet/core_rspec/core_rspec_generator.rb +32 -47
  62. data/lib/generators/templet/destroy/USAGE +1 -1
  63. data/lib/generators/templet/destroy/destroy_generator.rb +87 -84
  64. data/lib/generators/templet/install/USAGE +16 -0
  65. data/lib/generators/templet/install/install_generator.rb +103 -0
  66. data/lib/generators/templet/routes/routes_generator.rb +43 -41
  67. data/lib/generators/templet/rspec/rspec_generator.rb +1 -0
  68. data/lib/generators/templet/scaffold/scaffold_generator.rb +66 -64
  69. data/lib/generators/templet/shared/core_helpers.rb +10 -0
  70. data/lib/generators/templet/shared/model_fields.rb +2 -2
  71. data/lib/generators/templet/templates/core/app/base_viewer.rb +1 -1
  72. data/lib/generators/templet/templates/core/app/{panel → layouts}/layout_base.rb +3 -3
  73. data/lib/generators/templet/templates/core/app/{panel → layouts}/layout_header.rb +3 -1
  74. data/lib/generators/templet/templates/core/app/{panel → layouts}/layout_header_sidebar.rb +2 -1
  75. data/lib/generators/templet/templates/core/app/{panel/nav.rb → layouts/navbar.rb} +2 -2
  76. data/lib/generators/templet/templates/core/app/layouts/navbar_args_option.rb +32 -0
  77. data/lib/generators/templet/templates/core/app/{link_sets/navbar.rb → layouts/navbar_links.rb} +2 -2
  78. data/lib/generators/templet/templates/core/app/{panel → layouts}/options_config.rb +3 -3
  79. data/lib/generators/templet/templates/core/app/layouts/panel/flash_messages.rb +35 -0
  80. data/lib/generators/templet/templates/core/app/layouts/panel/show_parents_option.rb +24 -0
  81. data/lib/generators/templet/templates/core/app/layouts/panel/sidebar_links_option.rb +26 -0
  82. data/lib/generators/templet/templates/core/spec/layouts/flash_messages_spec.rb +18 -0
  83. data/lib/generators/templet/templates/core/spec/layouts/navbar_spec.rb +19 -0
  84. data/lib/generators/templet/templates/core/spec/support/apis/api_helper.rb +2 -0
  85. data/lib/generators/templet/templates/core/spec/support/apis/shared_examples_a_json_controller.rb +1 -1
  86. data/lib/generators/templet/templates/core/spec/support/{viewer → shared}/partial_test_helpers.rb +0 -0
  87. data/lib/generators/templet/templates/core/templet/viewer_base.rb +3 -3
  88. data/lib/generators/templet/viewer/viewer_generator.rb +60 -58
  89. data/lib/tasks/templet_rails_tasks.rake +4 -0
  90. data/lib/templet_rails.rb +1 -1
  91. data/lib/templet_rails/engine.rb +5 -0
  92. data/lib/templet_rails/version.rb +1 -1
  93. data/spec/dummy/Rakefile +6 -0
  94. data/spec/dummy/app/assets/config/manifest.js +4 -0
  95. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  96. data/spec/dummy/app/assets/javascripts/cable.js +13 -0
  97. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  98. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  99. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  100. data/spec/dummy/app/controllers/answers_controller.rb +86 -0
  101. data/spec/dummy/app/controllers/application_controller.rb +2 -0
  102. data/spec/dummy/app/controllers/categories_controller.rb +80 -0
  103. data/spec/dummy/app/controllers/questions_controller.rb +86 -0
  104. data/spec/dummy/app/helpers/app.rb +4 -0
  105. data/spec/dummy/app/helpers/app/answer_viewer.rb +21 -0
  106. data/spec/dummy/app/helpers/app/base_viewer.rb +7 -0
  107. data/spec/dummy/app/helpers/app/category_viewer.rb +26 -0
  108. data/spec/dummy/app/helpers/app/layouts/layout_base.rb +40 -0
  109. data/spec/dummy/app/helpers/app/layouts/layout_header.rb +24 -0
  110. data/spec/dummy/app/helpers/app/layouts/layout_header_sidebar.rb +19 -0
  111. data/spec/dummy/app/helpers/app/layouts/navbar.rb +55 -0
  112. data/spec/dummy/app/helpers/app/layouts/navbar_args_option.rb +32 -0
  113. data/spec/dummy/app/helpers/app/layouts/navbar_links.rb +12 -0
  114. data/spec/dummy/app/helpers/app/layouts/options_config.rb +19 -0
  115. data/spec/dummy/app/helpers/app/layouts/panel/flash_messages.rb +35 -0
  116. data/spec/dummy/app/helpers/app/layouts/panel/show_parents_option.rb +24 -0
  117. data/spec/dummy/app/helpers/app/layouts/panel/sidebar_links_option.rb +26 -0
  118. data/spec/dummy/app/helpers/app/question_viewer.rb +26 -0
  119. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  120. data/spec/dummy/app/jobs/application_job.rb +2 -0
  121. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  122. data/spec/dummy/app/models/answer.rb +12 -0
  123. data/spec/dummy/app/models/application_record.rb +3 -0
  124. data/spec/dummy/app/models/category.rb +11 -0
  125. data/spec/dummy/app/models/question.rb +15 -0
  126. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  127. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  128. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  129. data/spec/dummy/bin/bundle +3 -0
  130. data/spec/dummy/bin/rails +4 -0
  131. data/spec/dummy/bin/rake +4 -0
  132. data/spec/dummy/bin/setup +36 -0
  133. data/spec/dummy/bin/update +31 -0
  134. data/spec/dummy/bin/yarn +11 -0
  135. data/spec/dummy/config.ru +5 -0
  136. data/spec/dummy/config/application.rb +30 -0
  137. data/spec/dummy/config/boot.rb +5 -0
  138. data/spec/dummy/config/cable.yml +10 -0
  139. data/spec/dummy/config/database.yml +25 -0
  140. data/spec/dummy/config/environment.rb +5 -0
  141. data/spec/dummy/config/environments/development.rb +61 -0
  142. data/spec/dummy/config/environments/production.rb +94 -0
  143. data/spec/dummy/config/environments/test.rb +46 -0
  144. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  145. data/spec/dummy/config/initializers/assets.rb +14 -0
  146. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  147. data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
  148. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  149. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  150. data/spec/dummy/config/initializers/inflections.rb +16 -0
  151. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  152. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  153. data/spec/dummy/config/locales/en.yml +33 -0
  154. data/spec/dummy/config/puma.rb +34 -0
  155. data/spec/dummy/config/routes.rb +9 -0
  156. data/spec/dummy/config/spring.rb +6 -0
  157. data/spec/dummy/config/storage.yml +34 -0
  158. data/spec/dummy/db/development.sqlite3 +0 -0
  159. data/spec/dummy/db/migrate/20190709192619_create_categories.rb +9 -0
  160. data/spec/dummy/db/migrate/20190709192656_create_questions.rb +12 -0
  161. data/spec/dummy/db/migrate/20190709192737_create_answers.rb +13 -0
  162. data/spec/dummy/db/schema.rb +42 -0
  163. data/spec/dummy/db/test.sqlite3 +0 -0
  164. data/spec/dummy/log/development.log +64 -0
  165. data/spec/dummy/log/test.log +40792 -0
  166. data/spec/dummy/package.json +5 -0
  167. data/spec/dummy/public/404.html +67 -0
  168. data/spec/dummy/public/422.html +67 -0
  169. data/spec/dummy/public/500.html +66 -0
  170. data/{lib/generators/templet/templates/core/controllers/.keep → spec/dummy/public/apple-touch-icon-precomposed.png} +0 -0
  171. data/spec/dummy/public/apple-touch-icon.png +0 -0
  172. data/spec/dummy/public/favicon.ico +0 -0
  173. data/spec/dummy/spec/apis/answers_controller_spec.rb +17 -0
  174. data/spec/dummy/spec/apis/categories_controller_spec.rb +13 -0
  175. data/spec/dummy/spec/apis/questions_controller_spec.rb +15 -0
  176. data/spec/dummy/spec/helpers/app/answer_viewer_spec.rb +18 -0
  177. data/spec/dummy/spec/helpers/app/category_viewer_spec.rb +14 -0
  178. data/spec/dummy/spec/helpers/app/layouts/flash_messages_spec.rb +18 -0
  179. data/spec/dummy/spec/helpers/app/layouts/navbar_spec.rb +19 -0
  180. data/spec/dummy/spec/helpers/app/question_viewer_spec.rb +16 -0
  181. data/spec/dummy/spec/support/apis/api_helper.rb +15 -0
  182. data/spec/dummy/spec/support/apis/shared_examples_a_json_controller.rb +196 -0
  183. data/spec/dummy/spec/support/templet/partial_test_helpers.rb +32 -0
  184. data/spec/dummy/spec/support/templet/shared_examples_a_viewer.rb +105 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-6/-6-48LISBeQVJvpEXNgFstDrCriEFNmvje6XhidzlV4.cache +1 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-D/-DLE9y_1ICajcEaHcprHYBO8vjXpHySH_56FSb0SLOs.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-Y/-YJ1ILDQvu3hOKkF0VR9K_z04e2-EVHglO0MAFS8gpQ.cache +1 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-_/-_7FgdEon9WttcnvoyQAysmonCHN7FxsrcuDa5OTUJQ.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0u/0u-iWymOJvpggI1uY7Na3322xwcjNY7egB-czjV96m4.cache +2 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0x/0xArd189AygdGItqWO0_5BfinFQjLZjwyVsAGWqOgKg.cache +1 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2S/2SfjLWkOp2BGM0OzwsshKpnXI8rlJFOV6ZJsIszRn6k.cache +1 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3h/3hFAACevvXtDja9zz3rMK6gA1MD1I7_puWyRRkV7sLk.cache +2 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4o/4oNwzIrltWrfajciBz7JHd5RT5_XVv04L6NdaBGN794.cache +3 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7F/7F3o6QQqoI0bDk6-A5qMN8LCZQALddlu23KiRWBxtWk.cache +0 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Af/AfFBDeKpi4wSUc7rcjxfjPbEgV6GOGXTjeZhHrfDX48.cache +0 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bf/BfD6ZVgFq-kWDMMVb2EE5ZAKgsgn1VUR9oVxD0hHVMI.cache +0 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bo/Bogjbc_D5J-6_m5KEgeXt_GHc-IbUt1_FDWP4PHV0P8.cache +1 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DF/DF3HgsSD9LO1Bz8d3GJi_G6wBExmsnBJ6b1pvZEGE7w.cache +1 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DO/DO8Gqh32jK2GrO9uIlH7qvDkelVw0VM8CTSOUj6iUEo.cache +1 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GC/GCNwk_ABiY0z51bz8iC8tqLLWKhQwxW4-JLNKv-SRe0.cache +1 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gl/Gls_Zud1kxq7p08FGBfzalbaLMlLBl28bOYebh7Ljrg.cache +0 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gm/GmHHk4YNC0G2V_5gQZp0U6mKFPxGSgL7fwWI3_fajrk.cache +1 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gr/GreB3WHN8MyWMDFGNyqJJcxGblgo-5XepsEHvdJSQGI.cache +1 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +2 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hd/HdvsElcHSt7aKjG9jocgIQJEvBjBbeSZ8HntI1pc38o.cache +1 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iv/IvR5RxSTQkxfGWSoy5S2s7wO5u5qwCJ5mNAhqNJtJDY.cache +0 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JS/JSYyQZJzLNqpmVR--ZDUW6PY7_HflyFFHDAOLenxlP4.cache +1 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jx/JxJXzSistcpH4S_9CbGx_wyjVTaE77ZDDfOc4uTfvdM.cache +0 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MH/MHCZUSVJq62YPmcVVkfjp2B5uH_nDL7snLl4yqvlSJY.cache +1 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MY/MY5theanttko1gCnW9vKb0Z1GkJn8Ofk149HwOt0UAM.cache +0 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mn/MnGg5XDll2jo-E_CTC1htiNc0hOY6z80_bwGCvpYTXk.cache +1 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nt/NtYu5CjAvU5ZHxSOn6Q4LPukD3hBE-3vYe30d_uSBzM.cache +1 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nu/NuIepb7qomZzBDAJMUROsshKo8TJxdmFR4yOe64W58w.cache +1 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R7/R7ngeIqpdwSWkbjbxxzh6B-KczkWMcxYMIkj5inxrV8.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S9/S9MhILnM64qd2M9Z92TrNMtw7VUWZxf3H367OO8rlhs.cache +2 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SI/SIZUy2mtjUm_G1YIulRCovzgkCwV1eoR2NLiYcsR1Ws.cache +0 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sl/SlECThrSAExfICiFGVi-zu240BVDaUldaRs4qcj354U.cache +0 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/St/St6dTA4niiCDLnnArKZV38uZNFf6MbEZ_jHGC-Upft0.cache +0 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T6/T6p-BnPmMCmpJdaqrjWmLMsBW8SNJpSW6w-Azc3XGVk.cache +1 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vs/VsZPCEai1GtOT-vHjxMS8kAP9ASG5i_2O_EP76uI7Qs.cache +0 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vv/Vv6dack32HV3tIZ_6F4BF8Mrrnb7wZEG4VlEKumQ6L0.cache +2 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wp/WpV6mJwJX9dwIFJGLoJoa-gXNe1-ZHusE9SwvnWysa8.cache +0 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wy/Wya0wl0Q2nXYb5-bC5Fbo0sDZfKb3415AjtSjld7fQI.cache +1 -0
  224. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b7/b7j7TIOE1nnqvMku0QePWFrwCkaKkNpxkiWST6PAplo.cache +1 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ck/ckDOh-FroVE8r1fwUNWmnRconIREuVdmkZEFkaP9KfU.cache +1 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eN/eNQPQP-9gB3xzxJBsG7soV6Ie0YZ3gxIS97PgYtZVT8.cache +0 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gb/gbUMPMF8S0OQVsFHyAjHpHVEg-3iZzTVIQZDmfq-ycE.cache +1 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/if/ifyb5SlIS8vkACz_6P0uTOGijMB4C5TyFWmrMq3DYIg.cache +2 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jg/jg-s5YLdnojCtHqzfDTsvcy6UHewDRl1X09qlGyvyag.cache +1 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ko/koPyQus8Oqrx18bnLj-5nJrKvFf6FDDQbv2qEa7Bl7M.cache +0 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lG/lGRRazgrFErFx1PkfDlca6r-0MGQR40i0tq0Wgm2FNU.cache +1 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lS/lStvx9Beg2l4s8L-QdTSKuc5_qQPQAZPnIcRI7JkpPE.cache +2 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lZ/lZIacHrJV5bDohEHsVOXDGIDrUH2h4YvwV9g-MWmh3k.cache +3 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lq/lqM4-wfprvp5FEBp1pSm88Jwx-Vb2oJab2rjLtUcIyM.cache +1 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +2 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +2 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ps/psGFyjvQcs8JpIV8BDeCqQfHaLYgIgSAi86n4RrFpFs.cache +1 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1IIabhuPhgB3n8V3ZMRN0SqIsXJ8bH0ABTRzHTG1SU.cache +2 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vt/vtskp0QTt72oDQNM6mYZ8pCclh2HICHeYZ1QtDvC5xo.cache +1 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/win_v0ZNu-l7AoRx8w3ls1xcy0mUExLBVMCSr5oaJFc.cache +2 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yo/yoggubxI12fIM1o5TtxUialrUN-LWOfRaV_tqc1HAC4.cache +0 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zH/zHnHpZP25wEHaF3mI_M9RGH1zeCApf6mwhLB3Lku1zs.cache +3 -0
  243. data/spec/dummy/tmp/development_secret.txt +1 -0
  244. data/spec/factories/answers.rb +10 -0
  245. data/spec/factories/categories.rb +5 -0
  246. data/spec/factories/questions.rb +8 -0
  247. data/spec/helpers/templet/forms/bs_form_errors_spec.rb +18 -0
  248. data/spec/helpers/templet/forms/bs_form_spec.rb +58 -0
  249. data/spec/helpers/templet/layout/html_rails_spec.rb +64 -0
  250. data/spec/helpers/templet/links/bs_link_set_collection_spec.rb +79 -0
  251. data/spec/helpers/templet/links/rest_link_procs_params_spec.rb +68 -0
  252. data/spec/helpers/templet/links/rest_link_procs_parents_spec.rb +78 -0
  253. data/spec/helpers/templet/links/rest_link_procs_spec.rb +140 -0
  254. data/spec/models/answer_spec.rb +9 -0
  255. data/spec/models/category_spec.rb +9 -0
  256. data/spec/models/question_spec.rb +9 -0
  257. data/spec/rails_helper.rb +61 -0
  258. data/spec/spec_helper.rb +108 -0
  259. data/spec/support/templet/model_parent_helpers.rb +36 -0
  260. data/spec/support/templet/partial_test_helpers.rb +32 -0
  261. data/spec/support/templet/rest_link_procs_assignments.rb +43 -0
  262. data/spec/support/templet/rest_link_procs_helpers.rb +15 -0
  263. metadata +470 -38
  264. data/.gitignore +0 -8
  265. data/.travis.yml +0 -5
  266. data/Gemfile +0 -6
  267. data/LICENSE.txt +0 -21
  268. data/bin/console +0 -14
  269. data/bin/setup +0 -8
  270. data/lib/generators/templet/core/USAGE +0 -23
  271. data/lib/generators/templet/core/core_generator.rb +0 -128
  272. data/lib/generators/templet/templates/core/app/panel/flash_messages.rb +0 -33
  273. data/lib/generators/templet/templates/core/app/panel/nav_args_option.rb +0 -30
  274. data/lib/generators/templet/templates/core/app/panel/show_parents_option.rb +0 -22
  275. data/lib/generators/templet/templates/core/app/panel/sidebar_links_option.rb +0 -24
  276. data/templet_rails.gemspec +0 -36
@@ -1,6 +1,6 @@
1
1
 
2
2
  module App
3
- module Panel
3
+ module Layouts
4
4
  # Renders a given sidebar
5
5
  class LayoutHeaderSidebar < LayoutHeader
6
6
  def call(action, **options)
@@ -12,6 +12,7 @@ module App
12
12
  main_cols => js_target_div(:inner, *yield(renderer))
13
13
  end
14
14
  end
15
+
15
16
  end
16
17
  end
17
18
  end
@@ -1,8 +1,8 @@
1
1
 
2
2
  module App
3
- module Panel
3
+ module Layouts
4
4
  # Renders a Bootstrap navbar, with a title and some links on right
5
- class Nav < Templet::Component::Partial
5
+ class Navbar < Templet::Component::Partial
6
6
  NAVBAR_CLASS = "navbar navbar-default"
7
7
  BUTTON_ID = "bs-navbar-collapse-1"
8
8
 
@@ -0,0 +1,32 @@
1
+
2
+ module App
3
+ module Layouts
4
+ #module Panel
5
+ module NavbarArgsOption
6
+ private
7
+
8
+ def panel_options(renderer=nil, **options)
9
+ super renderer, options.merge(nav_args: nav_args(renderer))
10
+ end
11
+
12
+ def nav_args(renderer)
13
+ return page_title, navbar_links(renderer)
14
+ end
15
+
16
+ def navbar_links(renderer)
17
+ Templet::Utils::LinkSetFactory
18
+ .new(renderer, action, navbar_links_class, navbar_links_options)
19
+ end
20
+
21
+ def navbar_links_class
22
+ App::Layouts::NavbarLinks
23
+ end
24
+
25
+ def navbar_links_options
26
+ { html_class: '', remote: nil, wrapper: :li }
27
+ end
28
+ end
29
+ #end
30
+ end
31
+ end
32
+
@@ -1,7 +1,7 @@
1
1
 
2
2
  module App
3
- module LinkSets
4
- class Navbar < Templet::Links::BsLinkSetCollection
3
+ module Layouts
4
+ class NavbarLinks < Templet::Links::BsLinkSetCollection
5
5
  def call(action=nil)
6
6
  super.tap do |links|
7
7
  end
@@ -1,8 +1,8 @@
1
1
 
2
2
  module App
3
- module Panel
3
+ module Layouts
4
4
  module OptionsConfig
5
- include Panel::NavArgsOption
5
+ include NavbarArgsOption
6
6
 
7
7
  include Panel::SidebarLinksOption
8
8
 
@@ -11,7 +11,7 @@ module App
11
11
  private
12
12
 
13
13
  def panel_class
14
- App::Panel::LayoutHeaderSidebar
14
+ App::Layouts::LayoutHeaderSidebar
15
15
  end
16
16
  end
17
17
  end
@@ -0,0 +1,35 @@
1
+
2
+ module App
3
+ module Layouts
4
+ module Panel
5
+ # Shows flash messages in a Bootstrap alert - inside a Bootstrap grid
6
+ class FlashMessages < Templet::Component::Partial
7
+ include Templet::Mixins::Bs::Grid
8
+
9
+ BUTTON_ATTS = { class: "close",
10
+ data_dismiss: "alert",
11
+ aria_hidden: "true" }
12
+
13
+ def call(**column_opts)
14
+ super() do
15
+ if flash.any?
16
+ in_rows renderer, **column_opts do
17
+ flash.map do |name, message|
18
+ if message.is_a?(String)
19
+ alert_name = name.to_s == 'notice' ? 'success' : 'danger'
20
+
21
+ div "alert alert-dismissible alert-#{alert_name}" do
22
+ [ button('&times;', BUTTON_ATTS),
23
+ div(message, id: "flash_#{name}") ]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,24 @@
1
+
2
+ module App
3
+ module Layouts
4
+ module Panel
5
+ module ShowParentsOption
6
+ private
7
+
8
+ def panel_options(renderer=nil, **options)
9
+ super renderer, options.merge(header_right: show_parents(renderer))
10
+ end
11
+
12
+ def show_parents(renderer)
13
+ if respond_to?(:parent) and parent
14
+ parent_list = Templet::Utils::ListModelParents.new
15
+ .in_html(parent, [*grand_parent])
16
+
17
+ in_html_list(renderer, parent_list, html_class: :stacked)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,26 @@
1
+
2
+ module App
3
+ module Layouts
4
+ module Panel
5
+ module SidebarLinksOption
6
+ private
7
+
8
+ def panel_options(renderer=nil, **options)
9
+ super renderer, options.merge(sidebar_cols: nil,
10
+ sidebar_content: sidebar_links(renderer))
11
+ end
12
+
13
+ def sidebar_links(renderer)
14
+ Templet::Utils::LinkSetFactoryWrapper
15
+ .new(renderer, action, sidebar_links_class)
16
+ #.(:toolbar, stacked: true)
17
+ end
18
+
19
+ def sidebar_links_class
20
+ Templet::Links::BsLinkSetNavigation
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,18 @@
1
+
2
+ require "rails_helper"
3
+
4
+ require 'app/layouts/panel/flash_messages'
5
+
6
+ RSpec.describe App::Layouts::Panel::FlashMessages, type: :helper do
7
+ include PartialTestHelpers
8
+
9
+ it "shows notice" do
10
+ html = partial(flash: {notice: 'Final'}).(cols: 9, offset: 2)
11
+
12
+ selector = 'div[class=row] div[id=flash_notice]'
13
+
14
+ notice = parse_html(selector, html: html).text
15
+
16
+ expect(notice).to eq("Final")
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+
2
+ require "rails_helper"
3
+
4
+ require 'app/layouts/navbar'
5
+
6
+ RSpec.describe App::Layouts::Navbar, type: :helper do
7
+ include PartialTestHelpers
8
+
9
+ it "includes title" do
10
+ title = parse_html('nav div a', render_args: ["Role", []]).text
11
+
12
+ expect(title).to eq("Role")
13
+ end
14
+
15
+ it '' do
16
+ #puts partial.inspect
17
+ #puts partial.call
18
+ end
19
+ end
@@ -1,4 +1,6 @@
1
1
 
2
+ require 'rack/test/methods'
3
+
2
4
  module ApiHelper
3
5
  include Rack::Test::Methods
4
6
 
@@ -63,7 +63,7 @@ shared_examples 'a json controller' do |actions|
63
63
  let(:model) { create model_singular, field_name => field_value }
64
64
 
65
65
  let(:models) do
66
- field_values.map {|name| create model_singular, field_name => name }
66
+ field_values.map {|value| create model_singular, field_name => value }
67
67
  end
68
68
 
69
69
  # Request parameters
@@ -76,7 +76,7 @@ module Templet
76
76
  end
77
77
 
78
78
  def page_title
79
- Rails.app_class.name.split(/::/).first
79
+ Rails.app_class.name.split(/::/).first.titlecase
80
80
  end
81
81
 
82
82
  def panel_class
@@ -101,10 +101,10 @@ module Templet
101
101
 
102
102
  def panel_title
103
103
  if controller
104
- controller.to_s.titleize
104
+ controller.to_s
105
105
  else
106
106
  self.class.name.sub('Viewer', '').split(/::/).last
107
- end
107
+ end.titleize
108
108
  end
109
109
  end
110
110
  end
@@ -2,85 +2,87 @@
2
2
  require_relative '../shared/child_option'
3
3
  require_relative '../shared/actions_option'
4
4
 
5
- class Templet::ViewerGenerator < Rails::Generators::NamedBase
6
- include Shared::ChildOption
7
- include Shared::ActionsOption
5
+ module Templet
6
+ class ViewerGenerator < Rails::Generators::NamedBase
7
+ include Shared::ChildOption
8
+ include Shared::ActionsOption
8
9
 
9
- source_root File.expand_path('./', __FILE__)
10
- desc
10
+ source_root File.expand_path('./', __FILE__)
11
+ desc
11
12
 
12
- def create_viewer_subclass
13
- create_file "app/helpers/app/#{file_path}_viewer.rb", class_definition
14
- end
13
+ def create_viewer_subclass
14
+ create_file "app/helpers/app/#{file_path}_viewer.rb", class_definition
15
+ end
15
16
 
16
- private
17
+ private
17
18
 
18
- def have_actions?
19
- actions
20
- end
19
+ def have_actions?
20
+ actions
21
+ end
21
22
 
22
- def index_controls_method
23
- return unless have_actions?
23
+ def index_controls_method
24
+ return unless have_actions?
24
25
 
25
- %Q[
26
- # For showing links to member actions (show edit destroy) in table rows
27
- def index_controls
28
- links = default_rest_link_procs.member_link_hash %i(#{member_actions})
26
+ %Q[
27
+ # For showing links to member actions (show edit destroy) in table rows
28
+ def index_controls
29
+ links = default_rest_link_procs.member_link_hash %i(#{member_actions})
29
30
 
30
- hash_field_name_by_proc_call_method_default.merge links
31
- end
31
+ hash_field_name_by_proc_call_method_default.merge links
32
+ end
32
33
  ]
33
- end
34
+ end
34
35
 
35
- def member_actions
36
- (%w(show edit delete destroy) & actions).map {|action| "_#{action}" }
37
- .join(' ')
38
- end
36
+ def member_actions
37
+ (%w(show edit delete destroy) & actions).map {|action| "_#{action}" }
38
+ .join(' ')
39
+ end
39
40
 
40
- def forward_method
41
- return unless child
41
+ def forward_method
42
+ return unless child
42
43
 
43
- %Q[
44
- # Used in button groups for links to a model's children
45
- def forward
46
- #{child? ? ' :' + child.pluralize : ''}
47
- end
44
+ %Q[
45
+ # Used in button groups for links to a model's children
46
+ def forward
47
+ #{child? ? ' :' + child.pluralize : ''}
48
+ end
48
49
  ]
49
- end
50
+ end
50
51
 
51
- def verify_rest_links_method
52
- return unless have_actions?
52
+ def verify_rest_links_method
53
+ return unless have_actions?
53
54
 
54
- %Q[
55
- # Checks whether a REST link is actually defined before displaying it
56
- def verify_rest_links?
57
- true
58
- end
55
+ %Q[
56
+ # Checks whether a REST link is actually defined before displaying it
57
+ def verify_rest_links?
58
+ true
59
+ end
59
60
  ]
60
- end
61
+ end
61
62
 
62
- def class_definition
63
- %Q[
63
+ def class_definition
64
+ %Q[
64
65
  module App
65
- class #{class_name}Viewer < BaseViewer
66
+ class #{class_name}Viewer < BaseViewer
66
67
  #{index_controls_method}
67
- private
68
+ private
68
69
  #{forward_method}
69
70
  #{verify_rest_links_method}
70
- # You can override the following methods:
71
- #
72
- # remote? For AJAX links and forms
73
- # form_height For the field height on the form (sm md lg)
74
- # forward For the model's principal has_many relationship
75
- # backward For the model's grand-parent
76
- # This can be overriden in the controller
77
- #
78
- # There are also a number of others, mostly to do with the layout
79
- #
80
- # For more info see: app/helpers/templet/viewer_base.rb
81
- # app/helpers/templet/viewer_rest.rb
82
- end
71
+ # You can override the following methods:
72
+ #
73
+ # remote? For AJAX links and forms
74
+ # form_height For the field height on the form (sm md lg)
75
+ # forward For the model's principal has_many relationship
76
+ # backward For the model's grand-parent
77
+ # This can be overriden in the controller
78
+ #
79
+ # There are also a number of others, mostly to do with the layout
80
+ #
81
+ # For more info see: app/helpers/templet/viewer_base.rb
82
+ # app/helpers/templet/viewer_rest.rb
83
+ end
83
84
  end
84
85
  ]
86
+ end
85
87
  end
86
88
  end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :templet_rails do
3
+ # # Task goes here
4
+ # end
data/lib/templet_rails.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "templet_rails/version"
1
+ require "templet_rails/engine"
2
2
 
3
3
  module TempletRails
4
4
  # Your code goes here...
@@ -0,0 +1,5 @@
1
+ module TempletRails
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace TempletRails
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module TempletRails
2
- VERSION = "0.1.0"
2
+ VERSION = '0.2.0'
3
3
  end
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks