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,4 +1,3 @@
1
-
2
1
  module ClassMethods
3
2
  def empty_trash
4
3
  Card.delete_trashed_files
@@ -17,7 +16,7 @@ module ClassMethods
17
16
  file_ids.each do |file_id|
18
17
  next unless trashed_card_ids.member?(file_id)
19
18
  if Card.exists?(file_id) # double check!
20
- fail Card::Error, 'Narrowly averted deleting current file'
19
+ raise Card::Error, 'Narrowly averted deleting current file'
21
20
  end
22
21
  FileUtils.rm_rf "#{dir}/#{file_id}", secure: true
23
22
  end
@@ -29,7 +28,7 @@ module ClassMethods
29
28
  end
30
29
 
31
30
  def all_trashed_card_ids
32
- trashed_card_sql = %{ select id from cards where trash is true }
31
+ trashed_card_sql = %( select id from cards where trash is true )
33
32
  sql_results = Card.connection.select_all(trashed_card_sql)
34
33
  sql_results.map(&:values).flatten.map(&:to_i)
35
34
  end
@@ -40,6 +39,7 @@ module ClassMethods
40
39
  WHERE cards.type_id IN (#{Card::FileID}, #{Card::ImageID})
41
40
  AND card_actions.draft = true"
42
41
  actions.each do |action|
42
+ # we don't want to delete uploads in progress
43
43
  if older_than_five_days?(action.created_at) && (card = action.card)
44
44
  # we don't want to delete uploads in progress
45
45
  card.delete_files_for_action action
@@ -88,7 +88,7 @@ module ClassMethods
88
88
  end
89
89
 
90
90
  def older_than_five_days? time
91
- Time.now - time > 432000
91
+ Time.now - time > 432_000
92
92
  end
93
93
  end
94
94
 
@@ -120,13 +120,11 @@ format :html do
120
120
  self.class.ancestors.each_with_object({}) do |format_class, hash|
121
121
  views =
122
122
  format_class.instance_methods.map do |method|
123
- if method.to_s.match(/^_view_(.+)$/)
124
- "<li>#{$1}</li>"
125
- end
123
+ "<li>#{Regexp.last_match(1)}</li>" if method.to_s =~ /^_view_(.+)$/
126
124
  end.compact.join "\n"
127
125
  if views.present?
128
- format_class.name.match(/^Card(::Set)?::(.+?)$/) #::(\w+Format)
129
- hash[$2] = views
126
+ format_class.name =~ /^Card(::Set)?::(.+?)$/ #::(\w+Format)
127
+ hash[Regexp.last_match(2)] = views
130
128
  end
131
129
  end
132
130
  accordion_group format_views
@@ -134,9 +132,7 @@ format :html do
134
132
 
135
133
  view :views_by_name do
136
134
  views = methods.map do |method|
137
- if method.to_s.match(/^_view_(.+)$/)
138
- $1
139
- end
135
+ Regexp.last_match(1) if method.to_s =~ /^_view_(.+)$/
140
136
  end.compact.sort
141
137
  "<ul>#{wrap_each_with :li, views}</ul>"
142
138
  end
@@ -161,7 +157,7 @@ format :html do
161
157
  when Array then content.join "\n"
162
158
  else content
163
159
  end
164
- %{
160
+ %(
165
161
  <div class="panel panel-default">
166
162
  <div class="panel-heading" role="tab" id="heading-#{collapse_id}">
167
163
  <h4 class="panel-title">
@@ -179,6 +175,6 @@ format :html do
179
175
  </div>
180
176
  </div>
181
177
  </div>
182
- }.html_safe
178
+ ).html_safe
183
179
  end
184
180
  end
@@ -1,4 +1,4 @@
1
- event :clear_view_cache, after: :store do
1
+ event :clear_view_cache, :finalize do
2
2
  Card::ViewCache.reset
3
3
  end
4
4
 
@@ -6,4 +6,4 @@ format do
6
6
  def view_caching?
7
7
  false
8
8
  end
9
- end
9
+ end
@@ -1,11 +1,11 @@
1
- def label name
1
+ def label _name
2
2
  'All cards'
3
3
  end
4
4
 
5
- def prototype_args anchor
5
+ def prototype_args _anchor
6
6
  {}
7
7
  end
8
8
 
9
- def follow_label name
9
+ def follow_label _name
10
10
  'everything'
11
11
  end
@@ -1,13 +1,13 @@
1
1
  @@options = { junction_only: true }
2
2
 
3
- def label name
3
+ def label _name
4
4
  'All "+" cards'
5
5
  end
6
6
 
7
- def prototype_args anchor
7
+ def prototype_args _anchor
8
8
  { name: '+' }
9
9
  end
10
10
 
11
- def follow_label name
11
+ def follow_label _name
12
12
  'all "+" cards'
13
13
  end
@@ -1,5 +1,5 @@
1
1
  def label name
2
- %{All "#{name}" cards}
2
+ %(All "#{name}" cards)
3
3
  end
4
4
 
5
5
  def prototype_args anchor
@@ -19,5 +19,5 @@ def anchor_id card
19
19
  end
20
20
 
21
21
  def follow_label name
22
- %{all "#{name}s"}
22
+ %(all "#{name}s")
23
23
  end
@@ -1,8 +1,8 @@
1
- def label name
1
+ def label _name
2
2
  'All "*" cards'
3
3
  end
4
4
 
5
- def prototype_args anchor
5
+ def prototype_args _anchor
6
6
  { name: '*dummy' }
7
7
  end
8
8
 
@@ -10,6 +10,6 @@ def pattern_applies? card
10
10
  card.cardname.star?
11
11
  end
12
12
 
13
- def follow_label name
13
+ def follow_label _name
14
14
  'all "*" cards'
15
15
  end
@@ -1,10 +1,10 @@
1
1
  @@options = { junction_only: true }
2
2
 
3
- def label name
3
+ def label _name
4
4
  'All "+*" cards'
5
5
  end
6
6
 
7
- def prototype_args anchor
7
+ def prototype_args _anchor
8
8
  { name: '*dummy+*dummy' }
9
9
  end
10
10
 
@@ -12,6 +12,6 @@ def pattern_applies? card
12
12
  card.cardname.rstar?
13
13
  end
14
14
 
15
- def follow_label name
15
+ def follow_label _name
16
16
  'all "+*" cards'
17
17
  end
@@ -4,7 +4,7 @@
4
4
  }
