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
data/lib/card/success.rb CHANGED
@@ -11,16 +11,15 @@ class Card
11
11
  case success_params
12
12
  when Hash
13
13
  apply(success_params)
14
- when nil ; self.name = '_self'
15
- else ; self.target = success_params
14
+ when nil then self.name = '_self'
15
+ else; self.target = success_params
16
16
  end
17
17
  end
18
18
 
19
-
20
19
  def << value
21
20
  case value
22
- when Hash ; apply value
23
- else ; self.target = value
21
+ when Hash then apply value
22
+ else; self.target = value
24
23
  end
25
24
  end
26
25
 
@@ -35,10 +34,10 @@ class Card
35
34
 
36
35
  def mark= value
37
36
  case value
38
- when Integer ; @id = value
39
- when String ; @name = value
40
- when Card ; @card = value
41
- else ; self.target = value
37
+ when Integer then @id = value
38
+ when String then @name = value
39
+ when Card then @card = value
40
+ else; self.target = value
42
41
  end
43
42
  end
44
43
 
@@ -64,10 +63,10 @@ class Card
64
63
  when '' then ''
65
64
  when '*previous', :previous then :previous
66
65
  when /^(http|\/)/ then value
67
- when /^TEXT:\s*(.+)/ then $1
66
+ when /^TEXT:\s*(.+)/ then Regexp.last_match(1)
68
67
  when /^REDIRECT:\s*(.+)/
69
68
  @redirect = true
70
- process_target $1
69
+ process_target Regexp.last_match(1)
71
70
  else self.mark = value
72
71
  end
73
72
  end
@@ -89,7 +88,7 @@ class Card
89
88
  end
90
89
 
91
90
  def target name_context=@name_context
92
- card(name_context) || ( @target == :previous ? Card::Env.previous_location : @target ) || Card.fetch(name_context)
91
+ card(name_context) || (@target == :previous ? Card::Env.previous_location : @target) || Card.fetch(name_context)
93
92
  end
94
93
 
95
94
  def []= key, value
@@ -98,7 +97,7 @@ class Card
98
97
  elsif key.to_sym == :soft_redirect
99
98
  @redirect = :soft
100
99
  else
101
- @params.send "#{key}=", value
100
+ @params.send "#{key}=", value
102
101
  end
103
102
  end
104
103
 
@@ -128,9 +127,9 @@ class Card
128
127
  def method_missing method, *args
129
128
  case method
130
129
  when /^(\w+)=$/
131
- self[$1.to_sym] = args[0]
130
+ self[Regexp.last_match(1).to_sym] = args[0]
132
131
  when /^(\w+)$/
133
- self[$1.to_sym]
132
+ self[Regexp.last_match(1).to_sym]
134
133
  else
135
134
  super
136
135
  end
@@ -140,6 +139,4 @@ class Card
140
139
  Card::Env.session
141
140
  end
142
141
  end
143
-
144
-
145
- end
142
+ end
data/lib/card/version.rb CHANGED
@@ -2,9 +2,8 @@
2
2
 
3
3
  module Card::Version
4
4
  class << self
5
-
6
5
  def release
7
- @@version ||= File.read( File.expand_path '../../../VERSION', __FILE__ ).strip
6
+ @@version ||= File.read(File.expand_path '../../../VERSION', __FILE__).strip
8
7
  end
9
8
  end
10
9
  end
@@ -3,18 +3,18 @@ class Card
3
3
  class << self
4
4
  SIZE = 500
5
5
  LIMIT = 1000 # reduce cache size to SIZE if LIMIT is reached
6
- CNT_KEY = 'view_cache_cnt'
7
- FREQUENCY_KEY = 'view_cache_frequency'
6
+ CNT_KEY = 'view_cache_cnt'.freeze
7
+ FREQUENCY_KEY = 'view_cache_frequency'.freeze
8
8
 
9
9
  def cache
10
10
  Card::Cache[Card::ViewCache]
11
11
  end
12
12
 
13
13
  def fetch format, view, args, &block
14
- return block.call if cacheable_view?(view, format)
14
+ return yield if cacheable_view?(view, format)
15
15
 
16
16
  key = cache_key view, format, args
17
- if !cache.exist?(key)
17
+ unless cache.exist?(key)
18
18
  increment_cached_views_cnt
19
19
  reduce_cache if cached_views_cnt > LIMIT
20
20
  end
@@ -9,8 +9,8 @@ class Card
9
9
 
10
10
  class << self
11
11
  def new obj
