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
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
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
Initialize notes. Always receives a controller.
# File lib/sinatra-footnotes/notes/abstract_note.rb, line 51 def initialize(controller = nil) end
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
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
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
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
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
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
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
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
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
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
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 HTML special characters.
# File lib/sinatra-footnotes/notes/abstract_note.rb, line 136 def escape(text) text.gsub('&', '&').gsub('<', '<').gsub('>', '>') end
# 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
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, 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
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