# HG changeset patch # User Michael Pavone # Date 1401687573 25200 # Node ID 074f885596eded4473a4bf3e0b4cd734c37b67fe # Parent 56409de95f55b4bd78f8dd5c0671b263658f5761# Parent be224817a14bc2af303b0853580a4f2385d5d8dd Merge diff -r be224817a14b -r 074f885596ed modules/array.tp --- a/modules/array.tp Sun Jun 01 17:20:29 2014 -0700 +++ b/modules/array.tp Sun Jun 01 22:39:33 2014 -0700 @@ -103,6 +103,16 @@ new } + filter <- :fun { + new <- #[] + foreach: self :idx el { + if: (fun: el) { + new append: el + } + } + new + } + find:withDefault <- :pred :default{ idx <- 0 l <- length diff -r be224817a14b -r 074f885596ed modules/bytearray.tp --- a/modules/bytearray.tp Sun Jun 01 17:20:29 2014 -0700 +++ b/modules/bytearray.tp Sun Jun 01 22:39:33 2014 -0700 @@ -50,7 +50,7 @@ funret } } - buf _init + buf _init: size } executableFromBytes <- :bytes { diff -r be224817a14b -r 074f885596ed modules/string.tp --- a/modules/string.tp Sun Jun 01 17:20:29 2014 -0700 +++ b/modules/string.tp Sun Jun 01 22:39:33 2014 -0700 @@ -257,6 +257,25 @@ pieces append: self } + ltrim <- { + l <- length + start <- 0 + space <- " " byte: 0 + tab <- "\t" byte: 0 + nl <- "\n" byte: 0 + cr <- "\r" byte: 0 + + while: { + if: start < l { + b <- byte: start + b = space || b = tab || b = nl || b = cr + } + } do: { + start <- start + 1 + } + from: start + } + trim <- { l <- length start <- 0 diff -r be224817a14b -r 074f885596ed samples/stringops.tp --- a/samples/stringops.tp Sun Jun 01 17:20:29 2014 -0700 +++ b/samples/stringops.tp Sun Jun 01 22:39:33 2014 -0700 @@ -20,5 +20,6 @@ print: (string: ("12abcDEF" parseHex32)) . "\n" print: (string: ("FFFFFFFFFF" parseHex64)) . "\n" + print: "'" . (" \nfoobar baz " ltrim) . "'\n" } }