Class: WikiCloth::WikiCloth

Inherits:
Object show all
Defined in:
lib/wikicloth.rb

Instance Method Summary collapse

Constructor Details

#initialize(opt = {}) ⇒ WikiCloth

Returns a new instance of WikiCloth.



17
18
19
20
# File 'lib/wikicloth.rb', line 17

def initialize(opt={})
  self.options[:link_handler] = opt[:link_handler] unless opt[:link_handler].nil?
  self.load(opt[:data],opt[:params]) unless opt[:data].nil?
end

Instance Method Details



72
73
74
# File 'lib/wikicloth.rb', line 72

def link_handler
  self.options[:link_handler] ||= WikiLinkHandler.new
end

#load(data, p = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/wikicloth.rb', line 22

def load(data,p={})
  depth = 1
  count = 0
  root = [self.sections]

  # parse wiki document into sections
  data.each_line do |line|
    if line =~ /^([=]{1,6})\s*(.*?)\s*(\1)/
      root << root.last[-1].children if $1.length > depth
      root.pop if $1.length < depth
      depth = $1.length
      root.last << Section.new(line, get_id_for($2.gsub(/\s+/,'_')))
      count += 1
    else
      root.last[-1] << line
    end
  end

  # if we find template variables assume document is
  # a template
  self.sections.first.template = true if data =~ /\{\{\{\s*([A-Za-z0-9]+)\s*\}\}\}/

  # If there are more than four sections enable automatic
  # table of contents
  self.sections.first.auto_toc = true unless count < 4 || data =~ /__(NO|)TOC__/

  self.params = p
end

#paramsObject



76
77
78
# File 'lib/wikicloth.rb', line 76

def params
  @page_params ||= {}
end

#render(opt = {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/wikicloth.rb', line 55

def render(opt={})
  noedit = false
  self.params.merge!({ 'WIKI_VERSION' => ::WikiCloth::VERSION, 'RUBY_VERSION' => RUBY_VERSION })
  self.options = { :output => :html, :link_handler => self.link_handler, :params => self.params, :sections => self.sections }.merge(opt)
  self.options[:link_handler].params = options[:params]
  data = self.sections.collect { |s| s.render(self.options) }.join
  data.gsub!(/<!--(.|\s)*?-->/,"")
  data << "\n" if data.last(1) != "\n"
  buffer = WikiBuffer.new("",options)
  data.each_char { |c| buffer.add_char(c) }
  buffer.to_s
end

#sectionsObject



51
52
53
# File 'lib/wikicloth.rb', line 51

def sections
  @sections ||= [Section.new]
end

#to_html(opt = {}) ⇒ Object



68
69
70
# File 'lib/wikicloth.rb', line 68

def to_html(opt={})
  self.render(opt)
end