12
- return obj if self.class===obj
13
- str = Array===obj ? obj*joint : obj.to_s
12
+ return obj if self.class === obj
13
+ str = Array === obj ? obj * joint : obj.to_s
14
14
  if known_name = @@name2viewnameobject[str]
15
15
  known_name
16
16
  else
@@ -23,12 +23,12 @@ class Card
23
23
  @s = str.to_s.strip
24
24
  @s = @s.encode('UTF-8') if RUBYENCODING
25
25
  @key = if @s.index(self.class.joint)
26
- @parts = @s.split(/\s*#{JOINT_RE}\s*/)
27
- @parts << '' if @s[-1,1] == self.class.joint
26
+ @parts = @s.split(/\s*#{JOINT_RE}\s*/)
27
+ @parts << '' if @s[-1, 1] == self.class.joint
28
28
  @simple = false
29
29
  @parts.map { |p| p.to_name.key } * self.class.joint
30
- else
31
- @parts = [str]
30
+ else
31
+ @parts = [str]
32
32
  @simple = true
33
33
  str.empty? ? '' : simple_key
34
34
  end
@@ -36,9 +36,11 @@ class Card
36
36
  end
37
37
 
38
38
  def simple_key
39
- decoded.underscore.gsub(/[^#{OK4KEY_RE}]+/,'_').split(/_+/).reject(&:empty?)*'_'
39
+ decoded.underscore.gsub(/[^#{OK4KEY_RE}]+/, '_').split(/_+/).reject(&:empty?) * '_'
40
40
  end
41
41
 
42
- def to_viewname() self end
42
+ def to_viewname
43
+ self
44
+ end
43
45
  end
44
46
  end
data/lib/cardio.rb CHANGED
@@ -45,7 +45,7 @@ module Cardio
45
45
  space_last_in_multispace: true,
46
46
  closed_search_limit: 50,
47
47
 
48
- non_createable_types: [%w{ signup setting set }],
48
+ non_createable_types: [%w( signup setting set )],
49
49
  view_cache: false,
50
50
 
51
51
  encoding: 'utf-8',
@@ -6,8 +6,7 @@ require 'rails/generators/active_record'
6
6
  class Card
7
7
  module Generators
8
8
  module ClassMethods
9
-
10
- def source_root(path = nil)
9
+ def source_root path=nil
11
10
  if path
12
11
  @_card_source_root = path
13
12
  else
@@ -17,7 +16,7 @@ class Card
17
16
 
18
17
  # Override Rails default banner (wagn is the command name).
19
18
  def banner
20
- "wagn generate #{namespace} #{self.arguments.map(&:usage)*' '} [options]".gsub(/\s+/, ' ')
19
+ "wagn generate #{namespace} #{arguments.map(&:usage) * ' '} [options]".gsub(/\s+/, ' ')
21
20
  end
22
21
  end
23
22
 
@@ -29,4 +28,3 @@ class Card
29
28
  end
30
29
  end
31
30
  end
32
-
@@ -9,13 +9,13 @@ class Card
9
9
 
10
10
  argument :module_name, required: true
11
11
  class_option 'core', type: :boolean, aliases: '-c', default: false, group: :runtime,
12
- desc: 'create format files in Card gem'
12
+ desc: 'create format files in Card gem'
13
13
 
14
14
  def create_files
15
15
  mod_path = if options.core?
16
- File.join Cardio.gem_root, 'mod', file_name
17
- else
18
- File.join 'mod', file_name
16
+ File.join Cardio.gem_root, 'mod', file_name
17
+ else
18
+ File.join 'mod', file_name
19
19
  end
20
20
  format_path = File.join(mod_path, 'format', "#{module_name}_format.rb")
21
21
  spec_path = File.join(mod_path, 'spec', 'format', "#{module_name}_format_spec.rb")
@@ -8,29 +8,29 @@ class Card
8
8
  source_root File.expand_path('../templates', __FILE__)
9
9
 
10
10
  class_option 'core', type: :boolean, aliases: '-c', default: false, group: :runtime,
11
- desc: "Create card migration for card core"
11
+ desc: 'Create card migration for card core'
12
12
 
13
13
  def create_migration_file
14
14
  migration_type = options['core'] ? :core_cards : :deck_cards
15
15
  mig_paths = Cardio.migration_paths(migration_type)
16
16
  raise "No migration directory for #{migration_type}" if mig_paths.blank?
17
17
  set_local_assigns!
18
- migration_template @migration_template, File.join( mig_paths.first, "#{file_name}.rb")
18
+ migration_template @migration_template, File.join(mig_paths.first, "#{file_name}.rb")
19
19
  end
20
20
 
21
- protected
21
+ protected
22
22
 
23
23
  # sets the default migration template that is being used for the generation of the migration
24
24
  # depending on the arguments which would be sent out in the command line, the migration template
25
25
  # and the table name instance variables are setup.
26
26
 
27
27
  def set_local_assigns!
28
- @migration_template = "card_migration.erb"
28
+ @migration_template = 'card_migration.erb'
29
29
  @migration_parent_class = options['core'] ? 'Card::CoreMigration' : 'Card::Migration'
30
30
  case file_name
31
31
  when /^(import)_(.*)(?:\.json)?/
32
- @migration_action = $1
33
- @json_filename = "#{$2}.json"
32
+ @migration_action = Regexp.last_match(1)
33
+ @json_filename = "#{Regexp.last_match(2)}.json"
34
34
  end
35
35
  end
36
36
  end
@@ -10,20 +10,19 @@ class Card
10
10
  argument :set_pattern, required: true
11
11
  argument :anchors, required: true, type: :array
12
12
  class_option 'core', type: :boolean, aliases: '-c', default: false, group: :runtime,
13
- desc: 'create set files in Card gem'
13
+ desc: 'create set files in Card gem'
14
14
 
15
15
  def create_files
16
16
  mod_path = if options.core?
17
- File.join Cardio.gem_root, 'mod', file_name
18
- else
19
- File.join 'mod', file_name
17
+ File.join Cardio.gem_root, 'mod', file_name
18
+ else
19
+ File.join 'mod', file_name
20
20
  end
21
21
  set_path = File.join(mod_path, 'set', set_pattern, anchors[0..-2], "#{anchors.last}.rb")
22
- spec_path = File.join(mod_path, 'spec', 'set', set_pattern, anchors[0..-2], "#{anchors.last}_spec.rb" )
22
+ spec_path = File.join(mod_path, 'spec', 'set', set_pattern, anchors[0..-2], "#{anchors.last}_spec.rb")
23
23
  template 'set_template.erb', set_path
24
24
  template 'set_spec_template.erb', spec_path
25
25
  end
26
26
  end
27
27
  end
28
28
  end
29
-
@@ -36,7 +36,8 @@ module Card::Chunk
36
36
  @process_chunk = name =~ /^\#\#/ ? '' : visible_comment(in_brackets)
37
37
  else
38
38
  @options = interpret_options
39
- @options.merge! inc_name: name, inc_syntax: in_brackets
39
+ @options[:inc_name] = name
40
+ @options[:inc_syntax] = in_brackets
40
41
  @name = name
41
42
  end
42
43
  end
@@ -25,7 +25,7 @@ module Card::Chunk
25
25
  end
26
26
 
27
27
  @link_text = objectify @link_text
28
- if target =~ %r(/|mailto:)
28
+ if target =~ %r{/|mailto:}
29
29
  @explicit_link = objectify target
30
30
  else
31
31
  @name = target
@@ -34,7 +34,7 @@ module Card::Chunk
34
34
 
35
35
  def divider_index string
36
36
  # there's probably a better way to do the following.
37
- # point is to find the first pipe that's not inside an inclusion
37
+ # point is to find the first pipe that's not inside an nest
38
38
  return unless string.index '|'
39
39
  string_copy = "#{string}" # had to do this to create new string?!
40
40
  string.scan /\{\{[^\}]*\}\}/ do |incl|
@@ -6,19 +6,16 @@
6
6
  # and within HTML tags.
7
7
  module Card::Chunk
8
8
  class EscapedLiteral < Abstract
9
- FULL_RE = { '[' => /^\\\[\[[^\]]*\]\]/, '{' => /^\\\{\{[^\}]*\}\}/ }
10
- Card::Chunk.register_class self, {
11
- prefix_re: '\\\\(?:\\[\\[|\\{\\{)',
12
- idx_char: '\\'
13
- }
9
+ FULL_RE = { '[' => /^\\\[\[[^\]]*\]\]/, '{' => /^\\\{\{[^\}]*\}\}/ }.freeze
10
+ Card::Chunk.register_class self, prefix_re: '\\\\(?:\\[\\[|\\{\\{)',
11
+ idx_char: '\\'
14
12
 
15
13
  def self.full_re prefix
16
- re = FULL_RE[ prefix[1,1] ]
14
+ re = FULL_RE[prefix[1, 1]]
17
15
  end
18
16
 
19
- def interpret match, content
20
- @process_chunk = match[0].sub(/^\\(.)/, "<span>\\1</span>")
17
+ def interpret match, _content
18
+ @process_chunk = match[0].sub(/^\\(.)/, '<span>\\1</span>')
21
19
  end
22
20
  end
23
-
24
21
  end
@@ -22,7 +22,7 @@ module Card::Chunk
22
22
  Card::Query::OPERATORS.keys +
23
23
  Card::Query::ATTRIBUTES.keys +
24
24
  Card::Query::CONJUNCTIONS.keys +
25
- ['desc', 'asc', 'count']
25
+ %w(desc asc count)
26
26
  ).map(&:to_name)
