From 7ef973af86c070965a4d7c1caf3b13844c4c741b Mon Sep 17 00:00:00 2001 From: Urban Müller Date: Tue, 6 Jun 2017 15:21:48 +0200 Subject: add filter(), cut(), askey() --- it_pipe.class | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) (limited to 'it_pipe.class') diff --git a/it_pipe.class b/it_pipe.class index 281ee5f..5ab7e8a 100644 --- a/it_pipe.class +++ b/it_pipe.class @@ -84,6 +84,16 @@ function map($expr) return $this; } +/** + * Apply an expression to every line + */ +function filter($expr) +{ + $this->lines = it::filter($expr, $this->lines); + + return $this; +} + /** * Convert pipe from utf8 to iso-latin */ @@ -101,17 +111,14 @@ function utf8() } /** - * Return contents of pipe as key->val pair (key must be tab separated) + * Select cols from tab-separated cols in each line and tab-joins them again. Key order relevant. */ -function keyval() +function cut($picks) { - foreach ($this->lines as $line) - { - list($key, $val) = explode("\t", $line, 2); - $result[$key] = $val; - } + foreach ($this->lines as $idx => $line) + $this->lines[$idx] = join("\t", it::filter_keys(explode("\t", $line), $picks, ['reorder' => true])); - return (array)$result; + return $this; } /** @@ -128,6 +135,31 @@ function swap() return $this; } +/** + * Return contents of pipe as key->val pair (key must be tab separated). + */ +function keyval() +{ + foreach ($this->lines as $line) + { + list($key, $val) = explode("\t", $line, 2); + $result[$key] = $val; + } + + return (array)$result; +} + +/** + * Return contents of pipe as array keys with value true + */ +function askey() +{ + foreach ($this->lines as $line) + $result[$line] = true; + + return (array)$result; +} + function ED() { ED($this->lines); -- cgit v1.2.3