1
0
Fork 0
mirror of https://github.com/emacs-twist/org-babel.git synced 2025-03-05 00:07:04 +00:00

fix: Handle odd number argument lists

This commit is contained in:
Akira Komamura 2022-02-06 00:48:12 +09:00
parent 96d88bd7a4
commit 249dcb5a8e

View file

@ -1,11 +1,36 @@
with builtins;
let
takeWhile = p: xs:
if length xs == 0
then [ ]
else if p (head xs)
then [ (head xs) ] ++ takeWhile p (tail xs)
else [ ];
dropWhile = p: xs:
if length xs == 0
then [ ]
else if p (head xs)
then dropWhile p (tail xs)
else xs;
isKeyword = s: stringLength s > 0 && substring 0 1 s == ":";
notKeyword = s: !(isKeyword s);
toValue = xs:
if length xs == 0
then true
else if length xs == 1
then head xs
else xs;
listToAttrs = xs:
if length xs == 0
then { }
else if length xs == 1
then throw "parseParamsString: Found an odd number of items: ${head xs}"
else { ${head xs} = elemAt xs 1; } // listToAttrs (tail (tail xs));
else {
${head xs} = toValue (takeWhile notKeyword (tail xs));
} // listToAttrs (dropWhile notKeyword (tail xs));
stripPat = "[[:space:]]+(.*)";