forked from external/vscode-xml
		
	Merge pull request #198 from DotJoshJohnson/release-2.3.1
Release v2.3.1
This commit is contained in:
		
						commit
						f2cfe160ba
					
				
					 8 changed files with 81 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
    "name": "xml",
 | 
			
		||||
    "displayName": "XML Tools",
 | 
			
		||||
    "description": "XML Formatting, XQuery, and XPath Tools for Visual Studio Code",
 | 
			
		||||
    "version": "2.3.0",
 | 
			
		||||
    "version": "2.3.1",
 | 
			
		||||
    "preview": false,
 | 
			
		||||
    "publisher": "DotJoshJohnson",
 | 
			
		||||
    "author": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,19 @@ export class XmlTraverser {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    getSiblings(node: Node): Node[] {
 | 
			
		||||
        return [...this.getChildAttributeArray(<Element>node.parentNode), ...this.getChildElementArray(node.parentNode)];
 | 
			
		||||
        if (this.isElement(node)) {
 | 
			
		||||
            return this.getSiblingElements(node);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.getSiblingAttributes(node);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getSiblingAttributes(node: Node): Node[] {
 | 
			
		||||
        return this.getChildAttributeArray(<Element>node.parentNode);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getSiblingElements(node: Node): Node[] {
 | 
			
		||||
        return this.getChildElementArray(node.parentNode);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    hasSimilarSiblings(node: Node): boolean {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,6 +33,7 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
        let location = Location.Text;
 | 
			
		||||
        let lastNonTextLocation = Location.Text; // hah
 | 
			
		||||
        let attributeQuote = "";
 | 
			
		||||
        let lineBreakSpree = false;
 | 
			
		||||
 | 
			
		||||
        // NOTE: all "exiting" checks should appear after their associated "entering" checks
 | 
			
		||||
        for (let i = 0; i < xml.length; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +45,14 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
 | 
			
		||||
            // entering CData
 | 
			
		||||
            if (location === Location.Text && cc === "<" && nc === "!" && nnc === "[") {
 | 
			
		||||
                output += `${this._getIndent(options, indentLevel)}<`;
 | 
			
		||||
                if (pc === ">" && ppc !== "/") {
 | 
			
		||||
                    output += "<";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else {
 | 
			
		||||
                    output += `${this._getIndent(options, indentLevel)}<`;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                location = Location.CData;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +102,8 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
                }
 | 
			
		||||
 | 
			
		||||
                else {
 | 
			
		||||
                    // removing trailing non-breaking whitespace here prevents endless indentations (issue #193)
 | 
			
		||||
                    output = this._removeTrailingNonBreakingWhitespace(output);
 | 
			
		||||
                    output += `${this._getIndent(options, indentLevel)}<`;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -176,8 +186,11 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
                // if the end tag immediately follows a line break, just add an indentation
 | 
			
		||||
                // if the end tag immediately follows another end tag or a self-closing tag (issue #185), add a line break and indent
 | 
			
		||||
                // otherwise, this should be treated as a same-line end tag(ex. <element>text</element>)
 | 
			
		||||
                if (pc === "\n") {
 | 
			
		||||
                if (pc === "\n" || lineBreakSpree) {
 | 
			
		||||
                    // removing trailing non-breaking whitespace here prevents endless indentations (issue #193)
 | 
			
		||||
                    output = this._removeTrailingNonBreakingWhitespace(output);
 | 
			
		||||
                    output += `${this._getIndent(options, indentLevel)}<`;
 | 
			
		||||
                    lineBreakSpree = false;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else if (lastNonTextLocation === Location.EndTag) {
 | 
			
		||||
| 
						 | 
				
			
			@ -204,6 +217,14 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
 | 
			
		||||
            // Text
 | 
			
		||||
            else {
 | 
			
		||||
                if (cc === "\n") {
 | 
			
		||||
                    lineBreakSpree = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else if (lineBreakSpree && /\S/.test(cc)) {
 | 
			
		||||
                    lineBreakSpree = false;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                output += cc;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -219,6 +240,10 @@ export class V2XmlFormatter implements XmlFormatter {
 | 
			
		|||
        return ((options.editorOptions.insertSpaces) ? " ".repeat(options.editorOptions.tabSize) : "\t").repeat(indentLevel);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private _removeTrailingNonBreakingWhitespace(text: string): string {
 | 
			
		||||
        return text.replace(/[^\r\n\S]+$/, "");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private _sanitizeComments(xml: string): string {
 | 
			
		||||
        let output = "";
 | 
			
		||||
        let inComment = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,6 +80,14 @@ describe("V2XmlFormatter", () => {
 | 
			
		|||
            testFormatter(xmlFormatter, options, "issue-189");
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("should not add extra line breaks before closing tags", () => {
 | 
			
		||||
            testFormatter(xmlFormatter, options, "issue-193");
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("should not add extra whitespace before CDATA", () => {
 | 
			
		||||
            testFormatter(xmlFormatter, options, "issue-194");
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								src/test/test-data/issue-193.formatted.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/test/test-data/issue-193.formatted.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
<xsl:template name="btn-export-excel-pdf">
 | 
			
		||||
    <div class="row">
 | 
			
		||||
        <div class="col-md button-wrapper text-center">
 | 
			
		||||
            <a class="btn btn-outline-info" role="button" href="javascript:template.printToPdf()" target="_blank">
 | 
			
		||||
                <i class="far fa-file-pdf"> </i> Export to PDF                                        
 | 
			
		||||
            </a>                                                                           
 | 
			
		||||
            <a class="btn btn-outline-info" role="button" href="javascript:template.exportToExcel()" target="_blank">
 | 
			
		||||
                <i class="far fa-file-excel"> </i> Export to EXCEL                                        
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
							
								
								
									
										12
									
								
								src/test/test-data/issue-193.unformatted.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/test/test-data/issue-193.unformatted.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
<xsl:template name="btn-export-excel-pdf">
 | 
			
		||||
    <div class="row">
 | 
			
		||||
      <div class="col-md button-wrapper text-center">
 | 
			
		||||
        <a class="btn btn-outline-info" role="button" href="javascript:template.printToPdf()" target="_blank">
 | 
			
		||||
          <i class="far fa-file-pdf"> </i> Export to PDF                                        
 | 
			
		||||
        </a>                                                                           
 | 
			
		||||
        <a class="btn btn-outline-info" role="button" href="javascript:template.exportToExcel()" target="_blank">
 | 
			
		||||
          <i class="far fa-file-excel"> </i> Export to EXCEL                                        
 | 
			
		||||
        </a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </xsl:template>
 | 
			
		||||
							
								
								
									
										7
									
								
								src/test/test-data/issue-194.formatted.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/test/test-data/issue-194.formatted.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<madeup>
 | 
			
		||||
    <some>
 | 
			
		||||
        <element>This is ok</element>
 | 
			
		||||
        <other><![CDATA[Here is my cdata]]></other>
 | 
			
		||||
    </some>
 | 
			
		||||
</madeup>
 | 
			
		||||
							
								
								
									
										1
									
								
								src/test/test-data/issue-194.unformatted.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/test/test-data/issue-194.unformatted.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?><madeup><some><element>This is ok</element><other><![CDATA[Here is my cdata]]></other></some></madeup>
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue