Skip to content

tmLanguage / YAML round trip is broken #436

Description

@michaelblyons

I got it to work for myself with this extremely dirty patch:

diff --git a/plugins/lib/fileconv/dumpers.py b/plugins/lib/fileconv/dumpers.py
index e6b19b0..340df0f 100644
--- a/plugins/lib/fileconv/dumpers.py
+++ b/plugins/lib/fileconv/dumpers.py
@@ -282,7 +282,8 @@ class PlistDumper(DumperProto):
         ))
 
     def write(self, data, params, *args, **kwargs):
-        plistlib.writePlist(data, self.new_file_path)
+        with open(self.new_file_path, 'wb') as f:
+            plistlib.dump(data, f, fmt=plistlib.PlistFormat.FMT_XML)
 
 
 class YAMLDumper(DumperProto):
@@ -310,7 +311,7 @@ class YAMLDumper(DumperProto):
 
     def validate_data(self, data):
         return self._validate_data(data, (
-            (lambda x: isinstance(x, plistlib.Data), lambda x: x.data),  # plist
+            # (lambda x: isinstance(x, plistlib.Data), lambda x: x.data),  # plist
         ))
 
     def write(self, data, params, *args, **kwargs):
diff --git a/plugins/lib/fileconv/loaders.py b/plugins/lib/fileconv/loaders.py
index 501ab07..3ff8ee3 100644
--- a/plugins/lib/fileconv/loaders.py
+++ b/plugins/lib/fileconv/loaders.py
@@ -360,7 +360,7 @@ class PlistLoader(LoaderProto):
             try:
                 # This will try `from xml.parsers.expat import ParserCreate`
                 # but since it is already tried above it should succeed.
-                data = plistlib.readPlistFromBytes(text.encode('utf-8'))
+                data = plistlib.loads(text.encode('utf-8'), fmt=plistlib.FMT_XML)
             except ExpatError as e:
                 self.output.print(self.debug_base
                                   % (self.file_path,

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions