Sha256: 7ed9af5f03fc7b6654d29471c870a329afe9c64ab1d144fb82dee3d410815230

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module Munge
  module Core
    class Transform
      def initialize(source_path,
                     layouts_path,
                     global_data,
                     source)
        @scope_factory = Core::TransformScopeFactory.new(
          source_path,
          layouts_path,
          global_data,
          source,
          Munge::Helper
        )
      end

      def call(item)
        item.transforms
          .map { |name, args| [resolve_transformer(name), args] }
          .inject(item.content) do |content, params|
            transformer, args = params

            t = transformer.new(@scope_factory)

            t.call(item, content, *args)
          end
      end

      def resolve_transformer(identifier)
        resolver = proc do |name|
          if Munge::Transformer.constants.include?(name)
            return Munge::Transformer.const_get(name)
          end
        end

        resolver.call(identifier.to_sym)

        resolver.call(underscore_to_camel(identifier.to_s).to_sym)
      end

      private

      def underscore_to_camel(string)
        string
          .split("_")
          .map(&:capitalize)
          .join("")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
munge-0.2.0 lib/munge/core/transform.rb