162 lines
5.5 KiB
Plaintext
162 lines
5.5 KiB
Plaintext
// text_tools.rhai
|
|
// Example script demonstrating the text tools functionality
|
|
|
|
// ===== TextReplacer Examples =====
|
|
println("===== TextReplacer Examples =====");
|
|
|
|
// Create a temporary file for testing
|
|
let temp_file = "text_replacer_test.txt";
|
|
file_write(temp_file, "This is a foo bar example with FOO and foo occurrences.\nAnother line with foo and bar.");
|
|
|
|
// Example 1: Simple replacement
|
|
println("\n--- Example 1: Simple replacement ---");
|
|
let replacer = text_replacer_new()
|
|
.pattern("foo")
|
|
.replacement("REPLACED")
|
|
.build();
|
|
|
|
let result = replacer.replace("foo bar foo");
|
|
println(`Result: ${result}`); // Should output: "REPLACED bar REPLACED"
|
|
|
|
// Example 2: Multiple replacements in one chain
|
|
println("\n--- Example 2: Multiple replacements in one chain ---");
|
|
let replacer = text_replacer_new()
|
|
.pattern("foo").replacement("AAA")
|
|
.pattern("bar").replacement("BBB")
|
|
.build();
|
|
|
|
let result = replacer.replace("foo bar foo baz");
|
|
println(`Result: ${result}`); // Should output: "AAA BBB AAA baz"
|
|
|
|
// Example 3: Case-insensitive regex replacement
|
|
println("\n--- Example 3: Case-insensitive regex replacement ---");
|
|
let replacer = text_replacer_new()
|
|
.pattern("foo")
|
|
.replacement("case-insensitive")
|
|
.regex(true)
|
|
.case_insensitive(true)
|
|
.build();
|
|
|
|
let result = replacer.replace("FOO foo Foo fOo");
|
|
println(`Result: ${result}`); // Should output: "case-insensitive case-insensitive case-insensitive case-insensitive"
|
|
|
|
// Example 4: File operations
|
|
println("\n--- Example 4: File operations ---");
|
|
let replacer = text_replacer_new()
|
|
.pattern("foo").replacement("EXAMPLE")
|
|
.build();
|
|
|
|
// Replace and get result as string
|
|
let file_result = replacer.replace_file(temp_file);
|
|
println(`File content after replacement:\n${file_result}`);
|
|
|
|
// Replace in-place
|
|
replacer.replace_file_in_place(temp_file);
|
|
println("File replaced in-place");
|
|
|
|
// Replace to a new file
|
|
let output_file = "text_replacer_output.txt";
|
|
replacer.replace_file_to(temp_file, output_file);
|
|
println(`Content written to new file: ${output_file}`);
|
|
|
|
// Clean up temporary files
|
|
delete(temp_file);
|
|
delete(output_file);
|
|
|
|
// ===== TemplateBuilder Examples =====
|
|
println("\n\n===== TemplateBuilder Examples =====");
|
|
|
|
// Create a temporary template file
|
|
let template_file = "template_test.txt";
|
|
file_write(template_file, "Hello, {{ name }}! Welcome to {{ place }}.\n{% if show_greeting %}Glad to have you here!{% endif %}\nYour items:\n{% for item in items %} - {{ item }}{% if not loop.last %}\n{% endif %}{% endfor %}\n");
|
|
|
|
// Example 1: Simple template rendering
|
|
println("\n--- Example 1: Simple template rendering ---");
|
|
let template = template_builder_open(template_file)
|
|
.add_var("name", "John")
|
|
.add_var("place", "Rhai")
|
|
.add_var("show_greeting", true)
|
|
.add_var("items", ["apple", "banana", "cherry"]);
|
|
|
|
let result = template.render();
|
|
println(`Rendered template:\n${result}`);
|
|
|
|
// Example 2: Using a map for variables
|
|
println("\n--- Example 2: Using a map for variables ---");
|
|
let vars = #{
|
|
name: "Alice",
|
|
place: "Template World"
|
|
};
|
|
|
|
let template = template_builder_open(template_file)
|
|
.add_vars(vars)
|
|
.add_var("show_greeting", false)
|
|
.add_var("items", ["laptop", "phone", "tablet"]);
|
|
|
|
let result = template.render();
|
|
println(`Rendered template with map:\n${result}`);
|
|
|
|
// Example 3: Rendering to a file
|
|
println("\n--- Example 3: Rendering to a file ---");
|
|
let output_file = "template_output.txt";
|
|
|
|
let template = template_builder_open(template_file)
|
|
.add_var("name", "Bob")
|
|
.add_var("place", "File Output")
|
|
.add_var("show_greeting", true)
|
|
.add_var("items", ["document", "spreadsheet", "presentation"]);
|
|
|
|
template.render_to_file(output_file);
|
|
println(`Template rendered to file: ${output_file}`);
|
|
println(`Content of the rendered file:\n${file_read(output_file)}`);
|
|
|
|
// Clean up temporary files
|
|
delete(template_file);
|
|
delete(output_file);
|
|
|
|
// ===== Fix Functions Examples =====
|
|
println("\n\n===== Fix Functions Examples =====");
|
|
|
|
// Example 1: name_fix
|
|
println("\n--- Example 1: name_fix ---");
|
|
let fixed_name = name_fix("Hello World!");
|
|
println(`Original: "Hello World!"`);
|
|
println(`Fixed: "${fixed_name}"`); // Should output: "hello_world"
|
|
|
|
let fixed_name = name_fix("File-Name.txt");
|
|
println(`Original: "File-Name.txt"`);
|
|
println(`Fixed: "${fixed_name}"`); // Should output: "file_name.txt"
|
|
|
|
let fixed_name = name_fix("Résumé.doc");
|
|
println(`Original: "Résumé.doc"`);
|
|
println(`Fixed: "${fixed_name}"`); // Should output: "rsum.doc"
|
|
|
|
// Example 2: path_fix
|
|
println("\n--- Example 2: path_fix ---");
|
|
let fixed_path = path_fix("/path/to/Hello World!");
|
|
println(`Original: "/path/to/Hello World!"`);
|
|
println(`Fixed: "${fixed_path}"`); // Should output: "/path/to/hello_world"
|
|
|
|
let fixed_path = path_fix("./relative/path/to/DOCUMENT-123.pdf");
|
|
println(`Original: "./relative/path/to/DOCUMENT-123.pdf"`);
|
|
println(`Fixed: "${fixed_path}"`); // Should output: "./relative/path/to/document_123.pdf"
|
|
|
|
// ===== Dedent Functions Examples =====
|
|
println("\n\n===== Dedent Functions Examples =====");
|
|
|
|
// Example 1: dedent
|
|
println("\n--- Example 1: dedent ---");
|
|
let indented_text = " line 1\n line 2\n line 3";
|
|
println(`Original:\n${indented_text}`);
|
|
let dedented = dedent(indented_text);
|
|
println(`Dedented:\n${dedented}`); // Should output: "line 1\nline 2\n line 3"
|
|
|
|
// Example 2: prefix
|
|
println("\n--- Example 2: prefix ---");
|
|
let text = "line 1\nline 2\nline 3";
|
|
println(`Original:\n${text}`);
|
|
let prefixed = prefix(text, " ");
|
|
println(`Prefixed:\n${prefixed}`); // Should output: " line 1\n line 2\n line 3"
|
|
|
|
// Return success message
|
|
"Text tools example completed successfully!" |