2007-09-11 release 1.29 parser, XML, metaf2xml.pl: * modifications to follow perlmod(1): export of functions restricted, use BEGIN{} and END{}, removed __END__ * XML.pm: renamed printReport_XML() -> printReport(), xml_start() -> startXML(), xml_end() -> finishXML() * parser.pm: deleted version_parser(), use $VERSION_ID instead parser, dtd, xsl, metaf-sum, XML: * METAR weather: renamed tag intensity -> phenomDescr parser, dtd, xsl, lang.xsl, XML: * SYNOP: renamed tag precipBeginEnd -> beginPrecip/endPrecip * METAR: added processing of radiosonde and runway winds for LPMA parser, XML, metaf2xml.pl, metaf.pl: * major enhancement of POD admin: * README: info is now in manuals * distribute and install man pages extracted from POD 2007-08-31 release 1.28 parser, dtd, xsl, lang.xsl, XML: * SYNOP: added processing of section 3 for region I (Africa) up to 8xxxx parser, lang.xsl: * METAR: added keywords RDGS OBSC, WEA parser, dtd, xsl, metaf-sum: * replace tags speedGreater/gustSpeedGreater by adding q='isGreater' for speed/gustSpeed parser: * replace [0-9] by \d (also avoids interpretation of $re_X[0-9] as array) admin: * updated README, TODO 2007-08-21 release 1.27 lang.xsl, cgi, ui, XML, admin: * options "ICAO"/"WMO" replace keyword "FETCH" which seems difficult to use parser, dtd, xsl: * SYNOP: added tags cloudType(Low|Middle|High)NA metaf-sum: * bugfix: VC not shown 2007-07-30 release 1.26 parser, dtd, xsl, lang.xsl, XML: * SYNOP: added tempChange, cloudLocation, pressureChange, cloudInfo to section 3 for region VI (Europe) * tags isLess, isGreater, isEqualGreater are now values of new attribute q, also for confidence values of station elevation * renamed tag pressureTendency3h -> pressureChange with hours="3", cloudBaseFT -> cloudBase with u="FT", cloudTypeFamily -> cloudTypes cgi: * use ADDS dataserver release 1.2, adapt for changes * small layout changes metaf-sum: * bugfix: isCalm not shown for wind 2007-07-17 release 1.25 parser, dtd, xsl, lang.xsl, XML: * SYNOP: added processing of section 3 for region VI (Europe) up to 7xxxx * SYNOP: split tag precipWxInd into precipInd and wxInd * METAR: allow invalid format for wind in trend forecast * TAF: added trend type INTER, additional info may be in each trend section parser, dtd, xsl, XML: * units are now in attribute 'u', not a separate tag or even in the tag name parser, dtd, xsl: * QNH: store and show hPa and inHg if both are given * added tags isCalm, dirVarAllUnk for wind * renamed temp*hMin, temp*hMax -> tempMinPeriod/tempMaxPeriod w/ attr. hours * renamed tempMin, tempMax -> tempMinAt/tempMaxAt * precipPastHour is now precipHourly with hours=1 (header was not printed) parser: * SNYOP section 1: allow 4//// * SNYOP section 1: missing QNH for AAXX is warning, not error * bugfix SYNOP: weatherPastNotAvailable not detected, wrong text for ERRORs * bugfix: unit for gust speed missing if wind speed unavailable cgi: * improved parsing of NOAA/IWS files 2007-05-18 release 1.24 parser, dtd, xsl, lang.xsl, ui, cgi, XML: * added processing of SYNOP messages (sections 0 and 1) (russian translation for weather incomplete) parser, dtd, xsl, XML: * renamed tag metafList -> reports (XML not backwards compatible) * combined tags precip[136]Hour to precipXHour, renamed precip36Hour to precip3o6Hour, precip1Traces -> precipTraces, SLPdPa -> SLPhPa metaf2xml.pl, FGFS: * removed obsolete module FGFS.pm parser: * bugfix: pressure change is negative for 3h pressure tendencies 5 .. 8 parser, xsl: * bugfix: unit for transitionLvl (EDLP) is FL, not ft lang.xsl: * improved/fixed translations xsl: * new file stations.xml, provides additional station info This is, and will remain, a stub, and will not be extended or updated. cgi: * bugfix: for modes HTML and text, the message in the text field was not changed to the "cleaned" version * don't fetch TAFs if mode is summary metaf-sum: * sfcWind: gusts don't get separate column in HTML table 2007-03-29 release 1.23 parser, FGFS, dtd, xsl, XML: * bugfix: values for QBB and QBJ are in meter, not flight level lang.xsl: * added description for TSGR * improved russian translation 2007-03-04 release 1.22 parser, FGFS, dtd, xsl, lang.xsl, XML: * added METAR tags for active runway, transition level, observer initials (all EDLP), ATIS (country ED), QBB, QBJ, wind at some other location parser, dtd, xsl, lang.xsl, XML: * tempAt, tempMin, tempMax, amendment are now in "info" section of TAF * added TAF tags for met watch, and correction and amendment times * TAF can have QNH in any section parser, XML: * printReport_XML: API CHANGE! removed argument "is_taf", use hash value TAF cgi, ui: * increased maximum message size from 300 to 500 * removed obsolete outdated message cgi: * fetch messages for last 36 h from NOAA/ADDS for mode=all/summary * proxy option for curl defaults to empty admin: * added install.sh, updated INSTALL, README, TODO 2007-02-14 release 1.21 metaf-ui.xsl: * new file for user interface metaf-sum-html.xsl: * new file to transform XML METAR data to summary in HTML format metaf-sum-text.xsl: * new file to transform XML METAR data to summary in text format metaf-sum-ui.xsl: * new file for user interface with summary (HTML format) metaf-sum: * show type of message (METAR/SPECI) * bugfix: missing tag sfcWind resulted in wrong number of columns in table * show METAR trends (except NOSIG) in separate line * added tabs, newlines for output in text format * other minor display format changes xsl: * changes to allow use in combination with metaf-ui fullhtml.xsl: * moved user interface stuff to metaf-ui, include it lang.xsl, cgi, XML: * new option "mode": fetch/display latest/detailed or all/summary lang.xsl, cgi: * display names for radio buttons type, source, format, and mode now depend on language cgi: * always show SPECI before METAR * use ADDS dataserver V1.1, adapt for format changes Makefile: * added install for new files 2006-11-09 release 1.20 metaf-sum: * new XSL transformation: transforms XML for METAR to get a summary as HTML table metaf-add: * new XSL transformation: transforms XML for METAR: units are all SI, obsStationInfo is added parser, FGFS, dtd, xsl, XML: * renamed tag tempUnit -> unitTemp dtd, XML: * removed unused tag correctedMsg parser: * allow space between cloud group and cloud type * overwriting $TZ is not necessary anymore * $is_speci not passed as argument anymore cgi: * when FETCHing from ADDS dataserver: show SPECI additionally to METAR if SPECI is newer * use hoursBeforeNow=0 instead of 12 for TAF from ADDS dataserver as parameter refers to time of validity not collection (as web page states) admin: * metaf2xml.pl does not set and pass $is_speci to parser anymore 2006-11-03 release 1.19 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tag for hail stone size (METAR) and time of amendment (TAF) * CONTRAIL(S)? is not a phenomenon description, but a phenomenon * renamed conditionMountain -> conditionMountainList, condMoun -> conditionMountain, same for valley parser: * recognise variable ceiling in ft (with 4 digits) * don't correct spaces in temperature or dewpoint, extend RE instead * allow wind directions not rounded to 10 degrees * bugfix: fraction M1/4 not always processed correctly * bugfix visLocData: fractions were parsed, but not added to distance * improved pod FGFS, lang.xsl: * added descriptions for swell conditions 5-9 * recognise ACFT MSHP, OVR VLYS FGFS, xsl: * bugfix: colourCode printing was incorrect * small formatting changes lang.xsl: * completed russian translation FGFS: * bugfix: descriptions for some keywords were missing * bugfix: CLD SCT not displayed correctly dtd, XML: * versions come first XML: * $writer is now global variable, not returned from xml_start, not passed to functions * properly close XML file * added pod admin: * include russian in README * option -m of metaf2xml.pl is now without argument and with -f, only * make calls to "sed" work for older versions of "sed" 2006-10-27 release 1.18 parser, FGFS, dtd, xsl, lang.xsl, XML: * added weather JP (thanks to Th. Auguste, St. Lucia Met Services) and rel. humidity to main section of METAR * added DRFTG SNW, SP29.860, MT/SKY OBSC, V/D, FU ALOFT ..., SLP///, PRWX, TWLGT, OVR LK|RIVER, TX/28,0, VRBL CONDS, sunshine duration to remarks * phenomenon descriptions not separate tags anymore. splitted into pre/post * clouds can be embedded in/associated with any phenomenon * renamed cloudBaseNotAvailable -> baseBelowStation parser: * correctly split HZY ISOLD? CI, VIS RDCD LO CLD, PRES[FR]R OCNL LTGICCG * IC is also a phenomenon with opacity * allow runway visibility in METAR remarks * commata replaced by blank in NOAA/IWS messages are restored for FQCH ... TX/ and ZMUB ... QFE * DUE( TO) ... and BY ... are not recognised temporarily, they require special handling, TBD * avoid more corrections of messages by extending the patterns recognised 2006-10-20 release 1.17 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags for unrecognised components, balloon data, info about estimated data, observation (time) info, radiosonde, and observation data from Rattlesnake Mtn. and Laguna Peak * allow more than one phenomenon description * renamed tag RHVal -> relHumid parser, FGFS, dtd, xsl, XML: * removed the now obsolete tag freetext cgi, fullhtml.xsl, lang.xsl: * remove hint for remark texts being in english parser: * avoid some corrections of messages by extending the patterns recognised lang.xsl: * continued russian translation * added missing description of some keywords xsl: * bugfix: printLayerHeight now requires $trans * use templates for phenomenon descriptions admin: * don't link files to HTDOCS directory if it is the install directory * basic.pm is now obsolete 2006-10-13 release 1.16 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags for snow cover, climate data, tornadic activity * extend visibility at 2nd location to be at a runway (approach) * WR (wet runway) is now in tag rwySfcCondition * accept LWR (lower) and CLD (unknown cloud type) in tag cloudTrace * renamed beginPrecip -> startTime, endPrecip -> endTime parser, cgi: * allow ASCII in input, only lang.xsl: * continued russian translation 2006-09-28 release 1.15 cgi, FGFS, xsl, lang.xsl, XML: * changed encoding from ISO-8859-1 to UTF-8 cgi, FGFS, xsl, lang.xsl: * started to add russian translation cgi, fullhtml.xsl: * added value 'ru' to language options * minor layout changes xsl, lang.xsl: * units depend on language. add and use parser: * allow FM24[00] for TAF xsl: * bugfix: needMaint not correctly displayed XML: * bugfix: data for TAFsuppl/windShearLvl was not written 2006-09-21 release 1.14 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags nextFcstBy, nextFcstAt, fcstAutoObs, fcstAutoMETAR for new tags for TAF remarks: * added tags waterEquivOfSnow, snowOnGround, fcstNotAvbl * added CAVU, EPC, EPO, EPM, RTS to keywords parser: * recognise EPM, more variants of EPC, EPO FGFS: * added printing for TAF: fcstPeriod, trendType PROB 2006-09-15 release 1.13 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags NEFO_PLAYA, precipPastHour, densityAlt, pressureAlt, obsTimeOffset, CHINO, VISNO * recognise station type AO2A, phenomenon modifier (VRY )FBL, HIER, distance of phenomenon in km, "cloud type ASOCTD" for lightning, strange variant of PK WND for KEHA * set attribute isGrid in XML for subsequent compass directions but display once, only * renamed tag precipAmount -> precipAmountInch parser: * everything for country RJ also holds for RO (both Japan) cgi: * use ADDS dataserver version 1.0 xsl: * bugfix: rwyWind for METAR and rwyState for METAR trend was not displayed * bugfix: SKC in cloudMaxCover was not displayed correctly FGFS, xsl: * distinguish between compass dir as location and direction xsl, lang.xsl: * bugfix: is(Very)Thin for phenomenonAtLoc/Only was not displayed * add and use translations for unitLength lang.xsl: * added descriptions for BLDU, DZSN, FZBCFG, GRRA, RAPL, SHGR, SHRAPL, TSRAGR FGFS: * bugfixes: lightningType was not displayed, wrong visibility for YLO2, wrong value for depositDepth; formatting corrected * cleanup _printWind_FGFS() 2006-09-08 release 1.12 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags obscuration, variableCeiling, pressureTendency3h, ceilVisVariable, rwySfcCondition, rainfall * PWINO, FZRANO, etc. are now just values for new tag keyword * bugfix: added tornado in weather parser, dtd, xsl, XML: * bugfix: TAF element tempAt was not written to XML, wrong in DTD FGFS, lang.xsl: * added descriptions for YLO1, YLO2 cgi, fullhtml.xsl: * small layout change cgi: * more fixes due to changes in HTML layout of NOAA source FGFS: * further cleanup basic.pm (move stuff to FGFS.pm) 2006-09-01 release 1.11 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags phenomOpacity, ceilingAtLoc, cloudTypeLvl, cloudTrace, seaCondition, and swellCondition (TODO: description of QUL4-9!) * renamed tags: phenomLocation -> phenomenonLocAt, visAt -> visibilityAtLoc * use tag phenomenonOnly instead of phenomenonLocAt if no location is given * parser now recognises STNRY, OHD, AT AP, (VRY) THN, CVCTV, DSIPTD, quadrants delimited by blank, HALO * PRES[FR]R, visLower, cigLower are now not separate tags but in phenomenonOnly or phenomenonLocAt parser, dtd, xsl: * remove attribute v for all tags with boolean values lang.xsl: * several other additions & corrections cgi: * delete control characters in message after fetching from a source * adapt to changes in HTML layout of NOAA source * bugfix: message in last line of file was never added FGFS: * further cleanup basic.pm (move stuff to FGFS.pm) 2006-08-25 release 1.10 cgi, parser, dtd, xsl: * new data source: experimental ADDS dataserver xsl: * display TAF forecast period length * use boolean() for node test, not comparison with '' cgi, parser: * comma is a valid character in messages (ZMUB ... QFE649,6 ...) though NOAA/IWS replaces it with a blank cgi, fullhtml.xsl: * disable options for source if data file exists cgi, install: * make path and options for curl configurable 2006-08-18 release 1.9 parser, FGFS, dtd, xsl, lang.xsl, XML: * process TAF elements wind shear, turbulence, icing, amendment xsl, cgi: * added option to select source (currently NOAA or ADDS) for current weather * added warning about NOAA not updating TAFs * parameter values are all lower case xsl: * reorder output to match order of TAF components in trends cgi: * use curl options --fail --silent --show-error 2006-08-10 release 1.8 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags for condition in mountains and valleys in italian METARs * added lightning to tag phenomLocation FGFS: * bugfix: tags visMin, cloud in remarks were not handled xsl, cgi: * modified disclaimer 2006-08-03 release 1.7 cgi: * use CGI functions instead of HTML code everywhere * use only function-oriented style of CGI * restrict use of CGI (length of post, no uploads) * check and display CGI errors * added pod xsl: * MS IE complained about $this set twice in a template and didn't find second root node in style sheet (but only in fullhtml?!?) 2006-07-27 release 1.6 parser, FGFS, dtd, xsl, lang.xsl, XML: * added tags visLower, cigLower, phenomLocation xsl, cgi: * added disclaimer * added hint and example for 'FETCH' cgi, dtd, xsl, XML: * removed option for notuptodate parser, xsl, XML: * heed sequence of tempMin, tempMax parser: * discard leading, trailing, multiple blanks before anything else xsl: * omit prefix localdata: * use font-size "90%" instead of "smaller",
 has margin 0
    * drop check for alternate tags in remarks, use last (and only)
