mothership 0.2.3 → 0.2.4
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.
- data/lib/mothership/inputs.rb +22 -19
- data/lib/mothership/version.rb +1 -1
- metadata +4 -4
data/lib/mothership/inputs.rb
CHANGED
@@ -22,8 +22,8 @@ class Mothership
|
|
22
22
|
def given(name)
|
23
23
|
if @inputs.key?(name)
|
24
24
|
@inputs[name]
|
25
|
-
|
26
|
-
|
25
|
+
elsif (given = @given[name]) != :interact
|
26
|
+
given
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -43,11 +43,26 @@ class Mothership
|
|
43
43
|
inputs.delete(n)
|
44
44
|
end
|
45
45
|
|
46
|
-
self.class.new(@command, @context,
|
46
|
+
self.class.new(@command, @context, inputs, given, @global)
|
47
47
|
end
|
48
48
|
|
49
49
|
def [](name, *args)
|
50
|
-
|
50
|
+
return @inputs[name] if @inputs.key?(name)
|
51
|
+
|
52
|
+
if @command && meta = @command.inputs[name]
|
53
|
+
# special case so #invoke can be called with singular-named inputs
|
54
|
+
singular = meta[:singular]
|
55
|
+
|
56
|
+
if @inputs.key?(singular)
|
57
|
+
return @inputs[name] = [@inputs[singular]]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
val = get(name, @context, *args)
|
62
|
+
|
63
|
+
@inputs[name] = val unless meta && meta[:forget]
|
64
|
+
|
65
|
+
val
|
51
66
|
end
|
52
67
|
|
53
68
|
def interact(name, *args)
|
@@ -71,16 +86,10 @@ class Mothership
|
|
71
86
|
# 5. global
|
72
87
|
# 6. global, singular
|
73
88
|
def get(name, context, *args)
|
74
|
-
return @inputs[name] if @inputs.key?(name)
|
75
|
-
|
76
89
|
before_input = @current_input
|
77
90
|
@current_input = [name, args]
|
78
91
|
|
79
92
|
if @command && meta = @command.inputs[name]
|
80
|
-
# special case so #invoke can be called with singular-named inputs
|
81
|
-
singular = meta[:singular]
|
82
|
-
return @inputs[name] = [@inputs[singular]] if @inputs.key?(singular)
|
83
|
-
|
84
93
|
found, val = find_in(@given, name, meta, context, *args)
|
85
94
|
elsif meta = Mothership.global_option(name)
|
86
95
|
found, val = find_in(@global, name, meta, context, *args)
|
@@ -89,16 +98,15 @@ class Mothership
|
|
89
98
|
return val if not found
|
90
99
|
|
91
100
|
if val == :interact && interact = meta[:interact]
|
92
|
-
|
101
|
+
context.instance_exec(*args, &interact)
|
93
102
|
else
|
94
|
-
|
103
|
+
convert_given(meta, context, val, *args)
|
95
104
|
end
|
96
105
|
ensure
|
97
106
|
@current_input = before_input
|
98
107
|
end
|
99
108
|
|
100
109
|
def forget(name)
|
101
|
-
@given.delete(name)
|
102
110
|
@inputs.delete(name)
|
103
111
|
end
|
104
112
|
|
@@ -117,12 +125,7 @@ class Mothership
|
|
117
125
|
[true, [where[singular]]]
|
118
126
|
else
|
119
127
|
# no value given; set as default
|
120
|
-
|
121
|
-
|
122
|
-
# cache default value
|
123
|
-
@inputs[name] = val unless meta[:forget]
|
124
|
-
|
125
|
-
[false, val]
|
128
|
+
[false, default_for(meta, context, *args)]
|
126
129
|
end
|
127
130
|
end
|
128
131
|
|
data/lib/mothership/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mothership
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Suraci
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-10-
|
18
|
+
date: 2012-10-17 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rake
|