card 1.17.4 → 1.18.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 (389) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +24 -25
  4. data/config/initializers/01_init_ruby_extensions.rb +0 -4
  5. data/config/initializers/inflections.rb +1 -1
  6. data/config/initializers/notification.rb +2 -2
  7. data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
  8. data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
  9. data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
  10. data/db/migrate/20130106052640_table_cleanup.rb +4 -4
  11. data/db/migrate/20130411210957_update_codenames.rb +2 -2
  12. data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
  13. data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
  14. data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
  15. data/db/migrate/20141216053032_better_index_names.rb +9 -9
  16. data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
  17. data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
  18. data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
  19. data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
  20. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
  21. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
  22. data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
  23. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
  24. data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
  25. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
  26. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
  27. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
  28. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
  29. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
  30. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
  31. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
  32. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
  33. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
  34. data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
  35. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
  36. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
  37. data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
  38. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
  39. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
  40. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
  41. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
  42. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
  43. data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
  44. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
  45. data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
  46. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
  47. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
  48. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
  49. data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
  50. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
  51. data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
  52. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
  53. data/db/schema.rb +92 -94
  54. data/db/seed/new/card_actions.yml +461 -469
  55. data/db/seed/new/card_acts.yml +154 -172
  56. data/db/seed/new/card_changes.yml +4076 -4031
  57. data/db/seed/new/card_references.yml +1584 -1927
  58. data/db/seed/new/cards.yml +2095 -2112
  59. data/db/seed/test/fixtures/card_actions.yml +1497 -1505
  60. data/db/seed/test/fixtures/card_acts.yml +454 -472
  61. data/db/seed/test/fixtures/card_changes.yml +7309 -7263
  62. data/db/seed/test/fixtures/card_references.yml +2263 -2613
  63. data/db/seed/test/fixtures/cards.yml +3298 -3316
  64. data/db/seed/test/seed.rb +3 -0
  65. data/lib/card.rb +17 -9
  66. data/lib/card/active_record_ext.rb +6 -8
  67. data/lib/card/active_record_helper.rb +42 -32
  68. data/lib/card/auth.rb +3 -3
  69. data/lib/card/cache.rb +4 -4
  70. data/lib/card/cache/persistent.rb +9 -5
  71. data/lib/card/cache/temporary.rb +5 -5
  72. data/lib/card/chunk.rb +1 -1
  73. data/lib/card/codename.rb +3 -2
  74. data/lib/card/content.rb +62 -57
  75. data/lib/card/core_ext.rb +20 -30
  76. data/lib/card/diff.rb +88 -76
  77. data/lib/card/director_register.rb +66 -0
  78. data/lib/card/env.rb +14 -17
  79. data/lib/card/exceptions.rb +7 -9
  80. data/lib/card/format.rb +18 -367
  81. data/lib/card/format/nest.rb +183 -0
  82. data/lib/card/format/permission.rb +63 -0
  83. data/lib/card/format/render.rb +140 -0
  84. data/lib/card/loader.rb +17 -26
  85. data/lib/card/location.rb +6 -6
  86. data/lib/card/mailer.rb +4 -7
  87. data/lib/card/migration.rb +1 -1
  88. data/lib/card/name.rb +3 -6
  89. data/lib/card/query.rb +8 -8
  90. data/lib/card/query/attributes.rb +6 -6
  91. data/lib/card/query/clause.rb +10 -10
  92. data/lib/card/query/join.rb +7 -9
  93. data/lib/card/query/reference.rb +17 -19
  94. data/lib/card/query/sql_statement.rb +2 -2
  95. data/lib/card/query/value.rb +15 -16
  96. data/lib/card/set.rb +106 -209
  97. data/lib/card/set/event.rb +126 -0
  98. data/lib/card/set_pattern.rb +42 -29
  99. data/lib/card/simplecov_helper.rb +19 -19
  100. data/lib/card/spec_helper.rb +40 -16
  101. data/lib/card/stage.rb +72 -0
  102. data/lib/card/stage_director.rb +231 -0
  103. data/lib/card/subcards.rb +56 -24
  104. data/lib/card/subdirector_array.rb +31 -0
  105. data/lib/card/success.rb +15 -18
  106. data/lib/card/version.rb +1 -2
  107. data/lib/card/view_cache.rb +4 -4
  108. data/lib/card/view_name.rb +10 -8
  109. data/lib/cardio.rb +1 -1
  110. data/lib/generators/card.rb +2 -4
  111. data/lib/generators/card/format/format_generator.rb +4 -4
  112. data/lib/generators/card/migration/migration_generator.rb +6 -6
  113. data/lib/generators/card/set/set_generator.rb +5 -6
  114. data/mod/01_core/chunk/include.rb +2 -1
  115. data/mod/01_core/chunk/link.rb +2 -2
  116. data/mod/01_core/chunk/literal.rb +6 -9
  117. data/mod/01_core/chunk/query_reference.rb +1 -1
  118. data/mod/01_core/chunk/reference.rb +2 -2
  119. data/mod/01_core/chunk/uri.rb +52 -63
  120. data/mod/01_core/format/html_format.rb +8 -12
  121. data/mod/01_core/format/text_format.rb +1 -1
  122. data/mod/01_core/set/all/actify.rb +96 -0
  123. data/mod/01_core/set/all/active_card.rb +7 -7
  124. data/mod/01_core/set/all/collection.rb +19 -20
  125. data/mod/01_core/set/all/content.rb +9 -7
  126. data/mod/01_core/set/all/erb.rb +5 -5
  127. data/mod/01_core/set/all/event.rb +60 -0
  128. data/mod/01_core/set/all/fetch.rb +13 -19
  129. data/mod/01_core/set/all/haml.rb +1 -1
  130. data/mod/01_core/set/all/initialize.rb +35 -41
  131. data/mod/01_core/set/all/location_history.rb +3 -5
  132. data/mod/01_core/set/all/name.rb +19 -68
  133. data/mod/01_core/set/all/name_validations.rb +56 -0
  134. data/mod/01_core/set/all/pattern.rb +2 -2
  135. data/mod/01_core/set/all/permissions.rb +14 -20
  136. data/mod/01_core/set/all/phases.rb +9 -200
  137. data/mod/01_core/set/all/references.rb +10 -10
  138. data/mod/01_core/set/all/rules.rb +3 -4
  139. data/mod/01_core/set/all/stages.rb +24 -0
  140. data/mod/01_core/set/all/states.rb +4 -4
  141. data/mod/01_core/set/all/subcards.rb +16 -26
  142. data/mod/01_core/set/all/templating.rb +1 -3
  143. data/mod/01_core/set/all/tracked_attributes.rb +47 -48
  144. data/mod/01_core/set/all/trash.rb +10 -10
  145. data/mod/01_core/set/all/type.rb +9 -8
  146. data/mod/01_core/set/all/utils.rb +10 -14
  147. data/mod/01_core/set/all/view_cache.rb +2 -2
  148. data/mod/01_core/set_pattern/01_all.rb +3 -3
  149. data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
  150. data/mod/01_core/set_pattern/03_type.rb +2 -2
  151. data/mod/01_core/set_pattern/04_star.rb +3 -3
  152. data/mod/01_core/set_pattern/05_rstar.rb +3 -3
  153. data/mod/01_core/set_pattern/06_right.rb +2 -2
  154. data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
  155. data/mod/01_core/set_pattern/08_self.rb +1 -1
  156. data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
  157. data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
  158. data/mod/01_core/spec/format/html_format_spec.rb +72 -57
  159. data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
  160. data/mod/01_core/spec/set/all/content_spec.rb +4 -4
  161. data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
  162. data/mod/01_core/spec/set/all/name_spec.rb +3 -4
  163. data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
  164. data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
  165. data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
  166. data/mod/01_core/spec/set/all/references_spec.rb +1 -1
  167. data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
  168. data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
  169. data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
  170. data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
  171. data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
  172. data/mod/01_core/spec/set/all/type_spec.rb +2 -5
  173. data/mod/01_history/lib/card/action.rb +8 -10
  174. data/mod/01_history/set/all/actions.rb +2 -4
  175. data/mod/01_history/set/all/content_history.rb +38 -32
  176. data/mod/01_history/set/all/history.rb +20 -17
  177. data/mod/02_basic_types/format/rss_format.rb +0 -1
  178. data/mod/02_basic_types/set/all/all_css.rb +9 -13
  179. data/mod/02_basic_types/set/all/all_csv.rb +14 -17
  180. data/mod/02_basic_types/set/all/all_js.rb +3 -4
  181. data/mod/02_basic_types/set/all/base.rb +2 -2
  182. data/mod/02_basic_types/set/all/file.rb +2 -5
  183. data/mod/02_basic_types/set/all/json.rb +19 -18
  184. data/mod/02_basic_types/set/all/rss.rb +3 -3
  185. data/mod/02_basic_types/set/all/text.rb +1 -3
  186. data/mod/02_basic_types/set/type/html.rb +4 -8
  187. data/mod/02_basic_types/set/type/plain_text.rb +2 -3
  188. data/mod/02_basic_types/set/type/pointer.rb +82 -92
  189. data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
  190. data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
  191. data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
  192. data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
  193. data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
  194. data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
  195. data/mod/03_machines/lib/card/machine.rb +95 -81
  196. data/mod/03_machines/lib/card/machine_input.rb +35 -34
  197. data/mod/03_machines/set/right/machine_input.rb +1 -1
  198. data/mod/03_machines/set/self/script_ace.rb +2 -3
  199. data/mod/03_machines/set/self/script_card_menu.rb +2 -3
  200. data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
  201. data/mod/03_machines/set/self/script_slot.rb +2 -2
  202. data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
  203. data/mod/03_machines/set/self/style_cards.rb +1 -1
  204. data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
  205. data/mod/03_machines/set/type/coffee_script.rb +9 -13
  206. data/mod/03_machines/set/type/css.rb +12 -13
  207. data/mod/03_machines/set/type/java_script.rb +6 -8
  208. data/mod/03_machines/set/type/scss.rb +4 -5
  209. data/mod/03_machines/set/type/skin.rb +3 -6
  210. data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
  211. data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
  212. data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
  213. data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
  214. data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
  215. data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
  216. data/mod/04_settings/lib/card/setting.rb +4 -4
  217. data/mod/04_settings/set/abstract/permission.rb +30 -37
  218. data/mod/04_settings/set/right/add_help.rb +3 -3
  219. data/mod/04_settings/set/right/script.rb +4 -5
  220. data/mod/04_settings/set/right/structure.rb +3 -4
  221. data/mod/04_settings/set/right/style.rb +3 -3
  222. data/mod/04_settings/set/self/add_help.rb +1 -1
  223. data/mod/04_settings/set/self/input.rb +1 -1
  224. data/mod/04_settings/set/self/on_create.rb +1 -1
  225. data/mod/04_settings/set/self/options.rb +1 -1
  226. data/mod/04_settings/set/self/options_label.rb +1 -1
  227. data/mod/04_settings/set/type/setting.rb +29 -44
  228. data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
  229. data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
  230. data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
  231. data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
  232. data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
  233. data/mod/05_email/format/email_html_format.rb +1 -1
  234. data/mod/05_email/format/email_text_format.rb +2 -2
  235. data/mod/05_email/lib/card/follow_option.rb +12 -15
  236. data/mod/05_email/set/all/email_html.rb +2 -3
  237. data/mod/05_email/set/all/email_text.rb +3 -3
  238. data/mod/05_email/set/all/follow.rb +14 -22
  239. data/mod/05_email/set/all/notify.rb +11 -11
  240. data/mod/05_email/set/all/observer.rb +7 -8
  241. data/mod/05_email/set/right/bcc.rb +4 -9
  242. data/mod/05_email/set/right/follow.rb +26 -39
  243. data/mod/05_email/set/right/follow_fields.rb +2 -2
  244. data/mod/05_email/set/right/followers.rb +3 -1
  245. data/mod/05_email/set/right/following.rb +13 -16
  246. data/mod/05_email/set/self/always.rb +1 -2
  247. data/mod/05_email/set/self/created.rb +4 -6
  248. data/mod/05_email/set/self/edited.rb +3 -7
  249. data/mod/05_email/set/self/follow_defaults.rb +11 -12
  250. data/mod/05_email/set/self/never.rb +2 -4
  251. data/mod/05_email/set/type/email_template.rb +40 -27
  252. data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
  253. data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
  254. data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
  255. data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
  256. data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
  257. data/mod/05_email/spec/set/right/following_spec.rb +1 -1
  258. data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
  259. data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
  260. data/mod/05_standard/lib/file_uploader.rb +8 -13
  261. data/mod/05_standard/lib/image_uploader.rb +8 -9
  262. data/mod/05_standard/set/abstract/attachment.rb +26 -43
  263. data/mod/05_standard/set/all/account.rb +2 -2
  264. data/mod/05_standard/set/all/comment.rb +11 -13
  265. data/mod/05_standard/set/all/error.rb +18 -18
  266. data/mod/05_standard/set/all/event_viz.rb +16 -29
  267. data/mod/05_standard/set/all/links.rb +35 -34
  268. data/mod/05_standard/set/all/list_changes.rb +10 -12
  269. data/mod/05_standard/set/all/rich_html/content.rb +13 -13
  270. data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
  271. data/mod/05_standard/set/all/rich_html/form.rb +22 -26
  272. data/mod/05_standard/set/all/rich_html/header.rb +18 -25
  273. data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
  274. data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
  275. data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
  276. data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
  277. data/mod/05_standard/set/right/account.rb +26 -14
  278. data/mod/05_standard/set/right/email.rb +2 -2
  279. data/mod/05_standard/set/right/password.rb +6 -5
  280. data/mod/05_standard/set/right/salt.rb +2 -2
  281. data/mod/05_standard/set/right/stats.rb +17 -20
  282. data/mod/05_standard/set/right/token.rb +1 -1
  283. data/mod/05_standard/set/right/when_created.rb +1 -1
  284. data/mod/05_standard/set/right/when_last_edited.rb +1 -1
  285. data/mod/05_standard/set/rstar/rules.rb +3 -3
  286. data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
  287. data/mod/05_standard/set/self/account_links.rb +21 -22
  288. data/mod/05_standard/set/self/admin_info.rb +5 -5
  289. data/mod/05_standard/set/self/alerts.rb +1 -1
  290. data/mod/05_standard/set/self/all.rb +1 -1
  291. data/mod/05_standard/set/self/foot.rb +1 -1
  292. data/mod/05_standard/set/self/head.rb +19 -22
  293. data/mod/05_standard/set/self/navbox.rb +3 -7
  294. data/mod/05_standard/set/self/now.rb +1 -1
  295. data/mod/05_standard/set/self/recent.rb +19 -25
  296. data/mod/05_standard/set/self/search.rb +2 -4
  297. data/mod/05_standard/set/self/signin.rb +6 -6
  298. data/mod/05_standard/set/self/stats.rb +31 -38
  299. data/mod/05_standard/set/self/version.rb +1 -2
  300. data/mod/05_standard/set/type/basic.rb +15 -17
  301. data/mod/05_standard/set/type/cardtype.rb +3 -3
  302. data/mod/05_standard/set/type/date.rb +1 -2
  303. data/mod/05_standard/set/type/file.rb +22 -33
  304. data/mod/05_standard/set/type/image.rb +30 -23
  305. data/mod/05_standard/set/type/layout_type.rb +4 -4
  306. data/mod/05_standard/set/type/list.rb +32 -38
  307. data/mod/05_standard/set/type/listed_by.rb +11 -13
  308. data/mod/05_standard/set/type/number.rb +5 -6
  309. data/mod/05_standard/set/type/phrase.rb +1 -1
  310. data/mod/05_standard/set/type/search_type.rb +25 -23
  311. data/mod/05_standard/set/type/session.rb +2 -3
  312. data/mod/05_standard/set/type/set.rb +46 -51
  313. data/mod/05_standard/set/type/signup.rb +18 -19
  314. data/mod/05_standard/set/type/toggle.rb +5 -5
  315. data/mod/05_standard/set/type/user.rb +6 -6
  316. data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
  317. data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
  318. data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
  319. data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
  320. data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
  321. data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
  322. data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
  323. data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
  324. data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
  325. data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
  326. data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
  327. data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
  328. data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
  329. data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
  330. data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
  331. data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
  332. data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
  333. data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
  334. data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
  335. data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
  336. data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
  337. data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
  338. data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
  339. data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
  340. data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
  341. data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
  342. data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
  343. data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
  344. data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
  345. data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
  346. data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
  347. data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
  348. data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
  349. data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
  350. data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
  351. data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
  352. data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
  353. data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
  354. data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
  355. data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
  356. data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
  357. data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
  358. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
  359. data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
  360. data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
  361. data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
  362. data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
  363. data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
  364. data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
  365. data/spec/lib/card/action_spec.rb +4 -4
  366. data/spec/lib/card/cache_spec.rb +3 -5
  367. data/spec/lib/card/chunk_spec.rb +6 -8
  368. data/spec/lib/card/codename_spec.rb +4 -6
  369. data/spec/lib/card/content_spec.rb +12 -17
  370. data/spec/lib/card/diff_spec.rb +59 -61
  371. data/spec/lib/card/format_spec.rb +55 -34
  372. data/spec/lib/card/loader_spec.rb +35 -37
  373. data/spec/lib/card/name_spec.rb +159 -145
  374. data/spec/lib/card/query_spec.rb +4 -4
  375. data/spec/lib/card/reference_spec.rb +24 -24
  376. data/spec/lib/card/set_pattern_spec.rb +3 -3
  377. data/spec/lib/card/stage_director_spec.rb +218 -0
  378. data/spec/lib/card/subcards_spec.rb +12 -16
  379. data/spec/lib/card/success_spec.rb +16 -18
  380. data/spec/lib/card/view_cache_spec.rb +1 -1
  381. data/spec/mailers/mailer_spec.rb +3 -5
  382. data/spec/models/card/cardtype_spec.rb +40 -51
  383. data/spec/models/card/create_spec.rb +58 -39
  384. data/spec/models/card/trash_spec.rb +23 -32
  385. data/spec/models/card/type_transition_spec.rb +41 -32
  386. data/spec/models/card/validation_spec.rb +13 -15
  387. data/spec/models/card_spec.rb +48 -59
  388. data/spec/spec_helper.rb +26 -31
  389. metadata +16 -2
