-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathwdk_method.rb
51 lines (42 loc) · 1.3 KB
/
wdk_method.rb
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
#encoding: utf-8
#myinsert dupliziert den Array
class Array
def myinsert(pos, el)
self.dup.insert(pos, el)
end
end
module Wadoku
#seperiert Teil vom Eintrag mit dem gegebenen Index nach dem gegebenen Regex
def sep(entry, index, regex)
entry.split("\t")[index].scan(regex).flatten
end
#filtert die Index raus
def filter_index entry
filter_regex = /(\[.+?\]|<Prior.+?>|<JLPT.+?>|<GENKI.+?>|<LangNiv.+?>|<Usage.+?>|<JWD.+?>|<Jap.+?>|<DaID.+?>|<Etym.+?>|\(<Ref.+?>\))/
entry.gsub(filter_regex, "")
end
#generiert einen Eintrag
def generate entry
filtered_entry = filter_index entry
e_array = filtered_entry.split("\t")
kana = e_array[3] ? 3 : 2
rest = e_array.values_at(0,kana)
writings = sep(filtered_entry , 1, /[^;\(\)]+/)
tres = sep(filtered_entry, 4, /(?:<TrE:){1,}(.*?)(?=>>>|>;|>\. |>\ \/)/)
#.map{|tre| tre.end_with?(">") ? tre : tre + ">"}
acc = []
writings.each do |w|
tres.each{|tre| acc = acc << rest.myinsert(1, w).myinsert(4, tre).join("\t").gsub("\t\t", "\t")}
end
return acc
end
#Datei extrahieren und in eine neue Datei schreiben
def extract(wdk_raw, wdk_new)
content = File.readlines(wdk_raw).drop(1)
new_content = content.map{|entry| generate entry}.flatten.join("\n")
file = File.new(wdk_new, "w")
file.puts new_content
file.close
end
HW_regex = /(<HW.+?: )|(>)(?!\)|“)/
end