class Assetify::DSL

Nice Assetfile reader

Attributes

assets[R]

Public Class Methods

parse(chunk) click to toggle source

DSL.parse()

# File lib/assetify/dsl.rb, line 98
def self.parse(chunk)
  # puts "Assetify - Error Parsing 'Assetfile'."
  # Instance eval with 2nd, 3rd args to the rescue
  new.instance_eval(chunk, 'Assetfile', 1)
end

Public Instance Methods

a(name, url, *_params) click to toggle source

Global command, detects the filetype

a "jquery", "http://...jquery.js"
# File lib/assetify/dsl.rb, line 67
def a(name, url, *_params)
  extension = url.split('.').last
  parse_method extension, name, url
end
Also aliased as: asset
asset(name, url, *_params)
Alias for: a
dir(regex, params = {}) click to toggle source

Makes assets out of the entire directory

pkg :foo do

dir "images/*"
dir "images/*jpg"

end

# File lib/assetify/dsl.rb, line 50
def dir(regex, params = {})
  to = params[:to]
  if @pkg
    @pkg.get(regex).each do |path, _data|
      next if path =~ %r{/$} # dont let dirs get in... ugly
      ext, *name = path.split('.').reverse
      name = name.reverse.join('.').split('/').last
      create_asset(ext, name, path, nil, to: to)
    end
  end
end
group(name, &block) click to toggle source

Makes a group, a namespace for the assets.

group :foo do end

# File lib/assetify/dsl.rb, line 33
def group(name, &block)
  use_namespace(name)
  instance_exec(&block)
  @ns = nil
  assets
ensure
  @ns = nil
end
method_missing(method, name = nil, uri = nil, *params) click to toggle source

Filter/validate DSL to parse

# File lib/assetify/dsl.rb, line 76
def method_missing(method, name = nil, uri = nil, *params)
  if name && uri
    parse_method method, name, uri, params
  else
    raise SyntaxError, "Syntax Error on Assetfile. `#{method} :#{name}`"
  end
end
pkg(name, url, opts = {}, &block) click to toggle source

Makes a pkg, a gz/tar/zip asset/

pkg :foo, “to.tgz” do end

# File lib/assetify/dsl.rb, line 14
def pkg(name, url, opts = {}, &block)
  @pkg = Pkg.new name, url
  if block_given?
    use_namespace(name) unless opts[:shallow]
    instance_exec(&block)
  else
    @pkg.unpack_all
  end
  assets
ensure
  @ns = @pkg = nil
end

Private Instance Methods

create_asset(ext, name, path, ver, opts = {}) click to toggle source

Helper to create asset with correct options

# File lib/assetify/dsl.rb, line 123
def create_asset(ext, name, path, ver, opts = {})
  opts[:pkg] = @pkg
  opts[:ns] = @ns
  @assets ||= []
  @assets << Asset.new(ext, name, path, ver, opts)
end
parse_method(method, name, uri, params = []) click to toggle source

Parse the DSL dynamic extensions

js “foo”, “foo.com” js “foo”, “foo.com”, :to => “/other/place”

# File lib/assetify/dsl.rb, line 112
def parse_method(method, name, uri, params = [])
  params, ver = params.partition { |param| param.is_a?(Hash) }
  opts = {}
  params.each { |hsh| opts.merge! hsh }
  ver = ver[0]
  create_asset(method.to_sym, name, uri, ver, opts)
end
use_namespace(name) click to toggle source
# File lib/assetify/dsl.rb, line 130
def use_namespace(name)
  @ns = @ns.nil? ? name : "#{@ns}/#{name}"
end