5
5
 
6
6
  def label name
7
- %{All "+#{name}" cards}
7
+ %(All "+#{name}" cards)
8
8
  end
9
9
 
10
10
  def prototype_args anchor
@@ -16,5 +16,5 @@ def anchor_name card
16
16
  end
17
17
 
18
18
  def follow_label name
19
- %{all "+#{name}s"}
19
+ %(all "+#{name}s")
20
20
  end
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  def label name
8
- %{All "+#{name.to_name.tag}" cards on "#{name.to_name.left_name}" cards}
8
+ %(All "+#{name.to_name.tag}" cards on "#{name.to_name.left_name}" cards)
9
9
  end
10
10
 
11
11
  def prototype_args anchor
@@ -22,5 +22,5 @@ def anchor_name card
22
22
  end
23
23
 
24
24
  def follow_label name
25
- %{all "+#{name.to_name.tag}" on "#{name.to_name.left_name}s"}
25
+ %(all "+#{name.to_name.tag}" on "#{name.to_name.left_name}s")
26
26
  end
@@ -1,5 +1,5 @@
1
1
  def label name
2
- %{The card "#{name}"}
2
+ %(The card "#{name}")
3
3
  end
4
4
 
5
5
  def prototype_args anchor
@@ -1,14 +1,13 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe Card::Chunk::EscapedLiteral, "literal chunk tests" do
4
-
5
- it "should handle escaped link" do
6
- expect(render_content('write this: \[[text]]')).to eq('write this: <span>[</span>[text]]')
3
+ describe Card::Chunk::EscapedLiteral, 'literal chunk tests' do
4
+ it 'should handle escaped link' do
5
+ expect(render_content('write this: \[[text]]'))
6
+ .to eq('write this: <span>[</span>[text]]')
7
7
  end
