Prompt Library (Prompt)

Linked with the "prompt" type.

A library for the prompt type, which is a tree of strings that is helpful when working with AI workflows.

Example Usage

#[main]
fn main() {
    const p = prompt("hello, world", "msg");
    assert_eq(p as str, "<msg>hello, world</msg>");
}

Prompt.any(prompt: prompt) -> bool

Does this prompt have any sub-prompts?

const p = prompt('hello', 'greet');
assert(!p.any());

Prompt.at(prompt: prompt, index: int) -> prompt

Get the sub-prompt at a given index (like a list). Will return null if the prompt does not have any sub-prompts.

const p = prompt('hello', 'greet', prompt('hello there'));
const sub = p[0];
assert_eq(sub, prompt('hello there'));

Prompt.clear(prompt: prompt) -> void

Clear all sub-prompts from this prompt.

const p = prompt('hello', 'greet');
p.push(', world');
p.clear();
assert_eq(p as str, '<greet>hello</greet>');

Prompt.empty(prompt: prompt) -> bool

Returns true if the prompt does not have any sub-prompts.

const p = prompt('hello', 'greet');
assert(p.empty());

Prompt.insert(prompt: prompt, index: int, other: prompt) -> void

Insert a sub-prompt into the given index.

const p = prompt(tag = 'greet');
p.push('hello');
p.insert(1, ', world');
assert_eq(p as str, '<greet>hello, world</greet>');

Prompt.len(prompt: prompt) -> int

The number of sub-prompts contained within this prompt.

const p = prompt('hello', 'greet', prompt('hello, world'));
assert_eq(p.len(), 1);

Prompt.pop(prompt: prompt) -> prompt

Pop a sub-prompt from the end of the sub-prompt list.

const p = prompt('hello', 'greet');
p.push(', world');
p.pop();
assert_eq(p as str, '<greet>hello</greet>');

Prompt.prompts(prompt: prompt) -> list

Return this prompts list of sub-prompts.

const p = prompt('hello', 'greet', prompt('a thing', 'sub'));
assert_eq(p.str(), '<greet>hello<sub>a thing</sub></greet>');
assert_eq(p.prompts(), [prompt('a thing', 'sub')]);

Prompt.push(prompt: prompt, other: prompt | str) -> void

Push a sub-prompt to this prompt.

const p = prompt('hello', 'greet');
p.push(', world');
assert_eq(p as str, '<greet>hello, world</greet>');

Prompt.remove(prompt: prompt, index: int) -> prompt

Remove a sub-prompt at the given index.

const p = prompt(tag = 'greet');
p.push('hello');
p.push(', world');
p.remove(1);
assert_eq(p as str, '<greet>hello</greet>');

Prompt.replace(prompt: prompt, index: int, other: prompt) -> void

Replace a sub-prompt at the given index.

const p = prompt(tag = 'greet');
p.push('hello');
p.replace(0, 'yo');
assert_eq(p as str, '<greet>yo</greet>');

Prompt.reverse(prompt: prompt) -> void

Reverse all sub-prompts in this prompt.

const p = prompt(tag = 'greet');
p.push(', world');
p.push('hello');
p.reverse();
assert_eq(p as str, '<greet>hello, world</greet>');

Prompt.set_tag(prompt: prompt, tag: str) -> void

Set the tag portion of this prompt. Set to null to clear the tag.

const p = prompt('hello', 'greet');
p.set_tag('msg');
assert_eq(p.str(), '<msg>hello, world</msg>');

Prompt.set_text(prompt: prompt, text: str) -> void

Set the text portion of this prompt.

const p = prompt('hello', 'greet');
p.set_text('hello, world');
assert_eq(p.str(), '<greet>hello, world</greet>');

Prompt.str(prompt: prompt) -> str

Convert this prompt into a string, just like a cast to 'str' would do.

const p = prompt('hello', 'greet');
assert_eq(p.str(), '<greet>hello</greet>');

Prompt.tag(prompt: prompt) -> str

Get the string tag for this prompt, or null if not present.

const p = prompt('hello', 'greet');
assert_eq(p.tag(), 'greet');

Prompt.text(prompt: prompt) -> str

Get the text portion of this prompt (ignoring any sub-prompts & tag).

const p = prompt('hello', 'greet');
assert_eq(p.text(), 'hello');

Last updated

Was this helpful?