card 1.19.6 → 1.20.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 (298) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +8 -7
  4. data/config/initializers/01_core_extensions/array.rb +4 -0
  5. data/config/initializers/01_core_extensions/persistent_identifiers.rb +12 -0
  6. data/config/initializers/02_patches/better_errors.rb +56 -0
  7. data/config/initializers/core_extensions.rb +13 -18
  8. data/config/initializers/patches.rb +8 -0
  9. data/config/locales/de.yml +0 -2
  10. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +22 -12
  11. data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +17 -0
  12. data/db/migrate_core_cards/20161103154836_update_keys.rb +46 -0
  13. data/lib/card.rb +1 -8
  14. data/lib/card/act_manager.rb +4 -0
  15. data/lib/card/auth/permissions.rb +5 -3
  16. data/lib/card/cache.rb +1 -20
  17. data/lib/card/cache/persistent.rb +6 -0
  18. data/lib/card/content/chunk.rb +4 -3
  19. data/lib/card/content/diff.rb +2 -2
  20. data/lib/card/content/diff/result.rb +11 -0
  21. data/lib/card/env/success.rb +4 -0
  22. data/lib/card/error.rb +2 -0
  23. data/lib/card/format.rb +14 -17
  24. data/lib/card/format/content.rb +16 -8
  25. data/lib/card/format/error.rb +3 -5
  26. data/lib/card/format/names.rb +22 -16
  27. data/lib/card/format/nest.rb +67 -61
  28. data/lib/card/format/nest/fetch.rb +40 -33
  29. data/lib/card/format/nest/main.rb +39 -19
  30. data/lib/card/format/nest/subformat.rb +3 -16
  31. data/lib/card/format/nest/view.rb +23 -32
  32. data/lib/card/format/permission.rb +49 -34
  33. data/lib/card/format/registration.rb +12 -6
  34. data/lib/card/format/render.rb +62 -73
  35. data/lib/card/migration.rb +14 -10
  36. data/lib/card/migration/import.rb +20 -19
  37. data/lib/card/migration/import/import_data.rb +50 -59
  38. data/lib/card/migration/import/import_data/card_attributes.rb +56 -0
  39. data/lib/card/migration/import/import_data/card_content.rb +33 -0
  40. data/lib/card/migration/import/merger.rb +47 -0
  41. data/lib/card/mod/loader.rb +4 -4
  42. data/lib/card/model/save_helper.rb +49 -10
  43. data/lib/card/name.rb +16 -52
  44. data/lib/card/name/fields_and_traits.rb +67 -0
  45. data/lib/card/name/variants.rb +17 -0
  46. data/lib/card/query.rb +6 -2
  47. data/lib/card/query/attributes.rb +1 -1
  48. data/lib/card/query/interpretation.rb +3 -3
  49. data/lib/card/set/event.rb +2 -1
  50. data/lib/card/set/format.rb +18 -7
  51. data/lib/card/set_pattern.rb +17 -13
  52. data/lib/card/tasks/card.rake +1 -1
  53. data/lib/card/view.rb +55 -0
  54. data/lib/card/view/cache.rb +90 -0
  55. data/lib/card/view/fetch.rb +109 -0
  56. data/lib/card/view/options.rb +164 -0
  57. data/lib/card/view/stub.rb +30 -0
  58. data/lib/card/view/visibility.rb +95 -0
  59. data/lib/cardio.rb +3 -2
  60. data/lib/cardio/schema.rb +21 -8
  61. data/lib/generators/card.rb +16 -2
  62. data/lib/generators/card/format/format_generator.rb +10 -9
  63. data/lib/generators/card/migration/migration_generator.rb +10 -5
  64. data/lib/generators/card/set/USAGE +1 -1
  65. data/lib/generators/card/set/set_generator.rb +11 -9
  66. data/mod/account/set/right/account.rb +38 -40
  67. data/mod/account/set/right/token.rb +2 -1
  68. data/mod/account/set/self/account_links.rb +34 -54
  69. data/mod/account/set/self/signin.rb +107 -93
  70. data/mod/account/set/type/signup.rb +33 -32
  71. data/mod/account/set/type/user.rb +28 -21
  72. data/mod/account/spec/set/all/account_spec.rb +9 -9
  73. data/mod/account/spec/set/right/account_spec.rb +23 -14
  74. data/mod/account/spec/set/right/email_spec.rb +6 -6
  75. data/mod/account/spec/set/right/password_spec.rb +4 -4
  76. data/mod/account/spec/set/right/token_spec.rb +3 -3
  77. data/mod/account/spec/set/self/account_links_spec.rb +3 -3
  78. data/mod/account/spec/set/self/signin_spec.rb +2 -2
  79. data/mod/account/spec/set/type/signup_spec.rb +7 -8
  80. data/mod/ace_editor/set/abstract/ace_editor.rb +1 -4
  81. data/mod/admin/set/self/admin.rb +2 -2
  82. data/mod/admin/set/self/admin_info.rb +1 -1
  83. data/mod/admin/set/self/recaptcha_private_key.rb +3 -0
  84. data/mod/admin/set/self/recaptcha_proxy.rb +3 -0
  85. data/mod/admin/set/self/recaptcha_public_key.rb +3 -0
  86. data/mod/admin/set/self/trash.rb +4 -4
  87. data/mod/admin/spec/set/self/admin_spec.rb +4 -4
  88. data/mod/admin/spec/set/self/version_spec.rb +1 -1
  89. data/mod/basic_formats/set/all/all_css.rb +3 -3
  90. data/mod/basic_formats/set/all/all_csv.rb +6 -6
  91. data/mod/basic_formats/set/all/all_js.rb +4 -0
  92. data/mod/basic_formats/set/all/base.rb +40 -62
  93. data/mod/basic_formats/set/all/json.rb +34 -39
  94. data/mod/basic_formats/set/all/rss.rb +6 -6
  95. data/mod/basic_formats/set/all/text.rb +3 -2
  96. data/mod/basic_formats/set/self/01_head/javascript.rb +2 -2
  97. data/mod/basic_formats/set/self/head.rb +6 -10
  98. data/mod/basic_formats/spec/set/all/all_css_spec.rb +1 -1
  99. data/mod/basic_formats/spec/set/all/all_csv_spec.rb +1 -1
  100. data/mod/basic_formats/spec/set/all/base_spec.rb +8 -5
  101. data/mod/basic_formats/spec/set/all/json_spec.rb +2 -2
  102. data/mod/basic_formats/spec/set/all/rss_spec.rb +4 -4
  103. data/mod/basic_types/set/type/plain_text.rb +3 -5
  104. data/mod/basic_types/spec/set/type/plain_text_spec.rb +2 -2
  105. data/mod/bootstrap/lib/bootstrap.rb +16 -0
  106. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +26 -0
  107. data/mod/bootstrap/lib/bootstrap/component.rb +133 -0
  108. data/mod/bootstrap/lib/bootstrap/component/form.rb +31 -0
  109. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +38 -0
  110. data/mod/bootstrap/lib/bootstrap/component/layout.rb +83 -0
  111. data/mod/bootstrap/lib/bootstrap/component/panel.rb +9 -0
  112. data/mod/bootstrap/lib/bootstrap/component_loader.rb +30 -0
  113. data/mod/bootstrap/lib/bootstrap/delegate.rb +16 -0
  114. data/mod/bootstrap/lib/bootstrapper.rb +16 -0
  115. data/mod/bootstrap/lib/stylesheets/bootstrap/_tables.scss +55 -52
  116. data/mod/bootstrap/lib/stylesheets/bootstrap/mixins/_table-row.scss +12 -12
  117. data/mod/bootstrap/lib/stylesheets/bootstrap_cards.scss +12 -0
  118. data/mod/bootstrap/set/all/bootstrap/accordion.rb +63 -0
  119. data/mod/bootstrap/set/all/bootstrap/helper.rb +7 -140
  120. data/mod/bootstrap/set/all/bootstrap/navbar.rb +74 -0
  121. data/mod/bootstrap/set/all/bootstrap/table.rb +76 -46
  122. data/mod/bootstrap/set/all/bootstrap/tabs.rb +58 -23
  123. data/mod/bootstrap/set/all/bootstrap/wrapper.rb +14 -8
  124. data/mod/bootstrap/set/all/rich_bootstrap.rb +5 -3
  125. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +31 -0
  126. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +20 -0
  127. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +59 -1
  128. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +104 -15
  129. data/mod/carrierwave/set/abstract/attachment.rb +4 -3
  130. data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
  131. data/mod/carrierwave/set/abstract/attachment/storage_type.rb +5 -11
  132. data/mod/carrierwave/set/type/file.rb +39 -32
  133. data/mod/carrierwave/set/type/image.rb +59 -34
  134. data/mod/carrierwave/spec/set/type/image_spec.rb +3 -3
  135. data/mod/core/chunk/link.rb +5 -0
  136. data/mod/core/chunk/{include.rb → nest.rb} +8 -29
  137. data/mod/core/chunk/reference.rb +5 -6
  138. data/mod/core/chunk/view_stub.rb +42 -0
  139. data/mod/core/format/html_format.rb +23 -26
  140. data/mod/core/set/abstract/code_file.rb +1 -1
  141. data/mod/core/set/all/actify.rb +1 -1
  142. data/mod/core/set/all/active_card.rb +0 -1
  143. data/mod/core/set/all/{tracked_attributes.rb → assign_attributes.rb} +55 -24
  144. data/mod/core/set/all/collection.rb +136 -122
  145. data/mod/core/set/all/content.rb +8 -0
  146. data/mod/core/set/all/event.rb +5 -2
  147. data/mod/core/set/all/export.rb +7 -7
  148. data/mod/core/set/all/fetch.rb +90 -26
  149. data/mod/core/set/all/initialize.rb +17 -6
  150. data/mod/core/set/all/name.rb +2 -3
  151. data/mod/core/set/all/permissions.rb +19 -11
  152. data/mod/core/set/all/states.rb +12 -2
  153. data/mod/core/set/all/trash.rb +1 -1
  154. data/mod/core/set/all/type.rb +2 -0
  155. data/mod/core/set/all/utils.rb +4 -3
  156. data/mod/core/spec/chunk/literal_spec.rb +2 -2
  157. data/mod/core/spec/chunk/uri_spec.rb +17 -17
  158. data/mod/core/spec/format/html_format_spec.rb +11 -13
  159. data/mod/core/spec/set/all/attribute_tracking_spec.rb +2 -2
  160. data/mod/core/spec/set/all/collection_spec.rb +21 -24
  161. data/mod/core/spec/set/all/content_spec.rb +1 -1
  162. data/mod/core/spec/set/all/export_spec.rb +3 -3
  163. data/mod/core/spec/set/all/fetch_spec.rb +5 -5
  164. data/mod/core/spec/set/all/initialize_spec.rb +4 -4
  165. data/mod/core/spec/set/all/name_spec.rb +6 -6
  166. data/mod/core/spec/set/all/permissions_spec.rb +10 -10
  167. data/mod/core/spec/set/all/references_spec.rb +1 -1
  168. data/mod/core/spec/set/all/rules2_spec.rb +24 -24
  169. data/mod/core/spec/set/all/rules_spec.rb +1 -1
  170. data/mod/core/spec/set/all/templating_spec.rb +8 -8
  171. data/mod/core/spec/set/all/tracked_attributes_spec.rb +6 -6
  172. data/mod/core/spec/set/all/type_spec.rb +5 -5
  173. data/mod/developer/spec/set/all/event_viz_spec.rb +1 -1
  174. data/mod/developer/spec/set/right/debug_spec.rb +1 -1
  175. data/mod/email/set/all/email_html.rb +2 -2
  176. data/mod/email/set/all/notify.rb +8 -3
  177. data/mod/email/set/right/bcc.rb +3 -3
  178. data/mod/email/set/right/follow.rb +5 -5
  179. data/mod/email/set/right/following.rb +1 -1
  180. data/mod/email/set/self/follow_defaults.rb +27 -16
  181. data/mod/email/set/type/email_template.rb +1 -1
  182. data/mod/email/set/type_plus_right/user/follow.rb +10 -9
  183. data/mod/history/lib/card/act.rb +4 -0
  184. data/mod/history/lib/card/act/act_renderer.rb +194 -0
  185. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +25 -0
  186. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +41 -0
  187. data/mod/history/lib/card/action.rb +1 -0
  188. data/mod/history/lib/card/action/action_renderer.rb +92 -0
  189. data/mod/history/lib/card/action/differ.rb +6 -1
  190. data/mod/history/set/all/act_view.rb +64 -0
  191. data/mod/history/set/all/action_view.rb +65 -0
  192. data/mod/history/set/all/content_history.rb +44 -37
  193. data/mod/history/set/all/history.rb +49 -263
  194. data/mod/machines/lib/stylesheets/style_cards.scss +30 -115
  195. data/mod/machines/set/abstract/script.rb +42 -7
  196. data/mod/machines/set/right/machine_input.rb +4 -0
  197. data/mod/machines/set/type/coffee_script.rb +8 -22
  198. data/mod/machines/set/type/css.rb +2 -2
  199. data/mod/machines/set/type/java_script.rb +4 -24
  200. data/mod/machines/set/type/scss.rb +1 -1
  201. data/mod/machines/spec/set/type/css_spec.rb +1 -1
  202. data/mod/machines/spec/set/type/scss_spec.rb +3 -3
  203. data/mod/machines/spec/set/type/skin_spec.rb +7 -7
  204. data/mod/pointer/set/abstract/01_pointer.rb +44 -46
  205. data/mod/pointer/set/abstract/01_pointer/edit.rb +13 -13
  206. data/mod/pointer/set/right/options.rb +4 -0
  207. data/mod/pointer/spec/set/type/pointer_spec.rb +7 -7
  208. data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +3 -3
  209. data/mod/settings/set/abstract/permission.rb +25 -18
  210. data/mod/settings/set/right/add_help.rb +3 -3
  211. data/mod/settings/set/right/structure.rb +10 -16
  212. data/mod/settings/spec/set/right/comment_spec.rb +3 -3
  213. data/mod/settings/spec/set/right/create_spec.rb +1 -1
  214. data/mod/settings/spec/set/right/style_spec.rb +1 -1
  215. data/mod/settings/spec/set/type/setting_spec.rb +1 -1
  216. data/mod/solid_cache/set/abstract/solid_cache.rb +4 -4
  217. data/mod/solid_cache/set/right/solid_cache.rb +9 -10
  218. data/mod/standard/set/abstract/01_search_params.rb +41 -0
  219. data/mod/standard/set/abstract/search.rb +132 -0
  220. data/mod/standard/set/abstract/search/paging.rb +81 -0
  221. data/mod/standard/set/abstract/search/paging/paging_links.rb +90 -0
  222. data/mod/standard/set/abstract/wql_search.rb +67 -0
  223. data/mod/standard/set/all/error.rb +89 -82
  224. data/mod/standard/set/all/links.rb +1 -1
  225. data/mod/standard/set/all/rich_html/content.rb +125 -141
  226. data/mod/standard/set/all/rich_html/editing.rb +115 -178
  227. data/mod/standard/set/all/rich_html/form.rb +111 -131
  228. data/mod/standard/set/all/rich_html/header.rb +57 -39
  229. data/mod/standard/set/all/rich_html/menu.rb +94 -94
  230. data/mod/standard/set/all/rich_html/modal.rb +5 -10
  231. data/mod/standard/set/all/rich_html/new.rb +103 -0
  232. data/mod/standard/set/all/rich_html/toolbar.rb +54 -74
  233. data/mod/standard/set/all/rich_html/wrapper.rb +111 -138
  234. data/mod/standard/set/rstar/rules.rb +27 -38
  235. data/mod/standard/set/rstar/rules_editor.rb +298 -277
  236. data/mod/standard/set/self/navbox.rb +20 -15
  237. data/mod/standard/set/self/recent.rb +25 -17
  238. data/mod/standard/set/self/search.rb +25 -4
  239. data/mod/standard/set/type/cardtype.rb +11 -9
  240. data/mod/standard/set/type/date.rb +1 -1
  241. data/mod/standard/set/type/number.rb +1 -1
  242. data/mod/standard/set/type/phrase.rb +1 -1
  243. data/mod/standard/set/type/search_type.rb +17 -282
  244. data/mod/standard/set/type/session.rb +1 -1
  245. data/mod/standard/set/type/set.rb +155 -131
  246. data/mod/standard/set/type/toggle.rb +1 -1
  247. data/mod/standard/set/type/uri.rb +4 -4
  248. data/mod/standard/spec/chunk/include_spec.rb +13 -31
  249. data/mod/standard/spec/chunk/link_spec.rb +1 -1
  250. data/mod/standard/spec/set/all/error_spec.rb +1 -1
  251. data/mod/standard/spec/set/all/history_spec.rb +2 -2
  252. data/mod/standard/spec/set/all/rich_html/form_spec.rb +4 -4
  253. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +22 -0
  254. data/mod/standard/spec/set/all/rich_html/wrapper_spec.rb +3 -2
  255. data/mod/standard/spec/set/right/when_created_spec.rb +1 -1
  256. data/mod/standard/spec/set/right/when_last_edited_spec.rb +1 -1
  257. data/mod/standard/spec/set/rstar/rules_spec.rb +2 -3
  258. data/mod/standard/spec/set/self/head_spec.rb +2 -2
  259. data/mod/standard/spec/set/self/navbox_spec.rb +1 -1
  260. data/mod/standard/spec/set/self/now_spec.rb +1 -1
  261. data/mod/standard/spec/set/type/date_spec.rb +1 -1
  262. data/mod/standard/spec/set/type/email_template_spec.rb +1 -1
  263. data/mod/standard/spec/set/type/layout_type_spec.rb +1 -1
  264. data/mod/standard/spec/set/type/number_spec.rb +1 -1
  265. data/mod/standard/spec/set/type/phrase_spec.rb +1 -1
  266. data/mod/standard/spec/set/type/search_type_spec.rb +2 -2
  267. data/mod/standard/spec/set/type/set_spec.rb +2 -2
  268. data/mod/standard/spec/set/type/toggle_spec.rb +2 -2
  269. data/mod/standard/spec/set/type/uri_spec.rb +3 -1
  270. data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
  271. data/spec/config/initializers/core_extensions_spec.rb +40 -10
  272. data/spec/lib/card/auth_spec.rb +8 -8
  273. data/spec/lib/card/cache_spec.rb +3 -3
  274. data/spec/lib/card/chunk_spec.rb +4 -4
  275. data/spec/lib/card/codename_spec.rb +2 -2
  276. data/spec/lib/card/content_spec.rb +23 -23
  277. data/spec/lib/card/diff_spec.rb +1 -1
  278. data/spec/lib/card/format_spec.rb +19 -24
  279. data/spec/lib/card/loader_spec.rb +4 -4
  280. data/spec/lib/card/name_spec.rb +16 -16
  281. data/spec/lib/card/query_spec.rb +80 -80
  282. data/spec/lib/card/reference_spec.rb +5 -5
  283. data/spec/lib/card/set_spec.rb +6 -6
  284. data/spec/lib/card/subcards_spec.rb +14 -0
  285. data/spec/lib/card/view_cache_spec.rb +5 -5
  286. data/spec/models/card/cardtype_spec.rb +15 -15
  287. data/spec/models/card/create_spec.rb +2 -2
  288. data/spec/models/card/trash_spec.rb +24 -24
  289. data/spec/models/card/type_transition_spec.rb +8 -8
  290. data/spec/models/card/validation_spec.rb +5 -5
  291. data/spec/models/card_spec.rb +14 -14
  292. data/spec/spec_helper.rb +6 -2
  293. data/spec/support/card_spec_helper.rb +21 -11
  294. data/spec/support/helper/card_helper.rb +11 -4
  295. metadata +73 -15
  296. data/lib/card/cache/view_cache.rb +0 -103
  297. data/mod/bootstrap/set/all/bootstrap/layout.rb +0 -58
  298. data/mod/core/set/all/view_cache.rb +0 -9
