- Reorganized examples into osiris/, sal/, and utils/ folders - Moved hardcoded scripts to separate .rhai files - Added signature() method to JobBuilder for job signing - Updated OSIRIS context to use block_in_place instead of runtime - Removed runtime field from OsirisContext - Added typed save() methods for Note and Event objects - Updated all examples to use new structure and APIs
		
			
				
	
	
		
			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!" |