in daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/dpath/DFDLFunctions.scala [75:124]
override def computeValue(str: DataValuePrimitive, dstate: DState): DataValueString =
constructLiteral(str.getString)
def constructLiteral(s: String) = {
val sb = new StringBuilder
s.foreach(c => {
c match {
case '%' => sb.append("%%") // \u0025
case '\u0000' | 0xe000 => sb.append("%NUL;")
case '\u0001' | 0xe001 => sb.append("%SOH;")
case '\u0002' | 0xe002 => sb.append("%STX;")
case '\u0003' | 0xe003 => sb.append("%ETX;")
case '\u0004' | 0xe004 => sb.append("%EOT;")
case '\u0005' | 0xe005 => sb.append("%ENQ;")
case '\u0006' | 0xe006 => sb.append("%ACK;")
case '\u0007' | 0xe007 => sb.append("%BEL;")
case '\u0008' | 0xe008 => sb.append("%BS;")
case '\u0009' => sb.append("%HT;") // OK, not remapped
case '\u000A' => sb.append("%LF;") // OK, not remapped
case '\u000B' | 0xe00b => sb.append("%VT;")
case '\u000C' | 0xe00c => sb.append("%FF;")
case '\u000D' => sb.append("%CR;") // OK, not remapped
case '\u000E' | 0xe00e => sb.append("%SO;")
case '\u000F' | 0xe00f => sb.append("%SI;")
case '\u0010' | 0xe010 => sb.append("%DLE;")
case '\u0011' | 0xe011 => sb.append("%DC1;")
case '\u0012' | 0xe012 => sb.append("%DC2;")
case '\u0013' | 0xe013 => sb.append("%DC3;")
case '\u0014' | 0xe014 => sb.append("%DC4;")
case '\u0015' | 0xe015 => sb.append("%NAK;")
case '\u0016' | 0xe016 => sb.append("%SYN;")
case '\u0017' | 0xe017 => sb.append("%ETB;")
case '\u0018' | 0xe018 => sb.append("%CAN;")
case '\u0019' | 0xe019 => sb.append("%EM;") // and above remapped to c + 0xE000
case '\u001A' => sb.append("%SUB;")
case '\u001B' => sb.append("%ESC;")
case '\u001C' => sb.append("%FS;")
case '\u001D' => sb.append("%GS;")
case '\u001E' => sb.append("%RS;")
case '\u001F' => sb.append("%US;")
case '\u0020' => sb.append("%SP;")
case '\u007F' => sb.append("%DEL;")
case '\u00A0' => sb.append("%NBSP;")
case '\u0085' => sb.append("%NEL;")
case '\u2028' => sb.append("%LS;")
case _ => sb.append(c)
}
})
sb.toString()
}