Class: Lotus::Assets::Compiler Private

Inherits:
Object
  • Object
show all
Defined in:
lib/lotus/assets/compiler.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Assets compiler

It compiles assets that needs to be preprocessed (eg. Sass or ES6) into the destination directory.

Vanilla javascripts or stylesheets are just copied over.

Since:

  • 0.1.0

Constant Summary collapse

DEFAULT_PERMISSIONS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0

0644
COMPILE_PATTERN =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0

'*.*.*'.freeze
EXTENSIONS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0

{'.js' => true, '.css' => true}.freeze
SASS_CACHE_LOCATION =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.1.0

Pathname(Lotus.respond_to?(:root) ?
Lotus.root : Dir.pwd).join('tmp', 'sass-cache')

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration, name) ⇒ Lotus::Assets::Compiler

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return a new instance

Parameters:

  • configuration (Lotus::Assets::Configuration)

    the application configuration associated with the given asset

  • name (String)

    the asset path

Since:

  • 0.1.0



81
82
83
84
# File 'lib/lotus/assets/compiler.rb', line 81

def initialize(configuration, name)
  @configuration = configuration
  @name          = Pathname.new(name)
end

Class Method Details

.cacheObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Assets cache

See Also:

Since:

  • 0.1.0



66
67
68
# File 'lib/lotus/assets/compiler.rb', line 66

def self.cache
  @@cache ||= Assets::Cache.new
end

.compile(configuration, name) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Compile the given asset

Parameters:

  • configuration (Lotus::Assets::Configuration)

    the application configuration associated with the given asset

  • name (String)

    the asset path

Since:

  • 0.1.0



52
53
54
55
56
57
58
# File 'lib/lotus/assets/compiler.rb', line 52

def self.compile(configuration, name)
  return unless configuration.compile

  require 'tilt'
  require 'lotus/assets/cache'
  new(configuration, name).compile
end

Instance Method Details

#compileObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Compile the asset

Raises:

Since:

  • 0.1.0



93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/lotus/assets/compiler.rb', line 93

def compile
  raise MissingAsset.new(@name, @configuration.sources) unless exist?
  return unless fresh?

  if compile?
    compile!
  else
    copy!
  end

  cache!
end