Sha256: b2d3282758a1479a472920567fbed19865cd571462b7a363c084c7862e9904b1

Contents?: true

Size: 1.44 KB

Versions: 6

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Vedeu

  module Presentation

    # Provides style related presentation behaviour.
    #
    # @api private
    #
    module Styles

      include Vedeu::Common
      include Vedeu::Presentation::Parent

      # When the style for the model exists, return it, otherwise
      # returns the parent style, or an empty
      # {Vedeu::Presentation::Style}.
      #
      # @return [Vedeu::Presentation::Style]
      def style
        @_style ||= if style?
                      Vedeu::Presentation::Style.coerce(@style)

                    elsif parent? && present?(parent.style)
                      Vedeu::Presentation::Style.coerce(parent.style)

                    else
                      Vedeu::Presentation::Style.new

                    end
      end

      # Allows the setting of the style by coercing the given value
      # into a {Vedeu::Presentation::Style}.
      #
      # @return [Vedeu::Presentation::Style]
      def style=(value)
        @_style = @style = Vedeu::Presentation::Style.coerce(value)
      end

      # @return [Boolean]
      def style?
        present?(@style)
      end

      private

      # Renders the style attributes of the receiver and yields (to
      # then render the next model, or finally, the content).
      #
      # @macro param_block
      # @return [String]
      def render_style(&block)
        "#{style}#{yield}"
      end

    end # Style

  end # Presentation

end # Vedeu

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vedeu-0.8.32 lib/vedeu/presentation/styles.rb
vedeu-0.8.31 lib/vedeu/presentation/styles.rb
vedeu-0.8.30 lib/vedeu/presentation/styles.rb
vedeu-0.8.29 lib/vedeu/presentation/styles.rb
vedeu-0.8.28 lib/vedeu/presentation/styles.rb
vedeu-0.8.27 lib/vedeu/presentation/styles.rb