Module: OllamaChat::Clipboard
- Included in:
- Chat
- Defined in:
- lib/ollama_chat/clipboard.rb
Overview
A module that provides clipboard functionality for copying and pasting chat messages.
This module enables users to copy the last assistant message to the system clipboard and paste content from input, facilitating easy transfer of conversation content between different applications and contexts.
Instance Method Summary collapse
-
#copy_to_clipboard ⇒ Object
private
Copies the last assistant message to the system clipboard.
-
#last_message_content(content: false) ⇒ String?
private
Returns the content of the last assistant message.
-
#paste_from_clipboard ⇒ Object
private
Pastes content from the system clipboard into the chat.
-
#perform_copy_to_clipboard(text: nil, content: false) ⇒ Object
Copies the last assistant message to the system clipboard.
-
#perform_paste_from_clipboard ⇒ String
Performs the actual clipboard paste operation.
Instance Method Details
#copy_to_clipboard ⇒ Object (private)
Copies the last assistant message to the system clipboard.
This method is the interface for copying assistant messages to the clipboard in the chat. It calls perform_copy_to_clipboard internally and handles any OllamaChat::OllamaChatError exceptions by printing the error message to standard error and does not re-raise the exception.
100 101 102 103 104 105 106 |
# File 'lib/ollama_chat/clipboard.rb', line 100 def copy_to_clipboard perform_copy_to_clipboard STDOUT.puts "The last response has been successfully copied to the system clipboard." true rescue OllamaChat::OllamaChatError => e STDERR.puts e. end |
#last_message_content(content: false) ⇒ String? (private)
Returns the content of the last assistant message.
This private helper method finds the most recent message from the assistant in the messages array and returns its content. It is used by perform_copy_to_clipboard when no custom text is provided.
90 91 92 |
# File 'lib/ollama_chat/clipboard.rb', line 90 def (content: false) @messages.find_last(content:) { _1.role == 'assistant' }&.content end |
#paste_from_clipboard ⇒ Object (private)
Pastes content from the system clipboard into the chat.
This method retrieves content from the system clipboard using the configured paste command and integrates it into the chat session. It handles clipboard errors gracefully by displaying error messages to standard error.
114 115 116 117 118 119 120 |
# File 'lib/ollama_chat/clipboard.rb', line 114 def paste_from_clipboard result = perform_paste_from_clipboard STDOUT.puts "The clipboard content has been successfully copied to the chat." result rescue OllamaChat::OllamaChatError => e STDERR.puts e. end |
#perform_copy_to_clipboard(text: nil, content: false) ⇒ Object
Copies the last assistant message to the system clipboard.
This method finds the most recent message from the assistant and writes its content to the system clipboard using the command specified in the configuration (config.copy).
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/ollama_chat/clipboard.rb', line 21 def perform_copy_to_clipboard(text: nil, content: false) text ||= (content:) if text copy = `which #{config.copy}`.chomp if copy.present? IO.popen(copy, 'w') do |clipboard| clipboard.write(text) end true else raise OllamaChat::OllamaChatError, "#{config.copy.inspect} command not found in system's path!" end else raise OllamaChat::OllamaChatError, "No text available to copy to the system clipboard." end end |
#perform_paste_from_clipboard ⇒ String
Performs the actual clipboard paste operation.
This method executes the configured clipboard paste command to retrieve content from the system clipboard. It uses the command specified in the configuration (config.paste) to fetch clipboard content.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/ollama_chat/clipboard.rb', line 54 def perform_paste_from_clipboard paste = `which #{config.paste}`.chomp if paste.present? IO.popen(paste, 'r') do |clipboard| text = clipboard.read if text.empty? raise OllamaChat::OllamaChatError, "No content available to paste from the system clipboard." else return text end end else raise OllamaChat::OllamaChatError, "#{config.paste.inspect} command not found in system's path!" end end |