Sha256: ab1ebf400cae6c776f32408582acefa4e33b4a454b4bde77be9b5134cdd8ee54

Contents?: true

Size: 1.34 KB

Versions: 3

Compression:

Stored size: 1.34 KB

Contents

require 'pathname'
require 'commonjs'

module Less
  class Loader
    
    attr_reader :environment
    
    def initialize
      context_wrapper = Less::JavaScript.context_wrapper.instance
      @context = context_wrapper.unwrap
      @context['process'] = Process.new
      @context['console'] = Console.new
      path = Pathname(__FILE__).dirname.join('js', 'lib')
      @environment = CommonJS::Environment.new(@context, :path => path.to_s)
      @environment.native('path', Path.new)
      @environment.native('util', Sys.new)
      @environment.native('fs', Fs.new)
    end
    
    def require(module_id)
      @environment.require(module_id)
    end
    
    # stubbed JS modules required by less.js
    
    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 self.log(*msgs)
        puts msgs.join(', ')
      end
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
less-2.2.2 lib/less/loader.rb
less-2.2.1 lib/less/loader.rb
less-2.2.0 lib/less/loader.rb