stepmod-utils 0.2.0 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +51 -0
- data/.github/workflows/release.yml +20 -22
- data/Gemfile +2 -1
- data/Makefile +2 -0
- data/README.adoc +82 -1
- data/exe/stepmod-annotate +44 -0
- data/exe/stepmod-annotate-all +39 -0
- data/exe/stepmod-build-resource-docs-cache +19 -0
- data/exe/stepmod-convert-express-description +33 -0
- data/exe/stepmod-convert-express-resource +33 -0
- data/exe/stepmod-find-express-files +23 -0
- data/lib/stepmod/utils/cleaner.rb +11 -0
- data/lib/stepmod/utils/converters/a.rb +47 -0
- data/lib/stepmod/utils/converters/blockquote.rb +22 -0
- data/lib/stepmod/utils/converters/br.rb +15 -0
- data/lib/stepmod/utils/converters/bypass.rb +81 -0
- data/lib/stepmod/utils/converters/code.rb +19 -0
- data/lib/stepmod/utils/converters/comment.rb +16 -0
- data/lib/stepmod/utils/converters/dd.rb +15 -0
- data/lib/stepmod/utils/converters/def.rb +11 -4
- data/lib/stepmod/utils/converters/dl.rb +31 -0
- data/lib/stepmod/utils/converters/drop.rb +22 -0
- data/lib/stepmod/utils/converters/dt.rb +17 -0
- data/lib/stepmod/utils/converters/em_express_description.rb +22 -0
- data/lib/stepmod/utils/converters/eqn.rb +96 -0
- data/lib/stepmod/utils/converters/example.rb +1 -6
- data/lib/stepmod/utils/converters/express_g.rb +46 -0
- data/lib/stepmod/utils/converters/express_ref_express_description.rb +13 -0
- data/lib/stepmod/utils/converters/ext_description.rb +16 -0
- data/lib/stepmod/utils/converters/ext_descriptions.rb +14 -0
- data/lib/stepmod/utils/converters/fund_cons.rb +15 -0
- data/lib/stepmod/utils/converters/head.rb +22 -0
- data/lib/stepmod/utils/converters/hr.rb +15 -0
- data/lib/stepmod/utils/converters/ignore.rb +16 -0
- data/lib/stepmod/utils/converters/introduction.rb +15 -0
- data/lib/stepmod/utils/converters/note.rb +1 -6
- data/lib/stepmod/utils/converters/ol.rb +3 -2
- data/lib/stepmod/utils/converters/p.rb +21 -0
- data/lib/stepmod/utils/converters/pass_through.rb +13 -0
- data/lib/stepmod/utils/converters/q.rb +16 -0
- data/lib/stepmod/utils/converters/resource.rb +14 -0
- data/lib/stepmod/utils/converters/schema.rb +18 -0
- data/lib/stepmod/utils/converters/schema_diag.rb +14 -0
- data/lib/stepmod/utils/converters/strong.rb +21 -0
- data/lib/stepmod/utils/converters/sub.rb +16 -0
- data/lib/stepmod/utils/converters/sup.rb +16 -0
- data/lib/stepmod/utils/converters/text.rb +68 -0
- data/lib/stepmod/utils/html_to_asciimath.rb +157 -0
- data/lib/stepmod/utils/smrl_description_converter.rb +49 -0
- data/lib/stepmod/utils/smrl_resource_converter.rb +67 -0
- data/lib/stepmod/utils/stepmod_file_annotator.rb +54 -0
- data/lib/stepmod/utils/version.rb +1 -1
- data/migrating_from_cvs.adoc +190 -0
- metadata +54 -6
- data/.github/workflows/macos.yml +0 -39
- data/.github/workflows/ubuntu.yml +0 -53
- data/.github/workflows/windows.yml +0 -41
| @@ -5,12 +5,7 @@ module Stepmod | |
| 5 5 | 
             
                module Converters
         | 
| 6 6 | 
             
                  class Example < ReverseAdoc::Converters::Base
         | 
