class Locomotive::Steam::Liquid::Drops::Base

Public Class Methods

new(source) click to toggle source
# File lib/locomotive/steam/liquid/drops/base.rb, line 9
def initialize(source)
  @_source = source
end

Public Instance Methods

as_json(options = nil) click to toggle source
# File lib/locomotive/steam/liquid/drops/base.rb, line 17
def as_json(options = nil)
  @_source.as_json(options)
end
id() click to toggle source
# File lib/locomotive/steam/liquid/drops/base.rb, line 13
def id
  (@_source.respond_to?(:id) ? @_source.id : nil) || 'new'
end

Protected Instance Methods

_source() click to toggle source
# File lib/locomotive/steam/liquid/drops/base.rb, line 45
def _source
  @_source
end
liquify(*records, &block) click to toggle source

converts an array of records to an array of liquid drops

# File lib/locomotive/steam/liquid/drops/base.rb, line 24
def liquify(*records, &block)
  i = -1
  records =
    records.inject [] do |all, r|
      i += 1
      attrs = (block && block.arity == 1) ? [r] : [r, i]
      all << (block ? block.call(*attrs) : r.to_liquid).tap do |_r|
        # For unknown reasons, Liquid doesn't always set the context
        #
        # Example:
        #   {{ site.index.children | map: 'title' | join: " - " }}
        #   was not working before
        #
        _r.context = @context if _r.respond_to?(:context=)
      end
      all
    end
  records.compact!
  records
end