Sha256: 5124cd4debf5bbb5ac3eaf8f886a5b0ad76f359146afccd456b861735a5092e1

Contents?: true

Size: 818 Bytes

Versions: 9

Compression:

Stored size: 818 Bytes

Contents

# frozen_string_literal: true

module DraftjsHtml
  module SpecSupport
    module KeyNormalization
      def normalize_keys(raw_draftjs)
        draftjs = DraftjsHtml::Draftjs::Content.parse(raw_draftjs)
        draftjs.blocks.each.with_index do |block, i|
          block.key = "block-key-#{i}"
        end

        draftjs.entity_map.keys.each.with_index do |entity_key, i|
          new_key = "entity-key-#{i}"
          draftjs.entity_map[new_key] = draftjs.entity_map.delete(entity_key)
          matching_entity_ranges = draftjs.blocks.flat_map { |block| block.raw_entity_ranges.select { |entity_range| entity_range['key'] == entity_key } }
          matching_entity_ranges.each { |range| range['key'] = new_key }
        end

        DraftjsHtml::Draftjs::ToRaw.new.convert(draftjs)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
draftjs_html-0.34.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.33.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.32.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.31.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.30.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.29.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.28.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.27.0 lib/draftjs_html/spec_support.rb
draftjs_html-0.26.0 lib/draftjs_html/spec_support.rb