@api private @since 1.1.0
# File lib/cinch/pattern.rb, line 33 def self.generate(type, argument) case type when :ctcp Pattern.new(/^/, /#{Regexp.escape(argument.to_s)}(?:$| .+)/, nil) else raise ArgumentError, "Unsupported type: #{type.inspect}" end end
# File lib/cinch/pattern.rb, line 45 def initialize(prefix, pattern, suffix) @prefix, @pattern, @suffix = prefix, pattern, suffix end
@param [String, Regexp, NilClass, Proc, to_s] obj The object to
convert to a regexp
@return [Regexp, nil]
# File lib/cinch/pattern.rb, line 8 def self.obj_to_r(obj, anchor = nil) case obj when Regexp, NilClass return obj else escaped = Regexp.escape(obj.to_s) case anchor when :start return Regexp.new("^" + escaped) when :end return Regexp.new(escaped + "$") when nil return Regexp.new(Regexp.escape(obj.to_s)) end end end
# File lib/cinch/pattern.rb, line 49 def to_r(msg = nil) pattern = Pattern.resolve_proc(@pattern, msg) case pattern when Regexp, NilClass prefix = Pattern.obj_to_r(Pattern.resolve_proc(@prefix, msg), :start) suffix = Pattern.obj_to_r(Pattern.resolve_proc(@suffix, msg), :end) /#{prefix}#{pattern}#{suffix}/ else prefix = Pattern.obj_to_r(Pattern.resolve_proc(@prefix, msg)) suffix = Pattern.obj_to_r(Pattern.resolve_proc(@suffix, msg)) /^#{prefix}#{Pattern.obj_to_r(pattern)}#{suffix}$/ end end
Generated with the Darkfish Rdoc Generator 2.