card 1.16.6 → 1.16.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +234 -49
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/VERSION +1 -1
  6. data/config/initializers/mime_types.rb +3 -3
  7. data/config/initializers/notification.rb +1 -1
  8. data/db/migrate/20121118115000_update_link_type.rb +8 -8
  9. data/db/migrate/20130411210957_update_codenames.rb +2 -2
  10. data/db/migrate/20140822073704_create_new_revision_tables.rb +12 -13
  11. data/db/migrate/20141001105348_move_revisions_to_actions.rb +16 -16
  12. data/db/migrate/20141121172918_rename_card_migration_table.rb +4 -4
  13. data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -3
  14. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +45 -47
  15. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +1 -1
  16. data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +3 -3
  17. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +3 -3
  18. data/db/migrate_core_cards/20130927191728_account_events.rb +6 -6
  19. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -1
  20. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -1
  21. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +19 -19
  22. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +11 -12
  23. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +35 -36
  24. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +55 -55
  25. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
  26. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +2 -2
  27. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +3 -3
  28. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +2 -2
  29. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -8
  30. data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -2
  31. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +16 -16
  32. data/db/migrate_core_cards/20141230204340_uri_codename.rb +1 -1
  33. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +19 -19
  34. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -3
  35. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +15 -15
  36. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +11 -11
  37. data/db/migrate_core_cards/20150331135745_new_card_menu.rb +1 -1
  38. data/db/migrate_core_cards/20150429090551_search_card_context.rb +1 -1
  39. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -3
  40. data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +1 -1
  41. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +4 -4
  42. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +5 -5
  43. data/db/migrate_core_cards/20150605115802_add_performance_log_card.rb +1 -1
  44. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -2
  45. data/db/migrate_core_cards/20150611203506_rails_inflection_updates.rb +5 -5
  46. data/db/migrate_core_cards/20150627205133_fix_script_bootstrap_card_type.rb +1 -1
  47. data/db/migrate_core_cards/20150702130543_remove_edit_toolbar_pinned.rb +1 -1
  48. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +5 -5
  49. data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
  50. data/db/migrate_core_cards/20150824135418_update_file_history.rb +3 -3
  51. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +2 -2
  52. data/db/migrate_core_cards/20150910085603_remove_performance_log_card.rb +1 -1
  53. data/lib/card.rb +4 -4
  54. data/lib/card/active_record_ext.rb +8 -8
  55. data/lib/card/auth.rb +6 -6
  56. data/lib/card/cache.rb +1 -1
  57. data/lib/card/chunk.rb +1 -1
  58. data/lib/card/content.rb +1 -1
  59. data/lib/card/diff.rb +10 -10
  60. data/lib/card/env.rb +1 -1
  61. data/lib/card/format.rb +12 -12
  62. data/lib/card/loader.rb +1 -1
  63. data/lib/card/migration.rb +1 -1
  64. data/lib/card/name.rb +4 -4
  65. data/lib/card/query.rb +255 -61
  66. data/lib/card/query/attributes.rb +310 -0
  67. data/lib/card/query/clause.rb +12 -15
  68. data/lib/card/query/join.rb +73 -0
  69. data/lib/card/query/reference.rb +51 -0
  70. data/lib/card/query/sql_statement.rb +228 -0
  71. data/lib/card/query/value.rb +66 -0
  72. data/lib/card/reference.rb +6 -6
  73. data/lib/card/set.rb +12 -12
  74. data/lib/card/set_pattern.rb +9 -9
  75. data/lib/card/spec_helper.rb +5 -5
  76. data/lib/card/success.rb +1 -1
  77. data/lib/cardio.rb +7 -7
  78. data/lib/generators/card/format/format_generator.rb +3 -3
  79. data/lib/generators/card/migration/migration_generator.rb +5 -5
  80. data/lib/generators/card/set/set_generator.rb +4 -4
  81. data/mod/01_core/chunk/include.rb +4 -4
  82. data/mod/01_core/chunk/link.rb +5 -5
  83. data/mod/01_core/chunk/literal.rb +2 -2
  84. data/mod/01_core/chunk/query_reference.rb +8 -8
  85. data/mod/01_core/chunk/uri.rb +18 -18
  86. data/mod/01_core/format/html_format.rb +4 -4
  87. data/mod/01_core/set/all/active_card.rb +2 -2
  88. data/mod/01_core/set/all/collection.rb +21 -26
  89. data/mod/01_core/set/all/content.rb +2 -2
  90. data/mod/01_core/set/all/fetch.rb +6 -6
  91. data/mod/01_core/set/all/initialize.rb +4 -4
  92. data/mod/01_core/set/all/location_history.rb +2 -2
  93. data/mod/01_core/set/all/name.rb +14 -14
  94. data/mod/01_core/set/all/pattern.rb +1 -1
  95. data/mod/01_core/set/all/permissions.rb +12 -12
  96. data/mod/01_core/set/all/phases.rb +29 -12
  97. data/mod/01_core/set/all/references.rb +14 -14
  98. data/mod/01_core/set/all/rules.rb +8 -8
  99. data/mod/01_core/set/all/templating.rb +10 -9
  100. data/mod/01_core/set/all/tracked_attributes.rb +7 -7
  101. data/mod/01_core/set/all/trash.rb +6 -6
  102. data/mod/01_core/set/all/type.rb +7 -7
  103. data/mod/01_core/set/all/utils.rb +4 -4
  104. data/mod/01_core/set/all/view_cache.rb +1 -1
  105. data/mod/01_core/set_pattern/02_all_plus.rb +2 -2
  106. data/mod/01_core/set_pattern/03_type.rb +1 -1
  107. data/mod/01_core/set_pattern/04_star.rb +1 -1
  108. data/mod/01_core/set_pattern/05_rstar.rb +2 -2
  109. data/mod/01_core/set_pattern/06_right.rb +4 -4
  110. data/mod/01_core/set_pattern/07_type_plus_right.rb +4 -4
  111. data/mod/01_core/set_pattern/08_self.rb +1 -1
  112. data/mod/01_core/spec/chunk/uri_spec.rb +73 -73
  113. data/mod/01_core/spec/format/html_format_spec.rb +5 -5
  114. data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +1 -1
  115. data/mod/01_core/spec/set/all/collection_spec.rb +22 -22
  116. data/mod/01_core/spec/set/all/content_spec.rb +1 -1
  117. data/mod/01_core/spec/set/all/fetch_spec.rb +24 -24
  118. data/mod/01_core/spec/set/all/initialize_spec.rb +9 -9
  119. data/mod/01_core/spec/set/all/name_spec.rb +8 -8
  120. data/mod/01_core/spec/set/all/pattern_spec.rb +10 -10
  121. data/mod/01_core/spec/set/all/permissions_spec.rb +45 -45
  122. data/mod/01_core/spec/set/all/references_spec.rb +1 -1
  123. data/mod/01_core/spec/set/all/rules2_spec.rb +15 -15
  124. data/mod/01_core/spec/set/all/rules_spec.rb +37 -37
  125. data/mod/01_core/spec/set/all/templating_spec.rb +21 -21
  126. data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +55 -55
  127. data/mod/01_core/spec/set/all/trash_spec.rb +4 -4
  128. data/mod/01_core/spec/set/all/type_spec.rb +15 -15
  129. data/mod/01_history/lib/card/act.rb +2 -2
  130. data/mod/01_history/lib/card/action.rb +22 -22
  131. data/mod/01_history/lib/card/change.rb +1 -1
  132. data/mod/01_history/set/all/actions.rb +2 -2
  133. data/mod/01_history/set/all/content_history.rb +4 -4
  134. data/mod/01_history/set/all/history.rb +46 -46
  135. data/mod/02_basic_types/set/all/all_css.rb +10 -10
  136. data/mod/02_basic_types/set/all/all_csv.rb +7 -7
  137. data/mod/02_basic_types/set/all/base.rb +25 -25
  138. data/mod/02_basic_types/set/all/json.rb +16 -16
  139. data/mod/02_basic_types/set/all/rss.rb +7 -7
  140. data/mod/02_basic_types/set/type/html.rb +2 -2
  141. data/mod/02_basic_types/set/type/plain_text.rb +1 -1
  142. data/mod/02_basic_types/set/type/pointer.rb +39 -31
  143. data/mod/02_basic_types/spec/set/all/all_css_spec.rb +1 -1
  144. data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +1 -1
  145. data/mod/02_basic_types/spec/set/all/base_spec.rb +18 -18
  146. data/mod/02_basic_types/spec/set/all/json_spec.rb +4 -4
  147. data/mod/02_basic_types/spec/set/all/rss_spec.rb +8 -2
  148. data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +1 -1
  149. data/mod/02_basic_types/spec/set/type/pointer_spec.rb +54 -44
  150. data/mod/03_machines/lib/card/machine.rb +46 -29
  151. data/mod/03_machines/lib/card/machine_input.rb +34 -10
  152. data/mod/03_machines/set/type/coffee_script.rb +3 -3
  153. data/mod/03_machines/set/type/css.rb +8 -8
  154. data/mod/03_machines/set/type/java_script.rb +4 -4
  155. data/mod/03_machines/set/type/scss.rb +2 -2
  156. data/mod/03_machines/set/type/skin.rb +1 -1
  157. data/mod/03_machines/spec/lib/shared_machine_examples.rb +27 -27
  158. data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +8 -8
  159. data/mod/03_machines/spec/set/type/coffeescript_spec.rb +6 -6
  160. data/mod/03_machines/spec/set/type/css_spec.rb +9 -9
  161. data/mod/03_machines/spec/set/type/javascript_spec.rb +6 -6
  162. data/mod/03_machines/spec/set/type/scss_spec.rb +5 -5
  163. data/mod/03_machines/spec/set/type/skin_spec.rb +25 -25
  164. data/mod/04_settings/lib/card/setting.rb +11 -11
  165. data/mod/04_settings/set/abstract/permission.rb +9 -9
  166. data/mod/04_settings/set/right/script.rb +1 -1
  167. data/mod/04_settings/set/right/structure.rb +0 -5
  168. data/mod/04_settings/set/right/style.rb +2 -2
  169. data/mod/04_settings/set/self/accountable.rb +1 -1
  170. data/mod/04_settings/set/self/add_help.rb +1 -1
  171. data/mod/04_settings/set/self/autoname.rb +1 -1
  172. data/mod/04_settings/set/self/captcha.rb +1 -1
  173. data/mod/04_settings/set/self/create.rb +1 -1
  174. data/mod/04_settings/set/self/default.rb +1 -1
  175. data/mod/04_settings/set/self/delete.rb +1 -1
  176. data/mod/04_settings/set/self/help.rb +1 -1
  177. data/mod/04_settings/set/self/input.rb +1 -1
  178. data/mod/04_settings/set/self/layout.rb +1 -1
  179. data/mod/04_settings/set/self/on_create.rb +1 -1
  180. data/mod/04_settings/set/self/on_delete.rb +1 -1
  181. data/mod/04_settings/set/self/on_update.rb +1 -1
  182. data/mod/04_settings/set/self/options.rb +1 -1
  183. data/mod/04_settings/set/self/options_label.rb +1 -1
  184. data/mod/04_settings/set/self/read.rb +1 -1
  185. data/mod/04_settings/set/self/script.rb +1 -1
  186. data/mod/04_settings/set/self/structure.rb +1 -1
  187. data/mod/04_settings/set/self/style.rb +1 -1
  188. data/mod/04_settings/set/self/table_of_contents.rb +1 -1
  189. data/mod/04_settings/set/self/thanks.rb +1 -1
  190. data/mod/04_settings/set/self/update.rb +1 -1
  191. data/mod/04_settings/set/type/setting.rb +14 -14
  192. data/mod/04_settings/spec/set/right/comment_spec.rb +5 -5
  193. data/mod/04_settings/spec/set/right/create_spec.rb +1 -1
  194. data/mod/04_settings/spec/set/right/script_spec.rb +5 -5
  195. data/mod/04_settings/spec/set/right/structure_spec.rb +4 -2
  196. data/mod/04_settings/spec/set/right/style_spec.rb +7 -7
  197. data/mod/04_settings/spec/set/type/setting_spec.rb +2 -2
  198. data/mod/05_email/lib/card/follow_option.rb +24 -24
  199. data/mod/05_email/set/all/follow.rb +24 -16
  200. data/mod/05_email/set/all/notify.rb +25 -23
  201. data/mod/05_email/set/all/observer.rb +5 -5
  202. data/mod/05_email/set/right/bcc.rb +8 -8
  203. data/mod/05_email/set/right/follow.rb +44 -17
  204. data/mod/05_email/set/right/follow_fields.rb +1 -1
  205. data/mod/05_email/set/right/following.rb +49 -40
  206. data/mod/05_email/set/self/always.rb +2 -2
  207. data/mod/05_email/set/self/created.rb +1 -1
  208. data/mod/05_email/set/self/edited.rb +4 -4
  209. data/mod/05_email/set/self/follow.rb +1 -1
  210. data/mod/05_email/set/self/follow_defaults.rb +9 -9
  211. data/mod/05_email/set/self/never.rb +1 -1
  212. data/mod/05_email/set/type/email_template.rb +9 -9
  213. data/mod/05_email/set/type_plus_right/user/follow.rb +16 -16
  214. data/mod/05_email/spec/set/all/follow_spec.rb +10 -10
  215. data/mod/05_email/spec/set/all/notify_spec.rb +82 -82
  216. data/mod/05_email/spec/set/all/observer_spec.rb +16 -16
  217. data/mod/05_email/spec/set/right/followers_spec.rb +6 -6
  218. data/mod/05_email/spec/set/self/follow_defaults_spec.rb +2 -2
  219. data/mod/05_standard/lib/carrier_wave/cardmount.rb +5 -5
  220. data/mod/05_standard/lib/image_uploader.rb +8 -8
  221. data/mod/05_standard/set/abstract/attachment.rb +18 -18
  222. data/mod/05_standard/set/all/account.rb +5 -5
  223. data/mod/05_standard/set/all/comment.rb +7 -7
  224. data/mod/05_standard/set/all/error.rb +25 -25
  225. data/mod/05_standard/set/all/event_viz.rb +1 -1
  226. data/mod/05_standard/set/all/links.rb +9 -9
  227. data/mod/05_standard/set/all/rich_html/content.rb +34 -34
  228. data/mod/05_standard/set/all/rich_html/editing.rb +35 -35
  229. data/mod/05_standard/set/all/rich_html/form.rb +20 -20
  230. data/mod/05_standard/set/all/rich_html/header.rb +8 -8
  231. data/mod/05_standard/set/all/rich_html/menu.rb +33 -33
  232. data/mod/05_standard/set/all/rich_html/modal.rb +16 -16
  233. data/mod/05_standard/set/all/rich_html/toolbar.rb +63 -63
  234. data/mod/05_standard/set/all/rich_html/wrapper.rb +8 -8
  235. data/mod/05_standard/set/right/account.rb +27 -27
  236. data/mod/05_standard/set/right/email.rb +5 -5
  237. data/mod/05_standard/set/right/password.rb +5 -5
  238. data/mod/05_standard/set/rstar/rules.rb +52 -52
  239. data/mod/05_standard/set/self/account_links.rb +27 -27
  240. data/mod/05_standard/set/self/all.rb +1 -1
  241. data/mod/05_standard/set/self/head.rb +5 -5
  242. data/mod/05_standard/set/self/navbox.rb +11 -11
  243. data/mod/05_standard/set/self/recent.rb +2 -2
  244. data/mod/05_standard/set/self/search.rb +13 -13
  245. data/mod/05_standard/set/self/signin.rb +19 -19
  246. data/mod/05_standard/set/self/stats.rb +2 -2
  247. data/mod/05_standard/set/type/basic.rb +1 -1
  248. data/mod/05_standard/set/type/cardtype.rb +5 -5
  249. data/mod/05_standard/set/type/date.rb +1 -1
  250. data/mod/05_standard/set/type/file.rb +7 -7
  251. data/mod/05_standard/set/type/image.rb +8 -8
  252. data/mod/05_standard/set/type/number.rb +2 -2
  253. data/mod/05_standard/set/type/phrase.rb +1 -1
  254. data/mod/05_standard/set/type/search_type.rb +27 -21
  255. data/mod/05_standard/set/type/session.rb +2 -2
  256. data/mod/05_standard/set/type/set.rb +37 -37
  257. data/mod/05_standard/set/type/signup.rb +25 -25
  258. data/mod/05_standard/set/type/uri.rb +1 -1
  259. data/mod/05_standard/set/type/user.rb +21 -21
  260. data/mod/05_standard/spec/chunk/include_spec.rb +16 -16
  261. data/mod/05_standard/spec/chunk/link_spec.rb +18 -18
  262. data/mod/05_standard/spec/chunk/query_reference_spec.rb +1 -1
  263. data/mod/05_standard/spec/set/all/account_spec.rb +7 -7
  264. data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
  265. data/mod/05_standard/spec/set/all/history_spec.rb +14 -14
  266. data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +1 -1
  267. data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +2 -2
  268. data/mod/05_standard/spec/set/right/account_spec.rb +9 -9
  269. data/mod/05_standard/spec/set/right/email_spec.rb +8 -8
  270. data/mod/05_standard/spec/set/right/password_spec.rb +9 -9
  271. data/mod/05_standard/spec/set/right/stats_spec.rb +1 -1
  272. data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
  273. data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
  274. data/mod/05_standard/spec/set/rstar/rules_spec.rb +2 -2
  275. data/mod/05_standard/spec/set/self/account_links_spec.rb +2 -2
  276. data/mod/05_standard/spec/set/self/all_spec.rb +8 -11
  277. data/mod/05_standard/spec/set/self/head_spec.rb +1 -1
  278. data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
  279. data/mod/05_standard/spec/set/self/now_spec.rb +1 -1
  280. data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
  281. data/mod/05_standard/spec/set/self/version_spec.rb +1 -1
  282. data/mod/05_standard/spec/set/type/email_template_spec.rb +25 -25
  283. data/mod/05_standard/spec/set/type/file_spec.rb +4 -4
  284. data/mod/05_standard/spec/set/type/html_spec.rb +3 -3
  285. data/mod/05_standard/spec/set/type/image_spec.rb +6 -6
  286. data/mod/05_standard/spec/set/type/layout_type_spec.rb +1 -1
  287. data/mod/05_standard/spec/set/type/search_type_spec.rb +10 -10
  288. data/mod/05_standard/spec/set/type/signup_spec.rb +11 -11
  289. data/mod/05_standard/spec/set/type/toggle_spec.rb +2 -2
  290. data/mod/05_standard/spec/set/type/uri_spec.rb +9 -9
  291. data/mod/06_bootstrap/set/all/bootstrap/helper.rb +10 -10
  292. data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +4 -4
  293. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -1
  294. data/spec/lib/card/action_spec.rb +2 -2
  295. data/spec/lib/card/cache_spec.rb +7 -7
  296. data/spec/lib/card/content_spec.rb +31 -37
  297. data/spec/lib/card/diff_spec.rb +56 -56
  298. data/spec/lib/card/format_spec.rb +11 -11
  299. data/spec/lib/card/query_spec.rb +382 -265
  300. data/spec/lib/card/reference_spec.rb +133 -140
  301. data/spec/lib/card/set_pattern_spec.rb +10 -9
  302. data/spec/lib/card/set_spec.rb +11 -11
  303. data/spec/lib/card/success_spec.rb +16 -8
  304. data/spec/mailers/mailer_spec.rb +5 -5
  305. data/spec/models/card/cardtype_spec.rb +20 -20
  306. data/spec/models/card/create_spec.rb +6 -6
  307. data/spec/models/card/trash_spec.rb +20 -20
  308. data/spec/models/card/type_transition_spec.rb +3 -3
  309. data/spec/models/card/validation_spec.rb +5 -5
  310. data/spec/models/card_spec.rb +24 -24
  311. data/spec/spec_helper.rb +5 -5
  312. data/tmpsets/set/mod001-01_core/all/active_card.rb +2 -2
  313. data/tmpsets/set/mod001-01_core/all/collection.rb +23 -26
  314. data/tmpsets/set/mod001-01_core/all/content.rb +2 -2
  315. data/tmpsets/set/mod001-01_core/all/fetch.rb +6 -6
  316. data/tmpsets/set/mod001-01_core/all/initialize.rb +8 -4
  317. data/tmpsets/set/mod001-01_core/all/name.rb +14 -14
  318. data/tmpsets/set/mod001-01_core/all/pattern.rb +1 -1
  319. data/tmpsets/set/mod001-01_core/all/permissions.rb +12 -12
  320. data/tmpsets/set/mod001-01_core/all/phases.rb +31 -13
  321. data/tmpsets/set/mod001-01_core/all/references.rb +14 -14
  322. data/tmpsets/set/mod001-01_core/all/rules.rb +8 -10
  323. data/tmpsets/set/mod001-01_core/all/templating.rb +10 -9
  324. data/tmpsets/set/mod001-01_core/all/tracked_attributes.rb +7 -7
  325. data/tmpsets/set/mod001-01_core/all/trash.rb +9 -8
  326. data/tmpsets/set/mod001-01_core/all/type.rb +7 -7
  327. data/tmpsets/set/mod001-01_core/all/utils.rb +16 -4
  328. data/tmpsets/set/mod001-01_core/all/view_cache.rb +1 -1
  329. data/tmpsets/set/mod002-01_history/all/actions.rb +2 -2
  330. data/tmpsets/set/mod002-01_history/all/content_history.rb +11 -7
  331. data/tmpsets/set/mod002-01_history/all/history.rb +46 -46
  332. data/tmpsets/set/mod003-02_basic_types/all/all_css.rb +10 -10
  333. data/tmpsets/set/mod003-02_basic_types/all/all_csv.rb +7 -7
  334. data/tmpsets/set/mod003-02_basic_types/all/base.rb +25 -25
  335. data/tmpsets/set/mod003-02_basic_types/all/json.rb +16 -16
  336. data/tmpsets/set/mod003-02_basic_types/all/rss.rb +7 -7
  337. data/tmpsets/set/mod003-02_basic_types/type/html.rb +2 -2
  338. data/tmpsets/set/mod003-02_basic_types/type/plain_text.rb +1 -1
  339. data/tmpsets/set/mod003-02_basic_types/type/pointer.rb +38 -31
  340. data/tmpsets/set/mod004-03_machines/right/machine_output.rb +4 -0
  341. data/tmpsets/set/mod004-03_machines/type/coffee_script.rb +3 -3
  342. data/tmpsets/set/mod004-03_machines/type/css.rb +8 -8
  343. data/tmpsets/set/mod004-03_machines/type/java_script.rb +4 -4
  344. data/tmpsets/set/mod004-03_machines/type/scss.rb +2 -2
  345. data/tmpsets/set/mod004-03_machines/type/skin.rb +1 -1
  346. data/tmpsets/set/mod005-04_settings/abstract/permission.rb +9 -9
  347. data/tmpsets/set/mod005-04_settings/right/script.rb +1 -1
  348. data/tmpsets/set/mod005-04_settings/right/structure.rb +0 -5
  349. data/tmpsets/set/mod005-04_settings/right/style.rb +2 -2
  350. data/tmpsets/set/mod005-04_settings/self/accountable.rb +1 -1
  351. data/tmpsets/set/mod005-04_settings/self/add_help.rb +1 -1
  352. data/tmpsets/set/mod005-04_settings/self/autoname.rb +1 -1
  353. data/tmpsets/set/mod005-04_settings/self/captcha.rb +1 -1
  354. data/tmpsets/set/mod005-04_settings/self/create.rb +1 -1
  355. data/tmpsets/set/mod005-04_settings/self/default.rb +1 -1
  356. data/tmpsets/set/mod005-04_settings/self/delete.rb +1 -1
  357. data/tmpsets/set/mod005-04_settings/self/help.rb +1 -1
  358. data/tmpsets/set/mod005-04_settings/self/input.rb +1 -1
  359. data/tmpsets/set/mod005-04_settings/self/layout.rb +1 -1
  360. data/tmpsets/set/mod005-04_settings/self/on_create.rb +1 -1
  361. data/tmpsets/set/mod005-04_settings/self/on_delete.rb +1 -1
  362. data/tmpsets/set/mod005-04_settings/self/on_update.rb +1 -1
  363. data/tmpsets/set/mod005-04_settings/self/options.rb +1 -1
  364. data/tmpsets/set/mod005-04_settings/self/options_label.rb +1 -1
  365. data/tmpsets/set/mod005-04_settings/self/read.rb +1 -1
  366. data/tmpsets/set/mod005-04_settings/self/script.rb +1 -1
  367. data/tmpsets/set/mod005-04_settings/self/structure.rb +1 -1
  368. data/tmpsets/set/mod005-04_settings/self/style.rb +1 -1
  369. data/tmpsets/set/mod005-04_settings/self/table_of_contents.rb +1 -1
  370. data/tmpsets/set/mod005-04_settings/self/thanks.rb +1 -1
  371. data/tmpsets/set/mod005-04_settings/self/update.rb +1 -1
  372. data/tmpsets/set/mod005-04_settings/type/setting.rb +14 -14
  373. data/tmpsets/set/mod006-05_email/all/follow.rb +24 -16
  374. data/tmpsets/set/mod006-05_email/all/notify.rb +25 -23
  375. data/tmpsets/set/mod006-05_email/all/observer.rb +8 -8
  376. data/tmpsets/set/mod006-05_email/right/bcc.rb +8 -8
  377. data/tmpsets/set/mod006-05_email/right/follow.rb +44 -17
  378. data/tmpsets/set/mod006-05_email/right/follow_fields.rb +1 -1
  379. data/tmpsets/set/mod006-05_email/right/following.rb +49 -40
  380. data/tmpsets/set/mod006-05_email/self/always.rb +2 -2
  381. data/tmpsets/set/mod006-05_email/self/created.rb +1 -1
  382. data/tmpsets/set/mod006-05_email/self/edited.rb +4 -4
  383. data/tmpsets/set/mod006-05_email/self/follow.rb +1 -1
  384. data/tmpsets/set/mod006-05_email/self/follow_defaults.rb +9 -9
  385. data/tmpsets/set/mod006-05_email/self/never.rb +1 -1
  386. data/tmpsets/set/mod006-05_email/type/email_template.rb +9 -9
  387. data/tmpsets/set/mod006-05_email/type_plus_right/user/follow.rb +17 -17
  388. data/tmpsets/set/mod007-05_standard/abstract/attachment.rb +98 -46
  389. data/tmpsets/set/mod007-05_standard/all/account.rb +5 -5
  390. data/tmpsets/set/mod007-05_standard/all/comment.rb +7 -7
  391. data/tmpsets/set/mod007-05_standard/all/error.rb +26 -26
  392. data/tmpsets/set/mod007-05_standard/all/event_viz.rb +1 -1
  393. data/tmpsets/set/mod007-05_standard/all/links.rb +10 -9
  394. data/tmpsets/set/mod007-05_standard/all/rich_html/content.rb +34 -34
  395. data/tmpsets/set/mod007-05_standard/all/rich_html/editing.rb +35 -35
  396. data/tmpsets/set/mod007-05_standard/all/rich_html/form.rb +20 -20
  397. data/tmpsets/set/mod007-05_standard/all/rich_html/header.rb +8 -8
  398. data/tmpsets/set/mod007-05_standard/all/rich_html/menu.rb +33 -33
  399. data/tmpsets/set/mod007-05_standard/all/rich_html/modal.rb +16 -16
  400. data/tmpsets/set/mod007-05_standard/all/rich_html/toolbar.rb +63 -63
  401. data/tmpsets/set/mod007-05_standard/all/rich_html/wrapper.rb +8 -8
  402. data/tmpsets/set/mod007-05_standard/right/account.rb +27 -27
  403. data/tmpsets/set/mod007-05_standard/right/email.rb +5 -5
  404. data/tmpsets/set/mod007-05_standard/right/password.rb +5 -5
  405. data/tmpsets/set/mod007-05_standard/rstar/rules.rb +52 -52
  406. data/tmpsets/set/mod007-05_standard/self/account_links.rb +27 -27
  407. data/tmpsets/set/mod007-05_standard/self/all.rb +1 -1
  408. data/tmpsets/set/mod007-05_standard/self/head.rb +5 -5
  409. data/tmpsets/set/mod007-05_standard/self/navbox.rb +11 -11
  410. data/tmpsets/set/mod007-05_standard/self/recent.rb +2 -2
  411. data/tmpsets/set/mod007-05_standard/self/search.rb +13 -13
  412. data/tmpsets/set/mod007-05_standard/self/signin.rb +19 -19
  413. data/tmpsets/set/mod007-05_standard/self/stats.rb +2 -2
  414. data/tmpsets/set/mod007-05_standard/type/basic.rb +1 -1
  415. data/tmpsets/set/mod007-05_standard/type/cardtype.rb +5 -5
  416. data/tmpsets/set/mod007-05_standard/type/date.rb +1 -1
  417. data/tmpsets/set/mod007-05_standard/type/file.rb +23 -8
  418. data/tmpsets/set/mod007-05_standard/type/image.rb +10 -8
  419. data/tmpsets/set/mod007-05_standard/type/number.rb +2 -2
  420. data/tmpsets/set/mod007-05_standard/type/phrase.rb +1 -1
  421. data/tmpsets/set/mod007-05_standard/type/search_type.rb +21 -19
  422. data/tmpsets/set/mod007-05_standard/type/session.rb +2 -2
  423. data/tmpsets/set/mod007-05_standard/type/set.rb +37 -37
  424. data/tmpsets/set/mod007-05_standard/type/signup.rb +25 -25
  425. data/tmpsets/set/mod007-05_standard/type/uri.rb +1 -1
  426. data/tmpsets/set/mod007-05_standard/type/user.rb +21 -21
  427. data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/helper.rb +10 -10
  428. data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/wrapper.rb +4 -4
  429. data/tmpsets/set/mod008-06_bootstrap/all/rich_bootstrap.rb +1 -1
  430. data/tmpsets/set_pattern/101-all_plus.rb +2 -2
  431. data/tmpsets/set_pattern/102-type.rb +1 -1
  432. data/tmpsets/set_pattern/103-star.rb +1 -1
  433. data/tmpsets/set_pattern/104-rstar.rb +2 -2
  434. data/tmpsets/set_pattern/105-right.rb +4 -4
  435. data/tmpsets/set_pattern/106-type_plus_right.rb +4 -4
  436. data/tmpsets/set_pattern/107-self.rb +1 -1
  437. metadata +7 -5
  438. data/lib/card/query/card_clause.rb +0 -528
  439. data/lib/card/query/ref_clause.rb +0 -47
  440. data/lib/card/query/value_clause.rb +0 -65
