YAML to anchor same strings in dumps


#1

Hi, there

Is there any way to make YAML alias same strings in dumps? The following
code fragment:

require ‘yaml’
s = ‘a’ * 10
puts [ s, s ].to_yaml

Produces this:

  • aaaaaaaaaa
  • aaaaaaaaaa

While I need:

  • &id001 aaaaaaaaaa
  • *id001

Interestingly, if I define s as:
s = [ ‘a’ * 10 ]

The output is aliased just fine:

  • &id001
    • aaaaaaaaaa
  • *id001

Thanks,
Gennady.


#2

  • &id001 aaaaaaaaaa
  • *id001

Found a solution:

module ComplexYamlObject
def is_complex_yaml?
true
end
end

s = ‘a’ * 10
s.extend ComplexYamlObject
puts [ s, s ].to_yaml

Then the output will be just as I originally wanted:


  • &id001 aaaaaaaaaa
  • *id001

Thought somebody might find it useful,
Gennady.