summaryrefslogtreecommitdiff
path: root/IkiWiki/Setup/Yaml.pm
blob: 8b876e297527af0de21bb8e70d63e5ddcbfdd14e (plain)
  1. #!/usr/bin/perl
  2. package IkiWiki::Setup::Yaml;
  3. use warnings;
  4. use strict;
  5. use IkiWiki;
  6. sub loaddump ($$) {
  7. my $class=shift;
  8. my $content=shift;
  9. eval q{use YAML::Any};
  10. eval q{use YAML} if $@;
  11. die $@ if $@;
  12. IkiWiki::Setup::merge(Load($content));
  13. }
  14. sub gendump ($@) {
  15. my $class=shift;
  16. "# IkiWiki::Setup::Yaml - YAML formatted setup file",
  17. "#",
  18. (map { "# $_" } @_),
  19. "#",
  20. IkiWiki::Setup::commented_dump(\&dumpline, "")
  21. }
  22. sub dumpline ($$$$) {
  23. my $key=shift;
  24. my $value=shift;
  25. my $type=shift;
  26. my $prefix=shift;
  27. eval q{use YAML::Old};
  28. eval q{use YAML} if $@;
  29. die $@ if $@;
  30. $YAML::UseHeader=0;
  31. my $dump=Dump({$key => $value});
  32. chomp $dump;
  33. if (length $prefix) {
  34. $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump));
  35. }
  36. return $dump;
  37. }
  38. 1