Skip to content

Commit

Permalink
fix: handle xml declaration without line break
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-sc committed Mar 10, 2022
1 parent 757ef34 commit c2b8e17
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
44 changes: 44 additions & 0 deletions __tests__/merge.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,50 @@ describe('merge', () => {
' </unit></file>\n' +
'</xliff>'));
});
test('should handle xml declaration without line break', () => {
const sourceFileContent = '<?xml version="1.0"?><xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="de">\n' +
' <file original="ng.template" id="ngi18n">\n' +
' <unit id="ID1">\n' +
' <segment>\n' +
' <source>source val</source>\n' +
' </segment>\n' +
' </unit>\n' +
' <unit id="ID2">\n' +
' <segment>\n' +
' <source>source val2</source>\n' +
' </segment>\n' +
' </unit>\n' +
' </file>\n' +
'</xliff>';
const destFileContent = '<?xml version="1.0"?><xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="de" trgLang="fr-CH">\n' +
' <file original="ng.template" id="ngi18n">\n' +
' <unit id="ID1">\n' +
' <segment state="translated">\n' +
' <source>source val</source>\n' +
' <target>target val</target>\n' +
' </segment>\n' +
' </unit>\n' +
' </file>\n' +
'</xliff>';

const result = merge(sourceFileContent, destFileContent);

expect(norm(result)).toEqual(norm('<?xml version="1.0"?><xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="de" trgLang="fr-CH">\n' +
' <file original="ng.template" id="ngi18n">\n' +
' <unit id="ID1">\n' +
' <segment state="translated">\n' +
' <source>source val</source>\n' +
' <target>target val</target>\n' +
' </segment>\n' +
' </unit>\n' +
' <unit id="ID2">\n' +
' <segment state="initial">\n' +
' <source>source val2</source>\n' +
' <target>source val2</target>\n' +
' </segment>\n' +
' </unit></file>\n' +
'</xliff>'));
});

test('should remove obsolete node', () => {
const sourceFileContent = '<xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="de">\n' +
Expand Down
2 changes: 1 addition & 1 deletion src/merge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export function merge(inFileContent: string, destFileContent: string, options?:
removeChildren(destUnitsParent, ...removeNodes);

// retain xml declaration:
const xmlDecMatch = destFileContent.match(/^<\?xml .*[^>]\s*/i);
const xmlDecMatch = destFileContent.match(/^<\?xml [^>]*>\s*/i);
const xmlDeclaration = xmlDecMatch ? xmlDecMatch[0] : '';

return xmlDeclaration + revertApostrophes(destDoc.toString({
Expand Down

0 comments on commit c2b8e17

Please sign in to comment.