class Akabei::PackageEntry

Constants

ARRAY_ATTRIBUTES
ARRAY_DEPENDS_ATTRIBUTES
ARRAY_DESC_ATTRIBUTES
ARRAY_FILES_ATTRIBUTES
DESC_ATTRIBUTES

Public Class Methods

new() click to toggle source
# File lib/akabei/package_entry.rb, line 41
def initialize
  ARRAY_ATTRIBUTES.each do |key|
    instance_variable_set("@#{key}", [])
  end
end

Public Instance Methods

==(other) click to toggle source
# File lib/akabei/package_entry.rb, line 62
def ==(other)
  (ARRAY_ATTRIBUTES + DESC_ATTRIBUTES).all? do |attr|
    public_send(attr) == other.public_send(attr)
  end
end
add(key, val) click to toggle source
# File lib/akabei/package_entry.rb, line 47
def add(key, val)
  ivar = "@#{key}".intern
  if ARRAY_ATTRIBUTES.include?(key)
    instance_variable_get(ivar) << val
  elsif DESC_ATTRIBUTES.include?(key)
    if v = instance_variable_get(ivar)
      raise Error.new("Multiple entry found: #{v} and #{val}")
    else
      instance_variable_set(ivar, val)
    end
  else
    raise Error.new("Unknown entry key: #{key}")
  end
end
db_name() click to toggle source
# File lib/akabei/package_entry.rb, line 68
def db_name
  "#{name}-#{version}"
end
write_array(io, attr) click to toggle source
# File lib/akabei/package_entry.rb, line 94
def write_array(io, attr)
  arr = instance_variable_get("@#{attr}")
  unless arr.empty?
    write_entry(io, attr, arr)
  end
end
write_depends(io) click to toggle source
# File lib/akabei/package_entry.rb, line 82
def write_depends(io)
  ARRAY_DEPENDS_ATTRIBUTES.each do |attr|
    write_array(io, attr)
  end
end
write_desc(io) click to toggle source
# File lib/akabei/package_entry.rb, line 72
def write_desc(io)
  ARRAY_DESC_ATTRIBUTES.each do |attr|
    write_array(io, attr)
  end

  DESC_ATTRIBUTES.each do |attr|
    write_string(io, attr)
  end
end
write_entry(io, attr, val) click to toggle source
# File lib/akabei/package_entry.rb, line 107
def write_entry(io, attr, val)
  io.puts "%#{attr.upcase}%"
  io.puts val
  io.puts
  true
end
write_files(io) click to toggle source
# File lib/akabei/package_entry.rb, line 88
def write_files(io)
  unless write_array(io, 'files')
    warn 'WARNING: files attribute is empty.'
  end
end
write_string(io, attr) click to toggle source
# File lib/akabei/package_entry.rb, line 101
def write_string(io, attr)
  if v = instance_variable_get("@#{attr}")
    write_entry(io, attr, v)
  end
end