tins 1.4.2 → 1.5.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: 08cea9acd60cfcd4453eab5c92b0ed56ae0a974d
4
- data.tar.gz: 71b120c34f22426c7f1e8fc38192a46106efc3ef
3
+ metadata.gz: 922f4bd8f753505287a7f7180a4c680e635e5272
4
+ data.tar.gz: fd47770711502cf30a048adffe9755ba3cdde5b9
5
5
  SHA512:
6
- metadata.gz: d93c2db5859eb9058c69df4ca38527cb55286075bf1ff041bda1d10cad5ee8e1386fba3c992d8f7256cf194980f614daacb719673c34d62dd1b2c515e09c8155
7
- data.tar.gz: be65dc0bebc790432ef98f4f1361cb8c5c9981f3f8601e6aca904893ee33679ac14d8dbf854bde06e9239919ec23aec16beaf98d59e06874ccab57d8010c6d93
6
+ metadata.gz: 997a5a11dd2cfe3cf1dba2bf4289e2bcf05e41a8ec25457d565adbae825e37951ce40a261c853666a5651aaed9ef54805a3c9407b4535590f51c786e6e7b33d7
7
+ data.tar.gz: b3ee39e829eee26476169af8d0bde24230566d2094e3a4071297131cc62cc7fba58738c144d31433d4baeeb3c5f7296e5520df75d715195cd1a8773f2676e91e
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 1.5.0
@@ -1,70 +1,73 @@
1
1
  module Tins
2
2
  module StringVersion
3
+ LEVELS = %i[ major minor build revision ].each_with_index.to_h.freeze
4
+
5
+ SYMBOLS = LEVELS.invert.freeze
6
+
3
7
  class Version
4
8
  include Comparable
5
9
 
6
10
  def initialize(string)
7
- string =~ /\A[\.\d]+\z/ or raise ArgumentError, "#{string.inspect} isn't a version number"
11
+ string =~ /\A\d+(\.\d+)*\z/ or
12
+ raise ArgumentError, "#{string.inspect} isn't a version number"
8
13
  @version = string.frozen? ? string.dup : string
9
14
  end
10
15
 
11
- def major
12
- self[0]
13
- end
14
-
15
- def major=(number)
16
- self[0] = number
17
- end
18
-
19
- def minor
20
- self[1]
21
- end
22
-
23
- def minor=(number)
24
- self[1] = number
25
- end
26
-
27
- def build
28
- self[2]
29
- end
16
+ LEVELS.each do |symbol, level|
17
+ define_method(symbol) do
18
+ self[level]
19
+ end
30
20
 
31
- def build=(number)
32
- self[2] = number
21
+ define_method("#{symbol}=") do |new_level|
22
+ self[level] = new_level
23
+ end
33
24
  end
34
25
 
35
- def revision
36
- self[3]
26
+ def bump(level = array.size - 1)
27
+ level = level_of(level)
28
+ self[level] += 1
29
+ for l in level.succ..3
30
+ self[l] &&= 0
31
+ end
32
+ self
37
33
  end
38
34
 
39
- def revision=(number)
40
- self[3] = number
35
+ def level_of(specifier)
36
+ if specifier.respond_to?(:to_sym)
37
+ LEVELS.fetch(specifier)
38
+ else
39
+ specifier
40
+ end
41
41
  end
42
42
 
43
- def [](index)
44
- array[index]
43
+ def [](level)
44
+ array[level_of(level)]
45
45
  end
46
46
 
47
- def []=(index, value)
47
+ def []=(level, value)
48
+ level = level_of(level)
48
49
  value = value.to_i
49
- value >= 0 or raise ArgumentError, "version numbers can't contain negative numbers like #{value}"
50
+ value >= 0 or raise ArgumentError,
51
+ "version numbers can't contain negative numbers like #{value}"
50
52
  a = array
51
- @array = nil
52
- a[index] = value
53
- a.map! { |x| x.nil? ? 0 : x }
54
- @version.replace a * '.'
53
+ a[level] = value
54
+ a.map!(&:to_i)
55
+ @version.replace a * ?.
55
56
  end
56
57
 
57
58
  def succ!
58
59
  self[-1] += 1
60
+ self
59
61
  end
60
62
 
61
63
  def pred!
62
64
  self[-1] -= 1
65
+ self
63
66
  end
64
67
 
65
68
  def <=>(other)
66
69
  pairs = array.zip(other.array)
67
- pairs.map! { |a, b| [ a.nil? ? 0 : a, b.nil? ? 0 : b ] }
70
+ pairs.map! { |a, b| [ a.to_i, b.to_i ] }
68
71
  a, b = pairs.transpose
69
72
  a <=> b
70
73
  end
@@ -74,7 +77,7 @@ module Tins
74
77
  end
75
78
 
76
79
  def array
77
- @version.split('.').map { |x| x.to_i }
80
+ @version.split(?.).map(&:to_i)
78
81
  end
79
82
 
80
83
  alias to_a array
@@ -84,18 +87,10 @@ module Tins
84
87
  end
85
88
 
86
89
  alias inspect to_s
87
-
88
- def version
89
- self
90
- end
91
90
  end
92
91
 
93
92
  def version
94
- if frozen?
95
- Version.new(self)
96
- else
97
- @version ||= Version.new(self)
98
- end
93
+ Version.new(self)
99
94
  end
100
95
  end
101
96
  end
