Method: Wordmove::SqlAdapter::Default#serialized_replace!

Defined in:
lib/wordmove/sql_adapter/default.rb

#serialized_replace!(source_field, dest_field) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/wordmove/sql_adapter/default.rb', line 42

def serialized_replace!(source_field, dest_field)
  length_delta = source_field.length - dest_field.length

  sql_content.gsub!(/s:(\d+):([\\]*['"])(.*?)\2;/) do |_|
    length = Regexp.last_match(1).to_i
    delimiter = Regexp.last_match(2)
    string = Regexp.last_match(3)

    string.gsub!(/#{Regexp.escape(source_field)}/) do |_|
      length -= length_delta
      dest_field
    end

    %(s:#{length}:#{delimiter}#{string}#{delimiter};)
  end
end