#include "MenuMatcherScriptNumeric.h" MenuMatcherScriptNumeric::MenuMatcherScriptNumeric() = default; MatcherResult MenuMatcherScriptNumeric::CanMatch(ILexer* lexer, const unsigned tokenOffset) { const auto& token = lexer->GetToken(tokenOffset); if (token.m_type == SimpleParserValueType::FLOATING_POINT || token.m_type == SimpleParserValueType::INTEGER) return MatcherResult::Match(1); if (token.m_type != SimpleParserValueType::STRING) return MatcherResult::NoMatch(); const auto& stringValue = token.StringValue(); if (stringValue.empty()) return MatcherResult::NoMatch(); char* endPtr; // The return result does not matter here const auto _ = strtod(&stringValue[0], &endPtr); if(endPtr != &stringValue[stringValue.size()]) return MatcherResult::NoMatch(); return MatcherResult::Match(1); }