А как насчет создания собственного парсера для слова?
word : Parser String
word =
getChompedString <|
succeed ()
|. chompIf Char.isAlphaNum
|. chompWhile Char.isAlphaNum
На самом деле это буквенные символы, поэтому {{return textABC123}}
будет иметь вид Ok ["return","textASD234"]
. Для {{return text}}
Char.isLower
достаточно.
Тогда вы можете использовать его в sequence
вместо getSource
(так как getSource
также выбивает }
символов, что не подходит в текущей ситуации):
block : Parser (List String)
block =
Parser.sequence
{ start = "{{"
, separator = ""
, end = "}}"
, spaces = spaces
, item = word
, trailing = Optional
}
Вот пример приложения ellie , демонстрирующий это.