| 7 7 | 
             
                    def convert(node, state = {})
         | 
| 8 | 
            -
                       | 
| 9 | 
            -
                        [example]
         | 
| 10 | 
            -
                        ====
         | 
| 11 | 
            -
                        #{treat_children(node, state).strip}
         | 
| 12 | 
            -
                        ====
         | 
| 13 | 
            -
                      TEMPLATE
         | 
| 8 | 
            +
                      "\n\n[example]\n====\n#{treat_children(node, state).strip}\n====\n\n"
         | 
| 14 9 | 
             
                    end
         | 
| 15 10 | 
             
                  end
         | 
| 16 11 | 
             
                  ReverseAdoc::Converters.register :example, Example.new
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class ExpressG < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      node.children.map do |child|
         | 
| 9 | 
            +
                        next unless child.name == 'imgfile'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                        parse_to_svg_reference(child['file'])
         | 
| 12 | 
            +
                      end.join("\n")
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    private
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    def parse_to_svg_reference(file)
         | 
| 18 | 
            +
                      return '' unless File.file?(file)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                      image_document = Nokogiri::XML(File.read(file))
         | 
| 21 | 
            +
                      svg_path = File.basename(image_document.xpath('//img').first['src'], '.*')
         | 
| 22 | 
            +
                      <<~SVGMAP
         | 
| 23 | 
            +
                        [.svgmap]
         | 
| 24 | 
            +
                        ====
         | 
| 25 | 
            +
                        image::#{svg_path}.svg[]
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                        #{image_document.xpath('//img.area').map.with_index(1) {|n, i| schema_reference(n['href'], i) }.join("\n")}
         | 
| 28 | 
            +
                        ====
         | 
| 29 | 
            +
                      SVGMAP
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    def schema_reference(xml_path, index)
         | 
| 33 | 
            +
                      if xml_path =~ /#/
         | 
| 34 | 
            +
                        _,express_path_part = xml_path.split('#')
         | 
| 35 | 
            +
                        "* <<express:#{express_path_part.strip}>>; #{index}"
         | 
| 36 | 
            +
                      else
         | 
| 37 | 
            +
                        schema_name = File.basename(xml_path, '.*')
         | 
| 38 | 
            +
                        "* <<express:#{schema_name.strip}>>; #{index}"
         | 
| 39 | 
            +
                      end
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  ReverseAdoc::Converters.register 'express-g', ExpressG.new
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            module Stepmod
         | 
| 2 | 
            +
              module Utils
         | 
| 3 | 
            +
                module Converters
         | 
| 4 | 
            +
                  class ExpressRefExpressDescription < ReverseAdoc::Converters::Base
         | 
| 5 | 
            +
                    def convert(node, _state = {})
         | 
| 6 | 
            +
                      parts = node['linkend'].to_s.split(':').last.split('.')
         | 
| 7 | 
            +
                      "<<express:#{parts.join('.').strip},#{parts.last.strip}>>"
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                  ReverseAdoc::Converters.register :express_ref, ExpressRefExpressDescription.new
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Stepmod
         | 
| 2 | 
            +
              module Utils
         | 
| 3 | 
            +
                module Converters
         | 
| 4 | 
            +
                  class ExtDescription < ReverseAdoc::Converters::Base
         | 
| 5 | 
            +
                    def convert(node, state = {})
         | 
| 6 | 
            +
                      <<~TEMPLATE
         | 
| 7 | 
            +
                        (*"#{node['linkend']}"
         | 
| 8 | 
            +
                        #{treat_children(node, state).strip}
         | 
| 9 | 
            +
                        *)
         | 
| 10 | 
            +
                      TEMPLATE
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                  ReverseAdoc::Converters.register :ext_description, ExtDescription.new
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class ExtDescriptions < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      treat_children(node, state)
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  ReverseAdoc::Converters.register :ext_descriptions, ExtDescriptions.new
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class FundCons < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      "\n\n== Fundamental concerns\n\n#{treat_children(node, state).strip}\n\n"
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  ReverseAdoc::Converters.register :fund_cons, FundCons.new
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Head < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      title = extract_title(node)
         | 
