Sha256: ef1f8240e2b5c6719a9db7e2d0b8b861a3aab6e18e4a47f281d73da167dbcd32

Contents?: true

Size: 1.77 KB

Versions: 10

Compression:

Stored size: 1.77 KB

Contents

module WikiCloth

class WikiBuffer::Link < WikiBuffer

  def initialize(data="",options={})
    super(data,options)
    @in_quotes = false
  end

  def internal_link
    @internal_link ||= false
  end

  def to_s
    link_handler = @options[:link_handler]
    unless self.internal_link
      return link_handler.external_link("#{params[0]}".strip, "#{params[1]}".strip)
    else
      case
      when params[0] =~ /^:(.*)/
        return link_handler.link_for(params[0],params[1])
      when params[0] =~ /^\s*([a-zA-Z0-9-]+)\s*:(.*)$/
        return link_handler.link_for_resource($1,$2,params[1..-1])
      else
        return link_handler.link_for(params[0],params[1])
      end
    end
  end

  protected
  def internal_link=(val)
    @internal_link = (val == true ? true : false)
  end

  def new_char()
    case
    # check if this link is internal or external
    when previous_char.blank? && current_char == '['
      self.internal_link = true

    # Marks the beginning of another paramater for
    # the current object
    when current_char == '|' && self.internal_link == true && @in_quotes == false
      self.current_param = self.data
      self.data = ""
      self.params << ""

    # URL label
    when current_char == ' ' && self.internal_link == false && params[1].nil? && !self.data.blank?
      self.current_param = self.data
      self.data = ""
      self.params << ""

    # end of link
    when current_char == ']' && ((previous_char == ']' && self.internal_link == true) || self.internal_link == false)  && @in_quotes == false
      self.data.chop! if self.internal_link == true
      self.current_param = self.data
      self.data = ""
      return false

    else
      self.data += current_char unless current_char == ' ' && self.data.blank?
    end

    return true
  end

end

end

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
kron4eg-wikicloth-0.1.3 lib/wiki_buffer/link.rb
wikicloth-0.6.1 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.6.0 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.5.0 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.2.0 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.1.6 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.1.5 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.1.4 lib/wikicloth/wiki_buffer/link.rb
wikicloth-0.1.3 lib/wiki_buffer/link.rb
sinatra-s3-0.98 examples/wikicloth/lib/wiki_buffer/link.rb