@@ -1,5 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::User do
4
-
5
4
  end
@@ -1,12 +1,12 @@
1
1
  format :html do
2
- def button_tag content_or_options = nil, options = {}, &block
3
- bootstrapify_button( block_given? ? content_or_options : options )
2
+ def button_tag content_or_options=nil, options={}, &block
3
+ bootstrapify_button(block_given? ? content_or_options : options)
4
4
  super(content_or_options, options, &block)
5
5
  end
6
6
 
7
7
  def bootstrapify_button options
8
8
  situation = options.delete(:situation) || 'default'
9
- options[:class] = [ options[:class], 'btn', "btn-#{situation}" ].compact*' '
9
+ options[:class] = [options[:class], 'btn', "btn-#{situation}"].compact * ' '
10
10
  end
11
11
 
12
12
  def type_field args={}
@@ -21,15 +21,14 @@ format :html do
21
21
  options
22
22
  end
23
23
 
24
- FIELD_HELPERS = %w{hidden_field color_field date_field datetime_field datetime_local_field
25
- email_field month_field number_field password_field phone_field
26
- range_field search_field telephone_field text_area text_field time_field
27
- url_field week_field file_field}
28
-
24
+ FIELD_HELPERS = %w(hidden_field color_field date_field datetime_field datetime_local_field
25
+ email_field month_field number_field password_field phone_field
26
+ range_field search_field telephone_field text_area text_field time_field
27
+ url_field week_field file_field).freeze
29
28
 
