class Footnotes::Notes::AbstractNote

This is the abstract class for notes. You can overwrite all instance public methods to create your notes.

Public Class Methods

close!(controller = nil) click to toggle source

Action to be called after the Note was used. This is applied as an after_filter.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 44
def close!(controller = nil)
end
included?() click to toggle source

Return true if Note is included in notes array.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 31
def included?
  Footnotes::Filter.notes.include?(self.to_sym)
end
new(controller = nil) click to toggle source

Initialize notes. Always receives a controller.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 51
def initialize(controller = nil)
end
start!(controller = nil) click to toggle source

Action to be called to start the Note. This is applied as a before_filter.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 38
def start!(controller = nil)
end
title() click to toggle source

Returns the title that represents this note. It’s the name of the class without Note.

For example, for ControllerNote it will return Controller.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 25
def title
  @note_title ||= self.name.match(/^Footnotes::Notes::(\w+)Note$/)[1]
end
to_sym() click to toggle source

Returns the symbol that represents this note. It’s the name of the class, underscored and without _note.

For example, for ControllerNote it will return :controller.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 16
def to_sym
  @note_sym ||= self.title.underscore.to_sym
end

Public Instance Methods

has_fieldset?() click to toggle source

Specifies when should create a fieldset for it, considering it’s valid.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 120
def has_fieldset?
  self.respond_to?(:content)
end
javascript() click to toggle source

Insert here any additional javascript. This is directly inserted into a <script> tag.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 108
def javascript
end
legend() click to toggle source

If has_fieldset? is true, create a fieldset with the value returned as legend. By default, returns the title of the class (defined above).

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 77
def legend
  self.class.title
end
onclick() click to toggle source

Set onclick field for Footnotes links. If it’s nil, Footnotes will make it open the fieldset.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 96
def onclick
end
row() click to toggle source

Specifies in which row should appear the title. The default is :show.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 63
def row
  :show
end
stylesheet() click to toggle source

Insert here any additional stylesheet. This is directly inserted into a <style> tag.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 102
def stylesheet
end
title() click to toggle source

Returns the title to be used as link. The default is the note title.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 70
def title
  self.class.title
end
to_sym() click to toggle source

Returns the symbol that represents this note.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 56
def to_sym
  self.class.to_sym
end
valid?() click to toggle source

Specifies when should create a note for it. By default, it’s valid.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 114
def valid?
  true
end

Protected Instance Methods

escape(text) click to toggle source

Escape HTML special characters.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 136
def escape(text)
  text.gsub('&', '&amp;').gsub('<', '&lt;').gsub('>', '&gt;')
end
hash_to_xml_attributes(hash) click to toggle source
# File lib/sinatra-footnotes/notes/abstract_note.rb, line 170
def hash_to_xml_attributes(hash)
  newstring = ""
  hash.each do |key, value|
    newstring << "#{key.to_s}=\"#{value.gsub('"','\"')}\" "
  end 
  return newstring
end
mount_table(array, options = {}) click to toggle source

Gets a bidimensional array and create a table. The first array is used as label.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 143
        def mount_table(array, options = {})
          header = array.shift
          return '' if array.empty?

          header = header.collect{|i| escape(i.to_s.humanize) }
#          array = array.collect { |a| a.collect { |b| c = b.to_s; escape(c) unless c == ""}}
          rows = array.collect{|i| "<tr><td>#{i.join('</td><td>')}</td></tr>" }

          <<-TABLE
          <table #{hash_to_xml_attributes(options)}>
            <thead><tr><th>#{header.join('</th><th>')}</th></tr></thead>
            <tbody>#{rows.join}</tbody>
          </table>
          TABLE
        end
mount_table_for_hash(hash, options={}) click to toggle source

Mount table for hash, using name and value and adding a name_value class to the generated table.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 162
def mount_table_for_hash(hash, options={})
  rows = []
  hash.each do |key, value|
    rows << [ escape(key.inspect), escape(value.inspect) ]
  end
  mount_table(rows.unshift(['Name', 'Value']), {:class => 'name_value'}.merge(options))
end
prefix?() click to toggle source

Return if Footnotes::Filter.prefix exists or not. Some notes only work with prefix set.

# File lib/sinatra-footnotes/notes/abstract_note.rb, line 130
def prefix?
  !Footnotes::Filter.prefix.blank?
end