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

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions