package mrmime
Mr. MIME
Install
Dune Dependency
Authors
Maintainers
Sources
mrmime-v0.3.1.tbz
sha256=6c0c054c05af7218080c3c59e08096a62e23afd15d63fe89fb683f29f330bf32
sha512=2ce67aff35d680f38af1c78efa58454b12a20c985bd248bc975e9e259a14f8a2ab04287ace88d46bc95a2b245c040deba9d4fb058ea2b103c0724467dda15414
doc/src/mrmime.prettym/prettym.ml.html
Source file prettym.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
include Fancy let io_buffer_size = 65536 (* XXX(dinosaure): if [margin] is set to [io_buffer_size], we should never add an [FWS] token. *) let create = Pretty.create let is_empty = Pretty.is_empty let flush = Pretty.flush let kflush = Pretty.kflush let to_string ?(margin= 78) ?(new_line= "\r\n") gen value = let buf = Buffer.create 0x100 in let emitter = let write a x = let open Enclosure.IOVec in let open Enclosure.Buffer in match x with | { buffer= String x; off; len; } -> Buffer.add_substring buf x off len ; a + len | { buffer= Bytes x; off; len; } -> Buffer.add_subbytes buf x off len ; a + len | { buffer= Bigstring x; off; len; } -> let x = Bigstringaf.substring x ~off ~len in Buffer.add_string buf x ; a + len in List.fold_left write 0 in let encoder = Pretty.create ~emitter ~margin ~new_line 0x100 in let kend encoder = if Pretty.is_empty encoder then () else Fmt.failwith "Leave a non-empty encoder" in let encoder = eval encoder Fancy.[ !!gen; ] value in let () = Pretty.kflush kend encoder in Buffer.contents buf let to_stream ?(margin= 78) ?(new_line= "\r\n") gen value = let queue = Queue.create () in let line = Buffer.create 4096 in let emitter iovecs = let write a x = let open Enclosure.IOVec in let open Enclosure.Buffer in match x with | { buffer= String x; off; len; } -> Buffer.add_substring line x off len ; a + len | { buffer= Bytes x; off; len; } -> Buffer.add_subbytes line x off len ; a + len | { buffer= Bigstring x; off; len; } -> let x = Bigstringaf.substring x ~off ~len in Buffer.add_string line x ; a + len in let len = List.fold_left write 0 iovecs in let res = Buffer.contents line in if String.length res > 0 then Queue.add res queue ; Buffer.clear line ; len in let consumer () = match Queue.pop queue with | x -> Some x | exception Queue.Empty -> None in let encoder = Pretty.create ~emitter ~margin ~new_line 4096 in let kend encoder = if Pretty.is_empty encoder then () else Fmt.failwith "Leave with a non-empty encoder" in let () = keval (Pretty.kflush kend) encoder Fancy.[ !!gen ] value in consumer module IOVec = Enclosure.IOVec module Buffer = Enclosure.Buffer
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>