@@ -3,10 +3,46 @@ require "uglifier"
3
3
 
4
4
  include_set Abstract::AceEditor
5
5
 
6
+ def self.included host_class
7
+ host_class.include_set Abstract::Machine
8
+ host_class.include_set Abstract::MachineInput
9
+
10
+ host_class.machine_input { standard_machine_input }
11
+ host_class.store_machine_output filetype: "js"
12
+ end
13
+
14
+ def standard_machine_input
15
+ js = format(:js)._render_core
16
+ js = compress_js js if compress_js?
17
+ comment_with_source js
18
+ end
19
+
6
20
  def comment_with_source js
7
21
  "//#{name}\n#{js}"
8
22
  end
9
23
 
24
+ def compress_js input
25
+ Uglifier.compile input
26
+ rescue => e
27
+ # CoffeeScript is compiled in a view
28
+ # If there is a CoffeeScript syntax error we get the rescued view here
29
+ # and the error that the rescued view is no valid Javascript
30
+ # To get the original error we have to refer to Card::Error.current
31
+ raise Card::Error, compression_error_message(e)
32
+ end
33
+
34
+ def compression_error_message e
35
+ if Card::Error.current
36
+ Card::Error.current.message
37
+ else
38
+ "JavaScript::SyntaxError (#{name}): #{e.message}"
39
+ end
40
+ end
41
+
42
+ def compress_js?
43
+ !Rails.env.development?
44
+ end
45
+
10
46
  def clean_html?
