Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream.c

    rb63e376 r4040425  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Mar  7 13:51:23 2016
    13 // Update Count     : 227
     12// Last Modified On : Wed Mar  2 18:06:35 2016
     13// Update Count     : 208
    1414//
    1515
     
    133133forall( dtype ostype | ostream( ostype ) )
    134134ostype * ?|?( ostype *os, const char *cp ) {
    135         enum { Open = 1, Close, OpenClose };
    136         static const char mask[256] = {
    137                 // opening delimiters
    138                 ['('] : Open, ['['] : Open, ['{'] : Open,
    139                 ['$'] : Open, [L'£'] : Open, [L'¥'] : Open, [L'¢'] : Open, [L'¿'] : Open, [L'«'] : Open,
    140                 // closing delimiters
    141                 [','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
    142                 [')'] : Close, [']'] : Close, ['}'] : Close,
    143                 ['%'] : Close, [L'»'] : Close,
    144                 // opening-closing delimiters
    145                 ['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,
    146         }; // mask
    147 
    148135        int len = strlen( cp );
    149136        // null string => no separator
    150137  if ( len == 0 ) { sepOff( os ); return os; }
    151         // first character NOT spacing or closing punctuation => add left separator
    152         if ( sepPrt( os ) && isspace( cp[0] ) == 0 && mask[ cp[0] ] != Close && mask[ cp[0] ] != OpenClose ) {
     138        // first character NOT spacing or special punctuation => add left separator
     139        if ( sepPrt( os ) && isspace( cp[0] ) == 0 && cp[0] != '.' && cp[0] != ',' ) {
    153140                prtfmt( os, "%s", sepGet( os ) );
    154141        } // if
    155         // last character IS spacing or opening punctuation => turn off separator for next item
     142        // last character is spacing or special punctuation => turn off separator for next item
    156143        unsigned int posn = len - 1;
    157         if ( isspace( cp[posn] ) || mask[ cp[posn] ] == Open || mask[ cp[posn] ] == OpenClose ) {
     144        if ( isspace( cp[posn] ) || cp[posn] == ':' || cp[posn] == '$' ) {
    158145                sepOff( os );
    159146        } else {
Note: See TracChangeset for help on using the changeset viewer.