Sha256: 8406014e2c32a351ebcc535a42c1396937dd12d319c5882c5514b682d321fb7f

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

# coding: utf-8

module Thinreports
  module Core::Shape

    class TextBlock::Internal < Basic::BlockInternal
      format_delegators :multiple?

      def initialize(*args)
        super(*args)

        @reference = nil
        @formatter = nil

        @style = Style::Text.new(format)
        @style.accessible_styles.delete(:valign) unless multiple?
      end

      def style
        @style
      end

      def read_value
        if format.has_reference?
          @reference ||= parent.item(format.ref_id)
          @reference.value
        else
          super
        end
      end

      def write_value(val)
        if format.has_reference?
          warn 'The set value was not saved, ' +
               "Because '#{format.id}' has reference to '#{format.ref_id}'."
        else
          super
        end
      end

      def real_value
        if format_enabled?
          formatter.apply(read_value)
        else
          super
        end
      end

      def format_enabled(enabled)
        states[:format_enabled] = enabled
      end

      def format_enabled?
        return false if multiple?

        if states.key?(:format_enabled)
          states[:format_enabled]
        else
          !blank_value?(format.format_base) || format.has_format?
        end
      end

      def type_of?(type_name)
        type_name == :tblock || super
      end

    private

      def formatter
        @formatter ||= TextBlock::Formatter.setup(format)
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
thinreports-0.8.2 lib/thinreports/core/shape/text_block/internal.rb
thinreports-0.8.1 lib/thinreports/core/shape/text_block/internal.rb
thinreports-0.8.0 lib/thinreports/core/shape/text_block/internal.rb