card-mod-script 0.12.0 → 0.13.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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/db/migrate_core_cards/20200804112348_add_mod_script_assets_type.rb +30 -0
  4. data/file/mod_script_script_decko_machine_output/file.js +2710 -0
  5. data/file/mod_script_script_jquery_machine_output/file.js +12924 -0
  6. data/set/abstract/{script.rb → 00_script.rb} +7 -3
  7. data/set/abstract/01_asset_script.rb +25 -0
  8. data/set/abstract/01_java_script.rb +9 -0
  9. data/set/abstract/02_coffee_script.rb +25 -0
  10. data/set/abstract/03_asset_java_script.rb +4 -0
  11. data/set/abstract/04_asset_coffee_script.rb +4 -0
  12. data/set/abstract/script_asset_list.rb +32 -0
  13. data/set/all/head_javascript.rb +75 -0
  14. data/set/right/script.rb +18 -7
  15. data/set/type/coffee_script.rb +1 -23
  16. data/set/type/java_script.rb +1 -7
  17. data/set/type/local_script_folder_group.rb +2 -0
  18. data/set/type/local_script_manifest_group.rb +2 -0
  19. data/set/type/mod_script_assets.rb +21 -0
  20. metadata +38 -48
  21. data/lib/javascript/decko/autosave.js.coffee +0 -30
  22. data/lib/javascript/decko/bridge.js.coffee +0 -31
  23. data/lib/javascript/decko/card_menu.js.coffee +0 -26
  24. data/lib/javascript/decko/components.js.coffee +0 -51
  25. data/lib/javascript/decko/decko.js.coffee +0 -100
  26. data/lib/javascript/decko/doubleclick.js.coffee +0 -30
  27. data/lib/javascript/decko/editor.js.coffee +0 -55
  28. data/lib/javascript/decko/filter.js.coffee +0 -176
  29. data/lib/javascript/decko/filter_items.js.coffee +0 -128
  30. data/lib/javascript/decko/filter_links.js.coffee +0 -81
  31. data/lib/javascript/decko/follow.js.coffee +0 -22
  32. data/lib/javascript/decko/layout.js.coffee +0 -76
  33. data/lib/javascript/decko/link_editor.js.coffee +0 -61
  34. data/lib/javascript/decko/mod.js.coffee +0 -85
  35. data/lib/javascript/decko/modal.js.coffee +0 -113
  36. data/lib/javascript/decko/name_editor.js.coffee +0 -59
  37. data/lib/javascript/decko/navbox.js.coffee +0 -74
  38. data/lib/javascript/decko/nest_editor.js.coffee +0 -166
  39. data/lib/javascript/decko/nest_editor_name.js.coffee +0 -102
  40. data/lib/javascript/decko/nest_editor_options.js.coffee +0 -93
  41. data/lib/javascript/decko/nest_editor_rules.js.coffee +0 -3
  42. data/lib/javascript/decko/overlay.js.coffee +0 -57
  43. data/lib/javascript/decko/recaptcha.js.coffee +0 -19
  44. data/lib/javascript/decko/selectable_filtered_content.js.coffee +0 -12
  45. data/lib/javascript/decko/slot.js.coffee +0 -178
  46. data/lib/javascript/decko/slot_ready.js.coffee +0 -11
  47. data/lib/javascript/decko/slotter.js.coffee +0 -276
  48. data/lib/javascript/decko/upload.js.coffee +0 -57
  49. data/lib/javascript/jquery-ui.js +0 -10
  50. data/lib/javascript/jquery.autosize.js +0 -274
  51. data/lib/javascript/script_pointer_config.js.coffee +0 -80
  52. data/lib/javascript/script_pointer_list_editor.js.coffee +0 -67
  53. data/set/self/01_script_libraries.rb +0 -1
  54. data/set/self/script_decko.rb +0 -12
  55. data/set/self/script_editors.rb +0 -1
  56. data/set/self/script_jquery.rb +0 -10
  57. data/set/self/script_jquery_helper.rb +0 -14
  58. data/set/self/script_pointer_config.rb +0 -9
