void Space::visit(Visitor& visitor) const { if (m_level >= 0 && m_number == 0) { visitor.linebreak(m_level); } else if (m_number == 0 || m_level > 3) { visitor.space(m_bracket, m_isFirstOrLast); } else { mstl::string s; switch (m_level) { case 1: s.format("%u", m_number); break; case 2: s.append(char(((m_number - 1) % 26) + 'a')); break; case 3: s.appendSmallRomanNumber(m_number); break; } visitor.number(s, m_isFirstOrLast); } }