11
47
  false
12
48
  end
@@ -23,17 +59,16 @@ format :html do
23
59
  end
24
60
 
25
61
  view :content_changes do |args|
26
- %(
27
- <pre>#{super(args)}</pre>
28
- )
62
+ wrap_with(:pre) { super args }
29
63
  end
30
64
 
31
- view :core do |_args|
32
- process_content highlighted_js
65
+ view :core do
66
+ script = card.format(:js).render_core
67
+ process_content highlight(script)
33
68
  end
34
69
 
35
- def highlighted_js
36
- ::CodeRay.scan(_render_raw, :js).div
70
+ def highlight script
71
+ ::CodeRay.scan(script, :js).div
37
72
  end
38
73
  end
39
74
 
@@ -1,3 +1,7 @@
1
1
  def followable?
2
2
  false
3
3
  end
4
+
5
+ def history?
6
+ false
7
+ end
@@ -2,35 +2,21 @@
2
2
  require "coffee-script"
3
3
 
4
4
  include_set Abstract::Script
5
- include_set Abstract::Machine
6
- include_set Abstract::MachineInput
7
-
8
- store_machine_output filetype: "js"
9
-
10
- machine_input do
11
- js = Uglifier.compile compile_coffee(format(:js)._render_raw)
12
- comment_with_source js
13
- end
14
-
15
- def compile_coffee script
16
- ::CoffeeScript.compile script
17
- rescue => e
18
- raise Card::Error, "CoffeeScript::Error (#{name}): #{e.message}"
19
- end
20
5
 
