///|
fn write_source_chunk(source : StringBuilder, chunk : StringBuilder) -> Unit {
source.write_string(" text.write_string(")
source.write_string(chunk.to_string().escape())
source.write_string(")\n")
}
///|
/// Generate a MoonBit source file that embeds this verified snapshot without
/// runtime file-system or network access. The generated function returns a
/// `Result` so a corrupt or edited bundle cannot silently become trusted.
///
/// The generated file contains PSL-derived data; redistributors remain
/// responsible for the upstream list's MPL-2.0 license obligations.
pub fn Snapshot::to_moonbit_source(self : Snapshot) -> String {
let output = StringBuilder()
output.write_string(
"// Generated by cn-wn/moonsuffix from caller-supplied PSL data.\n",
)
output.write_string(
"// PSL-derived data: MPL-2.0; https://publicsuffix.org/list/\n",
)
output.write_string(
"// Keep the upstream source and applicable license notices when redistributing.\n",
)
output.write_string("// Canonical PSL SHA-256: \{self.sha256()}\n\n")
output.write_string(
"pub fn embedded_suffix_snapshot() -> Result[(@moonsuffix.Snapshot, @moonsuffix.SuffixList), @moonsuffix.SnapshotLoadError] {\n",
)
output.write_string(" let text = StringBuilder()\n")
let mut chunk = StringBuilder()
let mut chunk_length = 0
for ch in self.bundle_text() {
chunk.write_char(ch)
chunk_length = chunk_length + 1
if chunk_length >= 2048 {
write_source_chunk(output, chunk)
chunk = StringBuilder()
chunk_length = 0
}
}
if chunk_length > 0 {
write_source_chunk(output, chunk)
}
output.write_string(
" @moonsuffix.Snapshot::restore_compiled_bundle_text(text.to_string())\n",
)
output.write_string("}\n")
output.to_string()
}