Нет прямого решения
Я не думаю, что это возможно с директивой parameters
напрямую. Символ 'docsource
преобразуется в NameReceptacle
через метод неявного преобразования в ParameterDirectives
. В NameReceptacle есть только 1 String
переменная-член: name
. Это предотвращает любое совпадение регулярного выражения или преобразование символа в несколько строк, чтобы соответствовать всем возможным шаблонам капитализации ...
Косвенное решение
Директива parameterMap
может использоваться для получения Map[String, String]
, где вы можете затем нажимать клавиши:
val sourceTypeDirective : Directive1[DocumentSource] =
parameterMap {
(_ : Map[String, String])
.view
.map(tup => (tup._1.toLowerCase, tup._2))
.toMap
.get("docsource")
.filter(sourceAcceptedType)
.map(docSource => provide(sourceValueOf(docSource)))
.getOrElse(reject)
}
Внимание
Ключ строки запроса "field"
отличается от ключа "FIELD"
. Это технически 2 разных ключа и должны соответствовать 2 разным значениям. Но любое решение вопроса может привести к столкновению ключей для этих двух полей.