in daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/processors/DFDLDelimiter.scala [210:268]
def delimRegexParseDelim(delimiterBuf: Array[DelimBase] = delimBuf): String = {
val sb: StringBuilder = new StringBuilder
delimiterBuf.foreach { delim =>
{
delim match {
case nl: NLDelim => {
sb.append(
"(?>" + // Eliminates needles backtracking. Atomic group of
"(\\r\\n)|" + // CRLF
"((?<!\\r)\\n)|" + // LF not preceded by CR
"(\\r(?!\\n))|" + // CR not followed by LF
"\\u0085|\\u2028)"
)
}
case wsp: WSPDelim => {
sb.append(
"(\\s|\\u0020|\\u0009|\\u000A|\\u000B|\\u000C|\\u000D|\\u0085" +
"|\\u00A0|\\u1680|\\u180E|\\u2000|\\u2001|\\u2002|\\u2003|\\u2004|\\u2005|\\u2006|" +
"\\u2007|\\u2008|\\u2009|\\u200A|\\u2028|\\u2029|\\u202F|\\u205F|\\u3000)"
)
} // Single space
case wsp: WSPPlusDelim => {
sb.append(
"(\\s|\\u0020|\\u0009|\\u000A|\\u000B|\\u000C|\\u000D|\\u0085" +
"|\\u00A0|\\u1680|\\u180E|\\u2000|\\u2001|\\u2002|\\u2003|\\u2004|\\u2005|\\u2006|" +
"\\u2007|\\u2008|\\u2009|\\u200A|\\u2028|\\u2029|\\u202F|\\u205F|\\u3000)+"
)
} // One or more spaces
case wsp: WSPStarDelim => {
sb.append(
"(\\s|\\u0020|\\u0009|\\u000A|\\u000B|\\u000C|\\u000D|\\u0085" +
"|\\u00A0|\\u1680|\\u180E|\\u2000|\\u2001|\\u2002|\\u2003|\\u2004|\\u2005|\\u2006|" +
"\\u2007|\\u2008|\\u2009|\\u200A|\\u2028|\\u2029|\\u202F|\\u205F|\\u3000)*"
)
} // None or more spaces
case ws: ESDelim => // noop
case char: CharDelim => { // Some character
char.char match {
case '[' => sb.append("\\[")
case '\\' => sb.append("\\\\")
case '^' => sb.append("\\^")
case '$' => sb.append("\\$")
case '.' => sb.append("\\.")
case '|' => sb.append("\\|")
case '?' => sb.append("\\?")
case '*' => sb.append("\\*")
case '+' => sb.append("\\+")
case '(' => sb.append("\\(")
case ')' => sb.append("\\)")
case '{' => sb.append("\\{")
case '}' => sb.append("\\}")
case x => sb.append(x)
}
}
}
}
}
sb.toString()
}