Sha256: db360de99bf5a95fab198b3432c4e7de3a3f3f7be1eabe1431cb9ea66623ef5d

Contents?: true

Size: 1.47 KB

Versions: 35

Compression:

Stored size: 1.47 KB

Contents

# Require Gem
require 'liquid'

module Middleman
  module Renderers
    # Liquid Renderer
    class Liquid < Middleman::Extension
      # After config, setup liquid partial paths
      def after_configuration
        ::Liquid::Template.file_system = self
      end

      # Called by Liquid to retrieve a template file
      def read_template_file(template_path, _)
        file = app.files.find(:source, "_#{template_path}.liquid")
        raise ::Liquid::FileSystemError, "No such template '#{template_path}'" unless file
        file.read
      end

      # @return Array<Middleman::Sitemap::Resource>
      Contract ResourceList => ResourceList
      def manipulate_resource_list(resources)
        return resources unless app.extensions[:data]

        resources.each do |resource|
          next if resource.file_descriptor.nil?
          next unless resource.file_descriptor[:full_path].to_s =~ %r{\.liquid$}

          # Convert data object into a hash for liquid
          resource.add_metadata locals: {
            data: stringify_recursive(app.extensions[:data].data_store.to_h)
          }
        end
      end

      def stringify_recursive(hash)
        {}.tap do |h|
          hash.each { |key, value| h[key.to_s] = map_value(value) }
        end
      end

      def map_value(thing)
        case thing
        when Hash
          stringify_recursive(thing)
        when Array
          thing.map { |v| map_value(v) }
        else
          thing
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 3 rubygems

Version Path
middleman-core-4.5.1 lib/middleman-core/renderers/liquid.rb
middleman-core-4.5.0 lib/middleman-core/renderers/liquid.rb
middleman-core-4.4.3 lib/middleman-core/renderers/liquid.rb
middleman-core-4.4.2 lib/middleman-core/renderers/liquid.rb
middleman-core-4.4.0 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.11 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.10 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.8 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.7 lib/middleman-core/renderers/liquid.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.3.3/lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.6 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.5 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.4 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.3 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.2 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.1 lib/middleman-core/renderers/liquid.rb
middleman-core-4.3.0 lib/middleman-core/renderers/liquid.rb
middleman-core-with-external-sources-watch-fix-4.1.10 lib/middleman-core/renderers/liquid.rb
middleman-core-with-external-sources-watch-fix-4.1.0 lib/middleman-core/renderers/liquid.rb
middleman-core-4.2.1 lib/middleman-core/renderers/liquid.rb