Transforms raw HADS observations into a dict:
            station code -> [(variable, time, value), ...]

        Takes into account the var filter (if set).

def _parse_data(self, raw_data, var_filter, time_extents):
        """
        Transforms raw HADS observations into a dict:
            station code -> [(variable, time, value), ...]

        Takes into account the var filter (if set).
        """

        retval = defaultdict(list)
        p = parser()

        begin_time, end_time = time_extents

        for line in raw_data.splitlines():
            if len(line) == 0:
                continue

            fields = line.split("|")[0:-1]
            if var_filter is None or fields[2] in var_filter:
                dt = p.parse(fields[3]).replace(tzinfo=pytz.utc)
                if (begin_time is None or dt >= begin_time) and (
                    end_time is None or dt <= end_time
                ):
                    try:
                        value = (
                            float(fields[4]) if fields[4] != "NaN" else npNan
                        )
                    except ValueError:
                        value = npNan
                    retval[fields[0]].append((fields[2], dt, value))

        return dict(retval)