card 1.104.2 → 1.105.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (398) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -6
  3. data/VERSION +1 -1
  4. data/config/environments/development.rb +1 -1
  5. data/config/environments/test.rb +1 -0
  6. data/config/initializers/01_core_extensions/object.rb +10 -0
  7. data/config/initializers/01_core_extensions/string.rb +9 -0
  8. data/config/initializers/core_extensions.rb +1 -0
  9. data/db/migrate/{20160122153608_new_indeces.rb → 20160122153608_new_indices.rb} +2 -2
  10. data/db/migrate/{20200805200729_add_unique_pair_indeces.rb → 20200805200729_add_unique_pair_indices.rb} +1 -1
  11. data/db/migrate/20221031182227_remove_referee_key_requirement.rb +11 -0
  12. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -9
  13. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +1 -38
  14. data/db/migrate_core_cards/20161103154836_update_keys.rb +1 -1
  15. data/db/migrate_core_cards/20180905061537_migrate_layouts.rb +1 -1
  16. data/db/migrate_core_cards/20190125125150_add_script_rules_card.rb +1 -1
  17. data/db/migrate_core_cards/20190320091257_upgrade_recaptcha_to_v3.rb +1 -1
  18. data/db/migrate_core_cards/20190502130029_add_shark_and_help_desk_role.rb +2 -20
  19. data/db/migrate_core_cards/20190528131330_enabled_roles.rb +0 -3
  20. data/db/migrate_core_cards/20190625153616_pointer_overhaul.rb +0 -2
  21. data/db/migrate_core_cards/20190718140126_add_guides.rb +1 -1
  22. data/db/migrate_core_cards/20190822093633_move_help_text_to_code.rb +1 -1
  23. data/db/migrate_core_cards/20190829205148_remove_add_help.rb +1 -1
  24. data/db/migrate_core_cards/20190902193208_input_type.rb +1 -1
  25. data/db/migrate_core_cards/20190909104250_add_cardtype_input_types.rb +2 -2
  26. data/db/schema.rb +2 -2
  27. data/db/seeds.rb +14 -1
  28. data/db/version.txt +1 -1
  29. data/lib/card/auth/current.rb +4 -2
  30. data/lib/card/auth/permissions.rb +1 -1
  31. data/lib/card/auth/setup.rb +1 -1
  32. data/lib/card/auth/token.rb +1 -1
  33. data/lib/card/cache/persistent.rb +4 -1
  34. data/lib/card/codename.rb +2 -6
  35. data/lib/card/content/all.rb +2 -2
  36. data/lib/card/content/clean.rb +1 -1
  37. data/lib/card/content/parser.rb +0 -2
  38. data/lib/card/content.rb +1 -8
  39. data/lib/card/director/all.rb +67 -0
  40. data/lib/card/director/card_class.rb +161 -2
  41. data/lib/card/director/{act_direction.rb → class_methods.rb} +13 -3
  42. data/lib/card/director/phases.rb +7 -4
  43. data/lib/card/director/run.rb +51 -50
  44. data/lib/card/director/stages.rb +18 -16
  45. data/lib/card/director/store.rb +1 -1
  46. data/lib/card/director.rb +6 -7
  47. data/lib/card/env/location.rb +1 -1
  48. data/lib/card/env/serializable.rb +2 -0
  49. data/lib/card/env/serialization.rb +2 -3
  50. data/lib/card/env.rb +2 -2
  51. data/lib/card/error.rb +9 -5
  52. data/lib/card/fetch/card_class.rb +19 -13
  53. data/lib/card/format/error.rb +6 -12
  54. data/lib/card/format/nest.rb +1 -1
  55. data/lib/card/format/wrapper.rb +1 -1
  56. data/lib/card/format.rb +4 -0
  57. data/lib/card/model/save_helper/save_arguments.rb +0 -44
  58. data/lib/card/model/save_helper/save_helper_helper.rb +0 -37
  59. data/lib/card/model/save_helper.rb +0 -82
  60. data/lib/card/name/all.rb +1 -4
  61. data/lib/card/name/card_class.rb +0 -2
  62. data/lib/card/name/name_variants.rb +4 -0
  63. data/lib/card/name.rb +3 -8
  64. data/lib/card/query/abstract_query/query_helper.rb +3 -5
  65. data/lib/card/query/abstract_query/tie.rb +1 -1
  66. data/lib/card/query/abstract_query.rb +36 -17
  67. data/lib/card/query/card_class.rb +36 -0
  68. data/lib/card/query/card_query/custom.rb +12 -0
  69. data/lib/card/query/card_query/interpretation.rb +1 -0
  70. data/lib/card/query/card_query/normalization.rb +11 -3
  71. data/lib/card/query/card_query/reference_attributes.rb +3 -2
  72. data/lib/card/query/card_query/sorting.rb +5 -4
  73. data/lib/card/query/card_query.rb +1 -0
  74. data/lib/card/query/sql_statement/order.rb +12 -10
  75. data/lib/card/query/sql_statement/where.rb +2 -2
  76. data/lib/card/query.rb +13 -6
  77. data/lib/card/reference/all.rb +10 -10
  78. data/lib/card/set/abstract.rb +1 -0
  79. data/lib/card/set/advanced_api.rb +1 -1
  80. data/lib/card/set/event/all.rb +9 -1
  81. data/lib/card/set/event/delayed_event.rb +4 -2
  82. data/lib/card/set/event/options.rb +1 -1
  83. data/lib/card/set/event/skip_and_trigger.rb +34 -10
  84. data/lib/card/set/format/abstract_format/haml_views.rb +3 -3
  85. data/lib/card/set/format/abstract_format/wrapper.rb +0 -1
  86. data/lib/card/set/format/abstract_format.rb +5 -4
  87. data/lib/card/set/format/haml_paths.rb +5 -21
  88. data/lib/card/set/format.rb +46 -20
  89. data/lib/card/set/helpers.rb +49 -36
  90. data/lib/card/set/inheritance.rb +4 -4
  91. data/lib/card/set/pattern/all.rb +1 -1
  92. data/lib/card/set/pattern/base.rb +1 -1
  93. data/lib/card/set/pattern/class_methods.rb +4 -4
  94. data/lib/card/set/registrar.rb +3 -5
  95. data/lib/card/set/required_field.rb +3 -2
  96. data/lib/card/set/trait.rb +1 -1
  97. data/lib/card/set/type.rb +1 -41
  98. data/lib/card/set.rb +67 -21
  99. data/lib/card/setting.rb +0 -1
  100. data/lib/card/subcards/all.rb +6 -8
  101. data/lib/card/subcards/args.rb +9 -9
  102. data/lib/card/view/cache/cache_action.rb +1 -1
  103. data/lib/card/view/options/visibility.rb +4 -0
  104. data/lib/card/view/options.rb +1 -0
  105. data/lib/card/view/permission.rb +12 -4
  106. data/lib/card/view.rb +4 -0
  107. data/lib/card.rb +48 -39
  108. data/lib/cardio/cli.rb +3 -1
  109. data/lib/cardio/command/application.rb +5 -0
  110. data/lib/cardio/{commands/command.rb → command/command_base.rb} +2 -2
  111. data/lib/cardio/{commands → command}/custom.rb +17 -13
  112. data/lib/cardio/{commands → command}/rake_command/parser.rb +3 -3
  113. data/lib/cardio/{commands → command}/rake_command.rb +5 -5
  114. data/lib/cardio/{commands → command}/rspec_command/parser.rb +9 -6
  115. data/lib/cardio/{commands → command}/rspec_command.rb +7 -9
  116. data/lib/cardio/command.rb +129 -0
  117. data/lib/cardio/commands.rb +17 -116
  118. data/lib/cardio/generators/deck_generator_loader.rb +1 -0
  119. data/lib/cardio/generators.rb +2 -2
  120. data/lib/cardio/migration.rb +3 -53
  121. data/lib/cardio/mod/class_methods.rb +28 -24
  122. data/lib/cardio/mod/dirs.rb +30 -23
  123. data/lib/cardio/mod/eat/edibles.rb +43 -16
  124. data/lib/cardio/mod/eat.rb +20 -14
  125. data/lib/cardio/mod/load_strategy/set_tmp_files.rb +1 -1
  126. data/lib/cardio/mod/load_strategy.rb +12 -2
  127. data/lib/cardio/mod/modfile_api.rb +18 -18
  128. data/lib/cardio/mod/{poop.rb → sow.rb} +25 -33
  129. data/lib/cardio/mod.rb +46 -73
  130. data/lib/cardio/railtie.rb +21 -58
  131. data/lib/cardio/schema.rb +2 -1
  132. data/lib/cardio/script_loader.rb +3 -1
  133. data/lib/cardio/seed.rb +101 -8
  134. data/lib/cardio/utils.rb +39 -1
  135. data/lib/generators/deck/deck_generator.rb +5 -2
  136. data/lib/generators/deck/templates/config/puma.rb +1 -1
  137. data/lib/generators/deck/templates/script/decko_rspec +1 -1
  138. data/lib/generators/deck/templates/simplecov.rb.erb +10 -8
  139. data/lib/generators/mod/USAGE +1 -1
  140. data/lib/generators/mod/mod_generator.rb +5 -5
  141. data/lib/generators/set/USAGE +2 -2
  142. data/mod/core/{locales → config/locales}/de.yml +4 -0
  143. data/mod/core/{locales → config/locales}/en.yml +13 -0
  144. data/mod/core/data/fixtures/real/card_actions.yml +78 -0
  145. data/{db/seed/new → mod/core/data/fixtures/real}/card_acts.yml +2 -2
  146. data/mod/core/data/fixtures/real/card_references.yml +8 -0
  147. data/mod/core/data/fixtures/real/cards.yml +135 -0
  148. data/mod/core/data/real.yml +79 -0
  149. data/mod/core/data/test/cardtype.yml +38 -0
  150. data/mod/core/data/test/sample.yml +50 -0
  151. data/mod/core/data/test/user.yml +41 -0
  152. data/mod/core/data/test.yml +79 -28
  153. data/{lib → mod/core/lib}/tasks/card/migrate.rake +4 -0
  154. data/{lib → mod/core/lib}/tasks/card/mod.rake +9 -5
  155. data/mod/core/lib/tasks/card/seed.rake +60 -0
  156. data/mod/core/lib/tasks/card.rake +119 -0
  157. data/mod/core/set/all/admin.rb +14 -0
  158. data/mod/core/set/all/codename.rb +4 -0
  159. data/mod/core/set/all/content.rb +8 -4
  160. data/mod/core/set/all/{abort.rb → result.rb} +11 -15
  161. data/mod/core/set/all/states.rb +21 -1
  162. data/mod/core/set/all/trash.rb +25 -73
  163. data/mod/core/set/all/type.rb +2 -2
  164. data/mod/core/set/all/utils.rb +3 -87
  165. data/mod/core/set/right/autoname.rb +2 -0
  166. data/mod/core/set/self/admin/warning_alert.haml +3 -0
  167. data/mod/core/set/self/admin.rb +173 -0
  168. data/mod/core/set/type/cardtype.rb +2 -0
  169. data/mod/core/set_pattern/02_all_plus.rb +1 -1
  170. data/mod/core/set_pattern/05_rstar.rb +1 -1
  171. data/mod/core/set_pattern/06_rule.rb +1 -1
  172. data/mod/core/set_pattern/07_right.rb +1 -1
  173. data/mod/core/set_pattern/08_type_plus_right.rb +1 -1
  174. data/mod/core/spec/set/all/assign_attributes_spec.rb +3 -3
  175. data/mod/core/spec/set/all/autoname_spec.rb +25 -0
  176. data/mod/core/spec/set/all/codename_spec.rb +1 -1
  177. data/mod/core/spec/set/all/name_events_spec.rb +43 -66
  178. data/mod/core/spec/set/all/trash_spec.rb +149 -68
  179. data/mod/{admin → core}/spec/set/self/admin_spec.rb +25 -22
  180. data/mod/core/spec/set/self/trash_spec.rb +5 -0
  181. metadata +88 -253
  182. data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +0 -18
  183. data/db/migrate_core_cards/20130419215612_import_help_text.rb +0 -13
  184. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +0 -100
  185. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +0 -11
  186. data/db/migrate_core_cards/20130927191728_account_events.rb +0 -20
  187. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +0 -9
  188. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -8
  189. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +0 -86
  190. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +0 -132
  191. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +0 -9
  192. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +0 -7
  193. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +0 -14
  194. data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +0 -15
  195. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +0 -10
  196. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +0 -26
  197. data/db/migrate_core_cards/20141230204340_uri_codename.rb +0 -13
  198. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +0 -76
  199. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +0 -41
  200. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +0 -36
  201. data/db/migrate_core_cards/20150331135745_new_card_menu.rb +0 -8
  202. data/db/migrate_core_cards/20150501010515_responsive_sidebar.rb +0 -11
  203. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +0 -24
  204. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +0 -18
  205. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +0 -18
  206. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +0 -12
  207. data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +0 -58
  208. data/db/migrate_core_cards/20150627205133_fix_script_bootstrap_card_type.rb +0 -7
  209. data/db/migrate_core_cards/20150702130543_remove_edit_toolbar_pinned.rb +0 -9
  210. data/db/migrate_core_cards/20150708224756_add_list_cards.rb +0 -29
  211. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +0 -15
  212. data/db/migrate_core_cards/20150910085603_remove_performance_log_card.rb +0 -10
  213. data/db/migrate_core_cards/20151120180631_add_token_expiration.rb +0 -7
  214. data/db/migrate_core_cards/20160801143221_change_bootstrap_card_type_to_scss.rb +0 -10
  215. data/db/migrate_core_cards/20160804112510_reorganize_scripts.rb +0 -27
  216. data/db/migrate_core_cards/20160908154210_add_trash_card.rb +0 -7
  217. data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +0 -17
  218. data/db/migrate_core_cards/20170209132834_email_test_context.rb +0 -49
  219. data/db/migrate_core_cards/20170314175313_add_notification_event_card.rb +0 -20
  220. data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +0 -20
  221. data/db/migrate_core_cards/20170608083819_add_full_width_layout_card.rb +0 -23
  222. data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +0 -8
  223. data/db/migrate_core_cards/20180423120222_add_mod_styles_card.rb +0 -20
  224. data/db/migrate_core_cards/20180508210903_add_json_type.rb +0 -10
  225. data/db/migrate_core_cards/20180515175726_add_codenames.rb +0 -8
  226. data/db/migrate_core_cards/20180712042655_head_rule.rb +0 -13
  227. data/db/migrate_core_cards/20181120200937_update_layout.rb +0 -7
  228. data/db/migrate_core_cards/20190204195039_add_rule_card.rb +0 -10
  229. data/db/migrate_core_cards/20190321085735_wagn_to_decko_logo.rb +0 -11
  230. data/db/migrate_core_cards/20190417142612_reorganize_scripts_2.rb +0 -17
  231. data/db/migrate_core_cards/20190424100531_update_credit_image.rb +0 -76
  232. data/db/migrate_core_cards/20190424101004_add_read_anyone_rules.rb +0 -13
  233. data/db/migrate_core_cards/20190503122739_update_pristine_data.rb +0 -18
  234. data/db/migrate_core_cards/20190605133556_tweak_config_cards.rb +0 -10
  235. data/db/migrate_core_cards/20190618110446_add_dropdown_divider.rb +0 -8
  236. data/db/migrate_core_cards/20190621143156_add_role_assign_permissions.rb +0 -9
  237. data/db/migrate_core_cards/20190710090209_homepage_tweaks.rb +0 -13
  238. data/db/migrate_core_cards/20190820155833_update_cardtype_type_structure.rb +0 -7
  239. data/db/migrate_core_cards/20190823220018_cleanup_for_decko_1_0.rb +0 -19
  240. data/db/migrate_core_cards/20190826132738_add_more_guides.rb +0 -7
  241. data/db/migrate_core_cards/20190829093961_cardtype_grouping.rb +0 -16
  242. data/db/migrate_core_cards/20190830131820_setting_settings_aside.rb +0 -17
  243. data/db/migrate_core_cards/20190902161223_add_style_media.rb +0 -7
  244. data/db/migrate_core_cards/20190918200115_ensure_description_card.rb +0 -13
  245. data/db/migrate_core_cards/20191008201046_fixture_fix.rb +0 -11
  246. data/db/migrate_core_cards/20191028135243_add_link_editor_to_tiny_mce_config.rb +0 -9
  247. data/db/migrate_core_cards/20191118145629_codename_fixes.rb +0 -5
  248. data/db/migrate_core_cards/20200821231558_add_nest_list_type.rb +0 -9
  249. data/db/migrate_core_cards/data/1.11_help_text.json +0 -410
  250. data/db/migrate_core_cards/data/1.12_stylesheets/classic_cards.scss +0 -104
  251. data/db/migrate_core_cards/data/1.12_stylesheets/common.scss +0 -228
  252. data/db/migrate_core_cards/data/1.12_stylesheets/right_sidebar.scss +0 -27
  253. data/db/migrate_core_cards/data/1.12_stylesheets/traditional.scss +0 -143
  254. data/db/migrate_core_cards/data/1.13_config_text.json +0 -32
  255. data/db/migrate_core_cards/data/1.14_config_descriptions_etc.json +0 -77
  256. data/db/migrate_core_cards/data/bootstrap_layout.json +0 -96
  257. data/db/migrate_core_cards/data/cards/Xaccount +0 -22
  258. data/db/migrate_core_cards/data/cards/Xaccount_setting-Xright-Xstructure +0 -12
  259. data/db/migrate_core_cards/data/cards/Xall-Xlayout +0 -1
  260. data/db/migrate_core_cards/data/cards/Xcredit +0 -2
  261. data/db/migrate_core_cards/data/cards/Xfooter +0 -3
  262. data/db/migrate_core_cards/data/cards/Xgetting_started +0 -31
  263. data/db/migrate_core_cards/data/cards/Xgetting_started-shark +0 -66
  264. data/db/migrate_core_cards/data/cards/Xgetting_started_link +0 -6
  265. data/db/migrate_core_cards/data/cards/Xheader +0 -19
  266. data/db/migrate_core_cards/data/cards/Xhome +0 -1
  267. data/db/migrate_core_cards/data/cards/Xlogo +0 -1
  268. data/db/migrate_core_cards/data/cards/Xmain_menu +0 -2
  269. data/db/migrate_core_cards/data/cards/Xrecaptcha_setting-Xself-Xstructure +0 -1
  270. data/db/migrate_core_cards/data/cards/Xsidebar +0 -7
  271. data/db/migrate_core_cards/data/cards/Xstructure-Xright-Xguide +0 -12
  272. data/db/migrate_core_cards/data/cards/Xtitle +0 -1
  273. data/db/migrate_core_cards/data/cards/administrator-dashboard +0 -23
  274. data/db/migrate_core_cards/data/cards/administrator-description +0 -1
  275. data/db/migrate_core_cards/data/cards/anyone_signed_in-dashboard +0 -0
  276. data/db/migrate_core_cards/data/cards/cardtype-Xtype-Xguide +0 -24
  277. data/db/migrate_core_cards/data/cards/cardtype-Xtype-Xstructure +0 -3
  278. data/db/migrate_core_cards/data/cards/default_layout +0 -6
  279. data/db/migrate_core_cards/data/cards/full_width_layout +0 -5
  280. data/db/migrate_core_cards/data/cards/help_desk-dashboard +0 -7
  281. data/db/migrate_core_cards/data/cards/help_desk-description +0 -1
  282. data/db/migrate_core_cards/data/cards/home +0 -2
  283. data/db/migrate_core_cards/data/cards/home-Xself-Xlayout +0 -1
  284. data/db/migrate_core_cards/data/cards/home-original +0 -22
  285. data/db/migrate_core_cards/data/cards/home_layout +0 -6
  286. data/db/migrate_core_cards/data/cards/left_sidebar_layout +0 -6
  287. data/db/migrate_core_cards/data/cards/menu +0 -1
  288. data/db/migrate_core_cards/data/cards/right_thin_sidebar_layout +0 -8
  289. data/db/migrate_core_cards/data/cards/role-Xtype-Xstructure +0 -2
  290. data/db/migrate_core_cards/data/cards/shark-dashboard +0 -19
  291. data/db/migrate_core_cards/data/cards/shark-description +0 -1
  292. data/db/migrate_core_cards/data/cards/shark_menu +0 -2
  293. data/db/migrate_core_cards/data/cards.yml +0 -138
  294. data/db/migrate_core_cards/data/decko_logo.svg +0 -1
  295. data/db/migrate_core_cards/data/mailer/follower_notification_email.html +0 -9
  296. data/db/migrate_core_cards/data/mailer/follower_notification_email.txt +0 -11
  297. data/db/migrate_core_cards/data/mailer/mail_config.json +0 -22
  298. data/db/migrate_core_cards/data/mailer/password_reset_email.html +0 -13
  299. data/db/migrate_core_cards/data/mailer/password_reset_email.txt +0 -11
  300. data/db/migrate_core_cards/data/mailer/signup_alert_email.html +0 -7
  301. data/db/migrate_core_cards/data/mailer/signup_alert_email.txt +0 -5
  302. data/db/migrate_core_cards/data/mailer/verification_email.html +0 -12
  303. data/db/migrate_core_cards/data/mailer/verification_email.txt +0 -9
  304. data/db/migrate_core_cards/data/skin_images.json +0 -91
  305. data/db/migrate_core_cards/data/themes/bootstrap_default/_bootswatch.scss +0 -0
  306. data/db/migrate_core_cards/data/themes/bootstrap_default/_variables.scss +0 -867
  307. data/db/migrate_core_cards/data/themes/cerulean/_bootswatch.scss +0 -125
  308. data/db/migrate_core_cards/data/themes/cerulean/_variables.scss +0 -861
  309. data/db/migrate_core_cards/data/themes/cosmo/_bootswatch.scss +0 -237
  310. data/db/migrate_core_cards/data/themes/cosmo/_variables.scss +0 -861
  311. data/db/migrate_core_cards/data/themes/cyborg/_bootswatch.scss +0 -210
  312. data/db/migrate_core_cards/data/themes/cyborg/_variables.scss +0 -861
  313. data/db/migrate_core_cards/data/themes/darkly/_bootswatch.scss +0 -330
  314. data/db/migrate_core_cards/data/themes/darkly/_variables.scss +0 -861
  315. data/db/migrate_core_cards/data/themes/flatly/_bootswatch.scss +0 -313
  316. data/db/migrate_core_cards/data/themes/flatly/_variables.scss +0 -861
  317. data/db/migrate_core_cards/data/themes/journal/_bootswatch.scss +0 -120
  318. data/db/migrate_core_cards/data/themes/journal/_variables.scss +0 -861
  319. data/db/migrate_core_cards/data/themes/lumen/_bootswatch.scss +0 -496
  320. data/db/migrate_core_cards/data/themes/lumen/_variables.scss +0 -861
  321. data/db/migrate_core_cards/data/themes/paper/_bootswatch.scss +0 -607
  322. data/db/migrate_core_cards/data/themes/paper/_variables.scss +0 -861
  323. data/db/migrate_core_cards/data/themes/readable/_bootswatch.scss +0 -174
  324. data/db/migrate_core_cards/data/themes/readable/_variables.scss +0 -861
  325. data/db/migrate_core_cards/data/themes/sandstone/_bootswatch.scss +0 -194
  326. data/db/migrate_core_cards/data/themes/sandstone/_variables.scss +0 -861
  327. data/db/migrate_core_cards/data/themes/simplex/_bootswatch.scss +0 -142
  328. data/db/migrate_core_cards/data/themes/simplex/_variables.scss +0 -861
  329. data/db/migrate_core_cards/data/themes/slate/_bootswatch.scss +0 -417
  330. data/db/migrate_core_cards/data/themes/slate/_variables.scss +0 -861
  331. data/db/migrate_core_cards/data/themes/spacelab/_bootswatch.scss +0 -137
  332. data/db/migrate_core_cards/data/themes/spacelab/_variables.scss +0 -861
  333. data/db/migrate_core_cards/data/themes/superhero/_bootswatch.scss +0 -332
  334. data/db/migrate_core_cards/data/themes/superhero/_variables.scss +0 -861
  335. data/db/migrate_core_cards/data/themes/united/_bootswatch.scss +0 -42
  336. data/db/migrate_core_cards/data/themes/united/_variables.scss +0 -861
  337. data/db/migrate_core_cards/data/themes/yeti/_bootswatch.scss +0 -437
  338. data/db/migrate_core_cards/data/themes/yeti/_variables.scss +0 -861
  339. data/db/seed/README.md +0 -2
  340. data/db/seed/new/card_actions.yml +0 -5913
  341. data/db/seed/new/card_references.yml +0 -6532
  342. data/db/seed/new/cards.yml +0 -14595
  343. data/db/seed/test/fixtures/card_actions.yml +0 -8153
  344. data/db/seed/test/fixtures/card_acts.yml +0 -1039
  345. data/db/seed/test/fixtures/card_changes.yml +0 -230
  346. data/db/seed/test/fixtures/card_references.yml +0 -8471
  347. data/db/seed/test/fixtures/cards.yml +0 -20171
  348. data/db/seed/test/fixtures/file1.txt +0 -1
  349. data/db/seed/test/fixtures/file2.txt +0 -1
  350. data/db/seed/test/fixtures/mao2.jpg +0 -0
  351. data/db/seed/test/fixtures/rails.gif +0 -0
  352. data/db/seed/test/fixtures/schema_migrations.yml +0 -67
  353. data/db/seed/test/fixtures/schema_migrations_core_cards.yml +0 -347
  354. data/db/seed/test/fixtures/schema_migrations_deck.yml +0 -1
  355. data/db/seed/test/fixtures/schema_migrations_deck_cards.yml +0 -5
  356. data/db/test_seed.rb +0 -322
  357. data/lib/card/content/truncate.rb +0 -67
  358. data/lib/card/director/card_methods.rb +0 -45
  359. data/lib/card/file_card_creator/abstract_file_card/migration_file.rb +0 -50
  360. data/lib/card/file_card_creator/abstract_file_card/ruby_file.rb +0 -30
  361. data/lib/card/file_card_creator/abstract_file_card/source_file.rb +0 -36
  362. data/lib/card/file_card_creator/abstract_file_card.rb +0 -44
  363. data/lib/card/file_card_creator/haml_card.rb +0 -42
  364. data/lib/card/file_card_creator/output_helper.rb +0 -53
  365. data/lib/card/file_card_creator/script_card.rb +0 -35
  366. data/lib/card/file_card_creator/style_card.rb +0 -25
  367. data/lib/card/file_card_creator.rb +0 -25
  368. data/lib/card/name/fields_and_traits.rb +0 -42
  369. data/lib/cardio/commands/application.rb +0 -10
  370. data/lib/cardio/migration/import/import_data/card_attributes.rb +0 -64
  371. data/lib/cardio/migration/import/import_data/card_content.rb +0 -30
  372. data/lib/cardio/migration/import/import_data.rb +0 -119
  373. data/lib/cardio/migration/import/merger.rb +0 -46
  374. data/lib/cardio/migration/import.rb +0 -125
  375. data/lib/tasks/card/create.rake +0 -81
  376. data/lib/tasks/card.rake +0 -65
  377. data/mod/admin/locales/de.yml +0 -4
  378. data/mod/admin/locales/en.yml +0 -4
  379. data/mod/admin/set/all/admin.rb +0 -16
  380. data/mod/admin/set/self/admin.rb +0 -144
  381. data/mod/admin/set/self/admin_info.rb +0 -40
  382. data/mod/admin/set/self/debugger.rb +0 -3
  383. data/mod/admin/spec/set/self/admin_info_spec.rb +0 -9
  384. data/mod/core/data/production.yml +0 -7
  385. data/mod/core/set/all/collection.rb +0 -53
  386. data/mod/core/spec/set/all/collection_spec.rb +0 -170
  387. data/mod/core/spec/set/all/utils_spec.rb +0 -5
  388. data/mod/standard/data/files/favicon/image-icon.png +0 -0
  389. data/mod/standard/data/files/favicon/image-large.png +0 -0
  390. data/mod/standard/data/files/favicon/image-medium.png +0 -0
  391. data/mod/standard/data/files/favicon/image-original.png +0 -0
  392. data/mod/standard/data/files/favicon/image-small.png +0 -0
  393. data/mod/standard/data/files/logo/image-original.svg +0 -1
  394. /data/{db/seed/new → mod/core/data/fixtures/real}/card_changes.yml +0 -0
  395. /data/{db/seed/new → mod/core/data/fixtures/real}/schema_migrations.yml +0 -0
  396. /data/{db/seed/new → mod/core/data/fixtures/real}/schema_migrations_core_cards.yml +0 -0
  397. /data/{db/seed/new → mod/core/data/fixtures/real}/schema_migrations_deck.yml +0 -0
  398. /data/{db/seed/new → mod/core/data/fixtures/real}/schema_migrations_deck_cards.yml +0 -0
