Sha256: dc22f77155f1d62d3a407b6a04db18eeb10c7d926cb564df1a954a50d15c02ab
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require_relative '../livetext' require_relative '../helpers' 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 include Helpers def initialize(name) @name = name @file = find_file(name) end def self.get_module(name) parse = self.new(name) modname, code = parse.read_mixin eval(code) # Avoid in the future newmod = Object.const_get("::" + modname) # return actual module newmod end def read_mixin modname = @name.gsub("/","_").capitalize meths = grab_file(@file) [modname, "module ::#{modname}; #{meths}\nend"] end private def cwd_root? File.dirname(File.expand_path(".")) == "/" end def find_file(name, ext=".rb") base = "./#{name}#{ext}" file = "#{Plugins}/#{base}" return file if File.exist?(file) file = base return file if File.exist?(file) raise "No such mixin '#{name}'" if cwd_root? Dir.chdir("..") { find_file(name) } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
livetext-0.9.15 | lib/parser/mixin.rb |