Module: Debci::HTMLHelpers
- Includes:
- ActiveSupport::NumberHelper, ERB::Util
- Included in:
- Admin, App, Frontend, SelfService, Status
- Defined in:
- lib/debci/html_helpers.rb
Constant Summary collapse
- ICONS =
{ pass: 'thumbs-up', neutral: 'minus-circle', fail: 'thumbs-down', fail_passed_never: ['thumbs-down', 'ban'], fail_passed_current: ['thumbs-down', 'bolt'], fail_passed_old: ['thumbs-down', 'arrow-down'], tmpfail_pass: 'thumbs-up', tmpfail_fail: 'thumbs-down', tmpfail: 'question-circle', no_test_data: 'question', }.freeze
Instance Method Summary collapse
-
#ansi_to_html(str) ⇒ Object
Converts ANSI codes to HTML.
- #expand_pin_packages(test) ⇒ Object
-
#expand_url(url, suite) ⇒ Object
expand { SUITE } macro in URLs.
- #file_link(size, link_pattern) ⇒ Object
- #history_url(job) ⇒ Object
- #icon(status) ⇒ Object
- #package_url(package) ⇒ Object
- #pkg_history_url(package, suite, arch) ⇒ Object
- #title_test_trigger_pin(test) ⇒ Object
Instance Method Details
#ansi_to_html(str) ⇒ Object
Converts ANSI codes to HTML. Escapes any HTML before even looking for ANSI codes.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/debci/html_helpers.rb', line 84 def ansi_to_html(str) return str unless str input = str.gsub(/</, '<').gsub(/>/, '>') return input unless input =~ /\e\[/ begin result = ANSI::BBCode.ansi_to_html(input) result = result[0..-8] if result =~ %r{<br />\n$} result rescue StandardError # in case anything goes wrong with the conversion, just remove all ANSI # escape codes input.gsub(/\e\[[0-9;]+m/, "") end end |
#expand_pin_packages(test) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/debci/html_helpers.rb', line 52 def (test) return [] unless test.pinned? test.pin_packages.map do |pin| *packages, suite = pin Array(packages).map do |pkglist| String(pkglist).split(/\s*,\s*/).map do |pkg| "#{pkg} from #{suite}" end end end.flatten end |
#expand_url(url, suite) ⇒ Object
expand { SUITE } macro in URLs
78 79 80 |
# File 'lib/debci/html_helpers.rb', line 78 def (url, suite) url&.gsub('{SUITE}', suite) end |
#file_link(size, link_pattern) ⇒ Object
31 32 33 34 |
# File 'lib/debci/html_helpers.rb', line 31 def file_link(size, link_pattern) return unless size link_pattern % number_to_human_size(size) end |
#history_url(job) ⇒ Object
69 70 71 |
# File 'lib/debci/html_helpers.rb', line 69 def history_url(job) pkg_history_url(job.package, job.suite, job.arch) end |
#icon(status) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/debci/html_helpers.rb', line 24 def icon(status) status ||= :no_test_data Array(ICONS[status.to_sym]).map do |i| "<i class='#{status} fa fa-#{i}'></i>" end.join(' ') end |
#package_url(package) ⇒ Object
73 74 75 |
# File 'lib/debci/html_helpers.rb', line 73 def package_url(package) "/packages/#{package.prefix}/#{package.name}/" end |
#pkg_history_url(package, suite, arch) ⇒ Object
65 66 67 |
# File 'lib/debci/html_helpers.rb', line 65 def pkg_history_url(package, suite, arch) "/packages/#{package.prefix}/#{package.name}/#{suite}/#{arch}/" end |
#title_test_trigger_pin(test) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/debci/html_helpers.rb', line 36 def title_test_trigger_pin(test) title = '' unless test.trigger.blank? title << "Trigger:\n" title << h(test.trigger) end if test.pinned? title << "\n\n" unless test.trigger.blank? title << "Pinned packages:\n" (test).each do |pin| title << pin << "\n" end end title end |