Module: Locomotive::Plugin::Liquid

Included in:
Locomotive::Plugin
Defined in:
lib/locomotive/plugin/liquid.rb,
lib/locomotive/plugin/liquid/drop_extension.rb,
lib/locomotive/plugin/liquid/context_helpers.rb,
lib/locomotive/plugin/liquid/tag_subclass_methods.rb,
lib/locomotive/plugin/liquid/prefixed_filter_module.rb

Overview

This module adds liquid handling methods to the plugin class.

Defined Under Namespace

Modules: ClassMethods, ContextHelpers, DropExtension, LiquidClassMethods, PrefixedFilterModule, TagSubclassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

Add class methods.

Parameters:

  • base

    the class which includes this module



12
13
14
# File 'lib/locomotive/plugin/liquid.rb', line 12

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#setup_liquid_context(plugin_id, context) ⇒ Object

Setup the liquid context object for rendering plugin liquid code. It will add to the context:

  • the prefixed tags. These will go into the :enabled_plugin_tags register.

  • the drop to the hash in the “plugins” liquid variable

  • the prefixed filters.

Parameters:

  • plugin_id (String)

    the plugin id to use

  • context (Liquid::Context)

    the liquid context object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/locomotive/plugin/liquid.rb', line 125

def setup_liquid_context(plugin_id, context)
  # Add tags
  (context.registers[:enabled_plugin_tags] ||= Set.new).tap do |set|
    set.merge(self.class.prefixed_liquid_tags(plugin_id).values)
  end

  # Add drop with extension
  context['plugins'] ||= {}
  drop = self.to_liquid
  if drop
    drop.extend(Locomotive::Plugin::Liquid::DropExtension)
    drop.set_plugin_id(plugin_id)
    context['plugins'][plugin_id] = drop
  end

  # Add filters
  context.add_filters(self.class.prefixed_liquid_filter_module(plugin_id))
end