[tz] tabs vs spaces

Steffen Daode Nurpmeso sdaoden at gmail.com
Fri May 3 20:00:50 UTC 2013


Shawn Steele <Shawn.Steele at microsoft.com> wrote:
 |> Actually, I suggest that we should really be discouraging people from \
 |  creating alternate parsers for the zone input files than zic - those two \
 |  should remain closely tied together.  From time to time we discover the \
 |  need to add some new feature to the input language, doing that is really \
 |  hard if all kinds of other implementations will suddenly break.
 |
 |That makes it even harder?  Because presumably the code behavior changes \
 |too, which would be harder to adapt to.
 |
 |IMO this seems like a further argument for XML as it's pretty easy to \
 |extend some things w/o breaking other stuff

Whereas i never had a problem to write a parser for the data
(first in Perl, then in C++), i just can't imagine just about any
argument for XML, even if i'm soaped in the bath.

It's almost unreadable for a human on the one hand (especially if
you „attribute-it-up“ to ship a lot of information, though this
doesn't seem to be an issue with TZ ,)) and terribly expensive to
parse for a machine on the other, even if it's a SAX parser.

If done right, a JSON / YAML format can remain human readable
while also being very easy to parse, even without any library
except a C library with POSIX regular expressions.
I hope ICU does this, too.

Besides, a lot of people seem to go LUA today which possibly would
also be an option, but i don't know; i wouldn't do that (i've
heard that there is an efficient JSON parser for LUA).

In the end it's nice not to understand a thread.  :-)

 |> Further, the input file format is rather quirky, and hard to explain \
 |  completely in a way that makes a lot of sense (though it is perfectly fine \
 |  for zic).
 |
 |I don't find that comforting or reassuring.

Yeah, i never understood why these nice input data has to be
broken down into all these little files; VM space doesn't really
count (our single file DB was about ~140 KB, i had to look), but
just imagine how many space is wasted on old 32 KB VFAT!  *That*
is grazy!

… and, we did (in 2005):

  auto CStringList fields, xfields;
  _Nydin;

  (void)fields.splitWS(*_curr->data(), fal0);

  * \brief Fill list by splitting a string at whitespace
  * \param _template CString to split.
  * \param _empty_ok Should empty substrings be added?
  * \param _lc
  * Locale::Handle to use for whitespace detection.
  * The currently active one is used if this is ::NIL.

  pub CStringList &splitWS(const CString &_template,
    boolean _empty_ok=tru1, Locale::Handle _lc=NIL)
  { return(splitWS(_template.data(), _template.length(),
      _empty_ok, _lc)); }

Worked!

 |-Shawn

--steffen



More information about the tz mailing list