30
29
  FIELD_HELPERS.each do |method_name|
31
- define_method(method_name) do |name, options = {}|
32
- form.send(method_name, name, bootstrap_options(options) )
30
+ define_method(method_name) do |name, options={}|
31
+ form.send(method_name, name, bootstrap_options(options))
33
32
  end
34
33
  end
35
34
  end
@@ -1,6 +1,6 @@
1
1
  format :html do
2
2
  def glyphicon icon_type, extra_class=''
3
- content_tag(:span, '', class: "glyphicon glyphicon-#{icon_type} #{extra_class}", 'aria-hidden'=>true)
3
+ content_tag(:span, '', class: "glyphicon glyphicon-#{icon_type} #{extra_class}", 'aria-hidden' => true)
4
4
  end
5
5
 
6
6
  def button_link link_text, target, html_args={}
@@ -11,40 +11,36 @@ format :html do
11
11
  end
12
12
 
13
13
  def dropdown_button name, opts={}
14
- %{
14
+ %(
15
15
  <div class="btn-group" role="group">
16
16
  <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" title="#{name}" aria-expanded="false" aria-haspopup="true">
17
17
  #{glyphicon opts[:icon] if opts[:icon]} #{name}
18
18
  <span class="caret"></span>
19
19
  </button>
20
- #{ dropdown_list yield, opts[:class], opts[:active] }
20
+ #{dropdown_list yield, opts[:class], opts[:active]}
21
21
  </div>
22
- }
22
+ )
23
23
  end
