Merge pull request #186 from DotJoshJohnson/release-2.3.0

Release v2.3.0
This commit is contained in:
Josh Johnson 2018-06-11 19:33:20 -04:00 committed by GitHub
commit 0a17f59e67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 75 additions and 4 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
out
node_modules
.vscode-test/
.vsix
/*.vsix

View File

@ -2,7 +2,7 @@
"name": "xml",
"displayName": "XML Tools",
"description": "XML Formatting, XQuery, and XPath Tools for Visual Studio Code",
"version": "2.2.0",
"version": "2.3.0",
"preview": false,
"publisher": "DotJoshJohnson",
"author": {

View File

@ -32,6 +32,7 @@ export class V2XmlFormatter implements XmlFormatter {
let indentLevel = 0;
let location = Location.Text;
let lastNonTextLocation = Location.Text; // hah
let attributeQuote = "";
// NOTE: all "exiting" checks should appear after their associated "entering" checks
for (let i = 0; i < xml.length; i++) {
@ -126,13 +127,17 @@ export class V2XmlFormatter implements XmlFormatter {
output += cc;
lastNonTextLocation = location;
location = Location.AttributeValue;
attributeQuote = cc;
}
// exiting StartTag.Attribute.AttributeValue, entering StartTag
else if (location === Location.AttributeValue && (cc === "\"" || cc === "'")) {
else if (location === Location.AttributeValue && cc === attributeQuote) {
output += cc;
lastNonTextLocation = location;
location = Location.StartTag;
attributeQuote = undefined;
}
// approaching the end of a self-closing tag where there was no whitespace (issue #149)
@ -169,7 +174,7 @@ export class V2XmlFormatter implements XmlFormatter {
indentLevel--;
// if the end tag immediately follows a line break, just add an indentation
// if the end tag immediately follows another end tag, add a line break and indent
// 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") {
output += `${this._getIndent(options, indentLevel)}<`;
@ -179,6 +184,10 @@ export class V2XmlFormatter implements XmlFormatter {
output += `${options.newLine}${this._getIndent(options, indentLevel)}<`;
}
else if (pc === ">" && ppc === "/") {
output += `${this._getIndent(options, indentLevel)}<`;
}
else {
output += "<";
}

View File

@ -68,6 +68,18 @@ describe("V2XmlFormatter", () => {
options.enforcePrettySelfClosingTagOnFormat = false;
});
it("should properly format closing tag after self-closing tag", () => {
testFormatter(xmlFormatter, options, "issue-185");
});
it("should support single quotes within double-quoptes attributes and vice-versa", () => {
testFormatter(xmlFormatter, options, "issue-187");
});
it("should not ruin attributes with unusual characters", () => {
testFormatter(xmlFormatter, options, "issue-189");
});
});
});

View File

@ -0,0 +1,5 @@
<test>
<example>
<one/>
</example>
</test>

View File

@ -0,0 +1 @@
<test><example><one/></example></test>

View File

@ -0,0 +1,17 @@
<Project>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Release' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>true</Optimize>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)'=='Release' ">
<Content Remove="appsettings.Development.json" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)'=='Debug' ">
<Content Remove="appsettings.Production.json" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,17 @@
<Project>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Release' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>true</Optimize>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)'=='Release' ">
<Content Remove="appsettings.Development.json" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)'=='Debug' ">
<Content Remove="appsettings.Production.json" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,5 @@
<!DOCTYPE xml>
<core:FragmentDefinition xmlns="sap.m"
xmlns:core="sap.ui.core">
<Text text="{parts: ['i18n>dialog.countdown.text','view>/Countdown'],formatter: 'jQuery.sap.formatMessage'}" />
</core:FragmentDefinition>

View File

@ -0,0 +1,5 @@
<!DOCTYPE xml>
<core:FragmentDefinition xmlns="sap.m"
xmlns:core="sap.ui.core">
<Text text="{parts: ['i18n>dialog.countdown.text','view>/Countdown'],formatter: 'jQuery.sap.formatMessage'}" />
</core:FragmentDefinition>