module LuxAssets

Main assets module

include files from a plugin

Public Instance Methods

add(added) click to toggle source

adds file or list of files add 'plugin:js_widgets/*' add 'js/vendor/*' add 'index.coffee' add proc { … }

# File lib/lux_assets/base.rb, line 45
def add added
  return @bulk.push added if @in_bulk

  case added
  when Array
    add_local_files added
    return
  when Proc
    @files += [added]
  else
    files =
    if added[0,1] == '/' || added[0,2] == './'
      added
    else
      "#{@relative_root}/#{added}"
    end

    files =
    if files.include?('*')
      files += '/*' if files =~ %r{\/\*\*$}
      Dir[files].sort
    else
      [files]
    end

    files = files.select { |it| File.file?(it) }

    if files[0]
      add_local_files files
    else
      LuxAssets::Cli.die 'No files found in "%s -> :%s" (%s)'.red % [@ext, @name, added]
    end
  end
end
asset(name) { || ... } click to toggle source
# File lib/lux_assets/base.rb, line 21
def asset name
  @name    = name.to_s
  @in_bulk = true
  @bulk    = []
  yield
end
compile(path, opts={}) click to toggle source

compile single asset

# File lib/lux_assets/base.rb, line 87
def compile path, opts={}
  opts[:production] = false if opts[:production].nil?
  LuxAssets::Element.new(path).send :compile, opts
end
compile_all() { |"#{ext}/#{name}", path| ... } click to toggle source

compile all assets

# File lib/lux_assets/base.rb, line 93
def compile_all
  # generate master file for every resource
  for ext in [:js, :css]
    for name in to_h[ext].keys
      path = LuxAssets.send(ext, name).compile
      yield "#{ext}/#{name}", path if block_given?
    end
  end

  # gzip if needed
  files = Dir['./public/assets/*.css'] + Dir['./public/assets/*.js']
  files.each do |file|
    LuxAssets::Cli.run('gzip -k %s' % file, message: "Gzip: #{file}") unless File.exist?('%s.gz' % file)
  end

  # touch all files and reset the timestamp
  Dir['./public/assets/*']
    .each { |file| system 'touch -t 201001010101 %s' % file }

  # add integirty checks
  LuxAssets::Manifest.update_integrity
end
configure(&block) click to toggle source
# File lib/lux_assets/base.rb, line 28
def configure &block
  class_eval &block
end
css(name=nil, &block) click to toggle source
# File lib/lux_assets/base.rb, line 36
def css name=nil, &block
  add_files :css, name, &block
end
examine() click to toggle source

show files and file sizes

# File lib/lux_assets/base.rb, line 128
def examine
  data = to_h.dup
  data.each do |ext, value_hash|
    puts ext.to_s.upcase.green
    value_hash.each do |key, files|
      puts '  %s' % key.to_s.green

      total = 0

      files.each_with_index do |file, i|
        if File.exist?(file)
          size  = File.size(file)
          total += size
          puts '  %s kB - %s' % [(size/1024.to_f).round(1).to_s.rjust(6), file]
        else
          puts '  %s' % file
        end
      end

      total = '%s kB in total' % (total/1024.to_f).round(1).to_s
      puts total.rjust(20)
    end
  end
end
files(ext, name=nil) click to toggle source

get list of files in the resource

# File lib/lux_assets/base.rb, line 81
def files ext, name=nil
  ext, name = ext.split('/', 2) unless name
  Asset.new(ext, name).files
end
js(name=nil, &block) click to toggle source
# File lib/lux_assets/base.rb, line 32
def js name=nil, &block
  add_files :js, name, &block
end
plugin(name) click to toggle source
# File lib/vendor/lux/misc.rb, line 48
def plugin name
  # load pluigin if needed
  Lux.plugin name

  plugin = Lux.plugin.get name
  add '%s/**' % plugin[:folder]
end
relative_root(name=nil) click to toggle source
# File lib/lux_assets/base.rb, line 16
def relative_root name=nil
  @relative_root = name if name
  @relative_root
end
to_h() click to toggle source

get all files as a hash

# File lib/lux_assets/base.rb, line 117
def to_h
  unless @assets_loaded
    LuxAssets::Cli.die 'Assets rb config file not found in %s' % CONFIG_PATH unless CONFIG_PATH.exist?
    @assets_loaded = true
    eval CONFIG_PATH.read
  end

  @assets
end

Private Instance Methods

add_files(ext, name=nil, &block) click to toggle source
# File lib/lux_assets/base.rb, line 167
def add_files ext, name=nil, &block
  if block_given?
    @in_bulk = false
    @files   = []
    @ext     = ext
    class_eval &block
    @bulk.map { |it| add it }
    @files.reject! { |it| it.include?('/!') }
    @assets[ext][@name] = @files.reject { || }
  else
    Asset.new ext, name
  end
end
add_local_files(files) click to toggle source
# File lib/lux_assets/base.rb, line 155
def add_local_files files
  files = files.select { |it| ASSET_TYPES[@ext].include?(it.split('.').last) }

  files = files.select do |f|
    name = f.split('/').last
    name.include?('.') && !name[0, 1] != '!'
  end

  @files += files
  files
end