21
6
  format :html do
22
7
  def default_editor_args args
23
8
  args[:ace_mode] ||= "coffee"
24
9
  end
25
-
26
- def highlighted_js
27
- js = card.compile_coffee _render_raw
28
- ::CodeRay.scan(js, :js).div
29
- end
30
10
  end
31
11
 
32
12
  format do
33
- view :core do |_args|
34
- process_content card.compile_coffee(_render_raw)
13
+ view :core do
14
+ compile_coffee _render_raw
15
+ end
16
+
17
+ def compile_coffee script
18
+ ::CoffeeScript.compile script
19
+ rescue => e
20
+ raise Card::Error, "CoffeeScript::Error (#{name}): #{e.message}"
35
21
  end
36
22
  end
@@ -40,8 +40,8 @@ format :html do
40
40
  args[:ace_mode] = "css"
41
41
  end
42
42
 
43
- def get_nest_defaults _nested_card
44
- { view: :closed }
43
+ def default_nest_view
44
+ :closed
45
45
  end
46
46
 
47
47
  view :core do |_args|
@@ -2,28 +2,8 @@
2
2
 
3
3
  include_set Abstract::Script
4
4
 
5
- include_set Abstract::Machine
6
- include_set Abstract::MachineInput
7
-
8
- store_machine_output filetype: "js"
9
-
10
- machine_input do
11
- js = compress_js format(:js)._render_core
12
- comment_with_source js
5
+ format :js do
6
+ view :core do
7
+ _render_raw
8
+ end
13
9
  end
