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);
|
ParsingLine.erase(FirstCommentSymbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ParsingLine.empty())
|
if (IsOnlyWhitespace(ParsingLine))
|
||||||
{
|
{
|
||||||
|
// Ignore empty and whitespace only lines
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
AddRecipeFromLine(ParsingLine, LineNum);
|
AddRecipeFromLine(ParsingLine, LineNum);
|
||||||
|
@ -68,14 +68,6 @@ void cFurnaceRecipe::ReloadRecipes(void)
|
|||||||
while (std::getline(f, ParsingLine))
|
while (std::getline(f, ParsingLine))
|
||||||
{
|
{
|
||||||
LineNum++;
|
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:
|
// Remove comments from the line:
|
||||||
size_t FirstCommentSymbol = ParsingLine.find('#');
|
size_t FirstCommentSymbol = ParsingLine.find('#');
|
||||||
@ -84,6 +76,12 @@ void cFurnaceRecipe::ReloadRecipes(void)
|
|||||||
ParsingLine.erase(ParsingLine.begin() + static_cast<const long>(FirstCommentSymbol), ParsingLine.end());
|
ParsingLine.erase(ParsingLine.begin() + static_cast<const long>(FirstCommentSymbol), ParsingLine.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsOnlyWhitespace(ParsingLine))
|
||||||
|
{
|
||||||
|
// Ignore empty and whitespace only lines
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
switch (ParsingLine[0])
|
switch (ParsingLine[0])
|
||||||
{
|
{
|
||||||
case '#':
|
case '#':
|
||||||
|
@ -1071,3 +1071,11 @@ bool StringToFloat(const AString & a_String, float & a_Num)
|
|||||||
return true;
|
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. */
|
/** Converts a string into a float. Returns false if the conversion fails. */
|
||||||
extern bool StringToFloat(const AString & a_String, float & a_Num);
|
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