Class: Torkify::Vim::Observer
- Inherits:
-
Object
- Object
- Torkify::Vim::Observer
- Defined in:
- lib/torkify/vim/observer.rb
Instance Attribute Summary collapse
-
#me ⇒ Object
readonly
Returns the value of attribute me.
-
#quickfix ⇒ Object
readonly
Returns the value of attribute quickfix.
-
#split_error_threshold ⇒ Object
readonly
Returns the value of attribute split_error_threshold.
-
#split_errors ⇒ Object
readonly
Returns the value of attribute split_errors.
Instance Method Summary collapse
- #detect_server!(first_time = false) ⇒ Object
- #errors_from_event(event) ⇒ Object
-
#initialize(options = {}) ⇒ Observer
constructor
A new instance of Observer.
- #on_absorb(event) ⇒ Object
- #on_fail(event) ⇒ Object
- #on_idle(event) ⇒ Object
- #on_pass(event) ⇒ Object
- #on_pass_or_fail(event) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Observer
Returns a new instance of Observer.
9 10 11 12 13 14 15 16 17 |
# File 'lib/torkify/vim/observer.rb', line 9 def initialize( = {}) @vimserver = [:server] @me = "vim" @split_errors = !![:split_errors] @split_error_threshold = .fetch(:split_error_threshold, 30).to_i detect_server! true end |
Instance Attribute Details
#me ⇒ Object (readonly)
Returns the value of attribute me.
7 8 9 |
# File 'lib/torkify/vim/observer.rb', line 7 def me @me end |
#quickfix ⇒ Object (readonly)
Returns the value of attribute quickfix.
7 8 9 |
# File 'lib/torkify/vim/observer.rb', line 7 def quickfix @quickfix end |
#split_error_threshold ⇒ Object (readonly)
Returns the value of attribute split_error_threshold.
7 8 9 |
# File 'lib/torkify/vim/observer.rb', line 7 def split_error_threshold @split_error_threshold end |
#split_errors ⇒ Object (readonly)
Returns the value of attribute split_errors.
7 8 9 |
# File 'lib/torkify/vim/observer.rb', line 7 def split_errors @split_errors end |
Instance Method Details
#detect_server!(first_time = false) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/torkify/vim/observer.rb', line 19 def detect_server!(first_time = false) @quickfix ||= begin vim = if @vimserver Remote.new(@vimserver) else Remote.from_first_server end Quickfix::API.new(vim) rescue RemoteError => e Torkify.logger.error { "[#{me}] #{e}" } if first_time nil end end |
#errors_from_event(event) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/torkify/vim/observer.rb', line 66 def errors_from_event(event) if split_errors && event.errors.length < split_error_threshold Torkify.logger.debug { "[#{me}] number of errors before splitting: #{event.errors.length}" } splitter = ErrorSplitter.new event.errors.each_with_object([]) { |error, split| split.concat(splitter.call(error)) } else event.errors end end |
#on_absorb(event) ⇒ Object
38 39 40 41 |
# File 'lib/torkify/vim/observer.rb', line 38 def on_absorb(event) quickfix.clear if quickfix self end |
#on_fail(event) ⇒ Object
48 49 50 51 |
# File 'lib/torkify/vim/observer.rb', line 48 def on_fail(event) on_pass_or_fail(event) self end |
#on_idle(event) ⇒ Object
33 34 35 36 |
# File 'lib/torkify/vim/observer.rb', line 33 def on_idle(event) detect_server! self end |
#on_pass(event) ⇒ Object
43 44 45 46 |
# File 'lib/torkify/vim/observer.rb', line 43 def on_pass(event) on_pass_or_fail(event) self end |
#on_pass_or_fail(event) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/torkify/vim/observer.rb', line 53 def on_pass_or_fail(event) return unless quickfix populator = Quickfix::Populator.new(quickfix) populator.exclude File.basename(event.log_file.chomp('.log')) errors = errors_from_event(event) Torkify.logger.debug { "[#{me}] number of errors: #{errors.length}" } populator.populate errors quickfix.open if populator.errors_populated > 0 self end |