Sha256: b620cf4a2fae793c5019f8e11fb03605210395396707ecfc34ed1a38cb900be7
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
require_relative './node' require_relative './path_set' module UrlRegexp class Path < Node attr_reader :label, :paths attr_accessor :path_end def initialize(label = nil, parent = nil, options = {}) @label = label @parent = parent @options = options @paths = PathSet.new(nil, @options) @path_end = false end def ==(other) self.class == other.class && @label == other.label && @paths == other.paths && @path_end == other.path_end end alias eql? == def hash [@label, @paths, @path_end].hash end def append(path) if path == '' @paths.append(Path.new('', self, @options)) elsif @parent.nil? _, label, rest = path.split('/', 3) else label, rest = path.split('/', 2) end if label p = @paths.find { |pp| pp.label == label } if p.nil? p = Path.new(label, self, @options) @paths.append(p) end if rest.nil? p.path_end = true else p.append(rest) end end end def to_regexp_s s = @paths.to_regexp_s s = "/#{s}" unless s.nil? s = "(#{s})?" if @path_end && s.to_s != '' s = "#{Regexp.quote(@label)}#{s}" if @label s end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
url_regexp-0.1.3 | lib/url_regexp/path.rb |