Refactor sniffer to use _parse_data generator