Ignore whitespace only lines in brewing and furnace recipes (#4332)
This commit is contained in:
parent
52e6543ba5
commit
9dc1343bda
@ -45,8 +45,9 @@ void cBrewingRecipes::ReloadRecipes(void)
|
||||
ParsingLine.erase(FirstCommentSymbol);
|
||||
}
|
||||
|
||||
if (ParsingLine.empty())
|
||||
if (IsOnlyWhitespace(ParsingLine))
|
||||
{
|
||||
// Ignore empty and whitespace only lines
|
||||
continue;
|
||||
}
|
||||
AddRecipeFromLine(ParsingLine, LineNum);
|
||||
|
@ -68,14 +68,6 @@ void cFurnaceRecipe::ReloadRecipes(void)
|
||||
while (std::getline(f, ParsingLine))
|
||||
{
|
||||
LineNum++;
|
||||
if (ParsingLine.empty())
|
||||
{
|
||||
// There is a problem here on Android. Text files transferred from another OS may have a newline representation Android's implementation of getline doesn't expect
|
||||
// Thus, part of a newline may be left in ParsingLine. ::empty() thus thinks the string isn't empty, and the below code outputs interesting errors since it was passed a nearly empty string
|
||||
// Ref: https://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf
|
||||
// TODO: There is a solution in the above reference, but it isn't very pretty. Fix it somehow.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Remove comments from the line:
|
||||
size_t FirstCommentSymbol = ParsingLine.find('#');
|
||||
@ -84,6 +76,12 @@ void cFurnaceRecipe::ReloadRecipes(void)
|
||||
ParsingLine.erase(ParsingLine.begin() + static_cast<const long>(FirstCommentSymbol), ParsingLine.end());
|
||||
}
|
||||
|
||||
if (IsOnlyWhitespace(ParsingLine))
|
||||
{
|
||||
// Ignore empty and whitespace only lines
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (ParsingLine[0])
|
||||
{
|
||||
case '#':
|
||||
|
@ -1071,3 +1071,11 @@ bool StringToFloat(const AString & a_String, float & a_Num)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool IsOnlyWhitespace(const AString & a_String)
|
||||
{
|
||||
return std::all_of(a_String.cbegin(), a_String.cend(), isspace);
|
||||
}
|
||||
|
@ -148,6 +148,9 @@ extern AString StringsConcat(const AStringVector & a_Strings, char a_Separator);
|
||||
/** Converts a string into a float. Returns false if the conversion fails. */
|
||||
extern bool StringToFloat(const AString & a_String, float & a_Num);
|
||||
|
||||
/** Returns true if only whitespace characters are present in the string */
|
||||
bool IsOnlyWhitespace(const AString & a_String);
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user