in Sources/_StringProcessing/ConsumerInterface.swift [548:657]
func generateConsumer(
_ opts: MatchingOptions
) throws -> Program<String>.ConsumeFunction {
switch self {
case .letter:
return consumeScalarGCs([
.uppercaseLetter, .lowercaseLetter,
.titlecaseLetter, .modifierLetter,
.otherLetter
])
case .mark:
return consumeScalarGCs([
.nonspacingMark, .spacingMark, .enclosingMark
])
case .number:
return consumeScalarGCs([
.decimalNumber, .letterNumber, .otherNumber
])
case .symbol:
return consumeScalarGCs([
.mathSymbol, .currencySymbol, .modifierSymbol,
.otherSymbol
])
case .punctuation:
return consumeScalarGCs([
.connectorPunctuation, .dashPunctuation,
.openPunctuation, .closePunctuation,
.initialPunctuation, .finalPunctuation,
.otherPunctuation
])
case .separator:
return consumeScalarGCs([
.spaceSeparator, .lineSeparator, .paragraphSeparator
])
case .other:
return consumeScalarGCs([
.control, .format, .surrogate, .privateUse, .unassigned
])
case .casedLetter:
throw unsupported("TODO: cased letter? not the property?")
case .control:
return consumeScalarGC(.control)
case .format:
return consumeScalarGC(.format)
case .unassigned:
return consumeScalarGC(.unassigned)
case .privateUse:
return consumeScalarGC(.privateUse)
case .surrogate:
return consumeScalarGC(.surrogate)
case .lowercaseLetter:
return consumeScalarGC(.lowercaseLetter)
case .modifierLetter:
return consumeScalarGC(.modifierLetter)
case .otherLetter:
return consumeScalarGC(.otherLetter)
case .titlecaseLetter:
return consumeScalarGC(.titlecaseLetter)
case .uppercaseLetter:
return consumeScalarGC(.uppercaseLetter)
case .spacingMark:
return consumeScalarGC(.spacingMark)
case .enclosingMark:
return consumeScalarGC(.enclosingMark)
case .nonspacingMark:
return consumeScalarGC(.nonspacingMark)
case .decimalNumber:
return consumeScalarGC(.decimalNumber)
case .letterNumber:
return consumeScalarGC(.letterNumber)
case .otherNumber:
return consumeScalarGC(.otherNumber)
case .connectorPunctuation:
return consumeScalarGC(.connectorPunctuation)
case .dashPunctuation:
return consumeScalarGC(.dashPunctuation)
case .closePunctuation:
return consumeScalarGC(.closePunctuation)
case .finalPunctuation:
return consumeScalarGC(.finalPunctuation)
case .initialPunctuation:
return consumeScalarGC(.initialPunctuation)
case .otherPunctuation:
return consumeScalarGC(.otherPunctuation)
case .openPunctuation:
return consumeScalarGC(.openPunctuation)
case .currencySymbol:
return consumeScalarGC(.currencySymbol)
case .modifierSymbol:
return consumeScalarGC(.modifierSymbol)
case .mathSymbol:
return consumeScalarGC(.mathSymbol)
case .otherSymbol:
return consumeScalarGC(.otherSymbol)
case .lineSeparator:
return consumeScalarGC(.lineSeparator)
case .paragraphSeparator:
return consumeScalarGC(.paragraphSeparator)
case .spaceSeparator:
return consumeScalarGC(.spaceSeparator)
}
}