Sha256: fb96b07dde82618a6ca875a8f3921116c256e3b6db03d43d7d2e07103723a2b8
Contents?: true
Size: 1.52 KB
Versions: 3
Compression:
Stored size: 1.52 KB
Contents
module Less class Loader include CallJS def initialize lock do @cxt = V8::Context.new @path = Pathname(__FILE__).dirname.join('js','lib') @exports = { "path" => Path.new, "sys" => Sys.new, "fs" => Fs.new } @process = Process.new @cxt['console'] = Console.new end end def require(path) unless exports = @exports[path] filename = path =~ /\.js$/ ? path : "#{path}.js" filepath = @path.join(filename) fail LoadError, "no such file: #{filename}" unless filepath.exist? lock do load = @cxt.eval("(function(process, require, exports, __dirname) {require.paths = [];#{File.read(filepath)}})", filepath.expand_path) @exports[path] = exports = @cxt['Object'].new load.call(@process, method(:require), exports, Dir.pwd) end end return exports end class Path def join(*components) File.join(*components) end def dirname(path) File.dirname(path) end end class Sys def error(*errors) raise errors.join(' ') end end class Fs def statSync(path) File.stat(path) end def readFile(path, encoding, callback) callback.call(nil, File.read(path)) end end class Process def exit(*args) end end class Console def log(*msgs) puts msgs.join(',') end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
less-2.0.7 | lib/less/loader.rb |
less-2.0.6 | lib/less/loader.rb |
less-2.0.5 | lib/less/loader.rb |