Sha256: 9ced6ae09912d025c6f474f23b479b9fd0efa29c1702ee5c77f9138318472982

Contents?: true

Size: 1.55 KB

Versions: 8

Compression:

Stored size: 1.55 KB

Contents

# -*- coding: utf-8 -*-


require 'xot/hookable'
require 'xot/universal_accessor'
require 'reflex/point'
require 'reflex/bounds'


module Reflex


  module Hookable

    include Xot::Hookable

    def hook (name, &block)
      super "on_#{name}".intern, &block
    end

  end# Hookable


  module HasFrame

    def move_to (*args)
      self.frame = frame.move_to *args
      self
    end

    def move_by (*args)
      self.frame = frame.move_by *args
      self
    end

    def resize_to (*args)
      self.frame = frame.resize_to *args
      self
    end

    def resize_by (*args)
      self.frame = frame.resize_by *args
      self
    end

    def inset_by (*args)
      self.frame = frame.inset_by *args
      self
    end

    %w[
      x y z w h d width height depth
      left top back right bottom front
      left_top right_top left_bottom right_bottom
      lt rt lb rb
      position pos size center
    ].each do |name|
      class_eval <<-END
        def #{name} ()
          frame.#{name}
        end
        def #{name}= (*args)
          self.frame = frame.tap {|b| b.send :#{name}=, *args}
          #{name}
        end
      END

      universal_accessor name
    end

  end# HasFrame


  module HasTags

    def tag= (*tags)
      clear_tags
      tag *tags.flatten
    end

    alias tags= tag=

    def tag (*tags)
      tags.each {|tag| add_tag tag}
    end

    def untag (*tags)
      tags.each {|tag| remove_tag tag}
    end

    def tags ()
      to_enum :each_tag
    end

    def clear_tags ()
      untag *tags.to_a
    end

  end# HasTags


end# Reflex

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
reflexion-0.1.21 lib/reflex/helper.rb
reflexion-0.1.20 lib/reflex/helper.rb
reflexion-0.1.19 lib/reflex/helper.rb
reflexion-0.1.17 lib/reflex/helper.rb
reflexion-0.1.16 lib/reflex/helper.rb
reflexion-0.1.15 lib/reflex/helper.rb
reflexion-0.1.14 lib/reflex/helper.rb
reflexion-0.1.13 lib/reflex/helper.rb