class ClipboardMonitor::ClipboardInternal

Attributes

emitter[RW]
last_text[RW]
scheduler[RW]

Public Class Methods

new() click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 8
def initialize
  self.last_text = clipboard_text
  self.emitter = Emittr::Emitter.new
  self.scheduler = Rufus::Scheduler.new(frequency: '.2s')
end

Public Instance Methods

check_text_change() click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 19
def check_text_change
  current_text = clipboard_text
  if current_text == last_text
    return false
  else
    puts "Change"
    self.last_text = current_text
    return current_text
  end
end
clipboard_text() click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 13
def clipboard_text
  return Clipboard.paste.strip
end
start_monitoring() click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 35
def start_monitoring
  scheduler.every '.2s', overlap: false do
    result = check_text_change
    emitter.emit :clipboard_text_changed, result if result
  end
  scheduler.join
end
stop_monitoring() click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 16
def stop_monitoring
  scheduler.shutdown
end
watch_for_text(&block) click to toggle source
# File lib/clipboard_monitor/clipboard_internal.rb, line 29
def watch_for_text(&block)
  emitter.on :clipboard_text_changed do |contents|
    block.call(contents)
  end
  start_monitoring
end