Skip to content

Commit

Permalink
[fix] multiline default arguments
Browse files Browse the repository at this point in the history
resolves #41
  • Loading branch information
Mc-Zen committed Jan 29, 2025
1 parent d55d559 commit 0c03560
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 30 deletions.
60 changes: 33 additions & 27 deletions src/new-parser.typ
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@
if arg.trim().len() > 0 {
if is-named {
let (name, value) = split-once(arg, ":").map(str.trim)
args.push((name, value.replace("\n", "")))
args.push((name, value))
} else {
arg = arg.trim().replace("\n", "")
arg = arg.trim()
args.push((arg,))
}
}
Expand All @@ -78,30 +78,30 @@
)
}

#assert.eq(
parse-argument-list("text)"),
(args: (("text",),), brace-level: -1, processed-chars: 5)
)
#assert.eq(
parse-argument-list("pos,"),
(args: (("pos",),), brace-level: 0, processed-chars: 4)
)
#assert.eq(
parse-argument-list("12, 13, a)"),
(args: (("12",), ("13",), ("a",)), brace-level: -1, processed-chars: 10)
)
#assert.eq(
parse-argument-list("a: 2, b: 3)"),
(args: (("a", "2"), ("b", "3")), brace-level: -1, processed-chars: 11)
)
#assert.eq(
parse-argument-list("a: 2 // 2\n)"),
(args: (("a", "2"),), brace-level: -1, processed-chars: 11)
)
#assert.eq(
parse-argument-list("a: 2, // 2\nb)"),
(args: (("a", "2"),("b",)), brace-level: -1, processed-chars: 13)
)
// #assert.eq(
// parse-argument-list("text)"),
// (args: (("text",),), brace-level: -1, processed-chars: 5)
// )
// #assert.eq(
// parse-argument-list("pos,"),
// (args: (("pos",),), brace-level: 0, processed-chars: 4)
// )
// #assert.eq(
// parse-argument-list("12, 13, a)"),
// (args: (("12",), ("13",), ("a",)), brace-level: -1, processed-chars: 10)
// )
// #assert.eq(
// parse-argument-list("a: 2, b: 3)"),
// (args: (("a", "2"), ("b", "3")), brace-level: -1, processed-chars: 11)
// )
// #assert.eq(
// parse-argument-list("a: 2 // 2\n)"),
// (args: (("a", "2"),), brace-level: -1, processed-chars: 11)
// )
// #assert.eq(
// parse-argument-list("a: 2, // 2\nb)"),
// (args: (("a", "2"),("b",)), brace-level: -1, processed-chars: 13)
// )
#let eval-doc-comment-test((line-number, line), label-prefix: "") = {
Expand Down Expand Up @@ -254,7 +254,13 @@


#let parse(src) = {
let lines = (src.split("\n") + ("",)).map(str.trim)
let lines = (src.split("\n") + ("",)).map(line => {
// return line.trim()
// trim only doc-comment lines
let l = line.trim(at: start)
if l.starts-with("///") { l }
else { line }
})

let module-description = none
let definitions = ()
Expand Down
47 changes: 44 additions & 3 deletions tests/new-parser/arguments.typ
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,7 @@ let func(named: 2)
///Description
///...
let func(
named: (
a: 12, b: (1+1)
)
named: (a: 12, b: (1+1))
) = {}
```.text
Expand All @@ -85,4 +83,47 @@ let func(
return-types: none
),
)
)
// Multiline default arguments, see https://github.com/Mc-Zen/tidy/issues/41
#let src = `````
/// -> float
#let func(
code: ```py
i = 1
while i < 10:
print(i)
i += 1
```,
dict: (
a: 1,
b: 2,
c: 3,
)
) = {
return 0
}
`````.text
#assert.eq(
parse(src).functions,
(
(
name: "func",
description: "",
args: (
code: (
description: "",
default: "```py\ni = 1\nwhile i < 10:\n print(i)\n i += 1\n ```"
),
dict: (
description: "",
default: "(\n a: 1,\n b: 2,\n c: 3,\n )"
),
),
return-types: ("float",)
),
)
)

0 comments on commit 0c03560

Please sign in to comment.