@@ -1,6 +1,6 @@
1
1
  module Tins
2
2
  # Tins version
3
- VERSION = '1.4.2'
3
+ VERSION = '1.5.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -27,5 +27,16 @@ module Tins
27
27
  s.version.minor = 1
28
28
  assert_equal '2.1.0.2', s
29
29
  end
30
+
31
+ def test_bump
32
+ s = '1.2.3'
33
+ assert_equal '2.0.0', s.version.bump(:major).to_s
34
+ s = '1.2.3'
35
+ assert_equal '1.3.0', s.version.bump(:minor).to_s
36
+ s = '1.2.3'
37
+ assert_equal '1.2.4', s.version.bump(:build).to_s
38
+ s = '1.2.3'
39
+ assert_equal '1.2.4', s.version.bump.to_s
40
+ end
30
41
  end
31
42
  end
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: tins 1.4.2 ruby lib
2
+ # stub: tins 1.5.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "tins"
6
- s.version = "1.4.2"
6
+ s.version = "1.5.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
10
10
  s.authors = ["Florian Frank"]
11
- s.date = "2015-04-23"
11
+ s.date = "2015-04-24"
12
12
  s.description = "All the stuff that isn't good/big enough for a real library."
13
13
  s.email = "flori@ping.de"
14
14
  s.extra_rdoc_files = ["README.md", "lib/dslkit.rb", "lib/dslkit/polite.rb", "lib/dslkit/rude.rb", "lib/spruz.rb", "lib/tins.rb", "lib/tins/alias.rb", "lib/tins/annotate.rb", "lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", "lib/tins/bijection.rb", "lib/tins/case_predicate.rb", "lib/tins/concern.rb", "lib/tins/count_by.rb", "lib/tins/date_dummy.rb", "lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", "lib/tins/deep_dup.rb", "lib/tins/dslkit.rb", "lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", "lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", "lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", "lib/tins/if_predicate.rb", "lib/tins/implement.rb", "lib/tins/limited.rb", "lib/tins/lines_file.rb", "lib/tins/memoize.rb", "lib/tins/method_description.rb", "lib/tins/minimize.rb", "lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", "lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", "lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", "lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", "lib/tins/responding.rb", "lib/tins/rotate.rb", "lib/tins/secure_write.rb", "lib/tins/sexy_singleton.rb", "lib/tins/shuffle.rb", "lib/tins/string_byte_order_mark.rb", "lib/tins/string_camelize.rb", "lib/tins/string_underscore.rb", "lib/tins/string_version.rb", "lib/tins/subhash.rb", "lib/tins/terminal.rb", "lib/tins/thread_local.rb", "lib/tins/time_dummy.rb", "lib/tins/to.rb", "lib/tins/to_proc.rb", "lib/tins/token.rb", "lib/tins/uniq_by.rb", "lib/tins/version.rb", "lib/tins/write.rb", "lib/tins/xt.rb", "lib/tins/xt/annotate.rb", "lib/tins/xt/ask_and_send.rb", "lib/tins/xt/attempt.rb", "lib/tins/xt/blank.rb", "lib/tins/xt/case_predicate.rb", "lib/tins/xt/concern.rb", "lib/tins/xt/count_by.rb", "lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", "lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", "lib/tins/xt/dslkit.rb", "lib/tins/xt/extract_last_argument_options.rb", "lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", "lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", "lib/tins/xt/if_predicate.rb", "lib/tins/xt/implement.rb", "lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", "lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", "lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", "lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", "lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", "lib/tins/xt/rotate.rb", "lib/tins/xt/secure_write.rb", "lib/tins/xt/sexy_singleton.rb", "lib/tins/xt/shuffle.rb", "lib/tins/xt/string.rb", "lib/tins/xt/string_byte_order_mark.rb", "lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", "lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", "lib/tins/xt/symbol_to_proc.rb", "lib/tins/xt/time_dummy.rb", "lib/tins/xt/time_freezer.rb", "lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", "lib/tins/xt/write.rb"]
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tins
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.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: 2015-04-23 00:00:00.000000000 Z
11
+ date: 2015-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.0.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: test-unit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.5'
41
41
  description: All the stuff that isn't good/big enough for a real library.
@@ -153,8 +153,8 @@ extra_rdoc_files:
153
153
  - lib/tins/xt/uniq_by.rb
154
154
  - lib/tins/xt/write.rb
155
155
  files:
156
- - .gitignore
157
- - .travis.yml
156
+ - ".gitignore"
157
+ - ".travis.yml"
158
158
  - COPYING
159
159
  - Gemfile
160
160
  - README.md
@@ -358,20 +358,20 @@ licenses:
358
358
  metadata: {}
359
359
  post_install_message:
360
360
  rdoc_options:
361
- - --title
361
+ - "--title"
362
362
  - Tins - Useful stuff.
363
- - --main
363
+ - "--main"
364
364
  - README.md
365
365
  require_paths:
366
366
  - lib
367
367
  required_ruby_version: !ruby/object:Gem::Requirement
368
368
  requirements:
369
- - - '>='
369
+ - - ">="
370
370
  - !ruby/object:Gem::Version
371
371
  version: '0'
372
372
  required_rubygems_version: !ruby/object:Gem::Requirement
373
373
  requirements:
374
- - - '>='
374
+ - - ">="
375
375
  - !ruby/object:Gem::Version
376
376
  version: '0'
377
377
  requirements: []