DICTFMT(1)

πŸ“¦
version 1.13.3 Β· 3 versions
, in arch rolling, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

✨ NAME ✨

dictfmt β€” she formats a DICT protocol dictionary database, and she does it flawlessly πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

dictfmt  -c5|-t|-e|-f|-h|-j|-p [options]  basename
dictfmt  -i|-I [options]

πŸ’– DESCRIPTION πŸ’–

okay so bestie, listen up, because this is actually so useful 🫢

dictfmt grabs a file, FILE, from stdin, and spins up a dictionary database called basename.dict that conforms to the DICT protocol. She also makes you an index file called basename.index. By default the index is sorted according to the C locale, and literally only alphanumeric characters and spaces get used in the sorting β€” but you can change all of that with the --locale and --allchars options. (Also, basename is usually picked to match the basename of FILE, but that's not mandatory, so do your thing πŸ’)

Unless the database is extremely small, it is highly recommended that basename.dict be compressed with /usr/bin/dictzip to create basename.dict.dz. (dictzip ships inside the dictd source package, iykyk.)

FILE can be in any of the several formats described by the format options -c5, -t, -e, -f, -h, -j, -p, -i or -I. Exactly one of these options must be given. one. not two. one. πŸ‘‘

dictfmt prepends several headers to the .dict file. The 00-database-url header gives the value of the -u option as the URL of the site from which the original database was obtained. The 00-database-short header gives the value of the -s option as the short name of the dictionary. (This "short name" is the identifying name given by the dict -D option.) If the -u and/or -s options are omitted, these values will show up as "unknown", which is undesirable for a publicly distributed database β€” so don't do that to yourself πŸ™ˆ

The date of conversion (formatting) is given in the 00-database-info header. All text in the input file prior to the first headword (as defined by the appropriate formatting option) gets appended to this header. All text in the input file following a headword, up to the next headword, is copied unchanged to the .dict file. periodt πŸ’…


πŸŽ€ FORMATTING OPTIONS πŸŽ€

Pick exactly one of these, bestie. This is the main character decision of the whole operation.

  • -c5 β€” FILE is formatted with headwords preceded by 5 or more underscore characters (_) and a blank line. All text until the next headword counts as the definition. Any leading @ characters get stripped out, but otherwise the file is untouched. This option was written to format the CIA WORLD FACTBOOK 1995 πŸ”₯
  • -t β€” the -c5, --without-info and --without-headword options are implied. Use this one if your input database comes from the dictunformat utility.
  • -e β€” FILE is in html format, with the headword tagged as bold. (<B>headword - </B>)

This option was written to format EASTON'S 1897 BIBLE DICTIONARY. A typical entry from Easton is:

<A NAME="T0000005">
<B>Abagtha - </B>
one of the seven eunuchs in Ahasuerus's court (Esther 1:10;
2:21).

This is converted to:

Abagtha
   one of the seven eunuchs in Ahasuerus's court (Esther 1:10;
2:21).

The heading <A NAME="T0000005"> is omitted, and the headword Abagtha is indexed.

NOTE: This option should be used with caution ⚠️ It removes several html tags (enough to format Easton properly), but not all of them. The Makefile that was originally written to format dict-easton uses sed scripts to modify certain cross reference tags. It may be necessary to pipe the input file through a sed script, or hack the source of dictfmt in order to properly format other html databases. so like, be careful 🌸
  • -f β€” FILE is formatted with the headwords starting in column 0, with the definition indented at least one space (or tab character) on subsequent lines. The third line starting in column 0 is taken as the first headword, and the first two lines starting in column 0 are treated as part of the 00-database-info header. This option was written to format the F.O.L.D.O.C.
  • -h β€” FILE is formatted with the headwords starting in column 0, followed by a comma, with the definition continuing on the same line. All text before the first single character line is included in the 00-database-info header, and lines with only one character are omitted from the .dict file. The first headword is on the line following the first single character line. The headword is indexed; the text of the file is not changed. This option was written to format HITCHCOCK'S BIBLE NAMES DICTIONARY.
  • -j β€” FILE is formatted with headwords starting in col 0, enclosed in colons, followed by the definition. The colons surrounding the headword are removed, and the headword is indexed. Lines beginning with *, = or - are also removed. All text before the first headword is included in the headers. This option was written to format the JARGON FILE.
NOTE: Some recent versions of the JARGON FILE had three blanks inserted before the first colon at each headword. These must be removed before processing with dictfmt. (sed scripts have been used for this purpose. ed, awk, or perl scripts are also possible.) no cap πŸ’€
  • -p β€” FILE is formatted with %h in column 0, followed by a blank, followed by the headword, optionally followed by a line containing %d in column 0. The definition starts on the following line. The first line beginning %h and any lines beginning %d are stripped from the .dict file, and %h is stripped from in front of the headword. All text before the first headword is included in the headers. The second line beginning %h is taken as the first headword. This option was written to format Jay Kominek's elements database ⭐
  • -i, -I β€” These two options are different from all the other formatting options. They're meant to resort (according to dictd requirement) an .index file given on stdin. That is, the .dict file is not generated at all. Only resorting is done. A three- or four-column .index-like input is expected. -i expects decimal offset and length, while -I expects them in base64 format. 🌈

