class Ruboty::FlexibleAlias::Alias

Public Class Methods

new(original, transformed) click to toggle source
# File lib/ruboty/flexible_alias/alias.rb, line 4
def initialize(original, transformed)
  @original = original
  @transformed = transformed

  compile!
end

Public Instance Methods

compile!() click to toggle source
# File lib/ruboty/flexible_alias/alias.rb, line 11
def compile!
  @compiled = []

  @original.gsub(/([^\)]*)\((digit|alnum|graph)\)([^\(]*)/) do |match|
    match = Regexp.last_match
    left = match[1]
    keyword = match[2]
    right = match[3]
    @compiled += [Regexp.escape(left), '([[:', keyword, ':]]+)', Regexp.escape(right)]
  end

  @compiled += [Regexp.escape(@original)] if @compiled.empty?

  @compiled = Regexp.compile(@compiled.join(''))
end
tranfrom(original) click to toggle source
# File lib/ruboty/flexible_alias/alias.rb, line 27
def tranfrom(original)
  match = original.match(@compiled)

  if match
    @transformed.gsub(/\$([0-9]+)/) do |*|
      match[Regexp.last_match[1].to_i]
    end
  end
end