KasoVerb
KasoVerb is free software (<https://www.gnu.org/philosophy/free-sw.html>), which allows complete split-second conjugation of verbs in English, Spanish, and Italian—in any order. Twenty-two columns of verb-related information allow tense-related comparisons in any or all three languages.
The original work began life from a book written by Adolph (Adolfo) Caso named “Understanding English and Italian Verbs,” 2005 Branden Books (unpublished). For historical purposes, Adolfo’s verb conjugation book and other artifacts can be found in the source archive.
<http://git.savannah.nongnu.org/cgit/kasoverb.git/tree/archive/brandenbooks>
The artifacts, however, are not part of KasoVerb. Therefore, the material is not distributed as part of the package.
The KasoVerb project (<https://savannah.nongnu.org/projects/kasoverb>) is hosted on GNU Savannah (<http://savannah.gnu.org/>). This is where some of the project management aspects occur such as news and bug reporting.
GNU Savannah also hosts a ’Download Area’ where KasoVerb source tarballs can be found.
<http://download.savannah.nongnu.org/releases/kasoverb/>
The source code is kept in a git repository located on the GNU Savannah and mirror servers.
<http://git.savannah.nongnu.org/cgit/kasoverb.git>
Incidentally, you create a local copy of the repository on your computer using git.
git clone git://git.savannah.nongnu.org/kasoverb.git
Building KasoVerb requires software tools and libraries to be available on your Operating System. These are described in the subsequent sections of this chapter.
You will need a make utility, which is software that processes Makfile scripts. The make utility you choose should be one that the CMake generator understands.
Another requirement is CMake (<https://cmake.org/>), which is a tool used to build a compatible Makefile for the make utility you are using.
The following example will output the generators that CMake can produce.
$ cmake --help
A C/C++ compiler is a tool that converts a source file into object code. A linker takes the object code and produces machine code.
You can control the compiler CMake will generate by using the following two (2) options: (1) CMAKE_C_COMPILER and (2) CMAKE_CXX_COMPILER.
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
git (<https://git-scm.com/>) is software tool that is used to manage a source code repository. The instructions in this chapter use git to fetch the source code. As an alternative, you can download source tarballs.
A dependency of KasoVerb is the Fast Light Toolkit (<http://fltk.org>) (FLTK). If you do not have FLTK installed or it is not an available package for your Operating System, you can build it locally (installation is optional).
$ cd ${HOME} $ git clone https://github.com/fltk/fltk.git $ cd fltk $ mkdir build $ cd build $ cmake -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_GL=OFF ..
It is not necessary to install FLTK headers and libraries to compile KasoVerb. However, if a local install is desired, adjust the “CMAKE_INSTALL_PREFIX” macro to the path of your desired base directory.
$ cmake \ -DCMAKE_INSTALL_PREFIX=~/usr/local \ -DCMAKE_BUILD_TYPE=Release \ -DOPTION_USE_GL=OFF
CMake produces a config.h file in the FLTK build directory. Typically, the default settings will produce an FLTK library without any issues. However, on some platforms it might be necessary to modify the file in order to get the library to compile without error.
After any configuration changes, the next step is to build FLTK.
$ make
If desired, FLTK can also be installed.
$ make install
FLTK has an “uninstall” target used to remove the package from your system.
$ make uninstall
An official package from your distribution is the preferred method of installing FLTK into base Operating System directories. By using packaging tools FLTK will be easier to maintain such as fetching updates or removing the software.
$ cd ${HOME} $ git clone git://git.savannah.nongnu.org/kasoverb.git $ cd kasoverb $ mkdir build $ cd build $ cmake \ -DCMAKE_XDGDATA_DIR=~/.local/share \ -DCMAKE_INSTALL_PREFIX=~/usr/local \ -DCMAKE_BUILD_TYPE=Release .. $ make
The “CMAKE_XDGDATA_DIR” is an optional macro used to specify a base directory to place the KasoVerb database files. If it is not specified, the “CMAKE_INSTALL_PREFIX” macro will be used in it’s place.
The CMake script (CMakeFiles.txt) in the KasoVerb top level directory will search for FLTK in the CMake default directories. If it is not found, additional search will be performed in the following directories:
Alternatively, set the FLTK_DIR environment variable to point to the path where the FLTK CMake configuration file (“FLTKConfig.cmake”) resides.
$ FLTK_DIR=~/usr/local/share/fltk cmake -DCMAKE_XDGDATA_DIR=~/.local/share \ -DCMAKE_INSTALL_PREFIX=~/usr/local \ -DCMAKE_BUILD_TYPE=Release ..
To install everything in the KasoVerb package, use the “install-all’ target.
$ make install-all
There are three (3) component install types: (1) “Runtime,” (2) “Development” and (3) “Tools.”’
Install KasoVerb binary, database and desktop files
$ make install-bin
The “Runtime” target is synonymous with the “install” target.
Install KasoVerb dependency libraries that are included in the source tree.
KasoVerb depends on four (4) libraries: (1) FLTK, (2) mjo, (3) mjo_extra and (4) kvc. With the exception of FLTK, the other libraries source code is integrated into the KasoVerb source tree.
$ make install-dev
Currently there are two (2) software tools: (1) kv3tocsv and (2) csvtokv3.
$ make install-tools
Following installation, the KasoVerb desktop entry and MIME database can be updated.
$ update-desktop-database ~/.local/share/applications $ update-mime-database ~/.local/share/mime
There is no “uninstall” target or script. However, CMake will create an “install_manifest.txt” file in your build directory. To remove the software, execute the command below from the build directory.
$ xargs rm < install_manifest.txt
KasoVerb is comprised of several tables, which make up the database.
English dictionary
English infinitive index
English cross reference index to Italian infinitives
English cross reference index to Spanish infinitives
Italian dictionary
Italian infinitive index
Italian cross reference index to Spanish infinitives
Italian cross reference index to English infinitives
Spanish dictionary
Spanish infinitive index
Spanish cross reference index to Italian infinitives
Spanish cross reference index to English infinitives
There are three (3) types of tables per language: (1) Dictionary, (2) Infinitive index (3) Cross reference index.
Following are the attributes of the files:
Spreadsheet programs can import data files directly. However, KasoVerb provides a CVS export software tool (kv3tocsv) to format the files for easier editing. Following, the CVS import software tool (csvtokv3) can be used to rebuild the respective database.
The dictionary table contains verb conjugation data for a specific language. The name of the file is the ‘ISO 639.2’ 3 letter language code https://www.loc.gov/standards/iso639-2/php/code_list.php followed by “kv3” file suffix. The table is sorted in lexicographical order by infinitive.
A record can be viewed as a matrix of eight (8) rows by thirty-two (32) columns. The first record contains meta data. The remaining records hold verb conjugation data.
A cell in the dictionary can contain a macro. There are three (3) types of macros: (1) subject, (2) link and (3) set.
A subject is enclosed in parenthesis, which denotes a word that is used repeatedly throughout a row. There can be only one subject per cell. A subject can not be mixed with a link or set.
``to (abate)''
A link is enclosed in brackets and shall contain a valid cell identifier. There can be multiple links per cell. The cell a link points too shall be either a subject or set.
``[D] [A]'' ``[D] would have [C]'' ``{that:if} [D] [A]''
A set is enclosed in braces. A set is used to group words such as pronouns. A group is separated by a colon. Within a group, there can be a list of synonyms. A synonym is separated by a pipe. There shall be only one set per cell. Moreover, it must be the first element. Text and link can appear after a set. However, a subject can not be put in a cell with a set. If a set appears in a row and column, it must also appear in an identical row and column in another language.
``{he:she:it}'' ``{él:ella:ello}'' ``{egli|lui:ella|lei:esso}''
The name of the file is a three (3) letter language code followed by ”inf” file suffix. The index contains a list of lexicographical sorted infinitives.
The name of the file is a three (3) letter language code followed by a three (3) letter language code suffix too which the language cross references. The first column contains the infinitive in the native language. It is then followed by up to seven (7) synonyms in the language it cross references. The index is sorted lexicographical on the first column.
The source files used to construct this manual are written in Texinfo and can be found in the repository.
<http://git.savannah.nongnu.org/cgit/kasoverb.git/tree/manual>
updated: 19 September 2020
edition: 1.0
version 0.8