πŸ‘‘ OPTIONS πŸ‘‘

the glow-up section, bestie ✨

  • -u url β€” Specifies the URL of the site from which the raw database was obtained. If this option is specified, the 00-database-url headword and its appropriate definition will be ignored.
  • -s name β€” Specifies the name and, optionally, the version and date, of the database. (If this contains spaces, it must be quoted.) If this option is specified, the 00-database-short headword and its appropriate definition will be ignored.
  • -L β€” display license and copyright information πŸ“œ
  • -V β€” display version information
  • -D β€” output debugging information πŸ›
  • --help β€” display a help message
  • --locale locale β€” Specifies the locale used for sorting. If no locale is specified, the "C" locale is used. For using UTF-8 mode, --utf8 is needed.
  • --8bit β€” generates database in 8-bit mode, see the --locale option also.
Note: This option is deprecated. Use it for creating 8-bit (non-UTF8) dictionaries only. In order to create a UTF-8 dictionary, use the --utf8 option instead. don't be doing deprecated things, it's not the vibe πŸ™ˆ
  • --utf8 β€” If specified, a UTF-8 database is created. πŸ¦‹
  • --allchars β€” Specifies that all characters should be used for the search, because by default only alphabetic, numeric characters and spaces are put into the .index file and therefore are used in search. Creates the special entry 00-database-allchars.
  • --case-sensitive β€” makes the search case sensitive. Creates the special entry 00-database-case-sensitive.
  • --headword-separator sep β€” sets the headword separator, which allows several words to have the same definition. For example, if --headword-separator %%% is given, and the input file contains autumn%%%fall, both autumn and fall will be indexed as headwords, with the same definition. iconic, honestly πŸ’…
  • --index-data-separator sep β€” sets the index/data separator, which allows you to set the first and fourth columns of the .index file independently. That is, the first column can be treated as an index column (where the MATCH command searches) and the fourth column as a result column (where the MATCH gets things to be returned), and they (1-st and 4-th columns) are completely independant of each other. The default value for this separator is the ASCII symbol " \034".
  • --break-headwords β€” multiple headwords will be written on separate lines in the .dict file. For use with --headword-separator.
  • --index-keep-orig β€” When --utf-8 is specified, headwords are lowercased and non-alphanumeric characters are removed from them before saving to the .index file, in order to simplify the search. When the --index-keep-orig option is used, a fourth column is created (if necessary) in the .index file, and it contains an original headword which is returned by the MATCH command. This option may be useful to prevent converting " AT&T" to " ATT" or to keep proper nouns with an uppercased first letter. πŸŽ€
  • --without-headword β€” headwords will not be included in the .dict file
  • --without-header β€” the header will not be copied to the DB info entry
  • --without-url β€” the URL will not be copied to the DB info entry
  • --without-time β€” the time of creation will not be copied to the DB info entry
  • --without-ver β€” By default dictfmt creates a special entry 00-database-dictfmt-X.Y.Z that contains (in the .dict file) the dictfmt version in the format dictfmt-X.Y.Z. This option suppresses that. πŸ™…
  • --without-info β€” the DB info entry will not be created. This may be useful if the 00-database-info headword is expected from stdin (dictunformat outputs it).
  • --columns columns β€” By default dictfmt wraps strings read from stdin to 72 columns. This option changes that default. If it is set to zero or a negative value, wrapping is off. 🧚
  • --default-strategy strategy β€” Sets the default search strategy for the database. It will be used instead of strategy '.'. The special entry 00-database-default-strategy is created for this purpose. This option may be useful, for example, for dictionaries containing mainly phrases but the single words. In any case, use this option if you are absolutely sure what you are doing. πŸ‘‘
  • --mime-header mime_header β€” When a client sends the OPTION MIME command to the dictd, definitions found in this database are prepended by the specified MIME header. Creates the special entry 00-database-mime-header. 🌈

πŸ’– CREDITS πŸ’–

ok so dictfmt was written by Rik Faith (faith@cs.unc.edu) as part of the dict-misc package. periodt, that's the origin story πŸ‘‘

and bestie, dictfmt is distributed under the terms of the GNU General Public License β€” iconic licensing behavior fr fr 🌈

lowkey important: if you need to distribute it under other terms, you gotta write to the author. no cap, that's the move πŸ’Œ

✍️ AUTHOR ✍️

This manual page was written by Robert D. Hilliard <hilliard@debian.org> πŸŽ€ (yes, the whole page β€” main character energy, we love to see it)


πŸ‘€ SEE ALSO πŸ‘€

like… go read those too bestie, iykyk πŸ¦‹


ok that's the whole page, we did it πŸ₯³ this manual page is dated 25 December 2000, it's from DICTFMT(1), and honestly? she's a vintage queen and she ate πŸ’…βœ¨ bye bestie, go format some dictionaries πŸ«ΆπŸ’–

πŸ“¦ where this page comes from