8
8
 
9
- it "should handle escaped inclusion" do
10
- expect(render_content('write this: \{{cardname}}')).to eq('write this: <span>{</span>{cardname}}')
9
+ it 'should handle escaped nest' do
10
+ expect(render_content('write this: \{{cardname}}'))
11
+ .to eq('write this: <span>{</span>{cardname}}')
11
12
  end
12
-
13
13
  end
14
-
@@ -1,197 +1,195 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe Card::Chunk::URI, "URI chunk tests" do
4
- it "should test_non_matches" do
3
+ describe Card::Chunk::URI, 'URI chunk tests' do
4
+ it 'should test_non_matches' do
5
5
  no_match(Card::Chunk::URI, 'There is no URI here')
6
6
  no_match(Card::Chunk::URI,
7
- 'One gemstone is the garnet:reddish in colour, like ruby')
7
+ 'One gemstone is the garnet:reddish in colour, like ruby')
8
8
  end
9
9
 
10
- it "should test_simple_uri" do
10
+ it 'should test_simple_uri' do
11
11
  # Simplest case
12
12
  match_chunk(Card::Chunk::URI, 'http://www.example.com',
13
- scheme: 'http', host: 'www.example.com', path: '',
14
- link_text: 'http://www.example.com'
15
- )
13
+ scheme: 'http', host: 'www.example.com', path: '',
14
+ link_text: 'http://www.example.com'
15
+ )
16
16
  end
17
- it "should work with trailing slash" do
17
+ it 'should work with trailing slash' do
18
18
  match_chunk(Card::Chunk::URI, 'http://www.example.com/',
19
- scheme: 'http', host: 'www.example.com', path: '/',
20
- link_text: 'http://www.example.com/'
21
- )
19
+ scheme: 'http', host: 'www.example.com', path: '/',
20
+ link_text: 'http://www.example.com/'
21
+ )
22
22
  end
23
- it "should work with trailing slash inside html tags" do
23
+ it 'should work with trailing slash inside html tags' do
24
24
  match_chunk(Card::Chunk::URI, '<p>http://www.example.com/</p>',
25
- scheme: 'http', host: 'www.example.com', path: '/',
26
- link_text: 'http://www.example.com/'
27
- )
25
+ scheme: 'http', host: 'www.example.com', path: '/',
26
+ link_text: 'http://www.example.com/'
27
+ )
28
28
  end
29
- it "should work with trailing period (no longer suppressed .. spec?)" do
29
+ it 'should work with trailing period (no longer suppressed .. spec?)' do
30
30
  match_chunk(Card::Chunk::URI, 'http://www.example.com/. ',
31
- scheme: 'http', host: 'www.example.com', path: '/',
32
- link_text: 'http://www.example.com/'
33
- )
31
+ scheme: 'http', host: 'www.example.com', path: '/',
32
+ link_text: 'http://www.example.com/'
33
+ )
34
34
  end
35
- it "should work with trailing period inside html tags (dot change?)" do
35
+ it 'should work with trailing period inside html tags (dot change?)' do
36
36
  match_chunk(Card::Chunk::URI, '<p>http://www.example.com/.</p>',
37
- scheme: 'http', host: 'www.example.com', path: '/',
38
- link_text: 'http://www.example.com/'
39
- )
37
+ scheme: 'http', host: 'www.example.com', path: '/',
38
+ link_text: 'http://www.example.com/'
39
+ )
40
40
  end
41
- it "should work with trailing &nbsp;" do
41
+ it 'should work with trailing &nbsp;' do
42
42
  match_chunk(Card::Chunk::URI, 'http://www.example.com/&nbsp;',
43
- scheme: 'http', host: 'www.example.com', path: '/',
44
- link_text: 'http://www.example.com/'
45
- )
43
+ scheme: 'http', host: 'www.example.com', path: '/',
44
+ link_text: 'http://www.example.com/'
45
+ )
46
46
  end
