Sha256: 51aba4d6fab3bb84e95b07453f6ca4056a09ea82a795ad8d2c21d16707643c88
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
module Nanoc::Int # @api private class Pattern def self.from(obj) case obj when Nanoc::Int::StringPattern, Nanoc::Int::RegexpPattern obj when String Nanoc::Int::StringPattern.new(obj) when Regexp Nanoc::Int::RegexpPattern.new(obj) else raise ArgumentError, "Do not know how to convert #{obj} into a Nanoc::Pattern" end end def initialize(_obj) raise NotImplementedError end def match?(_identifier) raise NotImplementedError end def captures(_identifier) raise NotImplementedError end end # @api private class StringPattern def initialize(string) @string = string end def match?(identifier) opts = File::FNM_PATHNAME | File::FNM_EXTGLOB File.fnmatch(@string, identifier.to_s, opts) end def captures(_identifier) nil end def to_s @string end end # @api private class RegexpPattern def initialize(regexp) @regexp = regexp end def match?(identifier) (identifier.to_s =~ @regexp) != nil end def captures(identifier) matches = @regexp.match(identifier.to_s) matches && matches.captures end def to_s @regexp.to_s end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nanoc-4.0.0rc2 | lib/nanoc/base/entities/pattern.rb |
nanoc-4.0.0rc1 | lib/nanoc/base/entities/pattern.rb |