Class: StepUp::Parser::VersionMask
- Inherits:
-
Object
- Object
- StepUp::Parser::VersionMask
- Defined in:
- lib/step-up/parser/version_mask.rb
Instance Attribute Summary collapse
-
#mask ⇒ Object
readonly
Returns the value of attribute mask.
-
#regex ⇒ Object
readonly
Returns the value of attribute regex.
-
#to_regex ⇒ Object
readonly
Returns the value of attribute to_regex.
Instance Method Summary collapse
- #blank ⇒ Object
- #format(version) ⇒ Object
- #increase_version(version, level) ⇒ Object
-
#initialize(mask) ⇒ VersionMask
constructor
A new instance of VersionMask.
- #parse(version) ⇒ Object
Constructor Details
#initialize(mask) ⇒ VersionMask
Returns a new instance of VersionMask.
6 7 8 9 10 11 12 |
# File 'lib/step-up/parser/version_mask.rb', line 6 def initialize(mask) raise ArgumentError if mask.nil? || mask =~ /[1-8]|[09][09]|9.+0/ @mask = mask.scan(/(\D*)([09])/) @to_regex = "" @mask.each { |level| @to_regex << "(?:#{level.first.gsub(/([\\\.\*\?\{\}\(\)\[\]])/, '\\\\\1')}(\\d+))#{'?' if level.last == '9'}" } @regex = /^#{to_regex}$/ end |
Instance Attribute Details
#mask ⇒ Object (readonly)
Returns the value of attribute mask.
4 5 6 |
# File 'lib/step-up/parser/version_mask.rb', line 4 def mask @mask end |
#regex ⇒ Object (readonly)
Returns the value of attribute regex.
5 6 7 |
# File 'lib/step-up/parser/version_mask.rb', line 5 def regex @regex end |
#to_regex ⇒ Object (readonly)
Returns the value of attribute to_regex.
5 6 7 |
# File 'lib/step-up/parser/version_mask.rb', line 5 def to_regex @to_regex end |
Instance Method Details
#blank ⇒ Object
42 43 44 |
# File 'lib/step-up/parser/version_mask.rb', line 42 def blank format mask.size.times.map{ 0 } end |
#format(version) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/step-up/parser/version_mask.rb', line 20 def format(version) raise ArgumentError unless version.is_a?(Array) && version.size == mask.size v = [] mask.each_with_index do |part, index| level = version[index] || 0 raise ArgumentError unless level.is_a?(Integer) unless level.zero? && part.last == '9' v << "#{part.first}#{level}" end end v.join end |
#increase_version(version, level) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/step-up/parser/version_mask.rb', line 33 def increase_version(version, level) v = parse version level = CONFIG.versioning.version_levels.index(level) (v.size-level).times do |index| v[level+index] = (index.zero? ? (v[level+index] || 0) + 1 : nil) end format v end |
#parse(version) ⇒ Object
14 15 16 17 18 |
# File 'lib/step-up/parser/version_mask.rb', line 14 def parse(version) return unless version.is_a?(String) v = version.scan(regex).first v.nil? ? nil : v.collect(&:to_i) end |