card-mod-script 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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.