Git Product home page Git Product logo

Comments (3)

TheChrisPratt avatar TheChrisPratt commented on August 17, 2024

Are you sure the source file is encoded as UTF-16? It definitely won't
parse a single-byte encoded file using a double-byte decoder.
(Chris)

On Tue, Jul 2, 2013 at 1:49 PM, Nick Portelli [email protected]:

I'm a bit unfamiliar with utf, but is there a reason why it won't parse if
it is utf-16?


Reply to this email directly or view it on GitHubhttps://github.com//issues/41
.

from sublimetext_indentxml.

nportelli avatar nportelli commented on August 17, 2024

I'm not sure. I think it is whatever the default .net serializer we are using does. All I need to do is change 16 to 8 and your plugin works great. So in all reality not the plugin's issue. I should figure out how to make the thing save in utf-8. Go ahead and close this.

from sublimetext_indentxml.

domduke12 avatar domduke12 commented on August 17, 2024

I had the same issue, I temporary change remove the utf-16 from xml declaration and add it back before returning formatted string. Not sure this can be a fixer. Test on sublime 3. Find "fix:" in followed code...

class IndentXmlCommand(BaseIndentCommand):
    def indent(self, s):                
        # convert to utf
        s = s.encode("utf-8") 
        xmlheader = re.compile(b"<\?.*\?>").match(s)
        # fix: replace header 
        if xmlheader:
            s = s.replace(xmlheader.group(), '<?xml version="1.0"?>')
        # convert to plain string without indents and spaces
        s = re.compile(b'>\s+([^\s])', re.DOTALL).sub(b'>\g<1>', s)
        # replace tags to convince minidom process cdata as text
        s = s.replace(b'<![CDATA[', b'%CDATAESTART%').replace(b']]>', b'%CDATAEEND%') 
        try:
            s = parseString(s).toprettyxml()
        except Exception as e:
            sublime.active_window().run_command("show_panel", {"panel": "console", "toggle": True})
            raise e
        # remove line breaks
        s = re.compile('>\n\s+([^<>\s].*?)\n\s+</', re.DOTALL).sub('>\g<1></', s)
        # restore cdata
        s = s.replace('%CDATAESTART%', '<![CDATA[').replace('%CDATAEEND%', ']]>')
        # remove xml header
        s = s.replace("<?xml version=\"1.0\" ?>", "").strip()
        if xmlheader: 
            s = xmlheader.group().decode("utf-8") + "\n" + s 
        return s

from sublimetext_indentxml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.