dandy 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44208350faa4b49a2b907fb4894e37763c50f2cc
|
4
|
+
data.tar.gz: a39b0f9a8990f40a4f04b65c49f3c9377d4445d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ae6c24615f86775e5ab079c846225ccc40b3633d0ca4105bb1b94145641770998688cf8bf3f8e7300ece8b00cd0a161b9e808c0a12346fe1e90068a5c707c47
|
7
|
+
data.tar.gz: 0315435cf5dd9ba67e9726b7cd5ab351fbbbd83e9e16ace5870aa503d3021020745124b57eda8fe2be4b0c25dbf477c05b15c7e7ab6933ddd3688d05cd954c3d
|
data/lib/dandy/chain.rb
CHANGED
@@ -69,8 +69,19 @@ module Dandy
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def run_command(command)
|
72
|
-
|
73
|
-
|
72
|
+
if command.entity?
|
73
|
+
entity = @container.resolve(command.entity_name.to_sym)
|
74
|
+
method_name = command.entity_method.to_sym
|
75
|
+
|
76
|
+
param_names = entity.class.instance_method(method_name).parameters.map(&:last)
|
77
|
+
params = param_names.map {|param_name| @container.resolve(param_name)}
|
78
|
+
|
79
|
+
result = entity.public_send(method_name, *params)
|
80
|
+
else
|
81
|
+
action = @container.resolve(command.name.to_sym)
|
82
|
+
result = action.call
|
83
|
+
end
|
84
|
+
|
74
85
|
|
75
86
|
@container
|
76
87
|
.register_instance(result, command.result_name.to_sym)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Syntax
|
2
2
|
class Command < Treetop::Runtime::SyntaxNode
|
3
|
-
attr_reader :name, :result_name
|
3
|
+
attr_reader :name, :result_name, :entity_method, :entity_name
|
4
4
|
|
5
5
|
def parse
|
6
6
|
@is_async = text_value.start_with? '=*'
|
@@ -18,6 +18,12 @@ module Syntax
|
|
18
18
|
@name = full_name
|
19
19
|
end
|
20
20
|
|
21
|
+
if full_name.include? '.'
|
22
|
+
parts = full_name.split('.')
|
23
|
+
@entity_name = parts[0]
|
24
|
+
@entity_method = parts[1]
|
25
|
+
end
|
26
|
+
|
21
27
|
self
|
22
28
|
end
|
23
29
|
|
@@ -32,5 +38,9 @@ module Syntax
|
|
32
38
|
def sequential?
|
33
39
|
@is_sequential
|
34
40
|
end
|
41
|
+
|
42
|
+
def entity?
|
43
|
+
@entity_name && @entity_method
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
data/lib/dandy/routing/syntax.rb
CHANGED
@@ -7,6 +7,7 @@ require_relative 'syntax/primitives/http_status'
|
|
7
7
|
require_relative 'syntax/primitives/parameter'
|
8
8
|
require_relative 'syntax/primitives/path'
|
9
9
|
require_relative 'syntax/primitives/result_name'
|
10
|
+
require_relative 'syntax/primitives/entity_method'
|
10
11
|
|
11
12
|
require_relative 'syntax/action'
|
12
13
|
require_relative 'syntax/actions'
|
@@ -40,13 +40,17 @@ grammar Syntax
|
|
40
40
|
end
|
41
41
|
|
42
42
|
rule command
|
43
|
-
(arrow result_name [a-z0-9_\/]+) 1..1 <Command>
|
43
|
+
(arrow result_name [a-z0-9_\/]+ entity_method) 1..1 <Command>
|
44
44
|
end
|
45
45
|
|
46
46
|
rule result_name
|
47
47
|
([a-z0-9_]+ '@') 0..1 <ResultName>
|
48
48
|
end
|
49
49
|
|
50
|
+
rule entity_method
|
51
|
+
('.' [a-z0-9_]+ ) 0..1 <EntityMethod>
|
52
|
+
end
|
53
|
+
|
50
54
|
rule commands
|
51
55
|
command* <Commands>
|
52
56
|
end
|
data/lib/dandy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dandy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Kalinkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hypo
|
@@ -273,6 +273,7 @@ files:
|
|
273
273
|
- lib/dandy/routing/syntax/nodes.rb
|
274
274
|
- lib/dandy/routing/syntax/primitives/arrow.rb
|
275
275
|
- lib/dandy/routing/syntax/primitives/back_arrow.rb
|
276
|
+
- lib/dandy/routing/syntax/primitives/entity_method.rb
|
276
277
|
- lib/dandy/routing/syntax/primitives/eol.rb
|
277
278
|
- lib/dandy/routing/syntax/primitives/http_status.rb
|
278
279
|
- lib/dandy/routing/syntax/primitives/http_verb.rb
|