cgi:
    * bugfix: original message was not saved properly
fullhtml.xsl:
    * use defaults for unset options
    * replaced call-template by apply-templates because of MS IE bug

2006-07-20 release 1.5
parser, FGFS, dtd, xsl, lang.xsl, XML:
    * added proper tags for increasing snow, cloud type families, wind shift,
      start/end of precipitation, and a dozen single word remarks
dtd, xsl, XML:
    * extended metaf-fullhtml.xsl to provide HTML identical to metaf.pl; XML
      file can now contain call options (i.e. CGI parameters), passed with new
      option -O of metaf2xml.pl
parser:
    * started adding pod
    * option strict_fgfs no longer needed
cgi:
    * removed support for display of plain text XML; this can be done instead by
      looking at the page source of XML/XSL output format
    * bugfix: invalid HTML when displaying XML with empty message
xsl, lang.xsl:
    * use texts for 
lang.xsl:
    * translated remaining items to spanish
    * bugfix de/compassDir: content of "o" must be english
parser, FGFS, dtd, xsl, XML:
    * renamed "min" to "minute"
parser, FGFS, basic:
    * moved unneeded variables and functions from basic and parser to FGFS
home page, cgi, xsl:
    * replaced copyright character by "copyright (c)"
xsl:
    * small style changes for HTML

