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,
+       alt        text[],
        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.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';
@@ -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';
 
+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
-       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);
index 0e03f45f0301fa57a738b3f919aa0dec5bbb6c9a..d594370e2d09728ec6b9dab79c97527a811d2ddf 100644 (file)
--- a/word.plp
+++ b/word.plp
@@ -28,6 +28,9 @@ figure {
        overflow: hidden;
        padding: 1px;
 }
+figcaption > small {
+       display: inline-block;
+}
 
 figure:hover ~ ul figure,
 figure:hover ~ ul figcaption {
@@ -66,9 +69,9 @@ my %table = do 'wordlist.inc.pl' or die $@ // $!;
 
 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 =~ y/_/ /;
+       $name =~ s{/(.*)}{ <small>($1)</small>}g;
        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',
+       alt     => 'Synonyms',
        wptitle => 'Wikipedia',
        source  => 'Image URL',
        thumb   => 'Convert options',