Sha256: 392e5d6de0d4b97d7a0590c1d2e0635585dbb99b189596b70ccfb4139230211e

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

# encoding: utf-8
module Infoboxer
  module Tree
    # Represents image (or other media file).
    #
    # See [Wikipedia Tutorial](https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax)
    # for explanation of attributes.
    class Image < Node
      def initialize(path, params = {})
        @caption = params.delete(:caption)
        super({path: path}.merge(params))
      end

      # Image caption. Can have (sometimes many) other nodes inside.
      #
      # @return [Nodes]
      attr_reader :caption

      # @!attribute [r] path 
      # @!attribute [r] type
      # @!attribute [r] location 
      # @!attribute [r] alignment
      # @!attribute [r] link
      # @!attribute [r] alt 

      def_readers :path, :type,
        :location, :alignment, :link,
        :alt

      def border?
        !params[:border].to_s.empty?
      end

      def width
        params[:width].to_i
      end

      def height
        params[:height].to_i
      end

      def to_tree(level = 0)
        super(level) +
          if caption && !caption.empty?
            indent(level+1) + "caption:\n" +
              caption.children.map(&call(to_tree: level+2)).join
          else
            ''
          end
      end

      private

      def _eq(other)
        path == other.path
      end
    end

    # Represents image caption.
    class ImageCaption < Compound
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
infoboxer-0.2.7 lib/infoboxer/tree/image.rb
infoboxer-0.2.6 lib/infoboxer/tree/image.rb
infoboxer-0.2.5 lib/infoboxer/tree/image.rb
infoboxer-0.2.4 lib/infoboxer/tree/image.rb
infoboxer-0.2.3 lib/infoboxer/tree/image.rb