Sha256: 6d4e1b27a60ce023405f078035e9d095b6b7914dd717c51007638c05489262b8
Contents?: true
Size: 770 Bytes
Versions: 2
Compression:
Stored size: 770 Bytes
Contents
module Space class App class Parser attr_reader :names, :line def initialize(names) @names = names end def parse(line) @line = line scope = parse_scope command = parse_command [scope || names, command] end private def parse_scope scope = [] pattern = /^(#{names.join('|')}|\d+)\s*/ line.gsub!(pattern) { |repo| scope << resolve(repo.strip); '' } while line =~ pattern line.strip! scope unless scope.empty? end def parse_command line.strip line unless line.empty? end def resolve(repo) repo =~ /^\d+$/ ? names[repo.to_i - 1] : repo end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
space-0.0.5 | lib/space/app/parser.rb |
space-0.0.4 | lib/space/app/parser.rb |