| 9 | 
            +
                      "= #{title}\n:stem:\n\n"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    def extract_title(node)
         | 
| 13 | 
            +
                      title = node.at("./title")
         | 
| 14 | 
            +
                      return "(???)" if title.nil?
         | 
| 15 | 
            +
                      title.text
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  ReverseAdoc::Converters.register :head, Head.new
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Hr < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      "\n* * *\n"
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  ReverseAdoc::Converters.register :hr, Hr.new
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Ignore < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      '' # noop
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  ReverseAdoc::Converters.register :colgroup, Ignore.new
         | 
| 13 | 
            +
                  ReverseAdoc::Converters.register :col,      Ignore.new
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Introduction < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      "\n\n== Introduction\n\n#{treat_children(node, state).strip}\n\n"
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  ReverseAdoc::Converters.register :introduction, Introduction.new
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -5,12 +5,7 @@ module Stepmod | |
| 5 5 | 
             
                module Converters
         | 
| 6 6 | 
             
                  class Note < ReverseAdoc::Converters::Base
         | 
| 7 7 | 
             
                    def convert(node, state = {})
         | 
| 8 | 
            -
                       | 
| 9 | 
            -
                        [NOTE]
         | 
| 10 | 
            -
                        --
         | 
| 11 | 
            -
                        #{treat_children(node, state).strip}
         | 
| 12 | 
            -
                        --
         | 
| 13 | 
            -
                      TEMPLATE
         | 
| 8 | 
            +
                      "\n\n[NOTE]\n--\n#{treat_children(node, state).strip}\n--\n\n"
         | 
| 14 9 | 
             
                    end
         | 
| 15 10 | 
             
                  end
         | 
| 16 11 | 
             
                  ReverseAdoc::Converters.register :note, Note.new
         | 
| @@ -9,8 +9,9 @@ module Stepmod | |
| 9 9 | 
             
                      anchor = id ? "[[#{id}]]\n" : ""
         | 
| 10 10 | 
             
                      ol_count = state.fetch(:ol_count, 0) + 1
         | 
| 11 11 | 
             
                      attrs = ol_attrs(node)
         | 
| 12 | 
            -
                      res = "\n#{anchor}#{attrs}#{treat_children(node, state.merge(ol_count: ol_count))}"
         | 
| 13 | 
            -
                       | 
| 12 | 
            +
                      res = "\n\n#{anchor}#{attrs}#{treat_children(node, state.merge(ol_count: ol_count))}\n"
         | 
| 13 | 
            +
                      # Why do we add this?
         | 
| 14 | 
            +
                      # res = "\n" + res if node.parent && node.parent.name == 'note'
         | 
| 14 15 | 
             
                      res
         | 
| 15 16 | 
             
                    end
         | 
| 16 17 |  | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class P < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      id = node['id']
         | 
| 9 | 
            +
                      anchor = id ? "[[#{id}]]\n" : ""
         | 
| 10 | 
            +
                      if state[:tdsinglepara]
         | 
| 11 | 
            +
                        "#{anchor}#{treat_children(node, state).strip}"
         | 
| 12 | 
            +
                      else
         | 
| 13 | 
            +
                        "\n\n#{anchor}#{treat_children(node, state).strip}\n\n"
         | 
| 14 | 
            +
                      end
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  ReverseAdoc::Converters.register :p, P.new
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Q < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      content = treat_children(node, state)
         | 
| 9 | 
            +
                      "#{content[/^\s*/]}\"#{content.strip}\"#{content[/\s*$/]}"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  ReverseAdoc::Converters.register :q, Q.new
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Resource < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      treat_children(node, state)
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  ReverseAdoc::Converters.register :resource, Resource.new
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Schema < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      <<~TEMPLATE
         | 
| 9 | 
            +
                        (*"#{node['name']}"
         | 
| 10 | 
            +
                        #{treat_children(node, state).strip}
         | 
| 11 | 
            +
                        *)
         | 
