Class: ClaudeHooks::Output::MessageDisplay
- Defined in:
- lib/claude_hooks/output/message_display.rb
Overview
MessageDisplay is display-only — exit code and decision fields are ignored. Only hookSpecificOutput.displayContent has an effect (replaces on-screen text).
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
-
.merge(*outputs) ⇒ Object
Last non-nil displayContent wins.
Instance Method Summary collapse
Methods inherited from Base
#continue?, for_hook_type, #hook_specific_output, #initialize, #output_and_exit, #stop_reason, #suppress_output?, #system_message, #terminal_sequence, #to_json
Constructor Details
This class inherits a constructor from ClaudeHooks::Output::Base
Class Method Details
.merge(*outputs) ⇒ Object
Last non-nil displayContent wins.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/claude_hooks/output/message_display.rb', line 23 def self.merge(*outputs) compacted_outputs = outputs.compact return compacted_outputs.first if compacted_outputs.length == 1 return super(*outputs) if compacted_outputs.empty? merged = super(*outputs) merged_data = merged.data last_content = nil compacted_outputs.each do |output| output_data = output.respond_to?(:data) ? output.data : output content = output_data.dig('hookSpecificOutput', 'displayContent') last_content = content unless content.nil? end unless last_content.nil? merged_data['hookSpecificOutput'] = { 'hookEventName' => 'MessageDisplay', 'displayContent' => last_content } end new(merged_data) end |
Instance Method Details
#display_content ⇒ Object
10 11 12 |
# File 'lib/claude_hooks/output/message_display.rb', line 10 def display_content hook_specific_output['displayContent'] end |
#exit_code ⇒ Object
14 15 16 |
# File 'lib/claude_hooks/output/message_display.rb', line 14 def exit_code 0 end |
#output_stream ⇒ Object
18 19 20 |
# File 'lib/claude_hooks/output/message_display.rb', line 18 def output_stream :stdout end |