47
- it "should work without http://" do
47
+ it 'should work without http://' do
48
48
  match_chunk(Card::Chunk::URI, 'www.example.com',
49
- scheme: 'http', host: 'www.example.com', text: 'www.example.com', link_text: 'http://www.example.com'
50
- )
49
+ scheme: 'http', host: 'www.example.com', text: 'www.example.com', link_text: 'http://www.example.com'
50
+ )
51
51
  match_chunk(Card::Chunk::URI, 'example.com',
52
- scheme: 'http',host: 'example.com', text: 'example.com', link_text: 'http://example.com'
53
- )
52
+ scheme: 'http', host: 'example.com', text: 'example.com', link_text: 'http://example.com'
53
+ )
54
54
  end
55
- it "should match \"unusual\" base domain (was a bug in an early version)" do
55
+ it 'should match "unusual" base domain (was a bug in an early version)' do
56
56
  match_chunk(Card::Chunk::URI, 'http://example.com.au/',
57
- scheme: 'http', host: 'example.com.au', link_text: 'http://example.com.au/'
58
- )
57
+ scheme: 'http', host: 'example.com.au', link_text: 'http://example.com.au/'
58
+ )
59
59
  end
60
60
  it 'should work with "unusual" base domain without http://' do
61
61
  match_chunk(Card::Chunk::URI, 'example.com.au',
62
- scheme: 'http', host: 'example.com.au', text: 'example.com.au', link_text: 'http://example.com.au'
63
- )
62
+ scheme: 'http', host: 'example.com.au', text: 'example.com.au', link_text: 'http://example.com.au'
63
+ )
64
64
  end
65
65
  it 'should work with another "unusual" base domain' do
66
66
  match_chunk(Card::Chunk::URI, 'http://www.example.co.uk/',
67
- scheme: 'http', host: 'www.example.co.uk',
68
- link_text: 'http://www.example.co.uk/'
69
- )
67
+ scheme: 'http', host: 'www.example.co.uk',
68
+ link_text: 'http://www.example.co.uk/'
69
+ )
70
70
  match_chunk(Card::Chunk::URI, 'example.co.uk',
71
- scheme: 'http', host: 'example.co.uk', link_text: 'http://example.co.uk', text: 'example.co.uk'
72
- )
71
+ scheme: 'http', host: 'example.co.uk', link_text: 'http://example.co.uk', text: 'example.co.uk'
72
+ )
73
73
  end
74
- it "should work with some path at the end" do
74
+ it 'should work with some path at the end' do
75
75
  match_chunk(Card::Chunk::URI, 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation',
76
- scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
77
- link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
78
- )
76
+ scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
77
+ link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
78
+ )
79
79
  end
80
- it "should work with some path at the end, and withot http:// prefix (@link_text has prefix added)" do
80
+ it 'should work with some path at the end, and withot http:// prefix (@link_text has prefix added)' do
81
81
  match_chunk(Card::Chunk::URI, 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
82
- scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
83
- text: 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
84
- link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
85
- )
82
+ scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
83
+ text: 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
84
+ link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
85
+ )
86
86
  end
87
- it "should work with a port number" do
87
+ it 'should work with a port number' do
88
88
  match_chunk(Card::Chunk::URI, 'http://www.example.com:80',
89
- scheme: 'http', host: 'www.example.com', port: 80, path: '',
90
- link_text: 'http://www.example.com:80')
89
+ scheme: 'http', host: 'www.example.com', port: 80, path: '',
90
+ link_text: 'http://www.example.com:80')
91
91
  end
92
- it "should work with a port number and a path" do
92
+ it 'should work with a port number and a path' do
93
93
  match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation',
94
- scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
95
- link_text: 'http://www.example.com.tw:80/HelpOnNavigation')
94
+ scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
95
+ link_text: 'http://www.example.com.tw:80/HelpOnNavigation')
96
96
  end
