Sha256: ff408c4e8d76125eaade10ffa3588e9dd393762f4ff13d2cda077b52d32b598d

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

module GitSu
    VERSION = "0.0.2"

    class Version
        class ParseError < StandardError
        end

        REGEX = /(\d+)\.(\d+).(\d+)/
        def self.parse(string)
            raise ParseError, "Couldn't parse string '#{string}' as version" unless REGEX =~ string
            parts = REGEX.match(string)[1..3].map {|e| e.to_i }
            Version.new(*parts)
        end

        def self.current
            Version.parse(VERSION)
        end

        def self.prompt(input, output, prompt, default)
            output.print "#{prompt} [#{default}]: "
            value = input.gets.strip
            if value.empty?
                default
            else
                Version.parse value
            end
        end

        attr_reader :major, :minor, :patch
        def initialize(major, minor, patch)
            @major, @minor, @patch = major, minor, patch
        end

        def next_minor
            Version.new(@major, @minor + 1, @patch)
        end

        def ==(other)
            eql? other
        end

        def eql?(other)
            major = other.major && minor == other.minor && patch == other.patch
        end

        def to_s
            "#{major}.#{minor}.#{patch}"
        end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gitsu-0.0.2 lib/gitsu/version.rb