class RD::RBLFile

Constants

SUFFIX

Attributes

filename[R]
labels[R]

Public Class Methods

basename(path) click to toggle source
# File lib/rd/rbl-file.rb, line 26
def RBLFile.basename(path)
  if /\.(rd|rb)$/ === path
    $`
  else
    path
  end
end
create_rbl_file(filename, resolver) click to toggle source
# File lib/rd/rbl-file.rb, line 16
def RBLFile.create_rbl_file(filename, resolver)
  file = File.open(RBLFile.rbl_file_path(filename), "w")
  file.print(RBLFile.labels_to_string(resolver))
  file.close
end
labels_to_string(resolver) click to toggle source
# File lib/rd/rbl-file.rb, line 34
def RBLFile.labels_to_string(resolver)
  (resolver.collect do |i|
     i.to_label + " => " + resolver.get_anchor(i)
   end).join("\n")
end
new(filename) click to toggle source
# File lib/rd/rbl-file.rb, line 11
def initialize(filename)
  @filename = RBLFile.basename(filename)
  @labels = []
end
rbl_file_path(filename) click to toggle source
# File lib/rd/rbl-file.rb, line 22
def RBLFile.rbl_file_path(filename)
  basename(filename) + "." + SUFFIX
end

Public Instance Methods

load_rbl_file(search_paths) click to toggle source
# File lib/rd/rbl-file.rb, line 40
def load_rbl_file(search_paths)
  f = search_file(@filename, search_paths, [SUFFIX])
  raise "RBLFile not found." unless f
  src = File.readlines(f).join("")
  @labels = string_to_labels(src)
end
parse_line(src) click to toggle source
# File lib/rd/rbl-file.rb, line 55
def parse_line(src)
  col = src.rindex("=>")
  raise "RBL file parse error." unless col
  label = src[0 .. col - 1].strip
  anchor = src[col + 2 .. -1].strip
  [label, anchor]
end
refer(label) click to toggle source
# File lib/rd/rbl-file.rb, line 63
def refer(label)
  label = @labels.find{|i| i[0] == label}
  return nil unless label
  label[1]
end
string_to_labels(src) click to toggle source
# File lib/rd/rbl-file.rb, line 47
def string_to_labels(src)
  labels = []
  src.each_line do |i|
    labels << parse_line(i)
  end
  labels
end