97
- it "should work with a query" do
97
+ it 'should work with a query' do
98
98
  match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation?arg=val',
99
- scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
100
- query: 'arg=val',
101
- link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val')
99
+ scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
100
+ query: 'arg=val',
101
+ link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val')
102
102
  end
103
- it "should work on Query with two arguments" do
103
+ it 'should work on Query with two arguments' do
104
104
  match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation?arg=val&arg2=val2',
105
- scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
106
- query: 'arg=val&arg2=val2',
107
- link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val&arg2=val2')
105
+ scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
106
+ query: 'arg=val&arg2=val2',
107
+ link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val&arg2=val2')
108
108
  end
109
- it "should work with IRC" do
109
+ it 'should work with IRC' do
110
110
  match_chunk(Card::Chunk::URI, 'irc://irc.freenode.net#recentchangescamp',
111
- scheme: 'irc', host: 'irc.freenode.net',
112
- fragment: 'recentchangescamp',
113
- link_text: 'irc://irc.freenode.net#recentchangescamp')
111
+ scheme: 'irc', host: 'irc.freenode.net',
112
+ fragment: 'recentchangescamp',
113
+ link_text: 'irc://irc.freenode.net#recentchangescamp')
114
114
  end
115
115
 
116
- it "should see HTTPS" do
116
+ it 'should see HTTPS' do
117
117
  match_chunk(Card::Chunk::URI, 'https://www.example.com',
118
- scheme: 'https', host: 'www.example.com', port: 443, path: '', query: nil,
119
- link_text: 'https://www.example.com')
118
+ scheme: 'https', host: 'www.example.com', port: 443, path: '', query: nil,
119
+ link_text: 'https://www.example.com')
120
120
  end
121
- it "should see FTP" do
121
+ it 'should see FTP' do
122
122
  match_chunk(Card::Chunk::URI, 'ftp://www.example.com',
123
- scheme: 'ftp', host: 'www.example.com', port: 21, path: '', query: nil,
124
- link_text: 'ftp://www.example.com')
123
+ scheme: 'ftp', host: 'www.example.com', port: 21, path: '', query: nil,
124
+ link_text: 'ftp://www.example.com')
125
125
  end
126
- it "should handle mailto:" do
126
+ it 'should handle mailto:' do
127
127
  match_chunk(Card::Chunk::URI, 'mailto:jdoe123@example.com',
128
- scheme: 'mailto', host: nil, port: nil, path: nil, query: nil,
129
- to: 'jdoe123@example.com', link_text: 'mailto:jdoe123@example.com')
128
+ scheme: 'mailto', host: nil, port: nil, path: nil, query: nil,
129
+ to: 'jdoe123@example.com', link_text: 'mailto:jdoe123@example.com')
130
130
  end
131
- # something nonexistant (pending spec? this is no longer recognized, the sheme has to be listed)
132
- #match_chunk(Card::Chunk::URI, 'foobar://www.example.com',
133
- # scheme: 'foobar', host: 'www.example.com', port: '', path: '', query: nil,
134
- # link_text: 'foobar://www.example.com')
135
-
136
- it "should run more basic cases" do
131
+ # something nonexistant (pending spec? this is no longer recognized, the sheme has to be listed)
132
+ # match_chunk(Card::Chunk::URI, 'foobar://www.example.com',
133
+ # scheme: 'foobar', host: 'www.example.com', port: '', path: '', query: nil,
134
+ # link_text: 'foobar://www.example.com')
137
135
 
136
+ it 'should run more basic cases' do
138
137
  # from *css (with () around the URI)
139
138
  # so, now this doesn't even match because I fixed the suspiciou* stuff
140
139
  no_match(Card::Chunk::URI, "background: url('http://dl.dropbox.com/u/4657397/wikirate/wikirate_files/wr-bg-menu-line.gif') repeat-x;")
141
140
 
