diff -r dc5c210295d0 -r f466b4c7d9b1 streamlet-examples/lines_count --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/streamlet-examples/lines_count Sat Jan 18 20:09:34 2020 +0100 @@ -0,0 +1,45 @@ +#!/bin/bash + +# Relational pipes +# Copyright © 2020 František Kučera (Frantovo.cz, GlobalCode.info) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# This streamlet provides a single attribute: number of lines of given file +# Standard wc -l is used to count the lines. +# Directories are reported a 0 lines and with a null flag (will be supported in further Relational pipes versions). + + +. "$(dirname $0)/streamlet-common.sh" + +processMessage_WAITING_FOR_OUTPUT_ATTRIBUTES_METADATA() { + send OUTPUT_ATTRIBUTE_METADATA "${outputAttributeAliases[0]-lines_count}" "integer" + send WAITING_FOR_INPUT_ATTRIBUTES +} + +processMessage_WAITING_FOR_OUTPUT_ATTRIBUTES() { + if [[ -d "$currentFile" ]]; then + value="0"; + isNull="true"; + else + value=$(wc -l "$currentFile" | cut -d" " -f1); + isNull="false"; + fi + + send OUTPUT_ATTRIBUTE "$value" "$isNull"; + send WAITING_FOR_INPUT_ATTRIBUTES; +} + +initialize +processMessages