Browse Source

fix of #markdown chars position data collecting

master
Simon Grim 10 years ago
parent
commit
5e93f5263b
  1. 88
      js/twister_formatpost.js

88
js/twister_formatpost.js

@ -273,6 +273,66 @@ function htmlFormatMsg(msg, mentions) {
return false; return false;
} }
function kindOfL(i) {
if (stopCharsMarkout.indexOf(msg.str[i]) > -1) {
for (var j = i - 1; j > -1; j--) {
if (msg.str[j] === chr) {
return -1;
} else if (stopCharsMarkout.indexOf(msg.str[j]) === -1) {
return whiteSpaces.indexOf(msg.str[j]);
}
}
} else if (msg.str[i] === '<') {
for (var j = i - 1; j > -1; j--) {
if (msg.str[j] === '>') {
if (j === 0) {
return -1;
} else {
if (msg.str[j - 1] === chr) {
return -1;
} else {
return kindOfL(j - 1);
}
}
}
}
} else {
return whiteSpaces.indexOf(msg.str[i]);
}
return 0;
}
function kindOfR(i) {
if (stopCharsMarkout.indexOf(msg.str[i]) > -1) {
for (var j = i + 1; j < msg.str.length; j++) {
if (msg.str[j] === chr) {
return -1;
} else if (stopCharsMarkout.indexOf(msg.str[j]) === -1) {
return whiteSpaces.indexOf(msg.str[j]);
}
}
} else if (msg.str[i] === '>') {
for (var j = i + 1; j < msg.str.length; j++) {
if (msg.str[j] === '<') {
if (j === msg.str.length - 1) {
return -1;
} else {
if (msg.str[j + 1] === chr) {
return -1;
} else {
return kindOfR(j + 1);
}
}
}
}
} else {
return whiteSpaces.indexOf(msg.str[i]);
}
return 0;
}
var i, j, t, l, r, htmlEntityEncoded; var i, j, t, l, r, htmlEntityEncoded;
var w = false; var w = false;
var p = []; var p = [];
@ -291,32 +351,8 @@ function htmlFormatMsg(msg, mentions) {
p.push({i: i, k: j - i, t: 1, w: w, a: -1, p: -1}); p.push({i: i, k: j - i, t: 1, w: w, a: -1, p: -1});
w = false; w = false;
} else { } else {
if (stopCharsMarkout.indexOf(msg.str[i - 1]) > -1) { l = kindOfL(i - 1);
l = 1; r = kindOfR(j);
for (t = i - 2; t > -1; t--) {
if (msg.str[t] === chr) {
l = -1;
break;
} else if (stopCharsMarkout.indexOf(msg.str[t]) === -1) {
l = whiteSpaces.indexOf(msg.str[t]);
break;
}
}
} else
l = whiteSpaces.indexOf(msg.str[i - 1]);
if (stopCharsMarkout.indexOf(msg.str[j]) > -1) {
r = 1;
for (t = j + 1; t < msg.str.length; t++) {
if (msg.str[t] === chr) {
r = -1;
break;
} else if (stopCharsMarkout.indexOf(msg.str[t]) === -1) {
r = whiteSpaces.indexOf(msg.str[t]);
break;
}
}
} else
r = whiteSpaces.indexOf(msg.str[j]);
if (l > -1) { if (l > -1) {
if (r > -1) { if (r > -1) {
if (j - i > 2) { if (j - i > 2) {

Loading…
Cancel
Save