14
-
15
- def compress_js input
16
- Uglifier.compile(input)
17
- rescue => e
18
- # CoffeeScript is compiled in a view
19
- # If there is a CoffeeScript syntax error we get the rescued view here
20
- # and the error that the rescued view is no valid Javascript
21
- # To get the original error we have to refer to Card::Error.current
22
- msg = if Card::Error.current
23
- Card::Error.current.message
24
- else
25
- "CoffeeScript::SyntaxError (#{name}): #{e.message}"
26
- end
27
- raise Card::Error, msg
28
- end
29
-
@@ -1,7 +1,7 @@
1
1
  include_set Type::Css
2
2
 
3
3
  format do
4
- view :core do |_args|
4
+ view :core, cache: :never do |_args|
5
5
  compile_scss(process_content _render_raw)
6
6
  end
7
7
 
@@ -6,7 +6,7 @@ describe Card::Set::Type::Css do
6
6
  let(:changed_css) { "#box { display: inline }" }
7
7
  let(:compressed_changed_css) { "#box{display:inline}\n" }
8
8
 
9
- it "should highlight code" do
9
+ it "highlights code" do
10
10
  Card::Auth.as_bot do
11
11
  css_card = Card.create! name: "tmp css", type_code: "css",
12
12
  content: "p { border: 1px solid black; }"
