tins 1.19.0 → 1.20.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 +4 -4
- data/README.md +4 -1
- data/VERSION +1 -1
- data/lib/tins/go.rb +23 -2
- data/lib/tins/version.rb +1 -1
- data/tests/go_test.rb +15 -0
- data/tins.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ef6d2f0b36fcd36a9e2d04a93734e2344f34b3e7fbb7cf338e5d96c4a956b2f
|
4
|
+
data.tar.gz: 336a0db38796155a2561e55ac4c631730c179f1246045b1161cdd5a32e197c6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53f6a410165371cb96139274549b0dff25f33c538aca7e71adf62e36b2c7bd94bef7c4f321de7321faea9eb220deceac8479a0a1c02fe96a438c92691d22f215
|
7
|
+
data.tar.gz: 67c04f5f1c9804b574ef4af508cf2ae814da283a9bed1714413274d4ca91b8fe10f798672ec58813362f50bb13c3c4cf8aab9ad2726fae66def4a6048f33f8cf
|
data/README.md
CHANGED
@@ -12,7 +12,10 @@ Non yet.
|
|
12
12
|
|
13
13
|
## Changes
|
14
14
|
|
15
|
-
|
15
|
+
|
16
|
+
* 2018-11-14 Release 1.20.0
|
17
|
+
- Support default arguments in Tins::GO#go method.
|
18
|
+
* 2018-11-07 Release 1.19.0
|
16
19
|
- Allow annotations without arguments
|
17
20
|
* 2018-11-02 Release 1.18.0
|
18
21
|
- `thread_local` and `thread_global` with default block
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.20.0
|
data/lib/tins/go.rb
CHANGED
@@ -22,14 +22,35 @@ module Tins
|
|
22
22
|
# 'xy:' an option '-x' without an option argument is searched, and an
|
23
23
|
# option '-y foo' with an option argument ('foo').
|
24
24
|
#
|
25
|
+
# The _defaults_ argument specifies default values for the options.
|
26
|
+
#
|
25
27
|
# An option hash is returned with all found options set to true or the
|
26
28
|
# found option argument.
|
27
|
-
def go(s, args = ARGV)
|
29
|
+
def go(s, args = ARGV, defaults: {})
|
30
|
+
d = defaults || {}
|
28
31
|
b, v = s.scan(/(.)(:?)/).inject([ {}, {} ]) { |t, (o, a)|
|
29
32
|
a = a == ':'
|
30
33
|
t[a ? 1 : 0][o] = a ? nil : false
|
31
34
|
t
|
32
35
|
}
|
36
|
+
b.each_key do |k|
|
37
|
+
d.key?(k) or next
|
38
|
+
if [ 0, false, nil ].include?(d[k])
|
39
|
+
b[k] = false
|
40
|
+
elsif d[k].respond_to?(:to_int)
|
41
|
+
b[k] = d[k].to_int
|
42
|
+
else
|
43
|
+
b[k] = 1
|
44
|
+
end
|
45
|
+
end
|
46
|
+
v.each_key do |k|
|
47
|
+
d.key?(k) or next
|
48
|
+
if [ 0, false, nil ].include?(d[k])
|
49
|
+
v[k] = nil
|
50
|
+
else
|
51
|
+
v[k] = d[k].to_s
|
52
|
+
end
|
53
|
+
end
|
33
54
|
r = []
|
34
55
|
while a = args.shift
|
35
56
|
/\A-(?<p>.+)/ =~ a or (r << a; next)
|
@@ -44,7 +65,7 @@ module Tins
|
|
44
65
|
else
|
45
66
|
a = p
|
46
67
|
end
|
47
|
-
if v[o].nil?
|
68
|
+
if v[o].nil? || !(EnumerableExtension === v[o])
|
48
69
|
a = a.dup
|
49
70
|
a.extend EnumerableExtension
|
50
71
|
a << a
|
data/lib/tins/version.rb
CHANGED
data/tests/go_test.rb
CHANGED
@@ -58,5 +58,20 @@ module Tins
|
|
58
58
|
assert_equal({ 'a' => 1, 'b' => 'hello', 'e' => nil }, r)
|
59
59
|
assert_equal [], args
|
60
60
|
end
|
61
|
+
|
62
|
+
def test_defaults
|
63
|
+
r = go('bv:', args = %w[ -v bar ], defaults: { ?b => true, ?v => 'foo' })
|
64
|
+
assert_equal({ ?b => 1, 'v' => 'bar' }, r)
|
65
|
+
assert_equal [], args
|
66
|
+
r = go('bv:', args = %w[ -b -v bar ], defaults: { ?b => 22, ?v => 'foo' })
|
67
|
+
assert_equal({ ?b => 23, 'v' => 'bar' }, r)
|
68
|
+
assert_equal [], args
|
69
|
+
r = go('bv:', args = %w[ -b ], defaults: { ?b => false, ?v => 'foo' })
|
70
|
+
assert_equal({ ?b => 1, 'v' => 'foo' }, r)
|
71
|
+
assert_equal [], args
|
72
|
+
r = go('bv:', args = %w[ ], defaults: { ?b => false, ?v => 'foo' })
|
73
|
+
assert_equal({ ?b => false, 'v' => 'foo' }, r)
|
74
|
+
assert_equal [], args
|
75
|
+
end
|
61
76
|
end
|
62
77
|
end
|
data/tins.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: tins 1.
|
2
|
+
# stub: tins 1.20.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "tins".freeze
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.20.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2018-11-
|
11
|
+
s.date = "2018-11-14"
|
12
12
|
s.description = "All the stuff that isn't good/big enough for a real library.".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.extra_rdoc_files = ["README.md".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/dslkit.rb".freeze, "lib/tins/duration.rb".freeze, "lib/tins/expose.rb".freeze, "lib/tins/extract_last_argument_options.rb".freeze, "lib/tins/file_binary.rb".freeze, "lib/tins/find.rb".freeze, "lib/tins/generator.rb".freeze, "lib/tins/go.rb".freeze, "lib/tins/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/hash_union.rb".freeze, "lib/tins/if_predicate.rb".freeze, "lib/tins/implement.rb".freeze, "lib/tins/limited.rb".freeze, "lib/tins/lines_file.rb".freeze, "lib/tins/memoize.rb".freeze, "lib/tins/method_description.rb".freeze, "lib/tins/minimize.rb".freeze, "lib/tins/module_group.rb".freeze, "lib/tins/named_set.rb".freeze, "lib/tins/null.rb".freeze, "lib/tins/once.rb".freeze, "lib/tins/p.rb".freeze, "lib/tins/partial_application.rb".freeze, "lib/tins/proc_compose.rb".freeze, "lib/tins/proc_prelude.rb".freeze, "lib/tins/range_plus.rb".freeze, "lib/tins/require_maybe.rb".freeze, "lib/tins/responding.rb".freeze, "lib/tins/secure_write.rb".freeze, "lib/tins/sexy_singleton.rb".freeze, "lib/tins/string_byte_order_mark.rb".freeze, "lib/tins/string_camelize.rb".freeze, "lib/tins/string_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/dslkit.rb".freeze, "lib/tins/xt/expose.rb".freeze, "lib/tins/xt/extract_last_argument_options.rb".freeze, "lib/tins/xt/file_binary.rb".freeze, "lib/tins/xt/full.rb".freeze, "lib/tins/xt/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/xt/hash_union.rb".freeze, "lib/tins/xt/if_predicate.rb".freeze, "lib/tins/xt/implement.rb".freeze, "lib/tins/xt/irb.rb".freeze, "lib/tins/xt/method_description.rb".freeze, "lib/tins/xt/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|