word: form synonyms from alt column
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 28 May 2020 04:51:01 +0000 (06:51 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 6 Jun 2020 01:49:20 +0000 (03:49 +0200)
Support any number of alternatives (for now all shown in small font).

tools/word.pg.sql
word.plp
writer.plp

index da22b55311246348d8832e07542511b9aa3815d0..c1aa3c811322177975a86648ede30fee404b3ccf 100644 (file)
@@ -1,5 +1,6 @@
 CREATE TABLE word (
        form       text        NOT NULL,
 CREATE TABLE word (
        form       text        NOT NULL,
+       alt        text[],
        lang       text        NOT NULL DEFAULT 'eng',
        cat        integer              REFERENCES word (id),
        ref        integer              REFERENCES word (id),
        lang       text        NOT NULL DEFAULT 'eng',
        cat        integer              REFERENCES word (id),
        ref        integer              REFERENCES word (id),
@@ -12,6 +13,7 @@ CREATE TABLE word (
 );
 
 COMMENT ON COLUMN word.form       IS 'preferred textual representation';
 );
 
 COMMENT ON COLUMN word.form       IS 'preferred textual representation';
+COMMENT ON COLUMN word.alt        IS 'alternate forms with equivalent meaning';
 COMMENT ON COLUMN word.lang       IS 'ISO 639-3 language code';
 COMMENT ON COLUMN word.cat        IS 'hierarchical classification';
 COMMENT ON COLUMN word.ref        IS 'reference to equivalent eng translation';
 COMMENT ON COLUMN word.lang       IS 'ISO 639-3 language code';
 COMMENT ON COLUMN word.cat        IS 'hierarchical classification';
 COMMENT ON COLUMN word.ref        IS 'reference to equivalent eng translation';
@@ -20,8 +22,13 @@ COMMENT ON COLUMN word.source     IS 'URI of downloaded image';
 COMMENT ON COLUMN word.thumb      IS 'ImageMagick convert options to create thumbnail from source image';
 COMMENT ON COLUMN word.wptitle    IS 'reference Wikipedia article';
 
 COMMENT ON COLUMN word.thumb      IS 'ImageMagick convert options to create thumbnail from source image';
 COMMENT ON COLUMN word.wptitle    IS 'reference Wikipedia article';
 
+CREATE OR REPLACE FUNCTION exportform(word) RETURNS text AS $$
+       SELECT array_to_string($1.form || $1.alt, '/');
+$$ LANGUAGE SQL IMMUTABLE;
+
 CREATE OR REPLACE VIEW _cat_words AS
 CREATE OR REPLACE VIEW _cat_words AS
-       SELECT * FROM word RIGHT JOIN (
-               SELECT cat id, array_agg(form ORDER BY form) forms
+       SELECT exportform(word.*) form, sub.*, word.lang, word.ref
+       FROM word RIGHT JOIN (
+               SELECT cat id, array_agg(exportform(word.*) ORDER BY form) forms
                        FROM word WHERE ref IS NULL GROUP BY cat
        ) sub USING (id);
                        FROM word WHERE ref IS NULL GROUP BY cat
        ) sub USING (id);
index 0e03f45f0301fa57a738b3f919aa0dec5bbb6c9a..d594370e2d09728ec6b9dab79c97527a811d2ddf 100644 (file)
--- a/word.plp
+++ b/word.plp
@@ -28,6 +28,9 @@ figure {
        overflow: hidden;
        padding: 1px;
 }
        overflow: hidden;
        padding: 1px;
 }
+figcaption > small {
+       display: inline-block;
+}
 
 figure:hover ~ ul figure,
 figure:hover ~ ul figcaption {
 
 figure:hover ~ ul figure,
 figure:hover ~ ul figcaption {
@@ -66,9 +69,9 @@ my %table = do 'wordlist.inc.pl' or die $@ // $!;
 
 sub showimg {
        my ($name) = @_;
 
 sub showimg {
        my ($name) = @_;
-       my ($img) = $name =~ /^([\w-]+)/;
+       my ($img) = $name =~ /^([\w -]+)/;
        $name =~ s/\w{4} [^aoeuiyc\W] [rl]?+ \K (?= [^aoeuiy\W] [rl]? [aoeuiy] \w)/&shy;/gx;
        $name =~ s/\w{4} [^aoeuiyc\W] [rl]?+ \K (?= [^aoeuiy\W] [rl]? [aoeuiy] \w)/&shy;/gx;
-       $name =~ y/_/ /;
+       $name =~ s{/(.*)}{ <small>($1)</small>}g;
        my $hidden = $name =~ s/\?$//;
        my $alt = $name;
        $name = "<q>$name</q>" if $name =~ s/\?$//;
        my $hidden = $name =~ s/\?$//;
        my $alt = $name;
        $name = "<q>$name</q>" if $name =~ s/\?$//;
index 275909b094feeae07ddd9131913aa4a898ab912e..e9f0f8d1e046855a96b03ac6a6ebda2fa9002065 100644 (file)
@@ -111,6 +111,7 @@ my @wordcols = (
        lang    => 'Language',
        cat     => 'Category',
        form    => 'Translation',
        lang    => 'Language',
        cat     => 'Category',
        form    => 'Translation',
+       alt     => 'Synonyms',
        wptitle => 'Wikipedia',
        source  => 'Image URL',
        thumb   => 'Convert options',
        wptitle => 'Wikipedia',
        source  => 'Image URL',
        thumb   => 'Convert options',