class Archlinux::Version

Attributes

epoch[R]
pkgrel[R]
version[R]

Public Class Methods

create(v) click to toggle source
# File lib/aur/versions.rb, line 5
def self.create(v)
        v.is_a?(self) ? v : self.new(v)
end
new(*v) click to toggle source
# File lib/aur/versions.rb, line 11
def initialize(*v)
        if v.length==1
                @v=v.first
                parse(@v)
        elsif v.empty?
                @epoch=-1 #any version is better than empty version
                @version=Gem::Version.new(0)
                @pkgrel=nil
        else
                @v=v
                epoch, version, pkgrel=v
                @epoch=epoch || 0
                @real_epoch= epoch ? true : false
                @real_version=version
                @version=set_version(version)
                @pkgrel=pkgrel
        end
end
strip(v) click to toggle source

strip version information from a package name

# File lib/aur/versions.rb, line 79
def self.strip(v)
        v.sub(/[><=]+[\w.\-+:]*$/,'')
end

Public Instance Methods

<=>(w) click to toggle source
# File lib/aur/versions.rb, line 57
def <=>(w)
        w=self.class.new(w.to_s)
        r= @epoch <=> w.epoch
        if r==0
                r= @version <=> w.version
                if r==0 and @pkgrel and w.pkgrel
                        r= @pkgrel <=> w.pkgrel
                end
        end
        r
end
set_version(version) click to toggle source

Gem::Version is super pickly :-(

# File lib/aur/versions.rb, line 31
def set_version(version)
        version=version.tr('+_','.')
        @version=Gem::Version.new(version) rescue Gem::Version.new("0.#{version}")
end
to_s() click to toggle source
# File lib/aur/versions.rb, line 69
def to_s
        # @v.to_s
        r=""
        r << "#{@epoch}:" if @real_epoch
        r << "#{@real_version}"
        r << "-#{@pkgrel}" if @pkgrel
        r
end

Private Instance Methods

parse(v) click to toggle source
# File lib/aur/versions.rb, line 36
        def parse(v)
        if v.nil? or v.empty?
                @epoch=-1 #any version is better than empty version
                @version=Gem::Version.new(0)
                @pkgrel=nil
                return
        end
        epoch, rest = v.split(':', 2)
        if rest.nil?
                rest=epoch; epoch=0
                @real_epoch=false
        else
                @real_epoch=true
        end
        @epoch=epoch
        version, pkgrel=Utils.rsplit(rest, '-', 2)
        set_version(version)
        @real_version=version
        @pkgrel=pkgrel.to_i
end