card-mod-script 0.12.0 → 0.13.3

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/{lib/javascript → assets/script}/decko/autosave.js.coffee +0 -0
  4. data/{lib/javascript → assets/script}/decko/bridge.js.coffee +0 -0
  5. data/{lib/javascript → assets/script}/decko/card_menu.js.coffee +0 -0
  6. data/{lib/javascript → assets/script}/decko/components.js.coffee +0 -5
  7. data/{lib/javascript → assets/script}/decko/decko.js.coffee +0 -3
  8. data/{lib/javascript → assets/script}/decko/doubleclick.js.coffee +0 -0
  9. data/{lib/javascript → assets/script}/decko/editor.js.coffee +0 -0
  10. data/{lib/javascript → assets/script}/decko/filter.js.coffee +1 -1
  11. data/{lib/javascript → assets/script}/decko/filter_items.js.coffee +0 -0
  12. data/{lib/javascript → assets/script}/decko/filter_links.js.coffee +2 -2
  13. data/{lib/javascript → assets/script}/decko/follow.js.coffee +0 -0
  14. data/{lib/javascript → assets/script}/decko/layout.js.coffee +0 -0
  15. data/{lib/javascript → assets/script}/decko/link_editor.js.coffee +0 -0
  16. data/{lib/javascript → assets/script}/decko/mod.js.coffee +0 -0
  17. data/{lib/javascript → assets/script}/decko/modal.js.coffee +0 -0
  18. data/{lib/javascript → assets/script}/decko/name_editor.js.coffee +1 -20
  19. data/{lib/javascript → assets/script}/decko/navbox.js.coffee +0 -0
  20. data/{lib/javascript → assets/script}/decko/nest_editor.js.coffee +0 -0
  21. data/{lib/javascript → assets/script}/decko/nest_editor_name.js.coffee +0 -0
  22. data/{lib/javascript → assets/script}/decko/nest_editor_options.js.coffee +0 -0
  23. data/{lib/javascript → assets/script}/decko/nest_editor_rules.js.coffee +0 -0
  24. data/{lib/javascript → assets/script}/decko/overlay.js.coffee +0 -3
  25. data/{lib/javascript → assets/script}/decko/recaptcha.js.coffee +0 -0
  26. data/{lib/javascript → assets/script}/decko/selectable_filtered_content.js.coffee +0 -0
  27. data/{lib/javascript → assets/script}/decko/slot.js.coffee +6 -2
  28. data/{lib/javascript → assets/script}/decko/slot_ready.js.coffee +0 -0
  29. data/{lib/javascript → assets/script}/decko/slotter.js.coffee +0 -0
  30. data/{lib/javascript → assets/script}/decko/upload.js.coffee +0 -0
  31. data/assets/script/jquery-ui.min.js +13 -0
  32. data/{lib/javascript → assets/script}/jquery.autosize.js +0 -0
  33. data/assets/script/manifest.yml +44 -0
  34. data/{lib/javascript → assets/script}/script_pointer_config.js.coffee +0 -0
  35. data/{lib/javascript → assets/script}/script_pointer_list_editor.js.coffee +0 -0
  36. data/db/migrate_core_cards/20200804112348_add_mod_script_assets_type.rb +30 -0
  37. data/file/mod_script_script_decko_machine_output/file.js +2685 -0
  38. data/file/mod_script_script_jquery_machine_output/file.js +12924 -0
  39. data/init/early/init_execjs.rb +3 -0
  40. data/set/abstract/{script.rb → 00_script.rb} +7 -3
  41. data/set/abstract/01_asset_script.rb +25 -0
  42. data/set/abstract/01_java_script.rb +9 -0
  43. data/set/abstract/02_coffee_script.rb +25 -0
  44. data/set/abstract/03_asset_java_script.rb +4 -0
  45. data/set/abstract/04_asset_coffee_script.rb +4 -0
  46. data/set/abstract/script_asset_list.rb +32 -0
  47. data/set/all/head_javascript.rb +80 -0
  48. data/set/right/script.rb +18 -7
  49. data/set/self/script_mods.rb +1 -1
  50. data/set/type/coffee_script.rb +1 -23
  51. data/set/type/java_script.rb +1 -7
  52. data/set/type/local_script_folder_group.rb +2 -0
  53. data/set/type/local_script_manifest_group.rb +2 -0
  54. data/set/type/mod_script_assets.rb +21 -0
  55. metadata +72 -48
  56. data/lib/javascript/jquery-ui.js +0 -10
  57. data/set/self/01_script_libraries.rb +0 -1
  58. data/set/self/script_decko.rb +0 -12
  59. data/set/self/script_editors.rb +0 -1
  60. data/set/self/script_jquery.rb +0 -10
  61. data/set/self/script_jquery_helper.rb +0 -14
  62. data/set/self/script_pointer_config.rb +0 -9
