KasoVerb Logo KasoVerb

KasoVerb

Introduction

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.

History

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.

Screen shot

Image of KasoVerb Application

Obtaining

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/>

Source Code

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

Building KasoVerb requires software tools and libraries to be available on your Operating System. These are described in the subsequent sections of this chapter.

Dependencies

make

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.

CMake

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

Compiler and Linker

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

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.

FLTK

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.

KasoVerb

$ 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 ..

Install

To install everything in the KasoVerb package, use the “install-all’ target.

$ make install-all

Components

There are three (3) component install types: (1) “Runtime,” (2) “Development” and (3) “Tools.”’

Runtime

Install KasoVerb binary, database and desktop files

$ make install-bin

The “Runtime” target is synonymous with the “install” target.

Development

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

Tools

Currently there are two (2) software tools: (1) kv3tocsv and (2) csvtokv3.

$ make install-tools

Post Install

Following installation, the KasoVerb desktop entry and MIME database can be updated.

$ update-desktop-database ~/.local/share/applications
$ update-mime-database ~/.local/share/mime

Uninstall

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

Database

KasoVerb is comprised of several tables, which make up the database.

Tables

eng.kv3

English dictionary

eng.inf

English infinitive index

eng.ita

English cross reference index to Italian infinitives

eng.spa

English cross reference index to Spanish infinitives

ita.kv3

Italian dictionary

ita.inf

Italian infinitive index

ita.spa

Italian cross reference index to Spanish infinitives

ita.eng

Italian cross reference index to English infinitives

spa.kv3

Spanish dictionary

spa.inf

Spanish infinitive index

spa.ita

Spanish cross reference index to Italian infinitives

spa.eng

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.

Dictionary

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.

Macros

A cell in the dictionary can contain a macro. There are three (3) types of macros: (1) subject, (2) link and (3) set.

Subject

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)''

Link

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]''

Set

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}''

Infinitive

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.

Cross reference

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.

Colophon

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