From 72cb0dc10b2dac486d3e2a52cf44baf0d7496034 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 5 Jan 2022 11:22:01 -0800 Subject: [PATCH] fixup for first and last items --- jc/parsers/stat_s.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/jc/parsers/stat_s.py b/jc/parsers/stat_s.py index 09d10a80..2062ea7d 100644 --- a/jc/parsers/stat_s.py +++ b/jc/parsers/stat_s.py @@ -142,7 +142,6 @@ def parse(data, raw=False, quiet=False, ignore_exceptions=False): for line in data: try: jc.utils.streaming_line_input_type_check(line) - linecomplete = False line = line.rstrip() # ignore blank lines @@ -158,10 +157,9 @@ def parse(data, raw=False, quiet=False, ignore_exceptions=False): # line #1 if line.startswith(' File: '): if output_line: - linecomplete = True - else: - linecomplete = False - output_line = {} + yield stream_success(output_line, ignore_exceptions) if raw else stream_success(_process(output_line), ignore_exceptions) + + output_line = {} line_list = line.split(maxsplit=1) output_line['file'] = line_list[1] @@ -262,12 +260,18 @@ def parse(data, raw=False, quiet=False, ignore_exceptions=False): 'blocks': value[13], 'unix_flags': value[14] } - linecomplete = True - if linecomplete and output_line: - yield stream_success(output_line, ignore_exceptions) if raw else stream_success(_process(output_line), ignore_exceptions) - elif linecomplete: - raise ParseError('Not stat data') + if output_line: + yield stream_success(output_line, ignore_exceptions) if raw else stream_success(_process(output_line), ignore_exceptions) + output_line = {} except Exception as e: yield stream_error(e, ignore_exceptions, line) + output_line = {} + + # gather final item + try: + if output_line: + yield stream_success(output_line, ignore_exceptions) if raw else stream_success(_process(output_line), ignore_exceptions) + except Exception as e: + yield stream_error(e, ignore_exceptions, line)