card-mod-machines 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.
- 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
|