@@ -19,12 +19,12 @@ describe Card::Set::Type::Scss do
19
19
  @scss_card = Card[:style_cards]
20
20
  end
21
21
 
22
- it "should highlight code in html" do
22
+ it "highlights code in html" do
23
23
  assert_view_select @scss_card.format(:html).render_core,
24
24
  "div[class=CodeRay]"
25
25
  end
26
26
 
27
- it "should not highlight code in css" do
27
+ it "does not highlight code in css" do
28
28
  expect(@scss_card.format(:css).render_core).not_to match(/CodeRay/)
29
29
  end
30
30
 
@@ -44,7 +44,7 @@ describe Card::Set::Type::Scss do
44
44
  end
45
45
  end
46
46
 
47
- it "should process links and nests but not urls" do
47
+ it "processes links and nests but not urls" do
48
48
  Card::Auth.as_bot do
49
49
  scss = ".TYPE-X.no-citations {\n color: #BA5B5B;\n}\n"
50
50
  card = Card.create! name: "minimal css", type: "scss", content: scss
@@ -47,9 +47,9 @@ describe Card::Set::Type::Skin do
47
47
  it "updates output of related machine card" do
48
48
  # item = Card.gimme! "skin item", type: :css, content: css
49
49
  skin = Card.gimme! "test skin supplier", type: :skin, content: ""
