class Listener

Public Class Methods

new(classroom) click to toggle source
# File lib/codefusion/listener.rb, line 2
def initialize(classroom)
  @classroom = classroom
end

Public Instance Methods

start() click to toggle source
# File lib/codefusion/listener.rb, line 6
def start
  begin
    View.listen_message(@classroom.path, url)
    set_listener.start
    sleep
  rescue Exception => e
    View.exit_message
  end
end

Private Instance Methods

applicable_message(modified, added, removed) click to toggle source
# File lib/codefusion/listener.rb, line 25
def applicable_message(modified, added, removed)
  if modified.any?
    :modified_message
  elsif added.any? && removed.any?
    :name_changed_message
  elsif added.any?
    :added_message
  else removed.any?
    :removed_message
  end
end
get_relative_path(modified, added, removed) click to toggle source
# File lib/codefusion/listener.rb, line 41
def get_relative_path(modified, added, removed)
  full_path = [modified, added, removed].select { |effect| effect.any? }.flatten.first
  FileParser.shortened_path(full_path, @classroom.parent_dir)
end
send_message(message, path) click to toggle source
# File lib/codefusion/listener.rb, line 50
def send_message(message, path)
  View.send(message, path, url)
end
set_listener() click to toggle source
# File lib/codefusion/listener.rb, line 17
def set_listener
  Listen.to(@classroom.path, only: this_file) do |modified, added, removed|
    relative_path = get_relative_path(modified, added, removed)
    send_message(applicable_message(modified, added, removed), relative_path)
    @classroom.update
  end
end
this_file() click to toggle source
# File lib/codefusion/listener.rb, line 37
def this_file
  @classroom.file ? Regexp.new(@classroom.file) : /./
end
url() click to toggle source
# File lib/codefusion/listener.rb, line 46
def url
  @classroom.url
end