142
141
  # Soap opera (the most complex case imaginable... well, not really, there should be more evil)
143
142
  match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/~jdoe123/Help%20Me%20?arg=val&arg2=val2',
144
- scheme: 'http', host: 'www.example.com.tw', port: 80,
145
- path: '/~jdoe123/Help%20Me%20', query: 'arg=val&arg2=val2',
146
- link_text: 'http://www.example.com.tw:80/~jdoe123/Help%20Me%20?arg=val&arg2=val2')
143
+ scheme: 'http', host: 'www.example.com.tw', port: 80,
144
+ path: '/~jdoe123/Help%20Me%20', query: 'arg=val&arg2=val2',
145
+ link_text: 'http://www.example.com.tw:80/~jdoe123/Help%20Me%20?arg=val&arg2=val2')
147
146
 
148
147
  # from 0.9 bug reports
149
148
  match_chunk(Card::Chunk::URI, 'http://www2.pos.to/~tosh/ruby/rdtool/en/doc/rd-draft.html',
150
- scheme: 'http', host: 'www2.pos.to',
151
- path: '/~tosh/ruby/rdtool/en/doc/rd-draft.html')
149
+ scheme: 'http', host: 'www2.pos.to',
150
+ path: '/~tosh/ruby/rdtool/en/doc/rd-draft.html')
152
151
 
153
152
  match_chunk(Card::Chunk::URI, 'http://support.microsoft.com/default.aspx?scid=kb;en-us;234562',
154
- scheme: 'http', host: 'support.microsoft.com', path: '/default.aspx',
155
- query: 'scid=kb;en-us;234562')
156
-
153
+ scheme: 'http', host: 'support.microsoft.com', path: '/default.aspx',
154
+ query: 'scid=kb;en-us;234562')
157
155
  end
158
156
 
159
- it "should test_email_uri" do
157
+ it 'should test_email_uri' do
160
158
  match_chunk(Card::Chunk::URI, 'mail@example.com',
161
- to: 'mail@example.com', host: nil, text: 'mail@example.com', link_text: 'mailto:mail@example.com'
162
- )
159
+ to: 'mail@example.com', host: nil, text: 'mail@example.com', link_text: 'mailto:mail@example.com'
160
+ )
163
161
  end
164
162
 
165
- it "should test_non_email" do
163
+ it 'should test_non_email' do
166
164
  # The @ is part of the normal text, but 'example.com' is marked up.
167
- match_chunk(Card::Chunk::URI, 'Not an email: @example.com', uri: 'http://example.com')
165
+ match_chunk(Card::Chunk::URI, 'Not an email: @example.com', uri: 'http://example.com')
168
166
  end
169
167
 
170
- it "should test_textile_image" do
168
+ it 'should test_textile_image' do
171
169
  no_match(Card::Chunk::URI,
172
170
  'This !http://hobix.com/sample.jpg! is a Textile image link.')
173
171
  end
174
172
 
175
- it "should test_textile_link" do
173
+ it 'should test_textile_link' do
176
174
  no_match(Card::Chunk::URI,
177
175
  'This "hobix (hobix)":http://hobix.com/sample.jpg is a Textile link.')
178
176
  # just to be sure ...
179
177
  match_chunk(Card::Chunk::URI, 'This http://hobix.com/sample.jpg should match',
180
- link_text: 'http://hobix.com/sample.jpg')
178
+ link_text: 'http://hobix.com/sample.jpg')
181
179
  end
182
180
 
183
- it "should test_inline_html" do
181
+ it 'should test_inline_html' do
184
182
  no_match(Card::Chunk::URI, "<img src='http://hobix.com/sample.jpg'/>")
185
183
  no_match(Card::Chunk::URI, '<IMG SRC="http://hobix.com/sample.jpg">')
186
184
  end
187
185
 
188
- it "should test_non_uri" do
186
+ it 'should test_non_uri' do
189
187
  # "so" is a valid country code; "libproxy.so" is a valid url
