def get_value(parsable_out, division, section, subsection, key):
    """ Gets the value (right-most field) out of gristle_determinator
        parsable output given the key values for the rest of the fields.
    """
    mydialect = csv.Dialect
    mydialect.delimiter = '|'
    mydialect.quoting = file_type.get_quote_number('QUOTE_ALL')
    mydialect.quotechar = '"'
    mydialect.lineterminator = '\n'

    csvobj = csv.reader(parsable_out.split('\n'), dialect=mydialect)

    for record in csvobj:
        if not record:
            continue
        assert len(record) == 5
        rec_division = record[0]
        rec_section = record[1]
        rec_subsection = record[2]
        rec_key = record[3]
        rec_value = record[4]

        if (rec_division == division and rec_section == section
                and rec_subsection == subsection and rec_key == key):
            return rec_value

    return None
def get_value(parsable_out, division, section, subsection, key):
    """ Gets the value (right-most field) out of gristle_determinator
        parsable output given the key values for the rest of the fields.
    """
    mydialect                = csv.Dialect
    mydialect.delimiter      = '|'
    mydialect.quoting        = file_type.get_quote_number('QUOTE_ALL')
    mydialect.quotechar      = '"'
    mydialect.lineterminator = '\n'

    csvobj = csv.reader(parsable_out.split('\n'), dialect=mydialect)

    for record in csvobj:
        if not record:
            continue
        assert len(record) == 5
        rec_division   = record[0]
        rec_section    = record[1]
        rec_subsection = record[2]
        rec_key        = record[3]
        rec_value      = record[4]

        if (rec_division   == division
        and rec_section    == section
        and rec_subsection == subsection
        and rec_key        == key):
            return rec_value

    return None
    def setup_method(self, method):
        recs = [['Alabama', '8', '18'], ['Alaska', '6', '16'],
                ['Arizona', '6', '14'], ['Arkansas', '2', '12'],
                ['California', '19', '44']]
        self.file_struct = {}
        self.field_struct = {}

        fqfn = generate_test_file(delim='|', rec_list=recs, quoted=False)
        cmd = '%s %s --outputformat=parsable' % (os.path.join(
            script_path, 'gristle_determinator'), fqfn)
        r = envoy.run(cmd)
        #print r.std_out
        #print r.std_err
        assert r.status_code == 0

        mydialect = csv.Dialect
        mydialect.delimiter = '|'
        mydialect.quoting = file_type.get_quote_number('QUOTE_ALL')
        mydialect.quotechar = '"'
        mydialect.lineterminator = '\n'

        csvobj = csv.reader(r.std_out.split('\n'), dialect=mydialect)
        for record in csvobj:
            if not record:
                continue
            assert len(record) == 5
            division = record[0]
            section = record[1]
            subsection = record[2]
            key = record[3]
            value = record[4]

            assert division in [
                'file_analysis_results', 'field_analysis_results'
            ]

            if division == 'file_analysis_results':
                assert section == 'main'
                assert subsection == 'main'
                self.file_struct[key] = value
            elif division == 'field_analysis_results':
                assert 'field_' in section
                assert subsection in ['main', 'top_values']
                if section not in self.field_struct:
                    self.field_struct[section] = {}
                if subsection not in self.field_struct[section]:
                    self.field_struct[section][subsection] = {}
                self.field_struct[section][subsection][key] = value
    def setup_method(self, method):
        recs = [ ['Alabama','8','18'],
                 ['Alaska','6','16'],
                 ['Arizona','6','14'],
                 ['Arkansas','2','12'],
                 ['California','19','44'] ]
        self.file_struct  = {}
        self.field_struct = {}

        fqfn = generate_test_file(delim='|', rec_list=recs, quoted=False)
        cmd = '%s %s --outputformat=parsable' % (os.path.join(script_path, 'gristle_determinator'), fqfn)
        r    = envoy.run(cmd)
        print r.std_out
        print r.std_err
        assert r.status_code == 0

        mydialect                = csv.Dialect
        mydialect.delimiter      = '|'
        mydialect.quoting        = file_type.get_quote_number('QUOTE_ALL')
        mydialect.quotechar      = '"'
        mydialect.lineterminator = '\n'

        csvobj = csv.reader(r.std_out.split('\n'), dialect=mydialect)
        for record in csvobj:
            if not record:
                continue
            assert len(record) == 5
            division   = record[0]
            section    = record[1]
            subsection = record[2]
            key        = record[3]
            value      = record[4]

            assert division in ['file_analysis_results','field_analysis_results']

            if division == 'file_analysis_results':
                assert section == 'main'
                assert subsection == 'main'
                self.file_struct[key] = value
            elif division == 'field_analysis_results':
                assert 'field_' in section
                assert subsection in ['main','top_values']
                if section not in self.field_struct:
                    self.field_struct[section] = {}
                if subsection not in self.field_struct[section]:
                    self.field_struct[section][subsection] = {}
                self.field_struct[section][subsection][key] = value