2006-07-06 release 1.4
cgi, xsl, Makefile:
    * added metaf-fullhtml.xsl and options in web interface for direct display
      (without xsltproc) of xml as HTML rendered by (XML capable) browser
xsl, FGFS:
    * don't assume month and year of issue/observation time is current.
      also some browser don't support date() in direct display of XML. omit it.
    * reorder output to match order of metar components (and not metar of fgfs)
xsl:
    * replaced  by 
xsl, home page, cgi:
    * style in header is useles for rendering in browser, use style attribute
xsl, XML:
    * replaced tag weatherObs by tags RH, SST, OAT, AI
cgi:
    * small layout change
home page:
    * URL for compressed tar ball: link to SF package
dtd, XML:
    * exchange order of visVert <-> cloudList (found just 1 example)
parser:
    * allow combination of tempMin and tempMax in both orders
    * bugfix: subtag tempUnit was not set for tempMax

2006-06-29 release 1.3
parser, dtd, xsl, FGFS, XML:
    * added processing and display of SPECI
    * proper tags for precipitation, temperature, QFF, SST, OAT, RH, AI in remarks
    * provide tempUnit with temp to avoid conversion
parser, XML:
    * new option: -S  to add stylesheet reference to .xml (with -X)
    * renamed option -s to -F (aka -x/-X)
    * added usage message
