UPDATE: $(download)
$(call cmdsave,git log -1 --date=short --pretty="%ad %s")
-word: word/put.min.js data/wordlist.en.json data/wordlist.nl.json data/wordlist.ru.json data/wordpairs.json
+word: word/put.min.js data/wordlist.inc.pl data/wordlist.en.json data/wordlist.nl.json data/wordlist.ru.json data/wordpairs.json
word/put.js: $(download)
tools/wget-ifmodified https://github.com/kriszyp/put-selector/raw/master/put.js $@
@[ -e $@ ] || date -Is >$@
@perl -ni -I. -MShiar_Sheet::DB -E 'say (Shiar_Sheet::DB->connect->select(word => "max(updated)", \["updated>?", $$_])->list or exit 1)' $@ || true
-data/wordlist.en.inc.pl: tools/mkwordlist data/wordlist.version.txt
+data/wordlist.inc.pl: tools/mkwordlist data/wordlist.version.txt
$(call cmdsave,$<)
data/wordlist.%.inc.pl: tools/mkwordlist data/wordlist.version.txt
$(call cmdsave,$< $*)
my %rows;
if (my $lang = shift @ARGV) {
my %filter = (lang => $lang);
- my $cols = "ref, id, prio, array_to_string(form || alt, '/')";
+ my $cols = "ref, array_to_string(form || alt, '/'), prio, id, cat";
%rows = $db->select(_word_ref => $cols, \%filter)->map_arrays;
say pp \%rows
=~ s/\\x\{([0-9A-F]+)\}/chr hex $1/ger;
<(common.inc.plp)><:
our $lang = $get{lang} || 'en';
-our $wordlistbase = "data/wordlist.$lang";
+our $wordlistbase = "data/wordlist";
if ($Request and $Request =~ m{\A([^/]+)}) {
my $page = "word/$1.plp";
utf8::downgrade($page); # unicode filename breaks contents encoding
if (-e $page) {
+ $wordlistbase .= ".$lang";
Include $page;
exit;
}
next() {
let word = this.words.shift();
let form = put(this.form,
- '+img[src=$]+ul', `/data/word/en/${word[0]}.jpg`,
+ '+img[src=$]+ul', `/data/word/en/${word[2]}.jpg`,
);
- let answers = [word[2], this.words[0][2], this.words[1][2], this.words[2][2]]
+ let answers = [word[0], this.words[0][0], this.words[1][0], this.words[2][0]]
.shuffle()
answers.forEach(suggest => {
let label = suggest.replace(/\/.*/, '');
let option = put(form, 'li', label, {onclick: () => {
- if (suggest != word[2]) {
+ if (suggest != word[0]) {
// incorrect
put(option, '.wrong');
return;
this.question.innerHTML = '';
put(this.question,
- '[data-id=$] img[src=$]', word[0],
- `/data/word/en/${word[0]}.jpg`
+ '[data-id=$] img[src=$]', word[2],
+ `/data/word/en/${word[2]}.jpg`
);
}
let answers = put(this.form, 'ul');
this.words
.forEach(answer => {
- let label = answer[2].replace(/\/.*/, ''); // primary form
+ let label = answer[0].replace(/\/.*/, ''); // primary form
put(answers, 'li[data-id=$][onclick=""]',
- answer[0], label, {onclick: e => this.verify(e)}
+ answer[2], label, {onclick: e => this.verify(e)}
)
});
this.words.shuffle();