Parent

Class/Module Index [+]

Quicksearch

Cinch::Pattern

@api private @since 1.1.0

Attributes

pattern[R]
prefix[R]
suffix[R]

Public Class Methods

generate(type, argument) click to toggle source
# 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
new(prefix, pattern, suffix) click to toggle source
# File lib/cinch/pattern.rb, line 45
def initialize(prefix, pattern, suffix)
  @prefix, @pattern, @suffix = prefix, pattern, suffix
end
obj_to_r(obj, anchor = nil) click to toggle source

@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
resolve_proc(obj, msg = nil) click to toggle source
# File lib/cinch/pattern.rb, line 25
def self.resolve_proc(obj, msg = nil)
  if obj.is_a?(Proc)
    return resolve_proc(obj.call(msg), msg)
  else
    return obj
  end
end

Public Instance Methods

to_r(msg = nil) click to toggle source
# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.