Initial patch from Bruno for implementing a ::Storage::Format::XML
[gitmo/MooseX-Storage.git] / lib / MooseX / Storage / Util.pm
index e0ddcb7..e11b33c 100644 (file)
@@ -2,8 +2,9 @@ package MooseX::Storage::Util;
 use Moose qw(confess blessed);
 
 use MooseX::Storage::Engine ();
+use utf8 ();
 
-our $VERSION   = '0.02';
+our $VERSION   = '0.18';
 our $AUTHORITY = 'cpan:STEVAN';
 
 sub peek {
@@ -30,11 +31,12 @@ sub peek {
 
 sub _inflate_json {
     my ($class, $json) = @_;
-    
-    require JSON::Any;
-    eval { JSON::Any->import };
+
+    eval { require JSON::Any; JSON::Any->import };
     confess "Could not load JSON module because : $@" if $@; 
     
+    utf8::encode($json) if utf8::is_utf8($json);    
+    
     my $data = eval { JSON::Any->jsonToObj($json) };
     if ($@) {
         confess "There was an error when attempting to peek at JSON: $@";
@@ -49,7 +51,6 @@ sub _inflate_yaml {
     require Best; 
     eval { Best->import([[ qw[YAML::Syck YAML] ]]) };
     confess "Could not load YAML module because : $@" if $@; 
-        
     
     my $inflater = Best->which('YAML::Syck')->can('Load');
     
@@ -63,6 +64,20 @@ sub _inflate_yaml {
     return $data;
 }
 
+sub _inflate_xml {
+    my ($class, $xml) = @_;
+    
+    eval { require XML::Simple; XML::Simple->import };
+    confess "Could not load XML::Simple module because : $@" if $@; 
+    
+    my $data = eval { XMLin($xml, SuppressEmpty => 1) };
+    if ($@) {
+        confess "There was an error when attempting to peek at XML: $@";
+    }
+    
+    return $data; 
+}
+
 1;
 
 __END__
@@ -140,7 +155,7 @@ Stevan Little E<lt>stevan.little@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2007 by Infinity Interactive, Inc.
+Copyright 2007-2008 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>