cleanup
[ikiwiki.git] / IkiWiki / Setup / Yaml.pm
1 #!/usr/bin/perl
2
3 package IkiWiki::Setup::Yaml;
4
5 use warnings;
6 use strict;
7 use IkiWiki;
8 use Encode;
9
10 sub loaddump ($$) {
11         my $class=shift;
12         my $content=shift;
13
14         eval q{use YAML::Any};
15         eval q{use YAML} if $@;
16         die $@ if $@;
17         $YAML::Syck::ImplicitUnicode=1;
18         IkiWiki::Setup::merge(Load(encode_utf8($content)));
19 }
20
21 sub gendump ($@) {
22         my $class=shift;
23         
24         "# IkiWiki::Setup::Yaml - YAML formatted setup file",
25         "#",
26         (map { "# $_" } @_),
27         "#",
28         IkiWiki::Setup::commented_dump(\&dumpline, "")
29 }
30
31
32 sub dumpline ($$$$) {
33         my $key=shift;
34         my $value=shift;
35         my $type=shift;
36         my $prefix=shift;
37         
38         eval q{use YAML::Old};
39         eval q{use YAML} if $@;
40         die $@ if $@;
41         $YAML::UseHeader=0;
42
43         my $dump=Dump({$key => $value});
44         chomp $dump;
45         if (length $prefix) {
46                 $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump));
47         }
48         return $dump;
49 }
50
51 1