Skip to content

Commit 7ae7135

Browse files
committed
prepare BBBikeYAML to use alternative YAML implementations
However, currently only YAML::XS is used.
1 parent 77411b5 commit 7ae7135

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

BBBikeYAML.pm

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,49 @@
33
#
44
# Author: Slaven Rezic
55
#
6-
# Copyright (C) 2013 Slaven Rezic. All rights reserved.
6+
# Copyright (C) 2013,2025 Slaven Rezic. All rights reserved.
77
# This package is free software; you can redistribute it and/or
88
# modify it under the same terms as Perl itself.
99
#
10-
11-
# WWW: http://www.rezic.de/eserte/
10+
# WWW: https://github.com/eserte/bbbike
1211
#
1312

1413
package BBBikeYAML;
1514

1615
use strict;
1716
use vars qw($VERSION);
18-
$VERSION = '0.01';
17+
$VERSION = '0.02';
1918

2019
use Exporter 'import';
2120
our @EXPORT_OK = qw(Load Dump LoadFile DumpFile);
2221

23-
use YAML::XS ();
24-
25-
sub Load { YAML::XS::Load(@_) }
26-
sub Dump { YAML::XS::Dump(@_) }
27-
sub LoadFile { YAML::XS::LoadFile(@_) }
28-
sub DumpFile { YAML::XS::DumpFile(@_) }
22+
# Note: currently only YAML::XS is supported
23+
# XXX: other YAML modules are prepared, but exact configuration regarding utf8 handling etc. is missing
24+
25+
if (eval { require YAML::XS; 1 }) {
26+
*Load = sub { YAML::XS::Load(@_) };
27+
*Dump = sub { YAML::XS::Dump(@_) };
28+
*LoadFile = sub { YAML::XS::LoadFile(@_) };
29+
*DumpFile = sub { YAML::XS::DumpFile(@_) }
30+
} elsif (0 && eval { require YAML::PP; 1 }) {
31+
*Load = sub { YAML::PP::Load(@_) };
32+
*Dump = sub { YAML::PP::Dump(@_) };
33+
*LoadFile = sub { YAML::PP::LoadFile(@_) };
34+
*DumpFile = sub { YAML::PP::DumpFile(@_) }
35+
} elsif (0 && eval { require YAML::Syck; 1 }) {
36+
*Load = sub { YAML::Syck::Load(@_) };
37+
*Dump = sub { YAML::Syck::Dump(@_) };
38+
*LoadFile = sub { YAML::Syck::LoadFile(@_) };
39+
*DumpFile = sub { YAML::Syck::DumpFile(@_) }
40+
} elsif (0 && eval { require YAML; 1 }) {
41+
*Load = sub { YAML::Load(@_) };
42+
*Dump = sub { YAML::Dump(@_) };
43+
*LoadFile = sub { YAML::LoadFile(@_) };
44+
*DumpFile = sub { YAML::DumpFile(@_) }
45+
} else {
46+
#die "Either YAML::XS, YAML::PP, YAML::Syck or YAML required";
47+
die $@;
48+
}
2949

3050
1;
3151

0 commit comments

Comments
 (0)