shufu 0.1.4 → 0.1.5

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
  SHA256:
3
- metadata.gz: 071d6191267e3bb684b700c188e3cdcc7924c7a93e329cf79c49eb0c203a0ff4
4
- data.tar.gz: de82af9aac1ff9b9114f668f71b200706c1e6ba1e1d1e289d4ab562c830a9e6b
3
+ metadata.gz: 5292874c3c0b7e7b686e584768b18a91498e6e7bf0c1b1d2dfcce2cc3708a852
4
+ data.tar.gz: 56e7e3d7addc3d78e4742610112a3640de0153fab82f78be248afc2f38b0e7c7
5
5
  SHA512:
6
- metadata.gz: 32f4aed2b7910b2a3f0a405d248165c48cd94abeed5c2fdf01cfd711f51aa9d8aaa09628e8f9cc9b3049695f6343e6f11c814b8afafcc2681da361cf9b4cfa5e
7
- data.tar.gz: dc924999be4ee8db979697cc0c1e12580703a6af0ac6933fbd225327d5c4f25a4584db4e176b3cfa8163b641d069c44ff388b0959b8d3ce30e389d98e6e3547b
6
+ metadata.gz: b42b5b8ff788553bf653e5e5c4749be45ff57601bab548020caec226995cffee08a377ef1ddd68db5a47e159895f57ba7265783ad82961b3b94eea30356d1bad
7
+ data.tar.gz: 2a67a0eaa32072d833045a129d4a7026d1d4de6e967d42186f3d0422fd27396d1707d8721cd735c3cd1943388a6246100cef2a34aa1d117b47b05ece40046139
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shufu (0.1.4)
4
+ shufu (0.1.5)
5
5
  dry-initializer
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -23,12 +23,14 @@ Or install it yourself as:
23
23
  ```ruby
24
24
  require "shufu"
25
25
 
26
- schema = [
27
- { name: "git", type: "command" },
28
- { name: "commit", type: "command" },
29
- { name: "amend", type: "flag" },
30
- { name: "author", type: "equal" }
31
- ]
26
+ schema = {
27
+ git: {
28
+ commit: {
29
+ amend: :flag,
30
+ author: :equal
31
+ }
32
+ }
33
+ }
32
34
 
33
35
  command = Shufu::Command.new(schema)
34
36
 
data/lib/shufu/command.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  module Shufu
2
2
  class Command
3
3
  #
4
- # @param [Array<Hash>] schema
4
+ # @param [Hash] schema
5
5
  #
6
6
  def initialize(schema)
7
- @schema = schema.map { |s| Argument.new(**s) }
7
+ @schema = schema
8
8
  end
9
9
 
10
10
  #
@@ -12,24 +12,23 @@ module Shufu
12
12
  # @return [String]
13
13
  #
14
14
  def to_s(values)
15
- arguments(values).join(" ")
15
+ arguments(@schema, values, []).join(" ")
16
16
  end
17
17
 
18
18
  #
19
- # @reutrn [Array<String>]
19
+ # @param [Hash] schema
20
+ # @param [Hash] values
20
21
  #
21
- def arguments(values)
22
- [commands] + values.map { |k, v|
23
- a = @schema.find { |a| a.name == k.to_s } || Argument.new(name: k)
24
- a.to_s(v)
25
- }
26
- end
22
+ def arguments(schema, values, args)
23
+ schema.each do |k, v|
24
+ if v.is_a?(Hash)
25
+ args = arguments(v, values, args).prepend(k)
26
+ else
27
+ args << Argument.new(name: k, type: v).to_s(values[k]) if values[k]
28
+ end
29
+ end
27
30
 
28
- #
29
- # @return [Array<String>]
30
- #
31
- def commands
32
- @schema.select { |a| a.type == :command }.map(&:name)
31
+ args
33
32
  end
34
33
  end
35
34
  end
data/lib/shufu/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Shufu
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shufu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - cc-kawakami