mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
Add sax.d.ts for sax-js (sax-style XML parser)
This commit is contained in:
parent
bcf610fef5
commit
5a3ca5378b
43
sax/sax-tests.ts
Normal file
43
sax/sax-tests.ts
Normal file
@ -0,0 +1,43 @@
|
||||
/// <reference path="../node/node.d.ts" />
|
||||
/// <reference path="./sax.d.ts" />
|
||||
import sax = require("sax");
|
||||
|
||||
var opts: sax.SAXOptions = {
|
||||
lowercase: true,
|
||||
normalize: true,
|
||||
xmlns: true,
|
||||
position: true
|
||||
};
|
||||
|
||||
var parser = sax.parser(/*strict=*/true, opts);
|
||||
|
||||
parser.onerror = function(e: Error) {
|
||||
};
|
||||
|
||||
parser.ontext = function(text: string) {
|
||||
};
|
||||
|
||||
parser.onopentag = function(tag: sax.Tag) {
|
||||
};
|
||||
|
||||
parser.onattribute = function(attr: { name: string; value: string; }) {
|
||||
};
|
||||
|
||||
parser.onend = function() {
|
||||
};
|
||||
|
||||
parser.write("<xml>Hello, <who name=\"world\">world</who>!</xml>").close();
|
||||
|
||||
|
||||
var saxStream = sax.createStream(/*strict=*/true, opts);
|
||||
|
||||
saxStream.on("error", function(e: Error) {
|
||||
this._parser.error = null;
|
||||
this._parser.resume();
|
||||
});
|
||||
|
||||
import fs = require("fs");
|
||||
fs.createReadStream("file.xml")
|
||||
.pipe(saxStream)
|
||||
.pipe(fs.createWriteStream("file-copy.xml"));
|
||||
|
||||
78
sax/sax.d.ts
vendored
Normal file
78
sax/sax.d.ts
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
// Type definitions for sax js
|
||||
// Project: https://github.com/isaacs/sax-js
|
||||
// Definitions by: Asana <https://asana.com>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
/// <reference path="../node/node.d.ts" />
|
||||
|
||||
declare module "sax" {
|
||||
export var EVENTS: string[];
|
||||
|
||||
interface SAXOptions {
|
||||
trim?: boolean;
|
||||
normalize?: boolean;
|
||||
lowercase?: boolean;
|
||||
xmlns?: boolean;
|
||||
noscript?: boolean;
|
||||
position?: boolean;
|
||||
}
|
||||
|
||||
export interface Tag {
|
||||
name: string;
|
||||
attributes: { [key: string]: string };
|
||||
|
||||
// Available if opt.xmlns
|
||||
ns?: { [key: string]: string };
|
||||
prefix?: string;
|
||||
local?: string;
|
||||
uri?: string;
|
||||
}
|
||||
|
||||
export function parser(strict: boolean, opt: SAXOptions): SAXParser;
|
||||
export class SAXParser {
|
||||
constructor(strict: boolean, opt: SAXOptions);
|
||||
|
||||
// Methods
|
||||
end(): void;
|
||||
write(s: string): SAXParser;
|
||||
resume(): SAXParser;
|
||||
close(): SAXParser;
|
||||
flush(): void;
|
||||
|
||||
// Members
|
||||
line: number;
|
||||
column: number;
|
||||
error: Error;
|
||||
position: number;
|
||||
startTagPosition: number;
|
||||
closed: boolean;
|
||||
strict: boolean;
|
||||
opt: SAXOptions;
|
||||
tag: string;
|
||||
|
||||
// Events
|
||||
onerror(e: Error): void;
|
||||
ontext(t: string): void;
|
||||
ondoctype(doctype: string): void;
|
||||
onprocessinginstruction(node: { name: string; body: string }): void;
|
||||
onopentag(tag: Tag): void;
|
||||
onclosetag(tagName: string): void;
|
||||
onattribute(attr: { name: string; value: string }): void;
|
||||
oncomment(comment: string): void;
|
||||
onopencdata(): void;
|
||||
oncdata(cdata: string): void;
|
||||
onclosecdata(): void;
|
||||
onopennamespace(ns: { prefix: string; uri: string }): void;
|
||||
onclosenamespace(ns: { prefix: string; uri: string }): void;
|
||||
onend(): void;
|
||||
onready(): void;
|
||||
onscript(script: string): void;
|
||||
}
|
||||
|
||||
import stream = require("stream");
|
||||
export function createStream(strict: boolean, opt: SAXOptions): SAXStream;
|
||||
export class SAXStream extends stream.Duplex {
|
||||
constructor(strict: boolean, opt: SAXOptions);
|
||||
private _parser: SAXParser;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user