From 1ffa82132b1eb541e9560c47199153a393748191 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Sun, 7 Jun 2015 09:43:00 +0200 Subject: [PATCH 1/4] First take on the api of xmlbuilder --- xmlbuilder/xmlbuilder.d.ts | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 xmlbuilder/xmlbuilder.d.ts diff --git a/xmlbuilder/xmlbuilder.d.ts b/xmlbuilder/xmlbuilder.d.ts new file mode 100644 index 000000000..9fee2a85b --- /dev/null +++ b/xmlbuilder/xmlbuilder.d.ts @@ -0,0 +1,80 @@ +declare class XMLDocType { + clone(): XMLDocType; + element(name, value): XMLDocType; + attList(elementName, attributeName, attributeType, defaultValueType, defaultValue): XMLDocType; + entity(name, value): XMLDocType; + pEntity(name, value): XMLDocType; + notation(name, value): XMLDocType; + cdata(value): XMLDocType; + comment(value): XMLDocType; + instruction(target, value): XMLDocType; + root(): XMLDocType; + document(): any; + toString(options, level): string; + + ele(name, value): XMLDocType; + att(elementName, attributeName, attributeType, defaultValueType, defaultValue): XMLDocType; + ent(name, value): XMLDocType; + pent(name, value): XMLDocType; + not(name, value): XMLDocType; + dat(value): XMLDocType; + com(value): XMLDocType; + ins(target, value): XMLDocType; + up(): XMLDocType; + doc(): any; +} + +declare class XMLNode { + element(name, attributes, text): XMLNode; + ele(name, attributes, text): XMLNode; + insertBefore(name, attributes, text): XMLNode; + insertAfter(name, attributes, text): XMLNode; + remove(): XMLNode; + node(name, attributes, text): XMLNode; + text(value): XMLNode; + cdata(value): XMLNode; + comment(value): XMLNode; + raw(value): XMLNode; + declaration(version, encoding, standalone): XMLNode; + doctype(pubID, sysID): XMLDocType; + up(): XMLNode; + root(): XMLNode; + document(): any; + end(options): string; + prev(): XMLNode; + next(): XMLNode; + nod(name, attributes, text): XMLNode; + txt(value): XMLNode; + dat(value): XMLNode; + com(value): XMLNode; + doc(value): XMLNode; + dec(version, encoding, standalone): XMLNode; + dtd(pubID, sysID): XMLDocType; + e(name, attributes, text): XMLNode; + n(name, attributes, text): XMLNode; + t(value): XMLNode; + d(value): XMLNode; + c(value): XMLNode; + r(value): XMLNode; + u(value): XMLNode; +} + +declare class XMLElement extends XMLNode { + clone(): XMLElement; + attribute(name: string, value: any): XMLElement; + att(name: string, value: any): XMLElement; + removeAttribute(name: string): XMLElement; + instruction(target, value): XMLElement; + ins(target, value): XMLElement; + a(name, value): XMLElement; + i(target, value): XMLElement; + toString(options?, level?): string; +} + +interface XMLBuilderStatic { + create(name: string, xmldec?: Object, doctype?: string, options?: Object): XMLElement; +} + +declare module 'xmlbuilder' { + export = XMLBuilderStatic; +} From 2c568d3bd07d61383ba4c7d2275e2bf4a8279046 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Sun, 7 Jun 2015 12:33:03 +0200 Subject: [PATCH 2/4] Type definition meta information --- xmlbuilder/xmlbuilder.d.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xmlbuilder/xmlbuilder.d.ts b/xmlbuilder/xmlbuilder.d.ts index 9fee2a85b..cfbeb56b6 100644 --- a/xmlbuilder/xmlbuilder.d.ts +++ b/xmlbuilder/xmlbuilder.d.ts @@ -1,3 +1,8 @@ +// Type definitions for xmlbuilder +// Project: https://github.com/oozcitak/xmlbuilder-js +// Definitions by: Oskar Gewalli +// Definitions: https://github.com/borisyankov/DefinitelyTyped + declare class XMLDocType { clone(): XMLDocType; element(name, value): XMLDocType; From f872f895ee3a6ad1026cb5f8d252ec59c8c3f481 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Sun, 7 Jun 2015 22:07:01 +0200 Subject: [PATCH 3/4] Some tests based on test code from xmlbuilder --- xmlbuilder/xmlbuilder-tests.ts | 44 +++++++++ xmlbuilder/xmlbuilder.d.ts | 160 +++++++++++++++++---------------- 2 files changed, 126 insertions(+), 78 deletions(-) create mode 100644 xmlbuilder/xmlbuilder-tests.ts diff --git a/xmlbuilder/xmlbuilder-tests.ts b/xmlbuilder/xmlbuilder-tests.ts new file mode 100644 index 000000000..bebc5f4d8 --- /dev/null +++ b/xmlbuilder/xmlbuilder-tests.ts @@ -0,0 +1,44 @@ +/// + +import xmlbuilder = require('xmlbuilder'); +var xml = xmlbuilder.create; + +// https://github.com/oozcitak/xmlbuilder-js/blob/master/test/comment.coffee +xml('comment', {}, {}, { headless: true }).comment('<>\'"&\t\n\r').end(); + +// https://github.com/oozcitak/xmlbuilder-js/blob/master/test/instructions.coffee +xml('test17', { headless: true }).ins('pi', 'mypi').end(); + +xml('test17', { headless: true }).ins({ 'pi': 'mypi', 'pi2': 'mypi2', 'pi3': null }).end(); + +xml('test17', { headless: true }).ins(['pi', 'pi2']).end(); + +xml('test18', { headless: true }) + .ins('renderCache.subset', '"Verdana" 0 0 ISO-8859-1 4 268 67 "#(),-./') + .ins('pitarget', () => 'pivalue') + .end(); + +// https://github.com/oozcitak/xmlbuilder-js/blob/master/test/createxml.coffee +xml('root') + .ele('xmlbuilder') + .att('for', 'node-js') + .com('CoffeeScript is awesome.') + .nod('repo') + .att('type', 'git') + .txt('git://github.com/oozcitak/xmlbuilder-js.git') + .up() + .up() + .ele('test') + .att('escaped', 'chars <>\'"&\t\n\r') + .txt('complete 100%<>\'"&\t\n\r') + .up() + .ele('cdata') + .cdata('this is a test\nSecond line') + .up() + .ele('raw') + .raw('&<>&') + .up() + .ele('atttest', { 'att': 'val' }, 'text') + .up() + .ele('atttest', 'text') + .end(); diff --git a/xmlbuilder/xmlbuilder.d.ts b/xmlbuilder/xmlbuilder.d.ts index cfbeb56b6..cf9bba9fa 100644 --- a/xmlbuilder/xmlbuilder.d.ts +++ b/xmlbuilder/xmlbuilder.d.ts @@ -3,83 +3,87 @@ // Definitions by: Oskar Gewalli // Definitions: https://github.com/borisyankov/DefinitelyTyped -declare class XMLDocType { - clone(): XMLDocType; - element(name, value): XMLDocType; - attList(elementName, attributeName, attributeType, defaultValueType, defaultValue): XMLDocType; - entity(name, value): XMLDocType; - pEntity(name, value): XMLDocType; - notation(name, value): XMLDocType; - cdata(value): XMLDocType; - comment(value): XMLDocType; - instruction(target, value): XMLDocType; - root(): XMLDocType; - document(): any; - toString(options, level): string; - - ele(name, value): XMLDocType; - att(elementName, attributeName, attributeType, defaultValueType, defaultValue): XMLDocType; - ent(name, value): XMLDocType; - pent(name, value): XMLDocType; - not(name, value): XMLDocType; - dat(value): XMLDocType; - com(value): XMLDocType; - ins(target, value): XMLDocType; - up(): XMLDocType; - doc(): any; -} - -declare class XMLNode { - element(name, attributes, text): XMLNode; - ele(name, attributes, text): XMLNode; - insertBefore(name, attributes, text): XMLNode; - insertAfter(name, attributes, text): XMLNode; - remove(): XMLNode; - node(name, attributes, text): XMLNode; - text(value): XMLNode; - cdata(value): XMLNode; - comment(value): XMLNode; - raw(value): XMLNode; - declaration(version, encoding, standalone): XMLNode; - doctype(pubID, sysID): XMLDocType; - up(): XMLNode; - root(): XMLNode; - document(): any; - end(options): string; - prev(): XMLNode; - next(): XMLNode; - nod(name, attributes, text): XMLNode; - txt(value): XMLNode; - dat(value): XMLNode; - com(value): XMLNode; - doc(value): XMLNode; - dec(version, encoding, standalone): XMLNode; - dtd(pubID, sysID): XMLDocType; - e(name, attributes, text): XMLNode; - n(name, attributes, text): XMLNode; - t(value): XMLNode; - d(value): XMLNode; - c(value): XMLNode; - r(value): XMLNode; - u(value): XMLNode; -} - -declare class XMLElement extends XMLNode { - clone(): XMLElement; - attribute(name: string, value: any): XMLElement; - att(name: string, value: any): XMLElement; - removeAttribute(name: string): XMLElement; - instruction(target, value): XMLElement; - ins(target, value): XMLElement; - a(name, value): XMLElement; - i(target, value): XMLElement; - toString(options?, level?): string; -} - -interface XMLBuilderStatic { - create(name: string, xmldec?: Object, doctype?: string, options?: Object): XMLElement; -} - declare module 'xmlbuilder' { - export = XMLBuilderStatic; + export = xmlbuilder; + class XMLDocType { + clone(): XMLDocType; + element(name: string, value?: Object): XMLDocType; + attList(elementName: string, attributeName: string, attributeType: string, defaultValueType?: string, defaultValue?: any): XMLDocType; + entity(name: string, value: any): XMLDocType; + pEntity(name: string, value: any): XMLDocType; + notation(name: string, value: any): XMLDocType; + cdata(value: string): XMLDocType; + comment(value: string): XMLDocType; + instruction(target: string, value: any): XMLDocType; + root(): XMLDocType; + document(): any; + toString(options?: Object, level?: Number): string; + + ele(name: string, value?: Object): XMLDocType; + att(elementName: string, attributeName: string, attributeType: string, defaultValueType?: string, defaultValue?: any): XMLDocType; + ent(name: string, value: any): XMLDocType; + pent(name: string, value: any): XMLDocType; + not(name: string, value: any): XMLDocType; + dat(value: string): XMLDocType; + com(value: string): XMLDocType; + ins(target: string, value: any): XMLDocType; + up(): XMLDocType; + doc(): any; + } + + class XMLElementOrXMLNode { + // XMLElement: + clone(): XMLElementOrXMLNode; + attribute(name: any, value?: any): XMLElementOrXMLNode; + att(name: any, value?: any): XMLElementOrXMLNode; + removeAttribute(name: string): XMLElementOrXMLNode; + instruction(target: string, value: any): XMLElementOrXMLNode; + instruction(array: Array): XMLElementOrXMLNode; + instruction(obj: Object): XMLElementOrXMLNode; + ins(target: string, value: any): XMLElementOrXMLNode; + ins(array: Array): XMLElementOrXMLNode; + ins(obj: Object): XMLElementOrXMLNode; + a(name: any, value?: any): XMLElementOrXMLNode; + i(target: string, value: any): XMLElementOrXMLNode; + i(array: Array): XMLElementOrXMLNode; + i(obj: Object): XMLElementOrXMLNode; + toString(options?:Object, level?:Number): string; + // XMLNode: + element(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + ele(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + insertBefore(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + insertAfter(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + remove(): XMLElementOrXMLNode; + node(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + text(value: string): XMLElementOrXMLNode; + cdata(value: string): XMLElementOrXMLNode; + comment(value: string): XMLElementOrXMLNode; + raw(value: string): XMLElementOrXMLNode; + declaration(version: string, encoding: string, standalone: boolean): XMLElementOrXMLNode; + doctype(pubID: string, sysID: string): XMLDocType; + up(): XMLElementOrXMLNode; + root(): XMLElementOrXMLNode; + document(): any; + end(options?: Object): string; + prev(): XMLElementOrXMLNode; + next(): XMLElementOrXMLNode; + nod(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + txt(value: string): XMLElementOrXMLNode; + dat(value: string): XMLElementOrXMLNode; + com(value: string): XMLElementOrXMLNode; + doc(): XMLElementOrXMLNode; + dec(version: string, encoding: string, standalone: boolean): XMLElementOrXMLNode; + dtd(pubID: string, sysID: string): XMLDocType; + e(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + n(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode; + t(value: string): XMLElementOrXMLNode; + d(value: string): XMLElementOrXMLNode; + c(value: string): XMLElementOrXMLNode; + r(value: string): XMLElementOrXMLNode; + u(): XMLElementOrXMLNode; + } + + module xmlbuilder { + function create(name: string, xmldec?: Object, doctype?: any, options?: Object): XMLElementOrXMLNode; + } } From fc8ac28f9c336f927a6fa29431dbbf04f58000c2 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Sun, 7 Jun 2015 22:12:03 +0200 Subject: [PATCH 4/4] Fixed header in order to pass npm test --- xmlbuilder/xmlbuilder.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmlbuilder/xmlbuilder.d.ts b/xmlbuilder/xmlbuilder.d.ts index cf9bba9fa..6f13452c1 100644 --- a/xmlbuilder/xmlbuilder.d.ts +++ b/xmlbuilder/xmlbuilder.d.ts @@ -1,6 +1,6 @@ // Type definitions for xmlbuilder // Project: https://github.com/oozcitak/xmlbuilder-js -// Definitions by: Oskar Gewalli +// Definitions by: Wallymathieu // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module 'xmlbuilder' {