Parent

Files

POM::Metafile

Metafile serves as a base class for POM's YAML-formatted metadata files.

Attributes

file[R]

Metadata filename.

root[R]

Project’s root pathname.

Public Class Methods

alias_accessor(name, original) click to toggle source

Alias an accessor.

# File lib/pom/metafile.rb, line 54
def self.alias_accessor(name, original)
  alias_method name, original
  alias_method "#{name}=", "#{original}="
end
attr_accessor(name, &default) click to toggle source

Attributes are stored in a hash instead of instance variables.

# File lib/pom/metafile.rb, line 45
def self.attr_accessor(name, &default)
  module_eval %{
    def #{name}; self['#{name}'] ; end
    def #{name}=(val); self['#{name}'] = val; end
  }
  defaults[name] = default if default
end
attr_reader(name, &default) click to toggle source

Attributes are stored in a hash instead of instance variables.

# File lib/pom/metafile.rb, line 37
def self.attr_reader(name, &default)
  module_eval %{
    def #{name}; self['#{name}'] ; end
  }
  defaults[name] = default if default
end
default_filename() click to toggle source
# File lib/pom/metafile.rb, line 20
def self.default_filename
  name.split('::').last.upcase + '.yml'
end
defaults() click to toggle source
# File lib/pom/metafile.rb, line 32
def self.defaults
  @defaults ||= {}
end
filename() click to toggle source
# File lib/pom/metafile.rb, line 14
def self.filename
  basename = name.split('::').last
  [basename.upcase, '.'+basename.downcase]
end
find(root) click to toggle source
# File lib/pom/metafile.rb, line 25
def self.find(root)
  root = Pathname.new(root)
  pattern = '{,.}{' + filename.join(',') + '}{.yml,.yaml,}'
  root.glob(pattern, :casefold).first
end
new(root, opts={}) click to toggle source
# File lib/pom/metafile.rb, line 69
def initialize(root, opts={})
  @root = Pathname.new(root)
  @file = opts.delete(:file) || self.class.find(root)
  @data = opts.inject({}){|h,(k,v)| h[k.to_s] = v; h}

  read!

  initialize_defaults
end

Public Instance Methods

[](name) click to toggle source
# File lib/pom/metafile.rb, line 101
def [](name)
  @data[name.to_s]
end
[]=(name, value) click to toggle source
# File lib/pom/metafile.rb, line 106
def []=(name, value)
  @data[name.to_s] = value
end
backup!() click to toggle source
# File lib/pom/metafile.rb, line 157
def backup!
  if @file
    dir = @root + BACKUP_DIRECTORY
    FileUtils.mkdir(dir.dirname) unless dir.dirname.directory?
    FileUtils.mkdir(dir) unless dir.directory?
    save!(dir + self.class.filename.first)
  end
end
each(&block) click to toggle source
# File lib/pom/metafile.rb, line 133
def each(&block)
  @data.each(&block)
end
key?(name) click to toggle source
# File lib/pom/metafile.rb, line 111
def key?(name)
  @data.key?(name.to_s)
end
merge!(hash) click to toggle source
# File lib/pom/metafile.rb, line 116
def merge!(hash)
  hash.each do |k,v|
    case v
    when Proc
      __send__("#{k}=", instance_eval(&v))
    else
      __send__("#{k}=", v)
    end
  end
end
read!() click to toggle source
# File lib/pom/metafile.rb, line 138
def read!
  if file && file.exist?
    data = YAML.load(File.new(file))
    data.each do |k,v|
      __send__("#{k}=", v)
    end
  end
end
save!(file=nil) click to toggle source
# File lib/pom/metafile.rb, line 148
def save!(file=nil)
  file = file || @file || self.class.default_filename
  file = @root + file if String === file
  File.open(file, 'w') do |f|
    f << to_h.to_yaml
  end
end
to_h() click to toggle source

Convert to hash.

# File lib/pom/metafile.rb, line 128
def to_h
  @data.dup
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.