Sha256: 7fd1a91075e91cae06ce8166b679e6d4ea93c2bb3d060103cfc8292310923fd3

Contents?: true

Size: 845 Bytes

Versions: 5

Compression:

Stored size: 845 Bytes

Contents

module Vedeu
  class InvalidDirective < StandardError; end

  class Directive
    class << self
      def enact(directives = {})
        new(directives).enact
      end
    end

    def initialize(directives = {})
      @directives = directives || {}
    end

    def enact
      return directives if string?
      [set_position, set_colour, set_style].join
    end

    private

    attr_reader :directives

    def string?
      directives.is_a?(String)
    end

    def set_position
      Position.set(*position)
    end

    def set_colour
      Colour.set(colour)
    end

    def set_style
      Array(style).map { |s| Style.set(s) }.join
    end

    def position
      directives.fetch(:position, [])
    end

    def colour
      directives.fetch(:colour, [])
    end

    def style
      directives.fetch(:style, [])
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vedeu-0.0.15 lib/vedeu/output/directive.rb
vedeu-0.0.14 lib/vedeu/output/directive.rb
vedeu-0.0.13 lib/vedeu/output/directive.rb
vedeu-0.0.12 lib/vedeu/output/directive.rb
vedeu-0.0.11 lib/vedeu/output/directive.rb