Sha256: fbcfdb4a6b6527aa5ccc15e617330ec926a21db9570e5380e68e7be80c22cf6c

Contents?: true

Size: 1.06 KB

Versions: 7

Compression:

Stored size: 1.06 KB

Contents

module Vedeu
  class InvalidDirective < StandardError; end

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

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

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

    private

    attr_reader :interface, :directives

    def wordwrap
      Wordwrap.this(directives, options)
    end

    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

    def options
      {
        width: interface.geometry.width,
        prune: true
      }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
vedeu-0.0.22 lib/vedeu/output/directive.rb
vedeu-0.0.21 lib/vedeu/output/directive.rb
vedeu-0.0.20 lib/vedeu/output/directive.rb
vedeu-0.0.19 lib/vedeu/output/directive.rb
vedeu-0.0.18 lib/vedeu/output/directive.rb
vedeu-0.0.17 lib/vedeu/output/directive.rb
vedeu-0.0.16 lib/vedeu/output/directive.rb