Module: Middleman::Extensions

Defined in:
middleman-core/lib/middleman-core/extensions/lorem.rb,
middleman-core/lib/middleman-core/extensions.rb,
middleman-more/lib/middleman-more/extensions/gzip.rb,
middleman-more/lib/middleman-more/extensions/minify_css.rb,
middleman-more/lib/middleman-more/extensions/asset_hash.rb,
middleman-core/lib/middleman-core/extensions/asset_host.rb,
middleman-more/lib/middleman-more/extensions/cache_buster.rb,
middleman-more/lib/middleman-more/extensions/relative_assets.rb,
middleman-core/lib/middleman-core/extensions/directory_indexes.rb,
middleman-more/lib/middleman-more/extensions/minify_javascript.rb,
middleman-core/lib/middleman-core/extensions/automatic_image_sizes.rb

Overview

Extensions namespace

Defined Under Namespace

Modules: AssetHash, AssetHost, AutomaticImageSizes, CacheBuster, DirectoryIndexes, Gzip, Lorem, MinifyCss, MinifyJavascript, RelativeAssets

Class Method Summary (collapse)

Class Method Details

+ (Object) load(name)



54
55
56
57
58
59
60
61
62
63
64
65
# File 'middleman-core/lib/middleman-core/extensions.rb', line 54

def load(name)
  name = name.to_sym
  return nil unless registered.has_key?(name)

  extension = registered[name]
  if extension.is_a?(Proc)
    extension = extension.call() || nil
    registered[name] = extension
  end

  extension
end

+ (Object) register(name, namespace = nil, version = nil) { ... }

Register a new extension. Choose a name which will be used to activate the extension in config.rb, like this:

activate :my_extension

Provide your extension module either as the namespace parameter, or return it from the block:

Parameters:

  • name (Symbol)

    The name of the extension

  • namespace (Module) (defaults to: nil)

    The extension module

  • version (String) (defaults to: nil)

    A RubyGems-style version string stating the versions of middleman this extension is compatible with.

Yields:

  • Instead of passing a module in namespace, you can provide a block which returns your extension module. This gives you the ability to require other files only when the extension is activated.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'middleman-core/lib/middleman-core/extensions.rb', line 27

def register(name, namespace=nil, version=nil, &block)
  # If we've already got a matching extension that passed the
  # version check, bail out.
  return if registered.has_key?(name.to_sym) &&
  !registered[name.to_sym].is_a?(String)

  if block_given?
    version = namespace
  end

  passed_version_check = true
  if !version.nil?
    requirement = ::Gem::Requirement.create(version)
    if !requirement.satisfied_by?(Middleman::GEM_VERSION)
      passed_version_check = false
    end
  end

  registered[name.to_sym] = if !passed_version_check
    "== #{name} failed version check. Requested #{version}, got #{Middleman::VERSION}"
  elsif block_given?
    block
  elsif namespace
    namespace
  end
end

+ (Object) registered



6
7
8
# File 'middleman-core/lib/middleman-core/extensions.rb', line 6

def registered
  @_registered ||= {}
end