@@ -0,0 +1,228 @@
1
+ class Card
2
+ class Query
3
+ class SqlStatement
4
+ def initialize query
5
+ @query = query
6
+ @mods = query.mods
7
+ end
8
+
9
+ def build
10
+ @fields = fields
11
+ @tables = tables
12
+ @joins = joins @query.all_joins
13
+ @where = where
14
+ @group = group
15
+ @order = order
16
+ @limit_and_offset = limit_and_offset
17
+ self
18
+ end
19
+
20
+ def to_s
21
+ ["SELECT DISTINCT #{@fields}",
22
+ "FROM #{@tables}",
23
+ @joins,
24
+ @where,
25
+ @group,
26
+ @order,
27
+ @limit_and_offset
28
+ ].compact * "\n"
29
+ end
30
+
31
+ def tables
32
+ "cards #{@query.table_alias}"
33
+ end
34
+
35
+ def fields
36
+ table = @query.table_alias
37
+ field = @mods[:return]
38
+ field = field.blank? ? :card : field.to_sym
39
+ field = full_field(table, field)
40
+ [field, @mods[:sort_join_field]].compact * ', '
41
+ end
42
+
43
+ def full_field table, field
44
+ case field
45
+ when :raw then "#{table}.*"
46
+ when :card then "#{table}.name"
47
+ when :content then "#{table}.db_content"
48
+ when :count
49
+ "coalesce(count( distinct #{table}.id),0) as count"
50
+ else
51
+ if ATTRIBUTES[field.to_sym] == :basic
52
+ "#{table}.#{field}"
53
+ else
54
+ safe_sql field
55
+ end
56
+ end
57
+ end
58
+
59
+ def joins join_list
60
+ clauses = []
61
+ join_list.each do |join|
62
+ clauses << join_on_clause(join)
63
+ clauses << joins(deeper_joins join) unless join.left?
64
+ end
65
+ clauses.flatten * "\n"
66
+ end
67
+
68
+ def join_on_clause join
69
+ [join_clause(join), 'ON', on_clause(join)].join ' '
70
+ end
71
+
72
+ def deeper_joins join
73
+ deeper_joins = join.subjoins
74
+ deeper_joins += join.to.all_joins if join.to.is_a? Card::Query
75
+ deeper_joins
76
+ end
77
+
78
+ def join_clause join
79
+ to_table = join.to_table
80
+ to_table = "(#{to_table.sql})" if to_table.is_a? Card::Query
81
+ table_segment = [to_table, join.to_alias].join ' '
82
+
83
+ if join.left?
84
+ djoins = deeper_joins(join)
85
+ unless djoins.empty?
86
+ table_segment = "(#{table_segment} #{joins djoins})"
87
+ end
88
+ end
89
+ [join.side, 'JOIN', table_segment].compact.join ' '
90
+ end
91
+
92
+ def on_clause join
93
+ on_conditions = join.conditions
94
+ on_ids = [
95
+ "#{join.from_alias}.#{join.from_field}",
96
+ "#{join.to_alias}.#{join.to_field}"
97
+ ].join ' = '
98
+ on_conditions.unshift on_ids
99
+ if join.to.is_a? Card::Query
100
+ if join.to.conditions_on_join == join
101
+ on_conditions.push query_conditions(join.to)
102
+ end
103
+ on_conditions.push standard_conditions(join.to)
104
+ end
105
+ basic_conditions(on_conditions) * ' AND '
106
+ end
107
+
108
+ def where
109
+ conditions = [query_conditions(@query), standard_conditions(@query)]
110
+ conditions = conditions.reject(&:blank?).join "\nAND "
111
+ "WHERE #{conditions}" unless conditions.blank?
112
+ end
113
+
114
+ def query_conditions query
115
+ cond_list = basic_conditions query.conditions
116
+ cond_list +=
117
+ query.subqueries.map do |subquery|
118
+ next if subquery.conditions_on_join
119
+ query_conditions subquery
120
+ end
121
+ cond_list.reject!(&:blank?)
122
+
123
+ if cond_list.size > 1
124
+ cond_list = cond_list.join "\n#{query.current_conjunction.upcase} "
125
+ "(#{cond_list})"
126
+ else
127
+ cond_list.join
128
+ end
129
+ end
130
+
131
+ def basic_conditions conditions
132
+ conditions.map do |condition|
133
+ if condition.is_a? String
134
+ condition
135
+ else
136
+ field, val = condition
137
+ val.to_sql field
138
+ end
139
+ end
140
+ end
141
+
142
+ def standard_conditions query
143
+ [trash_condition(query), permission_conditions(query)].compact * ' AND '
144
+ end
145
+
146
+ def trash_condition query
147
+ "#{query.table_alias}.trash is false"
148
+ end
149
+
150
+ def permission_conditions query
151
+ return if Auth.always_ok?
152
+ read_rules = Auth.as_card.read_rules
153
+ read_rule_list = read_rules.nil? ? 1 : read_rules.join(',')
154
+ "#{query.table_alias}.read_rule_id IN (#{read_rule_list})"
155
+ end
156
+
157
+ def group
158
+ group = @mods[:group]
159
+ "GROUP BY #{safe_sql group}" if group.present?
160
+ end
161
+
162
+ def limit_and_offset
163
+ full_syntax do
164
+ limit = @mods[:limit]
165
+ offset = @mods[:offset]
166
+ if limit.to_i > 0
167
+ string = "LIMIT #{limit.to_i} "
168
+ string += "OFFSET #{offset.to_i} " if offset.present?
169
+ string
170
+ end
171
+ end
172
+ end
173
+
174
+ def full_syntax
175
+ return if @query.superquery || @mods[:return] == 'count'
176
+ yield
177
+ end
178
+
179
+ def order
180
+ full_syntax do
181
+ order_key ||= @mods[:sort].blank? ? 'update' : @mods[:sort]
182
+
183
+ order_directives = [order_key].flatten.map do |key|
184
+ dir = if @mods[:dir].blank?
185
+ DEFAULT_ORDER_DIRS[key.to_sym] || 'asc'
186
+ else
187
+ safe_sql @mods[:dir]
188
+ end
189
+ sort_field key, @mods[:sort_as], dir
190
+ end.join ', '
191
+ "ORDER BY #{order_directives}"
192
+ end
193
+ end
194
+
195
+ def sort_field key, as, dir
196
+ table = @query.table_alias
197
+ order_field =
198
+ case key
199
+ when 'id' then "#{table}.id"
200
+ when 'update' then "#{table}.updated_at"
201
+ when 'create' then "#{table}.created_at"
202
+ when /^(name|alpha)$/ then "LOWER( #{table}.key )"
203
+ when 'content' then "#{table}.db_content"
204
+ when 'relevance' then "#{table}.updated_at" # deprecated
205
+ else
206
+ safe_sql(key)
207
+ end
208
+ order_field = "CAST(#{order_field} AS #{cast_type(safe_sql as)})" if as
209
+ @fields += ", #{order_field}"
210
+ "#{order_field} #{dir}"
211
+ end
212
+
213
+ def safe_sql(txt)
214
+ txt = txt.to_s
215
+ if txt.match(/[^\w\*\(\)\s\.\,]/)
216
+ fail "WQL contains disallowed characters: #{txt}"
217
+ else
218
+ txt
219
+ end
220
+ end
221
+
222
+ def cast_type(type)
223
+ cxn ||= ActiveRecord::Base.connection
224
+ (val = cxn.cast_types[type.to_sym]) ? val[:name] : safe_sql(type)
225
+ end
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,66 @@
1
+ class Card
2
+ class Query
3
+ class Value
4
+
5
+ include Clause
6
+
7
+ attr_reader :query, :operator, :value
8
+
9
+ def initialize rawvalue, query
10
+ @query = query
11
+ @operator, @value = parse_value rawvalue
12
+ canonicalize_operator
13
+ end
14
+
15
+ def parse_value rawvalue
16
+ operator =
17
+ case rawvalue
18
+ when Array; rawvalue.shift
19
+ when String; '='
20
+ when Integer; '='
21
+ else raise("Invalid Condition Clause #{rawvalue}.inspect}")
22
+ end
23
+ [operator, rawvalue]
24
+ end
25
+
26
+ def canonicalize_operator
27
+ if target = OPERATORS[@operator.to_s]
28
+ @operator = target
29
+ else
30
+ fail BadQuery, "Invalid Operator #{@operator}"
31
+ end
32
+ end
33
+
34
+
35
+ def sqlize v
36
+ case v
37
+ when Query; v.to_sql
38
+ when Array; "(" + v.flatten.collect {|x| sqlize(x)}.join(',') + ")"
39
+ else quote(v.to_s)
40
+ end
41
+ end
42
+
43
+ def to_sql field
44
+ op,v = @operator, @value
45
+ table = @query.table_alias
46
+
47
+ field, v = case field.to_s
48
+ when "name"
49
+ ["#{table}.key", [v].flatten.map(&:to_name).map(&:key)]
50
+ when "content"
51
+ ["#{table}.db_content", v]
52
+ else
53
+ ["#{table}.#{safe_sql field}", v]
54
+ end
55
+
56
+ v = v[0] if Array===v && v.length==1 && op != 'in'
57
+ if op=='~'
58
+ cxn, v = match_prep(v)
59
+ %{#{field} #{cxn.match(sqlize(v))}}
60
+ else
61
+ "#{field} #{op} #{sqlize(v)}"
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -12,22 +12,22 @@ class Card::Reference < ActiveRecord::Base
12
12
  class << self
13
13
 
14
14
  def delete_all_from card
15
- delete_all :referer_id => card.id
15
+ delete_all referer_id: card.id
16
16
  end
17
17
 
18
18
  def delete_all_to card
19
- where( :referee_id => card.id ).update_all :present=>0, :referee_id => nil
19
+ where( referee_id: card.id ).update_all present: 0, referee_id: nil
20
20
  end
21
21
 
22
22
  def update_existing_key card, name=nil
23
23
  key = (name || card.name).to_name.key
24
- where( :referee_key => key ).update_all :present => 1, :referee_id => card.id
24
+ where( referee_key: key ).update_all present: 1, referee_id: card.id
25
25
  end
26
26
 
27
27
  def update_on_rename card, newname, update_referers=false
28
28
  if update_referers
29
29
  # not currentlt needed because references are deleted and re-created in the process of adding new revision
30
- #where( :referee_id=>card.id ).update_all :referee_key => newname.to_name.key
30
+ #where( referee_id: card.id ).update_all referee_key: newname.to_name.key
31
31
  else
32
32
  delete_all_to card
33
33
  end
@@ -41,7 +41,7 @@ class Card::Reference < ActiveRecord::Base
41
41
  end
42
42
 
43
43
  def repair_missing_referees
44
- joins('LEFT JOIN cards ON card_references.referee_id = cards.id').where('(cards.id IS NULL OR cards.trash IS TRUE) AND referee_id IS NOT NULL').update_all :referee_id=>nil
44
+ joins('LEFT JOIN cards ON card_references.referee_id = cards.id').where('(cards.id IS NULL OR cards.trash IS TRUE) AND referee_id IS NOT NULL').update_all referee_id: nil
45
45
  end
46
46
 
47
47
  def delete_missing_referers
@@ -51,7 +51,7 @@ class Card::Reference < ActiveRecord::Base
51
51
  def repair_all
52
52
  delete_missing_referers
53
53
 
54
- Card.where(:trash=>false).find_each do |card|
54
+ Card.where(trash: false).find_each do |card|
55
55
  Rails.logger.info "\nRepairing references for '#{card.name}' (id: #{card.id}) ... "
56
56
  card.update_references
57
57
  end
data/lib/card/set.rb CHANGED
@@ -6,7 +6,7 @@ class Card
6
6
  module Set
7
7
 
8
8
  mattr_accessor :modules, :traits
9
- @@modules = { :base=>[], :base_format=>{}, :nonbase=>{}, :nonbase_format=>{} }
9
+ @@modules = { base: [], base_format: {}, nonbase: {}, nonbase_format: {} }
10
10
 
11
11
 
12
12
  =begin
@@ -99,7 +99,7 @@ class Card
99
99
  end
100
100
 
101
101
  def alias_block view, args
102
- opts = Hash===args[0] ? args.shift : { :view => args.shift }
102
+ opts = Hash===args[0] ? args.shift : { view: args.shift }
103
103
  opts[:mod] ||= self
104
104
  opts[:view] ||= view
105
105
  views[ opts[:mod] ][ opts[:view] ] or fail
@@ -168,9 +168,9 @@ class Card
168
168
  value = self.instance_variable_get("@#{name}")
169
169
  hash[name] =
170
170
  if Symbol === value # ActiveJob doesn't accept symbols as arguments
171
- { :value => value.to_s, :symbol => true }
171
+ { value: value.to_s, symbol: true }
172
172
  else
173
- { :value => value }
173
+ { value: value }
174
174
  end
175
175
  end
176
176
  Object.const_get(event.to_s.camelize).perform_later(self, s_attr)
@@ -220,17 +220,17 @@ class Card
220
220
  #
221
221
  def card_accessor *args
222
222
  options = args.extract_options!
223
- add_traits args, options.merge( :reader=>true, :writer=>true )
223
+ add_traits args, options.merge( reader: true, writer: true )
224
224
  end
225
225
 
226
226
  def card_reader *args
227
227
  options = args.extract_options!
228
- add_traits args, options.merge( :reader=>true )
228
+ add_traits args, options.merge( reader: true )
229
229
  end
230
230
 
231
231
  def card_writer *args
232
232
  options = args.extract_options!
233
- add_traits args, options.merge( :writer=>true )
233
+ add_traits args, options.merge( writer: true )
234
234
  end
235
235
 
236
236
 
@@ -383,7 +383,7 @@ EOF
383
383
  if object_method = opts.delete(kind)
384
384
  this_set_module = self
385
385
  Card.class_eval do
386
- set_callback object_method, kind, event, :prepend=>true, :if=> proc { |c|
386
+ set_callback object_method, kind, event, prepend: true, if: proc { |c|
387
387
  c.singleton_class.include?( this_set_module ) and c.event_applies? opts
388
388
  }
389
389
  end
@@ -401,8 +401,8 @@ EOF
401
401
  # raise "Can't define card traits on all set" if mod == Card
402
402
  mod_traits = get_traits mod
403
403
 
404
- new_opts = options[:type] ? {:type=>options[:type]} : {}
405
- new_opts.merge!( {:content => options[:default]} ) if options[:default]
404
+ new_opts = options[:type] ? {type: options[:type]} : {}
405
+ new_opts.merge!( {content: options[:default]} ) if options[:default]
406
406
 
407
407
  args.each do |trait|
408
408
  define_trait_card trait, new_opts
@@ -416,7 +416,7 @@ EOF
416
416
  def define_trait_card trait, opts
417
417
  define_method "#{trait}_card" do
418
418
  trait_var "@#{trait}_card" do
419
- fetch :trait=>trait.to_sym, :new=>opts.clone
419
+ fetch trait: trait.to_sym, new: opts.clone
420
420
  end
421
421
  end
422
422
  end
@@ -433,7 +433,7 @@ EOF
433
433
  define_method "#{trait}=" do |value|
434
434
  card = send "#{trait}_card"
435
435
  self.subcards ||= {}
436
- self.subcards[card.name] = {:type_id => card.type_id, :content=>value }
436
+ self.subcards[card.name] = {type_id: card.type_id, content: value }
437
437
  instance_variable_set "@#{trait}", value
438
438
  end
439
439
  end
@@ -1,26 +1,26 @@
1
1
  class Card
2
2
 
3
3
  class SetPattern
4
-
4
+
5
5
  class << self
6
6
  attr_accessor :pattern_code, :pattern_id, :junction_only, :assigns_type, :anchorless, :anchor_parts_count
7
-
7
+
8
8
  def card_keys
9
9
  @@card_keys ||= Card.set_patterns.inject({}) do |hash, set_pattern|
10
- card_key = Card.fetch( set_pattern.pattern_code.to_sym, :skip_modules=>true ).key
10
+ card_key = Card.fetch( set_pattern.pattern_code.to_sym, skip_modules: true ).key
11
11
  hash[ card_key ] = true
12
12
  hash
13
13
  end
14
14
  end
15
-
15
+
16
16
  def find pattern_code
17
- Card.set_patterns.find { |sub| sub.pattern_code == pattern_code }
17
+ Card.set_patterns.find { |sub| sub.pattern_code == pattern_code }
18
18
  end
19
-
19
+
20
20
  def junction_only?
21
21
  !!junction_only
22
22
  end
23
-
23
+
24
24
  def anchorless?
25
25
  !!anchorless
26
26
  end
@@ -30,7 +30,7 @@ class Card
30
30
  end
31
31
 
32
32
  def pattern
33
- Card.fetch(self.pattern_id, :skip_modules=>true).cardname
33
+ Card.fetch(self.pattern_id, skip_modules: true).cardname
34
34
  end
35
35
 
36
36
  def register pattern_code, opts={}
@@ -48,7 +48,7 @@ class Card
48
48
  junction_only? ? card.cardname.junction? : true
49
49
  end
50
50
 
51
- def anchor_parts_count
51
+ def anchor_parts_count
52
52
  @anchor_parts_count ||= ( anchorless? ? 0 : 1 )
53
53
  end
54
54