///|
/// Converts a document element to raw text.
pub fn DocumentElement::to_raw_text(self : DocumentElement) -> String {
match self {
Text(value) => value
Tab => "\t"
Paragraph(children~, ..) => children_to_raw_text(children) + "\n\n"
Document(children~, ..) => children_to_raw_text(children)
Run(children~, ..) => children_to_raw_text(children)
Hyperlink(children~, ..) => children_to_raw_text(children)
Table(children~, ..) => children_to_raw_text(children)
TableRow(children~, ..) => children_to_raw_text(children)
TableCell(children~, ..) => children_to_raw_text(children)
_ => ""
}
}
///|
fn children_to_raw_text(children : Array[DocumentElement]) -> String {
let builder = StringBuilder()
for child in children {
builder.write_string(child.to_raw_text())
}
builder.to_string()
}
///|
/// Extracts raw text from a document tree.
pub fn extract_raw_text_from_document(
document : DocumentElement,
) -> @core.ConversionResult {
@core.success(document.to_raw_text())
}