50
+ item = Card.gimme! "skin item", type: :css, content: css
50
51
  machine = Card.gimme! "style with skin machine+*style",
51
52
  type: :pointer, content: "[[test skin supplier]]"
52
- item = Card.gimme! "skin item", type: :css, content: css
53
53
  skin << item
54
54
  skin.putty
55
55
  updated_machine = Card.gimme machine.cardname
@@ -61,16 +61,16 @@ describe Card::Set::Type::Skin do
61
61
  context "when item changed" do
62
62
  it "updates output of related machine card" do
63
63
  skin = Card.gimme! "test skin supplier", type: :skin, content: ""
64
- machine = Card.gimme! "style with skin machine+*style",
65
- type: :pointer,
66
- content: "[[test skin supplier]]"
67
64
  item = Card.gimme! "skin item", type: :css, content: css
65
+ machine = Card.gimme! "style with skin machine+*style",
66
+ type: :pointer, content: "[[test skin supplier]]"
68
67
  skin << item
69
68
  skin.putty
69
+
70
70
  Card::Auth.as_bot do
71
- item.update_attributes content: changed_css
72
- { get: machine.machine_output_url }
73
- item.update_attributes content: new_css
71
+ Card["skin_item"].update_attributes content: changed_css
72
+ machine.machine_output_url
73
+ Card["skin_item"].update_attributes content: new_css
74
74
  end
75
75
  updated_machine = Card.gimme machine.cardname
76
76
  path = updated_machine.machine_output_path
@@ -12,6 +12,10 @@ stage_method :added_item_names do
12
12
  item_names - old_items
13
13
  end
14
14
 
15
+ stage_method :changed_item_cards do
16
+ item_cards content: changed_item_names
17
+ end
18
+
15
19
  format do
16
20
  def item_links args={}
17
21
  card.item_cards(args).map do |item_card|
@@ -23,90 +27,84 @@ format do
23
27
  item # no wrap in base
24
28
  end
25
29
 
26
- view :core do |args|
27
- render_pointer_items args.merge(joint: ", ")
30
+ def nest_item_array
31
+ card.item_cards.map do |item|
32
+ nest_item item
33
+ end
28
34
  end
29
35
 
30
- view :pointer_items, tags: :unknown_ok do |args|
31
- i_args = item_args(args)
32
- joint = args[:joint] || " "
33
- card.item_cards.map do |i_card|
34
- wrap_item nest(i_card, i_args.clone), i_args
35
- end.join joint
36
+ view :core do |_args|
37
+ pointer_items.join ", "
38
+ end
39
+
40
+ def pointer_items args={}
41
+ card.item_cards.map do |item_card|
42
+ nest_item item_card, args do |rendered, item_view|
43
+ wrap_item rendered, item_view
44
+ end
45
+ end
36
46
  end
37
47
  end
38
48
 
39
49
  format :html do