190
188
  match_chunk(Card::Chunk::URI, 'libproxy.so', host: 'libproxy.so', text: 'libproxy.so', link_text: 'http://libproxy.so')
191
189
 
192
190
  no_match Card::Chunk::URI, 'httpd.conf'
193
191
  # THIS ONE'S BUSTED.. Ethan fix??
194
- #no_match Card::Chunk::URI, 'ld.so.conf'
192
+ # no_match Card::Chunk::URI, 'ld.so.conf'
195
193
  no_match Card::Chunk::URI, 'index.jpeg'
196
194
  no_match Card::Chunk::URI, 'index.jpg'
197
195
  no_match Card::Chunk::URI, 'file.txt'
@@ -201,28 +199,28 @@ describe Card::Chunk::URI, "URI chunk tests" do
201
199
  no_match Card::Chunk::URI, 'file.ps'
202
200
  end
203
201
 
204
- it "should test_uri_in_text" do
202
+ it 'should test_uri_in_text' do
205
203
  match_chunk(Card::Chunk::URI, 'Go to: http://www.example.com/', host: 'www.example.com', path: '/')
206
204
  match_chunk(Card::Chunk::URI, 'http://www.example.com/ is a link.', host: 'www.example.com')
207
205
  match_chunk(Card::Chunk::URI,
208
- 'Email david@loudthinking.com',
209
- scheme: 'mailto', to: 'david@loudthinking.com', host: nil)
206
+ 'Email david@loudthinking.com',
207
+ scheme: 'mailto', to: 'david@loudthinking.com', host: nil)
210
208
  # check that trailing punctuation is not included in the hostname
211
209
  match_chunk(Card::Chunk::URI, 'Hey dude, http://fake.link.com.', scheme: 'http', host: 'fake.link.com')
212
210
  # this is a textile link, no match please.
213
211
  no_match(Card::Chunk::URI, '"link":http://fake.link.com.')
214
- end
212
+ end
215
213
 
216
- it "should test_uri_in_parentheses" do
214
+ it 'should test_uri_in_parentheses' do
217
215
  match_chunk(Card::Chunk::URI, 'URI (http://brackets.com.de) in brackets', host: 'brackets.com.de')
218
216
  match_chunk(Card::Chunk::URI, 'because (as shown at research.net) the results', host: 'research.net')
219
217
  match_chunk(Card::Chunk::URI,
220
- 'A wiki (http://wiki.org/wiki.cgi?WhatIsWiki) card',
221
- scheme: 'http', host: 'wiki.org', path: '/wiki.cgi', query: 'WhatIsWiki'
222
- )
218
+ 'A wiki (http://wiki.org/wiki.cgi?WhatIsWiki) card',
219
+ scheme: 'http', host: 'wiki.org', path: '/wiki.cgi', query: 'WhatIsWiki'
220
+ )
223
221
  end
224
222
 
225
- it "should test_uri_list_item" do
223
+ it 'should test_uri_list_item' do
226
224
  match_chunk(
227
225
  Card::Chunk::URI,
228
226
  '* http://www.btinternet.com/~mail2minh/SonyEricssonP80xPlatform.sis',
@@ -230,63 +228,63 @@ describe Card::Chunk::URI, "URI chunk tests" do
230
228
  )
231
229
  end
232
230
 
233
- it "should test_interesting_uri_with__comma" do
231
+ it 'should test_interesting_uri_with__comma' do
234
232
  # Counter-intuitively, this URL matches, but the query part includes the trailing comma.
235
233
  # It has no way to know that the query does not include the comma.
236
234
  # The trailing , addition breaks this test, but is this test actually valid?
237
235
  # It seems better to exclude the comma from the uri, YMMV
238
236
  match_chunk(
239
- Card::Chunk::URI,
240
- "This text contains a URL http://someplace.org:8080/~person/stuff.cgi?arg=val, doesn't it?",
241
- scheme: 'http', host: 'someplace.org', port: 8080, path: '/~person/stuff.cgi',
242
- query: 'arg=val')
237
+ Card::Chunk::URI,
238
+ "This text contains a URL http://someplace.org:8080/~person/stuff.cgi?arg=val, doesn't it?",
239
+ scheme: 'http', host: 'someplace.org', port: 8080, path: '/~person/stuff.cgi',
240
+ query: 'arg=val')
243
241
  end