24
24
 
25
25
  def dropdown_list items, extra_css_class=nil, active=nil
26
26
  item_list =
27
27
  case items
28
28
  when Array
29
- items.map.with_index do |item,index|
30
- if item
31
- "<li #{'class=\'active\'' if index == active}>#{item}</li>"
32
- end
29
+ items.map.with_index do |item, index|
30
+ "<li #{'class=\'active\'' if index == active}>#{item}</li>" if item
33
31
  end.compact.join "\n"
34
32
  when Hash
35
- items.map do |key,item|
36
- if item
37
- "<li #{'class=\'active\'' if key == active}>#{item}</li>"
38
- end
33
+ items.map do |key, item|
34
+ "<li #{'class=\'active\'' if key == active}>#{item}</li>" if item
39
35
  end.compact.join "\n"
40
36
  else
41
37
  items
42
38
  end
43
- %{
39
+ %(
44
40
  <ul class="dropdown-menu #{extra_css_class}" role="menu">
45
41
  #{item_list}
46
42
  </ul>
47
- }
43
+ )
48
44
  end
49
45
 
50
46
  def separator
@@ -75,14 +71,14 @@ format :html do
75
71
  [
76
72
  navbar_header(id, header_opts.delete(:content), header_opts.reverse_merge(toggle: opts[:toggle])),
77
73
  (content_tag(:div, opts[:collapsed_content].html_safe, class: 'container-fluid') if opts[:collapsed_content]),
78
- content_tag(:div, output(yield).html_safe, class: "collapse navbar-collapse", id: "navbar-collapse-#{id}"),
74
+ content_tag(:div, output(yield).html_safe, class: 'collapse navbar-collapse', id: "navbar-collapse-#{id}")
79
75
  ]
