Sha256: 66b6d09be6fa7cd363cea78ae39f31aa0be27c7c59eb6cd517f43eb8bfdc19d6

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require_relative '../livetext'
require_relative 'string'

make_exception(:BadVariableName, "Error: invalid variable name")
make_exception(:NoEqualSign,     "Error: no equal sign found")

# FIXME probably belongs elsewhere?

class Livetext::ParseMixin   # < StringParser

#   def self.parse(str)
#     self.new(str).parse
#   end
# 
#   def initialize(line)
#     super
#   end

  def cwd_root?
    File.dirname(File.expand_path(".")) == "/"
  end

  def find_mixin(name)
    file = "#{Plugins}/" + name.downcase + ".rb"
    return file if File.exist?(file)

    file = "./#{name}.rb"
    return file if File.exist?(file)

    raise "No such mixin '#{name}'" if cwd_root?
    Dir.chdir("..") { find_mixin(name) }
  end

  def use_mixin(name, file)
    modname = name.gsub("/","_").capitalize
    meths = grab_file(file)
    string = "module ::#{modname}; #{meths}\nend"
    eval(string)
    newmod = Object.const_get("::" + modname)
    self.extend(newmod)
    init = "init_#{name}"
    self.send(init) if self.respond_to? init
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
livetext-0.9.13 lib/parser/mixin.rb