// NtParser.cpp #include #include "NtParser.hpp" namespace NGBW { // NtParser bool NtParser::Parse(FastaRecord &record) { record.clear(); if (m_line == NULL) ReadNextLine(); while (1) { if (m_input.Eof()) return false; if (m_line[0] == '>') { ParseHeader(record); break; } ReadNextLine(); } while (1) { if (m_input.Eof() || m_line[0] == '>') break; record.sequence.append(m_line); ReadNextLine(); } return true; } void NtParser::ParseHeader(FastaRecord &record) { size_t first = FindFirstOf('|', 1); if (first == std::string::npos) first = 1; else first += 1; size_t length = std::strlen(m_line); size_t last = FindFirstOf('|', first + 1); if (last == std::string::npos) last = length; record.identity.assign(m_line + first, last - first); if (last < length) { first = FindFirstSpace(last + 1); if (first != std::string::npos) { first += 1; record.description.assign(m_line + first, length - first); } } ReadNextLine(); } } // namespace NGBW