80
76
  end
81
77
  end
82
78
 
83
79
  def navbar_header id, content='', opts={}
84
80
  brand = if opts[:brand]
85
- if opts[:brand].kind_of? String
81
+ if opts[:brand].is_a? String
86
82
  "<a class='navbar-brand' href='#'>#{opts[:brand]}</a>"
87
83
  else
88
84
  link = opts[:brand][:href] || '#'
@@ -99,17 +95,17 @@ format :html do
99
95
  end
100
96
 
101
97
  def navbar_toggle id, content=nil, css_class=''
102
- content ||= %{
98
+ content ||= %(
103
99
  <span class="icon-bar"></span>
104
100
  <span class="icon-bar"></span>
105
101
  <span class="icon-bar"></span>
106
- }
107
- %{
102
+ )
103
+ %(
108
104
  <button type="button" class="navbar-toggle collapsed #{css_class}" data-toggle="collapse" data-target="#navbar-collapse-#{id}">
109
105
  <span class="sr-only">Toggle navigation</span>
110
106
  #{content}
111
107
  </button>
112
- }
108
+ )
113
109
  end
114
110
 
115
111
  def split_button button, args={}
@@ -119,21 +115,21 @@ format :html do
119
115
  wrap_with :div, class: 'btn-group' do
120
116
  [
121
117
  button,
122
- button_tag(situation: args[:situation], class: 'dropdown-toggle', 'data-toggle'=>'dropdown', 'aria-haspopup'=>'true', 'aria-expanded'=>'false') do
123
- %{
118
+ button_tag(situation: args[:situation], class: 'dropdown-toggle', 'data-toggle' => 'dropdown', 'aria-haspopup' => 'true', 'aria-expanded' => 'false') do
119
+ %(
124
120
  <span class="caret"></span>
125
121
  <span class="sr-only">Toggle Dropdown</span>
126
- }
122
+ )
127
123
  end,
128
124
  dropdown_list(items, nil, args[:active_item])
129
125
  ]
