-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path_dom-readers.js
108 lines (87 loc) · 2.32 KB
/
_dom-readers.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
var domReadersFunctions = {
readAnchorContent: readAnchorContent,
readBangHint: readBangHint,
readBody: readBody,
readClassNameElements: readClassNameElements,
readClozeSpans: readClozeSpans,
readFirstArticle: readFirstArticle,
readHintReader: readHintReader,
readMain: readMain,
readTagContents: readTagContents,
readWords: readWords,
readElement: readElement,
};
define(function(readers){ return domReadersFunctions; });
function readWords(ids){
var seperator = ",";
var wordsString = readIdsInnerHtml(ids, seperator);
return wordsString.split(seperator).filter(Boolean);
}
function readIdsInnerHtml(ids, seperator){
return ids.map(readTagContents).join(seperator);
}
function readTagContents(id){
var element = (id) ? readElement(id) : undefined;
return (element) ? element.innerHTML : undefined;
}
function readClozeSpans(){
return readClassNameElements("cloze");
}
function readClassNameElements(className){
return document.getElementsByClassName(className);
}
function readAnchorContent(){
var anchorList = readTags('a');
if (anchorList.length != 0) {
return anchorList[0].text;
}
}
function readBangHint(){
var spans = readClozeSpans();
var bangHints = readBangHintsFromSpans(spans);
if (bangHints.length != 0) {
return bangHints[0];
}
}
function readHintReader(){
var spans = readClassNameElements("hint-reader");
var hint = readHintsFromSpans(spans)[0];
return hint;
}
function readBangHintsFromSpans(spans){
return [].map.call(spans, readBangHintFromSpan).filter(Boolean);
}
function readHintsFromSpans(spans){
return [].map.call(spans, readHintFromSingleSpan).filter(Boolean);
}
function readBangHintFromSpan(span){
var content = span.innerHTML;
if(content == undefined){ return; }
if(hasClozedBangHint(content)){
return readClozedBangHint(content);
}
}
function readHintFromSingleSpan(span){
return span.innerHTML
}
function hasClozedBangHint(content){
return content[1] == "!";
}
function readClozedBangHint(content){
return content.slice(2,-1);
}
function readFirstArticle(){
return readTags("article")[0];
}
function readMain(){
return readTags("main")[0];
}
function readTags(name){
return document.getElementsByTagName(name);
}
function readElement(id){
return document.getElementById(id);
}
function readBody(){
return document.body;
}