Class: Footnotes::Filter
- Inherits:
-
Object
- Object
- Footnotes::Filter
- Defined in:
- lib/rails-footnotes/footnotes.rb
Constant Summary collapse
- @@no_style =
false
- @@multiple_notes =
false
- @@klasses =
[]
- @@prefix =
Default link prefix is textmate
'txmt://open?url=file://%s&line=%d&column=%d'
- @@notes =
Edit notes
[ :controller, :view, :layout, :stylesheets, :javascripts ]
Class Method Summary collapse
-
.after(controller) ⇒ Object
Method that calls Footnotes to attach its contents.
-
.before(controller) ⇒ Object
Method called to start the notes It’s a before filter prepend in the controller.
-
.each_with_rescue(notes) ⇒ Object
Process notes, discarding only the note if any problem occurs.
-
.log_error(title, exception) ⇒ Object
Logs the error using specified title and format.
-
.prefix(*args) ⇒ Object
If none argument is sent, simply return the prefix.
-
.start!(controller) ⇒ Object
Calls the class method start! in each note Sometimes notes need to set variables or clean the environment to work properly This method allows this kind of setup.
Instance Method Summary collapse
- #add_footnotes! ⇒ Object
-
#close!(controller) ⇒ Object
Calls the class method close! in each note Sometimes notes need to finish their work even after being read This method allows this kind of work.
-
#initialize(controller) ⇒ Filter
constructor
A new instance of Filter.
Constructor Details
#initialize(controller) ⇒ Filter
Returns a new instance of Filter.
95 96 97 98 99 100 |
# File 'lib/rails-footnotes/footnotes.rb', line 95 def initialize(controller) @controller = controller @template = controller.instance_variable_get(:@template) @body = controller.response.body @notes = [] end |
Class Method Details
.after(controller) ⇒ Object
Method that calls Footnotes to attach its contents
36 37 38 39 40 |
# File 'lib/rails-footnotes/footnotes.rb', line 36 def after(controller) filter = Footnotes::Filter.new(controller) filter.add_footnotes! filter.close!(controller) end |
.before(controller) ⇒ Object
Method called to start the notes It’s a before filter prepend in the controller
30 31 32 |
# File 'lib/rails-footnotes/footnotes.rb', line 30 def before(controller) Footnotes::Filter.start!(controller) end |
.each_with_rescue(notes) ⇒ Object
Process notes, discarding only the note if any problem occurs
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rails-footnotes/footnotes.rb', line 58 def each_with_rescue(notes) delete_me = [] notes.each do |note| begin yield note rescue Exception => e # Discard note if it has a problem log_error("Footnotes #{note.to_s.camelize}Note Exception", e) delete_me << note next end end delete_me.each{ |note| notes.delete(note) } return notes end |
.log_error(title, exception) ⇒ Object
Logs the error using specified title and format
78 79 80 |
# File 'lib/rails-footnotes/footnotes.rb', line 78 def log_error(title, exception) RAILS_DEFAULT_LOGGER.error "#{title}: #{exception}\n#{exception.backtrace.join("\n")}" end |
.prefix(*args) ⇒ Object
If none argument is sent, simply return the prefix. Otherwise, replace the args in the prefix.
85 86 87 88 89 90 91 |
# File 'lib/rails-footnotes/footnotes.rb', line 85 def prefix(*args) if args.empty? @@prefix else format(@@prefix, *args) end end |
.start!(controller) ⇒ Object
Calls the class method start! in each note Sometimes notes need to set variables or clean the environment to work properly This method allows this kind of setup
46 47 48 49 50 51 52 53 54 |
# File 'lib/rails-footnotes/footnotes.rb', line 46 def start!(controller) @@klasses = [] each_with_rescue(@@notes.flatten) do |note| klass = "Footnotes::Notes::#{note.to_s.camelize}Note".constantize klass.start!(controller) if klass.respond_to?(:start!) @@klasses << klass end end |
Instance Method Details
#add_footnotes! ⇒ Object
102 103 104 105 106 107 |
# File 'lib/rails-footnotes/footnotes.rb', line 102 def add_footnotes! add_footnotes_without_validation! if valid? rescue Exception => e # Discard footnotes if there are any problems self.class.log_error("Footnotes Exception", e) end |
#close!(controller) ⇒ Object
Calls the class method close! in each note Sometimes notes need to finish their work even after being read This method allows this kind of work
113 114 115 116 117 |
# File 'lib/rails-footnotes/footnotes.rb', line 113 def close!(controller) each_with_rescue(@@klasses) do |klass| klass.close!(controller) end end |