class BBCode::Tag

Attributes

parent[RW]

Public Class Methods

block() click to toggle source
# File lib/bbcode-rails/tag.rb, line 90
def self.block
  @block
end
block_options(*args) click to toggle source
# File lib/bbcode-rails/tag.rb, line 78
def self.block_options *args
  @options = args
end
inherited(subclass) click to toggle source
# File lib/bbcode-rails/tag.rb, line 72
def self.inherited subclass
  # In case we autoreload, remove earlier instances
  BBCode.tags.delete_if {|c| c.to_s == subclass.to_s }
  BBCode.tags[subclass.to_s.downcase] = subclass
end
new(parent) click to toggle source
# File lib/bbcode-rails/tag.rb, line 23
def initialize parent
  @parent = parent
  @content = []
  @argument = ""
end
on_layout(&b) click to toggle source
# File lib/bbcode-rails/tag.rb, line 82
def self.on_layout &b
  @block = b
end
options() click to toggle source
# File lib/bbcode-rails/tag.rb, line 86
def self.options
  @options ||= []
end

Public Instance Methods

<<(c) click to toggle source
# File lib/bbcode-rails/tag.rb, line 45
def << c
  if !has_option :content
    raise BBCode::ParseError, "Tried to assign content to a tag which takes none, #{name}"
  else
    @content << c
  end
end
argument=(arg) click to toggle source
# File lib/bbcode-rails/tag.rb, line 37
def argument= arg
  if !has_option :argument
    raise BBCode::ParseError, "Tried to assign an argument to a tag which takes none, #{name}"
  else
    @argument = arg
  end
end
get_block() click to toggle source
# File lib/bbcode-rails/tag.rb, line 33
def get_block
  self.class.block
end
has_option(opt) click to toggle source
# File lib/bbcode-rails/tag.rb, line 29
def has_option opt
  self.class.options.include?(opt)
end
name() click to toggle source
# File lib/bbcode-rails/tag.rb, line 68
def name
  self.class.to_s.downcase.gsub(/tag$/i,'')
end
to_s() click to toggle source
# File lib/bbcode-rails/tag.rb, line 53
def to_s
  if has_option :content
    result = @content.map(&:to_s).join('')
  end
  if has_option(:content) and has_option(:argument)
    self.instance_exec(@argument, result, &get_block)
  elsif has_option :content
    self.instance_exec(result, &get_block)
  elsif has_option :argument
    self.instance_exec(@argument, &get_block)
  else
    self.instance_exec(&get_block)
  end
end