public IConfigurationSetting ReadSetting() {
var setting = new ConfigurationSetting();
while (!IsEndOfStream()) {
var line = ReadLine();
if (!string.IsNullOrWhiteSpace(line)) {
if (line.TrimStart()[0] == '#') {
ReadAttributeValue(line.Substring(1), setting);
} else {
// Expression can be multi-line so read all lines up to the next comment
int startingLineNumber = _lineNumber;
var text = line + ReadRemainingExpressionText();
if (ParseSetting(text, startingLineNumber, setting)) {
if (IsEnvNew(setting)) {
// Skip, as it's not a real setting, it's the creation of the environment
setting = new ConfigurationSetting();
continue;
}
return setting;
}
break;
}
}
}
return null;
}