Module: Amber::Render::Bracketlink

Defined in:
lib/amber/render/bracketlink.rb

Overview

bracket links are links in the form [[label => target]] or [[page-name]]

Constant Summary collapse

/
  \[\[          # start [[
  ([^\[\]]+)    # $text : one or more characters that are not [ or ] ($1)
  \]\]          # end ]]
/x

Class Method Summary collapse

Class Method Details



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/amber/render/bracketlink.rb', line 16

def self.bracket_link(text, &block)
  text.gsub(BRACKET_LINK_RE) do |m|
    link_text = $~[1].strip
    if link_text =~ /^.+\s*[-=]>\s*.+$/
      # link_text == "from -> to"
      from, to = link_text.split(/\s*[-=]>\s*/)[0..1]
      from = "" unless from.instance_of? String # \ sanity check for
      to   = "" unless from.instance_of? String # / badly formed links
    else
      # link_text == "to" (ie, no link label)
      from = nil
      to = link_text
    end
    yield(from, to)
  end
end