lib/barista/framework.rb in barista-0.3.0 vs lib/barista/framework.rb in barista-0.4.0
- old
+ new
@@ -1,80 +1,80 @@
module Barista
class Framework
-
+
def self.default_framework
@default_framework ||= self.new("default", Barista.root)
end
-
+
def self.default_framework=(value)
@default_framework = value
end
-
+
def self.all(include_default = false)
all = (@all ||= [])
all = [default_framework] + all if include_default
all
end
-
+
def self.exposed_coffeescripts
all(true).inject([]) do |collection, fw|
collection + fw.exposed_coffeescripts
end.uniq.sort_by { |f| f.length }
end
-
+
def self.full_path_for(script)
script = script.to_s.gsub(/\.js$/, '.coffee').gsub(/^\/+/, '')
all(true).each do |fw|
full_path = fw.full_path_for(script)
return full_path, fw if full_path
end
nil
end
-
+
def self.register(name, root)
(@all ||= []) << self.new(name, root)
end
-
+
def self.[](name)
name = name.to_s
(@all ||= []).detect { |fw| fw.name == name }
end
-
+
attr_reader :name, :framework_root, :output_prefix
-
+
def initialize(name, root, output_prefix = nil)
@name = name.to_s
@output_prefix = nil
@framework_root = File.expand_path(root)
end
-
+
def coffeescripts
Dir[File.join(@framework_root, "**", "*.coffee")]
end
-
+
def short_name(script)
short_name = remove_prefix script, @framework_root
File.join *[@output_prefix, short_name].compact
end
-
+
def exposed_coffeescripts
coffeescripts.map { |script| short_name(script) }
end
-
+
def output_prefix=(value)
value = value.to_s.gsub /(^\/|\/$)/, ''
@output_prefix = value.blank? ? nil : value
end
-
+
def full_path_for(name)
full_path = File.join(@framework_root, remove_prefix(name, @output_prefix.to_s))
File.exist?(full_path) ? full_path : nil
end
-
+
protected
-
+
def remove_prefix(path, prefix)
path.to_s.gsub /^#{Regexp.escape(prefix.to_s)}\/?/, ''
end
-
+
end
-end
\ No newline at end of file
+end