JSFiddle - React, Tailwind, and code Playground
by kadymov
HTML
<textarea id="source" style="width: 100%; height: 300px;">
//this "is" 'line' comment
/* this 'is'
"block"
comment */
/'this-' is "-regexp"/xxx
"this is 'double' quotes sting"
'this "is" single quotes sting'
"inner \"quotes\""
'inner \'quotes\''
</textarea>
<br/>
<input type="button" id="convert" value="Convert" />
<div id="log"></div>
JavaScript
var fixQuotes = (function() {
'strict mode';
var parse = (function() {
function getLineComment(str, id) {
id += 2;
for (var len = str.length; id < len; id++) {
if (str.charAt(id) === '\n') return id;
}
}
function getBlockComment(str, id) {
id += 1;
for (var len = str.length; id < len; id++) {
if (str.charAt(id) === '*' && str.charAt(id + 1) === '/') {
return id + 2;
}
}
}
function getRegExp(str, id) {
id += 1;
for (var len = str.length; id < len; id++) {
if (str.charAt(id) === '/') {
if (str.charAt(id - 1) === '\\' && str.charAt(id - 2) !== '\\')
continue;
return id + 1;
}
}
}
function getString(str, id, quotes) {
id += 1;
for (var len = str.length; id < len; id++) {
if (str.charAt(id) === quotes) {
if (str.charAt(id - 1) === '\\' && str.charAt(id - 2) !== '\\')
continue;
return id + 1;
}
}
}
return function (str) {
var stringsArray = [];
for (var charId = 0, length = str.length; charId < length; charId++) {
var char = str.charAt(charId),
startId = charId;
if (char === '\'' || char === '"') {
charId = getString(str, charId, char);
var newString = {
str : str.substring(startId, charId),
start : startId,
end : charId
};
stringsArray.push(newString);
} else if(char === '/') {
var secChar =...