Class: Footnotes::Filter

Inherits:
Object
  • Object
show all
Extended by:
EachWithRescue
Defined in:
lib/rails-footnotes/filter.rb

Constant Summary collapse

@@no_style =
false
@@multiple_notes =
false
@@klasses =
[]
@@lock_top_right =
false
@@font_size =
'11px'
@@prefix =

Default link prefix is textmate

'txmt://open?url=file://%s&line=%d&column=%d'
@@notes =

Edit notes

[ :controller, :view, :layout, :partials, :stylesheets, :javascripts ]

Class Method Summary collapse

Instance Method Summary collapse

Methods included from EachWithRescue

included

Constructor Details

#initialize(controller) ⇒ Filter

Returns a new instance of Filter.


62
63
64
65
66
67
68
69
70
# File 'lib/rails-footnotes/filter.rb', line 62

def initialize(controller)
  @controller = controller
  @template = controller.instance_variable_get(:@template)
  @notes = []

  revert_pos(controller.response_body) do
    @body = controller.response.body
  end
end

Class Method Details

.prefix(*args) ⇒ Object

If none argument is sent, simply return the prefix. Otherwise, replace the args in the prefix.


46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/rails-footnotes/filter.rb', line 46

def prefix(*args)
  if args.empty?
    @@prefix
  else
    args.map! { |arg| URI.escape(arg.to_s) }

    if @@prefix.respond_to? :call
      @@prefix.call *args
    else
      format(@@prefix, *args)
    end
  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


32
33
34
35
36
37
38
39
40
41
# File 'lib/rails-footnotes/filter.rb', line 32

def start!(controller)
  self.each_with_rescue(Footnotes.before_hooks) {|hook| hook.call(controller, self)}

  @@klasses = []
  self.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


72
73
74
75
76
77
# File 'lib/rails-footnotes/filter.rb', line 72

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


83
84
85
86
# File 'lib/rails-footnotes/filter.rb', line 83

def close!(controller)
  self.each_with_rescue(@@klasses) {|klass| klass.close!(controller)}
  self.each_with_rescue(Footnotes.after_hooks) {|hook| hook.call(controller, self)}
end