versionub 0.0.4 → 0.0.5

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.
Files changed (2) hide show
  1. data/lib/versionub/types/standard.rb +50 -82
  2. metadata +2 -2
@@ -42,6 +42,9 @@ Versionub.register :standard do
42
42
  ((str('beta') | str('b')) >>
43
43
  (part.as(:beta) | any.as(:beta))) |
44
44
 
45
+ ((str('pre')) >>
46
+ (part.as(:pre) | any.as(:pre))) |
47
+
45
48
  ((str('rc')) >>
46
49
  (part.as(:rc) | any.as(:rc))) |
47
50
 
@@ -59,33 +62,34 @@ Versionub.register :standard do
59
62
 
60
63
  transform do
61
64
  rule(version: subtree(:version)) {
65
+ version.delete(:bugfix) if version[:bugfix].is_a?(Array)
66
+
62
67
  version.dup.each {|name, value|
63
68
  version[name] = case value
64
- when Array then nil
69
+ when Array then 0
65
70
  when Parslet::Slice then value.to_s
66
71
  else value
67
72
  end
68
73
 
69
- if !version[name]
70
- version.delete(name)
71
- end
74
+ version.delete(name) unless version[name]
72
75
  }
73
76
 
74
77
  version
75
78
  }
76
79
  end
77
80
 
78
- def major
79
- @data[:major].to_i
80
- end
81
+ [:major, :minor, :tiny, [:patch, :p, :patchlevel]].each {|part|
82
+ part = [part].flatten
83
+ name = part.shift
81
84
 
82
- def minor
83
- @data[:minor].to_i
84
- end
85
+ define_method name do
86
+ @data[name].to_i
87
+ end
85
88
 
86
- def tiny
87
- @data[:tiny].to_i
88
- end
89
+ part.each {|synonym|
90
+ alias_method synonym, name
91
+ }
92
+ }
89
93
 
90
94
  def bugfix
91
95
  if @data[:bugfix] && @data[:bugfix].match(/[^0-9]/)
@@ -95,38 +99,30 @@ Versionub.register :standard do
95
99
  end
96
100
  end; alias tiny2 bugfix
97
101
 
98
- def patch
99
- @data[:patch].to_i
100
- end; alias p patch; alias patchlevel patch
101
-
102
- def release_candidate
103
- @data[:release_candidate].to_i if @data[:release_candidate]
104
- end; alias rc release_candidate
105
-
106
- def development
107
- @data[:development].to_i if @data[:development]
108
- end; alias d development; alias dev development;
102
+ [:patch, [:release_candidate, :rc], :pre, [:beta, :b, :beta_version], [:alpha, :a, :alpha_version], [:development, :d, :dev]].each {|part|
103
+ part = [part].flatten
104
+ name = part.shift
109
105
 
110
- def alpha
111
- @data[:alpha].to_i if @data[:alpha]
112
- end; alias a alpha; alias alfa alpha; alias alpha_version alpha
106
+ define_method "#{name}?" do
107
+ !!@data[name]
108
+ end
113
109
 
114
- def beta
115
- @data[:beta].to_i if @data[:beta]
116
- end; alias b beta; alias beta_version beta
110
+ define_method name do
111
+ @data[name].to_i if send "#{name}?"
112
+ end unless respond_to?(name)
117
113
 
118
- def patch?; !!@data[:patch]; end
119
- def release_candidate?; !!@data[:rc]; end
120
- def development?; !!@data[:development]; end
121
- def alpha?; !!@data[:alpha]; end
122
- def beta?; !!@data[:beta]; end
114
+ part.each {|synonym|
115
+ alias_method synonym, name
116
+ }
117
+ }
123
118
 
124
119
  def release_type
125
120
  return :alpha if alpha?
126
121
  return :beta if beta?
127
- return :patch if patch?
128
122
  return :development if development?
123
+ return :pre if pre?
129
124
  return :release_candidate if release_candidate?
125
+ return :patch if patch?
130
126
  return :final
131
127
  end
132
128
 
@@ -135,21 +131,11 @@ Versionub.register :standard do
135
131
  def <=> (value)
136
132
  value = Versionub.parse(value, type)
137
133
 
138
- if (tmp = major <=> value.major) != 0
139
- return tmp
140
- end
141
-
142
- if (tmp = minor <=> value.minor) != 0
143
- return tmp
144
- end
145
-
146
- if (tmp = tiny <=> value.tiny) != 0
147
- return tmp
148
- end
149
-
150
- if (tmp = bugfix <=> value.bugfix) != 0
151
- return tmp
152
- end
134
+ [:major, :minor, :tiny, :bugfix].each {|name|
135
+ if (tmp = send(name) <=> value.send(name)) != 0
136
+ return tmp
137
+ end
138
+ }
153
139
 
154
140
  if patch?
155
141
  if value.patch?
@@ -161,39 +147,21 @@ Versionub.register :standard do
161
147
  return -1
162
148
  end
163
149
 
164
- if release_candidate?
165
- if value.release_candidate?
166
- return release_candidate <=> value.release_candidate
167
- elsif value.beta? || value.alpha?
168
- return 1
169
- else
170
- return -1
171
- end
172
- elsif value.release_candidate?
173
- return 1
174
- end
175
-
176
- if beta?
177
- if value.beta?
178
- return beta <=> value.beta
179
- elsif value.alpha?
180
- return 1
181
- else
182
- return -1
183
- end
184
- elsif value.beta?
185
- return 1
186
- end
187
-
188
- if alpha?
189
- if value.alpha?
190
- return alpha <=> value.alpha
191
- else
150
+ parts = [:release_candidate, :pre, :beta, :alpha, :development]
151
+
152
+ parts.each_with_index {|name, index|
153
+ if send("#{name}?")
154
+ if value.send("#{name}?")
155
+ return send(name) <=> value.send(name)
156
+ elsif parts[(index + 1) .. -1].any? { |n| value.send("#{n}?") }
157
+ return 1
158
+ else
159
+ return -1
160
+ end
161
+ elsif value.send("#{name}?")
192
162
  return -1
193
163
  end
194
- elsif value.alpha?
195
- return 1
196
- end
164
+ }
197
165
 
198
166
  0
199
167
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: versionub
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - meh.
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-30 00:00:00 Z
13
+ date: 2011-06-01 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parslet