versionomy 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +4 -0
- data/lib/versionomy/format/delimiter.rb +21 -3
- data/lib/versionomy/version.rb +1 -1
- data/tests/tc_standard_parse.rb +39 -0
- metadata +2 -2
data/History.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
=== 0.2.5 / 2009-11-24
|
2
|
+
|
3
|
+
* Preserve minimum width of a field, if the field has leading zeros. For example, "2.01".
|
4
|
+
|
1
5
|
=== 0.2.4 / 2009-11-19
|
2
6
|
|
3
7
|
* Fixed a regression introduced in 0.2.2 where "1.0a" was being recognized as an alpha version rather than a patchlevel of 1, and similar for "1.0b" and "1.0d".
|
@@ -511,7 +511,15 @@ module Versionomy
|
|
511
511
|
|
512
512
|
# Recognize a numeric-formatted integer field.
|
513
513
|
# Using the opts parameter, you can override any of the field's
|
514
|
-
# overall parsing options.
|
514
|
+
# overall parsing options. You may also set the following additional
|
515
|
+
# options:
|
516
|
+
#
|
517
|
+
# <tt>:strip_leading_zeros</tt>::
|
518
|
+
# If false (the default), and a value has leading zeros, it is
|
519
|
+
# assumed that the field has a minimum width, and unparsing will
|
520
|
+
# always pad left with zeros to reach that minimum width. If set
|
521
|
+
# to true, leading zeros are stripped from a value, and this
|
522
|
+
# padding is never done.
|
515
523
|
|
516
524
|
def recognize_number(opts_={})
|
517
525
|
@recognizers << Delimiter::BasicIntegerRecognizer.new(@field, @default_opts.merge(opts_))
|
@@ -881,15 +889,25 @@ module Versionomy
|
|
881
889
|
class BasicIntegerRecognizer < RecognizerBase #:nodoc:
|
882
890
|
|
883
891
|
def initialize(field_, opts_={})
|
892
|
+
@strip_leading_zeros = opts_[:strip_leading_zeros]
|
893
|
+
@width_unparse_param_key = "#{field_.name}_width".to_sym
|
884
894
|
setup(field_, '\d+', opts_)
|
885
895
|
end
|
886
896
|
|
887
897
|
def parsed_value(value_, parse_params_)
|
888
|
-
|
898
|
+
if !@strip_leading_zeros && value_ =~ /^0\d/
|
899
|
+
[value_.to_i, {@width_unparse_param_key => value_.length}]
|
900
|
+
else
|
901
|
+
[value_.to_i, nil]
|
902
|
+
end
|
889
903
|
end
|
890
904
|
|
891
905
|
def unparsed_value(value_, style_, unparse_params_)
|
892
|
-
|
906
|
+
if !@strip_leading_zeros && (width_ = unparse_params_[@width_unparse_param_key])
|
907
|
+
"%0#{width_.to_i}d" % value_
|
908
|
+
else
|
909
|
+
value_.to_s
|
910
|
+
end
|
893
911
|
end
|
894
912
|
|
895
913
|
end
|
data/lib/versionomy/version.rb
CHANGED
data/tests/tc_standard_parse.rb
CHANGED
@@ -93,6 +93,45 @@ module Versionomy
|
|
93
93
|
end
|
94
94
|
|
95
95
|
|
96
|
+
# Test parsing with leading zeros on a field.
|
97
|
+
|
98
|
+
def test_parsing_field_leading_zeros
|
99
|
+
value_ = ::Versionomy.parse('2.09')
|
100
|
+
assert_equal(2, value_.major)
|
101
|
+
assert_equal(9, value_.minor)
|
102
|
+
assert_equal(0, value_.tiny)
|
103
|
+
assert_equal('2.09', value_.unparse)
|
104
|
+
value_ = value_.bump(:minor)
|
105
|
+
assert_equal(10, value_.minor)
|
106
|
+
assert_equal('2.10', value_.unparse)
|
107
|
+
value_ = value_.change(:minor => 123)
|
108
|
+
assert_equal(123, value_.minor)
|
109
|
+
assert_equal('2.123', value_.unparse)
|
110
|
+
value_ = value_.change(:minor => 4)
|
111
|
+
assert_equal(4, value_.minor)
|
112
|
+
assert_equal('2.04', value_.unparse)
|
113
|
+
value_ = ::Versionomy.parse('2.00')
|
114
|
+
assert_equal(0, value_.minor)
|
115
|
+
assert_equal('2.00', value_.unparse)
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
# Test unparsing with a minimum width.
|
120
|
+
|
121
|
+
def test_unparsing_minimum_width_field
|
122
|
+
value_ = ::Versionomy.parse('2.0')
|
123
|
+
assert_equal('2.0', value_.unparse)
|
124
|
+
assert_equal('2.00', value_.unparse(:minor_width => 2))
|
125
|
+
assert_equal('02.0', value_.unparse(:major_width => 2))
|
126
|
+
value_ = value_.bump(:minor)
|
127
|
+
assert_equal('2.1', value_.unparse)
|
128
|
+
assert_equal('2.01', value_.unparse(:minor_width => 2))
|
129
|
+
value_ = value_.change(:minor => 12)
|
130
|
+
assert_equal('2.12', value_.unparse)
|
131
|
+
assert_equal('2.12', value_.unparse(:minor_width => 1))
|
132
|
+
end
|
133
|
+
|
134
|
+
|
96
135
|
# Test parsing major version only.
|
97
136
|
|
98
137
|
def test_parsing_major_only
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: versionomy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Azuma
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-24 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|