parser:
    * check observation time for 3-/6-hourly precipitation
    * removed printUSTemp()
    * other bugfixes and cleanups (removed remarkWT, added remarkKNIP, $re_wind)
xsl:
    * removed font-family: monospace
    * added class="msg" for message field
FGFS:
    * bugfix: check exists toplevel hash element before children
html.xsl
    * added METAR/TAF, RMK in first column
lang.xsl:
    * corrected display of time-from, time-till
cgi:
    * prepend METAR/TAF to example messages
    * added embedded style sheet (for now small font for message, only)
    * removed (now) unnecessary sed /DOCTYPE/d
html.xsl, text.xsl:
    * further cleanup header declarations
pm:
    * prepend _ to name of local functions
README:
    * list all dependencies

2006-06-22 release 1.2
parser, dtd, xsl, FGFS:
    * introduced subtags (XML)/hashes (perl) for runway state (XML not backwards
      compatible)
parser, cgi:
    * allow leading "METAR ", "SPECI ", and "TAF " in messages; change type
      accordingly
parser, xsl:
    * day, hour and minutes always have 2 digits
parser:
    * added check for invalid formats for depositExtent, friction
    * bugfix: PROB[34]0 TEMPO without time: TEMPO was not seen
    * improved check for missing period for trends
    * added a few comments for specs used
