Sha256: 8f6309cd8f636d5168ca93f1d91864bb7c73ec6921c024dcb33abfa1a860c809

Contents?: true

Size: 942 Bytes

Versions: 1

Compression:

Stored size: 942 Bytes

Contents

require 'vedeu/support/geometry'
require 'vedeu/support/interface_store'

module Vedeu
  class InterfaceTemplate
    def self.save(name, &block)
      new(name).save(&block)
    end

    def initialize(name)
      @name = name.to_s
    end

    def save(&block)
      self.instance_eval(&block)

      InterfaceStore.create(attributes)
    end

    private

    attr_reader :name

    def overrides
      @overrides = if user_attributes[:centred] == true
        { x: geometry.left, y: geometry.top }
      else
        {}
      end
    end

    def geometry
      @_geometry ||= Geometry.new({
        height: user_attributes[:height],
        width:  user_attributes[:width],
      })
    end

    def attributes
      user_attributes.merge!(overrides)
    end

    def user_attributes
      @attributes ||= { name: name }
    end

    def method_missing(method_name, arg, &block)
      user_attributes[method_name] = arg
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.1.3 lib/vedeu/support/interface_template.rb