versionub 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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