Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability to provide default JavaScript load paths #75

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ source 'https://rubygems.org'

gemspec

gem 'commonjs', git: 'git://github.com/bandzoogle/commonjs.rb.git'

gem "therubyracer", "~> 0.12.0", :require => nil, :platforms => :ruby
gem "therubyrhino", ">= 2.0.2", :require => nil, :platforms => :jruby

Expand Down
2 changes: 1 addition & 1 deletion less.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ Gem::Specification.new do |s|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]

s.add_dependency "commonjs", "~> 0.2.7"
s.add_dependency "commonjs", "~> 0.2.8"
end
12 changes: 8 additions & 4 deletions lib/less.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@

module Less
extend Less::Defaults
# NOTE: keep the @loader as less-rails depends on

# NOTE: keep the @loader as less-rails depends on
# it as it overrides some less/tree.js functions!
@loader = Less::Loader.new
@less = @loader.require('less/index')

def self.[](name)
@less[name]
end

# exposes less.Parser
def self.Parser
self['Parser']
Expand All @@ -28,5 +28,9 @@ def self.Parser
def self.tree
self['tree']
end


def self.add_javascript_path(path)
@loader.add_javascript_path(path)
end

end
6 changes: 5 additions & 1 deletion lib/less/defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@ module Less
module Defaults

def defaults
@defaults ||= { :paths => [], :relativeUrls => true, :syncImport => true }
@defaults ||= { :paths => [], :relativeUrls => true, :syncImport => true, :javascript_paths => [] }
end

def paths
defaults[:paths]
end

def javascript_paths
defaults[:javascript_paths]
end

end
end
2 changes: 1 addition & 1 deletion lib/less/js
Submodule js updated from 7370f7 to 08e2fc
6 changes: 5 additions & 1 deletion lib/less/loader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def initialize
@context['console'] = Console.new
@context['Buffer'] = Buffer
path = Pathname(__FILE__).dirname.join('js', 'lib')
@environment = CommonJS::Environment.new(@context, :path => path.to_s)
@environment = CommonJS::Environment.new(@context, :path => Less.javascript_paths + [path.to_s])
@environment.native('path', Path)
@environment.native('util', Util)
@environment.native('fs', FS)
Expand All @@ -28,6 +28,10 @@ def require(module_id)
@environment.require(module_id)
end

def add_javascript_path(path)
@environment.add_path(path)
end

# JS exports (required by less.js) :

class Process # :nodoc:
Expand Down
2 changes: 1 addition & 1 deletion lib/less/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Less
VERSION = '2.6.0'
VERSION = '2.7.1'
end
3 changes: 3 additions & 0 deletions spec/less/js/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
var test = function() {
console.log('hello');
};
30 changes: 30 additions & 0 deletions spec/less/loader_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,34 @@

end

describe 'when javascript_paths are included in default options' do
let(:path) { Pathname(__FILE__).dirname.join('js') }

before { Less.javascript_paths << path }

it 'should be able to include javascript from that path' do
lambda { subject.environment.require 'test.js' }.should_not raise_error
end

it 'should be able to include javascript from lib path' do
lambda { subject.environment.require 'less/index' }.should_not raise_error
end

after { Less.javascript_paths.delete path }
end

describe '.add_javascript_path' do
let(:path) { Pathname(__FILE__).dirname.join('js') }

before { subject.add_javascript_path(path) }

it 'should be able to include javascript from that path' do
lambda { subject.environment.require 'test.js' }.should_not raise_error
end

it 'should be able to include javascript from lib path' do
lambda { subject.environment.require 'less/index' }.should_not raise_error
end
end

end