class Regexy::Regexp

Attributes

internal_regexp[R]

Public Class Methods

new(regexp, *args) click to toggle source
# File lib/regexy/regexp.rb, line 10
def initialize(regexp, *args)
  regexp = normalize_regexp(regexp, *args)
  @internal_regexp = ::Regexp.new(regexp, *args)
end

Public Instance Methods

+(other) click to toggle source
# File lib/regexy/regexp.rb, line 24
def + other
  other = ::Regexy::Regexp.new(other)
  first_regex = source.length > 2 ? source.sub(/\\z\s*\z/, '') : source
  second_regex = other.source.length > 2 ? other.source.sub(/\A\\A/, '') : other.source
  new_regexp = first_regex + second_regex
  new_options = options | other.options
  ::Regexy::Regexp.new(new_regexp, new_options)
end
Also aliased as: and_then
and_then(other)
Alias for: +
bound(method = :both) click to toggle source
# File lib/regexy/regexp.rb, line 35
def bound(method = :both)
  new_regexp = source
  method = method.to_sym
  if method == :left || method == :both
    new_regexp.prepend('\A')
  end
  if method == :right || method == :both
    new_regexp.concat('\z')
  end
  new_regexp = additional_bound(method, new_regexp)
  ::Regexy::Regexp.new(new_regexp, options)
end
or(other)
Alias for: |
unbound(method = :both) click to toggle source
# File lib/regexy/regexp.rb, line 48
def unbound(method = :both)
  new_regexp = source
  method = method.to_sym
  if method == :left || method == :both
    new_regexp.sub!(/\A\\A/, '')
  end
  if method == :right || method == :both
    new_regexp.sub!(/\\z\s*\z/, '')
  end
  new_regexp = additional_unbound(method, new_regexp)
  ::Regexy::Regexp.new(new_regexp, options)
end
|(other) click to toggle source
# File lib/regexy/regexp.rb, line 15
def | other
  other = ::Regexy::Regexp.new(other)
  new_regexp = "#{source}|#{other.source}"
  new_options = options | other.options
  ::Regexy::Regexp.new(new_regexp, new_options)
end
Also aliased as: or

Protected Instance Methods

additional_bound(method, regex) click to toggle source
# File lib/regexy/regexp.rb, line 71
def additional_bound(method, regex) # You can override this methods if your regular expression needs additional bound/unbound logic
  regex
end
additional_unbound(method, regex) click to toggle source
# File lib/regexy/regexp.rb, line 75
def additional_unbound(method, regex)
  regex
end
normalize_regexp(regexp, *args) click to toggle source
# File lib/regexy/regexp.rb, line 63
def normalize_regexp(regexp, *args)
  case regexp
  when ::Regexy::Regexp then regexp.internal_regexp
  when ::Regexp then args.any? ? regexp.source : regexp # allows to pass custom options to regexp
  else regexp
  end
end