class Qwik::Plugin

Public Class Methods

encode(plugin) click to toggle source
# File vendor/qwik/lib/qwik/parse-plugin.rb, line 75
    def self.encode(plugin)
      method = plugin[1][:method]
      param = plugin[1][:param]
      content = plugin[2]
      str = "{{#{method}"
      str << "(#{param})" if param && ! param.empty?
      if content
        content.chomp!
        str << "
#{content}
"
      end
      str << "}}
"
      return str
    end
join(paras) click to toggle source
# File vendor/qwik/lib/qwik/parse-plugin.rb, line 92
def self.join(paras)
  str = paras.join
  return str
end
rewrite(paras, pluginname, num) { |plugin| ... } click to toggle source
# File vendor/qwik/lib/qwik/parse-plugin.rb, line 50
def self.rewrite(paras, pluginname, num)
  cur_num = 1
  nparas = []
  paras.each {|para|
    if /\A\{\{(\w+)/ =~ para && (name = $1.intern) == pluginname
      if cur_num == num
        tokens = TextTokenizer.tokenize(para)
        tree = TextParser.make_tree(tokens)
        raise if 1 < tree.length
        plugin = tree[0]
        raise if plugin[0] != :plugin
        new_plugin = yield(plugin)
        new_para = encode(new_plugin)
        nparas << new_para
      else
        nparas << para
      end
      cur_num += 1
    else
      nparas << para
    end
  }
  return nparas
end
split(str) click to toggle source

Split a string into paragraphs.

# File vendor/qwik/lib/qwik/parse-plugin.rb, line 11
def self.split(str)
  paras = []

  cur_str = nil
  in_plugin = false
  str.each_line {|line|
    if ! in_plugin
      if /\A\{\{/ =~ line
        paras << cur_str if cur_str
        cur_str = line
        in_plugin = true
        if /\}\}$/ =~ line         # Use $ for new line.
          paras << cur_str
          cur_str = nil
          in_plugin = false
        end
      else
        cur_str = '' if cur_str.nil?
        cur_str += line
      end
    else
      if /\A\}\}$/ =~ line
        cur_str += line
        paras << cur_str
        cur_str = nil
        in_plugin = nil
      else
        cur_str += line
      end
    end
  }

  if cur_str
    paras << cur_str
  end

  return paras
end