26{
   29 
   30  typedef JToken<
';'>  token_type;
 
   31 
   32  string              inputFile;
   37  int                 width;
   38  bool                squash;
   40 
   41  try {
   42 
   44 
   53 
   54    JParser<> zap(
"General purpose program to edit or create properties file.");
 
   55    
   61    zap[
'w'] = 
make_field(width,       
"format width of key")                                                      =  12;
 
   62    zap[
'q'] = 
make_field(squash,      
"squash meta data");
 
   64 
   65    zap(argc, argv);
   66  }
   67  catch(const exception &error) {
   68    FATAL(error.what() << endl);
 
   69  }
   70 
   71 
   74 
   76 
   77  
   78 
   79  if (inputFile != "") {
   80 
   81    ifstream in(inputFile.c_str());
   82 
   83    in >> comment;
   84  
   85    in.imbue(locale(in.getloc(), facet.clone()));
   86 
   87    for (
JEquation equation; in >> equation; ) {
 
   88      data[equation.getKey()] = equation.getValue();
 
   89    }
   90 
   91    in.close();
   92  }
   93 
   94  if (squash) {
   95    comment.clear();
   96  }
   97 
   98  comment.add(
JMeta(argc, argv));
 
   99 
  100  
  101  
  102  if (!modifier.empty()) {
  103 
  104    istringstream is;
  105 
  106    is.imbue(locale(is.getloc(), facet.clone()));
  107 
  108    for (const token_type& token : modifier) {
  109 
  110      is.clear();
  111      is.str(token);
  112 
  114 
  115      if (is >> equation && facet.isSeparator(equation.
getSeparator()))
 
  117      else
  118        ERROR(
"Invalid modifier: " << token << endl);
 
  119    }
  120  }
  121 
  122  if (!rm.empty()) {
  123 
  124    for (const string& key : rm) {
  125 
  127 
  128      if (i != 
data.end()) {
 
  130      }
  131    }
  132  }
  133 
  134  
  135 
  136  filebuf buffer;
  137 
  140  }
  141 
  142  ostream os(buffer.is_open() ? &buffer : cout.rdbuf());
  143 
  144  os << comment;
  145 
  146  os.imbue(locale(cout.getloc(), facet.clone()));
  147 
  148  for (const auto& item : data) {
  149    os << setw(width) << left << item.first << right << facet.getDefaultWhiteSpace() 
  150       << facet.getSeparator()                       << facet.getDefaultWhiteSpace() 
  151       << item.second                                << facet.getEndOfLine();
  152  }
  153 
  154  buffer.close();
  155}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse parameter values.
 
Facet class to specify parsing of equations in currect locale (see class JLANG::JEquation).
 
Simple data structure to support I/O of equations (see class JLANG::JEquation).
 
const std::string & getSkipLine() const
Get skip line characters.
 
const std::string & getComment() const
Get comment string.
 
const std::string & getEndOfLine() const
Get end of line characters.
 
const std::string & getSeparator() const
Get separator characters.
 
char getLeftBracket() const
Get left bracket.
 
char getRightBracket() const
Get right bracket.
 
const std::string & getDivision() const
Get division characters.
 
const std::string & getWhiteSpace() const
Get white space characters.
 
General purpose equation class.
 
const std::string & getKey() const
Get key.
 
const std::string & getValue() const
Get value.
 
const char getSeparator() const
Get separator.
 
Wrapper class around string.
 
Utility class to parse command line options.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...