Module: LuxAssets

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

Overview

LuxAssets.css(:admin).compile_all do |name, path|

puts "Compile #{name} -> #{path}"

end

Defined Under Namespace

Modules: Manifest Classes: Asset, Element

Constant Summary collapse

CONFIG_PATH =
Pathname.new ENV.fetch('ASSET_CONFIG') { './config/assets.rb' }

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 { … }



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/lux_assets/base.rb', line 88

def add added
  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
      die 'No files found in "%s -> :%s" (%s)'.red % [@ext, @name, added]
    end
  end
end

#asset(name) ⇒ Object



46
47
48
49
# File 'lib/lux_assets/base.rb', line 46

def asset name
  @name = name.to_s
  yield
end

#compile_allObject



127
128
129
130
131
132
133
134
135
# File 'lib/lux_assets/base.rb', line 127

def compile_all
  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
end

#configure(&block) ⇒ Object



51
52
53
# File 'lib/lux_assets/base.rb', line 51

def configure &block
  class_eval &block
end

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



79
80
81
# File 'lib/lux_assets/base.rb', line 79

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

#die(text) ⇒ Object



41
42
43
44
# File 'lib/lux_assets/base.rb', line 41

def die text
  puts text
  exit
end

#files(name) ⇒ Object

get list of files in the resource



122
123
124
125
# File 'lib/lux_assets/base.rb', line 122

def files name
  parts = name.split('/', 2)
  to_h[parts.first.to_sym][parts[1]]
end

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



75
76
77
# File 'lib/lux_assets/base.rb', line 75

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

#plugin(name) ⇒ Object

include files from a plugin



4
5
6
7
8
9
10
# File 'lib/vendor/lux/assets_plugin.rb', line 4

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



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

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

#run(what, cache_file = nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/lux_assets/base.rb', line 55

def run what, cache_file=nil
  puts what.yellow

  stdin, stdout, stderr, wait_thread = Open3.popen3(what)

  error = stderr.gets
  while line = stderr.gets do
    error += line
  end

  # node-sass prints to stderror on complete
  error = nil if error && error.index('Rendering Complete, saving .css file...')

  if error
    cache_file.unlink if cache_file && cache_file.exist?

    puts error.red
  end
end

#to_hObject



137
138
139
140
141
142
143
144
145
# File 'lib/lux_assets/base.rb', line 137

def to_h
  unless @assets_loaded
    die 'Assets file not found in %s' % CONFIG_PATH unless CONFIG_PATH.exist?
    @assets_loaded = true
    eval CONFIG_PATH.read
  end

  @assets
end