Sha256: 4b2ae6f2ec9c1581df8d8d7cb1b8ff39f908e9ff01cc393aee45790c80850f48

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

module Iev
  module Utilities
    SIMG_PATH_REGEX = "<simg .*\\/\\$file\\/([\\d\\-\\w\.]+)>"
    FIGURE_ONE_REGEX =
      '<p><b>\\s*Figure\\s+(\\d)\\s+[–-]\\s+(.+)\\s*<\\/b>(<\\/p>)?'
    FIGURE_TWO_REGEX = "#{FIGURE_ONE_REGEX}\\s*#{FIGURE_ONE_REGEX}".freeze
    IMAGE_PATH_PREFIX = "image::/assets/images/parts"

    def parse_anchor_tag(text, term_domain)
      return unless text

      # Convert IEV term references
      # Convert href links
      # Need to take care of this pattern:
      #  `inverse de la <a href="IEV103-06-01">période<a>`
      text.gsub(
        %r{<a href="?(IEV)\s*(\d\d\d-\d\d-\d\d\d?)"?>(.*?)</?a>},
        '{{\3, \1:\2}}',
      ).gsub(
        %r{<a href="?\s*(\d\d\d-\d\d-\d\d\d?)"?>(.*?)</?a>},
        '{{\3, IEV:\2}}',
      ).gsub(
        # To handle <a> tags without ending tag like
        #  `Voir <a href=IEV103-05-21>IEV 103-05-21`
        #  for concept '702-03-11' in `fr`
        /<a href="?(IEV)?\s*(\d\d\d-\d\d-\d\d\d?)"?>(.*?)$/,
        '{{\3, IEV:\2}}',
      ).gsub(
        %r{<a href="?([^<>]*?)"?>(.*?)</a>},
        '\1[\2]',
      ).gsub(
        Regexp.new([SIMG_PATH_REGEX, '\\s*', FIGURE_TWO_REGEX].join),
        "#{IMAGE_PATH_PREFIX}/#{term_domain}/\\1[Figure \\2 - \\3; \\6]",
      ).gsub(
        Regexp.new([SIMG_PATH_REGEX, '\\s*', FIGURE_ONE_REGEX].join),
        "#{IMAGE_PATH_PREFIX}/#{term_domain}/\\1[Figure \\2 - \\3]",
      ).gsub(
        /<img\s+([^<>]+?)\s*>/,
        "#{IMAGE_PATH_PREFIX}/#{term_domain}/\\1[]",
      ).gsub(
        /<br>/,
        "\n",
      ).gsub(
        %r{<b>(.*?)</b>},
        '*\\1*',
      )
    end

    def replace_newlines(input)
      input.gsub('\n', "\n\n")
        .gsub(/<[pbr]+>/, "\n\n")
        .gsub(/\s*\n[\n\s]+/, "\n\n")
        .strip
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
iev-0.3.5 lib/iev/utilities.rb