-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate.js
88 lines (69 loc) · 1.61 KB
/
generate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const sqlite3 = require('sqlite3').verbose();
const colors = require('colors');
const fs = require('fs');
const path = require('path');
class Generate {
constructor() {
this.db = new sqlite3.Database('words.sqlite', (err) => {
if (err) {
this.error(err.message)
}
console.log(colors.green('Connected to words database...'));
this.fetchWords()
});
}
fetchWords() {
this.db.all(`SELECT * FROM words WHERE translation IS NOT NULL ORDER BY word`, [], (err, rows) => {
if (err) {
this.error(err.message)
}
let htmlData = ''
rows.forEach((row) => {
htmlData += this.wordHtml(row)
});
this.writeToFile(htmlData)
});
}
wordHtml(row) {
return `
<p>
<idx:entry>
<idx:orth>${row.word}</idx:orth> — ${row.translation}.
</idx:entry>
</p>
`
}
writeToFile(htmlData) {
const filePath = path.join(__dirname, '/samples/dict.html');
const vm = this
fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data){
if (err) {
this.error(err)
}
const htmlFileData = data.replace("[WORDS]", htmlData);
fs.writeFile("./dict.html", htmlFileData, function(err) {
if(err) {
vm.error(err)
}
console.log(colors.green("The file was saved..."));
vm.close()
});
});
}
close() {
this.db.close((err) => {
if (err) {
this.error(err.message)
}
console.log(colors.green('Close the database connection.'));
this.exit()
});
}
error(err) {
process.exit(console.log(colors.red(err)))
}
exit() {
process.exit(console.log(colors.green("Done..")))
}
}
return new Generate()