@@ -0,0 +1,3 @@
1
+ # By requiring this here, we force the runtime detection (common installation problem)
2
+
3
+ require "execjs"
@@ -13,7 +13,7 @@ end
13
13
 
14
14
  def standard_machine_input
15
15
  js = format(:js)._render_core
16
- js = compress_js js if compress_js?
16
+ js = compress js if compress?
17
17
  comment_with_source js
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ def comment_with_source js
21
21
  "//#{name}\n#{js}"
22
22
  end
23
23
 
24
- def compress_js input
24
+ def compress input
25
25
  Uglifier.compile input
26
26
  rescue StandardError => e
27
27
  # CoffeeScript is compiled in a view
@@ -39,7 +39,7 @@ def compression_error_message e
39
39
  end
40
40
  end
41
41
 
42
- def compress_js?
42
+ def compress?
43
43
  Cardio.config.compress_javascript
44
44
  end
45
45
 
@@ -76,6 +76,10 @@ format :html do
76
76
  process_content highlight(script)
77
77
  end
78
78
 
79
+ view :javascript_include_tag do
80
+ javascript_include_tag card.machine_output_url # path(format: :js)
81
+ end
82
+
79
83
  def highlight script
80
84
  ::CodeRay.scan(script, :js).div
81
85
  end
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require "coffee-script"
4
+
5
+ include_set Abstract::AssetFile
6
+
7
+ def compress?
8
+ @minimize
9
+ end
10
+
11
+ format :js do
12
+ view :source do
13
+ if @local
14
+ card.machine_output_url
15
+ else
16
+ source
17
+ end
18
+ end
19
+ end
20
+
21
+ format :html do
22
+ view :javascript_include_tag do
23
+ javascript_include_tag card.machine_output_url
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ include_set Abstract::Script
4
+
5
+ format :js do
6
+ view :core do
7
+ _render_raw
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require "coffee-script"
4
+
5
+ include_set Abstract::Script
6
+
7
+ format :html do
8
+ def ace_mode
9
+ :coffee
10
+ end
11
+ end
12
+
13
+ format do
14
+ view :core do
15
+ compile_coffee _render_raw
16
+ end
17
+
18
+ def compile_coffee script
19
+ ::CoffeeScript.compile script
20
+ rescue StandardError => e
21
+ line_nr = e.to_s.match(/\[stdin\]:(\d*)/)&.capture(0)&.to_i
22
+ line = script.lines[line_nr - 1] if line_nr
23
+ raise Card::Error, "CoffeeScript::Error (#{card.name}): #{e.message}: #{line}"
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ include_set Abstract::AssetScript
4
+ include_set Abstract::JavaScript
@@ -0,0 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ include_set Abstract::AssetScript
4
+ include_set Abstract::CoffeeScript
@@ -0,0 +1,32 @@
1
+ include_set Abstract::Machine
2
+ include_set Abstract::MachineInput
3
+ include_set Abstract::AssetList
4
+
5
+ machine_input { standard_machine_input }
6
+ store_machine_output filetype: "js"
7
+
8
+ def new_asset_constants path
9
+ if path.ends_with? ".js.coffee"
10
+ coffeescript_constants
11
+ elsif path.ends_with? ".js"
12
+ javascript_constants
13
+ end
14
+ end
15
+
16
+ def coffeescript_constants
17
+ { type_id: CoffeeScriptID, set_module: Abstract::AssetCoffeeScript }
18
+ end
19
+
20
+ def javascript_constants
21
+ { type_id: JavaScriptID, set_module: Abstract::AssetJavaScript }
22
+ end
23
+
24
+ def standard_machine_input
25
+ render_items_and_compress :js
26
+ end
27
+
28
+ format :html do
29
+ view :javascript_include_tag do
30
+ javascript_include_tag card.machine_output_url
31
+ end
32
+ end
@@ -0,0 +1,80 @@
1
+ format :html do
2
+ # script_config basket is a hash where
3
+ # - key is the codename of a card with javascript config (usually in json format)
4
+ # - value is the name of a javascript method that handles the config
5
+ basket[:script_config] = {}
6
+
7
+ def views_in_head
8
+ super + %w[
9
+ decko_script_variables
10
+ head_javascript
11
+ html5shiv_tag
12
+ script_config_and_initiation
13
+ ]
14
+ end
15
+
16
+ view :decko_script_variables, unknown: true, cache: :never, perms: :none do
17
+ javascript_tag do
18
+ decko_script_variables.each_with_object("") do |(k, v), string|
19
+ string << "#{k}=#{script_variable_to_js v};\n"
20
+ end
21
+ end
22
+ end
23
+
24
+ view :head_javascript, unknown: true, cache: :never, perms: :none do
25
+ Array.wrap(head_javascript_paths).reject(&:empty?).join("\n")
26
+ end
27
+
28
+ view :html5shiv_tag, unknown: true, perms: :none do
29
+ nest :script_html5shiv_printshiv, view: :script_tag
30
+ end
31
+
32
+ view :script_config_and_initiation, unknown: true, perms: :none do
33
+ javascript_tag do
34
+ (script_configs << trigger_slot_ready).join "\n\n"
35
+ end
36
+ end
37
+
38
+ view :javascript_include_tag, unknown: true, perms: :none do
39
+ "\n<!-- javascript_include_tag not overridden for #{card.name} -->\n"
40
+ end
41
+
42
+ def decko_script_variables
43
+ {
44
+ "window.decko": { rootUrl: card_url("") },
45
+ "decko.doubleClick": Card.config.double_click,
46
+ "decko.cssPath": head_stylesheet_path,
47
+ "decko.currentUserId": (Auth.current_id if Auth.signed_in?)
48
+ }
49
+ end
50
+
51
+ def head_javascript_paths
52
+ return unless (asset_card = param_or_rule_card :script)
53
+
54
+ asset_card.item_cards.map do |script|
55
+ script.format(:html).render :javascript_include_tag
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ def trigger_slot_ready
62
+ "$('document').ready(function() { $('.card-slot').trigger('slotReady'); })"
63
+ end
64
+
65
+ def script_variable_to_js value
66
+ return "'#{value}'" unless value.is_a? Hash
67
+
68
+ vars = value.each_with_object("") do |(k, v), string|
69
+ string << "#{k}: #{script_variable_to_js v}"
70
+ end
71
+ "{ #{vars} }"
72
+ end
73
+
74
+ def script_configs
75
+ basket[:script_config].map do |codename, js_decko_function|
76
+ config_json = escape_javascript Card::Rule.global_setting(codename)
77
+ "decko.#{js_decko_function}('#{config_json}')"
78
+ end
79
+ end
80
+ end
data/set/right/script.rb CHANGED
@@ -1,18 +1,29 @@
1
- include_set Abstract::Machine
2
-
3
- store_machine_output filetype: "js"
1
+ include_set Abstract::Pointer
4
2
 
