Sha256: bd1bebb152820c3e817bb7143eb12e787eb44e8c13103efe093847e282ee5c52

Contents?: true

Size: 1.25 KB

Versions: 25

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

# rubocop:disable Style/ClassAndModuleChildren
module Maglev::GetPageSections::TransformTextConcern
  def transform_text_content_setting(content, setting)
    return unless setting.options['html']

    content['value'] = replace_links_in_text(content['value'])
  end

  def replace_links_in_text(text)
    text.gsub(/<a([^>]+)>/) do |tag|
      link_type_matches = tag.match(/maglev-link-type="([^"]+)"/)
      link_id_matches = tag.match(/maglev-link-id="([^"]+)"/)
      section_id_matches = tag.match(/maglev-section-id="([^"]+)"/)
      path = find_link_page_path(link_type_matches, link_id_matches, section_id_matches)

      tag.gsub!(/href="([^"]+)"/, "href=\"#{path}\"") if path

      tag
    end
  end

  def find_link_page_path(link_type_matches, link_id_matches, section_id_matches)
    return unless link_type_matches && link_id_matches

    # rubocop:disable Style/StringHashKeys
    link = { 'link_type' => link_type_matches[1], 'link_id' => link_id_matches[1] }
    # rubocop:enable Style/StringHashKeys

    return unless %w[page static_page].include?(link['link_type'])

    link['section_id'] = section_id_matches[1] if section_id_matches

    replace_href_in_link(link)['href']
  end
end
# rubocop:enable Style/ClassAndModuleChildren

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
maglevcms-1.8.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.7.3 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.7.2 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.7.1 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.7.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.6.1 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.6.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.5.1 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.4.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.3.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.2.2 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.2.1 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.2.0 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.7 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.6 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.5 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.4 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.3 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.2 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb
maglevcms-1.1.1 app/services/concerns/maglev/get_page_sections/transform_text_concern.rb