MCPcopy Create free account
hub / github.com/PRQL/prql / case

Function case

prqlc/prqlc-parser/src/parser/expr.rs:249–265  ·  view source on GitHub ↗
(
    expr: impl Parser<'a, I, Expr, ParserError<'a>> + Clone + 'a,
)

Source from the content-addressed store, hash-verified

247}
248
249fn case<'a, I>(
250 expr: impl Parser<'a, I, Expr, ParserError<'a>> + Clone + 'a,
251) -> impl Parser<'a, I, ExprKind, ParserError<'a>> + Clone + 'a
252where
253 I: Input<'a, Token = lr::Token, Span = Span> + BorrowInput<'a>,
254{
255 // The `nickname != null => nickname,` part
256 let mapping = func_call(expr.clone())
257 .map(Box::new)
258 .then_ignore(select_ref! { lr::Token { kind: TokenKind::ArrowFat, .. } => () })
259 .then(func_call(expr).map(Box::new))
260 .map(|(condition, value)| SwitchCase { condition, value });
261
262 keyword("case")
263 .ignore_then(sequence(mapping).delimited_by(ctrl('['), ctrl(']')))
264 .map(ExprKind::Case)
265}
266
267fn unary<'a, I, E>(expr: E) -> impl Parser<'a, I, Expr, ParserError<'a>> + Clone + 'a
268where

Callers 1

exprFunction · 0.85

Calls 5

func_callFunction · 0.85
sequenceFunction · 0.85
ctrlFunction · 0.85
mapMethod · 0.80
keywordFunction · 0.70

Tested by

no test coverage detected