class Eggsh::Translator

Public Instance Methods

translate(line) click to toggle source

translate a certain line with ruby expression

# File lib/translator.rb, line 6
def translate line
  eval_str, result, count = "", "", 0
  for i in line.split ''
    count += 1 if i == '{'
    if count == 0
      result += eval_part(eval_str).to_cmd + i
      eval_str = ''
    else
      eval_str += i
    end
    count -= 1 if i == '}'
  end
  result += eval_part(eval_str).to_cmd
  raise 'eggsh: Unbalanced parenthesis' if count != 0
  result
end

Private Instance Methods

eval_part(line) click to toggle source
# File lib/translator.rb, line 24
def eval_part line
  return '' if line.empty?
  ls = Eggsh::Ls.new
  if line =~ /\{\>?(.*)\}/
    str = eval($1) unless line.empty?
    if line =~ /\{\>(.*)\}/
      return nil
    else
      return str
    end
  else
    line
  end
end