let’s implement split-by-double-dash, a function (or a program) that would return two lists: args that come before -- and ones that come after.
split-by-double-dash a b c -- d e f should return the lists [a, b, c] and [d, e, f]
FWIW in YSH (https://oils.pub/ysh.html), you can do this in a style that's like Python and JavaScript, but you can also combine it with shell idioms.
First create it and pretty print it:
ysh-0.34$ var li = :| a b c -- d e f | # shell word style, ['a', 'b'] style is also accepted
ysh-0.34$ = li # pretty print with =
(List) ['a', 'b', 'c', '--', 'd', 'e', 'f']
Then test out the indexOf() method on strings:
ysh-0.34$ = li.indexOf('--')
(Int) 3
Then write the function:
ysh-0.34$ func splitBy(li) {
> var i = li.indexOf('--')
> assert [i !== -1]
> return ( [li[ : i], li[i+1 : ]] ) # same slicing as Python
> }
Call it and unpack it
ysh-0.34$ var front, back = splitBy(li)
ysh-0.34$ = front
(List) ['a', 'b', 'c']
Comments
let’s implement split-by-double-dash, a function (or a program) that would return two lists: args that come before -- and ones that come after.
split-by-double-dash a b c -- d e f should return the lists [a, b, c] and [d, e, f]
FWIW in YSH (https://oils.pub/ysh.html), you can do this in a style that's like Python and JavaScript, but you can also combine it with shell idioms.
First create it and pretty print it:
Then test out the indexOf() method on strings: Then write the function: Call it and unpack it Use it in shell argv, with @myarray as splicing:YSH looks very nice here, thanks. I thought to mention YSH, but have no experience with it, so I hoped you would comment.
(I guess we're duplicating threads at this point :D)