X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=IkiWiki%2FSetup%2FYaml.pm;h=6da93bb644bb5f639dd6871b492782cfa059345d;hb=277ccb431728edc6dcb3762510182b0eb3345da1;hp=ba9192faf6f29ceb4fbb1f4a944de4b41bce3bd6;hpb=bba513a3e52170dc06b545a44f2d859ae4b757b5;p=ikiwiki.git diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm index ba9192faf..6da93bb64 100644 --- a/IkiWiki/Setup/Yaml.pm +++ b/IkiWiki/Setup/Yaml.pm @@ -5,18 +5,22 @@ package IkiWiki::Setup::Yaml; use warnings; use strict; use IkiWiki; -use YAML; +use Encode; sub loaddump ($$) { my $class=shift; my $content=shift; - IkiWiki::Setup::merge(Load($content)); + eval q{use YAML::Any}; + eval q{use YAML} if $@; + die $@ if $@; + $YAML::Syck::ImplicitUnicode=1; + IkiWiki::Setup::merge(Load(encode_utf8($content))); } sub gendump ($@) { my $class=shift; - + "# IkiWiki::Setup::Yaml - YAML formatted setup file", "#", (map { "# $_" } @_), @@ -31,11 +35,15 @@ sub dumpline ($$$$) { my $type=shift; my $prefix=shift; + eval q{use YAML::Old}; + eval q{use YAML} if $@; + die $@ if $@; $YAML::UseHeader=0; + my $dump=Dump({$key => $value}); chomp $dump; if (length $prefix) { - $dump=join("", map { $prefix.$_ } split(/\n/, $dump)); + $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump)); } return $dump; }