Module: Asciidoctor::Html::Utils

Defined in:
lib/asciidoctor/html/utils.rb

Overview

Utilities shared by multiple elements

Class Method Summary collapse

Class Method Details

.display_title(node, needs_prefix: true) ⇒ Object



34
35
36
37
# File 'lib/asciidoctor/html/utils.rb', line 34

def self.display_title(node, needs_prefix: true)
  prefix = needs_prefix ? display_title_prefix(node) : ""
  show_title?(node) ? %(<h6 class="block-title">#{prefix}#{node.title}</h6>\n) : ""
end

.display_title_prefix(node) ⇒ Object



39
40
41
42
# File 'lib/asciidoctor/html/utils.rb', line 39

def self.display_title_prefix(node)
  prefix = node.reftext? ? node.reftext : ""
  node.title? && !node.title.empty? ? %(<span class="title-prefix">#{prefix}</span>) : prefix
end

.dyn_id_class_attr_str(node, classes = nil) ⇒ Object

Don’t include an id if the element will be wrapped by a title, since the wrapper should have the id.



15
16
17
18
# File 'lib/asciidoctor/html/utils.rb', line 15

def self.dyn_id_class_attr_str(node, classes = nil)
  id = node.title? ? nil : node.id
  id_class_attr_str id, classes
end

.id_class_attr_str(id, classes = nil) ⇒ Object



7
8
9
10
11
# File 'lib/asciidoctor/html/utils.rb', line 7

def self.id_class_attr_str(id, classes = nil)
  id_attr = id ? %( id="#{id}") : ""
  class_attr = classes ? %( class="#{classes}") : ""
  "#{id_attr}#{class_attr}"
end

.id_class_sel_comment(id, classes) ⇒ Object



26
27
28
# File 'lib/asciidoctor/html/utils.rb', line 26

def self.id_class_sel_comment(id, classes)
  id || (classes && !classes.empty?) ? " <!-- #{id_class_sel_str id, classes} -->" : ""
end

.id_class_sel_str(id, classes) ⇒ Object



20
21
22
23
24
# File 'lib/asciidoctor/html/utils.rb', line 20

def self.id_class_sel_str(id, classes)
  result = ""
  result += "##{id}" if id
  result + ".#{classes.tr "\s", "."}" if classes
end

.show_title?(node) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/asciidoctor/html/utils.rb', line 30

def self.show_title?(node)
  node.attr?("showcaption") || node.title?
end

.wrap_id_classes(content, id, classes, tag_name = :div) ⇒ Object



44
45
46
47
# File 'lib/asciidoctor/html/utils.rb', line 44

def self.wrap_id_classes(content, id, classes, tag_name = :div)
  id_class = id_class_attr_str id, classes
  %(<#{tag_name}#{id_class}>\n#{content}\n</#{tag_name}>#{id_class_sel_comment id, classes}\n)
end

.wrap_id_classes_with_title(content, node, id, classes, needs_prefix: false) ⇒ Object



65
66
67
# File 'lib/asciidoctor/html/utils.rb', line 65

def self.wrap_id_classes_with_title(content, node, id, classes, needs_prefix: false)
  show_title?(node) ? wrap_id_classes(display_title(node, needs_prefix:) + content, id, classes) : content
end

.wrap_node(content, node, tag_name = :div) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/asciidoctor/html/utils.rb', line 49

def self.wrap_node(content, node, tag_name = :div)
  base_class = node.context
  mod = node.attr?("env") ? node.attr("env") : node.style
  mod_class = if mod && mod != base_class.to_s
                "#{base_class}-#{mod}"
              else
                ""
              end
  classes = [base_class, mod_class, node.role].compact.map(&:to_s).uniq.join(" ").strip
  wrap_id_classes content, node.id, classes, tag_name
end

.wrap_node_with_title(content, node, tag_name = :div, needs_prefix: false) ⇒ Object



61
62
63
# File 'lib/asciidoctor/html/utils.rb', line 61

def self.wrap_node_with_title(content, node, tag_name = :div, needs_prefix: false)
  show_title?(node) ? wrap_node(display_title(node, needs_prefix:) + content, node, tag_name) : content
end