Sha256: e27f43387f345f4cd0dfd74b6c4e2ab820752b7cccac7277ab90125cb0e01993

Contents?: true

Size: 1.74 KB

Versions: 4

Compression:

Stored size: 1.74 KB

Contents

module OpenXml
  module Docx
    module Properties
      class Tab < BaseProperty
        attr_reader :position, :type, :leader

        VALID_TYPES = %i(bar center clear decimal end num start left right)
        VALID_LEADERS = [nil, :dot, :heavy, :hyphen, :middleDot, :none, :underscore]

        def initialize(position, type, leader=nil)
          self.position = position
          self.type = type
          self.leader = leader
        end

        def position=(value)
          raise ArgumentError, invalid_position_message unless valid_position?(value)
          @position = value
        end

        def type=(value)
          raise ArgumentError, invalid_type_message unless valid_type?(value)
          @type = value
        end

        def leader=(value)
          raise ArgumentError, invalid_leader_message unless valid_leader?(value)
          @leader = value
        end

        def to_xml(xml)
          xml["w"].public_send(tag, xml_attributes)
        end

      private

        def xml_attributes
          attrs = { "w:pos" => position,
                    "w:val" => type}
          attrs["w:leader"] = leader if leader
          attrs
        end

        def invalid_position_message
          "Invalid position: must be an integer"
        end

        def valid_position?(value)
          value.is_a?(Integer)
        end

        def invalid_type_message
          "Invalid type: must be one of: #{VALID_TYPES.join(", ")}"
        end

        def valid_type?(value)
          VALID_TYPES.member? value
        end

        def invalid_leader_message
          "Invalid leader: must be one of: #{VALID_LEADERS.join(", ")}"
        end

        def valid_leader?(value)
          VALID_LEADERS.member? value
        end

      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openxml-docx-0.11.5 lib/openxml/docx/properties/tab.rb
openxml-docx-0.11.4 lib/openxml/docx/properties/tab.rb
openxml-docx-0.11.3 lib/openxml/docx/properties/tab.rb
openxml-docx-0.11.2 lib/openxml/docx/properties/tab.rb