Skip to content

Commit 37c2506

Browse files
Bug fixes and test improvements
1 parent 42b60ab commit 37c2506

File tree

6 files changed

+42
-14
lines changed

6 files changed

+42
-14
lines changed

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.2 ##
2+
3+
* Bug fixes
4+
15
## 2.0.1 ##
26

37
* Remove unnecessary development dependencies from npm shrinkwrap

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ includes source maps.
6767

6868
## Usage ##
6969

70-
The documentation for the current version is available [here](http://www.kourlas.com/node-js2xmlparser/docs/2.0.1/).
70+
The documentation for the current version is available [here](http://www.kourlas.com/node-js2xmlparser/docs/2.0.2/).
7171

7272
You can also build the documentation using gulp:
7373

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "js2xmlparser",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "Parses JavaScript objects into XML",
55
"keywords": [
66
"convert",

src/main.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,16 @@ function parseAttribute(name: string, value: string, parentElement: XmlElement,
7171
options: IOptions): void
7272
{
7373
let attribute = parentElement.attribute(name, "");
74-
if (!isType(value, "String")) {
75-
throw new Error("attribute value for name '" + name + "' should be a" +
76-
" string");
74+
if (isType(value, "String") || isType(value, "Number")
75+
|| isType(value, "Boolean") || isType(value, "Undefined")
76+
|| isType(value, "Null"))
77+
{
78+
parseString(stringify(value), attribute, options);
79+
} else {
80+
throw new Error("attribute value for name '" + name + "' should be a"
81+
+ " primitive (string, number, boolean, null, or"
82+
+ " undefined)");
7783
}
78-
parseString(value, attribute, options);
7984
}
8085

8186
/**
@@ -127,8 +132,8 @@ function parseObjectOrMapEntry(key: string, value: any,
127132
parseValue(key, value, parentElement, options);
128133
return;
129134
} else {
130-
throw new Error("value value " + value + " must be a primitive"
131-
+ " (string, number, null, or undefined)");
135+
throw new Error("value " + value + " should be a primitive"
136+
+ " (string, number, boolean, null, or undefined)");
132137
}
133138
}
134139

src/options.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export interface IOptions {
5353
* object.
5454
*
5555
* The attribute object must be an object containing keys that map to
56-
* strings.
56+
* primitives (string, number, boolean, null, or undefined).
5757
*
5858
* For example, if `attributeString` is `"@"`, then the following object:
5959
* ```javascript

test/src/main.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -483,12 +483,17 @@ describe("parser", () => {
483483
{
484484
"@": {
485485
"test1": "test2",
486-
"test3": "test4"
486+
"test3": "test4",
487+
"test5": 3,
488+
"test6": null,
489+
"test7": undefined,
490+
"test8": true
487491
}
488492
},
489493
simpleOptions
490494
),
491-
"<root test1='test2' test3='test4'/>"
495+
"<root test1='test2' test3='test4' test5='3' "
496+
+ "test6='null' test7='undefined' test8='true'/>"
492497
);
493498

494499
assert.strictEqual(
@@ -543,7 +548,7 @@ describe("parser", () => {
543548
"root",
544549
{
545550
"@": {
546-
"test": 3
551+
"test": {}
547552
}
548553
},
549554
simpleOptions
@@ -846,13 +851,27 @@ describe("parser", () => {
846851
<[string, string]> ["test8", "test9"],
847852
<[string, string]> ["#", "test10"],
848853
<[string, string]> ["test11", "test12"]
849-
])
854+
]),
855+
"test13": {
856+
"#": 3
857+
},
858+
"test14": {
859+
"#": true
860+
},
861+
"test15": {
862+
"#": null
863+
},
864+
"test16": {
865+
"#": undefined
866+
}
850867
},
851868
simpleOptions
852869
),
853870
"<root><test1><test2>test3</test2>test6<test4>test5"
854871
+ "</test4></test1><test7><test8>test9</test8>test10"
855-
+ "<test11>test12</test11></test7></root>"
872+
+ "<test11>test12</test11></test7><test13>3</test13>"
873+
+ "<test14>true</test14><test15>null</test15><test16>"
874+
+ "undefined</test16></root>"
856875
);
857876

858877
assert.strictEqual(

0 commit comments

Comments
 (0)