data/db/test_seed.rb DELETED
@@ -1,322 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- require "timecop"
4
- require "active_support/core_ext/numeric/time"
5
-
6
- # noinspection RubyResolve
7
- class SharedData
8
- extend Card::Model::SaveHelper
9
-
10
- USERS = [
11
- "Joe Admin", "Joe User", "Joe Camel", "Sample User", "No count",
12
- "u1", "u2", "u3",
13
- "Big Brother", "Optic fan", "Sunglasses fan", "Narcissist"
14
- ].freeze
15
-
16
- CARDTYPE_COUNT = 44
17
-
18
- class << self
19
- def create_user name, args
20
- args[:subcards] = account_args args if args[:email]
21
-
22
- if name == "Joe Admin"
23
- super name, args
24
- else
25
- Card::Auth.with("joe_admin") { super name, args }
26
- end
27
- end
28
-
29
- def account_args hash
30
- { "+*account" => { "+*email" => hash.delete(:email),
31
- "+*password" => hash.delete(:password) || "joe_pass" } }
32
- end
33
-
34
- # noinspection RubyResolve
35
- def add_test_data
36
- Card::Cache.reset_all
37
- Card::Env.reset
38
- Card::Auth.as_bot
39
-
40
- user_and_role_cards
41
-
42
- # generic, shared attribute card
43
- ensure_card "color"
44
-
45
- create "signup alert email+*to", "signups@decko.org"
46
- # CREATE A CARD OF EACH TYPE
47
-
48
- no_samples = %w[user sign_up set number mirror_list mirrored_list file image
49
- customized_bootswatch_skin alias]
50
- Card::Auth.createable_types.each do |type|
51
- next if no_samples.include? type.to_name.key
52
-
53
- create type: type, name: "Sample #{type}"
54
- end
55
-
56
- %w[c1 c2 c3].each do |name|
57
- create name
58
- end
59
-
60
- create_layout_type "lay out", "Greatest {{_main|title: Callahan!; view: labeled}}"
61
- create_pointer "stacks", %w[horizontal vertical]
62
- create_pointer "stacks+*self+*layout", "lay out"
63
- create "horizontal"
64
- create_pointer "vertical"
65
-
66
- create_pointer "friends+*right+*default"
67
- create_search_type "friends+*right+*content options", '{"type":"User"}'
68
-
69
- create_pointer "joes"
70
- create "joes+*self+*input type", "filtered list"
71
- create "joes+*self+*content options", ["Joe Admin", "Joe User", "Joe Camel"]
72
-
73
- # cards for rename_test
74
- # FIXME: could probably refactor these..
75
- [
76
- ["Z", "I'm here to be referenced to"],
77
- ["A", "Alpha [[Z]]"],
78
- ["B", "Beta {{Z}}"],
79
- %w[T Theta],
80
- ["X", "[[A]] [[A+B]] [[T]]"],
81
- ["Y", "{{B}} {{A+B}} {{A}} {{T}}"],
82
- ["A+B", "AlphaBeta"],
83
- ["A+B+Y+Z", "more letters"],
84
- ["Link to unknown", "[[Mister X]]"]
85
- ].each do |name, content|
86
- create name, content
87
- end
88
-
89
- create "One+Two+Three"
90
- create "Four+One+Five"
91
- create "basicname", "basiccontent"
92
-
93
- cardtype_cards
94
-
95
- # for template stuff
96
- Card.create! type_id: Card::CardtypeID, name: "UserForm"
97
- create "UserForm+*type+*structure", "{{+name}} {{+age}} {{+description}}"
98
-
99
- Card::Auth.signin "joe_user"
100
- create "JoeLater", "test"
101
- create "JoeNow", "test"
102
-
103
- Card::Auth.signin Card::WagnBotID
104
-
105
- create_cardtype "Book"
106
- create "Book+*type+*structure", "by {{+author}}, design by {{+illustrator}}"
107
- create_book "Iliad"
108
-
109
- create_cardtype "Author"
110
- create_author "Darles Chickens"
111
- create_author "Stam Broker"
112
- create_book "Parry Hotter"
113
- create_book "50 grades of shy"
114
-
115
- ## --------- Fruit: creatable by anyone but not readable ---
116
- Card.create! type: "Cardtype", name: "Fruit"
117
- Card.create! name: "Fruit+*type+*create", type: "Pointer", content: "[[Anyone]]"
118
- Card.create! name: "Fruit+*type+*read", type: "Pointer",
119
- content: "[[Administrator]]"
120
-
121
- # codenames for card_accessor tests
122
- Card.create! name: "*write", codename: :write
123
-
124
- # -------- For toc testing: ------------
125
-
126
- create "OnneHeading", "<h1>This is one heading</h1>\r\n<p>and some text</p>"
127
- create "TwwoHeading", "<h1>One Heading</h1>\r\n<p>and some text</p>\r\n"\
128
- "<h2>And a Subheading</h2>\r\n<p>and more text</p>"
129
- create "ThreeHeading", "<h1>A Heading</h1>\r\n<p>and text</p>\r\n"\
130
- "<h2>And Subhead</h2>\r\n<p>text</p>\r\n"\
131
- "<h1>And another top Heading</h1>"
132
-
133
- # -------- For history testing: -----------
134
- first = create "First", "egg"
135
- first.update! content: "chicken"
136
- first.update! content: "chick"
137
-
138
- # -------- For rename testing: -----------
139
- [
140
- ["Blue", ""],
141
- ["blue includer 1", "{{Blue}}"],
142
- ["blue includer 2", "{{blue|closed;other:stuff}}"],
143
- ["blue linker 1", "[[Blue]]"],
144
- ["blue linker 2", "[[blue]]"]
145
- ].each do |name, content|
146
- create name, content
147
- end
148
- create_cardtype "self aware", "[[/new/{{_self|name}}|new]]"
149
-
150
- notification_cards
151
-
152
- create "42", TEXT
153
- create_pointer "items",
154
- content: ["Parry Hotter", "42", "Stam Broker", "First",
155
- "yeti skin+image", "*all+*script+*machine output"]
156
- end
157
-
158
- def user_and_role_cards
159
- # Card::Auth.instant_account_activation do
160
- create_user "Joe Admin", content: "I'm number one", email: "joe@admin.com"
161
- create_user "Joe User", content: "I'm number two", email: "joe@user.com"
162
- create_user "Joe Camel", content: "Mr. Buttz", email: "joe@camel.com"
163
-
164
- # data for testing users and account requests
165
- create_user "No Count", content: "I got no account"
166
- create_user "Sample User", email: "sample@user.com", password: "sample_pass"
167
- # end
168
-
169
- # noinspection RubyResolve
170
- Card["Joe Admin"].fetch(:roles, new: { type_code: "pointer" })
171
- .items = [Card::AdministratorID, Card::SharkID, Card::HelpDeskID]
172
-
173
- Card["Joe User"].fetch(:roles, new: { type_code: "pointer" })
174
- .items = [Card::SharkID]
175
-
176
- create_user "u1", email: "u1@user.com", password: "u1_pass"
177
- create_user "u2", email: "u2@user.com", password: "u2_pass"
178
- create_user "u3", email: "u3@user.com", password: "u3_pass"
179
-
180
- r1 = create_role "r1"
181
- r2 = create_role "r2"
182
- r3 = create_role "r3"
183
- r4 = create_role "r4"
184
-
185
- Card["u1"].fetch(:roles, new: { type_code: "pointer" }).items = [r1, r2, r3]
186
- Card["u2"].fetch(:roles, new: {}).items = [r1, r2, r4]
187
- Card["u3"].fetch(:roles, new: {}).items = [r1, r4, Card::AdministratorID]
188
- end
189
-
190
- def cardtype_cards
191
- # for cql & permissions
192
- %w[A+C A+D A+E C+A D+A F+A A+B+C].each { |name| create name }
193
- ("A".."F").each do |ch|
194
- create "Cardtype #{ch}", type_code: "cardtype",
195
- codename: "cardtype_#{ch.downcase}"
196
- end
197
- Card::Codename.reset_cache
198
-
199
- ("a".."f").each do |ch|
200
- create "type-#{ch}-card", type_code: "cardtype_#{ch}",
201
- content: "type_#{ch}_content"
202
- end
203
-
204
- create_pointer "Cardtype B+*type+*create", "[[r3]]"
205
- create_pointer "Cardtype B+*type+*update", "[[r1]]"
206
-
207
- ## --------- create templated permissions -------------
208
- create "Cardtype E+*type+*default"
209
- end
210
-
211
- def future_stamp
212
- Time.zone.local 2020, 1, 1, 0, 0, 0
213
- end
214
-
215
- def notification_cards
216
- Timecop.freeze(future_stamp - 1.day) do
217
- # fwiw Timecop is apparently limited by ruby Time object,
218
- # which goes only to 2037 and back to 1900 or so.
219
- # whereas DateTime can represent all dates.
220
-
221
- followers = {
222
- "John" => ["John Following", "All Eyes On Me"],
223
- "Sara" => ["Sara Following", "All Eyes On Me", "Optic+*type",
224
- "Google Glass"],
225
- "Big Brother" => ["All Eyes on Me", "Look at me+*self", "Optic+*type",
226
- "lens+*right", "Optic+tint+*type plus right",
227
- ["*all", "*created"], ["*all", "*edited"]],
228
- "Optic fan" => ["Optic+*type"],
229
- "Sunglasses fan" => ["Sunglasses"],
230
- "Narcissist" => [["*all", "*created"], ["*all", "*edited"]]
231
- }
232
-
233
- followers.each do |name, _follow|
234
- create_user name, email: "#{name.parameterize}@user.com",
235
- password: "#{name.parameterize}_pass"
236
- end
237
-
238
- create "All Eyes On Me"
239
- create "No One Sees Me"
240
- create "Look At Me"
241
- create_cardtype "Optic"
242
- create "Sara Following"
243
- create "John Following", "{{+her}}"
244
- create "John Following+her"
245
- magnifier = create "Magnifier+lens"
246
-
247
- Card::Auth.signin "Narcissist"
248
- magnifier.update! content: "zoom in"
249
- create_optic "Sunglasses", "{{+tint}}{{+lens}}"
250
-
251
- Card::Auth.signin "Optic fan"
252
- create_optic "Google glass", "{{+price}}"
253
-
254
- Card::Auth.signin Card::WagnBotID
255
- create "Google glass+*self+*follow_fields", ""
256
- create "Sunglasses+*self+*follow_fields",
257
- "[[#{:nests.cardname}]]\n[[_self+price]]\n[[_self+producer]]"
258
- create "Sunglasses+tint"
259
- create "Sunglasses+price"
260
-
261
- followers.each do |name, follow|
262
- user = Card[name]
263
- follow.each do |f|
264
- user.follow(*f)
265
- end
266
- end
267
- end
268
-
269
- # capitalized names so that they don't interfere with checks for the verbs
270
- create "Created card", content: "new content"
271
- update "Created card", name: "Updated card", content: "changed content",
272
- type: :pointer, skip: :validate_renaming
273
- create "Created card", content: "new content"
274
- card = create "Deleted card", content: "old content"
275
- card.delete
276
-
277
- Card::Auth.with "Joe User" do
278
- [
279
- ["card with fields", "field 1", "field 2"],
280
- ["card with fields and admin fields", "field 1", "admin field 1"],
281
- ["admin card with fields and admin fields", "field 1", "admin field 1"],
282
- ["admin card with admin fields", "admin field 1", "admin field 2"]
283
- ].each do |name, f1, f2|
284
- create name,
285
- content: "main content {{+#{f1}}} {{+#{f2}}}",
286
- subcards: { "+#{f1}" => "content of #{f1}",
287
- "+#{f2}" => "content of #{f2}" }
288
- end
289
- end
290
-
291
- Card::Auth.as_bot do
292
- [
293
- ["admin card with fields and admin fields", :self],
294
- ["admin card with admin fields", :self],
295
- ["admin field 1", :right],
296
- ["admin field 2", :right]
297
- ].each do |name, rule_set|
298
- create [name, rule_set, :read], type: "Pointer", content: "[[Administrator]]"
299
- end
300
- create ["field 1", :right, :read], type: "Pointer", content: "[[Anyone]]"
301
- end
302
- end
303
- end
304
-
305
- TEXT = <<~TXT.strip_heredoc.freeze
306
- Far out in the uncharted backwaters of the unfashionable end of
307
- the western spiral arm of the Galaxy lies a small unregarded
308
- yellow sun.
309
-
310
- Orbiting this at a distance of roughly ninety-two million miles
311
- is an utterly insignificant little blue green planet whose ape-
312
- descended life forms are so amazingly primitive that they still
313
- think digital watches are a pretty neat idea.
314
-
315
- This planet has - or rather had - a problem, which was this: most
316
- of the people living on it were unhappy for pretty much of the time.
317
- Many solutions were suggested for this problem, but most of these
318
- were largely concerned with the movements of small green pieces
319
- of paper, which is odd because on the whole it wasn't the small
320
- green pieces of paper that were unhappy.
321
- TXT
322
- end
@@ -1,67 +0,0 @@
1
- class Card
2
- class Content
3
- # tools for truncating content
4
- module Truncate
5
- ELLIPSES_HTML = '<span class="closed-content-ellipses">...</span>'.freeze
6
-
7
- def smart_truncate input, words=25
8
- return if input.nil?
9
-
10
- truncated, wordstring = truncate input, words
11
- # nuke partial tags at end of snippet
12
- wordstring.gsub!(/(<[^>]+)$/, "")
13
- wordstring = close_tags wordstring
14
- wordstring += ELLIPSES_HTML if truncated
15
- # wordstring += '...' if wordlist.length > l
16
- polish wordstring
17
- end
18
-
19
- private
20
-
21
- def truncate input, words
22
- wordlist = input.to_s.split
23
- l = words.to_i - 1
24
- l = 0 if l.negative?
25
- truncating = wordlist.length > l
26
- wordstring = truncating ? wordlist[0..l].join(" ") : input.to_s
27
- [truncating, wordstring]
28
- end
29
-
30
- def close_tags wordstring
31
- tags = find_tags wordstring
32
- tags.each { |t| wordstring += "</#{t}>" }
33
- wordstring
34
- end
35
-
36
- def polish wordstring
37
- wordstring.gsub! %r{</?br[\s/]*>}, " "
38
- # Also a hack -- get rid of <br>'s -- they make line view ugly.
39
- wordstring.gsub! %r{</?p[^>]*>}, " "
40
- ## Also a hack -- get rid of <br>'s -- they make line view ugly.
41
- wordstring
42
- end
43
-
44
- def find_tags wordstring
45
- tags = []
46
-
47
- # match tags with or without self closing (ie. <foo />)
48
- wordstring.scan(%r{<([^>\s/]+)[^>]*?>}).each do |t|
49
- tags.unshift(t[0])
50
- end
51
- # match tags with self closing and mark them as closed
52
- wordstring.scan(%r{<([^>\s/]+)[^>]*?/>}).each do |t|
53
- next unless (x = tags.index(t[0]))
54
-
55
- tags.slice!(x)
56
- end
57
- # match close tags
58
- wordstring.scan(%r{</([^>\s/]+)[^>]*?>}).each do |t|
59
- next unless (x = tags.rindex(t[0]))
60
-
61
- tags.slice!(x)
62
- end
63
- tags
64
- end
65
- end
66
- end
67
- end
@@ -1,45 +0,0 @@
1
- class Card
2
- class Director
3
- module CardMethods
4
- attr_writer :director
5
-
6
- delegate :validation_phase, :storage_phase, :integration_phase,
7
- :validation_phase_callback?, :integration_phase_callback?, to: :director
8
-
9
- def director
10
- @director ||= Director.fetch self
11
- end
12
-
13
- def prepare_for_phases
14
- reset_patterns
15
- include_set_modules
16
- end
17
-
18
- def identify_action
19
- @action =
20
- if trash && trash_changed?
21
- :delete
22
- elsif new_card?
23
- :create
24
- else
25
- :update
26
- end
27
- end
28
-
29
- def restore_changes_information
30
- # restores changes for integration phase
31
- # (rails cleared them in an after_create/after_update hook which is
32
- # executed before the integration phase)
33
- return unless saved_changes.present?
34
-
35
- @mutations_from_database = mutations_before_last_save
36
- end
37
-
38
- def clear_action_specific_attributes
39
- self.class.action_specific_attributes.each do |attr|
40
- instance_variable_set "@#{attr}", nil
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,50 +0,0 @@
1
- class Card
2
- class FileCardCreator
3
- class AbstractFileCard
4
- # Module that provides #create_migration_file method for classes that
5
- # inherit from AbstractFileCard.
6
- # It uses the decko generator to create the migration.
7
- module MigrationFile
8
- def create_migration_file
9
- puts "creating migration file...".yellow
10
- migration_out = `#{migrate_command}`
11
- return if migration_out.include?("conflict")
12
-
13
- migration_file_name = migration_out[/db.*/]
14
- write_at migration_file_name, 5, indented_migration_content # 5 is line no.
15
- end
16
-
17
- private
18
-
19
- def migrate_command
20
- cmd = "bundle exec decko generate card:migration add_#{@codename}"
21
- cmd += " --force" if @force
22
- cmd
23
- end
24
-
25
- def indented_migration_content
26
- migration_file_content.lines.map do |line|
27
- " " * 4 + line
28
- end.join
29
- end
30
-
31
- def migration_file_content
32
- indent = " " * category.to_s.size
33
- <<-RUBY.strip_heredoc
34
- add_#{category} "#{remove_prefix @name}",
35
- #{indent} type_id: #{type_id},
36
- #{indent} to: "#{rule_card_name}"
37
- RUBY
38
- end
39
-
40
- def remove_prefix name
41
- name.sub(/^(?:#{category}):?_?\s*/, "")
42
- end
43
-
44
- def type_id
45
- "Card::#{type_codename.to_s.camelcase}ID"
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,30 +0,0 @@
1
- class Card
2
- class FileCardCreator
3
- class AbstractFileCard
4
- # Module that provides #create_ruby_file method for a classes that
5
- # inherit from AbstractFileCard.
6
- # The default location for the ruby file is set/self.
7
- module RubyFile
8
- def create_ruby_file
9
- write_to_mod(ruby_file_dir, ruby_file_name) do |f|
10
- f.puts ruby_file_content
11
- end
12
- end
13
-
14
- private
15
-
16
- def ruby_file_dir
17
- File.join "set", "self"
18
- end
19
-
20
- def ruby_file_name
21
- "#{@codename}.rb"
22
- end
23
-
24
- def ruby_file_content
25
- "include_set Abstract::CodeFile"
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,36 +0,0 @@
1
- class Card
2
- class FileCardCreator
3
- class AbstractFileCard
4
- # Module that provides #create_source_file method for a classes that
5
- # inherit from AbstractFileCard
6
- module SourceFile
7
- def create_source_file
8
- write_to_mod source_file_dir, source_file_name do |f|
9
- f.puts source_file_content
10
- end
11
- end
12
-
13
- private
14
-
15
- def source_file_content
16
- card = Card.fetch(@name)
17
- if card
18
- card.content
19
- else
20
- color_puts "warning:", :yellow,
21
- "Card '#{@name}' doesn't exist. Creating empty source file ..."
22
- ""
23
- end
24
- end
25
-
26
- def source_file_name
27
- "#{@codename}.#{source_file_ext}"
28
- end
29
-
30
- def source_file_ext
31
- @type
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,44 +0,0 @@
1
- class Card
2
- class FileCardCreator
3
- # A template class for generating cards that are linked to source files.
4
- class AbstractFileCard
5
- include OutputHelper
6
- include SourceFile
7
- include MigrationFile
8
- include RubyFile
9
-
10
- class << self
11
- attr_reader :supported_types, :category
12
- attr_accessor :default_rule_name
13
-
14
- def valid_type? type
15
- supported_types.include? type.to_sym
16
- end
17
- end
18
-
19
- def initialize mod, name, type, codename: nil, force: false
20
- @mod = mod
21
- @type = type.to_sym
22
- @name = name
23
- @force = force
24
- @codename = codename || name.underscore.tr(" ", "_")
25
- end
26
-
27
- def create
28
- create_source_file
29
- create_ruby_file
30
- create_migration_file
31
- end
32
-
33
- def category
34
- self.class.category
35
- end
36
-
37
- private
38
-
39
- def rule_card_name
40
- self.class.default_rule_name
41
- end
42
- end
43
- end
44
- end
@@ -1,42 +0,0 @@
1
- require "html2haml"
2
-
3
- class Card
4
- class FileCardCreator
5
- # Convert a card with html db content to a card with hard-coded haml.
6
- # It generates three files:
7
- # 1. a migration file that creates a card with codename
8
- # 2. a haml file with the converted html
9
- # 3. a ruby file (=code rule)that ties the haml file to the card
10
- class HamlCard < AbstractFileCard
11
- @supported_types = %i[haml]
12
- @category = :haml
13
-
14
- private
15
-
16
- def type_codename
17
- @type_codename ||= :html
18
- end
19
-
20
- def source_file_dir
21
- File.join "template", "self"
22
- end
23
-
24
- def source_file_content
25
- html = super()
26
- Html2haml::HTML.new(html).render
27
- end
28
-
29
- def migration_file_content
30
- <<-RUBY.strip_heredoc
31
- ensure_card "#{@name}",
32
- type_id: #{type_id},
33
- codename: "#{@codename}"
34
- RUBY
35
- end
36
-
37
- def ruby_file_content
38
- "include_set Abstract::HamlFile"
39
- end
40
- end
41
- end
42
- end
@@ -1,53 +0,0 @@
1
- class Card
2
- class FileCardCreator
3
- # Helper methods to write to files and the console.
4
- module OutputHelper
5
- def write_to_mod rel_dir, filename, &block
6
- dir = File.join "mod", @mod, rel_dir
7
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
8
-
9
- path = File.join dir, filename
10
- log_file_action path do
11
- File.open(path, "w", &block)
12
- end
13
- end
14
-
15
- def log_file_action path, &block
16
- if File.exist?(path) && !@force
17
- log_file_exists path
18
- else
19
- execute_and_log_file_action path, &block
20
- end
21
- end
22
-
23
- def execute_and_log_file_action path
24
- status = File.exist?(path) ? "overridden" : "created"
25
- yield
26
- color_puts status, :green, path
27
- end
28
-
29
- def log_file_exists path
30
- color_puts "file exists (use 'force=true' to override)", :yellow, path
31
- end
32
-
33
- # insert content into a file at a given line number
34
- def write_at fname, at_line, sdat
35
- open(fname, "r+") do |f|
36
- (at_line - 1).times do # read up to the line you want to write after
37
- f.readline
38
- end
39
- pos = f.pos # save your position in the file
40
- rest = f.read # save the rest of the file
41
- f.seek pos # go back to the old position
42
- f.puts sdat # write new data & rest of file
43
- f.puts rest
44
- color_puts "created", :green, fname
45
- end
46
- end
47
-
48
- def color_puts colored_text, color, text=""
49
- puts "#{colored_text.send(color.to_s)} #{text}"
50
- end
51
- end
52
- end
53
- end