130
126
  end
131
127
  end
132
128
 
133
- def list_tag content_or_options = nil, options = {}, &block
129
+ def list_tag content_or_options=nil, options={}, &_block
134
130
  options = content_or_options if block_given?
135
131
  content = block_given? ? yield : content_or_options
136
- content = [content] unless content.kind_of? Array
132
+ content = [content] unless content.is_a? Array
137
133
  item_options = options.delete(:items) || {}
138
134
  wrap_with :ul, options do
139
135
  content.map do |item|
@@ -141,5 +137,4 @@ format :html do
141
137
  end.join "\n"
142
138
  end
143
139
  end
144
-
145
- end
140
+ end
@@ -1,6 +1,5 @@
1
1
  format :html do
2
-
3
- def frame args={}, &block
2
+ def frame args={}, &_block
4
3
  args.reverse_merge!(
5
4
  panel_class: 'panel panel-default',
6
5
  header_class: 'panel-heading',
@@ -1,8 +1,6 @@
1
1
  format :html do
2
-
3
2
  view :closed do |args|
4
- args.merge! body_class: 'closed-content'
3
+ args[:body_class] = 'closed-content'
5
4
  super args
6
5
  end
7
-
8
6
  end
@@ -1,9 +1,9 @@
1
- view :raw do |args|
1
+ view :raw do |_args|
2
2
  File.read "#{Cardio.gem_root}/mod/06_bootstrap/lib/stylesheets/#{card.codename}.scss"
3
3
  end
4
4
 
5
5
  format :html do
6
- view :editor do |args|
6
+ view :editor do |_args|
7
7
  "Content is stored in file and can't be edited."
8
8
  end
9
9
  end
@@ -1,5 +1,5 @@
1
- view :raw do |args|
2
- [ "bootstrap.js", "bootstrap_modal_wagn.js" ].map do |name|
1
+ view :raw do |_args|
2
+ ['bootstrap.js', 'bootstrap_modal_wagn.js'].map do |name|
3
3
  File.read "#{Cardio.gem_root}/mod/06_bootstrap/lib/javascript/#{name}"
4
4
  end.join("\n")
5
5
  end
@@ -1,32 +1,32 @@
1
- view :raw do |args|
1
+ view :raw do |_args|
2
2
  bootstrap_path = "#{Cardio.gem_root}/mod/06_bootstrap/lib/stylesheets/bootstrap"
3
3
 
4
4
  # variables
5
5
  content = File.read("#{bootstrap_path}/_variables.scss")
6
- content += %{
6
+ content += %(
7
7
  $bootstrap-sass-asset-helper: false;
8
8
  $icon-font-path: "#{card_path 'assets/fonts/'}";
9
- }
9
+ )
10
10
  # mixins
11
11
  content += Dir.glob("#{bootstrap_path}/mixins/*.scss").map do |name|
12
- File.read name
13
- end.join("\n")
12
+ File.read name
13
+ end.join("\n")
14
14
  content += [
15
- # Reset and dependencies
16
- %w(normalize print glyphicons),
17
- # Core CSS
18
- %w(scaffolding type code grid tables forms buttons),
19
- # Components
20
- %w(component-animations dropdowns button-groups input-groups navs navbar breadcrumbs pagination pager labels badges jumbotron thumbnails alerts progress-bars media list-group panels responsive-embed wells close),
21
- # Components w/ JavaScript
22
- %w(modals tooltip popovers carousel),
23
- # Utility classes
24
- %w(utilities responsive-utilities)
25
- ].map do |names|
26
- names.map do |name|
27
- File.read File.join(bootstrap_path, "_#{name}.scss")
28
- end.join "\n"
15
+ # Reset and dependencies
16
+ %w(normalize print glyphicons),
17
+ # Core CSS
18
+ %w(scaffolding type code grid tables forms buttons),
19
+ # Components
20
+ %w(component-animations dropdowns button-groups input-groups navs navbar breadcrumbs pagination pager labels badges jumbotron thumbnails alerts progress-bars media list-group panels responsive-embed wells close),
21
+ # Components w/ JavaScript
22
+ %w(modals tooltip popovers carousel),
23
+ # Utility classes
24
+ %w(utilities responsive-utilities)
25
+ ].map do |names|
26
+ names.map do |name|
27
+ File.read File.join(bootstrap_path, "_#{name}.scss")
29
28
  end.join "\n"
