-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSource.ts
More file actions
43 lines (42 loc) · 1.5 KB
/
Source.ts
File metadata and controls
43 lines (42 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { mendly } from "mendly"
import { CommentStripper } from "./CommentStripper"
export class Source extends mendly.Reader.Buffered implements mendly.Error.Handler {
constructor(reader: mendly.Reader, private errorHandler: mendly.Error.Handler) {
super(reader)
}
raise(message: mendly.Error): void
raise(message: string, level?: mendly.Error.Level, type?: string, region?: mendly.Error.Region): void
raise(
message: string | mendly.Error,
level?: mendly.Error.Level,
type = "lexical",
region?: mendly.Error.Region
): void {
if (!(message instanceof mendly.Error)) {
if (!level)
level = "critical"
if (!region)
region = this.region
message = new mendly.Error(message as string, level, type, region)
}
this.errorHandler.raise(message as mendly.Error)
}
requirePrefix(prefix: string | string[]): Source {
return new Source(new mendly.Reader.Prefix(this, prefix), this.errorHandler)
}
till(endMark: string | string[]): Source {
return new Source(mendly.Reader.Till.create(this, endMark), this.errorHandler)
}
until(endMark: string | string[]): Source {
return new Source(mendly.Reader.Until.create(this, endMark), this.errorHandler)
}
static from(
content: string | mendly.Reader | undefined,
handler: mendly.Error.Handler | undefined
): Source | undefined {
if (typeof content == "string")
content = mendly.Reader.String.create(content)
return content && new Source(new CommentStripper(content), handler ?? new mendly.Error.Handler.Console())
}
}
export namespace Source {}