card-mod-machines 0.12.0 → 0.13.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/file/all_style_machine_output/file.css +3 -3
- data/file/script_html5shiv_printshiv_machine_output/file.js +1 -1
- data/lib/card/machine.rb +43 -6
- data/set/abstract/machine/output_update.rb +17 -16
- data/set/abstract/machine.rb +32 -13
- metadata +13 -15
- data/file/all_script_machine_output/file.js +0 -136
- data/set/all/reset_machines.rb +0 -22
@@ -1,2 +1,2 @@
|
|
1
1
|
//script: html5shiv printshiv
|
2
|
-
!function(e,
|
2
|
+
!function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=T.elements;return"string"==typeof e?e.split(" "):e}function a(e){var t=N[e[b]];return t||(t={},S++,e[b]=S,N[S]=t),t}function o(e,n,r){if(n||(n=t),p)return n.createElement(e);r||(r=a(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():E.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),o.canHaveChildren&&!y.test(e)?r.frag.appendChild(o):o}function i(e,n){if(e||(e=t),p)return e.createDocumentFragment();n=n||a(e);for(var o=n.frag.cloneNode(),i=0,c=r(),l=c.length;l>i;i++)o.createElement(c[i]);return o}function c(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return T.shivMethods?o(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/\w+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(T,t.frag)}function l(e){e||(e=t);var r=a(e);return!T.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),p||c(e,r),e}function u(e){for(var t,n=e.getElementsByTagName("*"),a=n.length,o=RegExp("^(?:"+r().join("|")+")$","i"),i=[];a--;)t=n[a],o.test(t.nodeName)&&i.push(t.applyElement(s(t)));return i}function s(e){for(var t,n=e.attributes,r=n.length,a=e.ownerDocument.createElement(x+":"+e.nodeName);r--;)t=n[r],t.specified&&a.setAttribute(t.nodeName,t.nodeValue);return a.style.cssText=e.style.cssText,a}function m(e){for(var t,n=e.split("{"),a=n.length,o=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),i="$1"+x+"\\:$2";a--;)t=n[a]=n[a].split("}"),t[t.length-1]=t[t.length-1].replace(o,i),n[a]=t.join("}");return n.join("{")}function d(e){for(var t=e.length;t--;)e[t].removeNode()}function f(e){function t(){clearTimeout(i._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,i=a(e),c=e.namespaces,l=e.parentWindow;return!C||e.printShived?e:("undefined"==typeof c[x]&&c.add(x),l.attachEvent("onbeforeprint",function(){t();for(var a,i,c,l=e.styleSheets,s=[],d=l.length,f=Array(d);d--;)f[d]=l[d];for(;c=f.pop();)if(!c.disabled&&F.test(c.media)){try{a=c.imports,i=a.length}catch(h){i=0}for(d=0;i>d;d++)f.push(a[d]);try{s.push(c.cssText)}catch(h){}}s=m(s.reverse().join("")),o=u(e),r=n(e,s)}),l.attachEvent("onafterprint",function(){d(o),clearTimeout(i._removeSheetTimer),i._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,p,v="3.6.2",g=e.html5||{},y=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,E=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,b="_html5shiv",S=0,N={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",h="hidden"in e,p=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,p=!0}}();var T={elements:g.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:v,shivCSS:g.shivCSS!==!1,supportsUnknownElements:p,shivMethods:g.shivMethods!==!1,type:"default",shivDocument:l,createElement:o,createDocumentFragment:i};e.html5=T,l(t);var F=/^$|\b(?:all|print)\b/,x="html5shiv",C=!p&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();T.type+=" print",T.shivPrint=f,f(t)}(this,document);
|
data/lib/card/machine.rb
CHANGED
@@ -3,16 +3,53 @@ class Card
|
|
3
3
|
REFRESHED = "MACHINE_ASSETS_REFRESHED".freeze
|
4
4
|
|
5
5
|
class << self
|
6
|
-
def
|
7
|
-
return unless
|
6
|
+
def refresh_assets force: false
|
7
|
+
return unless force || refresh_assets?
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
refresh_asset :script, force
|
10
|
+
refresh_asset :style, force
|
11
|
+
end
|
12
|
+
|
13
|
+
def refresh_assets!
|
14
|
+
refresh_assets force: true
|
15
|
+
end
|
16
|
+
|
17
|
+
def reset_all
|
18
|
+
Auth.as_bot do
|
19
|
+
Card.search(right: { codename: "machine_output" }).each do |card|
|
20
|
+
card.update_columns trash: true
|
21
|
+
card.expire
|
22
|
+
end
|
23
|
+
end
|
24
|
+
reset_virtual_machine_cache
|
25
|
+
end
|
26
|
+
|
27
|
+
def reset_script
|
28
|
+
Auth.as_bot do
|
29
|
+
card = Card[:all, :script, :machine_output]
|
30
|
+
if card
|
31
|
+
card.update_columns trash: true
|
32
|
+
card.expire
|
33
|
+
reset_virtual_machine_cache
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def refresh_asset asset_type, force
|
39
|
+
all_rule(asset_type)&.refresh_output force: force
|
11
40
|
end
|
12
41
|
|
13
42
|
private
|
14
43
|
|
15
|
-
def
|
44
|
+
def all_rule asset_type
|
45
|
+
Card[[:all, asset_type]]
|
46
|
+
end
|
47
|
+
|
48
|
+
def reset_virtual_machine_cache
|
49
|
+
Virtual.where(right_id: MachineCacheID).delete_all
|
50
|
+
end
|
51
|
+
|
52
|
+
def refresh_assets?
|
16
53
|
case Cardio.config.machine_refresh
|
17
54
|
when :eager then true
|
18
55
|
when :cautious then cautious_refresh?
|
@@ -25,7 +62,7 @@ class Card
|
|
25
62
|
|
26
63
|
# only refresh when cache was cleared
|
27
64
|
def cautious_refresh?
|
28
|
-
return false unless
|
65
|
+
return false unless Cache.persistent_cache
|
29
66
|
return false if Card.cache.read REFRESHED
|
30
67
|
|
31
68
|
Card.cache.write REFRESHED, true
|
@@ -4,7 +4,7 @@ def reset_machine_output
|
|
4
4
|
@updated_at = output_updated_at
|
5
5
|
moc.delete! if moc.real?
|
6
6
|
update_input_card
|
7
|
-
|
7
|
+
expire_outdated @updated_at
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -19,7 +19,7 @@ def update_machine_output
|
|
19
19
|
|
20
20
|
lock do
|
21
21
|
update_input_card
|
22
|
-
|
22
|
+
expire_outdated
|
23
23
|
run_machine
|
24
24
|
end
|
25
25
|
end
|
@@ -41,29 +41,24 @@ def update_input_card
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
44
|
+
# regenerates the machine output if a source file of a input card has been changed
|
45
|
+
def refresh_output force: false
|
46
|
+
regenerate_machine_output if expire_outdated || force
|
48
47
|
end
|
49
48
|
|
50
|
-
|
51
|
-
|
49
|
+
private
|
50
|
+
|
51
|
+
def expire_outdated updated_at=nil
|
52
|
+
updated_at ||= output_updated_at
|
53
|
+
return true unless updated_at
|
52
54
|
|
53
|
-
changed = input_cards_with_changed_source
|
55
|
+
changed = input_cards_with_changed_source updated_at
|
54
56
|
return if changed.empty?
|
55
57
|
|
56
58
|
changed.each(&:expire_machine_cache)
|
57
59
|
true
|
58
60
|
end
|
59
61
|
|
60
|
-
# regenerates the machine output if a source file of a input card has been changed
|
61
|
-
def update_if_source_file_changed
|
62
|
-
return unless expire_if_source_file_changed output_updated_at
|
63
|
-
|
64
|
-
regenerate_machine_output
|
65
|
-
end
|
66
|
-
|
67
62
|
def output_updated_at
|
68
63
|
return unless (output_card = machine_output_card)
|
69
64
|
|
@@ -73,3 +68,9 @@ def output_updated_at
|
|
73
68
|
output_card.updated_at
|
74
69
|
end
|
75
70
|
end
|
71
|
+
|
72
|
+
def input_cards_with_changed_source output_updated
|
73
|
+
machine_input_card.extended_item_cards.select do |i_card|
|
74
|
+
i_card.try(:source_changed?, since: output_updated)
|
75
|
+
end
|
76
|
+
end
|
data/set/abstract/machine.rb
CHANGED
@@ -88,7 +88,7 @@ class EngineInput
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def simple_item?
|
91
|
-
@item.item_cards == [@item] # no pointer card
|
91
|
+
@item.item_cards == [@item] || @item.try(:self_machine_input?) # no pointer card
|
92
92
|
end
|
93
93
|
|
94
94
|
def pointer_item
|
@@ -123,17 +123,15 @@ def after_engine output
|
|
123
123
|
file = Tempfile.new [id.to_s, ".#{filetype}"]
|
124
124
|
file.write output
|
125
125
|
file.rewind
|
126
|
-
|
127
|
-
p = machine_output_card
|
128
|
-
p.file = file
|
129
|
-
p.save!
|
130
|
-
end
|
126
|
+
store_machine_output file
|
131
127
|
file.close
|
132
128
|
file.unlink
|
133
129
|
end
|
134
130
|
|
135
|
-
|
136
|
-
machine_output_url
|
131
|
+
format do
|
132
|
+
view :machine_output_url do
|
133
|
+
machine_output_url
|
134
|
+
end
|
137
135
|
end
|
138
136
|
|
139
137
|
class << self
|
@@ -166,15 +164,14 @@ def run_machine joint="\n"
|
|
166
164
|
end
|
167
165
|
|
168
166
|
def direct_machine_input? input_card
|
169
|
-
!input_card.collection? ||
|
170
|
-
input_card.respond_to?(:machine_input)
|
167
|
+
!input_card.collection? || input_card.respond_to?(:machine_input)
|
171
168
|
end
|
172
169
|
|
173
170
|
def run_engine input_card
|
174
171
|
return unless direct_machine_input? input_card
|
175
|
-
if (cached = fetch_cache_card(input_card)) && cached.content?
|
176
|
-
|
177
|
-
end
|
172
|
+
# if (cached = fetch_cache_card(input_card)) && cached.content?
|
173
|
+
# return cached.content
|
174
|
+
# end
|
178
175
|
|
179
176
|
engine(input_from_card(input_card)).tap do |output|
|
180
177
|
cache_output_part input_card, output
|
@@ -189,6 +186,7 @@ def input_from_card input_card
|
|
189
186
|
end
|
190
187
|
end
|
191
188
|
|
189
|
+
# FIXME: this is wack. set the storage right the first time through. obviate
|
192
190
|
def make_machine_output_coded mod=:machines
|
193
191
|
update_machine_output
|
194
192
|
Card::Auth.as_bot do
|
@@ -219,3 +217,24 @@ def machine_output_path
|
|
219
217
|
ensure_machine_output
|
220
218
|
machine_output_card.file.path
|
221
219
|
end
|
220
|
+
|
221
|
+
private
|
222
|
+
|
223
|
+
# TODO: make more methods private!
|
224
|
+
|
225
|
+
def store_machine_output file
|
226
|
+
Card::Auth.as_bot do
|
227
|
+
moc = machine_output_card
|
228
|
+
prepare_coded_output moc
|
229
|
+
moc.file = file
|
230
|
+
moc.save!
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
def prepare_coded_output moc
|
235
|
+
return unless (dir = ENV["SEED_MACHINE_OUTPUT_TO"])
|
236
|
+
ENV["STORE_CODED_FILES"] = "true"
|
237
|
+
moc.storage_type = moc.new_storage_type = :coded
|
238
|
+
moc.mod = dir
|
239
|
+
moc.codename = machine_output_codename
|
240
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card-mod-machines
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 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-
|
13
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: card
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
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.
|
28
|
+
version: 1.103.3
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: execjs
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,56 +52,56 @@ dependencies:
|
|
52
52
|
requirements:
|
53
53
|
- - '='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
55
|
+
version: 0.13.3
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - '='
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
62
|
+
version: 0.13.3
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: card-mod-format
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
69
|
+
version: 0.13.3
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - '='
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.
|
76
|
+
version: 0.13.3
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: card-mod-list
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - '='
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.
|
83
|
+
version: 0.13.3
|
84
84
|
type: :runtime
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - '='
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0.
|
90
|
+
version: 0.13.3
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: card-mod-carrierwave
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - '='
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
97
|
+
version: 0.13.3
|
98
98
|
type: :runtime
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - '='
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: 0.
|
104
|
+
version: 0.13.3
|
105
105
|
description: ''
|
106
106
|
email:
|
107
107
|
- info@decko.org
|
@@ -109,7 +109,6 @@ executables: []
|
|
109
109
|
extensions: []
|
110
110
|
extra_rdoc_files: []
|
111
111
|
files:
|
112
|
-
- file/all_script_machine_output/file.js
|
113
112
|
- file/all_style_machine_output/file.css
|
114
113
|
- file/script_html5shiv_printshiv_machine_output/file.js
|
115
114
|
- lib/card/machine.rb
|
@@ -117,7 +116,6 @@ files:
|
|
117
116
|
- set/abstract/machine/output_cache.rb
|
118
117
|
- set/abstract/machine/output_update.rb
|
119
118
|
- set/abstract/machine_input.rb
|
120
|
-
- set/all/reset_machines.rb
|
121
119
|
- set/right/machine_cache.rb
|
122
120
|
- set/right/machine_input.rb
|
123
121
|
- set/right/machine_output.rb
|
@@ -146,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
144
|
- !ruby/object:Gem::Version
|
147
145
|
version: '0'
|
148
146
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
147
|
+
rubygems_version: 3.1.6
|
150
148
|
signing_key:
|
151
149
|
specification_version: 4
|
152
150
|
summary: decko machines
|