29
+ end.join "\n"
30
30
 
31
31
  content
32
32
  end
@@ -1,7 +1,7 @@
1
- view :raw do |args|
1
+ view :raw do |_args|
2
2
  File.read "#{Cardio.gem_root}/mod/06_bootstrap/lib/stylesheets/smartmenu.css"
3
3
  end
4
4
 
5
- view :editor do |args|
5
+ view :editor do |_args|
6
6
  "Content is stored in file and can't be edited."
7
7
  end
@@ -1,7 +1,7 @@
1
- view :raw do |args|
1
+ view :raw do |_args|
2
2
  File.read "#{Cardio.gem_root}/mod/06_bootstrap/lib/javascript/smartmenu.js"
3
3
  end
4
4
 
5
- view :editor do |args|
5
+ view :editor do |_args|
6
6
  "Content is stored in file and can't be edited."
7
- end
7
+ end
@@ -1,13 +1,13 @@
1
1
  describe Card::Set::All::Bootstrap::Form do
2
2
  describe 'input' do
3
- it "has form-group css class" do
4
- assert_view_select render_editor('Phrase'), 'input[type="text"][class~="form-control"]'
3
+ it 'has form-group css class' do
4
+ assert_view_select render_editor('Phrase'), 'input[type="text"][class~="form-control"]'
5
5
  end
6
6
  end
7
-
7
+
8
8
  describe 'textarea' do
9
- it "has form-group css class" do
9
+ it 'has form-group css class' do
10
10
  assert_view_select render_editor('Plain Text'), 'textarea[class~="form-control"]'
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -4,11 +4,11 @@ describe Card::Action do
4
4
  describe '#delete_old_actions' do
5
5
  it 'puts all changes on one action' do
6
6
  a = Card['A']
7
- a.update_attributes!(name: "New A")
8
- a.update_attributes!(content: "New content")
7
+ a.update_attributes!(name: 'New A')
8
+ a.update_attributes!(content: 'New content')
9
9
  a.delete_old_actions
10
10
  expect(a.actions.count).to eq(1)
11
- expect(a.actions(true).last.new_values[:name]).to eq("New A")
11
+ expect(a.actions(true).last.new_values[:name]).to eq('New A')
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -35,7 +35,7 @@ describe Card::Cache do
35
35
  end
36
36
 
37
37
  it '#fetch' do
38
- block = Proc.new { 'hi' }
38
+ block = proc { 'hi' }
39
39
  expect(@hard).to receive(:fetch).with('prefix/foo', &block)
40
40
  @cache.fetch('foo', &block)
41
41
  end
@@ -57,7 +57,7 @@ describe Card::Cache do
57
57
  @hard = ActiveSupport::Cache::MemoryStore.new
58
58
  @cache = Card::Cache.new store: @hard, prefix: 'prefix'
59
59
  expect(@cache.hard.prefix).to eq('prefix/')
60
- @cache.write('foo','bar')
60
+ @cache.write('foo', 'bar')
61
61
  expect(@cache.read('foo')).to eq('bar')
62
62
 
63
63
  # reset
@@ -72,9 +72,7 @@ describe Card::Cache do
72
72
  describe 'with file store' do
73
73
  before do
74
74
  cache_path = "#{Wagn.root}/tmp/cache"
