diff options
author | Jonas Smedegaard <dr@jones.dk> | 2010-08-27 10:01:58 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2010-08-27 10:01:58 +0200 |
commit | f398ad035b973608d380c9939ea845d8e2a0cdc2 (patch) | |
tree | 1ba1a0c94e375ab8ed609eaa57a542c6b87de5a8 /IkiWiki/Setup/Yaml.pm | |
parent | 958e5735c946263a111420fe47abe58782581e8c (diff) | |
parent | 6d213a0c739d5b34357b01a616f99197eeba6ad9 (diff) |
Merge branch 'master' of git://git.ikiwiki.info
Diffstat (limited to 'IkiWiki/Setup/Yaml.pm')
-rw-r--r-- | IkiWiki/Setup/Yaml.pm | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm new file mode 100644 index 000000000..904784728 --- /dev/null +++ b/IkiWiki/Setup/Yaml.pm @@ -0,0 +1,50 @@ +#!/usr/bin/perl + +package IkiWiki::Setup::Yaml; + +use warnings; +use strict; +use IkiWiki; + +sub loaddump ($$) { + my $class=shift; + my $content=shift; + + eval q{use YAML::Any}; + eval q{use YAML} if $@; + die $@ if $@; + $YAML::Syck::ImplicitUnicode=1; + IkiWiki::Setup::merge(Load($content)); +} + +sub gendump ($@) { + my $class=shift; + + "# IkiWiki::Setup::Yaml - YAML formatted setup file", + "#", + (map { "# $_" } @_), + "#", + IkiWiki::Setup::commented_dump(\&dumpline, "") +} + + +sub dumpline ($$$$) { + my $key=shift; + my $value=shift; + 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("\n", map { $prefix.$_ } split(/\n/, $dump)); + } + return $dump; +} + +1 |