Sha256: 671e2a231a6afff71f91e7c0e78ca90a29bac8f1da56cdeba6476c05023aa4f1

Contents?: true

Size: 1.47 KB

Versions: 7

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

require "stepmod/utils/converters/synonym"

module Stepmod
  module Utils
    module Converters
      class Term < ReverseAdoc::Converters::Base

        # We strip all the children in the case for "stem:[d]-manifold"
        # vs "stem:[d] -manifold"
        def treat_children(node, state)
          res = node.children.map { |child| treat(child, state) }
          res.map(&:strip).reject(&:empty?).join("")
        end

        def convert(node, state = {})
          first_child = node.children.find do |child|
            child.name == "text" && !child.text.to_s.strip.empty?
          end

          unless first_child &&
              node.text.split(";").length == 2 &&
              defined?(Stepmod::Utils::Converters::Synonym)
            return "=== #{treat_acronym(treat_children(node, state).strip)}"
          end

          term_def, alt = node.text.split(";")
          alt_xml = Nokogiri::XML::Text.new(alt, Nokogiri::XML::Document.new)
          converted_alt = Stepmod::Utils::Converters::Synonym.new.convert(alt_xml)
          "=== #{treat_acronym(term_def)}\n\n#{converted_alt}"
        end

        private

        def treat_acronym(term_def)
          return term_def.strip if term_def !~ /.+\(.+?\)$/

          _, term_text, term_acronym = term_def.match(/(.+?)(\(.+\))$/).to_a
          "#{term_text.strip}\nalt:[#{term_acronym.gsub(/\(|\)/, '')}]"
        end
      end

      ReverseAdoc::Converters.register :term, Term.new
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
stepmod-utils-0.3.15 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.14 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.13 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.12 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.11 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.10 lib/stepmod/utils/converters/term.rb
stepmod-utils-0.3.9 lib/stepmod/utils/converters/term.rb