]> sipb.mit.edu Git - ikiwiki.git/blob - IkiWiki/Setup/Yaml.pm
8ad44eb4afab294114ad1dad17f21c915794904a
[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
9 sub loaddump ($$) {
10         my $class=shift;
11         my $content=shift;
12
13         eval q{use YAML::Any};
14         eval q{use YAML} if $@;
15         die $@ if $@;
16         IkiWiki::Setup::merge(Load($content));
17 }
18
19 sub gendump ($@) {
20         my $class=shift;
21         
22         eval q{use YAML::Any};
23         eval q{use YAML} if $@;
24         die $@ if $@;
25
26         "# IkiWiki::Setup::Yaml - YAML formatted setup file",
27         "#",
28         (map { "# $_" } @_),
29         "#",
30         IkiWiki::Setup::commented_dump(\&dumpline, "")
31 }
32
33
34 sub dumpline ($$$$) {
35         my $key=shift;
36         my $value=shift;
37         my $type=shift;
38         my $prefix=shift;
39         
40         $YAML::UseHeader=0;
41         my $dump=Dump({$key => $value});
42         chomp $dump;
43         if (length $prefix) {
44                 $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump));
45         }
46         return $dump;
47 }
48
49 1