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, # OBP's marker for content it could not map; drop its placeholder # text ("[no rendering defined for element: ...]"). %w[sts-unknown-element] => :skip, }.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
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/obp/access/inline_renderer.rb', line 51 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
47 48 49 |
# File 'lib/obp/access/inline_renderer.rb', line 47 def render_children(xml, node) node.children.each { |c| render_inline(xml, c) } end |
#render_container(xml, node, tag) ⇒ Object
43 44 45 |
# File 'lib/obp/access/inline_renderer.rb', line 43 def render_container(xml, node, tag) xml.public_send(tag) { node.children.each { |c| render_inline(xml, c) } } end |
#render_inline(xml, node) ⇒ Object
14 15 16 17 18 |
# File 'lib/obp/access/inline_renderer.rb', line 14 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
34 35 36 37 38 39 40 41 |
# File 'lib/obp/access/inline_renderer.rb', line 34 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
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/obp/access/inline_renderer.rb', line 22 def render_node_by_type(xml, node, type) if CONTAINER_TYPES.key?(type) render_container(xml, node, CONTAINER_TYPES[type]) elsif %i[label skip].include?(type) nil elsif type == :element render_children(xml, node) else render_named_type(xml, node, type) end end |
#xref_ref_type(text) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/obp/access/inline_renderer.rb', line 64 def xref_ref_type(text) case text when /\AFigure/ then "fig" when /\ATable/ then "table" when /\ANote/ then "fn" else "sec" end end |