Module: LuxAssets

Extended by:
LuxAssets
Included in:
LuxAssets
Defined in:
lib/lux_assets/base.rb,
lib/vendor/lux/misc.rb

Overview

include files from a plugin

Defined Under Namespace

Modules: Cli, Manifest Classes: Asset, Element

Instance Method Summary collapse

Instance Method Details

#add(added) ⇒ Object

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



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 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) ⇒ Object



21
22
23
24
25
26
# File 'lib/lux_assets/base.rb', line 21

def asset name
  @name    = name.to_s
  @in_bulk = true
  @bulk    = []
  yield
end

#compile(path, opts = {}) ⇒ Object

compile single asset



87
88
89
90
# 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_allObject

compile all assets



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# 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) ⇒ Object



28
29
30
# File 'lib/lux_assets/base.rb', line 28

def configure &block
  class_eval &block
end

#css(name = nil, &block) ⇒ Object



36
37
38
# File 'lib/lux_assets/base.rb', line 36

def css name=nil, &block
  add_files :css, name, &block
end

#examineObject

show files and file sizes



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# 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) ⇒ Object

get list of files in the resource



81
82
83
84
# 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) ⇒ Object



32
33
34
# File 'lib/lux_assets/base.rb', line 32

def js name=nil, &block
  add_files :js, name, &block
end

#plugin(name) ⇒ Object



48
49
50
51
52
53
54
# 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) ⇒ Object



16
17
18
19
# File 'lib/lux_assets/base.rb', line 16

def relative_root name=nil
  @relative_root = name if name
  @relative_root
end

#to_hObject

get all files as a hash



117
118
119
120
121
122
123
124
125
# 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