hunspellDicts: add spanish dictionaries.

This reverts commit cf4f91f1a238da953edd1d6b83d225cefe7d5b52, which
removed all of the spanish dictionaries. These dictionaries were
previously part of the “Red IRIS” project, but they are now part of the
“Recursos Linguísticos Abiertos del Español” project.

Additionally, this cleans up the implementation of all the Hunspell
dictionaries, since the supposedly internal `mkDict` function was either
overspecialized or overgeneralized. Now we don't try to abstract beyond
what makes sense to be abstracted.
This commit is contained in:
Renzo Carbonara 2017-04-07 19:02:33 +02:00
parent bce69a0b1a
commit 29e04dfdaa

View File

@ -1,30 +1,13 @@
/* hunspell dictionaries */ /* hunspell dictionaries */
{ stdenv, fetchurl, unzip }: { stdenv, fetchurl, fetchFromGitHub, unzip, coreutils, bash, which, zip }:
with stdenv.lib;
let let
mkDict = mkDict =
{ name, src, meta, readmeFile, dictFileName, ... }: { name, readmeFile, dictFileName, ... }@args:
let stdenv.mkDerivation (rec {
isFrench = hasSuffix "fr_" dictFileName; inherit name;
isItaly = hasSuffix "it_" dictFileName;
isSpanish = hasSuffix "es_" dictFileName;
isEnglish = hasSuffix "en_" dictFileName;
in
stdenv.mkDerivation rec {
inherit name src meta;
buildInputs = [ unzip ];
sourceRoot = ".";
phases = "unpackPhase installPhase" + (if isItaly then "patchPhase" else "");
unpackCmd = "unzip $src ${readmeFile} ${dictFileName}.dic ${dictFileName}.aff";
prePatch = if isItaly then ''
# Fix dic file empty lines (FS#22275)
sed '/^\/$/d' -i it_IT.dic
'' else "";
installPhase = '' installPhase = ''
# hunspell dicts # hunspell dicts
install -dm755 "$out/share/hunspell" install -dm755 "$out/share/hunspell"
@ -38,7 +21,45 @@ let
install -dm755 "$out/share/doc" install -dm755 "$out/share/doc"
install -m644 ${readmeFile} $out/share/doc/${name}.txt install -m644 ${readmeFile} $out/share/doc/${name}.txt
''; '';
}; } // args);
mkDictFromRla =
{ shortName, shortDescription, dictFileName }:
mkDict rec {
inherit dictFileName;
version = "2.2";
name = "hunspell-dict-${shortName}-rla-${version}";
readmeFile = "README.txt";
src = fetchFromGitHub {
owner = "sbosio";
repo = "rla-es";
rev = "v${version}";
sha256 = "0n9ms092k7vg7xpd3ksadxydbrizkb7js7dfxr08nbnnb9fgy0i8";
};
meta = with stdenv.lib; {
description = "Hunspell dictionary for ${shortDescription} from rla";
homepage = https://github.com/sbosio/rla-es;
license = with licenses; [ gpl3 lgpl3 mpl11 ];
maintainers = with maintainers; [ renzo ];
platforms = platforms.all;
};
phases = "unpackPhase patchPhase buildPhase installPhase";
buildInputs = [ bash coreutils unzip which zip ];
patchPhase = ''
substituteInPlace ortograf/herramientas/make_dict.sh \
--replace /bin/bash bash \
--replace /dev/stderr stderr.log
substituteInPlace ortograf/herramientas/remover_comentarios.sh \
--replace /bin/bash bash \
'';
buildPhase = ''
cd ortograf/herramientas
bash -x ./make_dict.sh -l ${dictFileName} -2
unzip ${dictFileName}.zip \
${dictFileName}.dic ${dictFileName}.aff ${readmeFile}
'';
};
mkDictFromDicollecte = mkDictFromDicollecte =
{ shortName, shortDescription, longDescription, dictFileName }: { shortName, shortDescription, longDescription, dictFileName }:
@ -59,6 +80,12 @@ let
maintainers = with maintainers; [ renzo ]; maintainers = with maintainers; [ renzo ];
platforms = platforms.all; platforms = platforms.all;
}; };
buildInputs = [ unzip ];
phases = "unpackPhase installPhase";
sourceRoot = ".";
unpackCmd = ''
unzip $src ${dictFileName}.dic ${dictFileName}.aff ${readmeFile}
'';
}; };
mkDictFromWordlist = mkDictFromWordlist =
@ -75,9 +102,15 @@ let
maintainers = with maintainers; [ renzo ]; maintainers = with maintainers; [ renzo ];
platforms = platforms.all; platforms = platforms.all;
}; };
buildInputs = [ unzip ];
phases = "unpackPhase installPhase";
sourceRoot = ".";
unpackCmd = ''
unzip $src ${dictFileName}.dic ${dictFileName}.aff ${readmeFile}
'';
}; };
mkLinguistico = mkDictFromLinguistico =
{ shortName, shortDescription, dictFileName, src }: { shortName, shortDescription, dictFileName, src }:
mkDict rec { mkDict rec {
inherit src dictFileName; inherit src dictFileName;
@ -90,6 +123,16 @@ let
maintainers = with maintainers; [ renzo ]; maintainers = with maintainers; [ renzo ];
platforms = platforms.all; platforms = platforms.all;
}; };
buildInputs = [ unzip ];
phases = "unpackPhase patchPhase installPhase";
sourceRoot = ".";
prePatch = ''
# Fix dic file empty lines (FS#22275)
sed '/^\/$/d' -i ${dictFileName}.dic
'';
unpackCmd = ''
unzip $src ${dictFileName}.dic ${dictFileName}.aff ${readmeFile}
'';
}; };
mkDictFromXuxen = mkDictFromXuxen =
@ -169,6 +212,134 @@ in {
}; };
}; };
/* SPANISH */
es-any = mkDictFromRla {
shortName = "es-any";
shortDescription = "Spanish (any variant)";
dictFileName = "es_ANY";
};
es-ar = mkDictFromRla {
shortName = "es-ar";
shortDescription = "Spanish (Argentina)";
dictFileName = "es_AR";
};
es-bo = mkDictFromRla {
shortName = "es-bo";
shortDescription = "Spanish (Bolivia)";
dictFileName = "es_BO";
};
es-cl = mkDictFromRla {
shortName = "es-cl";
shortDescription = "Spanish (Chile)";
dictFileName = "es_CL";
};
es-co = mkDictFromRla {
shortName = "es-co";
shortDescription = "Spanish (Colombia)";
dictFileName = "es_CO";
};
es-cr = mkDictFromRla {
shortName = "es-cr";
shortDescription = "Spanish (Costra Rica)";
dictFileName = "es_CR";
};
es-cu = mkDictFromRla {
shortName = "es-cu";
shortDescription = "Spanish (Cuba)";
dictFileName = "es_CU";
};
es-do = mkDictFromRla {
shortName = "es-do";
shortDescription = "Spanish (Dominican Republic)";
dictFileName = "es_DO";
};
es-ec = mkDictFromRla {
shortName = "es-ec";
shortDescription = "Spanish (Ecuador)";
dictFileName = "es_EC";
};
es-es = mkDictFromRla {
shortName = "es-es";
shortDescription = "Spanish (Spain)";
dictFileName = "es_ES";
};
es-gt = mkDictFromRla {
shortName = "es-gt";
shortDescription = "Spanish (Guatemala)";
dictFileName = "es_GT";
};
es-hn = mkDictFromRla {
shortName = "es-hn";
shortDescription = "Spanish (Honduras)";
dictFileName = "es_HN";
};
es-mx = mkDictFromRla {
shortName = "es-mx";
shortDescription = "Spanish (Mexico)";
dictFileName = "es_MX";
};
es-ni = mkDictFromRla {
shortName = "es-ni";
shortDescription = "Spanish (Nicaragua)";
dictFileName = "es_NI";
};
es-pa = mkDictFromRla {
shortName = "es-pa";
shortDescription = "Spanish (Panama)";
dictFileName = "es_PA";
};
es-pe = mkDictFromRla {
shortName = "es-pe";
shortDescription = "Spanish (Peru)";
dictFileName = "es_PE";
};
es-pr = mkDictFromRla {
shortName = "es-pr";
shortDescription = "Spanish (Puerto Rico)";
dictFileName = "es_PR";
};
es-py = mkDictFromRla {
shortName = "es-py";
shortDescription = "Spanish (Paraguay)";
dictFileName = "es_PY";
};
es-sv = mkDictFromRla {
shortName = "es-sv";
shortDescription = "Spanish (El Salvador)";
dictFileName = "es_SV";
};
es-uy = mkDictFromRla {
shortName = "es-uy";
shortDescription = "Spanish (Uruguay)";
dictFileName = "es_UY";
};
es-ve = mkDictFromRla {
shortName = "es-ve";
shortDescription = "Spanish (Venezuela)";
dictFileName = "es_VE";
};
/* FRENCH */ /* FRENCH */
fr-any = mkDictFromDicollecte { fr-any = mkDictFromDicollecte {
@ -215,7 +386,7 @@ in {
/* ITALIAN */ /* ITALIAN */
it-it = mkLinguistico rec { it-it = mkDictFromLinguistico rec {
shortName = "it-it"; shortName = "it-it";
dictFileName = "it_IT"; dictFileName = "it_IT";
shortDescription = "Hunspell dictionary for 'Italian (Italy)' from Linguistico"; shortDescription = "Hunspell dictionary for 'Italian (Italy)' from Linguistico";