summaryrefslogtreecommitdiff
path: root/it_pipe.class
diff options
context:
space:
mode:
Diffstat (limited to 'it_pipe.class')
-rw-r--r--it_pipe.class48
1 files changed, 40 insertions, 8 deletions
diff --git a/it_pipe.class b/it_pipe.class
index 281ee5f..5ab7e8a 100644
--- a/it_pipe.class
+++ b/it_pipe.class
@@ -85,6 +85,16 @@ function map($expr)
}
/**
+ * 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
*/
function 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);