///|
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()
}