Module: OmniAI::Tools::Browser::Formatters::ElementFormatter

Defined in:
lib/omniai/tools/browser/formatters/element_formatter.rb

Overview

Handles formatting of HTML elements for display with data entry focus

Class Method Summary collapse

Class Method Details

.format_element_attributes(element) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/omniai/tools/browser/formatters/element_formatter.rb', line 26

def format_element_attributes(element)
  result = ""
  result += "ID: #{element['id']}\n" if element["id"]
  result += "Classes: #{element['class']}\n" if element["class"]
  %w[href src alt type value placeholder].each do |attr|
    result += "#{attr}: #{element[attr]}\n" if element[attr] && !element[attr].empty?
  end
  result
end

.format_matching_elements(elements, text, _context_size = nil) ⇒ Object



11
12
13
14
# File 'lib/omniai/tools/browser/formatters/element_formatter.rb', line 11

def format_matching_elements(elements, text, _context_size = nil)
  grouped = Elements::ElementGrouper.group_for_data_entry(elements, text)
  DataEntryFormatter.format_groups(grouped, elements.size, text)
end

.format_single_element(element, index, context_size) ⇒ Object

Keep existing methods for backward compatibility



17
18
19
20
21
22
23
24
# File 'lib/omniai/tools/browser/formatters/element_formatter.rb', line 17

def format_single_element(element, index, context_size)
  result = "--- Element #{index + 1} ---\n"
  result += "Tag: #{element.name}\n"
  result += format_element_attributes(element)
  result += get_parent_context(element, context_size) if context_size.positive?
  result += "HTML: #{element.to_html}\n\n"
  result
end

.get_parent_context(element, context_size) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/omniai/tools/browser/formatters/element_formatter.rb', line 36

def get_parent_context(element, context_size)
  result = ""
  parent = element.parent
  context_count = 0
  while parent && context_count < context_size
    attrs = parent.attributes.map { |name, attr| " #{name}=\"#{attr.value}\"" }.join
    result += "Parent #{context_count + 1}: <#{parent.name}#{attrs}>\n"
    parent = parent.parent
    context_count += 1
  end
  result
end