html.xsl, cgi:
    * omit xhtml declaration, DOCTYPE is HTML 4.01 Transitional (verified)
    * use short tags
cgi:
    * added keywords like in home page
    * hint to Aviation Weather page, not METAR page, of NOAA
lang.xsl, text.xsl:
    * omit unnecessary declarations
xsl, FGFS:
    * peakWind: incorrect display if only minutes were given
    * added display of rwyWind and cloudCoverVar
    * small changes in wording/translation and composition of output
FGFS:
    * corrected conditions for output of "calm"
    * show CAVOK for METAR
README:
    * minor modifications

2006-06-13 release 1.1
parser, xsl:
    * parse remarks re. forecast status in TAF messages
    * make depositExtent, depositDepth more descriptive
parser, dtd, xsl, cgi:
    * add CVS ids of parser, XSL sources to XML and (as comment) to HTML
parser:
    * missing cloud base in regular clouds section of METAR now is invalidFormat
xsl, FGFS:
    * added cloudBaseNotAvailable
xsl:
    * short cut separate template for *List where possible
    * visRwy in remarks needs unitThreshold -> separate call to template
dtd:
    * added tempAtList, tempAt
cgi:
    * allow lower case letters, convert to upper case
    * write requests to logfile
    * modified options for curl
    * "CURRENT" -> "FETCH" (data is not really current :-), added warning to
      that effect, i.e. if fetched from raw data files
    * added usage comments
FGFS:
    * print ceiling
    * "deposit height" -> "deposit depth"
    * use leading '0' for hours < 10
    * recWeather comes later
    * print peakWind, visRwy from remarks
    * header cosmetics
admin:
    * improve install (paths are variables, Makefile, INSTALL)