mushy 0.18.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mushy/builder/index.rb +19 -5
- data/lib/mushy/fluxs/bash.rb +2 -0
- data/lib/mushy/fluxs/browser.rb +2 -0
- data/lib/mushy/fluxs/build_csv.rb +1 -0
- data/lib/mushy/fluxs/cli.rb +2 -1
- data/lib/mushy/fluxs/collection.rb +3 -1
- data/lib/mushy/fluxs/document.rb +2 -0
- data/lib/mushy/fluxs/environment.rb +2 -1
- data/lib/mushy/fluxs/file_watch.rb +23 -6
- data/lib/mushy/fluxs/filter.rb +2 -0
- data/lib/mushy/fluxs/format.rb +2 -0
- data/lib/mushy/fluxs/git_log.rb +2 -0
- data/lib/mushy/fluxs/global_variables.rb +2 -1
- data/lib/mushy/fluxs/interval.rb +2 -0
- data/lib/mushy/fluxs/ls.rb +28 -1
- data/lib/mushy/fluxs/parse_html.rb +1 -0
- data/lib/mushy/fluxs/pdf.rb +1 -0
- data/lib/mushy/fluxs/pwd.rb +2 -0
- data/lib/mushy/fluxs/read_csv.rb +1 -0
- data/lib/mushy/fluxs/read_file.rb +1 -0
- data/lib/mushy/fluxs/read_json.rb +1 -0
- data/lib/mushy/fluxs/regex_matches.rb +64 -0
- data/lib/mushy/fluxs/screenshot.rb +1 -0
- data/lib/mushy/fluxs/sense_hat_environmental_sensors.rb +2 -0
- data/lib/mushy/fluxs/sense_hat_led_matrix.rb +2 -0
- data/lib/mushy/fluxs/simple_python_program.rb +1 -0
- data/lib/mushy/fluxs/smtp.rb +2 -1
- data/lib/mushy/fluxs/stdout.rb +2 -1
- data/lib/mushy/fluxs/times.rb +2 -0
- data/lib/mushy/fluxs/twilio_message.rb +2 -1
- data/lib/mushy/fluxs/write_file.rb +1 -0
- data/lib/mushy/fluxs/write_json.rb +1 -0
- data/mushy.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfd4d2f868fa9bd4c147f4cd9c7af24cea6ad38934d2e2bec53a6c8c9e396345
|
4
|
+
data.tar.gz: bf919c0d4f927dbc8ef6705b183fea9aa8d2fa73f61354603e83d2c8d01e3842
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9de7dae32eb11e0ae5448c0990e6a4be38483f3f38552e4bf519e6bdec047de6694c86734e57f2b3fe002a1ca263f9b0ed7232b1b42cc5290a2e99ee3d34745f
|
7
|
+
data.tar.gz: da103a79f76baa1cadc52d6a0f5100cfdb848212c9e6e1ac3b9dcb79fa14a527a8f1e7af8a4dc0d91e0e5d7ff77a142f8258308ecba819bfcf517a5772b03b68
|
data/lib/mushy/builder/index.rb
CHANGED
@@ -62,7 +62,9 @@ module Mushy
|
|
62
62
|
</header>
|
63
63
|
<section class="modal-card-body">
|
64
64
|
<div class="content">
|
65
|
-
<div v-for="(
|
65
|
+
<div v-for="(fluxGroup) in fluxGroups">
|
66
|
+
<h2 style="font-style:italic">{{fluxGroup.name}}</h2>
|
67
|
+
<div v-for="(fluxType, id) in fluxGroup.fluxs">
|
66
68
|
<div class="level">
|
67
69
|
<div class="level-left"><h2>{{fluxType.title || fluxType.name}}</h2></div>
|
68
70
|
<div class="level-right">
|
@@ -87,6 +89,7 @@ module Mushy
|
|
87
89
|
<div v-for="(a, b) in fluxType.documentation" v-if="fluxType['detailsTab'] == b" v-html="a"></div>
|
88
90
|
</div>
|
89
91
|
</div>
|
92
|
+
</div>
|
90
93
|
</div>
|
91
94
|
</section>
|
92
95
|
<footer class="modal-card-foot">
|
@@ -236,7 +239,7 @@ module Mushy
|
|
236
239
|
};
|
237
240
|
},
|
238
241
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
239
|
-
template: '<div><div class="level"><div class="level-left"><div class="level-item"><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label></div><div class="level-item"> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a></div></div></div> <span v-for="option in options" v-if="value && value.includes(option.id)">{{option.name}} <a href="#" v-on:click.prevent.stop="remove(option.id, value);$emit(\\'update:value\\', value)">[X]</a> </span> <
|
242
|
+
template: '<div><div class="level"><div class="level-left"><div class="level-item"><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label></div><div class="level-item"> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a></div></div></div> <span v-for="option in options" v-if="value && value.includes(option.id)">{{option.name}} <a href="#" v-on:click.prevent.stop="remove(option.id, value);$emit(\\'update:value\\', value)">[X]</a> </span> <div class="control"><select :name="id" v-if="value || !shrink" v-on:input="selectedValue=$event.target.value;" class="select" v-on:change.prevent.stop="doit(selectedValue, value);$emit(\\'update:value\\', value);$event.target.value=\\'\\';"><option v-for="option in options" v-bind:value="option.id">{{option.name}}</option></select></div></div>'
|
240
243
|
},
|
241
244
|
boolean: {
|
242
245
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
@@ -324,7 +327,7 @@ module Mushy
|
|
324
327
|
});
|
325
328
|
}
|
326
329
|
|
327
|
-
var thingTemplate = '<div v-bind:class="{ \\\'ml-3\\\': data.foghat==\\\'free\\\', \\\'column\\\': data.foghat!=\\\'free\\\', \\\'is-full\\\': data.foghat!=\\\'half\\\' && data.foghat!=\\\'free\\\', \\\'is-half\\\': data.foghat==\\\'half\\\' }">';
|
330
|
+
var thingTemplate = '<div v-show="data.hide != true" v-bind:class="{ \\\'ml-3\\\': data.foghat==\\\'free\\\', \\\'column\\\': data.foghat!=\\\'free\\\', \\\'is-full\\\': data.foghat!=\\\'half\\\' && data.foghat!=\\\'free\\\', \\\'is-half\\\': data.foghat==\\\'half\\\' }">';
|
328
331
|
for (var property in components)
|
329
332
|
thingTemplate = thingTemplate + '<mip-' + property + ' v-if="data.type == \\'' + property + '\\'" :id="id" ' + components[property].props.map(function(x){ return ':' + x + '.sync="data.' + x + '"';}).join(' ') + '></mip-' + property + '>'
|
330
333
|
thingTemplate = thingTemplate + '</div>';
|
@@ -335,7 +338,7 @@ module Mushy
|
|
335
338
|
console: console,
|
336
339
|
}
|
337
340
|
},
|
338
|
-
props: ['data', 'value', 'id', 'model', 'foghat'],
|
341
|
+
props: ['data', 'value', 'id', 'model', 'foghat', 'hide'],
|
339
342
|
template: thingTemplate
|
340
343
|
});
|
341
344
|
|
@@ -385,6 +388,16 @@ module Mushy
|
|
385
388
|
x['detailsTab'] = Object.getOwnPropertyNames(x.documentation)[0];
|
386
389
|
} );
|
387
390
|
|
391
|
+
fluxGroups = []
|
392
|
+
fluxdata.fluxs.map(function(x) {
|
393
|
+
if (x.fluxGroup) {} else { x.fluxGroup = { name: 'Others', position: 999999 } };
|
394
|
+
rowboat = fluxGroups.filter(function(y) { return y.name == x.fluxGroup.name })[0];
|
395
|
+
if (rowboat) {} else { fluxGroups.push(x.fluxGroup); x.fluxGroup.fluxs = [] }
|
396
|
+
rowboat = fluxGroups.filter(function(y) { return y.name == x.fluxGroup.name })[0];
|
397
|
+
rowboat.fluxs.push(x);
|
398
|
+
} );
|
399
|
+
fluxGroups = fluxGroups.sort(function(x, y) { return (x.position || 1000) - (y.position || 1000); })
|
400
|
+
|
388
401
|
var configs = {};
|
389
402
|
fluxdata.fluxs.map(function(x){
|
390
403
|
configs[x.name] = x.config;
|
@@ -446,7 +459,7 @@ module Mushy
|
|
446
459
|
},
|
447
460
|
id: { type: 'hide', value: '' },
|
448
461
|
name: { type: 'text', value: '' },
|
449
|
-
flux: { type: 'select', value: fluxdata.fluxs[0].name, options: options},
|
462
|
+
flux: { type: 'select', value: fluxdata.fluxs[0].name, options: options, hide: true },
|
450
463
|
open_flux: { type: 'button', name: 'Select a Flux', foghat: 'free', medium: 'hey', color: 'is-primary',
|
451
464
|
click: function() {
|
452
465
|
Vue.set(app.setup.fluxTypeSelect, 'is-active', true);
|
@@ -566,6 +579,7 @@ module Mushy
|
|
566
579
|
},
|
567
580
|
configs: configs,
|
568
581
|
fluxTypes: fluxTypesWithDetails,
|
582
|
+
fluxGroups: fluxGroups,
|
569
583
|
setup: setup,
|
570
584
|
flux_name_for: function(ids, fluxes) {
|
571
585
|
var fluxs = fluxes.filter(function(x){ return ids.includes(x.id) });
|
data/lib/mushy/fluxs/bash.rb
CHANGED
data/lib/mushy/fluxs/browser.rb
CHANGED
data/lib/mushy/fluxs/cli.rb
CHANGED
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Collection',
|
8
|
-
|
8
|
+
title: 'Collect and retrieve events',
|
9
|
+
description: 'Collect and retrieve events for the flow.',
|
10
|
+
fluxGroup: { name: 'Flows' },
|
9
11
|
config: {
|
10
12
|
id: {
|
11
13
|
description: 'The path to the unique id in the body of the element.',
|
data/lib/mushy/fluxs/document.rb
CHANGED
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Document',
|
8
|
+
title: 'Make a multi-line liquid value',
|
8
9
|
description: 'Create a multi-line document.',
|
10
|
+
fluxGroup: { name: 'Flows' },
|
9
11
|
config: {
|
10
12
|
document: {
|
11
13
|
description: 'The multi-line document you wish to create.',
|
@@ -5,8 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Environment',
|
8
|
-
title: '
|
8
|
+
title: 'Pull environment variables',
|
9
9
|
description: 'Pull environment variables.',
|
10
|
+
fluxGroup: { name: 'Environment' },
|
10
11
|
config: {
|
11
12
|
variables: {
|
12
13
|
description: 'Map the environment variables to a new event.',
|
@@ -7,7 +7,8 @@ module Mushy
|
|
7
7
|
def self.details
|
8
8
|
{
|
9
9
|
name: 'FileWatch',
|
10
|
-
title: '
|
10
|
+
title: 'Start a flow when files change',
|
11
|
+
fluxGroup: { name: 'Starters', position: 0 },
|
11
12
|
description: 'Watch for file changes.',
|
12
13
|
config: {
|
13
14
|
directory: {
|
@@ -16,6 +17,12 @@ module Mushy
|
|
16
17
|
shrink: true,
|
17
18
|
value: '',
|
18
19
|
},
|
20
|
+
include_all_file_details: {
|
21
|
+
description: 'If true, returns all details for the file. If false, just path & name are returned',
|
22
|
+
type: 'boolean',
|
23
|
+
shrink: true,
|
24
|
+
value: '',
|
25
|
+
}
|
19
26
|
},
|
20
27
|
examples: {
|
21
28
|
"Files Added" => {
|
@@ -46,15 +53,14 @@ module Mushy
|
|
46
53
|
}
|
47
54
|
end
|
48
55
|
|
49
|
-
def loop
|
50
|
-
|
56
|
+
def loop(&block)
|
51
57
|
directory = config[:directory].to_s != '' ? config[:directory] : Dir.pwd
|
52
58
|
|
53
59
|
listener = Listen.to(directory) do |modified, added, removed|
|
54
60
|
the_event = {
|
55
|
-
modified: modified,
|
56
|
-
added: added,
|
57
|
-
removed: removed
|
61
|
+
modified: modified.map { |f| get_the_details_for(f) },
|
62
|
+
added: added.map { |f| get_the_details_for(f) },
|
63
|
+
removed: removed.map { |f| get_the_details_for(f) }
|
58
64
|
}
|
59
65
|
block.call the_event
|
60
66
|
end
|
@@ -69,6 +75,17 @@ module Mushy
|
|
69
75
|
event
|
70
76
|
end
|
71
77
|
|
78
|
+
def get_the_details_for(file)
|
79
|
+
if config[:include_all_file_details].to_s == 'true'
|
80
|
+
Mushy::Ls.new.process({}, { path: file })[0]
|
81
|
+
else
|
82
|
+
{
|
83
|
+
path: file,
|
84
|
+
name: file.split("\/").pop
|
85
|
+
}
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
72
89
|
end
|
73
90
|
|
74
91
|
end
|
data/lib/mushy/fluxs/filter.rb
CHANGED
data/lib/mushy/fluxs/format.rb
CHANGED
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Format',
|
8
|
+
title: 'Alter the format of an event',
|
8
9
|
description: 'Return the event passed to it. This opens the opportunity to use the common fluxing to alter the event.',
|
10
|
+
fluxGroup: { name: 'Flows' },
|
9
11
|
config: {},
|
10
12
|
examples: {
|
11
13
|
"Simplest Example" => {
|
data/lib/mushy/fluxs/git_log.rb
CHANGED
@@ -7,7 +7,8 @@ module Mushy
|
|
7
7
|
def self.details
|
8
8
|
{
|
9
9
|
name: 'GlobalVariables',
|
10
|
-
title: '
|
10
|
+
title: 'Set global variables',
|
11
|
+
fluxGroup: { name: 'Flows' },
|
11
12
|
description: 'Add global variables to use in any future flux. Returns what was passed to it.',
|
12
13
|
config: {
|
13
14
|
values: {
|
data/lib/mushy/fluxs/interval.rb
CHANGED
data/lib/mushy/fluxs/ls.rb
CHANGED
@@ -2,10 +2,30 @@ module Mushy
|
|
2
2
|
|
3
3
|
class Ls < Bash
|
4
4
|
|
5
|
+
def self.the_ls_command
|
6
|
+
@the_ls_command ||= find_the_right_ls_command_to_use
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.find_the_right_ls_command_to_use
|
10
|
+
commands = [
|
11
|
+
'ls', # the normal method used to pull file information
|
12
|
+
'gls' # BSD users don't get the version of ls this needs,
|
13
|
+
# so we might need to use gls after the user runs (brew install coreutils)
|
14
|
+
]
|
15
|
+
|
16
|
+
the_command_to_use = nil
|
17
|
+
while the_command_to_use.nil? && (command = commands.shift) # keep trying till we find one that works
|
18
|
+
the_command_to_use = command if Mushy::Bash.new.process({}, { command: "#{command} --full-time" })[:success]
|
19
|
+
end
|
20
|
+
the_command_to_use || -1
|
21
|
+
end
|
22
|
+
|
5
23
|
def self.details
|
6
24
|
{
|
7
25
|
name: 'Ls',
|
26
|
+
title: 'List Files',
|
8
27
|
description: 'Run the "ls" command.',
|
28
|
+
fluxGroup: { name: 'Files' },
|
9
29
|
config: Mushy::Bash.details[:config].tap { |c| c.delete :command },
|
10
30
|
}.tap do |c|
|
11
31
|
c[:config][:recursive] = {
|
@@ -132,6 +152,8 @@ module Mushy
|
|
132
152
|
end
|
133
153
|
|
134
154
|
def process event, config
|
155
|
+
raise 'ls is not available' if self.class.the_ls_command == -1
|
156
|
+
|
135
157
|
arguments = build_the_arguments_from config
|
136
158
|
|
137
159
|
config[:command] = build_the_command_from arguments
|
@@ -142,7 +164,8 @@ module Mushy
|
|
142
164
|
end
|
143
165
|
|
144
166
|
def build_the_command_from arguments
|
145
|
-
|
167
|
+
command = self.class.the_ls_command
|
168
|
+
"#{command} #{arguments.join(' ')}"
|
146
169
|
end
|
147
170
|
|
148
171
|
def build_the_arguments_from config
|
@@ -230,6 +253,10 @@ module Mushy
|
|
230
253
|
|
231
254
|
result[:date] = Mushy::DateParts.parse result[:date]
|
232
255
|
|
256
|
+
if File.exist?(result[:name]) && result[:name].start_with?(directory)
|
257
|
+
result[:name] = result[:name].split("\/")[-1]
|
258
|
+
end
|
259
|
+
|
233
260
|
result[:directory] = directory
|
234
261
|
|
235
262
|
if result[:type] == 'd' && result[:directory] == result[:name]
|
data/lib/mushy/fluxs/pdf.rb
CHANGED
data/lib/mushy/fluxs/pwd.rb
CHANGED
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Pwd',
|
8
|
+
title: 'Get the working directory',
|
8
9
|
description: 'Run the "pwd" command.',
|
10
|
+
fluxGroup: { name: 'Environment' },
|
9
11
|
config: Mushy::Bash.details[:config].tap { |c| c.delete :command },
|
10
12
|
}.tap do |c|
|
11
13
|
c[:examples] = {
|
data/lib/mushy/fluxs/read_csv.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
module Mushy
|
2
|
+
class RegexMatches < Flux
|
3
|
+
def self.details
|
4
|
+
{
|
5
|
+
name: 'RegexMatches',
|
6
|
+
title: 'Find regex matches',
|
7
|
+
description: 'Use a regex to search content.',
|
8
|
+
fluxGroup: { name: 'Regex' },
|
9
|
+
config: {
|
10
|
+
regex: { description: 'The regular expression to use.',
|
11
|
+
type: 'text',
|
12
|
+
value: '(\w+)' },
|
13
|
+
value: { description: 'The value against which to use the regular expression.',
|
14
|
+
type: 'text',
|
15
|
+
value: '{{value}}' }
|
16
|
+
},
|
17
|
+
examples: {
|
18
|
+
'Simple Example' => {
|
19
|
+
description: 'The simplest regex.',
|
20
|
+
input: { text: 'apple orange' },
|
21
|
+
config: {
|
22
|
+
regex: '(\w+)',
|
23
|
+
value: 'apple orange'
|
24
|
+
},
|
25
|
+
result: [ { match1: 'apple' }, { match2: 'orange' } ]
|
26
|
+
},
|
27
|
+
'Named Parameters' => {
|
28
|
+
description: 'Named Parameters.',
|
29
|
+
input: {
|
30
|
+
text: 'apple 1 orange 2'
|
31
|
+
},
|
32
|
+
config: {
|
33
|
+
regex: '(?<name>\w+) (?<count>\d+)',
|
34
|
+
value: '{{text}}'
|
35
|
+
},
|
36
|
+
result: [ { name: 'apple', count: '1' }, { name: 'orange', count: '2' } ]
|
37
|
+
},
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def process(_, config)
|
43
|
+
return [] unless config[:value]
|
44
|
+
return [] if (config[:regex] || '').strip == ''
|
45
|
+
|
46
|
+
keys = config[:regex].scan(/\?<(\w+)>/).flatten
|
47
|
+
|
48
|
+
regex = Regexp.new config[:regex]
|
49
|
+
|
50
|
+
config[:value].scan(regex).map do |match|
|
51
|
+
convert_the_match_to_a_hash match, keys
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def convert_the_match_to_a_hash(match, keys)
|
56
|
+
{}.tap do |hash|
|
57
|
+
match.each_with_index do |item, index|
|
58
|
+
key = (keys[index] || "match#{index + 1}").to_sym
|
59
|
+
hash[key] = item
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'SenseHatEnvironmentalSensors',
|
8
|
+
title: 'Read Environmental Sensors',
|
8
9
|
description: 'Pull values from the Sense HAT environmental sensors.',
|
10
|
+
fluxGroup: { name: 'SenseHAT' },
|
9
11
|
config: Mushy::SimplePythonProgram.default_config,
|
10
12
|
}.tap do |c|
|
11
13
|
measurements
|
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'SenseHatLedMatrix',
|
8
|
+
title: 'Use LED Matrix',
|
8
9
|
description: 'Interface with the LED Matrix.',
|
10
|
+
fluxGroup: { name: 'SenseHAT' },
|
9
11
|
config: Mushy::SimplePythonProgram.default_config.tap do |config|
|
10
12
|
config[:get_pixels] = {
|
11
13
|
description: 'Specify the pixels you want returned as events. Use "all" to return all 64, 3,3 to return x:3 y:3, or "none" to return none.',
|
data/lib/mushy/fluxs/smtp.rb
CHANGED
data/lib/mushy/fluxs/stdout.rb
CHANGED
data/lib/mushy/fluxs/times.rb
CHANGED
@@ -5,7 +5,9 @@ module Mushy
|
|
5
5
|
def self.details
|
6
6
|
{
|
7
7
|
name: 'Times',
|
8
|
+
title: 'Repeat an event X times',
|
8
9
|
description: 'Return the event passed to it, X times.',
|
10
|
+
fluxGroup: { name: 'Flows' },
|
9
11
|
config: {
|
10
12
|
times: {
|
11
13
|
description: 'The number of times this event should be returned.',
|
@@ -7,6 +7,7 @@ module Mushy
|
|
7
7
|
name: 'WriteFile',
|
8
8
|
title: 'Write File',
|
9
9
|
description: 'Write a file.',
|
10
|
+
fluxGroup: { name: 'Files' },
|
10
11
|
config: file_saving_config.merge({
|
11
12
|
data: {
|
12
13
|
description: 'The text to write. You can use Liquid templating here to pull data from the event, or write hardcoded data.',
|
data/mushy.gemspec
CHANGED
@@ -4,7 +4,7 @@ require 'mushy/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'mushy'
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.21.0'
|
8
8
|
s.date = '2020-11-23'
|
9
9
|
s.summary = 'Process streams of work using common modules.'
|
10
10
|
s.description = 'This tool assists in the creation and processing of workflows.'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mushy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darren Cauthon
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- lib/mushy/fluxs/read_csv.rb
|
206
206
|
- lib/mushy/fluxs/read_file.rb
|
207
207
|
- lib/mushy/fluxs/read_json.rb
|
208
|
+
- lib/mushy/fluxs/regex_matches.rb
|
208
209
|
- lib/mushy/fluxs/screenshot.rb
|
209
210
|
- lib/mushy/fluxs/sense_hat_environmental_sensors.rb
|
210
211
|
- lib/mushy/fluxs/sense_hat_led_matrix.rb
|