#include "LocalizeFileReader.h" #include "LocalizeFileParser.h" #include "Parsing/Impl/CommentRemovingStreamProxy.h" #include "Parsing/Impl/ParserSingleInputStream.h" LocalizeFileReader::LocalizeFileReader(std::istream& stream, std::string fileName, GameLanguage language) : m_file_name(std::move(fileName)), m_stream(nullptr), m_language(language) { OpenBaseStream(stream); SetupStreamProxies(); m_stream = m_open_streams.back().get(); } bool LocalizeFileReader::OpenBaseStream(std::istream& stream) { m_open_streams.emplace_back(std::make_unique(stream, m_file_name)); return true; } void LocalizeFileReader::SetupStreamProxies() { m_open_streams.emplace_back(std::make_unique(m_open_streams.back().get())); m_stream = m_open_streams.back().get(); } std::vector LocalizeFileReader::ReadLocalizeFile() { const auto lexer = std::make_unique(m_stream, SimpleLexer::Config{true, true, false}); const auto parser = std::make_unique(lexer.get(), m_language); if (parser->Parse()) return parser->GetParsedValues(); std::cout << "Parsing localization file failed!" << std::endl; return std::vector(); }