simple_args_dispatch 0.1.9 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34cd8818effe8859f7f7a9c65586ae3d88889e03
4
- data.tar.gz: 4a7c10bce6cfc64afc62574b201a627026d8df90
3
+ metadata.gz: 64fbaa1d14906bb9cf27c997cf73a3d742e12e11
4
+ data.tar.gz: bb1fc2215e97f48a5614392eff8373c4afff708e
5
5
  SHA512:
6
- metadata.gz: f04cd6d080e3943fefd5f179935bbbee50b1193260a2cbdc342fd449189ea04f2b0229aa99a84759f6d8f37d6712d56b4bdc50c6a78bfb344238f012adc6b5fa
7
- data.tar.gz: eb6a2e0559ed081aa0b57c6ba36520211df72bcf0c9c5b83d6f58935723d49d40f9e4d9dd1cb6f135c2014477264f8848f34de149a47cc090a1601a0b35ac106
6
+ metadata.gz: e20c90d2cea3fc05647ae451c47b66fa83d5a710a7075e8c19ada9726bd3cf9bbd17fd647bb304a3561591f8d3cb744827ac6c4bf956fc7f269cf8bcac457c34
7
+ data.tar.gz: 2b197303b69906ee19d3462e71ba45cf9c4cde8651cb5894d73e55d6ed0d2326f9ab9993be615bb093e0724683893dc279eb2edaec2d331b3ad293f48ed6152a
@@ -1,3 +1,3 @@
1
1
  module SimpleArgsDispatch
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "simple_args_dispatch/version"
2
2
  require 'simple_speaker'
3
+ require 'yaml'
3
4
 
4
5
  module SimpleArgsDispatch
5
6
 
@@ -13,14 +14,14 @@ module SimpleArgsDispatch
13
14
  # }
14
15
  # end
15
16
 
16
- def self.dispatch(app_name, args, actions, parent = nil)
17
+ def self.dispatch(app_name, args, actions, parent = nil, template_dir = '')
17
18
  arg = args.shift
18
19
  actions.each do |k, v|
19
20
  if arg == k.to_s
20
21
  if v.is_a?(Hash)
21
- self.dispatch(app_name, args, v, "#{parent} #{arg}")
22
+ self.dispatch(app_name, args, v, "#{parent} #{arg}", template_dir)
22
23
  else
23
- self.launch(app_name, v, args, "#{parent} #{arg}")
24
+ self.launch(app_name, v, args, "#{parent} #{arg}", template_dir)
24
25
  end
25
26
  return
26
27
  end
@@ -31,9 +32,9 @@ module SimpleArgsDispatch
31
32
  self.show_available(app_name, actions, parent)
32
33
  end
33
34
 
34
- def self.launch(app_name, action, args, parent)
35
+ def self.launch(app_name, action, args, parent, template_dir)
35
36
  args = Hash[args.flat_map { |s| s.scan(/--?([^=\s]+)(?:=(.+))?/) }]
36
- template_args = Utils.load_template(args['template_name'])
37
+ template_args = parse_template_args(load_template(args['template_name'], template_dir), template_dir)
37
38
  model = Object.const_get(action[0])
38
39
  req_params = model.method(action[1].to_sym).parameters.map { |a| a.reverse! }
39
40
  req_params.each do |param|
@@ -49,10 +50,31 @@ module SimpleArgsDispatch
49
50
  speaker.tell_error(e, "SimpleAgrsDispatch.launch")
50
51
  end
51
52
 
53
+ def self.load_template(template_name, template_dir)
54
+ if template_name.to_s != '' && File.exist?(template_dir + '/' + "#{template_name}.yml")
55
+ return YAML.load_file(template_dir + '/' + "#{template_name}.yml")
56
+ end
57
+ {}
58
+ rescue
59
+ {}
60
+ end
61
+
52
62
  def self.new_line
53
63
  '---------------------------------------------------------'
54
64
  end
55
65
 
66
+ def self.parse_template_args(template, template_dir)
67
+ template.keys.each do |k|
68
+ if k.to_s == 'load_template' && template[k].is_a?(String)
69
+ template.merge!(load_template(template[k].to_s, template_dir))
70
+ template.delete(k)
71
+ elsif template[k].is_a?(Hash)
72
+ template[k] = parse_template_args(template[k], template_dir)
73
+ end
74
+ end
75
+ template
76
+ end
77
+
56
78
  def self.show_available(app_name, available, prepend = nil, join='|', separator = new_line, extra_info = '')
57
79
  speaker.speak_up("Usage: #{app_name} #{prepend + ' ' if prepend}#{available.map { |k, v| "#{k.to_s}#{'(optional)' if v == :opt}" }.join(join)}")
58
80
  if extra_info.to_s != ''
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_args_dispatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - R
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-26 00:00:00.000000000 Z
11
+ date: 2017-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler