Sha256: 1e6d2ddefbefb280c11767984f2ac84451e256fda4f0b2c319c38ee96110a0bf

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

module Infoboxer
  module Templates
    class Base < Tree::Template
      include Tree

      class << self
        attr_accessor :template_name, :template_options

        def inspect
          template_name ? "Infoboxer::Templates::#{clean_name}" : super
        end

        def clean_name
          template_name ? "Template[#{template_name}]" : 'Template'
        end
      end

      def ==(other)
        other.is_a?(Tree::Template) && _eq(other)
      end

      protected

      def clean_class
        if self.class.template_name == name
          self.class.clean_name
        else
          super
        end
      end
    end

    # Renders all of its unnamed variables as space-separated text
    # Also allows in-template navigation.
    #
    # Used for {Set} definitions.
    class Show < Base
      alias_method :children, :unnamed_variables

      protected

      def children_separator
        ' '
      end
    end

    # Replaces template with replacement, while rendering.
    #
    # Used for {Set} definitions.
    class Replace < Base
      def replace
        fail(NotImplementedError, 'Descendants should define :replace')
      end

      def text
        replace
      end
    end

    # Replaces template with its name, while rendering.
    #
    # Used for {Set} definitions.
    class Literal < Base
      alias_method :text, :name
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
infoboxer-0.2.8 lib/infoboxer/templates/base.rb