Class: SemverDialects::Rpm::VersionParser
- Inherits:
-
Object
- Object
- SemverDialects::Rpm::VersionParser
- Defined in:
- lib/semver_dialects/rpm.rb
Overview
rubocop:todo Style/Documentation
Constant Summary collapse
- DASH =
/-/- ALPHABET =
/([a-zA-Z]+)/- TILDE =
/~/- DIGIT =
/([0-9]+)/- COLON =
/:/- NON_ALPHANUMERIC_DASH_TILDE_AND_WHITESPACE =
/[^a-zA-Z0-9~\s]+/- WHITE_SPACE =
/\s/
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(input) ⇒ VersionParser
constructor
A new instance of VersionParser.
-
#parse ⇒ Object
parse splits the input string into epoch, version and release tag Eg: <epoch>:<version>-<release_tag> The version and release tag are split at the first ‘-` character if present With the segment before the first `-` being version while the other being release tag Subsequent `-` are disregarded.
Constructor Details
#initialize(input) ⇒ VersionParser
97 98 99 100 |
# File 'lib/semver_dialects/rpm.rb', line 97 def initialize(input) @input = input @scanner = StringScanner.new(input) end |
Class Method Details
.parse(input) ⇒ Object
93 94 95 |
# File 'lib/semver_dialects/rpm.rb', line 93 def self.parse(input) new(input).parse end |
Instance Method Details
#parse ⇒ Object
parse splits the input string into epoch, version and release tag Eg: <epoch>:<version>-<release_tag> The version and release tag are split at the first ‘-` character if present With the segment before the first `-` being version while the other being release tag Subsequent `-` are disregarded
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/semver_dialects/rpm.rb', line 106 def parse epoch = nil if (s = scanner.scan(/\d+:/)) epoch = s[..-2].to_i end # parse tokens until we reach the release tag, if any tokens = parse_tokens(false) # parse release tag release_tag = nil release_tag = ReleaseTag.new(parse_tokens(true)) if scanner.rest? raise IncompleteScanError, scanner.rest if scanner.rest? Version.new(tokens, epoch: epoch, release_tag: release_tag) end |