75
- unless File.directory?(cache_path)
76
- FileUtils.mkdir_p(cache_path)
77
- end
75
+ FileUtils.mkdir_p(cache_path) unless File.directory?(cache_path)
78
76
  @hard = ActiveSupport::Cache::FileStore.new cache_path
79
77
 
80
78
  @hard.clear
@@ -1,17 +1,15 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'card/chunk'
3
3
 
4
- describe Card::Chunk, "Chunk" do
5
- context "Class" do
6
- it "should populate prefix map on load" do
4
+ describe Card::Chunk, 'Chunk' do
5
+ context 'Class' do
6
+ it 'should populate prefix map on load' do
7
7
  expect(Card::Chunk.prefix_map.keys.size).to be > 0
8
8
  expect(Card::Chunk.prefix_map['{'][:class]).to eq(Card::Chunk::Include)
9
9
  end
10
-
11
- it "should find Chunk classes using matched prefix" do
10
+
11
+ it 'should find Chunk classes using matched prefix' do
12
12
  expect(Card::Chunk.find_class_by_prefix('{{')).to eq(Card::Chunk::Include)
13
13
  end
14
-
15
14
  end
16
-
17
- end
15
+ end
@@ -1,19 +1,18 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe Card::Codename, "Codename" do
4
-
3
+ describe Card::Codename, 'Codename' do
5
4
  before do
6
5
  @codename = :default
7
6
  end
8
7
 
9
- it "should be sane" do
10
- expect(Card[@codename].codename).to eq(@codename.to_s) #would prefer Symbol eventually
8
+ it 'should be sane' do
9
+ expect(Card[@codename].codename).to eq(@codename.to_s) # would prefer Symbol eventually
11
10
  card_id = Card::Codename[@codename]
12
11
  expect(card_id).to be_a_kind_of Integer
13
12
  expect(Card::Codename[card_id]).to eq(@codename)
14
13
  end
15
14
 
16
- it "should make cards indestructable" do
15
+ it 'should make cards indestructable' do
17
16
  Card::Auth.as_bot do
18
17
  card = Card[@codename]
19
18
  card.delete
@@ -21,5 +20,4 @@ describe Card::Codename, "Codename" do
21
20
  expect(Card[@codename]).to be
22
21
  end
23
22
  end
24
-
25
23
  end
@@ -145,12 +145,12 @@ EXAMPLES = {
145
145
  },
146
146
 
147
147
  single_nest: {
148
- content: '{{one inclusion|size;large}}',
148
+ content: '{{one nest|size;large}}',
149
149
  classes: [:Include]
150
150
  },
151
151
 
152
152
  css: {
153
- content: %~
153
+ content: %(
154
154
  /* body text */
155
155
  body {
156
156
  color: #444444;
@@ -177,29 +177,26 @@ EXAMPLES = {
177
177
  h2.page-header {
178
178
  color: #222299;
179
179
  }
180
- ~
180
+ )
181
181
  }
182
- }
182
+ }.freeze
183
183
 
184
184
  EXAMPLES.each_value do |val|
185
- if val[:classes]
186
- val[:classes] = val[:classes].map do |klass|
187
- Class === klass ? klass : Card::Chunk.const_get(klass)
188
- end
185
+ next unless val[:classes]
186
+ val[:classes] = val[:classes].map do |klass|
187
+ Class === klass ? klass : Card::Chunk.const_get(klass)
189
188
  end
190
189
  end
191
190
 
192
191
  describe Card::Content do
193
192
  context 'instance' do
194
193
  before do
195
- @check_proc = Proc.new do |m, v|
194
+ @check_proc = proc do |m, v|
196
195
  if Array === m
197
196
  wrong_class = m[0] != v.class
198
197
  expect(wrong_class).to be_falsey
199
198
  is_last = m.size == 1
200
- if !wrong_class
201
- is_last ? true : m[1..-1]
202
- end
199
+ is_last ? true : m[1..-1] unless wrong_class
203
200
  end
204
201
  end
205
202
 
@@ -207,11 +204,9 @@ describe Card::Content do
207
204
  @card = card
208
205
 
209
206
  # non-nil valued opts only ...
210
- @render_block = Proc.new do |opts|
207
+ @render_block = proc do |opts|
211
208
  options = opts.inject({}) do |i, v|
212
- if !v[1].nil? && (i[v[0]] = v[1])
213
- i
214
- end
209
+ i if !v[1].nil? && (i[v[0]] = v[1])
215
210
  end
216
211
  { options: options }
217
212
  end
@@ -331,7 +326,7 @@ describe Card::Content do
331
326
  ' so is http://foo.bar.come//',
332
327
  ' and foo="my attr, not int a tag" <not a=tag ',
333
328
  ' p class"foobar"> and more'
334
- ]
329
+ ].freeze
335
330
 
336
331
  context 'class' do
337
332
  describe '#clean!' do