244
242
 
245
- describe Card::Chunk::URI, "URI chunk tests" do
246
- it "should test_local_urls" do
247
- # normal
248
- match_chunk(Card::Chunk::URI, 'http://perforce:8001/toto.html',
249
- scheme: 'http', host: 'perforce',
250
- port: 8001, link_text: 'http://perforce:8001/toto.html')
243
+ describe Card::Chunk::URI, 'URI chunk tests' do
244
+ it 'should test_local_urls' do
245
+ # normal
246
+ match_chunk(Card::Chunk::URI, 'http://perforce:8001/toto.html',
247
+ scheme: 'http', host: 'perforce',
248
+ port: 8001, link_text: 'http://perforce:8001/toto.html')
251
249
 
252
- # in parentheses
253
- match_chunk(Card::Chunk::URI, 'URI (http://localhost:2500) in brackets',
254
- host: 'localhost', port: 2500)
255
- match_chunk(Card::Chunk::URI, 'because (as shown at http://perforce:8001) the results',
256
- host: 'perforce', port: 8001)
257
- match_chunk(Card::Chunk::URI,
258
- 'A wiki (http://localhost:2500/wiki.cgi?WhatIsWiki) card',
259
- scheme: 'http', host: 'localhost', path: '/wiki.cgi',
260
- port: 2500, query: 'WhatIsWiki')
261
- end
250
+ # in parentheses
251
+ match_chunk(Card::Chunk::URI, 'URI (http://localhost:2500) in brackets',
252
+ host: 'localhost', port: 2500)
253
+ match_chunk(Card::Chunk::URI, 'because (as shown at http://perforce:8001) the results',
254
+ host: 'perforce', port: 8001)
255
+ match_chunk(Card::Chunk::URI,
256
+ 'A wiki (http://localhost:2500/wiki.cgi?WhatIsWiki) card',
257
+ scheme: 'http', host: 'localhost', path: '/wiki.cgi',
258
+ port: 2500, query: 'WhatIsWiki')
259
+ end
262
260
  end
263
261
 
264
262
  private
263
+
265
264
  DUMMY_CARD = Card.new(name: 'dummy')
266
265
 
267
266
  # Asserts a number of tests for the given type and text.
268
- def no_match(type, test_text)
267
+ def no_match type, test_text
269
268
  test_cont = Card::Content.new(test_text, DUMMY_CARD)
270
- expect( ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find{|ck| type===ck } ).to be_nil
269
+ expect(((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }).to be_nil
271
270
  end
272
271
 
273
- def aa_match(type, test_text)
272
+ def aa_match type, test_text
274
273
  test_cont = Card::Content.new(test_text, DUMMY_CARD)
275
- expect( ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find{|ck| type===ck } ).not_to be_nil
274
+ expect(((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }).not_to be_nil
276
275
  end
277
276
 
278
- def match_chunk(type, test_text, expected)
277
+ def match_chunk type, test_text, expected
279
278
  test_cont = Card::Content.new(test_text, DUMMY_CARD)
280
- chunk = ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find{ |ck| type===ck }
281
- #warn "chunk? #{chunk.inspect}"
279
+ chunk = ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }
280
+ # warn "chunk? #{chunk.inspect}"
282
281
  expect(chunk).not_to be_nil
283
282
 
284
283
  expected.each_pair do |method_sym, value|
285
- #assert_respond_to(chunk, method_sym)
284
+ # assert_respond_to(chunk, method_sym)
286
285
  cvalue = chunk.method(method_sym).call
287
286
  cvalue = cvalue.to_s if method_sym == :uri
288
287
  assert_equal(value, cvalue, "Checking value of '#{method_sym}'")
289
288
  end
290
289
  end
291
-
292
290
  end