| 12 | 
            +
                      TEMPLATE
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                  ReverseAdoc::Converters.register :schema, Schema.new
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class SchemaDiag < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      treat_children(node, state).strip
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  ReverseAdoc::Converters.register :schema_diag, SchemaDiag.new
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Strong < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      content = treat_children(node, state.merge(already_strong: true))
         | 
| 9 | 
            +
                      if content.strip.empty? || state[:already_strong]
         | 
| 10 | 
            +
                        content
         | 
| 11 | 
            +
                      else
         | 
| 12 | 
            +
                        "#{content[/^\s*/]}*#{content.strip}*#{content[/\s*$/]}"
         | 
| 13 | 
            +
                      end
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  ReverseAdoc::Converters.register :strong, Strong.new
         | 
| 18 | 
            +
                  ReverseAdoc::Converters.register :b,      Strong.new
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Sub < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      content = treat_children(node, state)
         | 
| 9 | 
            +
                      "#{content[/^\s*/]}~#{content.strip}~#{content[/\s*$/]}"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  ReverseAdoc::Converters.register :sub, Sub.new
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Sup < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      content = treat_children(node, state)
         | 
| 9 | 
            +
                      "#{content[/^\s*/]}^#{content.strip}^#{content[/\s*$/]}"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  ReverseAdoc::Converters.register :sup, Sup.new
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,68 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Stepmod
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Converters
         | 
| 6 | 
            +
                  class Text < ReverseAdoc::Converters::Base
         | 
| 7 | 
            +
                    def convert(node, state = {})
         | 
| 8 | 
            +
                      if node.text.strip.empty?
         | 
| 9 | 
            +
                        treat_empty(node, state)
         | 
| 10 | 
            +
                      else
         | 
| 11 | 
            +
                        treat_text(node)
         | 
| 12 | 
            +
                      end
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    private
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    def treat_empty(node, state)
         | 
| 18 | 
            +
                      parent = node.parent.name.to_sym
         | 
| 19 | 
            +
                      if [:ol, :ul].include?(parent)  # Otherwise the identation is broken
         | 
| 20 | 
            +
                        ''
         | 
| 21 | 
            +
                      elsif state[:tdsinglepara]
         | 
| 22 | 
            +
                        ''
         | 
| 23 | 
            +
                      elsif node.text == ' '          # Regular whitespace text node
         | 
| 24 | 
            +
                        ' '
         | 
| 25 | 
            +
                      else
         | 
| 26 | 
            +
                        ''
         | 
| 27 | 
            +
                      end
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    def treat_text(node)
         | 
| 31 | 
            +
                      text = node.text
         | 
| 32 | 
            +
                      text = preserve_nbsp(text)
         | 
| 33 | 
            +
                      # text = remove_border_newlines(text)
         | 
| 34 | 
            +
                      text = remove_inner_newlines(text)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                      text = preserve_keychars_within_backticks(text)
         | 
| 37 | 
            +
                      text = preserve_tags(text)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                      text
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    def preserve_nbsp(text)
         | 
| 43 | 
            +
                      text.gsub(/\u00A0/, " ")
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    def preserve_tags(text)
         | 
| 47 | 
            +
                      text.gsub(/[<>]/, '>' => '\>', '<' => '\<')
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    def remove_border_newlines(text)
         | 
| 51 | 
            +
                      text.gsub(/\A\n+/, '').gsub(/\n+\z/, '')
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    def remove_inner_newlines(text)
         | 
| 55 | 
            +
                      text.tr("\n\t", ' ').squeeze(' ')
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    def preserve_keychars_within_backticks(text)
         | 
| 59 | 
            +
                      text.gsub(/`.*?`/) do |match|
         | 
| 60 | 
            +
                        match.gsub('\_', '_').gsub('\*', '*')
         | 
| 61 | 
            +
                      end
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  ReverseAdoc::Converters.register :text, Text.new
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
            end
         |