From 8432a7c4ae96a43edec1968d143c30995216a4e3 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 18 Sep 2026 21:44:51 +0200 Subject: [PATCH] Read misc.language, httpstatus and mimetype from their registers, and keep a country's currency a column --- CHANGELOG.md | 5 +- DATA-LICENSES.md | 6 +- README.md | 18 +- data-import/httpstatus.py | 40 +++ data-import/language.py | 45 +++ data-import/mimetype.py | 38 +++ data/misc/httpstatus.tsv | 46 ++- data/misc/language.tsv | 201 ++++++++++- data/misc/mimetype.tsv | 688 +++++++++++++++++++++++++++++++++++++- todo.md | 9 +- 10 files changed, 1067 insertions(+), 29 deletions(-) create mode 100644 data-import/httpstatus.py create mode 100644 data-import/language.py create mode 100644 data-import/mimetype.py diff --git a/CHANGELOG.md b/CHANGELOG.md index d7d5cf2..734b537 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,10 @@ replacement, and each removed path, column or flag. capital, a currency and a TLD, with the columns `calling-code`, `capital`, `currency`, `flag`, `languages`, `numeric` and `tld` added; `misc.currency` the current ISO 4217 currencies with a minor unit, with `decimals` and `numeric` - added, and its symbols from CLDR. `DATA-LICENSES.md` lists each source. + added, and its symbols from CLDR; `misc.language` every ISO 639-1 language, with + a `code3` column carrying its ISO 639-2 code; `misc.httpstatus` every HTTP status + code in use in the IANA registry; and `misc.mimetype` every IANA media type that + has a filename extension. `DATA-LICENSES.md` lists each source. - `geo.SE` and `geo.US`: five linked tables per country, `region`, `municipality`, `locality`, `postal-code` and `street`, weighted by population and address counts and built from SCB, GeoNames, Trafikverket NVDB and the US Census Bureau, and an diff --git a/DATA-LICENSES.md b/DATA-LICENSES.md index 1436f95..8ad6c45 100644 --- a/DATA-LICENSES.md +++ b/DATA-LICENSES.md @@ -17,8 +17,8 @@ Every shipped dataset, its source, its licence and the attribution it asks for. | `sv_SE/sex.tsv`, `sv_SE/birth-number.tsv`, `sv_SE/title.tsv`, `en_US/sex.tsv`, `en_US/title.tsv` | curated (Skatteverket's test birth numbers are facts) | — | — | — | | `misc/country.tsv` | [datasets/country-codes](https://github.com/datasets/country-codes) | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/country.py` | | `misc/currency.tsv` | [datasets/currency-codes](https://github.com/datasets/currency-codes); symbols from [Unicode CLDR](https://github.com/unicode-org/cldr) `en.xml` and `root.xml` | PDDL 1.0; [Unicode License v3](https://www.unicode.org/license.txt) | CLDR: "Copyright © 1991-2025 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries." | `data-import/currency.py` | -| `misc/httpstatus.tsv` | curated (IANA HTTP status codes are facts) | — | — | — | -| `misc/language.tsv` | curated (ISO 639-1 codes are facts) | — | — | — | -| `misc/mimetype.tsv` | curated (IANA media types are facts) | — | — | — | +| `misc/httpstatus.tsv` | [IANA HTTP Status Code Registry](https://www.iana.org/assignments/http-status-codes/) | [public domain](https://www.iana.org/help/licensing-terms) | none required | `data-import/httpstatus.py` | +| `misc/language.tsv` | [datasets/language-codes](https://github.com/datasets/language-codes), the [Library of Congress](https://www.loc.gov/standards/iso639-2/) ISO 639-2 register | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/language.py` | +| `misc/mimetype.tsv` | [mime-db](https://github.com/jshttp/mime-db), the IANA media type registry with filename extensions | [MIT](https://github.com/jshttp/mime-db/blob/master/LICENSE) | none required | `data-import/mimetype.py` | Every other category is hand-written JSON under [`data/`](data), MIT like the code. diff --git a/README.md b/README.md index 69c6078..0752685 100644 --- a/README.md +++ b/README.md @@ -163,12 +163,15 @@ Each locale carries `address`, `color`, `company`, `date`, `email`, `first-name` `personnummer` and `samordningsnummer`, `en_US` adds `ssn` and `itin`. `misc` carries `car`, `coordinate`, `country` (ISO 3166), `creditcard` (Luhn-valid), `currency` (ISO 4217), `datetime` (RFC 3339), `emoji`, `httpstatus`, `language` -(ISO 639), `mac`, `mimetype`, `objectid`, `timezone` (IANA), `useragent` and +(ISO 639-1 and -2), `mac`, `mimetype`, `objectid`, `timezone` (IANA), `useragent` and `uuid` (v4). Many carry sub-fields — `misc.currency.symbol`, `misc.country.alpha2`, `misc.httpstatus.code` — which `--list` shows. `country`, `currency`, `httpstatus`, `language` and `mimetype` are [tables](#table), so -`misc.country[SE].capital` and `misc.currency[Euro].symbol` select a row; -[`DATA-LICENSES.md`](DATA-LICENSES.md) names each table's source and licence. +`misc.country[SE].capital` and `misc.currency[Euro].symbol` select a row. Each +holds its whole register: every ISO 3166 country, ISO 4217 currency and ISO 639-1 +language, every HTTP status code in use, and every IANA media type that has a +filename extension. [`DATA-LICENSES.md`](DATA-LICENSES.md) names each table's +source and licence. `sex`, `first-name` and `last-name` are tables weighted by bearers, from SCB, the SSA and the Census Bureau. `first-name` links to `sex`, so `sv_SE.sex[f].first-name` @@ -1124,6 +1127,12 @@ App developers writing tests and fixtures, in Go and at a shell: tells the two apart, `sex[f].first-name[Kim]`, the ambiguity error spells each row inside its parent, and a name repeating inside one parent row is refused at load, since nothing could then select it. +- **`misc.country` carries a currency code, it does not link to `misc.currency`.** + A `parent` demands a child for every parent row, and ISO 4217 registers codes no + country's row can name: the funds codes (Mvdol, WIR Euro, US Dollar (Next day)), + and VED beside VES, both Venezuela's, of which a country row names one. Linking + would trade the register for the link, and `misc.country.currency` already pairs a + country with its currency in one draw. - **The Swedish ids draw Skatteverket's test series.** A Luhn-valid personnummer over a random birth number may be a living person's; 238 and 239 after any date are blocked from assignment, so the shipped `personnummer` and @@ -1200,6 +1209,9 @@ docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/count docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/currency.py docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/geo-us.py docker compose run --rm --user "$(id -u):$(id -g)" -e TRAFIKVERKET_API_KEY data-import data-import/geo-se.py +docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/httpstatus.py +docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/language.py +docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/mimetype.py docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/names-se.py docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/names-us.py ``` diff --git a/data-import/httpstatus.py b/data-import/httpstatus.py new file mode 100644 index 0000000..d2ed736 --- /dev/null +++ b/data-import/httpstatus.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +"""Rebuild data/misc/httpstatus.tsv from the IANA HTTP Status Code Registry. + + data-import/httpstatus.py [--source URL_OR_FILE] [--cache DIR] [--out FILE] + +What ships is the codes in use: a range, an unassigned code and a qualified reason are all skipped. +""" +import argparse +import csv +import io +from pathlib import Path + +import source +import tsv + +SOURCE = "https://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv" +OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "httpstatus.tsv" +CACHE = Path(__file__).resolve().parent / "cache" +COLUMNS = ["code", "reason"] + + +def rows(text): + for r in csv.DictReader(io.StringIO(text)): + code, reason = r["Value"].strip(), r["Description"].strip() + if code.isdigit() and reason and "(" not in reason and reason != "Unassigned": + yield {"code": code, "reason": reason} + + +def main(): + p = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + p.add_argument("--cache", default=str(CACHE)) + p.add_argument("--source", default=SOURCE) + p.add_argument("--out", default=str(OUT)) + a = p.parse_args() + table = rows(source.fetch(a.source, a.cache, "http-status-codes-1.csv").decode("utf-8")) + tsv.write(a.out, COLUMNS, sorted(table, key=lambda r: int(r["code"]))) + + +if __name__ == "__main__": + main() diff --git a/data-import/language.py b/data-import/language.py new file mode 100644 index 0000000..203872b --- /dev/null +++ b/data-import/language.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Rebuild data/misc/language.tsv from datasets/language-codes (PDDL), the LoC ISO 639-2 register. + + data-import/language.py [--source URL_OR_FILE] [--cache DIR] [--out FILE] + +Only the 639-2 entries carrying a 639-1 code ship, since the alpha-2 code is the key. +""" +import argparse +import csv +import io +import re +from pathlib import Path + +import source +import tsv + +SOURCE = "https://raw.githubusercontent.com/datasets/language-codes/main/data/language-codes-full.csv" +OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "language.tsv" +CACHE = Path(__file__).resolve().parent / "cache" +COLUMNS = ["code", "code3", "name"] + + +def name(english): + """The register lists every synonym; the first, without its qualifier, is the one a selector spells.""" + return re.sub(r"\s*\([^)]*\)", "", english.split(";")[0]).strip() + + +def rows(text): + for r in csv.DictReader(io.StringIO(text)): + if r["alpha2"]: + yield {"code": r["alpha2"], "code3": r["alpha3-t"] or r["alpha3-b"], "name": name(r["English"])} + + +def main(): + p = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + p.add_argument("--cache", default=str(CACHE)) + p.add_argument("--source", default=SOURCE) + p.add_argument("--out", default=str(OUT)) + a = p.parse_args() + table = rows(source.fetch(a.source, a.cache, "language-codes-full.csv").decode("utf-8")) + tsv.write(a.out, COLUMNS, sorted(table, key=lambda r: r["code"])) + + +if __name__ == "__main__": + main() diff --git a/data-import/mimetype.py b/data-import/mimetype.py new file mode 100644 index 0000000..8ff1d44 --- /dev/null +++ b/data-import/mimetype.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +"""Rebuild data/misc/mimetype.tsv from mime-db (MIT), the IANA media type registry with extensions. + + data-import/mimetype.py [--source URL_OR_FILE] [--cache DIR] [--out FILE] + +Only IANA-registered types with a filename extension ship; the first extension is the one listed. +""" +import argparse +import json +from pathlib import Path + +import source +import tsv + +SOURCE = "https://raw.githubusercontent.com/jshttp/mime-db/master/db.json" +OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "mimetype.tsv" +CACHE = Path(__file__).resolve().parent / "cache" +COLUMNS = ["ext", "type"] + + +def rows(db): + for mimetype, entry in db.items(): + if entry.get("source") == "iana" and entry.get("extensions"): + yield {"ext": "." + entry["extensions"][0], "type": mimetype} + + +def main(): + p = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + p.add_argument("--cache", default=str(CACHE)) + p.add_argument("--source", default=SOURCE) + p.add_argument("--out", default=str(OUT)) + a = p.parse_args() + table = rows(json.loads(source.fetch(a.source, a.cache, "mime-db.json").decode("utf-8"))) + tsv.write(a.out, COLUMNS, sorted(table, key=lambda r: r["type"])) + + +if __name__ == "__main__": + main() diff --git a/data/misc/httpstatus.tsv b/data/misc/httpstatus.tsv index 5ad7863..3915855 100644 --- a/data/misc/httpstatus.tsv +++ b/data/misc/httpstatus.tsv @@ -1,17 +1,61 @@ code reason +100 Continue +101 Switching Protocols +102 Processing +103 Early Hints 200 OK 201 Created +202 Accepted +203 Non-Authoritative Information 204 No Content +205 Reset Content +206 Partial Content +207 Multi-Status +208 Already Reported +226 IM Used +300 Multiple Choices 301 Moved Permanently 302 Found +303 See Other 304 Not Modified +305 Use Proxy +307 Temporary Redirect +308 Permanent Redirect 400 Bad Request 401 Unauthorized +402 Payment Required 403 Forbidden 404 Not Found +405 Method Not Allowed +406 Not Acceptable +407 Proxy Authentication Required +408 Request Timeout 409 Conflict -422 Unprocessable Entity +410 Gone +411 Length Required +412 Precondition Failed +413 Content Too Large +414 URI Too Long +415 Unsupported Media Type +416 Range Not Satisfiable +417 Expectation Failed +421 Misdirected Request +422 Unprocessable Content +423 Locked +424 Failed Dependency +425 Too Early +426 Upgrade Required +428 Precondition Required 429 Too Many Requests +431 Request Header Fields Too Large +451 Unavailable For Legal Reasons 500 Internal Server Error +501 Not Implemented 502 Bad Gateway 503 Service Unavailable +504 Gateway Timeout +505 HTTP Version Not Supported +506 Variant Also Negotiates +507 Insufficient Storage +508 Loop Detected +511 Network Authentication Required diff --git a/data/misc/language.tsv b/data/misc/language.tsv index fcacaa9..ecd1318 100644 --- a/data/misc/language.tsv +++ b/data/misc/language.tsv @@ -1,17 +1,184 @@ -code name -ar Arabic -zh Chinese -da Danish -nl Dutch -en English -fi Finnish -fr French -de German -it Italian -ja Japanese -no Norwegian -pl Polish -pt Portuguese -ru Russian -es Spanish -sv Swedish +code code3 name +aa aar Afar +ab abk Abkhazian +ae ave Avestan +af afr Afrikaans +ak aka Akan +am amh Amharic +an arg Aragonese +ar ara Arabic +as asm Assamese +av ava Avaric +ay aym Aymara +az aze Azerbaijani +ba bak Bashkir +be bel Belarusian +bg bul Bulgarian +bi bis Bislama +bm bam Bambara +bn ben Bengali +bo bod Tibetan +br bre Breton +bs bos Bosnian +ca cat Catalan +ce che Chechen +ch cha Chamorro +co cos Corsican +cr cre Cree +cs ces Czech +cu chu Church Slavic +cv chv Chuvash +cy cym Welsh +da dan Danish +de deu German +dv div Divehi +dz dzo Dzongkha +ee ewe Ewe +el ell Modern Greek +en eng English +eo epo Esperanto +es spa Spanish +et est Estonian +eu eus Basque +fa fas Persian +ff ful Fulah +fi fin Finnish +fj fij Fijian +fo fao Faroese +fr fra French +fy fry Western Frisian +ga gle Irish +gd gla Gaelic +gl glg Galician +gn grn Guarani +gu guj Gujarati +gv glv Manx +ha hau Hausa +he heb Hebrew +hi hin Hindi +ho hmo Hiri Motu +hr hrv Croatian +ht hat Haitian +hu hun Hungarian +hy hye Armenian +hz her Herero +ia ina Interlingua +id ind Indonesian +ie ile Interlingue +ig ibo Igbo +ii iii Sichuan Yi +ik ipk Inupiaq +io ido Ido +is isl Icelandic +it ita Italian +iu iku Inuktitut +ja jpn Japanese +jv jav Javanese +ka kat Georgian +kg kon Kongo +ki kik Kikuyu +kj kua Kuanyama +kk kaz Kazakh +kl kal Kalaallisut +km khm Central Khmer +kn kan Kannada +ko kor Korean +kr kau Kanuri +ks kas Kashmiri +ku kur Kurdish +kv kom Komi +kw cor Cornish +ky kir Kirghiz +la lat Latin +lb ltz Luxembourgish +lg lug Ganda +li lim Limburgan +ln lin Lingala +lo lao Lao +lt lit Lithuanian +lu lub Luba-Katanga +lv lav Latvian +mg mlg Malagasy +mh mah Marshallese +mi mri Maori +mk mkd Macedonian +ml mal Malayalam +mn mon Mongolian +mr mar Marathi +ms msa Malay +mt mlt Maltese +my mya Burmese +na nau Nauru +nb nob Norwegian Bokmål +nd nde North Ndebele +ne nep Nepali +ng ndo Ndonga +nl nld Dutch +nn nno Norwegian Nynorsk +no nor Norwegian +nr nbl South Ndebele +nv nav Navajo +ny nya Chichewa +oc oci Occitan +oj oji Ojibwa +om orm Oromo +or ori Oriya +os oss Ossetian +pa pan Panjabi +pi pli Pali +pl pol Polish +ps pus Pushto +pt por Portuguese +qu que Quechua +rm roh Romansh +rn run Rundi +ro ron Romanian +ru rus Russian +rw kin Kinyarwanda +sa san Sanskrit +sc srd Sardinian +sd snd Sindhi +se sme Northern Sami +sg sag Sango +si sin Sinhala +sk slk Slovak +sl slv Slovenian +sm smo Samoan +sn sna Shona +so som Somali +sq sqi Albanian +sr srp Serbian +ss ssw Swati +st sot Sotho, Southern +su sun Sundanese +sv swe Swedish +sw swa Swahili +ta tam Tamil +te tel Telugu +tg tgk Tajik +th tha Thai +ti tir Tigrinya +tk tuk Turkmen +tl tgl Tagalog +tn tsn Tswana +to ton Tonga +tr tur Turkish +ts tso Tsonga +tt tat Tatar +tw twi Twi +ty tah Tahitian +ug uig Uighur +uk ukr Ukrainian +ur urd Urdu +uz uzb Uzbek +ve ven Venda +vi vie Vietnamese +vo vol Volapük +wa wln Walloon +wo wol Wolof +xh xho Xhosa +yi yid Yiddish +yo yor Yoruba +za zha Zhuang +zh zho Chinese +zu zul Zulu diff --git a/data/misc/mimetype.tsv b/data/misc/mimetype.tsv index fe7f5b8..545966f 100644 --- a/data/misc/mimetype.tsv +++ b/data/misc/mimetype.tsv @@ -1,16 +1,702 @@ ext type +.ez application/andrew-inset +.atom application/atom+xml +.atomcat application/atomcat+xml +.atomdeleted application/atomdeleted+xml +.atomsvc application/atomsvc+xml +.dwd application/atsc-dwd+xml +.held application/atsc-held+xml +.rsat application/atsc-rsat+xml +.aml application/automationml-aml+xml +.amlx application/automationml-amlx+zip +.xcs application/calendar+xml +.ccxml application/ccxml+xml +.cdfx application/cdfx+xml +.cdmia application/cdmi-capability +.cdmic application/cdmi-container +.cdmid application/cdmi-domain +.cdmio application/cdmi-object +.cdmiq application/cdmi-queue +.cpl application/cpl+xml +.cwl application/cwl +.mpd application/dash+xml +.mpp application/dash-patch+xml +.davmount application/davmount+xml +.dcm application/dicom +.dssc application/dssc+der +.xdssc application/dssc+xml +.emma application/emma+xml +.emotionml application/emotionml+xml +.epub application/epub+zip +.exi application/exi +.exp application/express +.fdf application/fdf +.fdt application/fdt+xml +.pfr application/font-tdpfr +.geojson application/geo+json +.gml application/gml+xml .gz application/gzip +.stk application/hyperstudio +.ink application/inkml+xml +.ipfix application/ipfix +.its application/its+xml +.jar application/java-archive .json application/json +.kbl application/kbl+xml +.jsonld application/ld+json +.lgr application/lgr+xml +.lostxml application/lost+xml +.hqx application/mac-binhex40 +.mads application/mads+xml +.webmanifest application/manifest+json +.mrc application/marc +.mrcx application/marcxml+xml +.ma application/mathematica +.mathml application/mathml+xml +.mbox application/mbox +.mpf application/media-policy-dataset+xml +.mscml application/mediaservercontrol+xml +.meta4 application/metalink4+xml +.mets application/mets+xml +.maei application/mmt-aei+xml +.musd application/mmt-usd+xml +.mods application/mods+xml +.m21 application/mp21 +.mp4 application/mp4 +.doc application/msword +.mxf application/mxf +.nq application/n-quads +.nt application/n-triples +.cjs application/node +.bin application/octet-stream +.oda application/oda +.opf application/oebps-package+xml +.ogx application/ogg +.oxps application/oxps +.relo application/p2p-overlay+xml +.xer application/patch-ops-error+xml .pdf application/pdf +.pgp application/pgp-encrypted +.asc application/pgp-keys +.sig application/pgp-signature +.p10 application/pkcs10 +.p7m application/pkcs7-mime +.p7s application/pkcs7-signature +.p8 application/pkcs8 +.ac application/pkix-attr-cert +.cer application/pkix-cert +.crl application/pkix-crl +.pkipath application/pkix-pkipath +.pki application/pkixcmp +.pls application/pls+xml +.ai application/postscript +.provx application/provenance+xml +.cww application/prs.cww +.xsf application/prs.xsf+xml +.pskcxml application/pskc+xml +.rdf application/rdf+xml +.rif application/reginfo+xml +.rnc application/relax-ng-compact-syntax +.rl application/resource-lists+xml +.rld application/resource-lists-diff+xml +.rs application/rls-services+xml +.rapd application/route-apd+xml +.sls application/route-s-tsid+xml +.rusd application/route-usd+xml +.gbr application/rpki-ghostbusters +.mft application/rpki-manifest +.roa application/rpki-roa +.rtf application/rtf +.sbml application/sbml+xml +.scq application/scvp-cv-request +.scs application/scvp-cv-response +.spq application/scvp-vp-request +.spp application/scvp-vp-response +.sdp application/sdp +.senmlx application/senml+xml +.sensmlx application/sensml+xml +.setpay application/set-payment-initiation +.setreg application/set-registration-initiation +.shf application/shf+xml +.siv application/sieve +.smi application/smil+xml +.rq application/sparql-query +.srx application/sparql-results+xml +.sql application/sql +.gram application/srgs +.grxml application/srgs+xml +.sru application/sru+xml +.ssml application/ssml+xml +.swidtag application/swid+xml +.tei application/tei+xml +.tfi application/thraud+xml +.tsd application/timestamped-data +.toml application/toml +.trig application/trig +.ttml application/ttml+xml +.rsheet application/urc-ressheet+xml +.td application/urc-targetdesc+xml +.vec application/vec+xml +.1km application/vnd.1000minds.decision-model+xml +.plb application/vnd.3gpp.pic-bw-large +.psb application/vnd.3gpp.pic-bw-small +.pvb application/vnd.3gpp.pic-bw-var +.tcap application/vnd.3gpp2.tcap +.pwn application/vnd.3m.post-it-notes +.aso application/vnd.accpac.simply.aso +.imp application/vnd.accpac.simply.imp +.acu application/vnd.acucobol +.atc application/vnd.acucorp +.fcdt application/vnd.adobe.formscentral.fcdt +.fxp application/vnd.adobe.fxp +.xdp application/vnd.adobe.xdp+xml +.age application/vnd.age +.ahead application/vnd.ahead.space +.azf application/vnd.airzip.filesecure.azf +.azs application/vnd.airzip.filesecure.azs +.acc application/vnd.americandynamics.acc +.ami application/vnd.amiga.ami +.cii application/vnd.anser-web-certificate-issue-initiation +.atx application/vnd.antix.game-component +.parquet application/vnd.apache.parquet +.mpkg application/vnd.apple.installer+xml +.key application/vnd.apple.keynote +.m3u8 application/vnd.apple.mpegurl +.numbers application/vnd.apple.numbers +.pages application/vnd.apple.pages +.swi application/vnd.aristanetworks.swi +.iota application/vnd.astraea-software.iota +.aep application/vnd.audiograph +.bmml application/vnd.balsamiq.bmml+xml +.mpm application/vnd.blueice.multipass +.bmi application/vnd.bmi +.rep application/vnd.businessobjects +.cdxml application/vnd.chemdraw+xml +.mmd application/vnd.chipnuts.karaoke-mmd +.cdy application/vnd.cinderella +.csl application/vnd.citationstyles.style+xml +.cla application/vnd.claymore +.rp9 application/vnd.cloanto.rp9 +.c4g application/vnd.clonk.c4group +.c11amc application/vnd.cluetrust.cartomobile-config +.c11amz application/vnd.cluetrust.cartomobile-config-pkg +.csp application/vnd.commonspace +.cdbcmsg application/vnd.contact.cmsg +.cmc application/vnd.cosmocaller +.clkx application/vnd.crick.clicker +.clkk application/vnd.crick.clicker.keyboard +.clkp application/vnd.crick.clicker.palette +.clkt application/vnd.crick.clicker.template +.clkw application/vnd.crick.clicker.wordbank +.wbs application/vnd.criticaltools.wbs+xml +.pml application/vnd.ctc-posml +.ppd application/vnd.cups-ppd +.dart application/vnd.dart +.rdz application/vnd.data-vision.rdz +.dbf application/vnd.dbf +.dcmp application/vnd.dcmp+xml +.uvf application/vnd.dece.data +.uvt application/vnd.dece.ttml+xml +.uvx application/vnd.dece.unspecified +.uvz application/vnd.dece.zip +.fe_launch application/vnd.denovo.fcselayout-link +.dna application/vnd.dna +.dpg application/vnd.dpgraph +.dfac application/vnd.dreamfactory +.ait application/vnd.dvb.ait +.svc application/vnd.dvb.service +.geo application/vnd.dynageo +.mag application/vnd.ecowin.chart +.nml application/vnd.enliven +.esf application/vnd.epson.esf +.msf application/vnd.epson.msf +.qam application/vnd.epson.quickanime +.slt application/vnd.epson.salt +.ssf application/vnd.epson.ssf +.es3 application/vnd.eszigno3+xml +.ez2 application/vnd.ezpix-album +.ez3 application/vnd.ezpix-package +.mseed application/vnd.fdsn.mseed +.seed application/vnd.fdsn.seed +.gph application/vnd.flographit +.ftc application/vnd.fluxtime.clip +.fm application/vnd.framemaker +.fsc application/vnd.fsc.weblaunch +.oas application/vnd.fujitsu.oasys +.oa2 application/vnd.fujitsu.oasys2 +.oa3 application/vnd.fujitsu.oasys3 +.fg5 application/vnd.fujitsu.oasysgp +.bh2 application/vnd.fujitsu.oasysprs +.ddd application/vnd.fujixerox.ddd +.xdw application/vnd.fujixerox.docuworks +.xbd application/vnd.fujixerox.docuworks.binder +.fzs application/vnd.fuzzysheet +.txd application/vnd.genomatix.tuxedo +.ggb application/vnd.geogebra.file +.ggs application/vnd.geogebra.slides +.ggt application/vnd.geogebra.tool +.gex application/vnd.geometry-explorer +.gxt application/vnd.geonext +.g2w application/vnd.geoplan +.g3w application/vnd.geospace +.gmx application/vnd.gmx +.kml application/vnd.google-earth.kml+xml +.kmz application/vnd.google-earth.kmz +.xdcf application/vnd.gov.sk.xmldatacontainer+xml +.gqf application/vnd.grafeq +.gac application/vnd.groove-account +.ghf application/vnd.groove-help +.gim application/vnd.groove-identity-message +.grv application/vnd.groove-injector +.gtm application/vnd.groove-tool-message +.tpl application/vnd.groove-tool-template +.vcg application/vnd.groove-vcard +.hal application/vnd.hal+xml +.zmm application/vnd.handheld-entertainment+xml +.hbci application/vnd.hbci +.les application/vnd.hhe.lesson-player +.hpgl application/vnd.hp-hpgl +.hpid application/vnd.hp-hpid +.hps application/vnd.hp-hps +.jlt application/vnd.hp-jlyt +.pcl application/vnd.hp-pcl +.pclxl application/vnd.hp-pclxl +.sfd-hdstx application/vnd.hydrostatix.sof-data +.mpy application/vnd.ibm.minipay +.irm application/vnd.ibm.rights-management +.sc application/vnd.ibm.secure-container +.icc application/vnd.iccprofile +.igl application/vnd.igloader +.ivp application/vnd.immervision-ivp +.ivu application/vnd.immervision-ivu +.igm application/vnd.insors.igm +.xpw application/vnd.intercon.formnet +.i2g application/vnd.intergeo +.qbo application/vnd.intu.qbo +.qfx application/vnd.intu.qfx +.rcprofile application/vnd.ipunplugged.rcprofile +.irp application/vnd.irepository.package+xml +.xpr application/vnd.is-xpr +.fcs application/vnd.isac.fcs +.jam application/vnd.jam +.rms application/vnd.jcp.javame.midlet-rms +.jisp application/vnd.jisp +.joda application/vnd.joost.joda-archive +.ktz application/vnd.kahootz +.karbon application/vnd.kde.karbon +.chrt application/vnd.kde.kchart +.kfo application/vnd.kde.kformula +.flw application/vnd.kde.kivio +.kon application/vnd.kde.kontour +.kpr application/vnd.kde.kpresenter +.ksp application/vnd.kde.kspread +.kwd application/vnd.kde.kword +.htke application/vnd.kenameaapp +.kia application/vnd.kidspiration +.kne application/vnd.kinar +.skp application/vnd.koan +.sse application/vnd.kodak-descriptor +.lasxml application/vnd.las.las+xml +.lbd application/vnd.llamagraphics.life-balance.desktop +.lbe application/vnd.llamagraphics.life-balance.exchange+xml +.123 application/vnd.lotus-1-2-3 +.apr application/vnd.lotus-approach +.pre application/vnd.lotus-freelance +.nsf application/vnd.lotus-notes +.org application/vnd.lotus-organizer +.scm application/vnd.lotus-screencam +.lwp application/vnd.lotus-wordpro +.portpkg application/vnd.macports.portpkg +.mvt application/vnd.mapbox-vector-tile +.mcd application/vnd.mcd +.mc1 application/vnd.medcalcdata +.cdkey application/vnd.mediastation.cdkey +.mwf application/vnd.mfer +.mfm application/vnd.mfmp +.flo application/vnd.micrografx.flo +.igx application/vnd.micrografx.igx +.mif application/vnd.mif +.daf application/vnd.mobius.daf +.dis application/vnd.mobius.dis +.mbk application/vnd.mobius.mbk +.mqy application/vnd.mobius.mqy +.msl application/vnd.mobius.msl +.plc application/vnd.mobius.plc +.txf application/vnd.mobius.txf +.mpn application/vnd.mophun.application +.mpc application/vnd.mophun.certificate +.xul application/vnd.mozilla.xul+xml +.cil application/vnd.ms-artgalry +.cab application/vnd.ms-cab-compressed +.xls application/vnd.ms-excel +.xlam application/vnd.ms-excel.addin.macroenabled.12 +.xlsb application/vnd.ms-excel.sheet.binary.macroenabled.12 +.xlsm application/vnd.ms-excel.sheet.macroenabled.12 +.xltm application/vnd.ms-excel.template.macroenabled.12 +.eot application/vnd.ms-fontobject +.chm application/vnd.ms-htmlhelp +.ims application/vnd.ms-ims +.lrm application/vnd.ms-lrm +.thmx application/vnd.ms-officetheme +.ppt application/vnd.ms-powerpoint +.ppam application/vnd.ms-powerpoint.addin.macroenabled.12 +.pptm application/vnd.ms-powerpoint.presentation.macroenabled.12 +.sldm application/vnd.ms-powerpoint.slide.macroenabled.12 +.ppsm application/vnd.ms-powerpoint.slideshow.macroenabled.12 +.potm application/vnd.ms-powerpoint.template.macroenabled.12 +.mpp application/vnd.ms-project +.docm application/vnd.ms-word.document.macroenabled.12 +.dotm application/vnd.ms-word.template.macroenabled.12 +.wps application/vnd.ms-works +.wpl application/vnd.ms-wpl +.xps application/vnd.ms-xpsdocument +.mseq application/vnd.mseq +.mus application/vnd.musician +.msty application/vnd.muvee.style +.taglet application/vnd.mynfc +.bdo application/vnd.nato.bindingdataobject+xml +.nlu application/vnd.neurolanguage.nlu +.ntf application/vnd.nitf +.nnd application/vnd.noblenet-directory +.nns application/vnd.noblenet-sealer +.nnw application/vnd.noblenet-web +.ac application/vnd.nokia.n-gage.ac+xml +.ngdat application/vnd.nokia.n-gage.data +.rpst application/vnd.nokia.radio-preset +.rpss application/vnd.nokia.radio-presets +.edm application/vnd.novadigm.edm +.edx application/vnd.novadigm.edx +.ext application/vnd.novadigm.ext +.odc application/vnd.oasis.opendocument.chart +.otc application/vnd.oasis.opendocument.chart-template +.odf application/vnd.oasis.opendocument.formula +.odft application/vnd.oasis.opendocument.formula-template +.odg application/vnd.oasis.opendocument.graphics +.otg application/vnd.oasis.opendocument.graphics-template +.odi application/vnd.oasis.opendocument.image +.oti application/vnd.oasis.opendocument.image-template +.odp application/vnd.oasis.opendocument.presentation +.otp application/vnd.oasis.opendocument.presentation-template +.ods application/vnd.oasis.opendocument.spreadsheet +.ots application/vnd.oasis.opendocument.spreadsheet-template +.odt application/vnd.oasis.opendocument.text +.odm application/vnd.oasis.opendocument.text-master +.ott application/vnd.oasis.opendocument.text-template +.oth application/vnd.oasis.opendocument.text-web +.xo application/vnd.olpc-sugar +.dd2 application/vnd.oma.dd2+xml +.obgx application/vnd.openblox.game+xml +.osm application/vnd.openstreetmap.data+xml +.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation +.sldx application/vnd.openxmlformats-officedocument.presentationml.slide +.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow +.potx application/vnd.openxmlformats-officedocument.presentationml.template +.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet +.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template +.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document +.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template +.mgp application/vnd.osgeo.mapguide.package +.dp application/vnd.osgi.dp +.esa application/vnd.osgi.subsystem +.pdb application/vnd.palm +.paw application/vnd.pawaafile +.str application/vnd.pg.format +.ei6 application/vnd.pg.osasli +.efif application/vnd.picsel +.wg application/vnd.pmi.widget +.plf application/vnd.pocketlearn +.pbd application/vnd.powerbuilder6 +.systemverify application/vnd.pp.systemverify+xml +.box application/vnd.previewsystems.box +.mgz application/vnd.proteus.magazine +.qps application/vnd.publishare-delta-tree +.ptid application/vnd.pvi.ptid1 +.xhtm application/vnd.pwg-xhtml-print+xml +.qxd application/vnd.quark.quarkxpress +.rar application/vnd.rar +.bed application/vnd.realvnc.bed +.mxl application/vnd.recordare.musicxml +.musicxml application/vnd.recordare.musicxml+xml +.cryptonote application/vnd.rig.cryptonote +.link66 application/vnd.route66.link66+xml +.st application/vnd.sailingtracker.track +.see application/vnd.seemail +.sema application/vnd.sema +.semd application/vnd.semd +.semf application/vnd.semf +.ifm application/vnd.shana.informed.formdata +.itp application/vnd.shana.informed.formtemplate +.iif application/vnd.shana.informed.interchange +.ipk application/vnd.shana.informed.package +.twd application/vnd.simtech-mindmapper +.mmf application/vnd.smaf +.teacher application/vnd.smart.teacher +.fo application/vnd.software602.filler.form+xml +.sdkm application/vnd.solent.sdkm+xml +.dxp application/vnd.spotfire.dxp +.sfs application/vnd.spotfire.sfs +.sqlite application/vnd.sqlite3 +.smzip application/vnd.stepmania.package +.sm application/vnd.stepmania.stepchart +.wadl application/vnd.sun.wadl+xml +.sus application/vnd.sus-calendar +.svd application/vnd.svd +.xsm application/vnd.syncml+xml +.bdm application/vnd.syncml.dm+wbxml +.xdm application/vnd.syncml.dm+xml +.ddf application/vnd.syncml.dmddf+xml +.tao application/vnd.tao.intent-module-archive +.pcap application/vnd.tcpdump.pcap +.tmo application/vnd.tmobile-livetv +.tpt application/vnd.trid.tpt +.mxs application/vnd.triscape.mxs +.tra application/vnd.trueapp +.ufd application/vnd.ufdl +.utz application/vnd.uiq.theme +.umj application/vnd.umajin +.unityweb application/vnd.unity +.uoml application/vnd.uoml+xml +.vcx application/vnd.vcx +.vsd application/vnd.visio +.vis application/vnd.visionary +.vsf application/vnd.vsf +.wbxml application/vnd.wap.wbxml +.wmlc application/vnd.wap.wmlc +.wmlsc application/vnd.wap.wmlscriptc +.wtb application/vnd.webturbo +.nbp application/vnd.wolfram.player +.wpd application/vnd.wordperfect +.wqd application/vnd.wqd +.stf application/vnd.wt.stf +.xar application/vnd.xara +.xfdl application/vnd.xfdl +.hvd application/vnd.yamaha.hv-dic +.hvs application/vnd.yamaha.hv-script +.hvp application/vnd.yamaha.hv-voice +.osf application/vnd.yamaha.openscoreformat +.osfpvg application/vnd.yamaha.openscoreformat.osfpvg+xml +.saf application/vnd.yamaha.smaf-audio +.spf application/vnd.yamaha.smaf-phrase +.cmp application/vnd.yellowriver-custom-menu +.zir application/vnd.zul +.zaz application/vnd.zzazz.deck+xml +.vxml application/voicexml+xml +.wasm application/wasm +.wif application/watcherinfo+xml +.wgt application/widget +.wsdl application/wsdl+xml +.wspolicy application/wspolicy+xml +.der application/x-x509-ca-cert +.xav application/xcap-att+xml +.xca application/xcap-caps+xml +.xdf application/xcap-diff+xml +.xel application/xcap-el+xml +.xns application/xcap-ns+xml +.xenc application/xenc+xml +.xfdf application/xfdf +.xhtml application/xhtml+xml +.xlf application/xliff+xml .xml application/xml +.dtd application/xml-dtd +.xop application/xop+xml +.xsl application/xslt+xml +.mxml application/xv+xml +.yang application/yang +.yin application/yin+xml .zip application/zip -.mp3 audio/mpeg +.3gpp audio/3gpp +.adts audio/aac +.amr audio/amr +.au audio/basic +.mka audio/matroska +.mxmf audio/mobile-xmf +.m4a audio/mp4 +.mpga audio/mpeg +.oga audio/ogg +.uva audio/vnd.dece.audio +.eol audio/vnd.digital-winds +.dra audio/vnd.dra +.dts audio/vnd.dts +.dtshd audio/vnd.dts.hd +.lvp audio/vnd.lucent.voice +.pya audio/vnd.ms-playready.media.pya +.ecelp4800 audio/vnd.nuera.ecelp4800 +.ecelp7470 audio/vnd.nuera.ecelp7470 +.ecelp9600 audio/vnd.nuera.ecelp9600 +.rip audio/vnd.rip +.ttc font/collection +.otf font/otf +.ttf font/ttf +.woff font/woff +.woff2 font/woff2 +.exr image/aces +.apng image/apng +.avci image/avci +.avcs image/avcs +.avif image/avif +.bmp image/bmp +.cgm image/cgm +.drle image/dicom-rle +.dpx image/dpx +.emf image/emf +.fits image/fits +.g3 image/g3fax .gif image/gif +.heic image/heic +.heics image/heic-sequence +.heif image/heif +.heifs image/heif-sequence +.hej2 image/hej2k +.ief image/ief +.jaii image/jaii +.jais image/jais +.jls image/jls +.jp2 image/jp2 .jpg image/jpeg +.jph image/jph +.jhc image/jphc +.jpm image/jpm +.jpx image/jpx +.jxl image/jxl +.jxr image/jxr +.jxra image/jxra +.jxrs image/jxrs +.jxs image/jxs +.jxsc image/jxsc +.jxsi image/jxsi +.jxss image/jxss +.ktx image/ktx +.ktx2 image/ktx2 .png image/png +.btif image/prs.btif +.pti image/prs.pti .svg image/svg+xml +.t38 image/t38 +.tif image/tiff +.tfx image/tiff-fx +.psd image/vnd.adobe.photoshop +.azv image/vnd.airzip.accelerator.azv +.facti image/vnd.blockfact.facti +.uvi image/vnd.dece.graphic +.djvu image/vnd.djvu +.sub image/vnd.dvb.subtitle +.dwg image/vnd.dwg +.dxf image/vnd.dxf +.fbs image/vnd.fastbidsheet +.fpx image/vnd.fpx +.fst image/vnd.fst +.mmr image/vnd.fujixerox.edmics-mmr +.rlc image/vnd.fujixerox.edmics-rlc +.ico image/vnd.microsoft.icon +.mdi image/vnd.ms-modi +.npx image/vnd.net-fpx +.b16 image/vnd.pco.b16 +.tap image/vnd.tencent.tap +.vtf image/vnd.valve.source.texture +.wbmp image/vnd.wap.wbmp +.xif image/vnd.xiff +.pcx image/vnd.zbrush.pcx .webp image/webp +.wmf image/wmf +.disposition-notification message/disposition-notification +.u8msg message/global +.u8dsn message/global-delivery-status +.u8mdn message/global-disposition-notification +.u8hdr message/global-headers +.eml message/rfc822 +.wsc message/vnd.wfa.wsc +.3mf model/3mf +.gltf model/gltf+json +.glb model/gltf-binary +.igs model/iges +.jt model/jt +.msh model/mesh +.mtl model/mtl +.obj model/obj +.prc model/prc +.step model/step +.stpx model/step+xml +.stpz model/step+zip +.stpxz model/step-xml+zip +.stl model/stl +.u3d model/u3d +.bary model/vnd.bary +.cld model/vnd.cld +.dae model/vnd.collada+xml +.dwf model/vnd.dwf +.gdl model/vnd.gdl +.gtw model/vnd.gtw +.mts model/vnd.mts +.ogex model/vnd.opengex +.x_b model/vnd.parasolid.transmit.binary +.x_t model/vnd.parasolid.transmit.text +.pyo model/vnd.pytha.pyox +.vds model/vnd.sap.vds +.usda model/vnd.usda +.usdz model/vnd.usdz+zip +.bsp model/vnd.valve.source.compiled-map +.vtu model/vnd.vtu +.wrl model/vrml +.x3db model/x3d+fastinfoset +.x3d model/x3d+xml +.x3dv model/x3d-vrml +.appcache text/cache-manifest +.ics text/calendar +.css text/css .csv text/csv .html text/html +.js text/javascript +.md text/markdown +.n3 text/n3 .txt text/plain +.dsc text/prs.lines.tag +.rtx text/richtext +.rtf text/rtf +.sgml text/sgml +.shex text/shex +.spdx text/spdx +.tsv text/tab-separated-values +.t text/troff +.ttl text/turtle +.uri text/uri-list +.vcard text/vcard +.curl text/vnd.curl +.sub text/vnd.dvb.subtitle +.ged text/vnd.familysearch.gedcom +.fly text/vnd.fly +.flx text/vnd.fmi.flexstor +.gv text/vnd.graphviz +.3dml text/vnd.in3d.3dml +.spot text/vnd.in3d.spot +.jad text/vnd.sun.j2me.app-descriptor +.wml text/vnd.wap.wml +.wmls text/vnd.wap.wmlscript +.vtt text/vtt +.wgsl text/wgsl +.xml text/xml +.3gp video/3gpp +.3g2 video/3gpp2 +.h261 video/h261 +.h263 video/h263 +.h264 video/h264 +.m4s video/iso.segment +.jpgv video/jpeg +.mkv video/matroska +.mk3d video/matroska-3d +.mj2 video/mj2 +.ts video/mp2t .mp4 video/mp4 +.mpeg video/mpeg +.ogv video/ogg +.qt video/quicktime +.uvh video/vnd.dece.hd +.uvm video/vnd.dece.mobile +.uvp video/vnd.dece.pd +.uvs video/vnd.dece.sd +.uvv video/vnd.dece.video +.dvb video/vnd.dvb.file +.fvt video/vnd.fvt +.mxu video/vnd.mpegurl +.pyv video/vnd.ms-playready.media.pyv +.uvu video/vnd.uvvu.mp4 +.viv video/vnd.vivo diff --git a/todo.md b/todo.md index 4e4b815..8a203f1 100644 --- a/todo.md +++ b/todo.md @@ -22,8 +22,8 @@ value is composed; TSV says which values exist. - In a data file, refuse a choice whose items are templates with one identical field set, naming the TSV to write; an inline template is exempt, having no file. A choice of strings stays a choice. -- Convert `misc.country`, `currency`, `language`, `httpstatus`, `mimetype`, - `timezone`, `car` and `useragent` to tables. +- Convert `misc.timezone`, `car` and `useragent` to tables; `country`, `currency`, + `language`, `httpstatus` and `mimetype` are done. - Let a path select a row by key or by name, `geo.SE.municipality[0180]` and `geo.SE.municipality[Stockholm]`, and descend to a linked table by name, `geo.SE.region[Skåne län].street`; a key or a linked table name may not equal @@ -171,7 +171,10 @@ address, phone, national id, company and date names each. conflicts with sits inside another category. Give the national ids one record shape in step 6, and report a struct column's draw conflict with the path spelling a tag takes rather than the reference spelling. -4. `misc` conversions and the new `misc` tables. +4. `misc` conversions and the new `misc` tables. `language`, `httpstatus` and + `mimetype` read their registers now, and `misc.country` keeps a currency code + rather than a `parent` link to `misc.currency` (README Decisions). Convert + `timezone`, `car` and `useragent`, and add the new `misc` tables. 5. The remaining locale categories: company, phone, finance, vehicle, words. 6. Records with building-block columns across the shipped set; shape re-pin.