5
3
  def ok_to_read
6
4
  true
7
5
  end
8
6
 
9
- view :javascript_include_tag do
10
- %(
11
- <script src="#{card.machine_output_url}" type="text/javascript"></script>
12
- )
7
+ def refresh_output force: false
8
+ item_cards.each do |item_card|
9
+ # puts "refreshing #{item_card.name}".yellow
10
+ item_card.try :refresh_output, force: force
11
+ end
12
+ end
13
+
14
+ def regenerate_machine_output
15
+ item_cards.each do |item_card|
16
+ item_card.try :regenerate_machine_output
17
+ end
13
18
  end
14
19
 
15
20
  format :html do
21
+ view :javascript_include_tag do
22
+ card.item_cards.map do |script|
23
+ script.format(:html).render :javascript_include_tag
24
+ end
25
+ end
26
+
16
27
  def raw_help_text
17
28
  "JavaScript (or CoffeeScript) for card's page."
18
29
  end
@@ -1 +1 @@
1
- include_set Abstract::CodePointer
1
+ include_set Abstract::CodePointer, basket_name: :script_mods
@@ -1,25 +1,3 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- require "coffee-script"
4
-
5
- include_set Abstract::Script
6
-
7
- format :html do
8
- def ace_mode
9
- :coffee
10
- end
11
- end
12
-
13
- format do
14
- view :core do
15
- compile_coffee _render_raw
16
- end
17
-
18
- def compile_coffee script
19
- ::CoffeeScript.compile script
20
- rescue StandardError => e
21
- line_nr = e.to_s.match(/\[stdin\]:(\d*)/)&.capture(0)&.to_i
22
- line = script.lines[line_nr - 1] if line_nr
23
- raise Card::Error, "CoffeeScript::Error (#{card.name}): #{e.message}: #{line}"
24
- end
25
- end
3
+ include_set Abstract::CoffeeScript
@@ -1,9 +1,3 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- include_set Abstract::Script
4
-
5
- format :js do
6
- view :core do
7
- _render_raw
8
- end
9
- end
3
+ include_set Abstract::JavaScript
@@ -0,0 +1,2 @@
1
+ include_set Abstract::LocalFolderGroup
2
+ include_set Abstract::ScriptAssetList
@@ -0,0 +1,2 @@
1
+ include_set Abstract::LocalManifestGroup
2
+ include_set Abstract::ScriptAssetList
@@ -0,0 +1,21 @@
1
+ include_set Abstract::ModAssets
2
+
3
+ def subpath
4
+ "script"
5
+ end
6
+
7
+ def local_folder_group_type_id
8
+ ::Card::LocalScriptFolderGroupID
9
+ end
10
+
11
+ def local_manifest_group_type_id
12
+ ::Card::LocalScriptManifestGroupID
13
+ end
14
+
15
+ format :html do
16
+ view :javascript_include_tag do
17
+ card.item_cards.map do |icard|
18
+ nest icard, view: :javascript_include_tag
19
+ end.join("\n")
20
+ end
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-script
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-07-05 00:00:00.000000000 Z
13
+ date: 2021-09-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,42 +18,56 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.102.0
21
+ version: 1.103.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.102.0
28
+ version: 1.103.3
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-machines
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.12.0
35
+ version: 0.13.3
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.12.0
42
+ version: 0.13.3
43
+ - !ruby/object:Gem::Dependency
44
+ name: card-mod-assets
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '='
48
+ - !ruby/object:Gem::Version
49
+ version: 0.13.3
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '='
55
+ - !ruby/object:Gem::Version
56
+ version: 0.13.3
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: card-mod-list
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
61
  - - '='