@@ -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,75 @@
1
+ format :html do
2
+ def views_in_head
3
+ super + %w[
4
+ decko_script_variables
5
+ head_javascript
6
+ html5shiv_tag
7
+ script_config_and_initiation
8
+ ]
9
+ end
10
+
11
+ view :decko_script_variables, unknown: true, cache: :never, perms: :none do
12
+ javascript_tag do
13
+ decko_script_variables.each_with_object("") do |(k, v), string|
14
+ string << "#{k}=#{script_variable_to_js v};\n"
15
+ end
16
+ end
17
+ end
18
+
19
+ view :head_javascript, unknown: true, cache: :never, perms: :none do
20
+ Array.wrap(head_javascript_paths).reject(&:empty?).join("\n")
21
+ end
22
+
23
+ view :html5shiv_tag, unknown: true, perms: :none do
24
+ nest :script_html5shiv_printshiv, view: :script_tag
25
+ end
26
+
27
+ view :script_config_and_initiation, unknown: true, perms: :none do
28
+ javascript_tag do
29
+ (mod_js_configs << trigger_slot_ready).join "\n\n"
30
+ end
31
+ end
32
+
33
+ view :javascript_include_tag, unknown: true, perms: :none do
34
+ "\n<!-- javascript_include_tag not overridden for #{card.name} -->\n"
35
+ end
36
+
37
+ def decko_script_variables
38
+ {
39
+ "window.decko": { rootUrl: card_url("") },
40
+ "decko.doubleClick": Card.config.double_click,
41
+ "decko.cssPath": head_stylesheet_path,
42
+ "decko.currentUserId": (Auth.current_id if Auth.signed_in?)
43
+ }
44
+ end
45
+
46
+ def head_javascript_paths
47
+ return unless (asset_card = param_or_rule_card :script)
48
+
49
+ asset_card.item_cards.map do |script|
50
+ script.format(:html).render :javascript_include_tag
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def trigger_slot_ready
57
+ "$('document').ready(function() { $('.card-slot').trigger('slotReady'); })"
58
+ end
59
+
60
+ def script_variable_to_js value
61
+ return "'#{value}'" unless value.is_a? Hash
62
+
63
+ vars = value.each_with_object("") do |(k, v), string|
64
+ string << "#{k}: #{script_variable_to_js v}"
65
+ end
66
+ "{ #{vars} }"
67
+ end
68
+
69
+ def mod_js_configs
70
+ mod_js_config.map do |codename, js_decko_function|
71
+ config_json = escape_javascript Card::Rule.global_setting(codename)
72
+ "decko.#{js_decko_function}('#{config_json}')"
73
+ end
74
+ end
75
+ 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,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.0
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-08-06 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.0
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.0
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.0
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.0
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.0
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.0
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.0
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.0
57
71
  description: ''
58
72
  email:
59
73
  - info@decko.org
@@ -61,54 +75,30 @@ 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
+ - db/migrate_core_cards/20200804112348_add_mod_script_assets_type.rb
80
+ - file/mod_script_script_decko_machine_output/file.js
81
+ - file/mod_script_script_jquery_machine_output/file.js
94
82
  - lib/javascript/jquery.iframe-transport.js
95
83
  - lib/javascript/script_html5shiv_printshiv.js
96
- - lib/javascript/script_pointer_config.js.coffee
97
- - lib/javascript/script_pointer_list_editor.js.coffee
98
84
  - lib/javascript/theme-textmate.js
99
- - set/abstract/script.rb
85
+ - set/abstract/00_script.rb
86
+ - set/abstract/01_asset_script.rb
87
+ - set/abstract/01_java_script.rb
88
+ - set/abstract/02_coffee_script.rb
89
+ - set/abstract/03_asset_java_script.rb
90
+ - set/abstract/04_asset_coffee_script.rb
91
+ - set/abstract/script_asset_list.rb
92
+ - set/all/head_javascript.rb
100
93
  - set/right/script.rb
101
- - set/self/01_script_libraries.rb
102
94
  - set/self/script.rb
103
- - set/self/script_decko.rb
104
- - set/self/script_editors.rb
105
95
  - set/self/script_html5shiv_printshiv.rb
106
- - set/self/script_jquery.rb
107
- - set/self/script_jquery_helper.rb
108
96
  - set/self/script_mods.rb
109
- - set/self/script_pointer_config.rb
110
97
  - set/type/coffee_script.rb
111
98
  - set/type/java_script.rb
99
+ - set/type/local_script_folder_group.rb
100
+ - set/type/local_script_manifest_group.rb
101
+ - set/type/mod_script_assets.rb
112
102
  - vendor/jquery_file_upload/CONTRIBUTING.md
113
103
  - vendor/jquery_file_upload/LICENSE.txt
114
104
  - vendor/jquery_file_upload/README.md
@@ -210,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
200
  - !ruby/object:Gem::Version
211
201
  version: '0'
212
202
  requirements: []
213
- rubygems_version: 3.2.15
203
+ rubygems_version: 3.1.6
214
204
  signing_key:
215
205
  specification_version: 4
216
206
  summary: JavaScript, CoffeeScript, etc.