hiiro 0.1.72 → 0.1.73

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: 5f96d3544bba42161e843e3e9478eb09a72b0cf32b2ec0736ef9a3e074d247cc
4
- data.tar.gz: 8cb67c7ae3a7de600bb43b75b8399fc998359a7ac869241485a582561d8225a5
3
+ metadata.gz: 6e5da997129e859e2b39f52c5957b6ea731eeb67900ebb267e3ea5544cac6811
4
+ data.tar.gz: 824ada42a5049c88f49db82f610f041ebe7ba47bb16d37e144d4eab64c8a8206
5
5
  SHA512:
6
- metadata.gz: 3397f01c85baa33ad040dff94823fec9ed78475aafe2b18a008df3aea3766c2f55ef622988b2b9a4b8b0e34ed0679015bafecf76b295f744d72449c127680844
7
- data.tar.gz: 8c9fd7fe66febe8af0eca35c980fbf550ec2fd1461d845be4d0f481825fb77aa0e22075753db294f0d5de79a3f3f23cef3da7859d0fe1d4a983d77db7d0f4018
6
+ metadata.gz: 47795b75ece248e052be1d00fcfe608207bcef0e264a6904273f51124e44493fc8f91f3bd2fcc7274c3361c5e873debf82573d135f7b8d8c12ae5845b5b5847f
7
+ data.tar.gz: 86ed2f56f85af8fa2b843dc30b05e0e3a86c41a1743a065ed953ab4ae81415175ccf7542e2e5e77ea4ca30868fb650f1774bcf233ac61536fd5ef8b6ddce2564
data/lib/hiiro/options.rb CHANGED
@@ -12,9 +12,20 @@ class Hiiro
12
12
 
13
13
  def initialize(&block)
14
14
  @definitions = {}
15
+ flag(:help, short: 'h', desc: 'Show this help message')
15
16
  instance_eval(&block) if block
16
17
  end
17
18
 
19
+ def help_text
20
+ lines = []
21
+ @definitions.each do |name, defn|
22
+ next if name == :help
23
+ lines << defn.usage_line
24
+ end
25
+ lines << @definitions[:help].usage_line
26
+ lines.join("\n")
27
+ end
28
+
18
29
  def flag(name, short: nil, default: false, desc: nil)
19
30
  defn = Definition.new(name, short: short, type: :flag, default: default, desc: desc)
20
31
  @definitions[name.to_sym] = defn
@@ -64,6 +75,20 @@ class Hiiro
64
75
  @values[key] != @definitions[key].default
65
76
  end
66
77
 
78
+ def help?
79
+ @values[:help]
80
+ end
81
+
82
+ def help_text
83
+ lines = []
84
+ @definitions.each do |name, defn|
85
+ next if name == :help
86
+ lines << defn.usage_line
87
+ end
88
+ lines << @definitions[:help].usage_line
89
+ lines.join("\n")
90
+ end
91
+
67
92
  def to_h
68
93
  @values.dup
69
94
  end
@@ -188,6 +213,25 @@ class Hiiro
188
213
  else value
189
214
  end
190
215
  end
216
+
217
+ def usage_line
218
+ parts = []
219
+ parts << (short_form ? "#{short_form}, #{long_form}" : " #{long_form}")
220
+ parts[0] = parts[0].ljust(20)
221
+ parts << value_hint unless flag?
222
+ parts << desc if desc
223
+ parts << "(default: #{default.inspect})" if default && !flag?
224
+ parts << "[multi]" if multi
225
+ parts.join(" ")
226
+ end
227
+
228
+ def value_hint
229
+ case type
230
+ when :integer then "<int>"
231
+ when :float then "<num>"
232
+ else "<value>"
233
+ end
234
+ end
191
235
  end
192
236
  end
193
237
  end
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.72"
2
+ VERSION = "0.1.73"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.72
4
+ version: 0.1.73
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota