File: index.d.ts

package info (click to toggle)
node-immutable 4.3.8-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,640 kB
  • sloc: javascript: 8,266; sh: 17; makefile: 6
file content (113 lines) | stat: -rw-r--r-- 2,892 bytes parent folder | download | duplicates (3)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
declare namespace Subsume {
	interface ParseResult {
		data?: string;
		rest: string;
	}

	interface ParseResults {
		data: Map<string, string>;
		rest: string;
	}
}

declare class Subsume {
	/**
	Extract embedded data with a specific `id` out of `text`.

	Useful when `text` comes from an external source.
	*/
	static parse(string: string, id: string): Subsume.ParseResult;

	/**
	Extract embedded data corresponding to all IDs in `idArray`, if specified. Otherwise it will extract embedded data for all top-level IDs.

	@returns An object with a Map with an entry for each parsed ID, and a rest string for what remains after all the required IDs have been parsed, as seen below:

	The input:

	```
	some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random@@[7febcd0b3806fbc48c01d7cea4ed1218]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1218]## text@@[7febcd0b3806fbc48c01d7cea4ed1217]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1217]##
	```

	Gives the following output:

	```
	{
		data: Map {
			'7febcd0b3806fbc48c01d7cea4ed1219' => '🦄',
			'7febcd0b3806fbc48c01d7cea4ed1218' => '🦄',
			'7febcd0b3806fbc48c01d7cea4ed1217' => '🦄'
		},
		rest: 'some random text'
	}
	```
	*/
	static parseAll(string: string, idArray?: readonly string[]): Subsume.ParseResults;

	/**
	Used identifier.
	*/
	id: string;

	/**
	Prefix used in `.compose()`.
	*/
	prefix: string;

	/**
	Postfix used in `.compose()`.
	*/
	postfix: string;

	/**
	Regex used in `.parse()`.
	*/
	regex: RegExp;

	/**
	Embed data in other data and easily extract it when needed.

	@param id - You probably don't need to set this. Can be useful if you need a stable ID.

	@example
	```
	import Subsume = require('subsume');

	const subsume = new Subsume();

	console.log(subsume.id);
	//=> '7febcd0b3806fbc48c01d7cea4ed1219'

	const text = subsume.compose('🦄');
	//=> '@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]##'

	// The text can now be embedded in some other text
	const output = `some${text} random text`;
	//=> 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random text'

	// At a later point we extract it
	subsume.parse(output);
	//=> {data: '🦄', rest: 'some random text'}

	// Or in a different process by using the `id`
	const input = 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random text';
	Subsume.parse(text, '7febcd0b3806fbc48c01d7cea4ed1219');
	//=> {data: '🦄', rest: 'some random text'}
	```
	*/
	constructor(id?: string);

	/**
	@returns A wrapped version of `text` that you can embed in other content.
	*/
	compose(string: string): string;

	/**
	Extract your embedded data from `text`.

	@returns An object with properties `.data` for your embedded data and `.rest` for everything else.
	*/
	parse(string: string): Subsume.ParseResult;
}

export = Subsume;