48
62
  - !ruby/object:Gem::Version
49
- version: 0.12.0
63
+ version: 0.13.3
50
64
  type: :runtime
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
68
  - - '='
55
69
  - !ruby/object:Gem::Version
56
- version: 0.12.0
70
+ version: 0.13.3
57
71
  description: ''
58
72
  email:
59
73
  - info@decko.org
@@ -61,54 +75,64 @@ executables: []
61
75
  extensions: []
62
76
  extra_rdoc_files: []
63
77
  files:
64
- - lib/javascript/decko/autosave.js.coffee
65
- - lib/javascript/decko/bridge.js.coffee
66
- - lib/javascript/decko/card_menu.js.coffee
67
- - lib/javascript/decko/components.js.coffee
68
- - lib/javascript/decko/decko.js.coffee
69
- - lib/javascript/decko/doubleclick.js.coffee
70
- - lib/javascript/decko/editor.js.coffee
71
- - lib/javascript/decko/filter.js.coffee
72
- - lib/javascript/decko/filter_items.js.coffee
73
- - lib/javascript/decko/filter_links.js.coffee
74
- - lib/javascript/decko/follow.js.coffee
75
- - lib/javascript/decko/layout.js.coffee
76
- - lib/javascript/decko/link_editor.js.coffee
77
- - lib/javascript/decko/mod.js.coffee
78
- - lib/javascript/decko/modal.js.coffee
79
- - lib/javascript/decko/name_editor.js.coffee
80
- - lib/javascript/decko/navbox.js.coffee
81
- - lib/javascript/decko/nest_editor.js.coffee
82
- - lib/javascript/decko/nest_editor_name.js.coffee
83
- - lib/javascript/decko/nest_editor_options.js.coffee
84
- - lib/javascript/decko/nest_editor_rules.js.coffee
85
- - lib/javascript/decko/overlay.js.coffee
86
- - lib/javascript/decko/recaptcha.js.coffee
87
- - lib/javascript/decko/selectable_filtered_content.js.coffee
88
- - lib/javascript/decko/slot.js.coffee
89
- - lib/javascript/decko/slot_ready.js.coffee
90
- - lib/javascript/decko/slotter.js.coffee
91
- - lib/javascript/decko/upload.js.coffee
92
- - lib/javascript/jquery-ui.js
93
- - lib/javascript/jquery.autosize.js
78
+ - README.md
79
+ - assets/script/decko/autosave.js.coffee
80
+ - assets/script/decko/bridge.js.coffee
81
+ - assets/script/decko/card_menu.js.coffee
82
+ - assets/script/decko/components.js.coffee
83
+ - assets/script/decko/decko.js.coffee
84
+ - assets/script/decko/doubleclick.js.coffee
85
+ - assets/script/decko/editor.js.coffee
86
+ - assets/script/decko/filter.js.coffee
87
+ - assets/script/decko/filter_items.js.coffee
88
+ - assets/script/decko/filter_links.js.coffee
89
+ - assets/script/decko/follow.js.coffee
90
+ - assets/script/decko/layout.js.coffee
91
+ - assets/script/decko/link_editor.js.coffee
92
+ - assets/script/decko/mod.js.coffee
93
+ - assets/script/decko/modal.js.coffee
94
+ - assets/script/decko/name_editor.js.coffee
95
+ - assets/script/decko/navbox.js.coffee
96
+ - assets/script/decko/nest_editor.js.coffee
97
+ - assets/script/decko/nest_editor_name.js.coffee
98
+ - assets/script/decko/nest_editor_options.js.coffee
99
+ - assets/script/decko/nest_editor_rules.js.coffee
100
+ - assets/script/decko/overlay.js.coffee
101
+ - assets/script/decko/recaptcha.js.coffee
102
+ - assets/script/decko/selectable_filtered_content.js.coffee
103
+ - assets/script/decko/slot.js.coffee
104
+ - assets/script/decko/slot_ready.js.coffee
105
+ - assets/script/decko/slotter.js.coffee
106
+ - assets/script/decko/upload.js.coffee
107
+ - assets/script/jquery-ui.min.js
108
+ - assets/script/jquery.autosize.js
109
+ - assets/script/manifest.yml
110
+ - assets/script/script_pointer_config.js.coffee
111
+ - assets/script/script_pointer_list_editor.js.coffee
112
+ - db/migrate_core_cards/20200804112348_add_mod_script_assets_type.rb
113
+ - file/mod_script_script_decko_machine_output/file.js
114
+ - file/mod_script_script_jquery_machine_output/file.js
115
+ - init/early/init_execjs.rb
94
116
  - lib/javascript/jquery.iframe-transport.js
