preprocessStream

fun preprocessStream(@WillNotClose original: Reader): Reader

Applies streamPreprocessors to a given Reader that reads an iCalendar object in order to repair some things that must be fixed before parsing.

The original reader content is processed line by line to avoid loading the whole content into memory at once.

This method works in a streaming way, so original must not be closed before the result of this method is consumed like that:

someSource.reader().use { original ->
val repaired = preprocessStream(original)
// closing original here would render repaired unusable, too
parse(repaired)
} // use will close original

Return

potentially repaired iCalendar object (doesn't need to be closed separately)

Parameters

original

original iCalendar object (must be closed by caller after consuming the result of this method)