'Extracts keyword/value settings from the ntpd config.
The keyword is always the first entry item.
Values are the remainder of the entries. In cases where an ntpd config
allows multiple values, these are split according to whitespace or
duplicate entries.
Keywords and values are normalized. Keywords are converted to lowercase.
Values are converted into integers, floats or strings. Strings are always
lowercased.
Args:
entries: A list of items making up a single line of a ntp.conf file.'

def ParseLine(self, entries):

    if (not entries):
        return
    keyword = entries[0].lower()
    values = (entries[1:] or [''])
    if (keyword in self._integers):
        values = [int(v) for v in values]
    if (keyword in self._floats):
        values = [float(v) for v in values]
    if (keyword not in (self._repeated | self._duplicates)):
        if isinstance(values[0], basestring):
            self.config[keyword] = '    '.join(values)
        else:
            self.config[keyword] = values
    elif (keyword in self._repeated):
        self.config[keyword] = values
    elif (keyword in self._duplicates):
        if (keyword in self._address_based):
            address = values[0].lower()
            values = (values[1:] or [''])
            existing_keyword_config = self.keyed.setdefault(keyword, [])
            existing_keyword_config.append({'address': address, 'options': '    '.join(values)})
        elif (keyword in self._boolean):
            for option in values:
                if (keyword == 'enable'):
                    self.config[option] = True
                else:
                    self.config[option] = False
        else:
            prev_settings = self.config.setdefault(keyword, [])
            prev_settings.append('    '.join(values))
