• mark's avatar
    ENH: cleanup Ostream to ease usage (issue #254) · 18ab8abd
    mark authored
    - Include newline in beginBlock/endBlock, since this corresponds to
      the standard usage. The beginBlock now takes keyType instead of word.
    
    - Provide Ostream::writeEntry method to reduce clutter and simplify
      writing of entries.
    
      Before
      ======
          os << indent << "name" << nl
             << indent << token::BEGIN_BLOCK << incrIndent << nl;
          os.writeKeyword("key1") << val1 << token::END_STATEMENT << nl;
          os.writeKeyword("key2") << val2 << token::END_STATEMENT << nl;
          os << decrIndent << indent << token::END_BLOCK << nl;
    
      After
      =====
          os.beginBlock("name");
          os.writeEntry("key1", val1);
          os.writeEntry("key2", val2);
          os.endBlock();
    
    - For completeness, support inline use of various Ostream methods.
      For example,
    
          os << beginBlock;
          os.writeEntry("key1", val1);
          os.writeEntry("key2", val2);
          os << endBlock;
    
    - For those who wish to write in long form, can also use endEntry inline:
    
          os.beginBlock("name");
          os.writeKeyword("key1") << val2 << endEntry;
          os.writeKeyword("key2") << val2 << endEntry;
          os.endBlock();
    
    The endEntry encapsulates a semi-colon, newline combination.
    18ab8abd