Skip to content

Commit ee08c39

Browse files
authored
Merge pull request #18 from PAIR-code/iislucas-improve-readme
feat: added exporting for (de)serialization
2 parents 10e745a + bb94aaf commit ee08c39

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ import {
2323
escapeStr,
2424
unEscapeStr,
2525
matchTemplate,
26+
serialiseTemplate,
27+
deserialiseTemplate,
2628
} from './template';
2729
import { FewShotTemplate, matchFewShotTemplate } from './fewshot_template';
28-
import { NamedVar } from './variable';
30+
import { NamedVar, RegExpVar } from './variable';
2931

3032
export = {
3133
Template,
3234
NamedVar,
35+
RegExpVar,
3336
TemplVar,
3437
escapeStr,
3538
template,
@@ -38,4 +41,6 @@ export = {
3841
matchTemplate,
3942
FewShotTemplate,
4043
matchFewShotTemplate,
44+
serialiseTemplate,
45+
deserialiseTemplate,
4146
};

src/template.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ allows parsing of outputs from an LLM to be well typed and know what variable
6363
will come next.
6464
6565
*/
66-
6766
import {
6867
RegExpVar,
6968
NamedVar,
@@ -552,3 +551,22 @@ export function template<
552551
[...varSet]
553552
);
554553
}
554+
555+
// Serialization / Deserialization tools
556+
export type SerialisedTemplate = {
557+
escaped: string;
558+
vars: string[];
559+
};
560+
561+
export function serialiseTemplate(templ: Template<string>): SerialisedTemplate {
562+
return { vars: Object.keys(templ.vars), escaped: templ.escaped };
563+
}
564+
565+
export function deserialiseTemplate<Ns extends string>(
566+
serialised: SerialisedTemplate
567+
): Template<Ns> {
568+
return new Template(
569+
serialised.escaped,
570+
serialised.vars.map((v) => new RegExpVar(v as Ns))
571+
);
572+
}

0 commit comments

Comments
 (0)