shufu 0.1.4 → 0.1.5

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
  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