Class: Redsync::LocalWiki

Inherits:
Object
  • Object
show all
Defined in:
lib/redsync/local_wiki.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ LocalWiki



4
5
6
7
# File 'lib/redsync/local_wiki.rb', line 4

def initialize(options)
  @data_dir = options[:data_dir]
  @extension = options[:extension]
end

Instance Method Details

#get(name) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/redsync/local_wiki.rb', line 27

def get(name)
  list unless @pages

  return nil if @pages[name].nil?

  unless @pages[name].content
    @pages[name].content = File.read(path_for(name))
  end

  @pages[name]
end

#listObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/redsync/local_wiki.rb', line 10

def list
  unless @pages
    @pages = {}
    Dir["#{@data_dir}/**/*.#{@extension}"].each do |file|
      name = File.basename(file, "." + @extension)
      name = name.encode("UTF-8", "UTF-8-MAC", :invalid => :replace, :undef => :replace) if RUBY_PLATFORM =~ /darwin/
      @pages[name] = WikiPage.new(
        :name => name,
        :mtime => File.mtime(file)
      )
    end
  end

  @pages.values
end

#path_for(name) ⇒ Object



47
48
49
50
# File 'lib/redsync/local_wiki.rb', line 47

def path_for(name)
  name = name.encode("UTF-8-MAC", "UTF-8", :invalid => :replace, :undef => :replace) if RUBY_PLATFORM =~ /darwin/
  File.join(@data_dir, name + "." + @extension)
end

#write(name, content) ⇒ Object



40
41
42
43
44
# File 'lib/redsync/local_wiki.rb', line 40

def write(name, content)
  File.open(path_for(name), "w+:UTF-8") do |f|
    f.write(content)
  end
end