|
|
@@ -15,9 +15,9 @@ export default class Linker {
|
|
|
this.link = link;
|
|
|
}
|
|
|
|
|
|
- // create a linker from string
|
|
|
+ // create an instance of Linker from string
|
|
|
static fromMarkdownString(str) {
|
|
|
- // if str doesn't mean a linker, create markdown link whose label is str
|
|
|
+ // if str doesn't mean a linker, create a link whose label is str
|
|
|
let label=str;
|
|
|
let link='';
|
|
|
let type=types.markdownLink;
|
|
|
@@ -56,20 +56,19 @@ export default class Linker {
|
|
|
return new Linker(type, label, link);
|
|
|
}
|
|
|
|
|
|
- // create a linker from text with index
|
|
|
+ // create an instance of Linker from text with index
|
|
|
static fromLineWithIndex(line, index) {
|
|
|
const { beginningOfLink, endOfLink } = this.getBeginningAndEndIndexOfLink(line, index);
|
|
|
+ // if index is in a link, extract it from line
|
|
|
let linkStr = '';
|
|
|
if (beginningOfLink >= 0 && endOfLink >= 0) {
|
|
|
linkStr = line.substring(beginningOfLink, endOfLink);
|
|
|
}
|
|
|
- console.log(linkStr);
|
|
|
-
|
|
|
return this.fromMarkdownString(linkStr);
|
|
|
}
|
|
|
|
|
|
// return beginning and end indexies of link
|
|
|
- // if index is not on link, return { beginningOfLink: -1, endOfLink: -1 }
|
|
|
+ // if index is not in a link, return { beginningOfLink: -1, endOfLink: -1 }
|
|
|
static getBeginningAndEndIndexOfLink(line, index) {
|
|
|
let beginningOfLink, endOfLink;
|
|
|
|
|
|
@@ -78,16 +77,20 @@ export default class Linker {
|
|
|
[beginningOfLink, endOfLink] = this.getBeginningAndEndIndexWithPrefixAndSuffix(line, index, '[[', ']]');
|
|
|
}
|
|
|
|
|
|
+ // if index is not in a pukiwiki link
|
|
|
// growi link ('[/link]')
|
|
|
if (beginningOfLink < 0 || endOfLink < 0 || beginningOfLink > index || endOfLink < index){
|
|
|
[beginningOfLink, endOfLink] = this.getBeginningAndEndIndexWithPrefixAndSuffix(line, index, '[/', ']');
|
|
|
}
|
|
|
|
|
|
+ // and if index is not in a growi link
|
|
|
// markdown link ('[label](link)')
|
|
|
if (beginningOfLink < 0 || endOfLink < 0 || beginningOfLink > index || endOfLink < index){
|
|
|
[beginningOfLink, endOfLink] = this.getBeginningAndEndIndexWithPrefixAndSuffix(line, index, '[', ')', '](');
|
|
|
}
|
|
|
|
|
|
+ // and if index is not in a markdown link
|
|
|
+ // return { beginningOfLink: -1, endOfLink: -1 }
|
|
|
if (beginningOfLink < 0 || endOfLink < 0 || beginningOfLink > index || endOfLink < index) {
|
|
|
[beginningOfLink, endOfLink] = [-1, -1];
|
|
|
};
|
|
|
@@ -95,8 +98,7 @@ export default class Linker {
|
|
|
return { beginningOfLink, endOfLink };
|
|
|
}
|
|
|
|
|
|
- // return begin and end indexies as array only when index between prefix and suffix.
|
|
|
- // if line doesn't contain containText, return null.
|
|
|
+ // return begin and end indexies as array only when index is between prefix and suffix and link contains containText.
|
|
|
static getBeginningAndEndIndexWithPrefixAndSuffix(line, index, prefix, suffix, containText='') {
|
|
|
const beginningIndex = line.lastIndexOf(prefix, index);
|
|
|
const IndexOfContainText = line.indexOf(containText, beginningIndex + prefix.length);
|