40
- view :core do |args|
41
- %(<div class="pointer-list">#{render_pointer_items args}</div>)
50
+ view :core do
51
+ wrap_with :div, pointer_items, class: "pointer-list"
42
52
  end
43
53
 
44
- view :closed_content do |args|
45
- args[:item] =
46
- if (args[:item] || nest_defaults(card)[:view]) == "name"
47
- "name"
48
- else
49
- "link"
50
- end
51
- args[:joint] ||= ", "
52
- _render_core args
54
+ view :closed_content do
55
+ item_view = implicit_item_view
56
+ item_view = item_view == "name" ? "name" : "link"
57
+ wrap_with :div, class: "pointer-list" do
58
+ pointer_items(view: item_view).join ", "
59
+ end
53
60
  end
54
61
 
55
- def wrap_item item, args
56
- %(<div class="pointer-item item-#{args[:view]}">#{item}</div>)
62
+ def wrap_item rendered, item_view
63
+ %(<div class="pointer-item item-#{item_view}">#{rendered}</div>)
57
64
  end
58
65
  end
59
66
 
60
67
  format :css do
61
68
  # generalize to all collections?
62
69
  def default_item_view
63
- params[:item] || :content
70
+ :content
64
71
  end
65
72
 
66
- view :titled do |_args|
73
+ view :titled do
67
74
  %(#{major_comment "STYLE GROUP: \"#{card.name}\"", '='}#{_render_core})
68
75
  end
69
76
 
70
- view :core do |args|
71
- card.item_cards.map do |item|
72
- nest item, view: item_view(args)
73
- end.join "\n\n"
77
+ view :core do
78
+ nest_item_array.join "\n\n"
74
79
  end
75
80
 
76
81
  view :content, :core
77
82
  end
78
83
 
79
84
  format :js do
80
- view :core do |args|
81
- card.item_cards.map do |item|
82
- nest item, view: (args[:item] || :core)
83
- end.join "\n\n"
85
+ view :core do
86
+ nest_item_array.join "\n\n"
84
87
  end
85
88
  end
86
89
 
87
90
  format :data do
88
- view :core do |_args|
89
- card.item_cards.map do |c|
90
- nest c
91
- end
91
+ view :core, cache: :never do
92
+ nest_item_array
92
93
  end
93
94
  end
94
95
 
95
96
  format :rss do
96
- def raw_feed_items _args
97
- @raw_feed_items ||= begin
98
- card.item_cards
99
- end
97
+ def raw_feed_items
98
+ @raw_feed_items ||= card.item_cards
100
99
  end
101
100
  end
102
101
 
103
102
  format :json do
104
103
  view :export_items do |args|
105
- result =
106
- card.known_item_cards.map do |ic|
107
- subformat(ic).render_export(args)
108
- end
109
- result.flatten.reject(&:blank?)
104
+ item_args = args.merge view: :export
105
+ card.known_item_cards.map do |item_card|
106
+ nest_item item_card, item_args
107
+ end.flatten.reject(&:blank?)
110
108
  end
111
109
  end
112
110
 
@@ -118,7 +116,7 @@ end
118
116
  event :standardize_items, :prepare_to_validate,
119
117
  on: :save,
120
118
  changed: :content,
121
- when: proc { |c| c.type_id == Card::PointerID } do
119
+ when: proc { |c| c.type_id == Card::PointerID } do
122
120
  self.content = item_names(context: :raw).map do |name|
123
121
  "[[#{name}]]"
124
122
  end.join "\n"
@@ -130,7 +128,7 @@ end
130
128
 
131
129
  def item_cards args={}
132
130
  if args[:complete]
133
- query = args.reverse_merge referred_to_by: name
131
+ query = args.reverse_merge referred_to_by: name, limit: 0
134
132
  Card::Query.run query
135
133
  elsif args[:known_only]
136
134
  known_item_cards args
@@ -12,9 +12,6 @@ event :insert_item_event, :prepare_to_validate,
12
12
  end
13
13
 
14
14
  format :html do
15
- # view :edit do |args|
16
- # super(args.merge(pointer_item_class: 'form-control'))
17
- # end
18
15
 
19
16
  view :editor do |args|
20
17
  part_view = (c = card.rule(:input)) ? c.gsub(/[\[\]]/, "") : :list
@@ -46,7 +43,7 @@ format :html do
46
43
  end
47
44
 
48
45
  def add_item_button
49
- content_tag :span, class: "input-group" do
46
+ wrap_with :span, class: "input-group" do
50
47
  button_tag class: "pointer-item-add" do
51
48
  glyphicon("plus") + " add another"
52
49
  end
@@ -167,8 +164,7 @@ def add_item name
167
164
  end
168
165
 
169
166
  def add_item! name
170
- add_item name
171
- save!
167
+ add_item(name) && save!
172
168
  end
173
169
 
174
170
  def drop_item name
@@ -196,13 +192,8 @@ def insert_item! index, name
196
192
  end
197
193
 
198
194
  def option_names
199
- result_names =
200
- if (oc = options_rule_card)
201
- oc.item_names default_limit: 50, context: name
202
- else
203
- Card.search({ sort: "name", limit: 50, return: :name },
204
- "option names for pointer: #{name}")
205
- end
195
+ result_names = configured_option_names
196
+
206
197
  if (selected_options = item_names)
207
198
  result_names += selected_options
208
199
  result_names.uniq!
@@ -210,6 +201,15 @@ def option_names
210
201
  result_names
211
202
  end
212
203
 
204
+ def configured_option_names
205
+ if (oc = options_rule_card)
206
+ oc.item_names context: name, limit: oc.default_limit
207
+ else
208
+ Card.search({ sort: "name", limit: 50, return: :name },
209
+ "option names for pointer: #{name}")
210
+ end
211
+ end
212
+
213
213
  def option_cards
214
214
  option_names.map do |name|
215
215
  Card.fetch name, new: {}