versionomy 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +10 -0
- data/README.rdoc +3 -29
- data/Rakefile +1 -1
- data/Versionomy.rdoc +346 -0
- data/lib/versionomy.rb +0 -3
- data/lib/versionomy/conversion.rb +15 -6
- data/lib/versionomy/format.rb +112 -18
- data/lib/versionomy/{format → format_definitions}/rubygems.rb +111 -2
- data/lib/versionomy/{format → format_definitions}/standard.rb +1 -1
- data/lib/versionomy/interface.rb +5 -5
- data/lib/versionomy/schema/wrapper.rb +78 -8
- data/lib/versionomy/value.rb +63 -17
- data/lib/versionomy/version.rb +1 -1
- data/tests/tc_rubygems_basic.rb +35 -0
- data/tests/tc_standard_reset.rb +106 -0
- metadata +8 -5
- data/lib/versionomy/conversion/rubygems.rb +0 -146
data/lib/versionomy/value.rb
CHANGED
@@ -71,8 +71,8 @@ module Versionomy
|
|
71
71
|
@_unparse_params = unparse_params_
|
72
72
|
@_field_path = []
|
73
73
|
@_values = {}
|
74
|
-
|
75
|
-
field_ =
|
74
|
+
values_ = _canonicalize_values_hash(values_) if values_.kind_of?(::Hash)
|
75
|
+
field_ = @_format.schema.root_field
|
76
76
|
while field_
|
77
77
|
value_ = values_.kind_of?(::Hash) ? values_[field_.name] : values_.shift
|
78
78
|
value_ = value_ ? field_.canonicalize_value(value_) : field_.default_value
|
@@ -80,7 +80,7 @@ module Versionomy
|
|
80
80
|
@_values[field_.name] = value_
|
81
81
|
field_ = field_.child(value_)
|
82
82
|
end
|
83
|
-
modules_ =
|
83
|
+
modules_ = @_format.schema.modules
|
84
84
|
extend(*modules_) if modules_.size > 0
|
85
85
|
end
|
86
86
|
|
@@ -150,7 +150,9 @@ module Versionomy
|
|
150
150
|
end
|
151
151
|
|
152
152
|
|
153
|
+
# YAML tags. The last one is the canonical one.
|
153
154
|
yaml_as "tag:danielazuma.com,2009:version"
|
155
|
+
yaml_as "tag:verse15.com,2009:version"
|
154
156
|
|
155
157
|
|
156
158
|
# Deserialize a version number from YAML
|
@@ -259,7 +261,7 @@ module Versionomy
|
|
259
261
|
when ::Integer
|
260
262
|
@_field_path.size > field_ && field_ >= 0
|
261
263
|
when ::String, ::Symbol
|
262
|
-
@_values.has_key?(field_
|
264
|
+
@_values.has_key?(@_format.schema.canonical_name(field_))
|
263
265
|
else
|
264
266
|
raise ::ArgumentError
|
265
267
|
end
|
@@ -271,9 +273,7 @@ module Versionomy
|
|
271
273
|
# or field index.
|
272
274
|
|
273
275
|
def [](field_)
|
274
|
-
|
275
|
-
field_ = field_.name if field_.kind_of?(Schema::Field)
|
276
|
-
field_ ? @_values[field_.to_sym] : nil
|
276
|
+
@_values[_interpret_field(field_)]
|
277
277
|
end
|
278
278
|
|
279
279
|
|
@@ -298,17 +298,14 @@ module Versionomy
|
|
298
298
|
# Returns self unchanged if the field was not recognized or could not
|
299
299
|
# be modified.
|
300
300
|
|
301
|
-
def bump(
|
302
|
-
name_ =
|
303
|
-
|
304
|
-
return self unless name_
|
305
|
-
name_ = name_.to_sym
|
306
|
-
return self unless @_values.include?(name_)
|
301
|
+
def bump(field_)
|
302
|
+
name_ = _interpret_field(field_)
|
303
|
+
return self unless name_ && @_values.include?(name_)
|
307
304
|
values_ = []
|
308
|
-
@_field_path.each do |
|
309
|
-
oldval_ = @_values[
|
310
|
-
if
|
311
|
-
newval_ =
|
305
|
+
@_field_path.each do |fld_|
|
306
|
+
oldval_ = @_values[fld_.name]
|
307
|
+
if fld_.name == name_
|
308
|
+
newval_ = fld_.bump_value(oldval_)
|
312
309
|
return self if newval_ == oldval_
|
313
310
|
values_ << newval_
|
314
311
|
return Value.new(values_, @_format, @_unparse_params)
|
@@ -320,6 +317,28 @@ module Versionomy
|
|
320
317
|
end
|
321
318
|
|
322
319
|
|
320
|
+
# Returns a new version number created by resetting the given field. The
|
321
|
+
# field may be specified as a field object, field name, or field index.
|
322
|
+
# Returns self unchanged if the field was not recognized or could not
|
323
|
+
# be modified.
|
324
|
+
|
325
|
+
def reset(field_)
|
326
|
+
name_ = _interpret_field(field_)
|
327
|
+
return self unless name_ && @_values.include?(name_)
|
328
|
+
values_ = []
|
329
|
+
@_field_path.each do |fld_|
|
330
|
+
oldval_ = @_values[fld_.name]
|
331
|
+
if fld_.name == name_
|
332
|
+
values_ << fld_.default_value
|
333
|
+
return Value.new(values_, @_format, @_unparse_params)
|
334
|
+
else
|
335
|
+
values_ << oldval_
|
336
|
+
end
|
337
|
+
end
|
338
|
+
self
|
339
|
+
end
|
340
|
+
|
341
|
+
|
323
342
|
# Returns a new version number created by cloning this version number
|
324
343
|
# and changing the given field values.
|
325
344
|
#
|
@@ -334,6 +353,7 @@ module Versionomy
|
|
334
353
|
|
335
354
|
def change(values_={}, unparse_params_={})
|
336
355
|
unparse_params_ = @_unparse_params.merge(unparse_params_) if @_unparse_params
|
356
|
+
values_ = _canonicalize_values_hash(values_)
|
337
357
|
Value.new(@_values.merge(values_), @_format, unparse_params_)
|
338
358
|
end
|
339
359
|
|
@@ -456,6 +476,32 @@ module Versionomy
|
|
456
476
|
end
|
457
477
|
|
458
478
|
|
479
|
+
private
|
480
|
+
|
481
|
+
def _interpret_field(field_) # :nodoc:
|
482
|
+
case field_
|
483
|
+
when Schema::Field
|
484
|
+
@_format.schema.canonical_name(field_.name)
|
485
|
+
when ::Integer
|
486
|
+
field_ = @_field_path[field_]
|
487
|
+
field_ ? field_.name : nil
|
488
|
+
when ::String, ::Symbol
|
489
|
+
@_format.schema.canonical_name(field_)
|
490
|
+
end
|
491
|
+
end
|
492
|
+
|
493
|
+
|
494
|
+
def _canonicalize_values_hash(values_) # :nodoc:
|
495
|
+
schema_ = @_format.schema
|
496
|
+
new_values_ = {}
|
497
|
+
values_.each do |k_,v_|
|
498
|
+
k_ = schema_.canonical_name(k_)
|
499
|
+
new_values_[k_] = v_ if k_
|
500
|
+
end
|
501
|
+
new_values_
|
502
|
+
end
|
503
|
+
|
504
|
+
|
459
505
|
end
|
460
506
|
|
461
507
|
|
data/lib/versionomy/version.rb
CHANGED
data/tests/tc_rubygems_basic.rb
CHANGED
@@ -76,6 +76,23 @@ module Versionomy
|
|
76
76
|
end
|
77
77
|
|
78
78
|
|
79
|
+
# Test aliases
|
80
|
+
|
81
|
+
def test_alias_fields
|
82
|
+
value_ = ::Versionomy.create([1, 9, 2, 'a', 2], :rubygems)
|
83
|
+
assert_equal(1, value_.major)
|
84
|
+
assert_equal(9, value_.minor)
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
# Test construction using aliases
|
89
|
+
|
90
|
+
def test_alias_field_construction
|
91
|
+
value_ = ::Versionomy.create({:major => 1, :minor => 9, :field2 => 2}, :rubygems)
|
92
|
+
assert_equal([1, 9, 2, 0, 0, 0, 0, 0], value_.values_array)
|
93
|
+
end
|
94
|
+
|
95
|
+
|
79
96
|
# Test comparison of numeric values.
|
80
97
|
|
81
98
|
def test_numeric_comparison
|
@@ -153,6 +170,24 @@ module Versionomy
|
|
153
170
|
end
|
154
171
|
|
155
172
|
|
173
|
+
# Test bumping an alias field.
|
174
|
+
|
175
|
+
def test_bump_alias
|
176
|
+
value_ = ::Versionomy.create([1, 9, 2, 'a', 2], :rubygems)
|
177
|
+
value_ = value_.bump(:minor)
|
178
|
+
assert_equal([1, 10, 0, 0, 0, 0, 0, 0], value_.values_array)
|
179
|
+
end
|
180
|
+
|
181
|
+
|
182
|
+
# Test changing an alias field.
|
183
|
+
|
184
|
+
def test_change_alias
|
185
|
+
value_ = ::Versionomy.create([1, 8, 7, 'a', 2], :rubygems)
|
186
|
+
value_ = value_.change(:minor => 9)
|
187
|
+
assert_equal([1, 9, 7, 'a', 2, 0, 0, 0], value_.values_array)
|
188
|
+
end
|
189
|
+
|
190
|
+
|
156
191
|
# Test "prerelase?" custom method
|
157
192
|
|
158
193
|
def test_method_prereleasep
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
#
|
3
|
+
# Versionomy bump tests on standard schema
|
4
|
+
#
|
5
|
+
# This file contains tests for the bump function on the standard schema
|
6
|
+
#
|
7
|
+
# -----------------------------------------------------------------------------
|
8
|
+
# Copyright 2008-2009 Daniel Azuma
|
9
|
+
#
|
10
|
+
# All rights reserved.
|
11
|
+
#
|
12
|
+
# Redistribution and use in source and binary forms, with or without
|
13
|
+
# modification, are permitted provided that the following conditions are met:
|
14
|
+
#
|
15
|
+
# * Redistributions of source code must retain the above copyright notice,
|
16
|
+
# this list of conditions and the following disclaimer.
|
17
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
18
|
+
# this list of conditions and the following disclaimer in the documentation
|
19
|
+
# and/or other materials provided with the distribution.
|
20
|
+
# * Neither the name of the copyright holder, nor the names of any other
|
21
|
+
# contributors to this software, may be used to endorse or promote products
|
22
|
+
# derived from this software without specific prior written permission.
|
23
|
+
#
|
24
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
25
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
26
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
27
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
28
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
29
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
30
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
31
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
32
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
33
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
34
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
35
|
+
# -----------------------------------------------------------------------------
|
36
|
+
|
37
|
+
|
38
|
+
require 'rubygems'
|
39
|
+
require 'test/unit'
|
40
|
+
require ::File.expand_path("#{::File.dirname(__FILE__)}/../lib/versionomy.rb")
|
41
|
+
|
42
|
+
|
43
|
+
module Versionomy
|
44
|
+
module Tests # :nodoc:
|
45
|
+
|
46
|
+
class TestStandardReset < ::Test::Unit::TestCase # :nodoc:
|
47
|
+
|
48
|
+
|
49
|
+
# Test resetting a minor patchlevel.
|
50
|
+
|
51
|
+
def test_reset_patchlevel_minor
|
52
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :patchlevel => 3, :patchlevel_minor => 1)
|
53
|
+
value_ = value_.reset(:patchlevel_minor)
|
54
|
+
assert_equal([2,0,1,0,:final,3,0], value_.values_array)
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
# Test resetting a major patchlevel.
|
59
|
+
|
60
|
+
def test_reset_patchlevel
|
61
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :patchlevel => 3, :patchlevel_minor => 1)
|
62
|
+
value_ = value_.reset(:patchlevel)
|
63
|
+
assert_equal([2,0,1,0,:final,0,0], value_.values_array)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# Test resetting a beta release type.
|
68
|
+
|
69
|
+
def test_reset_beta_release_type
|
70
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :release_type => :beta, :beta_version => 2)
|
71
|
+
value_ = value_.reset(:release_type)
|
72
|
+
assert_equal([2,0,1,0,:final,0,0], value_.values_array)
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
# Test resetting a final release type.
|
77
|
+
|
78
|
+
def test_reset_final_release_type
|
79
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :patchlevel => 2)
|
80
|
+
value_ = value_.reset(:release_type)
|
81
|
+
assert_equal([2,0,1,0,:final,0,0], value_.values_array)
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
# Test resetting tiny.
|
86
|
+
|
87
|
+
def test_reset_tiny
|
88
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
|
89
|
+
value_ = value_.reset(:tiny)
|
90
|
+
assert_equal([2,0,0,0,:final,0,0], value_.values_array)
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
# Test resetting major.
|
95
|
+
|
96
|
+
def test_reset_major
|
97
|
+
value_ = ::Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
|
98
|
+
value_ = value_.reset(:major)
|
99
|
+
assert_equal([1,0,0,0,:final,0,0], value_.values_array)
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
end
|
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.
|
4
|
+
version: 0.3.0
|
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-30 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,18 +30,18 @@ extensions: []
|
|
30
30
|
|
31
31
|
extra_rdoc_files:
|
32
32
|
- README.rdoc
|
33
|
+
- Versionomy.rdoc
|
33
34
|
- History.rdoc
|
34
35
|
files:
|
35
36
|
- lib/versionomy/conversion/base.rb
|
36
37
|
- lib/versionomy/conversion/parsing.rb
|
37
|
-
- lib/versionomy/conversion/rubygems.rb
|
38
38
|
- lib/versionomy/conversion.rb
|
39
39
|
- lib/versionomy/errors.rb
|
40
40
|
- lib/versionomy/format/base.rb
|
41
41
|
- lib/versionomy/format/delimiter.rb
|
42
|
-
- lib/versionomy/format/rubygems.rb
|
43
|
-
- lib/versionomy/format/standard.rb
|
44
42
|
- lib/versionomy/format.rb
|
43
|
+
- lib/versionomy/format_definitions/rubygems.rb
|
44
|
+
- lib/versionomy/format_definitions/standard.rb
|
45
45
|
- lib/versionomy/interface.rb
|
46
46
|
- lib/versionomy/schema/field.rb
|
47
47
|
- lib/versionomy/schema/wrapper.rb
|
@@ -59,8 +59,10 @@ files:
|
|
59
59
|
- tests/tc_standard_comparison.rb
|
60
60
|
- tests/tc_standard_misc.rb
|
61
61
|
- tests/tc_standard_parse.rb
|
62
|
+
- tests/tc_standard_reset.rb
|
62
63
|
- History.rdoc
|
63
64
|
- README.rdoc
|
65
|
+
- Versionomy.rdoc
|
64
66
|
- Rakefile
|
65
67
|
has_rdoc: true
|
66
68
|
homepage: http://virtuoso.rubyforge.org/versionomy
|
@@ -101,3 +103,4 @@ test_files:
|
|
101
103
|
- tests/tc_standard_comparison.rb
|
102
104
|
- tests/tc_standard_misc.rb
|
103
105
|
- tests/tc_standard_parse.rb
|
106
|
+
- tests/tc_standard_reset.rb
|
@@ -1,146 +0,0 @@
|
|
1
|
-
# -----------------------------------------------------------------------------
|
2
|
-
#
|
3
|
-
# Versionomy standard format implementation
|
4
|
-
#
|
5
|
-
# -----------------------------------------------------------------------------
|
6
|
-
# Copyright 2008-2009 Daniel Azuma
|
7
|
-
#
|
8
|
-
# All rights reserved.
|
9
|
-
#
|
10
|
-
# Redistribution and use in source and binary forms, with or without
|
11
|
-
# modification, are permitted provided that the following conditions are met:
|
12
|
-
#
|
13
|
-
# * Redistributions of source code must retain the above copyright notice,
|
14
|
-
# this list of conditions and the following disclaimer.
|
15
|
-
# * Redistributions in binary form must reproduce the above copyright notice,
|
16
|
-
# this list of conditions and the following disclaimer in the documentation
|
17
|
-
# and/or other materials provided with the distribution.
|
18
|
-
# * Neither the name of the copyright holder, nor the names of any other
|
19
|
-
# contributors to this software, may be used to endorse or promote products
|
20
|
-
# derived from this software without specific prior written permission.
|
21
|
-
#
|
22
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
23
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
24
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
25
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
26
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
27
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
28
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
29
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
30
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
31
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
32
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
33
|
-
# -----------------------------------------------------------------------------
|
34
|
-
;
|
35
|
-
|
36
|
-
|
37
|
-
module Versionomy
|
38
|
-
|
39
|
-
module Conversion
|
40
|
-
|
41
|
-
|
42
|
-
# This is a namespace for the implementation of the conversion between
|
43
|
-
# the rubygems and standard formats.
|
44
|
-
|
45
|
-
module Rubygems
|
46
|
-
|
47
|
-
|
48
|
-
# Create the conversion from standard to rubygems format.
|
49
|
-
# This method is called internally when Versionomy initializes itself,
|
50
|
-
# and you should not need to call it again. It is documented, however,
|
51
|
-
# so that you can inspect its source code from RDoc, since the source
|
52
|
-
# contains useful examples of how to use the conversion DSLs.
|
53
|
-
|
54
|
-
def self.create_standard_to_rubygems
|
55
|
-
|
56
|
-
# We'll use a parsing conversion.
|
57
|
-
Conversion::Parsing.new do
|
58
|
-
|
59
|
-
# We're going to modify how the standard format version is
|
60
|
-
# unparsed, so the rubygems format will have a better chance
|
61
|
-
# of parsing it.
|
62
|
-
to_modify_unparse_params do |params_, convert_params_|
|
63
|
-
|
64
|
-
params_ ||= {}
|
65
|
-
|
66
|
-
# If the standard format version has a prerelease notation,
|
67
|
-
# make sure it is set off using a delimiter that the rubygems
|
68
|
-
# format can recognize. So instead of "1.0b2", we force the
|
69
|
-
# unparsing to generate "1.0.b.2".
|
70
|
-
params_[:release_type_delim] = '.'
|
71
|
-
params_[:development_version_delim] = '.'
|
72
|
-
params_[:alpha_version_delim] = '.'
|
73
|
-
params_[:beta_version_delim] = '.'
|
74
|
-
params_[:release_candidate_version_delim] = '.'
|
75
|
-
params_[:preview_version_delim] = '.'
|
76
|
-
|
77
|
-
# If the standard format version has a patchlevel notation,
|
78
|
-
# force it to use the default number rather than letter style.
|
79
|
-
# So instead of "1.2c", we force the unparsing to generate
|
80
|
-
# "1.2-3".
|
81
|
-
params_[:patchlevel_style] = nil
|
82
|
-
|
83
|
-
# If the standard format version has a patchlevel notation,
|
84
|
-
# force it to use the default delimiter of "-" so the rubygems
|
85
|
-
# format will recognize it. So instead of "1.9.1p243", we force
|
86
|
-
# the unparsing to generate "1.9.1-243".
|
87
|
-
params_[:patchlevel_delim] = nil
|
88
|
-
|
89
|
-
# If the standard format version includes a "v" prefix, strip
|
90
|
-
# it because rubygems doesn't like it.
|
91
|
-
params_[:major_delim] = nil
|
92
|
-
|
93
|
-
params_
|
94
|
-
end
|
95
|
-
|
96
|
-
# Standard formats sometimes allow hyphens and spaces in field
|
97
|
-
# delimiters, but the rubygems format requires periods. So modify
|
98
|
-
# the unparsed string to conform to rubygems's expectations.
|
99
|
-
to_modify_string do |str_, convert_params_|
|
100
|
-
str_.gsub(/[\.\s-]+/, '.')
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
|
108
|
-
# Create the conversion from rubygems to standard format.
|
109
|
-
# This method is called internally when Versionomy initializes itself,
|
110
|
-
# and you should not need to call it again. It is documented, however,
|
111
|
-
# so that you can inspect its source code from RDoc, since the source
|
112
|
-
# contains useful examples of how to use the conversion DSLs.
|
113
|
-
|
114
|
-
def self.create_rubygems_to_standard
|
115
|
-
|
116
|
-
# We'll use a parsing conversion.
|
117
|
-
Conversion::Parsing.new do
|
118
|
-
|
119
|
-
# Handle the case where the rubygems version ends with a string
|
120
|
-
# field, e.g. "1.0.b". We want to treat this like "1.0b0" rather
|
121
|
-
# than "1.0-2" since the rubygems semantic states that this is a
|
122
|
-
# prerelease version. So we add 0 to the end of the parsed string
|
123
|
-
# if it ends in a letter.
|
124
|
-
to_modify_string do |str_, convert_params_|
|
125
|
-
str_.gsub(/([[:alpha:]])\z/, '\10')
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
|
130
|
-
end
|
131
|
-
|
132
|
-
|
133
|
-
unless Conversion.get(:standard, :rubygems)
|
134
|
-
Conversion.register(:standard, :rubygems, create_standard_to_rubygems)
|
135
|
-
end
|
136
|
-
unless Conversion.get(:rubygems, :standard)
|
137
|
-
Conversion.register(:rubygems, :standard, create_rubygems_to_standard)
|
138
|
-
end
|
139
|
-
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
|
144
|
-
end
|
145
|
-
|
146
|
-
end
|