]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Setup/Yaml.pm
git: Attribute reverts to the user doing the revert, not the wiki itself
[git.ikiwiki.info.git] / IkiWiki / Setup / Yaml.pm
index c7ff1988e850e9e04f3055d21d7018cff5e27234..6bf20f480d523ad5144dc6d1b61ec03d1f0118b5 100644 (file)
@@ -5,22 +5,20 @@ package IkiWiki::Setup::Yaml;
 use warnings;
 use strict;
 use IkiWiki;
+use Encode;
 
 sub loaddump ($$) {
        my $class=shift;
        my $content=shift;
 
-       eval q{use YAML};
+       eval q{use YAML::XS};
        die $@ if $@;
-       IkiWiki::Setup::merge(Load($content));
+       IkiWiki::Setup::merge(Load(encode_utf8($content)));
 }
 
 sub gendump ($@) {
        my $class=shift;
        
-       eval q{use YAML};
-       die $@ if $@;
-
        "# IkiWiki::Setup::Yaml - YAML formatted setup file",
        "#",
        (map { "# $_" } @_),
@@ -35,11 +33,15 @@ sub dumpline ($$$$) {
        my $type=shift;
        my $prefix=shift;
        
-       $YAML::UseHeader=0;
-       my $dump=Dump({$key => $value});
+       eval q{use YAML::XS};
+       die $@ if $@;
+       $YAML::XS::QuoteNumericStrings=0;
+
+       my $dump=decode_utf8(Dump({$key => $value}));
+       $dump=~s/^---\n//; # yaml header, we don't want
        chomp $dump;
        if (length $prefix) {
-               $dump=join("", map { $prefix.$_ } split(/\n/, $dump));
+               $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump));
        }
        return $dump;
 }