Sha256: 737f70a6e21c88882b2739ee00a80f4afe29d3d084a462976257810f022a8d82

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

require 'commonjs'

module Less
  class Loader
    include CallJS

    attr_reader :environment

    def initialize
      @cxt = V8::Context.new
      @environment = CommonJS::Environment.new(@cxt, :path => Pathname(__FILE__).dirname.join('js','lib').to_s)
      @environment.native('path', Path.new)
      @environment.native('util', Sys.new)
      @environment.native('fs', Fs.new)

      @cxt['process'] = Process.new
      @cxt['console'] = Console.new
    end

    def require(module_id)
      @environment.require(module_id)
    end

    class Path
      def join(*components)
        File.join(*components)
      end

      def dirname(path)
        File.dirname(path)
      end

      def basename(path)
        File.basename(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.1.0 lib/less/loader.rb
less-2.0.12 lib/less/loader.rb
less-2.0.11 lib/less/loader.rb