module StaticiceReport
Render staticICE price results as an Undernet-style reply card: coloured tag/banner/footer frame, plain readable result lines (see CONVENTIONS.md).
Constants
- MAX_DESCRIPTION
- STYLE_BANNER
Public Instance Methods
Source
# File lib/staticice_report.rb, line 16 def format(query, results) query = query.to_s.strip return "No results found for #{query}" if results.empty? IrcReply.card( tag: "staticICE", title: "Cheapest — #{query}", body_lines: results.map.with_index(1) { |result, index| result_line(index, result) }, footer_parts: [footer_label(results.length), "staticice.com.au"], heading_style: STYLE_BANNER ) end
Source
# File lib/staticice_report.rb, line 29 def result_line(position, result) price = StaticiceSearch.format_price(result[:price]) parts = ["#{position}. #{price}", truncate(result[:description])] parts << "(#{result[:store]})" if result[:store] && !result[:store].empty? parts << result[:url] if result[:url] && !result[:url].empty? parts.reject { |part| part.to_s.strip.empty? }.join(" ") end
Source
# File lib/staticice_report.rb, line 42 def truncate(text, max = MAX_DESCRIPTION) TextUtil.truncate(text, max) end