lynx and hunspell
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
<PISI>
|
||||||
|
<Name>network.web</Name>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/copyleft/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
autotools.configure("--prefix=/usr \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--enable-warnings \
|
||||||
|
--enable-8bit-toupper \
|
||||||
|
--enable-externs \
|
||||||
|
--enable-cgi-links \
|
||||||
|
--enable-persistent-cookies \
|
||||||
|
--enable-prettysrc \
|
||||||
|
--enable-source-cache \
|
||||||
|
--enable-charset-choice \
|
||||||
|
--enable-default-colors \
|
||||||
|
--enable-nested-tables \
|
||||||
|
--enable-read-eta \
|
||||||
|
--with-zlib \
|
||||||
|
--enable-nls \
|
||||||
|
--enable-ipv6 \
|
||||||
|
--mandir=/usr/share/man")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
|
||||||
|
|
||||||
|
pisitools.dodoc("AUTHORS*", "AUTHORS", "CHANGES", "COPYING", "INSTALLATION","README")
|
||||||
|
|
||||||
|
pisitools.dobin("lynx")
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
--- lynx2-8-6/WWW/Library/Implementation/HTTelnet.c.pix 2006-05-30 00:44:54.000000000 +0200
|
||||||
|
+++ lynx2-8-6/WWW/Library/Implementation/HTTelnet.c 2006-11-16 17:27:19.000000000 +0100
|
||||||
|
@@ -64,6 +64,12 @@
|
||||||
|
strcmp(acc_method, "rlogin") == 0 ? rlogin :
|
||||||
|
strcmp(acc_method, "tn3270") == 0 ? tn3270 : telnet;
|
||||||
|
|
||||||
|
+ /* don't accept command line args to telnet */
|
||||||
|
+ /* notting@redhat.com, 8-25-99 */
|
||||||
|
+ for (; *host && *host =='-' ; host ++) {
|
||||||
|
+ *host = '\0';
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Modified to allow for odd chars in a username only if exists.
|
||||||
|
* 05-28-94 Lynx 2-3-1 Garrett Arch Blythe
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- lynx2-8-6/samples/lynx.lss.pix 2006-09-19 02:28:28.000000000 +0200
|
||||||
|
+++ lynx2-8-6/samples/lynx.lss 2006-11-16 17:23:21.000000000 +0100
|
||||||
|
@@ -34,7 +34,7 @@
|
||||||
|
sup: bold: yellow
|
||||||
|
sub: dim: gray
|
||||||
|
li: normal: magenta
|
||||||
|
-code: normal: cyan
|
||||||
|
+code: normal: white
|
||||||
|
cite: normal: cyan
|
||||||
|
|
||||||
|
table: normal: brightcyan
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
--- lynx2-8-7/userdefs.h.orig 2009-06-07 02:30:35.000000000 +0200
|
||||||
|
+++ lynx2-8-7/userdefs.h 2010-01-03 14:41:42.000000000 +0100
|
||||||
|
@@ -115,8 +115,8 @@
|
||||||
|
* Mappings in these global and personal files override any SUFFIX
|
||||||
|
* definitions in lynx.cfg and built-in defaults from src/HTInit.c.
|
||||||
|
*/
|
||||||
|
-#define GLOBAL_EXTENSION_MAP "Lynx_Dir:mime.types"
|
||||||
|
-#define PERSONAL_EXTENSION_MAP "mime.types"
|
||||||
|
+#define GLOBAL_EXTENSION_MAP "/etc/mime.types"
|
||||||
|
+#define PERSONAL_EXTENSION_MAP ".mime.types"
|
||||||
|
|
||||||
|
/**************************
|
||||||
|
* The MAILCAP file allows you to map file MIME types to
|
||||||
|
@@ -125,7 +125,7 @@
|
||||||
|
* Mappings in these global and personal files override any VIEWER
|
||||||
|
* definitions in lynx.cfg and built-in defaults from src/HTInit.c.
|
||||||
|
*/
|
||||||
|
-#define GLOBAL_MAILCAP "Lynx_Dir:mailcap"
|
||||||
|
+#define GLOBAL_MAILCAP "/etc/mailcap"
|
||||||
|
#define PERSONAL_MAILCAP ".mailcap"
|
||||||
|
|
||||||
|
/**************************
|
||||||
|
--- lynx2-8-7/lynx.cfg.orig 2009-06-24 01:53:58.000000000 +0200
|
||||||
|
+++ lynx2-8-7/lynx.cfg 2010-01-03 14:41:42.000000000 +0100
|
||||||
|
@@ -12,7 +12,7 @@
|
||||||
|
# Definition pairs are of the form VARIABLE:DEFINITION
|
||||||
|
# NO spaces are allowed between the pair items.
|
||||||
|
#
|
||||||
|
-# If you do not have write access to /usr/local/lib you may change
|
||||||
|
+# If you do not have write access to /usr/bin you may change
|
||||||
|
# the default location of this file in the userdefs.h file and recompile,
|
||||||
|
# or specify its location on the command line with the "-cfg"
|
||||||
|
# command line option.
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
--- lynx2-8-7/src/LYMain.c.orig 2009-07-06 01:52:33.000000000 +0200
|
||||||
|
+++ lynx2-8-7/src/LYMain.c 2010-01-03 14:58:31.000000000 +0100
|
||||||
|
@@ -967,6 +967,7 @@
|
||||||
|
struct stat dir_info;
|
||||||
|
char filename[LY_MAXPATH];
|
||||||
|
BOOL LYGetStdinArgs = FALSE;
|
||||||
|
+ struct stat st;
|
||||||
|
|
||||||
|
#ifdef _WINDOWS
|
||||||
|
WSADATA WSAData;
|
||||||
|
@@ -1209,6 +1210,21 @@
|
||||||
|
#endif
|
||||||
|
LYTildeExpand(&lynx_temp_space, TRUE);
|
||||||
|
|
||||||
|
+
|
||||||
|
+ if (stat(lynx_temp_space, &st) < 0) {
|
||||||
|
+ if (errno = ENOENT) {
|
||||||
|
+ printf("Creating dir %s\n", lynx_temp_space);
|
||||||
|
+ mkdir(lynx_temp_space, 0700);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (stat(lynx_temp_space, &st) < 0) {
|
||||||
|
+ if (errno = ENOENT) {
|
||||||
|
+ printf("Can't create %s, let's try /tmp/\n", lynx_temp_space);
|
||||||
|
+ lynx_temp_space = "/tmp/";
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if ((cp = strstr(lynx_temp_space, "$USER")) != NULL) {
|
||||||
|
char *cp1;
|
||||||
|
|
||||||
|
--- lynx2-8-7/userdefs.h.orig 2010-01-03 14:58:31.000000000 +0100
|
||||||
|
+++ lynx2-8-7/userdefs.h 2010-01-03 14:58:31.000000000 +0100
|
||||||
|
@@ -354,7 +354,7 @@
|
||||||
|
* the "TMPDIR" (unix), or "TEMP" or "TMP" (Windows,DOS,OS/2)
|
||||||
|
* variable.
|
||||||
|
*/
|
||||||
|
-#define TEMP_SPACE "/tmp/"
|
||||||
|
+#define TEMP_SPACE "~/tmp/"
|
||||||
|
|
||||||
|
/********************************
|
||||||
|
* Comment this line out to disable code that implements command logging
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>lynx</Name>
|
||||||
|
<Homepage>http://lynx.isc.org/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPL</License>
|
||||||
|
<PartOf>network.web</PartOf>
|
||||||
|
<IsA>app:gui</IsA>
|
||||||
|
<Summary>Lynx is the text web browser.</Summary>
|
||||||
|
<Description>This is the top level page for the Lynx software distribution site hosted by the Internet Software Consortium.</Description>
|
||||||
|
<Archive sha1sum="65bbf95627c88723bbb5880155e5fe01c2753d0c" type="tarbz2">http://lynx.isc.org/lynx2.8.8/lynx2.8.8.tar.bz2</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>ncurses-devel</Dependency>
|
||||||
|
<Dependency>openssl-devel</Dependency>
|
||||||
|
<Dependency>gettext-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<Patch level="1">lynx2-8-6-don-t-accept-command-line-args-to-telnet.patch</Patch>
|
||||||
|
<Patch level="1">lynx2-8-6-fix-ugly-color.patch</Patch>
|
||||||
|
<Patch level="1">lynx2-8-7-adapt-to-modern-file-localizations.patch</Patch>
|
||||||
|
<Patch level="1">lynx2-8-7-tmp_dir.patch</Patch>
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>lynx</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>ncurses</Dependency>
|
||||||
|
<Dependency>openssl</Dependency>
|
||||||
|
<Dependency>gettext</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
|
||||||
|
<Files>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="data">/usr/share</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2014-05-29</Date>
|
||||||
|
<Version>2.8.8</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Stefan Gronewold(groni)</Name>
|
||||||
|
<Email>groni@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2014-03-09</Date>
|
||||||
|
<Version>2.8.7</Version>
|
||||||
|
<Comment>Rebuild.</Comment>
|
||||||
|
<Name>Kamil Atlı</Name>
|
||||||
|
<Email>suvarice@gmail.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-07-26</Date>
|
||||||
|
<Version>2.8.7</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>Lynx</Name>
|
||||||
|
<Summary xml:lang="en">Lynx is the text web browser.</Summary>
|
||||||
|
<Summary xml:lang="pl">Przeglądarka WWW z interfejsem tekstowym</Summary>
|
||||||
|
<Description xml:lang="en">This is the top level page for the Lynx software distribution site hosted by the Internet Software Consortium.</Description>
|
||||||
|
<Description xml:lang="pl">Lynx – przeglądarka internetowa pracująca w trybie tekstowym.</Description>
|
||||||
|
</Source>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<PISI>
|
||||||
|
<Name>office.spellcheck</Name>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
shelltools.export("AUTOPOINT", "true")
|
||||||
|
autotools.autoreconf("-fi")
|
||||||
|
autotools.configure("--disable-static \
|
||||||
|
--with-ui \
|
||||||
|
--with-readline \
|
||||||
|
--enable-nls")
|
||||||
|
pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
|
||||||
|
for f in ("affixcompress", "makealias", "wordforms"):
|
||||||
|
pisitools.dobin("src/tools/%s" % f)
|
||||||
|
|
||||||
|
pisitools.dodoc("ABOUT-NLS", "AUTHORS*", "BUGS", "COPYING*", "NEWS", "README*", "THANKS", "TODO")
|
||||||
@@ -0,0 +1,472 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
# -*- coding: iso-8859-1 -*-
|
||||||
|
# $Id: ispellaff2myspell,v 1.29 2005/07/04 12:21:55 agmartin Exp $
|
||||||
|
#
|
||||||
|
# (C) 2002-2005 Agustin Martin Domingo <agustin.martin@hispalinux.es>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
|
||||||
|
sub usage {
|
||||||
|
print "ispellaff2myspell: A program to convert ispell affix tables to myspell format
|
||||||
|
(C) 2002-2005 Agustin Martin Domingo <agustin.martin\@hispalinux.es> License: GPL
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
ispellaff2myspell [options] <affixfile>
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--affixfile=s Affix file
|
||||||
|
--bylocale Use current locale setup for upper/lowercase
|
||||||
|
conversion
|
||||||
|
--charset=s Use specified charset for upper/lowercase
|
||||||
|
conversion (defaults to latin1)
|
||||||
|
--debug Print debugging info
|
||||||
|
--extraflags Allow some non alphabetic flags
|
||||||
|
--lowercase=s Lowercase string
|
||||||
|
--myheader=s Header file
|
||||||
|
--printcomments Print commented lines in output
|
||||||
|
--replacements=s Replacements file
|
||||||
|
--split=i Split flags with more that i entries
|
||||||
|
--uppercase=s Uppercase string
|
||||||
|
--wordlist=s Still unused
|
||||||
|
|
||||||
|
Currently allowed valued for charset are: latin1, latin2, latin3
|
||||||
|
|
||||||
|
This script does not create the dict file. Something like
|
||||||
|
|
||||||
|
( echo `cat mydict.words+ | wc -l`; cat mydict.words+ ) > mydict.dict
|
||||||
|
|
||||||
|
should do the work, with mydict.words+ being the ispell munched wordlist
|
||||||
|
|
||||||
|
";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub debugprint {
|
||||||
|
if ( $debug ){
|
||||||
|
print STDERR "@_";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub shipoutflag{
|
||||||
|
my $flag_entries=scalar @flag_array;
|
||||||
|
|
||||||
|
if ( $flag_entries != 0 ){
|
||||||
|
if ( $split ){
|
||||||
|
while ( @flag_array ){
|
||||||
|
my @flag_subarray=splice(@flag_array,0,$split);
|
||||||
|
my $subflag_entries=scalar @flag_subarray;
|
||||||
|
if ( scalar @flag_array ){
|
||||||
|
print "$myaffix $flagname $flagcombine $subflag_entries S\n";
|
||||||
|
} else {
|
||||||
|
print "$myaffix $flagname $flagcombine $subflag_entries\n";
|
||||||
|
}
|
||||||
|
print join("\n",@flag_subarray);
|
||||||
|
print "\n\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print "$myaffix $flagname $flagcombine $flag_entries\n";
|
||||||
|
print join("\n",@flag_array);
|
||||||
|
print "\n\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@flag_array=();
|
||||||
|
$flagname='';
|
||||||
|
$flagcombine='';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mylc{
|
||||||
|
my $inputstring=shift;
|
||||||
|
my $outputstring;
|
||||||
|
|
||||||
|
if ( $bylocale ){
|
||||||
|
{
|
||||||
|
use locale;
|
||||||
|
$outputstring = lc $inputstring;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ( $charset eq "latin0" ){
|
||||||
|
$lowercase='a-z珀矣粤肄蓍裨跋鈿韵鴦��巐鄕�秀�';
|
||||||
|
$uppercase='A-Z請唾津毒班碧麺力佰厶壞嶷掣桀毳痔�';
|
||||||
|
} elsif ( $charset eq "latin1" ){
|
||||||
|
$lowercase='a-z珀矣粤肄蓍裨跋鈿韵鴦��巐鄕�';
|
||||||
|
$uppercase='A-Z請唾津毒班碧麺力佰厶壞嶷掣桀毳';
|
||||||
|
} elsif ( $charset eq "latin2" ){
|
||||||
|
$lowercase='a-z嘘偽杭纂梢珀矣粤肄蓍裨跋鈿韵鴦��巐鄕�';
|
||||||
|
$uppercase='A-Z。ウ���請唾津毒班碧麺力佰厶壞嶷掣桀毳';
|
||||||
|
} elsif ( $charset eq "latin3" ){
|
||||||
|
$lowercase='a-z蔚杭纂逗痰粤肄蓍裨跋鈿髓齡��巐鄕�';
|
||||||
|
$uppercase='A-Z・���疎津毒班碧麺力冫嘖孛忤掣桀毳';
|
||||||
|
# } elsif ( $charset eq "other_charset" ){
|
||||||
|
# die "latin2 still unimplemented";
|
||||||
|
} else {
|
||||||
|
if ( not $lowercase and not $uppercase ){
|
||||||
|
die "Unsupported charset [$charset]
|
||||||
|
|
||||||
|
use explicitely --lowercase=string and --uppercase=string
|
||||||
|
options. Remember that both string must match exactly, but
|
||||||
|
case changed.
|
||||||
|
";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$outputstring=$inputstring;
|
||||||
|
eval "\$outputstring=~tr/$uppercase/$lowercase/";
|
||||||
|
}
|
||||||
|
return $outputstring;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub validate_flag (){
|
||||||
|
my $flag = shift;
|
||||||
|
if ($flag=~m/[a-zA-Z]+/){
|
||||||
|
return $flag;
|
||||||
|
} elsif ( $hasextraflags ){
|
||||||
|
foreach ( keys %theextraflags ){
|
||||||
|
if ($flag =~ m/^$_/){
|
||||||
|
$flag =~ s/^$_//;
|
||||||
|
return $flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub process_replacements{
|
||||||
|
my $file = shift;
|
||||||
|
my @replaces = ();
|
||||||
|
|
||||||
|
open (REPLACE,"< $file") ||
|
||||||
|
die "Error: Could not open replacements file: $file\n";
|
||||||
|
while (<REPLACE>){
|
||||||
|
next unless m/^REP[\s\t]*\D.*/;
|
||||||
|
next if m/^REP\s+[0-9]+/;
|
||||||
|
s/\015\012//;
|
||||||
|
s/\015//;
|
||||||
|
chomp;
|
||||||
|
push @replaces, $_;
|
||||||
|
}
|
||||||
|
close REPLACE;
|
||||||
|
my $number = scalar @replaces;
|
||||||
|
print "REP $number\n";
|
||||||
|
foreach ( @replaces ){
|
||||||
|
print $_ . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
# Now the progran start, after the functions are defined
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
# Initializing option values
|
||||||
|
$affixfile = '';
|
||||||
|
$bylocale = '';
|
||||||
|
$charset = '';
|
||||||
|
$debug = '';
|
||||||
|
$lowercase = '';
|
||||||
|
$myheader = '';
|
||||||
|
$printcomments = '';
|
||||||
|
$replacements = '';
|
||||||
|
$split = '';
|
||||||
|
$uppercase = '';
|
||||||
|
$wordlist = '';
|
||||||
|
$hasextraflags = '';
|
||||||
|
@flag_array = ();
|
||||||
|
%theextraflags = ();
|
||||||
|
# Initializing root values
|
||||||
|
$rootremove = "0";
|
||||||
|
$rootname = '';
|
||||||
|
$addtoroot = '';
|
||||||
|
$comment = '';
|
||||||
|
# Initializing flag values
|
||||||
|
$flagname = '';
|
||||||
|
$flagcombine = '';
|
||||||
|
$inflags = '';
|
||||||
|
|
||||||
|
GetOptions ('affixfile=s' => \$affixfile,
|
||||||
|
'bylocale' => \$bylocale,
|
||||||
|
'charset=s' => \$charset,
|
||||||
|
'debug' => \$debug,
|
||||||
|
'extraflags:s' => sub {
|
||||||
|
$hasextraflags = 1;
|
||||||
|
shift;
|
||||||
|
$theflag = shift;
|
||||||
|
$theextraflags{$theflag}++ if $theflag},
|
||||||
|
'lowercase=s' => \$lowercase,
|
||||||
|
'myheader=s' => \$myheader,
|
||||||
|
'printcomments' => \$printcomments,
|
||||||
|
'replacements=s'=> \$replacements,
|
||||||
|
'split=i' => \$split,
|
||||||
|
'uppercase=s' => \$uppercase,
|
||||||
|
'wordlist=s' => \$wordlist) or usage;
|
||||||
|
|
||||||
|
if ( not $affixfile ){
|
||||||
|
$affixfile=shift or usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $charset and ( $lowercase or $uppercase )){
|
||||||
|
die "Error: charset and lowercase/uppercase options
|
||||||
|
are incompatible. Use either charset or lowercase/uppercase options to
|
||||||
|
specify the patterns
|
||||||
|
"
|
||||||
|
} elsif ( not $lowercase and not $uppercase and not $charset ){
|
||||||
|
$charset="latin1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( scalar(keys %theextraflags) == 0 && $hasextraflags ){
|
||||||
|
$theextraflags{"\\\\"}++;
|
||||||
|
}
|
||||||
|
|
||||||
|
debugprint "$affixfile $charset";
|
||||||
|
|
||||||
|
open (AFFIXFILE,"< $affixfile") ||
|
||||||
|
die "Error: Could not open affix file: $affixfile";
|
||||||
|
|
||||||
|
if ( $myheader ){
|
||||||
|
my $myspell_header=`cat $myheader`;
|
||||||
|
print $myspell_header . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
while (<AFFIXFILE>){
|
||||||
|
chomp;
|
||||||
|
if (/^\s*\#.*/){
|
||||||
|
debugprint "Ignoring line $.\n";
|
||||||
|
print "$_\n" if $printcomments;
|
||||||
|
} elsif (/^\s*$/){
|
||||||
|
debugprint "Ignoring line $.\n";
|
||||||
|
} elsif (/^\s*prefixes/){
|
||||||
|
debugprint "Prefixes starting in line $.\n";
|
||||||
|
$affix="PFX";
|
||||||
|
} elsif (/^\s*suffixes/){
|
||||||
|
debugprint "Suffixes starting in line $.\n";
|
||||||
|
$affix="SFX";
|
||||||
|
} elsif (/^[\s\t]*flag.*/){
|
||||||
|
next if not $affix; # In case we are still in the preamble
|
||||||
|
shipoutflag if $inflags;
|
||||||
|
$inflags="yes";
|
||||||
|
s/^[\s\t]*flag[\s\t]*//;
|
||||||
|
s/[\s\t]*:.*$//;
|
||||||
|
debugprint "Found flag $_ in line $.\n";
|
||||||
|
|
||||||
|
if (/\*/){
|
||||||
|
s/[\*\s]//g;
|
||||||
|
$flagcombine="Y";
|
||||||
|
debugprint "Flag renamed to $_ with combine=$flagcombine\n";
|
||||||
|
} else {
|
||||||
|
$flagcombine="N";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $flagname = &validate_flag($_) ){
|
||||||
|
$myaffix = $affix;
|
||||||
|
} else {
|
||||||
|
$myaffix = "\# $affix";
|
||||||
|
$flagname = $_;
|
||||||
|
print STDERR "Ignoring invalid flag $flagname in line $.\n";
|
||||||
|
}
|
||||||
|
} elsif ( $affix and $inflags ) {
|
||||||
|
($rootname,@comments) = split('#',$_);
|
||||||
|
$comment = '# ' . join('#',@comments);
|
||||||
|
|
||||||
|
$rootname =~ s/\s*//g;
|
||||||
|
$rootname = mylc $rootname;
|
||||||
|
($rootname,$addtoroot) = split('>',$rootname);
|
||||||
|
|
||||||
|
if ( $addtoroot =~ s/^\-//g ){
|
||||||
|
($rootremove,$addtoroot) = split(',',$addtoroot);
|
||||||
|
$addtoroot = "0" unless $addtoroot;
|
||||||
|
$addtoroot = "0" if ( $addtoroot eq "-");
|
||||||
|
} else {
|
||||||
|
$rootremove = "0";
|
||||||
|
}
|
||||||
|
$addtoroot =~ s/\\\-/\-/g; # prefix ANTI\- to anti-
|
||||||
|
|
||||||
|
if ( $rootname eq '.' && $rootremove ne "0" ){
|
||||||
|
$rootname = $rootremove;
|
||||||
|
}
|
||||||
|
|
||||||
|
debugprint "$rootname, $addtoroot, $rootremove\n";
|
||||||
|
if ( $printcomments ){
|
||||||
|
$affix_line=sprintf("%s %s %-5s %-11s %-24s %s",
|
||||||
|
$myaffix, $flagname, $rootremove,
|
||||||
|
$addtoroot, $rootname, $comment);
|
||||||
|
} else {
|
||||||
|
$affix_line=sprintf("%s %s %-5s %-11s %s",
|
||||||
|
$myaffix, $flagname, $rootremove,
|
||||||
|
$addtoroot, $rootname);
|
||||||
|
}
|
||||||
|
$rootremove = "0";
|
||||||
|
$rootname = '';
|
||||||
|
$addtoroot = '';
|
||||||
|
$comment = '';
|
||||||
|
@comments = ();
|
||||||
|
push @flag_array,$affix_line;
|
||||||
|
debugprint "$affix_line\n";
|
||||||
|
} else {
|
||||||
|
#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shipoutflag;
|
||||||
|
|
||||||
|
close AFFIXFILE;
|
||||||
|
|
||||||
|
if ( $replacements ){
|
||||||
|
&process_replacements($replacements);
|
||||||
|
}
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
B<ispellaff2myspell> - A program to convert ispell affix tables to myspell format.
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
ispellaff2myspell [options] <affixfile> --myheader your_header
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
--affixfile=s Affix file
|
||||||
|
--bylocale Use current locale setup for upper/lowercase
|
||||||
|
conversion
|
||||||
|
--charset=s Use specified charset for upper/lowercase
|
||||||
|
conversion (defaults to latin1)
|
||||||
|
--debug Print debugging info
|
||||||
|
--extraflags=s Allow some non alphabetic flags
|
||||||
|
--lowercase=s Lowercase string
|
||||||
|
--myheader=s Header file
|
||||||
|
--printcomments Print commented lines in output
|
||||||
|
--replacements=s Replacements file
|
||||||
|
--split=i Split flags with more that i entries
|
||||||
|
--uppercase=s Uppercase string
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
B<ispellaff2myspell> is a script that will convert ispell affix tables
|
||||||
|
to myspell format in a more or less successful way.
|
||||||
|
|
||||||
|
This script does not create the dict file. Something like
|
||||||
|
|
||||||
|
( echo `cat mydict.words+ | wc -l`; cat mydict.words+ ) > mydict.dict
|
||||||
|
|
||||||
|
should do the work, with mydict.words+ being the munched wordlist
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 8
|
||||||
|
|
||||||
|
=item B<--affixfile=s>
|
||||||
|
|
||||||
|
Affix file. You can put it directly in the command line.
|
||||||
|
|
||||||
|
=item B<--bylocale>
|
||||||
|
|
||||||
|
Use current locale setup for upper/lowercase conversion. Make sure
|
||||||
|
that the selected locale match the dictionary one, or you might get
|
||||||
|
into trouble.
|
||||||
|
|
||||||
|
=item B<--charset=s>
|
||||||
|
|
||||||
|
Use specified charset for upper/lowercase conversion (defaults to latin1).
|
||||||
|
Currently allowed values for charset are: latin0, latin1, latin2, latin3.
|
||||||
|
|
||||||
|
=item B<--debug>
|
||||||
|
|
||||||
|
Print some debugging info.
|
||||||
|
|
||||||
|
=item B<--extraflags:s>
|
||||||
|
|
||||||
|
Allows some non alphabetic flags.
|
||||||
|
|
||||||
|
When invoked with no value the supported flags are currently those
|
||||||
|
corresponding to chars represented with the escape char B<\> as
|
||||||
|
first char. B<\> will be stripped.
|
||||||
|
|
||||||
|
When given with the flag prefix will allow that flag and strip the
|
||||||
|
given prefix. Be careful when giving the prefix to properly escape chars,
|
||||||
|
e.g. you will need B<-e "\\\\"> or B<-e '\\'> for flags like B<\[> to be stripped to
|
||||||
|
B<[>. Otherwise you might even get errors. Use B<-e "^"> to allow all
|
||||||
|
flags and pass them unmodified.
|
||||||
|
|
||||||
|
You will need a call to -e for each flag type, e.g.,
|
||||||
|
B<-e "\\\\" -e "~\\\\"> (or B<-e '\\' -e '~\\'>).
|
||||||
|
|
||||||
|
When a prefix is explicitely set, the default value (anything starting by B<\>)
|
||||||
|
is disabled and you need to enable it explicitely as in previous example.
|
||||||
|
|
||||||
|
=item B<--lowercase=s>
|
||||||
|
|
||||||
|
Lowercase string. Manually set the string of lowercase chars. This
|
||||||
|
requires B<--uppercase> having exactly that string but uppercase.
|
||||||
|
|
||||||
|
=item B<--myheader=s>
|
||||||
|
|
||||||
|
Header file. The myspell aff header. You need to write it
|
||||||
|
manually. This can contain everything you want to be before the affix table
|
||||||
|
|
||||||
|
=item B<--printcomments>
|
||||||
|
|
||||||
|
Print commented lines in output.
|
||||||
|
|
||||||
|
=item B<--replacements=file>
|
||||||
|
|
||||||
|
Add a pre-defined replacements table taken from 'file' to the .aff file.
|
||||||
|
Will skip lines not beginning with REP, and set the replacements number
|
||||||
|
appropriately.
|
||||||
|
|
||||||
|
=item B<--split=i>
|
||||||
|
|
||||||
|
Split flags with more that i entries. This can be of interest for flags
|
||||||
|
having a lot of entries. Will split the flag in chunks containing B<i>
|
||||||
|
entries.
|
||||||
|
|
||||||
|
=item B<--uppercase=s>
|
||||||
|
|
||||||
|
Uppercase string. Manually set the sring of uppercase chars. This
|
||||||
|
requires B<--lowercase> having exactly that string but lowercase.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
If your encoding is currently unsupported you can send me a file with
|
||||||
|
the two strings of lower and uppercase chars. Note that they must match
|
||||||
|
exactly but case changed. It will look something like
|
||||||
|
|
||||||
|
$lowercase='a-z珀矣粤肄蓍裨跋鈿韵鴦��巐鄕�';
|
||||||
|
$uppercase='A-Z請唾津毒班碧麺力佰厶壞嶷掣桀毳';
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
The OpenOffice.org Lingucomponent Project home page
|
||||||
|
|
||||||
|
L<http://lingucomponent.openoffice.org/index.html>
|
||||||
|
|
||||||
|
and the document
|
||||||
|
|
||||||
|
L<http://lingucomponent.openoffice.org/affix.readme>
|
||||||
|
|
||||||
|
that provides information about the basics of the myspell affix file format.
|
||||||
|
|
||||||
|
You can also take a look at
|
||||||
|
|
||||||
|
/usr/share/doc/libmyspell-dev/affix.readme.gz
|
||||||
|
/usr/share/doc/libmyspell-dev/README.compoundwords
|
||||||
|
/usr/share/doc/libmyspell-dev/README.replacetable
|
||||||
|
|
||||||
|
in your Debian system.
|
||||||
|
|
||||||
|
=head1 AUTHORS
|
||||||
|
|
||||||
|
Agustin Martin <agustin.martin@hispalinux.es>
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# (C) 2008 Caolán McNamara <caolanm@redhat.com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
# This creates a LANG_TERRITORY .aff & .dic from a wordlist.
|
||||||
|
# It is only a simple wordlist spellchecking dictionary output, no
|
||||||
|
# knowledge of language rules can be extrapolated to shrink the
|
||||||
|
# wordlist or provide .aff rules for extending wordstems
|
||||||
|
|
||||||
|
if [ $# -lt 2 ]; then
|
||||||
|
echo "Usage: wordlist2hunspell wordlist_file locale"
|
||||||
|
echo "e.g. wordlist2hunspell breton.words br_FR to create br_FR.dic and br_FR.aff in cwd"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export LANG=$2.utf8
|
||||||
|
echo "# A basic .aff for a raw wordlist, created through wordlist2hunspell" > $2.aff
|
||||||
|
echo SET UTF-8 >> $2.aff
|
||||||
|
#see https://bugzilla.redhat.com/show_bug.cgi?id=462184 for the "C" hacks
|
||||||
|
echo TRY `sed 's/./&\n/g' $1 | sed '/^$/d' | LC_ALL=C sort -n | LC_ALL=C uniq -c | LC_ALL=C sort -rn | tr -s ' ' | cut -d ' ' -f 3 | tr -d '\n'` >> $2.aff
|
||||||
|
cat $1 | sed '/^$/d' | wc -l > $2.dic
|
||||||
|
LC_ALL=C sort $1 | sed '/^$/d' >> $2.dic
|
||||||
|
|
||||||
|
echo Basic $2.dic and $2.aff created
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>hunspell</Name>
|
||||||
|
<Homepage>http://hunspell.sourceforge.net/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>MPL-1.1</License>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<License>LGPLv2.1</License>
|
||||||
|
<IsA>library</IsA>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<Summary>An improved spell checker</Summary>
|
||||||
|
<Description>hunspell spell checker is an improved replacement for myspell in Openoffice.org. It is also used in Firefox and Thunderbird as spell checker.</Description>
|
||||||
|
<Archive sha1sum="219b20f305d6690f666ff3864a16e4674908a553" type="targz">mirrors://sourceforge/hunspell/hunspell-1.3.3.tar.gz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>ncurses-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<!-- <Patch>hunspell-1.2.2-renameexes.patch</Patch> -->
|
||||||
|
<!-- <Patch level="1">15_OOo_paths.patch</Patch> -->
|
||||||
|
<!-- <Patch level="1">ubuntu_affix.patch</Patch> -->
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>hunspell</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>ncurses</Dependency>
|
||||||
|
<Dependency>libgcc</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="localedata">/usr/share/locale</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="man">/usr/share/doc</Path>
|
||||||
|
</Files>
|
||||||
|
<AdditionalFiles>
|
||||||
|
<AdditionalFile target="/usr/bin/ispellaff2myspell" permission="0755" owner="root">ispellaff2myspell</AdditionalFile>
|
||||||
|
<AdditionalFile target="/usr/bin/wordlist2hunspell" permission="0755" owner="root">wordlist2hunspell</AdditionalFile>
|
||||||
|
</AdditionalFiles>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>hunspell-devel</Name>
|
||||||
|
<Summary>Development files for hunspell</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">hunspell</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig</Path>
|
||||||
|
<Path fileType="library">/usr/lib/*.a</Path>
|
||||||
|
<Path fileType="man">/usr/share/man/man3</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="4">
|
||||||
|
<Date>2014-07-10</Date>
|
||||||
|
<Version>1.3.3</Version>
|
||||||
|
<Comment>Version Bump.</Comment>
|
||||||
|
<Name>Vedat Demir</Name>
|
||||||
|
<Email>vedat@pisilinux.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2014-05-25</Date>
|
||||||
|
<Version>1.3.2</Version>
|
||||||
|
<Comment>Rebuild</Comment>
|
||||||
|
<Name>Alihan Öztürk</Name>
|
||||||
|
<Email>alihan@pisilinux.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2014-01-26</Date>
|
||||||
|
<Version>1.3.2</Version>
|
||||||
|
<Comment>Rebuild and some fixes</Comment>
|
||||||
|
<Name>Alihan Öztürk</Name>
|
||||||
|
<Email>alihan@pisilinux.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-09-11</Date>
|
||||||
|
<Version>1.3.2</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>Yusuf Aydemir</Name>
|
||||||
|
<Email>yusuf.aydemir@istambul.com</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>hunspell</Name>
|
||||||
|
<Summary xml:lang="tr">Gelişmiş imla denetleyici</Summary>
|
||||||
|
<Description xml:lang="tr">hunspell, OpenOffice.org'daki myspell yerine kullanılabilen gelişmiş bir imla denetleyicidir. Aynı zamanda, Firefox ve Thunderbird'de imla denetleyici olarak kullanılmaktadır.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>hunspell-devel</Name>
|
||||||
|
<Summary xml:lang="tr">hunspell için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
Reference in New Issue
Block a user