-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbacklink.js
38 lines (35 loc) · 963 Bytes
/
backlink.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
const addlink=function(links,fromdb,regex){
//[hyperlink, target_vpl ]
const backlinks=this;
const hyperlink_regex=/^(.+?)_(\d+)$/
for (var i=0;i<links.length;i++){
const m=links[i][0].match(hyperlink_regex);
const bk=m[1],para=m[2];
if (!backlinks[bk]) {
backlinks[bk]={};
}
if (!backlinks[bk][para]) {
backlinks[bk][para]={};
}
if (!backlinks[bk][para][fromdb]){
backlinks[bk][para][fromdb]=[];
}
backlinks[bk][para][fromdb].push(links[i][1]);
}
}
const findbacklinks=(backlinks,sid)=>{
const hyperlink_regex=/^(.+?)_(\d+)$/
const m=sid.match(hyperlink_regex);
if (!m)return null;
const bk=m[1],para=m[2];
if (!backlinks[bk])return null;
if (!backlinks[bk][para])return null;
const linkobj=backlinks[bk][para];
let out=[];
for (let tdb in linkobj) {
const arr=linkobj[tdb].map( link=>[tdb,link]);
out=out.concat(arr);
}
return out;
}
module.exports={addlink,findbacklinks};