Module: Obp::Access::InlineRenderer
- Included in:
- Renderer::Elements::List, Renderer::Elements::NonNormativeNote, Renderer::Elements::Paragraph, Renderer::Elements::Terminology::Base
- Defined in:
- lib/obp/access/inline_renderer.rb
Constant Summary collapse
- CLASS_TYPES =
{ %w[sts-tbx-entailedTerm] => :entailed_term, %w[sts-xref] => :xref, %w[sts-std-ref] => :std_ref, %w[sts-label] => :label, }.freeze
- CONTAINER_TYPES =
{ italic: :italic, bold: :bold }.freeze
Instance Method Summary collapse
- #inline_type(node) ⇒ Object
- #render_children(xml, node) ⇒ Object
- #render_container(xml, node, tag) ⇒ Object
- #render_inline(xml, node) ⇒ Object
- #render_named_type(xml, node, type) ⇒ Object
- #render_node_by_type(xml, node, type) ⇒ Object
- #xref_ref_type(text) ⇒ Object
Instance Method Details
#inline_type(node) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/obp/access/inline_renderer.rb', line 48 def inline_type(node) return :text if node.is_a?(Nokogiri::XML::Text) CLASS_TYPES.fetch(node.classes) do case node.name when "i" then :italic when "a" then :ext_link when "b" then :bold else :element end end end |
#render_children(xml, node) ⇒ Object
44 45 46 |
# File 'lib/obp/access/inline_renderer.rb', line 44 def render_children(xml, node) node.children.each { |c| render_inline(xml, c) } end |
#render_container(xml, node, tag) ⇒ Object
40 41 42 |
# File 'lib/obp/access/inline_renderer.rb', line 40 def render_container(xml, node, tag) xml.public_send(tag) { node.children.each { |c| render_inline(xml, c) } } end |
#render_inline(xml, node) ⇒ Object
11 12 13 14 15 |
# File 'lib/obp/access/inline_renderer.rb', line 11 def render_inline(xml, node) return xml.text(node.content) if node.is_a?(Nokogiri::XML::Text) render_node_by_type(xml, node, inline_type(node)) end |
#render_named_type(xml, node, type) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/obp/access/inline_renderer.rb', line 31 def render_named_type(xml, node, type) case type when :entailed_term then render_entailed_term(xml, node) when :xref then render_xref(xml, node) when :std_ref then render_std_ref(xml, node) when :ext_link then render_ext_link(xml, node) end end |
#render_node_by_type(xml, node, type) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/obp/access/inline_renderer.rb', line 19 def render_node_by_type(xml, node, type) if CONTAINER_TYPES.key?(type) render_container(xml, node, CONTAINER_TYPES[type]) elsif type == :label nil elsif type == :element render_children(xml, node) else render_named_type(xml, node, type) end end |
#xref_ref_type(text) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/obp/access/inline_renderer.rb', line 61 def xref_ref_type(text) case text when /\AFigure/ then "fig" when /\ATable/ then "table" when /\ANote/ then "fn" else "sec" end end |