27
27
  )
28
28
 
@@ -11,9 +11,9 @@ module Card::Chunk
11
11
  ref_card =
12
12
  case rendered_name # FIXME: this should be standard fetch option.
13
13
  when /^\~(\d+)$/ # get by id
14
- Card.fetch $1.to_i
14
+ Card.fetch Regexp.last_match(1).to_i
15
15
  when /^\:(\w+)$/ # get by codename
16
- Card.fetch $1.to_sym
16
+ Card.fetch Regexp.last_match(1).to_sym
17
17
  end
18
18
  ref_card ? ref_card.cardname : rendered_name.to_name
19
19
  end
@@ -18,45 +18,42 @@ require 'uri'
18
18
  # [iso3166]: http://geotags.com/iso3166/
19
19
  module Card::Chunk
20
20
  class URI < Abstract
21
+ SCHEMES = %w(irc http https ftp ssh git sftp file ldap ldaps mailto).freeze
21
22
 
22
- SCHEMES = %w{irc http https ftp ssh git sftp file ldap ldaps mailto}
23
-
24
- REJECTED_PREFIX_RE = %w{ ! ": " ' ]( }.map{|s|Regexp.escape s} * '|'
23
+ REJECTED_PREFIX_RE = %w{ ! ": " ' ]( }.map { |s| Regexp.escape s } * '|'
25
24
 
26
25
  attr_reader :uri, :link_text
27
26
  delegate :to, :scheme, :host, :port, :path, :query, :fragment, to: :uri
28
27
 
29
- Card::Chunk.register_class self, {
30
- prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})(?:#{SCHEMES * '|'})\\:)",
31
- full_re: /^#{::URI.regexp( SCHEMES )}/,
32
- idx_char: ':'
33
- }
28
+ Card::Chunk.register_class self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})(?:#{SCHEMES * '|'})\\:)",
29
+ full_re: /^#{::URI.regexp(SCHEMES)}/,
30
+ idx_char: ':'
34
31
 
35
32
  class << self
36
33
  def full_match content, prefix
37
- prepend_str = if prefix[-1,1] != ':' && config[:prepend_str]
38
- config[:prepend_str]
39
- else
40
- ''
34
+ prepend_str = if prefix[-1, 1] != ':' && config[:prepend_str]
35
+ config[:prepend_str]
36
+ else
37
+ ''
41
38
  end
42
39
  content = prepend_str + content
43
40
  match = super content, prefix
44
- [ match, prepend_str.length ]
41
+ [match, prepend_str.length]
45
42
  end
46
43
 
47
44
  def context_ok? content, chunk_start
48
- preceding_string = content[chunk_start-2..chunk_start-1]
49
- !( preceding_string =~ /(?:#{REJECTED_PREFIX_RE})$/ )
45
+ preceding_string = content[chunk_start - 2..chunk_start - 1]
46
+ !(preceding_string =~ /(?:#{REJECTED_PREFIX_RE})$/)
50
47
  end
51
48
  end
52
49
 
53
- def interpret match, content
50
+ def interpret match, _content
54
51
  chunk = match[0]
55
- last_char = chunk[-1,1]
52
+ last_char = chunk[-1, 1]
56
53
  chunk.gsub!(/(?:&nbsp;)+/, '')
57
54
 
58
55
  @trailing_punctuation = if %w{ , . ) ! ? : }.member?(last_char)
59
- @text.chop!
56
+ @text.chop!
60
57
  chunk.chop!
61
58
  last_char
62
59
  end
@@ -64,71 +61,63 @@ module Card::Chunk
64
61
 
65
62
  @link_text = chunk
66
63
 
67
- #warn "uri parse[#{match.inspect}]"
68
- @uri = ::URI.parse( chunk )
64
+ # warn "uri parse[#{match.inspect}]"
65
+ @uri = ::URI.parse(chunk)
69
66
  @process_chunk = "#{format.web_link(@link_text)}#{@trailing_punctuation}"
70
67
  rescue ::URI::Error => e
71
- #warn "rescue parse #{chunk_class}: '#{m}' #{e.inspect} #{e.backtrace*"\n"}"
68
+ # warn "rescue parse #{chunk_class}: '#{m}' #{e.inspect} #{e.backtrace*"\n"}"
72
69
  Rails.logger.warn "rescue parse #{self.class}: #{e.inspect}"
73
70
  end
74
-
75
-
76
71
  end
77
72
 
78
73
  # FIXME: DRY, merge these two into one class
79
74
  class EmailURI < URI
75
+ PREPEND_STR = 'mailto:'.freeze
76
+ EMAIL = '[a-zA-Zd](?:[-a-zA-Zd]*[a-zA-Zd])?\\@'.freeze
80
77
 
81
- PREPEND_STR = 'mailto:'
82
- EMAIL = "[a-zA-Z\d](?:[-a-zA-Z\d]*[a-zA-Z\d])?\\@"
83
-
84
- Card::Chunk.register_class self, {
85
- prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{EMAIL})\\b",
86
- full_re: /^#{::URI.regexp( SCHEMES )}/,
87
- prepend_str: PREPEND_STR,
88
- idx_char: '@'
89
- }
78
+ Card::Chunk.register_class self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{EMAIL})\\b",
79
+ full_re: /^#{::URI.regexp(SCHEMES)}/,
80
+ prepend_str: PREPEND_STR,
81
+ idx_char: '@'
90
82
 
91
83
  def interpret match, content
92
84
  super
93
- @text = @text.sub(/^mailto:/,'') # this removes the prepended string from the unchanged match text
85
+ @text = @text.sub(/^mailto:/, '') # this removes the prepended string from the unchanged match text
94
86
  @process_chunk = "#{format.web_link(@link_text, text: @text)}#{@trailing_punctuation}"
95
87
  end
96
88
  end
97
89
 
98
90
  class HostURI < URI
99
-
100
- GENERIC = 'aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org'
101
-
102
- COUNTRY = 'ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|' +
103
- 'bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|ch|ci|ck|cl|' +
104
- 'cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|' +
105
- 'fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|' +
106
- 'hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|' +
107
- 'kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|' +
108
- 'mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|' +
109
- 'nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|' +
110
- 'sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|' +
111
- 'tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|' +
112
- 'ws|ye|yt|yu|za|zm|zr|zw|' +
113
- 'eu' # made this separate, since it's not technically a country -efm
114
- # These are needed otherwise HOST will match almost anything
115
-
116
- TLDS = "(?:#{GENERIC}|#{COUNTRY})"
117
- #TLDS = "(?:#{GENERIC})"
118
-
119
- PREPEND_STR = 'http://'
120
- HOST = "(?:[a-zA-Z\d](?:[-a-zA-Z\d]*[a-zA-Z\d])?\\.)+#{TLDS}"
121
-
122
- Card::Chunk.register_class self, {
123
- prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{HOST})\\b",
124
- full_re: /^#{::URI.regexp( SCHEMES )}/,
125
- prepend_str: PREPEND_STR
126
- }
91
+ GENERIC = 'aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org'.freeze
92
+
93
+ COUNTRY = 'ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|' \
94
+ 'bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|ch|ci|ck|cl|' \
95
+ 'cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|' \
96
+ 'fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|' \
97
+ 'hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|' \
98
+ 'kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|' \
99
+ 'mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|' \
100
+ 'nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|' \
101
+ 'sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|' \
102
+ 'tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|' \
103
+ 'ws|ye|yt|yu|za|zm|zr|zw|' \
104
+ 'eu'.freeze # made this separate, since it's not technically a country -efm
105
+ # These are needed otherwise HOST will match almost anything
106
+
107
+ TLDS = "(?:#{GENERIC}|#{COUNTRY})".freeze
108
+ # TLDS = "(?:#{GENERIC})"
109
+
110
+ PREPEND_STR = 'http://'.freeze
111
+ HOST = "(?:[a-zA-Z\d](?:[-a-zA-Z\d]*[a-zA-Z\d])?\\.)+#{TLDS}".freeze
112
+
113
+ Card::Chunk.register_class self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{HOST})\\b",
114
+ full_re: /^#{::URI.regexp(SCHEMES)}/,
115
+ prepend_str: PREPEND_STR
127
116
 
128
117
  def interpret match, content
129
118
  super
130
- @text = @text.sub(/^http:\/\//,'') # this removes the prepended string from the unchanged match text
131
- #warn "huri t:#{@text}, #{match}, #{params.inspect}"
119
+ @text = @text.sub(/^http:\/\//, '') # this removes the prepended string from the unchanged match text
120
+ # warn "huri t:#{@text}, #{match}, #{params.inspect}"
132
121
  @process_chunk = "#{format.web_link(@link_text, text: @text)}#{@trailing_punctuation}"
133
122
  end
134
123
  end