Hello community,

here is the log from the commit of package perl-Mac-PropertyList for 
openSUSE:Factory checked in at 2018-04-19 15:26:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mac-PropertyList (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mac-PropertyList.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mac-PropertyList"

Thu Apr 19 15:26:47 2018 rev:17 rq:593459 version:1.413

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Mac-PropertyList/perl-Mac-PropertyList.changes  
    2015-02-08 11:42:48.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Mac-PropertyList.new/perl-Mac-PropertyList.changes
 2018-04-19 15:26:50.913523964 +0200
@@ -1,0 +2,33 @@
+Fri Mar 23 06:30:16 UTC 2018 - [email protected]
+
+- updated to 1.413
+   see /usr/share/doc/packages/perl-Mac-PropertyList/Changes
+
+  1.413 2018-03-22T18:51:07Z
+       * Update to Artistic License 2.0
+
+-------------------------------------------------------------------
+Mon Jul 31 05:49:21 UTC 2017 - [email protected]
+
+- updated to 1.412
+   see /usr/share/doc/packages/perl-Mac-PropertyList/Changes
+
+  1.412 2017-07-30T18:27:33Z
+       * Fix for plist files with comments ([email protected]) RT #122466
+       and GitHub #5 (as a pull request)
+       * Note that this module does not handle ASCII or JSON formats (but they
+       are in the wishlist now) (anonymous Yahoo! user)
+
+-------------------------------------------------------------------
+Fri Jul 21 05:43:51 UTC 2017 - [email protected]
+
+- updated to 1.411
+   see /usr/share/doc/packages/perl-Mac-PropertyList/Changes
+
+-------------------------------------------------------------------
+Wed Jul 19 05:48:51 UTC 2017 - [email protected]
+
+- updated to 1.411
+   see /usr/share/doc/packages/perl-Mac-PropertyList/Changes
+
+-------------------------------------------------------------------

Old:
----
  Mac-PropertyList-1.41.tar.gz

New:
----
  Mac-PropertyList-1.413.tar.gz
  cpanspec.yml

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mac-PropertyList.spec ++++++
--- /var/tmp/diff_new_pack.MQIxrc/_old  2018-04-19 15:26:51.525499040 +0200
+++ /var/tmp/diff_new_pack.MQIxrc/_new  2018-04-19 15:26:51.525499040 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Mac-PropertyList
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,18 +17,20 @@
 
 
 Name:           perl-Mac-PropertyList
-Version:        1.41
+Version:        1.413
 Release:        0
 %define cpan_name Mac-PropertyList
-Summary:        work with Mac plists at a low level
-License:        Artistic-1.0 or GPL-1.0+
+Summary:        Work with Mac Plists at a Low Level
+License:        Artistic-2.0
 Group:          Development/Libraries/Perl
 Url:            http://search.cpan.org/dist/Mac-PropertyList/
-Source:         
http://www.cpan.org/authors/id/B/BD/BDFOY/%{cpan_name}-%{version}.tar.gz
+Source0:        
https://cpan.metacpan.org/authors/id/B/BD/BDFOY/%{cpan_name}-%{version}.tar.gz
+Source1:        cpanspec.yml
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  perl
 BuildRequires:  perl-macros
+BuildRequires:  perl(Test::More) >= 0.94
 BuildRequires:  perl(XML::Entities)
 BuildRequires:  perl(parent)
 Requires:       perl(XML::Entities)
@@ -37,9 +39,9 @@
 
 %description
 This module is a low-level interface to the Mac OS X Property List (plist)
-format. You probably shouldn't use this in applications–build interfaces on
-top of this so you don't have to put all the heinous multi-level object
-stuff where people have to look at it.
+format in either XML or binary. You probably shouldn't use this in
+applications–build interfaces on top of this so you don't have to put all
+the heinous multi-level object stuff where people have to look at it.
 
 You can parse a plist file and get back a data structure. You can take that
 data structure and get back the plist as XML. If you want to change the
@@ -48,6 +50,14 @@
 You don't need to be on Mac OS X to use this. It simply parses and
 manipulates a text format that Mac OS X uses.
 
+If you need to work with the old ASCII or newer JSON formet, you can use
+the *plutil* tool that comes with MacOS X:
+
+       % plutil -convert xml1 -o ExampleBinary.xml.plist ExampleBinary.plist
+
+Or, you can extend this module to handle those formats (and send a pull
+request).
+
 %prep
 %setup -q -n %{cpan_name}-%{version}
 
@@ -65,6 +75,7 @@
 
 %files -f %{name}.files
 %defattr(-,root,root,755)
-%doc Changes examples LICENSE README
+%doc Changes examples
+%license LICENSE
 
 %changelog

++++++ Mac-PropertyList-1.41.tar.gz -> Mac-PropertyList-1.413.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/Changes 
new/Mac-PropertyList-1.413/Changes
--- old/Mac-PropertyList-1.41/Changes   2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/Changes  2018-03-22 19:51:21.000000000 +0100
@@ -1,125 +1,141 @@
-# Changes for Mac::PropertyList
+Revision history for Perl module Mac::PropertyList
 
-1.41 - Fri Sep 12 06:15:56 2014
-       * Fix up some metadata (GitHub #4)
+1.413 2018-03-22T18:51:07Z
+       * Update to Artistic License 2.0
 
-1.40 - Fri Jan  3 13:57:08 2014
-       * Get rid of MYMETA
+1.412 2017-07-30T18:27:33Z
+       * Fix for plist files with comments ([email protected]) RT #122466
+       and GitHub #5 (as a pull request)
+       * Note that this module does not handle ASCII or JSON formats (but they
+       are in the wishlist now) (anonymous Yahoo! user)
 
-1.39 - Fri Sep 27 16:28:21 2013
-       * Bump to full release
+1.411 2017-07-19T02:10:42Z
+       * Bram Stappers fixed a regression with XML comments
 
-1.38_02 - Mon Sep 23 19:52:20 2013
-       * Fix non-portable strftime format (RT #83460)
+1.41_01 2015-01-29T04:41:09Z
+       - RT #101795: Mis-parse or hang while parsing non-pretty XML (Tom Wyant)
+       - RT #101796: Wide character in print warning in t/read_binary.t (Tom 
Wyant)
 
-1.38_01 - Sun Feb 10 17:08:57 2013
-       * Wim Lewis improved the binary reader / writer and made better
+1.41 2014-09-12
+       - Fix up some metadata (GitHub #4)
+
+1.40 2014-01-03
+       - Get rid of MYMETA
+
+1.39 2013-09-27
+       - Bump to full release
+
+1.38_02 2013-09-23
+       - Fix non-portable strftime format (RT #83460)
+
+1.38_01 2013-02-10
+       - Wim Lewis improved the binary reader / writer and made better
        tests for it.
 
-1.38 - Tue Oct 23 15:44:26 2012
-       * Wim Lewis <[email protected]> added WriteBinary. Great work!
+1.38 2012-10-23
+       - Wim Lewis <[email protected]> added WriteBinary. Great work!
 
-1.37 - Thu Aug 30 11:39:39 2012
-       * fix plist_as_perl to be the same as as_perl (and as
+1.37 2012-08-30
+       - fix plist_as_perl to be the same as as_perl (and as
        documented)
 
-1.36 - Sat Jun 16 16:10:01 2012
-       * Update the docs, and make the previous dev releases official
+1.36 2012-06-16
+       - Update the docs, and make the previous dev releases official
 
-1.35 - Fri Mar  9 19:38:59 2012
-       * Document the as_perl method, which undecorates that internal
+1.35 2012-03-09
+       - Document the as_perl method, which undecorates that internal
        data structure
 
-1.34 - Mon Jul 11 18:10:36 2011
-       * In ReadBinary, handle the data as big-endian. This means you
+1.34 2011-07-11
+       - In ReadBinary, handle the data as big-endian. This means you
        need the > pack modifier introduced in 5.10.
 
-1.33_02 - Sat Jul  9 13:17:15 2011
-       * Require 5.10 because I need the > pack modifier
+1.33_02 2011-07-09
+       - Require 5.10 because I need the > pack modifier
 
-1.33_01 - Sat Jul  2 18:06:19 2011
-       * Ensure binary reads are for big endian
-       * Various cleanups for format and whitespace
+1.33_01 2011-07-02
+       - Ensure binary reads are for big endian
+       - Various cleanups for format and whitespace
 
-1.33 - Tue Nov 24 08:00:33 2009
-       * Hey, you have to decode those XML entities as you read
+1.33 2009-11-24
+       - Hey, you have to decode those XML entities as you read
        them.
 
-1.32 - Wed Sep 16 23:03:57 CDT 2009
-       * Things seen to work, so lets release it.
+1.32 2009-09-16
+       - Things seen to work, so lets release it.
 
-1.31_01 - Sun May  3 06:40:14 2009
-       * Added initial support for reading binary property lists
+1.31_01 2009-05-03
+       - Added initial support for reading binary property lists
 
-1.31 - Wed Jan 16 05:28:00 2008
-       * Clean up for move from CVS to SVN. No need to upgrade.
+1.31 2008-01-16
+       - Clean up for move from CVS to SVN. No need to upgrade.
 
-1.30 - Tue Jan  9 22:32:27 2007
-       * updated copyright and license info
-       * no code changes, so no need to upgrade
+1.30 2007-01-09
+       - updated copyright and license info
+       - no code changes, so no need to upgrade
 
-1.29 - Wed May 17 19:25:09 2006
-       * Added a parse_plist_fh function so you can open the files 
+1.29 2006-05-17
+       - Added a parse_plist_fh function so you can open the files
        any way that you like (for instance, as ":utf8").
-       * Added pod_coverage.t to MANIFEST. I use it so I might as
+       - Added pod_coverage.t to MANIFEST. I use it so I might as
        well distribute it.
 
-1.28 - Tue May 16 01:15:52 2006
-       * This change actually makes the change I claimed in the last version.
-       * I added parse_plist_file to @EXPORT_OK, where it should have been.
-
-1.26 - Tue May 16 01:02:29 2006
-       * Added parse_plist_file to the export list. Why was it missing?
-       * There are no other code changes, and you should upgrade
+1.28 2006-05-16
+       - This change actually makes the change I claimed in the last version.
+       - I added parse_plist_file to @EXPORT_OK, where it should have been.
+
+1.26 2006-05-16
+       - Added parse_plist_file to the export list. Why was it missing?
+       - There are no other code changes, and you should upgrade
        if your users expect the documentation to be right. :)
 
-1.24 - Tue Jan 17 21:19:40 2006
-       * Ricardo Signes added as_basic_data() methods to turn the plist
+1.24 2006-01-17
+       - Ricardo Signes added as_basic_data() methods to turn the plist
        stuff into a Perl data structure without all the plist
        tracking. That's probably what most people want if they
        simply want to get data.
 
-1.23 - Sun Jun  5 19:34:38 2005
-       * Mike Ciul added some code to handle input differently for different
+1.23 2005-06-05
+       - Mike Ciul added some code to handle input differently for different
        sources (file, string, etc). It's a lot faster for very large files.
-       * Most everything else is the same, so unless you need to work with
+       - Most everything else is the same, so unless you need to work with
        very large files, you don't need to rush to upgrade.
 
-1.21 - Fri Mar 11 22:49:28 2005
-       * Added POD coverage tests
-       * Bumped version past the 1.0 barrier
-       * No code changes: no need to upgrade
-
-0.95 - Fri Mar 11 22:45:21 2005
-       * Added POD coverage tests, fixed issues
-       * no code changes: no need to upgrade
+1.21 2005-03-11
+       - Added POD coverage tests
+       - Bumped version past the 1.0 barrier
+       - No code changes: no need to upgrade
+
+0.95 2005-03-11
+       - Added POD coverage tests, fixed issues
+       - no code changes: no need to upgrade
 
-0.95 - Thu Dec  2 03:23:26 2004
-       * added Exporter support so you can import the functions, just
+0.95 2004-12-02
+       - added Exporter support so you can import the functions, just
        like the examples showed.  Nothing is imported without you asking
        for it.
 
-0.9 - Thu Sep  2 20:15:28 2004
-       * fixed from with Time::HiRes tests
-       * cleaned up distribution
-       * No need to upgrade if you have the previous version (0.11)
+0.9 2004-09-02
+       - fixed from with Time::HiRes tests
+       - cleaned up distribution
+       - No need to upgrade if you have the previous version (0.11)
 
-0.51 - Tue Feb  3 16:39:39 2004
-    * Refactored the module to get rid of goofy data structure—if you
+0.51 2004-02-03
+       - Refactored the module to get rid of goofy data structure—if you
     peeked behind-the-scenes this will bite you
-    * Each type in the plist now has its own class, with methods to affect it
+       - Each type in the plist now has its own class, with methods to affect 
it
 
-0.11 - Sat Jan 31 11:24:53 CST 2004
-       * No code changes.
-       * Removed requirements on Test::Manifest and Test::Pod
-       * Fixed warnings that show up under -w
-
-0.10 - Mon Feb  3 19:53:24 2003
-       * No code changes
-       * added missing modules to PREREQ_PM
-       * tweaked false_key test
-       * no need to upgrade from 0.09 if you already have it installed
+0.11 2004-01-31
+       - No code changes.
+       - Removed requirements on Test::Manifest and Test::Pod
+       - Fixed warnings that show up under -w
+
+0.10 2003-02-03
+       - No code changes
+       - added missing modules to PREREQ_PM
+       - tweaked false_key test
+       - no need to upgrade from 0.09 if you already have it installed
 
-0.09 - Fri Jan 31 11:20:53 2003
-       * fixed bug in which a dict key named "0" would kill the program
+0.09 2003-01-31
+       - fixed bug in which a dict key named "0" would kill the program
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/INSTALL.SKIP 
new/Mac-PropertyList-1.413/INSTALL.SKIP
--- old/Mac-PropertyList-1.41/INSTALL.SKIP      1970-01-01 01:00:00.000000000 
+0100
+++ new/Mac-PropertyList-1.413/INSTALL.SKIP     2018-03-22 19:51:21.000000000 
+0100
@@ -0,0 +1,6 @@
+README\.pod
+README.*
+
+# things that might be in local directories after fooling
+# around with them
+\.DS_Store
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/LICENSE 
new/Mac-PropertyList-1.413/LICENSE
--- old/Mac-PropertyList-1.41/LICENSE   2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/LICENSE  2018-03-22 19:51:21.000000000 +0100
@@ -1 +1,177 @@
-You can use Mac::PropertyList under the same terms as Perl itself.
\ No newline at end of file
+The Mac::PropertyList module is licensed under the same terms as perl
+itself, under the Artistic License 2.0.
+
+
+Artistic License 2.0
+Copyright (c) 2000-2006, The Perl Foundation.
+http://www.perlfoundation.org/artistic_license_2_0
+
+Preamble
+
+This license establishes the terms under which a given free software
+Package may be copied, modified, distributed, and/or redistributed.
+The intent is that the Copyright Holder maintains some artistic
+control over the development of that Package while still keeping the
+Package available as open source and free software.
+
+You are always permitted to make arrangements wholly outside of this
+license directly with the Copyright Holder of a given Package. If the
+terms of this license do not permit the full use that you propose to
+make of the Package, you should contact the Copyright Holder and seek
+a different licensing arrangement.
+
+Definitions
+
+"Copyright Holder" means the individual(s) or organization(s) named in
+the copyright notice for the entire Package.
+
+"Contributor" means any party that has contributed code or other
+material to the Package, in accordance with the Copyright Holder's
+procedures.
+
+"You" and "your" means any person who would like to copy, distribute,
+or modify the Package.
+
+"Package" means the collection of files distributed by the Copyright
+Holder, and derivatives of that collection and/or of those files. A
+given Package may consist of either the Standard Version, or a
+Modified Version.
+
+"Distribute" means providing a copy of the Package or making it
+accessible to anyone else, or in the case of a company or
+organization, to others outside of your company or organization.
+
+"Distributor Fee" means any fee that you charge for Distributing this
+Package or providing support for this Package to another party. It
+does not mean licensing fees.
+
+"Standard Version" refers to the Package if it has not been modified,
+or has been modified only in ways explicitly requested by the
+Copyright Holder.
+
+"Modified Version" means the Package, if it has been changed, and such
+changes were not explicitly requested by the Copyright Holder.
+
+"Original License" means this Artistic License as Distributed with the
+Standard Version of the Package, in its current version or as it may
+be modified by The Perl Foundation in the future.
+
+"Source" form means the source code, documentation source, and
+configuration files for the Package.
+
+"Compiled" form means the compiled bytecode, object code, binary, or
+any other form resulting from mechanical transformation or translation
+of the Source form.
+
+Permission for Use and Modification Without Distribution
+
+(1) You are permitted to use the Standard Version and create and use
+Modified Versions for any purpose without restriction, provided that
+you do not Distribute the Modified Version.
+
+Permissions for Redistribution of the Standard Version
+
+(2) You may Distribute verbatim copies of the Source form of the
+Standard Version of this Package in any medium without restriction,
+either gratis or for a Distributor Fee, provided that you duplicate
+all of the original copyright notices and associated disclaimers. At
+your discretion, such verbatim copies may or may not include a
+Compiled form of the Package.
+
+(3) You may apply any bug fixes, portability changes, and other
+modifications made available from the Copyright Holder. The resulting
+Package will still be considered the Standard Version, and as such
+will be subject to the Original License.
+
+Distribution of Modified Versions of the Package as Source
+
+(4) You may Distribute your Modified Version as Source (either gratis
+or for a Distributor Fee, and with or without a Compiled form of the
+Modified Version) provided that you clearly document how it differs
+from the Standard Version, including, but not limited to, documenting
+any non-standard features, executables, or modules, and provided that
+you do at least ONE of the following:
+
+       (a) make the Modified Version available to the Copyright Holder of the
+       Standard Version, under the Original License, so that the Copyright
+       Holder may include your modifications in the Standard Version.
+
+       (b) ensure that installation of your Modified Version does not prevent
+       the user installing or running the Standard Version. In addition, the
+       Modified Version must bear a name that is different from the name of
+       the Standard Version.
+
+       (c) allow anyone who receives a copy of the Modified Version to make
+       the Source form of the Modified Version available to others under
+
+               (i) the Original License or
+
+               (ii) a license that permits the licensee to freely copy, modify 
and
+               redistribute the Modified Version using the same licensing 
terms that
+               apply to the copy that the licensee received, and requires that 
the
+               Source form of the Modified Version, and of any works derived 
from it,
+               be made freely available in that license fees are prohibited but
+               Distributor Fees are allowed.
+
+Distribution of Compiled Forms of the Standard Version or Modified
+Versions without the Source
+
+(5) You may Distribute Compiled forms of the Standard Version without
+the Source, provided that you include complete instructions on how to
+get the Source of the Standard Version. Such instructions must be
+valid at the time of your distribution. If these instructions, at any
+time while you are carrying out such distribution, become invalid, you
+must provide new instructions on demand or cease further distribution.
+If you provide valid instructions or cease distribution within thirty
+days after you become aware that the instructions are invalid, then
+you do not forfeit any of your rights under this license.
+
+(6) You may Distribute a Modified Version in Compiled form without the
+Source, provided that you comply with Section 4 with respect to the
+Source of the Modified Version.
+
+Aggregating or Linking the Package
+
+(7) You may aggregate the Package (either the Standard Version or
+Modified Version) with other packages and Distribute the resulting
+aggregation provided that you do not charge a licensing fee for the
+Package. Distributor Fees are permitted, and licensing fees for other
+components in the aggregation are permitted. The terms of this license
+apply to the use and Distribution of the Standard or Modified Versions
+as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with
+other works, to embed the Package in a larger work of your own, or to
+build stand-alone binary or bytecode versions of applications that
+include the Package, and Distribute the result without restriction,
+provided the result does not expose a direct interface to the Package.
+
+Items That are Not Considered Part of a Modified Version
+
+(9) Works (including, but not limited to, modules and scripts) that
+merely extend or make use of the Package, do not, by themselves, cause
+the Package to be a Modified Version. In addition, such works are not
+considered parts of the Package itself, and are not subject to the
+terms of this license.
+
+General Provisions
+
+(10) Any use, modification, and distribution of the Standard or
+Modified Versions is governed by this Artistic License. By using,
+modifying or distributing the Package, you accept this license. Do not
+use, modify, or distribute the Package, if you do not accept this
+license.
+
+(11) If your Modified Version has been derived from a Modified Version
+made by someone other than you, you are nevertheless required to
+ensure that your Modified Version complies with the requirements of
+this license.
+
+(12) This license does not grant you the right to use any trademark,
+service mark, tradename, or logo of the Copyright Holder.
+
+(13) This license includes the non-exclusive, worldwide,
+free-of-charge patent license to make, have made, use, offer to sell,
+sell, import and otherwise transfer the Package with respect to any
+patent claims licensable by the Copyright Holder that are necessarily
+infringed by the Package. If you institute patent litigation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/MANIFEST 
new/Mac-PropertyList-1.413/MANIFEST
--- old/Mac-PropertyList-1.41/MANIFEST  2014-09-12 12:16:24.000000000 +0200
+++ new/Mac-PropertyList-1.413/MANIFEST 2018-03-22 19:51:22.000000000 +0100
@@ -4,8 +4,7 @@
 examples/convert_to_perl.pl
 examples/plist-visitor.pl
 examples/README
-hacks/plist-timer.pl
-hacks/plist.pl
+INSTALL.SKIP
 lib/Mac/PropertyList.pm
 lib/Mac/PropertyList/ReadBinary.pm
 lib/Mac/PropertyList/WriteBinary.pm
@@ -19,8 +18,9 @@
 plists/com.apple.iTunes.plist
 plists/com.apple.systempreferences.plist
 plists/com.unsanity.windowshadex.plist
+plists/comments.plist
 plists/the_perl_review.abcdp
-README
+README.pod
 t/array.t
 t/as_perl.t
 t/bad_plist.t
@@ -43,5 +43,6 @@
 t/time.t
 t/write.t
 t/write_binary.t
+xt/changes.t
 META.yml                                 Module YAML meta-data (added by 
MakeMaker)
 META.json                                Module JSON meta-data (added by 
MakeMaker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/MANIFEST.SKIP 
new/Mac-PropertyList-1.413/MANIFEST.SKIP
--- old/Mac-PropertyList-1.41/MANIFEST.SKIP     2014-09-12 12:16:22.000000000 
+0200
+++ new/Mac-PropertyList-1.413/MANIFEST.SKIP    2018-03-22 19:51:21.000000000 
+0100
@@ -57,9 +57,11 @@
 ^MYMETA\.
 #!end included /usr/local/perls/perl-5.18.1/lib/5.18.1/ExtUtils/MANIFEST.SKIP
 
-
+hacks\b
 \.travis\.yml
+\.appveyor\.yml
 \.releaserc
 \.lwpcookies
 Mac-\.*
 \.swp$
+\.patch$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/META.json 
new/Mac-PropertyList-1.413/META.json
--- old/Mac-PropertyList-1.41/META.json 2014-09-12 12:16:23.000000000 +0200
+++ new/Mac-PropertyList-1.413/META.json        2018-03-22 19:51:22.000000000 
+0100
@@ -4,9 +4,9 @@
       "brian d foy <[email protected]>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.86, CPAN::Meta::Converter 
version 2.120921",
+   "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter 
version 2.150010",
    "license" : [
-      "perl_5"
+      "artistic_2"
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
@@ -21,13 +21,12 @@
    },
    "prereqs" : {
       "build" : {
-         "requires" : {
-            "ExtUtils::MakeMaker" : "0"
-         }
+         "requires" : {}
       },
       "configure" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : "0"
+            "ExtUtils::MakeMaker" : "6.64",
+            "File::Spec::Functions" : "0"
          }
       },
       "runtime" : {
@@ -37,26 +36,28 @@
             "Scalar::Util" : "1.11",
             "Time::Local" : "0",
             "XML::Entities" : "0",
-            "parent" : "0"
+            "parent" : "0",
+            "perl" : "5.010"
          }
       },
       "test" : {
          "requires" : {
-            "Test::More" : "0"
+            "Test::More" : "0.94"
          }
       }
    },
    "release_status" : "stable",
    "resources" : {
       "bugtracker" : {
-         "mailto" : "[email protected]",
-         "web" : 
"https://rt.cpan.org/Public/Dist/Display.html?Name=Mac-PropertyList";
+         "web" : "https://github.com/briandfoy/mac-propertylist/issues";
       },
+      "homepage" : "https://github.com/briandfoy/mac-propertylist";,
       "repository" : {
          "type" : "git",
-         "url" : "git://github.com/briandfoy/mac-propertylist.git",
+         "url" : "https://github.com/briandfoy/mac-propertylist.git";,
          "web" : "https://github.com/briandfoy/mac-propertylist";
       }
    },
-   "version" : "1.41"
+   "version" : "1.413",
+   "x_serialization_backend" : "JSON::PP version 2.27400_02"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/META.yml 
new/Mac-PropertyList-1.413/META.yml
--- old/Mac-PropertyList-1.41/META.yml  2014-09-12 12:16:23.000000000 +0200
+++ new/Mac-PropertyList-1.413/META.yml 2018-03-22 19:51:22.000000000 +0100
@@ -3,29 +3,32 @@
 author:
   - 'brian d foy <[email protected]>'
 build_requires:
-  ExtUtils::MakeMaker: 0
-  Test::More: 0
+  Test::More: '0.94'
 configure_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '6.64'
+  File::Spec::Functions: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.86, CPAN::Meta::Converter version 
2.120921'
-license: perl
+generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 
2.150010'
+license: artistic_2
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Mac-PropertyList
 no_index:
   directory:
     - t
     - inc
 requires:
-  MIME::Base64: 0
-  Math::BigInt: 0
-  Scalar::Util: 1.11
-  Time::Local: 0
-  XML::Entities: 0
-  parent: 0
+  MIME::Base64: '0'
+  Math::BigInt: '0'
+  Scalar::Util: '1.11'
+  Time::Local: '0'
+  XML::Entities: '0'
+  parent: '0'
+  perl: '5.010'
 resources:
-  bugtracker: 
https://rt.cpan.org/Public/Dist/Display.html?Name=Mac-PropertyList
-  repository: git://github.com/briandfoy/mac-propertylist.git
-version: 1.41
+  bugtracker: https://github.com/briandfoy/mac-propertylist/issues
+  homepage: https://github.com/briandfoy/mac-propertylist
+  repository: https://github.com/briandfoy/mac-propertylist.git
+version: '1.413'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/Makefile.PL 
new/Mac-PropertyList-1.413/Makefile.PL
--- old/Mac-PropertyList-1.41/Makefile.PL       2014-09-12 12:16:22.000000000 
+0200
+++ new/Mac-PropertyList-1.413/Makefile.PL      2018-03-22 19:51:21.000000000 
+0100
@@ -1,18 +1,70 @@
-use ExtUtils::MakeMaker 6.64;
+package Mac::PropertyList;
+use strict;
+use warnings;
 
-require 5.010;
+=encoding utf8
 
-eval "use Test::Manifest 1.21";
+=head1 The build file for Mac::PropertyList
 
-WriteMakefile
-       (
-       'NAME'         => 'Mac::PropertyList',
-       'ABSTRACT'     => 'work with Mac plists at a low level',
-       'VERSION_FROM' => 'lib/Mac/PropertyList.pm',
-       'LICENSE'      => 'perl',
-       'AUTHOR'       => 'brian d foy <[email protected]>',
+This build file is a modulino; it works as both a build script and
+a module.
 
-       'PREREQ_PM' => {
+To build the distribution, run this file normally:
+
+       % perl Makefile.PL
+
+But, it's more interesting than that. You can load it with C<require>
+and call C<arguments> to get the data structure it passes to
+C<WriteMakefile>:
+
+       my $package = require '/path/to/Makefile.PL';
+       my $arguments = $package->arguments;
+
+Note that C<require>-ing a file makes an entry in C<%INC> for exactly
+that name. If you try to C<require> another file with the same name,
+even from a different path, C<require> thinks it has already loaded
+the file. As such, I recommend you always require the full path to the
+file.
+
+The return value of the C<require> is a package name (in this case,
+the name of the main module. Use that to call the C<arguments> method.
+
+Even if this distribution needs a higher version of Perl, this bit
+only needs v5.8. You can play with the data structure with a primitive
+Perl.
+
+=cut
+
+use File::Spec::Functions qw(catfile);
+
+my $module    = __PACKAGE__;
+( my $dist = $module ) =~ s/::/-/g;
+
+my $github    = 'https://github.com/briandfoy/mac-propertylist';
+my $main_file = catfile( 'lib', split /::/, "$module.pm" );
+
+my %WriteMakefile = (
+       'MIN_PERL_VERSION' => '5.010',
+
+       'NAME'          => $module,
+       'ABSTRACT_FROM' => $main_file,
+       'VERSION_FROM'  => $main_file,
+       'LICENSE'       => 'artistic2',
+       'AUTHOR'        => 'brian d foy <[email protected]>',
+
+       'CONFIGURE_REQUIRES' => {
+               'ExtUtils::MakeMaker'   => '6.64',
+               'File::Spec::Functions' => '0',
+               },
+
+       'BUILD_REQUIRES' => {
+               },
+
+       'TEST_REQUIRES' => {
+               'Test::More' => '0.94',
+               },
+
+       'PREREQ_PM'     => {
                'Math::BigInt'  => '0',
                'MIME::Base64'  => '0',
                'Time::Local'   => '0',
@@ -21,26 +73,46 @@
                'parent'        => '0',
                },
 
-       'TEST_REQUIRES' => {
-               'Test::More'    => '0',
-               },
-
-       'clean'          => { FILES => 'Mac-PropertyList-*' },
-
        'META_MERGE' => {
-               "meta-spec" => { version => 2 },
+               'meta-spec' => { version => 2 },
                resources => {
                        repository => {
                                type => 'git',
-                               url => 
'git://github.com/briandfoy/mac-propertylist.git',
-                               web => 
'https://github.com/briandfoy/mac-propertylist',
+                               url  => "$github.git",
+                               web  => $github,
                                },
-
                        bugtracker => {
-                               web => 
'https://rt.cpan.org/Public/Dist/Display.html?Name=Mac-PropertyList',
-                               mailto => '[email protected]',
+                               web    => "$github/issues",
                                },
+                       homepage => $github,
                        },
                },
+
+       clean => { FILES => "$dist-*" },
        );
 
+
+sub arguments { \%WriteMakefile }
+
+do_it() unless caller;
+sub do_it {
+       require File::Spec;
+       my $MM ='ExtUtils::MakeMaker';
+       my $MM_version =
+               eval{ "$MM " . 
$WriteMakefile{'CONFIGURE_REQUIRES'}{'ExtUtils::MakeMaker'} }
+                       ||
+               "$MM 6.64";
+       eval "use $MM_version; 1" or die "Could not load $MM_version: $@";
+       eval "use Test::Manifest 1.21"
+               if -e File::Spec->catfile( qw(t test_manifest) );
+
+       my $arguments = arguments();
+       my $minimum_perl = $arguments->{MIN_PERL_VERSION} || '5.008';
+       eval "require $minimum_perl;" or die $@;
+
+       WriteMakefile( %$arguments );
+       }
+
+
+no warnings;
+__PACKAGE__;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/README 
new/Mac-PropertyList-1.413/README
--- old/Mac-PropertyList-1.41/README    2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/README   1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-$Id$
-
-This module parses the property lists rom Mac OS X, at
-least the ones from the pre-Tiger releases. I wrote this
-module to work on all platforms, since I needed it to
-work on FreeBSD (which pulled files from my Mac machines
-to do various things). This means that the module can
-be very (very) slow for very large files. If someone would
-like to write stuff to hook into CoreFoundation and use
-the Mac OS X stuff to handle the parsing, I'll incorporate
-it into the module. I still need pure perl support though.
-
-You can install this using in the usual Perl fashion
-
-       perl Makefile.PL
-       make
-       make test
-       make install
-       
-The documentation is in the module file.  Once you install
-the file, you can read it with perldoc.
-
-       perldoc Mac::PropertyList
-       
-If you want to read it before you install it, you can use
-perldoc directly on the module file.
-
-       perldoc lib/PropertyList.pm
-       
-This module is also in CVS on SourceForge
-
-       http://sourceforge.net/projects/brian-d-foy/
-
-In the hacks/ directory I have a couple of scripts. The
-plist-timer.pl script will parse the plist you give it and
-time it. You might want to try that first to see if you 
-get acceptable performance.
-
-Enjoy, 
-
-brian d foy, [email protected]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/README.pod 
new/Mac-PropertyList-1.413/README.pod
--- old/Mac-PropertyList-1.41/README.pod        1970-01-01 01:00:00.000000000 
+0100
+++ new/Mac-PropertyList-1.413/README.pod       2018-03-22 19:51:21.000000000 
+0100
@@ -0,0 +1,126 @@
+=pod
+
+=encoding utf8
+
+=for HTML <a href="https://travis-ci.org/briandfoy/mac-propertylist";><img 
src="https://travis-ci.org/briandfoy/mac-propertylist.svg?branch=master"; /></a>
+
+=for HTML <a 
href='https://ci.appveyor.com/project/briandfoy/mac-propertylist'><img 
src='https://ci.appveyor.com/api/projects/status/6cqt6l1vxpjg6tif?svg=true' 
/></a>
+
+=for HTML <a 
href='https://coveralls.io/github/briandfoy/mac-propertylist?branch=master'><img
 
src='https://coveralls.io/repos/github/briandfoy/mac-propertylist/badge.svg?branch=master'
 alt='Coverage Status' /></a>
+
+=for HTML <a 
href="https://github.com/briandfoy/mac-propertylist/blob/master/LICENSE";><img 
src="https://img.shields.io/cpan/l/Mac-PropertyList.svg"; /></a>
+
+=for HTML <a href="http://www.metacpan.org/module/Mac::PropertyList";><img 
src="https://img.shields.io/cpan/v/Mac-PropertyList.svg"; /></A>
+
+=head1 The Mac::PropertyList module
+
+This is the I<README> for the L<Mac::PropertyList> Perl module. It handles
+the XML and binary property list formats (but not the JSON yet).
+
+You're probably looking at this because you don't know where else to
+find what you're looking for. Read this once and you might never have
+to read one again for any Perl module.
+
+=head2 Documentation
+
+To read about L<Mac::PropertyList>, look at the embedded documentation
+in the module itself. Inside the distribution, you can format it
+with L<perldoc|http://perldoc.perl.org/perldoc.html>:
+
+       % perldoc lib/Mac/PropertyList.pm
+
+If you have already installed the module, you can specify the module
+name instead of the file location:
+
+       % perldoc Mac::PropertyList
+
+You can read the documentation and inspect the meta data on one of the
+CPAN web interfaces, such as L<CPAN 
Search|http://search.cpan.org/dist/Mac-PropertyList> or
+L<MetaCPAN|http://www.metacpan.org/module/Mac::PropertyList>:
+
+=over 4
+
+=item *        L<http://search.cpan.org/dist/Mac-PropertyList>
+
+=item *        L<http://www.metacpan.org/module/Mac::PropertyList>
+
+=back
+
+The standard module documentation has example uses in the SYNOPSIS
+section, but you can also look in the I<examples/> directory (if it's
+there), or look at the test files in I<t/>.
+
+=head2 Installation
+
+You can install this module with a CPAN client, which will resolve
+and install the dependencies:
+
+       % cpan Mac::PropertyList
+       % cpanm Mac::PropertyList
+
+You can also install directly from the distribution directory, which
+will also install the dependencies:
+
+       % cpan .
+       % cpanm .
+
+You could install just this module manually:
+
+       % perl Makefile.PL
+       % make
+       % make test
+       % make install
+
+You probably don't want to do that unless you're fiddling with the
+module and only want to run the tests without installing anything.
+
+=head2 Source location
+
+The meta data, such as the source repository and bug tracker, is in
+I<Makefile.PL> or the I<META.*> files it creates. You can find that on
+those CPAN web interfaces, but you can also look at files directly in
+the source repository:
+
+=over 4
+
+=item *        L<https://github.com/briandfoy/mac-propertylist>
+
+=back
+
+If you find a problem, file a ticket in the L<issue
+tracker|https://github.com/briandfoy/mac-propertylist/issues>:
+
+=over 4
+
+=item *        L<https://github.com/briandfoy/mac-propertylist/issues>
+
+=back
+
+=head2 Getting help
+
+Although I'm happy to hear from module users in private email,
+that's the best way for me to forget to do something.
+
+Besides the issue trackers, you can find help at
+L<Perlmonks|http://www.perlmonks.org> or
+L<Stackoverflow|http://www.stackoverflow.com>, both of which have many
+competent Perlers who can answer your question, almost in real time.
+They might not know the particulars of this module, but they can help
+you diagnose your problem.
+
+You might like to read L<brian's Guide to Solving Any Perl
+Problem|http://archive.oreilly.com/pub/a/perl/excerpts/9780596527242/brians-guide.html>.
+
+=head2 Copyright and License
+
+You should have received a I<LICENSE> file, but the license is also noted
+in the module files. About the only thing you can't do is pretend that
+you wrote code that you didn't.
+
+=head2 Good luck!
+
+Enjoy,
+
+brian d foy, [email protected]
+
+=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/hacks/plist-timer.pl 
new/Mac-PropertyList-1.413/hacks/plist-timer.pl
--- old/Mac-PropertyList-1.41/hacks/plist-timer.pl      2014-09-12 
12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/hacks/plist-timer.pl     1970-01-01 
01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-# $Id$
-
-use Mac::PropertyList;
-use Time::HiRes;
-
-printf "%10s   %10s  %10s  %s\n", 
-       "Bytes", "Seconds", "bytes / sec ", "File";
-
-foreach my $file ( @ARGV )
-       {
-       unless( open FILE, $file )
-               {
-               warn( "Could not open $file" );
-               next;
-               }
-               
-       my $data = do { local $/; <FILE> };
-       close FILE;
-
-       my $b = length $data;
-
-       my $time1 = [ Time::HiRes::gettimeofday() ];
-       my $plist = Mac::PropertyList::parse_plist( $data );
-       my $time2 = [ Time::HiRes::gettimeofday() ];
-
-       my $elapsed = Time::HiRes::tv_interval( $time1, $time2 );
-       printf "%10d   %10.4f   %10.0f   %s\n", $b, $elapsed, 
-               eval { $b / $elapsed }, $file;
-       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/hacks/plist.pl 
new/Mac-PropertyList-1.413/hacks/plist.pl
--- old/Mac-PropertyList-1.41/hacks/plist.pl    2014-09-12 12:16:22.000000000 
+0200
+++ new/Mac-PropertyList-1.413/hacks/plist.pl   1970-01-01 01:00:00.000000000 
+0100
@@ -1,56 +0,0 @@
-#!/usr/bin/perl
-
-=head1 NAME
-
-plist.pl - test Mac::PropertyList by parsing found plist files
-
-=head1 SYNOPSIS
-
-% plist.pl directory
-
-=head1 DESCRIPTION
-
-This script finds Mac plist files under the specified directory
-(or the current working directory if none specified) and attempts
-to parse them with Mac::PropertyList.  If that doesn't work, it
-reports an error.
-
-I use this to find special cases that Mac::PropertyList can't 
-handle.
-
-=head1 AUTHOR
-
-brian d foy, E<lt>[email protected]<gt>
-
-=head1 COPYRIGHT
-
-Copyright 2002, brian d foy, All Rights Reserved
-
-=cut
-
-use Cwd;
-use File::Find::Rule;
-use Mac::PropertyList;
-
-my $dir = $ARGV[0] || cwd;
-
-@files = File::Find::Rule->file()->name( '*.plist' )->in( $dir );
-       
-foreach my $file ( @files )
-       {
-       my $name = $file;
-       $name =~ s|^\Q$dir|--|;
-       
-       print STDERR "Processing $name...";
-       
-       eval {
-               alarm 5;
-               local @ARGV = ( $file );
-               my $data = do { local $/; <> };
-               local $SIG{ALRM} = sub { die "skipping\n" };
-               my $plist = Mac::PropertyList::parse_plist( $data );
-               alarm 0;
-               print STDERR "done\n";
-               };
-       print STDERR $@;
-       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mac-PropertyList-1.41/lib/Mac/PropertyList/ReadBinary.pm 
new/Mac-PropertyList-1.413/lib/Mac/PropertyList/ReadBinary.pm
--- old/Mac-PropertyList-1.41/lib/Mac/PropertyList/ReadBinary.pm        
2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/lib/Mac/PropertyList/ReadBinary.pm       
2018-03-22 19:51:21.000000000 +0100
@@ -13,7 +13,7 @@
 use POSIX             qw(SEEK_END SEEK_SET);
 use XML::Entities     ();
 
-$VERSION = '1.41';
+$VERSION = '1.413';
 
 __PACKAGE__->_run( @ARGV ) unless caller;
 
@@ -199,7 +199,7 @@
                my( $self, $length ) = @_;
 
                return $singletons{ $length } if exists $singletons{ $length };
-               
+
                croak ( sprintf "Unknown type byte %02X\n", $length );
        },
 
@@ -392,10 +392,10 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright © 2004-2014 brian d foy.  All rights reserved.
+Copyright © 2004-2018, brian d foy <[email protected]>. All rights reserved.
 
 This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
+it under the terms of the Artistic License 2.0.
 
 =cut
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mac-PropertyList-1.41/lib/Mac/PropertyList/WriteBinary.pm 
new/Mac-PropertyList-1.413/lib/Mac/PropertyList/WriteBinary.pm
--- old/Mac-PropertyList-1.41/lib/Mac/PropertyList/WriteBinary.pm       
2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/lib/Mac/PropertyList/WriteBinary.pm      
2018-03-22 19:51:21.000000000 +0100
@@ -6,7 +6,7 @@
 
 use Encode              ();
 use Mac::PropertyList   ();
-use base                qw(Exporter);
+use Exporter          qw(import);
 
 =encoding utf8
 
@@ -101,7 +101,7 @@
     havePack64   => ( eval { pack('Q>', 1153202979583557643) eq 
"\x10\x01\0\0\0\0\0\x0B" } ? 1 : 0 ),
 };
 
-$VERSION = '1.41';
+$VERSION = '1.413';
 @EXPORT_OK = qw( as_string );
 
 sub as_string {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/lib/Mac/PropertyList.pm 
new/Mac-PropertyList-1.413/lib/Mac/PropertyList.pm
--- old/Mac-PropertyList-1.41/lib/Mac/PropertyList.pm   2014-09-12 
12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/lib/Mac/PropertyList.pm  2018-03-22 
19:51:21.000000000 +0100
@@ -9,7 +9,7 @@
 use Data::Dumper;
 use XML::Entities;
 
-use parent qw(Exporter);
+use Exporter qw(import);
 
 @EXPORT_OK = qw(
        parse_plist
@@ -24,7 +24,7 @@
        'all' => \@EXPORT_OK,
        );
 
-$VERSION = '1.41';
+$VERSION = '1.413';
 
 =encoding utf8
 
@@ -59,9 +59,10 @@
 =head1 DESCRIPTION
 
 This module is a low-level interface to the Mac OS X Property List
-(plist) format. You probably shouldn't use this in applications–build
-interfaces on top of this so you don't have to put all the heinous
-multi-level object stuff where people have to look at it.
+(plist) format in either XML or binary. You probably shouldn't use
+this in applications–build interfaces on top of this so you don't have
+to put all the heinous multi-level object stuff where people have to
+look at it.
 
 You can parse a plist file and get back a data structure. You can take
 that data structure and get back the plist as XML. If you want to
@@ -70,6 +71,14 @@
 You don't need to be on Mac OS X to use this. It simply parses and
 manipulates a text format that Mac OS X uses.
 
+If you need to work with the old ASCII or newer JSON formet, you can
+use the B<plutil> tool that comes with MacOS X:
+
+       % plutil -convert xml1 -o ExampleBinary.xml.plist ExampleBinary.plist
+
+Or, you can extend this module to handle those formats (and send a pull
+request).
+
 =head2 The Property List format
 
 The MacOS X Property List format is simple XML. You can read the DTD
@@ -160,7 +169,6 @@
        "date"    => \&read_date,
        "real"    => \&read_real,
        "integer" => \&read_integer,
-       "string"  => \&read_string,
        "array"   => \&read_array,
        "data"    => \&read_data,
        "true"    => \&read_true,
@@ -194,6 +202,7 @@
 
        my $plist = do {
                if( $text =~ /\A<\?xml/ ) { # XML plists
+                       $text =~ s/<!--(?:[\d\D]*?)-->//g;
                        # we can handle either 0.9 or 1.0
                        $text =~ s|^<\?xml.*?>\s*<!DOC.*>\s*<plist.*?>\s*||;
                        $text =~ s|\s*</plist>\s*$||;
@@ -373,12 +382,15 @@
        while( not defined $value ) {
                croak "Couldn't read anything!" if $source->eof;
                $_ .= $source->get_line;
-
-               if( s[^\s* < (string|date|real|integer|data) >
-                          \s*(.*?)\s* </\1> ][]sx ) {
+               if( s[^\s* < (string|date|real|integer|data) > \s*(.*?)\s* 
</\1> ][]sx ) {
                        $value = $Readers{$1}->( $2 );
                        }
            elsif( s[^\s* < (dict|array) > ][]x ) {
+                       # We need to put back the unprocessed text if
+                       # any because the <dict> and <array> readers
+                       # need to see it.
+                       $source->put_line( $_ ) if defined $_ && '' ne $_;
+                       $_ = '';
                        $value = $Readers{$1}->( $source );
                        }
            # these next two are some wierd cases i found in the iPhoto Prefs
@@ -502,13 +514,34 @@
 sub get_line {
        my $self = CORE::shift;
 
+# I'm not particularly happy with what I wrote here, but that's why
+# you shouldn't write your own buffering code! I might have left over
+# text in the buffer. This could be stuff a higher level looked at and
+# put back with put_line. If there's text there, grab that.
+#
+# But here's the tricky part. If that next part of the text looks like
+# a "blank" line, grab the next next thing and append that.
+#
+# And, if there's nothing in the buffer, ask for more text from
+# get_source_line. Follow the same rules. IF you get back something that
+# looks like a blank line, ask for another and append it.
+#
+# This means that a returned line might have come partially from the
+# buffer and partially from a fresh read.
+#
+# At some point you should have something that doesn't look like a
+# blank line and the while() will break out. Return what you do.
+#
+# Previously, I wasn't appending to $_ so newlines were disappearing
+# as each next read replaced the value in $_. Yuck.
+
        local $_ = '';
        while (defined $_ && /^[\r\n\s]*$/) {
                if( @{$self->{buffer}} ) {
-                       $_ = shift @{$self->{buffer}};
+                       $_ .= shift @{$self->{buffer}};
                        }
                else {
-                       $_ = $self->get_source_line;
+                       $_ .= $self->get_source_line;
                        }
                }
 
@@ -554,8 +587,6 @@
 sub type { my $r = ref $_[0] ? ref $_[0] : $_[0]; $r =~ s/.*:://; $r; }
 
 sub new {
-       #print STDERR "Got [@_]\n";
-
        bless $_[1], $_[0]
        }
 
@@ -649,8 +680,6 @@
 use base qw(Mac::PropertyList::Container);
 
 sub new {
-       #print STDERR Data::Dumper::Dumper( $_[1] );
-
        $_[0]->SUPER::new( $_[1] );
        }
 
@@ -840,10 +869,10 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright © 2004-2014 brian d foy.  All rights reserved.
+Copyright © 2004-2018, brian d foy <[email protected]>. All rights reserved.
 
 This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
+it under the terms of the Artistic License 2.0.
 
 =head1 SEE ALSO
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/plists/comments.plist 
new/Mac-PropertyList-1.413/plists/comments.plist
--- old/Mac-PropertyList-1.41/plists/comments.plist     1970-01-01 
01:00:00.000000000 +0100
+++ new/Mac-PropertyList-1.413/plists/comments.plist    2018-03-22 
19:51:21.000000000 +0100
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<!-- This is an above root level comment -->
+<plist version="0.9">
+<!-- This is a below root level comment -->
+<dict><!-- This is a below dict level comment -->
+       <key>NSColorPanelMode</key> 
+       <string>5</string>
+<!-- This is a below dict level comment -->
+       <key>NSDefaultOpenDirectory</key>
+       <string>/Applications/Mozilla</string>
+       <key>NSToolbar Configuration com.apple.PrefsToolbar</key>
+       <dict>
+               <key>TB Display Mode</key>
+               <integer>1</integer>
+               <key>TB Is Shown</key>
+               <integer>1</integer>
+               <key>TB Item Identifiers</key>
+               <array><!-- 1. This is a below array level comment -->
+                       <string>com.apple.prefpane.showall</string>
+                       <string>NSToolbarSeparatorItem</string>
+                       <string>com.apple.preference.displays</string>
+                       <string>com.apple.preference.sound</string>
+                       <string>com.apple.preference.network</string>
+                       <string>com.apple.preference.startupdisk</string>
+                       <!-- 2. This is a below array level comment -->
+               </array>
+               <key>TB Size Mode</key>
+               <integer>1</integer>
+       </dict>
+       <key>NSWindow Frame NSColorPanel</key>
+       <string>3 379 205 367 0 0 1024 746 </string>
+       <key>NSWindow Frame Speech Help</key>
+       <string>233 717 444 389 0 0 1024 746 </string>
+</dict>
+</plist>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/t/array.t 
new/Mac-PropertyList-1.413/t/array.t
--- old/Mac-PropertyList-1.41/t/array.t 2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/t/array.t        2018-03-22 19:51:21.000000000 
+0100
@@ -1,4 +1,4 @@
-use Test::More tests => 5;
+use Test::More tests => 8;
 
 use Mac::PropertyList;
 
@@ -31,3 +31,18 @@
 ok( eq_array( \@values, [qw(Mimi Roscoe Juliet Buster)] ),
        "Object has right values" );
 
+note 'Try non-canonical layout';
+$plist = Mac::PropertyList::parse_plist( <<"HERE" );
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+<array><string>Athos</string><string>Porthos</string><string>Aramis</string></array>
+</array>
+</plist>
+HERE
+isa_ok( $plist, "Mac::PropertyList::array", "Make object from non-canonical 
plist string" );
+is( $plist->count, 3, "Non-canonical object has right number of values" );
+
+@values = $plist->values();
+ok( eq_array( \@values, [ qw{ Athos Porthos Aramis } ] ),
+       "Non-canonical object has right values" );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/t/basic_types.t 
new/Mac-PropertyList-1.413/t/basic_types.t
--- old/Mac-PropertyList-1.41/t/basic_types.t   2014-09-12 12:16:22.000000000 
+0200
+++ new/Mac-PropertyList-1.413/t/basic_types.t  2018-03-22 19:51:21.000000000 
+0100
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 5;
+use Test::More tests => 6;
 use Mac::PropertyList;
 
 my $array = <<'HERE';
@@ -107,3 +107,21 @@
   59,
   "basic data from a scalar",
 );
+
+my $string = <<'HERE';
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+  <string>A
+
+  new line</string>
+</plist>
+HERE
+
+is_deeply(
+  Mac::PropertyList::parse_plist($string)->as_basic_data,
+  "A
+
+  new line",
+  "basic data from a string with embedded new lines",
+);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/t/dict.t 
new/Mac-PropertyList-1.413/t/dict.t
--- old/Mac-PropertyList-1.41/t/dict.t  2014-09-12 12:16:22.000000000 +0200
+++ new/Mac-PropertyList-1.413/t/dict.t 2018-03-22 19:51:21.000000000 +0100
@@ -1,4 +1,4 @@
-use Test::More tests => 15;
+use Test::More tests => 21;
 
 use Mac::PropertyList;
 
@@ -47,4 +47,24 @@
 ok( $plist->exists( 'Buster' ), 'Buster key exists after delete' );
 is( $plist->count, 1, "Has right count after delete" );
 
+note 'Try non-canonical layout';
 
+$plist = Mac::PropertyList::parse_plist( <<"HERE" );
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+<dict><key>Clayton</key><string>John</string><key>Napier</key><string>Carson</string><key>Gridley</key><string>Jason</string></dict>
+</plist>
+HERE
+isa_ok( $plist, 'Mac::PropertyList::dict' );
+is( $plist->count, 3, "Has right number of keys" );
+
+@keys = sort $plist->keys;
+ok( eq_array( \@keys, [qw(Clayton Gridley Napier)] ), "Check hash keys" );
+
+@values = sort $plist->values;
+ok( eq_array( \@values, [qw(Carson Jason John)] ), "Check hash values" );
+
+ok( $plist->exists( 'Clayton' ), 'Claytin key exists' );
+
+is( $plist->value( 'Clayton' ),  'John', "Check Clayton's value" );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/t/read_binary.t 
new/Mac-PropertyList-1.413/t/read_binary.t
--- old/Mac-PropertyList-1.41/t/read_binary.t   2014-09-12 12:16:22.000000000 
+0200
+++ new/Mac-PropertyList-1.413/t/read_binary.t  2018-03-22 19:51:21.000000000 
+0100
@@ -2,6 +2,11 @@
 use warnings;
 use utf8;
 
+BEGIN {
+    # Silence 'wide character' warning in Unicode test
+    binmode STDOUT, ':encoding(utf-8)';
+}
+
 use Test::More tests => 41;
 
 use File::Spec::Functions;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mac-PropertyList-1.41/xt/changes.t 
new/Mac-PropertyList-1.413/xt/changes.t
--- old/Mac-PropertyList-1.41/xt/changes.t      1970-01-01 01:00:00.000000000 
+0100
+++ new/Mac-PropertyList-1.413/xt/changes.t     2018-03-22 19:51:21.000000000 
+0100
@@ -0,0 +1,4 @@
+use Test::More;
+eval 'use Test::CPAN::Changes';
+plan skip_all => 'Test::CPAN::Changes required for this test' if $@;
+changes_ok();

++++++ cpanspec.yml ++++++
---
#description_paragraphs: 3
#description: |-
#  override description from CPAN
#summary: override summary from CPAN
#no_testing: broken upstream
#sources:
#  - source1
#  - source2
#patches:
#  foo.patch: -p1
#  bar.patch:
#preamble: |-
# BuildRequires:  gcc-c++
#post_prep: |-
# hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s,  *,,g'`
# sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL 
#post_build: |-
# rm unused.files
#post_install: |-
# sed on %{name}.files
#license: SUSE-NonFree
#skip_noarch: 1
#custom_build: |-
#./Build build flags=%{?_smp_mflags} --myflag
#custom_test: |-
#startserver && make test
#ignore_requires: Bizarre::Module

Reply via email to