sal/examples/_archive/text_tools.rhai
2025-05-08 09:54:20 +03:00

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!"