95
117
  - lib/javascript/script_html5shiv_printshiv.js
96
- - lib/javascript/script_pointer_config.js.coffee
97
- - lib/javascript/script_pointer_list_editor.js.coffee
98
118
  - lib/javascript/theme-textmate.js
99
- - set/abstract/script.rb
119
+ - set/abstract/00_script.rb
120
+ - set/abstract/01_asset_script.rb
121
+ - set/abstract/01_java_script.rb
122
+ - set/abstract/02_coffee_script.rb
123
+ - set/abstract/03_asset_java_script.rb
124
+ - set/abstract/04_asset_coffee_script.rb
125
+ - set/abstract/script_asset_list.rb
126
+ - set/all/head_javascript.rb
100
127
  - set/right/script.rb
101
- - set/self/01_script_libraries.rb
102
128
  - set/self/script.rb
103
- - set/self/script_decko.rb
104
- - set/self/script_editors.rb
105
129
  - set/self/script_html5shiv_printshiv.rb
106
- - set/self/script_jquery.rb
107
- - set/self/script_jquery_helper.rb
108
130
  - set/self/script_mods.rb
109
- - set/self/script_pointer_config.rb
110
131
  - set/type/coffee_script.rb
111
132
  - set/type/java_script.rb
133
+ - set/type/local_script_folder_group.rb
134
+ - set/type/local_script_manifest_group.rb
135
+ - set/type/mod_script_assets.rb
112
136
  - vendor/jquery_file_upload/CONTRIBUTING.md
113
137
  - vendor/jquery_file_upload/LICENSE.txt
114
138
  - vendor/jquery_file_upload/README.md
@@ -210,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
234
  - !ruby/object:Gem::Version
211
235
  version: '0'
212
236
  requirements: []
213
- rubygems_version: 3.2.15
237
+ rubygems_version: 3.1.6
214
238
  signing_key:
215
239
  specification_version: 4
216
240
  summary: JavaScript, CoffeeScript, etc.