Sha256: 7ac3ab771a395bd5bf115eaffd680fbe0d9bb27831570775472efbd0df7e35f0

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

require 'glue/flexob'

# WARNING: this is under construction, DON'T use yet.

module MetadataUtils
end

# Include this module to classes to add metadata/annotation
# functionality.

module MetadataMixin
  def self.included(base)
    base.module_eval do
      @metadata = Flexob.new
      @metadata[:self] = Flexob.new
      
      class << self
        def metadata
          @metadata
        end
        
        def selmetadata=(md)
          @metadata = md
        end
      end
    end
    
=begin
    case base
      when Class:
        base.module_eval do
          def self.inherited(child)
            MetadataUtils.enchant(child)
            MetadataUtils.copy(self, child)
            # gmosx: super must stay at the end.
            super
          end
        end      
      when Module:
    end
=end    
  end
end

class Module
  # Annotate (define metadata) for the given symbol/class.
  
  def ann(*args)
    if args.first.is_a? Symbol
      key = args.shift
    else
      key = :self
    end
    unless args.empty?
      self.metadata[key] = Flexob.new(args.first)
    end
  end  
end

# * George Moschovitis <gm@navel.r>

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
glue-0.23.0 lib/glue/metadata.rb