class ActiveOutline::LinkReader

Public Class Methods

new(filepath, debug: false, default_url: nil) click to toggle source
# File lib/activeoutline.rb, line 15
def initialize(filepath, debug: false, default_url: nil)

  @filepath, @debug, @default_url = filepath, debug, default_url
  read filepath    
  
end

Public Instance Methods

fetch(uri) click to toggle source
# File lib/activeoutline.rb, line 26
def fetch(uri)

  s, remaining = @links.locate uri
  redirect = s =~ /^\[r\] +/i
  return s if redirect 
  
  contents, _ = RXFHelper.read(s)
  
  return contents
end
ls(path='.') click to toggle source
# File lib/activeoutline.rb, line 22
def ls(path='.')
  @ftx.ls(path).map(&:to_s)
end
read(filepath) click to toggle source
# File lib/activeoutline.rb, line 37
def read(filepath)
  
  s, _ = RXFHelper.read(filepath)      
  puts 's ' + s.inspect if @debug
  
  s2 = if @default_url then
    
    # set a default url for entries which don't have one
    s.lines.map do |x|
      x =~ /:\/\// ? x : x.chomp + ' ' + @default_url \
          + URI.encode(x.strip) + "\n"
    end.join
    
  else
    s
  end
  
  if @debug then
    puts 's2: ' + s2.inspect
    puts 's: ' + s.inspect
  end

  if s2 != s and RXFHelper.writeable?(filepath) then
    RXFHelper.write filepath, s2
  end
  
  @links = PolyrexLinks.new.import(s2)
  @ftx = FileTreeXML.new(s.lines.map {|x| x[/^ *\S+/]}.join("\n"), 
                         debug: @debug)
end
reload() click to toggle source
# File lib/activeoutline.rb, line 68
def reload()
  read @filepath
end