barista 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +32 -2
- data/barista.gemspec +3 -3
- data/lib/barista.rb +10 -0
- data/lib/barista/framework.rb +30 -10
- data/lib/barista/version.rb +1 -1
- data/lib/generators/barista_install/templates/initializer.rb +14 -0
- metadata +12 -5
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Barista
|
1
|
+
# Barista #
|
2
2
|
|
3
3
|
Barista is very, very similar to [bistro\_car](http://github.com/jnicklas/bistro_car) (infact, credit where credit is due - it shares similar
|
4
4
|
code / is almost a fork).
|
@@ -14,7 +14,7 @@ your coffeescripts will be automatically provided, ready for bundling.
|
|
14
14
|
|
15
15
|
To add to your project, simply add:
|
16
16
|
|
17
|
-
gem 'barista', '>= 0.1
|
17
|
+
gem 'barista', '>= 0.2.1'
|
18
18
|
|
19
19
|
To your Gemfile and run bundle install.
|
20
20
|
|
@@ -25,6 +25,35 @@ automatically compile all coffeescripts that have changed before rendering the p
|
|
25
25
|
|
26
26
|
Barista require rails 3+ (but patches for Rails 2 will be accepted.)
|
27
27
|
|
28
|
+
## Frameworks ##
|
29
|
+
|
30
|
+
One of the other main features Barista adds (over bistro\_car) is frameworks similar
|
31
|
+
to Compass. The idea being, you add coffeescripts at runtime from gems etc. To do this,
|
32
|
+
in your gem just have a coffeescript directory and then in you gem add the following code:
|
33
|
+
|
34
|
+
Barista::Framework.register 'name', 'full-path-to-directory' if defined?(Barista::Framework)
|
35
|
+
|
36
|
+
For an example of this in practice, check out [bhm-google-maps](http://github.com/YouthTree/bhm-google-maps)
|
37
|
+
or, the currently-in-development, [shuriken](http://github.com/Sutto/shuriken). The biggest advantage of this
|
38
|
+
is you can then manage js dependencies using existing tools like bundler.
|
39
|
+
|
40
|
+
In your `Barista.configure` block, you can also configure on a per-application basis the output directory
|
41
|
+
for individual frameworks (e.g. put shuriken into vendor/shuriken, bhm-google-maps into vendor/bhm-google-maps):
|
42
|
+
|
43
|
+
Barista.configure do |config|
|
44
|
+
config.change_output_prefix! 'shuriken', 'vendor/shuriken'
|
45
|
+
config.change_output_prefix! 'bhm-google-maps', 'vendor/bhm-google-maps'
|
46
|
+
end
|
47
|
+
|
48
|
+
Alternatively, to prefix all, you can use `Barista.each_framework` (if you pass true, it includes the 'default' framework
|
49
|
+
which is your application root).
|
50
|
+
|
51
|
+
Barista.configure do |config|
|
52
|
+
config.each_framework do |framework|
|
53
|
+
config.change_output_prefix! framework.name, "vendor/#{framework.name}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
28
57
|
## Configuration ##
|
29
58
|
|
30
59
|
Please note that barista lets you configure several options. To do this,
|
@@ -39,4 +68,5 @@ Currently available options are:
|
|
39
68
|
* root - the folder path to read coffeescripts from, defaults to app/coffeescripts
|
40
69
|
* output\_root - the folder to write them into, defautls to public/javascripts.
|
41
70
|
* no\_wrap - stop coffee from automatically wrapping JS in a closure.
|
71
|
+
* change\_output\_prefix! - method to change the output prefix for a framework.
|
42
72
|
|
data/barista.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{barista}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Darcy Laycock"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-03}
|
13
13
|
s.description = %q{Automatically compiles app/scripts/*.coffee to javascript for rails awesomesauce.}
|
14
14
|
s.email = %q{sutto@sutto.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |s|
|
|
38
38
|
s.homepage = %q{http://github.com/Sutto/barista}
|
39
39
|
s.rdoc_options = ["--charset=UTF-8"]
|
40
40
|
s.require_paths = ["lib"]
|
41
|
-
s.rubygems_version = %q{1.3.
|
41
|
+
s.rubygems_version = %q{1.3.6}
|
42
42
|
s.summary = %q{Transparent coffeescript support for rails 3}
|
43
43
|
|
44
44
|
if s.respond_to? :specification_version then
|
data/lib/barista.rb
CHANGED
@@ -53,6 +53,16 @@ module Barista
|
|
53
53
|
true
|
54
54
|
end
|
55
55
|
|
56
|
+
def change_output_prefix!(framework, prefix = nil)
|
57
|
+
framework = framework.is_a?(Barista::Framework) ? framework : Barista::Framework[framework]
|
58
|
+
return unless framework
|
59
|
+
framework.output_prefix = prefix
|
60
|
+
end
|
61
|
+
|
62
|
+
def each_framework(include_default = false)
|
63
|
+
Framework.all(include_default).each { yield if block_given? }
|
64
|
+
end
|
65
|
+
|
56
66
|
def output_path_for(file)
|
57
67
|
output_root.join(file.to_s.gsub(/^\/+/, '')).to_s.gsub(/\.coffee$/, '.js')
|
58
68
|
end
|
data/lib/barista/framework.rb
CHANGED
@@ -9,19 +9,21 @@ module Barista
|
|
9
9
|
@default_framework = value
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.all
|
13
|
-
|
12
|
+
def self.all(include_default = false)
|
13
|
+
all = (@all ||= [])
|
14
|
+
all = [default_framework] + all if include_default
|
15
|
+
all
|
14
16
|
end
|
15
17
|
|
16
18
|
def self.exposed_coffeescripts
|
17
|
-
all.inject([]) do |collection, fw|
|
19
|
+
all(true).inject([]) do |collection, fw|
|
18
20
|
collection + fw.exposed_coffeescripts
|
19
|
-
end.uniq
|
21
|
+
end.uniq.sort_by { |f| f.length }
|
20
22
|
end
|
21
23
|
|
22
24
|
def self.full_path_for(script)
|
23
25
|
script = script.to_s.gsub(/\.js$/, '.coffee').gsub(/^\/+/, '')
|
24
|
-
all.each do |fw|
|
26
|
+
all(true).each do |fw|
|
25
27
|
full_path = fw.full_path_for(script)
|
26
28
|
return full_path, fw if full_path
|
27
29
|
end
|
@@ -32,10 +34,16 @@ module Barista
|
|
32
34
|
(@all ||= []) << self.new(name, root)
|
33
35
|
end
|
34
36
|
|
35
|
-
|
37
|
+
def self.[](name)
|
38
|
+
name = name.to_s
|
39
|
+
(@all ||= []).detect { |fw| fw.name == name }
|
40
|
+
end
|
41
|
+
|
42
|
+
attr_reader :name, :framework_root, :output_prefix
|
36
43
|
|
37
|
-
def initialize(name, root)
|
38
|
-
@name = name
|
44
|
+
def initialize(name, root, output_prefix = nil)
|
45
|
+
@name = name.to_s
|
46
|
+
@output_prefix = nil
|
39
47
|
@framework_root = File.expand_path(root)
|
40
48
|
end
|
41
49
|
|
@@ -44,17 +52,29 @@ module Barista
|
|
44
52
|
end
|
45
53
|
|
46
54
|
def short_name(script)
|
47
|
-
|
55
|
+
short_name = remove_prefix script, @framework_root
|
56
|
+
File.join *[@output_prefix, short_name].compact
|
48
57
|
end
|
49
58
|
|
50
59
|
def exposed_coffeescripts
|
51
60
|
coffeescripts.map { |script| short_name(script) }
|
52
61
|
end
|
53
62
|
|
63
|
+
def output_prefix=(value)
|
64
|
+
value = value.to_s.gsub /(^\/|\/$)/, ''
|
65
|
+
@output_prefix = value.blank? ? nil : value
|
66
|
+
end
|
67
|
+
|
54
68
|
def full_path_for(name)
|
55
|
-
full_path = File.join(@framework_root, name)
|
69
|
+
full_path = File.join(@framework_root, remove_prefix(name, @output_prefix.to_s))
|
56
70
|
File.exist?(full_path) ? full_path : nil
|
57
71
|
end
|
58
72
|
|
73
|
+
protected
|
74
|
+
|
75
|
+
def remove_prefix(path, prefix)
|
76
|
+
path.to_s.gsub /^#{Regexp.escape(prefix.to_s)}\/?/, ''
|
77
|
+
end
|
78
|
+
|
59
79
|
end
|
60
80
|
end
|
data/lib/barista/version.rb
CHANGED
@@ -12,4 +12,18 @@ Barista.configure do |c|
|
|
12
12
|
# ... or ...
|
13
13
|
# c.no_wrap!
|
14
14
|
|
15
|
+
# Change the output root for a framework:
|
16
|
+
|
17
|
+
# config.change_output_prefix! 'framework-name', 'output-prefix'
|
18
|
+
|
19
|
+
# or for all frameworks...
|
20
|
+
|
21
|
+
# config.each_framework do |framework|
|
22
|
+
# config.change_output_prefix! framework.name, "vendor/#{framework.name}"
|
23
|
+
# end
|
24
|
+
|
25
|
+
# or, prefix the path for the app files:
|
26
|
+
|
27
|
+
# config.change_output_prefix! :default, 'my-app-name'
|
28
|
+
|
15
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: barista
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
version: 0.2.1
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Darcy Laycock
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-03 00:00:00 +08:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -53,18 +58,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
53
58
|
requirements:
|
54
59
|
- - ">="
|
55
60
|
- !ruby/object:Gem::Version
|
61
|
+
segments:
|
62
|
+
- 0
|
56
63
|
version: "0"
|
57
|
-
version:
|
58
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
65
|
requirements:
|
60
66
|
- - ">="
|
61
67
|
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 0
|
62
70
|
version: "0"
|
63
|
-
version:
|
64
71
|
requirements: []
|
65
72
|
|
66
73
|
rubyforge_project:
|
67
|
-
rubygems_version: 1.3.
|
74
|
+
rubygems_version: 1.3.6
|
68
75
|
signing_key:
|
69
76
|
specification_version: 3
|
70
77
|
summary: Transparent coffeescript support for rails 3
|