Module: Asciidoctor::Html::Figure

Included in:
Converter
Defined in:
lib/asciidoctor/html/figure.rb

Overview

Helper functions for the image/figure conversion. Mixed into the Converter class.

Instance Method Summary collapse

Instance Method Details

#convert_figlist(node) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/asciidoctor/html/figure.rb', line 32

def convert_figlist(node)
  result = node.items.map do |item|
    %(<li#{Utils.id_class_attr_str item.id, item.role}><figure>\n#{item.text}\n</figure></li>)
  end
  content = Utils.wrap_id_classes result.join("\n"), nil, "figlist", :ol
  title = %(<div class="figlist-title">#{Utils.display_title_prefix(node)}#{node.title}</div>)
  classes = ["figlist-wrapper", node.role].compact.join(" ")
  Utils.wrap_id_classes %(#{content}#{title}), node.id, classes
end

#display_figure(node) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/asciidoctor/html/figure.rb', line 24

def display_figure(node)
  target = node.attr "target"
  title = node.title? ? node.title : ""
  image = display_image node, target
  caption = %(    <figcaption>#{Utils.display_title_prefix node}#{title}</figcaption>)
  %(<figure>\n    #{image}\n#{caption}\n</figure>)
end

#display_image(node, target, title_attr: false) ⇒ Object



8
9
10
11
12
13
# File 'lib/asciidoctor/html/figure.rb', line 8

def display_image(node, target, title_attr: false)
  return read_svg_contents(node, target) if node.option?("inline")

  attrs = image_attrs(node, title_attr:)
  %(<img src="#{node.image_uri target}" #{attrs}#{@void_element_slash}>)
end

#image_attrs(node, title_attr: false) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/asciidoctor/html/figure.rb', line 15

def image_attrs(node, title_attr: false)
  width = node.attr?("width") ? %( width="#{node.attr "width"}") : ""
  height = node.attr?("height") ? %( height="#{node.attr "height"}") : ""
  title = encode_attribute_value node.attr("title") if node.attr?("title") && title_attr
  title = title ? %( data-bs-toggle="tooltip" data-bs-title="#{title}") : ""
  alt = encode_attribute_value node.alt
  %(alt="#{alt}"#{width}#{height}#{title})
end