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