Please review pull request #625: (#13638) Add SemVer#pre function opened by (kelseyhightower)

Description:

Before this patch the SemVer#[] method uses a proc to pre-process
version strings, which seems a bit unnecessary when a method would do.

This patch replaces the proc with the SemVer#pre method and updates
the related specs.

  • Opened: Thu Apr 05 04:31:19 UTC 2012
  • Based on: puppetlabs:2.7.x (d88f3e7c387eff270101604f2fec2e086f88ebdd)
  • Requested merge: kelseyhightower:ticket/2.7.x/13638_add_pre_funciton (45f8009034fb89ccf663aae089c84700137be903)

Diff follows:

diff --git a/lib/semver.rb b/lib/semver.rb
index 53c7e69..bf66919 100644
--- a/lib/semver.rb
+++ b/lib/semver.rb
@@ -17,18 +17,21 @@ def self.find_matching(pattern, versions)
     versions.select { |v| v.matched_by?("#{pattern}") }.sort.last
   end
 
+  def self.pre(vstring)
+    vstring =~ /-/ ? vstring : vstring + '-'
+  end
+
   def self.[](range)
-    pre = proc { |vstring| vstring =~ /-/ ? vstring : vstring + '-' }
     range.gsub(/([><=])\s+/, '\1').split(/\b\s+(?!-)/).map do |r|
       case r
       when SemVer::VERSION
-        SemVer.new(pre[r]) .. SemVer.new(r)
+        SemVer.new(pre(r)) .. SemVer.new(r)
       when SemVer::SIMPLE_RANGE
         r += ".0" unless SemVer.valid?(r.gsub(/x/i, '0'))
         SemVer.new(r.gsub(/x/i, '0'))...SemVer.new(r.gsub(/(\d+)\.x/i) { "#{$1.to_i + 1}.0" } + '-')
       when /\s+-\s+/
         a, b = r.split(/\s+-\s+/)
-        SemVer.new(pre[a]) .. SemVer.new(b)
+        SemVer.new(pre(a)) .. SemVer.new(b)
       when /^~/
         ver = r.sub(/~/, '').split('.').map(&:to_i)
         start = (ver + [0] * (3 - ver.length)).join('.')
@@ -37,10 +40,10 @@ def self.[](range)
         ver[-1] = ver.last + 1
 
         finish = (ver + [0] * (3 - ver.length)).join('.')
-        SemVer.new(pre[start]) ... SemVer.new(pre[finish])
+        SemVer.new(pre(start)) ... SemVer.new(pre(finish))
       when /^>=/
         ver = r.sub(/^>=/, '')
-        SemVer.new(pre[ver]) .. SemVer::MAX
+        SemVer.new(pre(ver)) .. SemVer::MAX
       when /^<=/
         ver = r.sub(/^<=/, '')
         SemVer::MIN .. SemVer.new(ver)
@@ -54,7 +57,7 @@ def self.[](range)
         SemVer.new(ver.join('.') + '-') .. SemVer::MAX
       when /^</
         ver = r.sub(/^</, '')
-        SemVer::MIN ... SemVer.new(pre[ver])
+        SemVer::MIN ... SemVer.new(pre(ver))
       else
         (1..1)
       end
diff --git a/spec/unit/semver_spec.rb b/spec/unit/semver_spec.rb
index 8da6324..9d924a1 100644
--- a/spec/unit/semver_spec.rb
+++ b/spec/unit/semver_spec.rb
@@ -22,6 +22,16 @@
     end
   end
 
+  describe '::pre' do
+    it 'should append a dash when no dash appears in the string' do
+      SemVer.pre('1.2.3').should == '1.2.3-'
+    end
+
+    it 'should not append a dash when a dash appears in the string' do
+      SemVer.pre('1.2.3-a').should == '1.2.3-a'
+    end
+  end
+
   describe '::find_matching' do
     before :all do
       @versions = %w[

    

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to