Sha256: 9f6286f638c915b778275ba8d1ad6ccc7b7ac09a5c0a112a28034a5a23afe94b

Contents?: true

Size: 839 Bytes

Versions: 2

Compression:

Stored size: 839 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

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.0.10 lib/vedeu/output/directive.rb
vedeu-0.0.9 lib/vedeu/output/directive.rb