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

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(/</, '&lt;').gsub(/>/, '&gt;')
  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 expand_pin_packages(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 expand_url(url, suite)
  url&.gsub('{SUITE}', suite)
end


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"
    expand_pin_packages(test).each do |pin|
      title << pin << "\n"
    end
  end
  title
end