Existe-t-il un analyseur de code JavaScript qui peut être utilisé du côté client pour analyser les modèles de code? J'ai trouvé ce qui suit mais il semble que ce soit juste pour le texte normal et vous donne le signe =
etc. J'ai besoin d'une analyse de code qui peut fonctionner du côté client (code JS), y en a-t-il?Analyseur de code JavaScript côté client
function parseData() {
var rawData = document.getElementById('data').value.trim(),
result,
output = $('#output'),
table = $('table').remove(),
header,
row,
cell,
ul,
slice,
wpm = [],
wpmAvg = [];
output.empty();
table.find('thead, tbody').empty();
if ($('[name="format"]:checked').val() === 'text') {
// Simple text
result = analyzeText(rawData);
output.append('Word count: ' + result.count + '<br><br>Frequent words:<br>');
ul = $('<ul>');
_.forEach(result.frequentWords, function(value, key) {
ul.append('<li>' + value.word + ': ' + value.count + '</li>');
});
output.append(ul);
}
else {
// JSON
try {
data = JSON.parse(rawData);
}
catch(e) {
console.log('Error parsing JSON', e);
}
header = table.find('thead');
body = table.find('tbody');
row = $('<tr>');
body.append(row);
// Loop over slices
_.forEach(data, function(value, key) {
slice = '';
// Loop over statements
_.forEach(value, function(value, key) {
slice += value.words + ' ';
});
result = analyzeText(slice);
addCell(slice, key);
});
$.plot('#wpm', [wpm], {
xaxes: [{
axisLabel: 'Time index (1-minute increments)',
}],
yaxes: [{
position: 'left',
axisLabel: 'Words per minute',
}]
});
output.append(table);
}
function addCell(data, index) {
var cell1, cell2, ul1, ul2, result;
cell1 = $('<td>');
cell2 = $('<td>');
ul1 = $('<ul>');
ul2 = $('<ul>');
cell1.append(ul1);
cell2.append(ul2);
row.append(cell1, cell2);
result = analyzeText(data);
header.append('<th>' + index + '</th><th class="subText">(' + result.count + ')</th>');
wpm.push([index, result.count]);
_.forEach(result.frequentWords, function(value, key) {
ul1.append('<li>' + value.word + '</li>');
ul2.append('<li>' + value.count + '</li>');
});
}
}
function analyzeText(rawData) {
var result = {
count: 0,
frequentWords: []
},
data = rawData.split(/[\s.,]+/g)
counts = {},
countsArray = [],
commonWords = [
0,1,2,3,4,5,6,7,8,9,
'-',
'a',
'about',
'function',
'object'
];
if (!data[data.length]) {
data.splice(-1, 1);
}
// Word count
result.count = data.length;
// Word frequency (filtered for common words, sorted descending by count)
for (var i = 0; i < data.length; i++) {
if (!counts.hasOwnProperty(data[i].toLowerCase())) {
counts[data[i].toLowerCase()] = 1;
}
else {
counts[data[i].toLowerCase()] += 1;
}
}
_.forEach(counts, function(value, key) {
if (commonWords.indexOf(key.toLowerCase()) === -1) {
countsArray.push({
word: key.toLowerCase(),
count: value
});
}
});
countsArray = _.sortBy(countsArray, 'count').reverse();
_.forEach(countsArray, function(value, index) {
if (value.count > 1) {
result.frequentWords.push(value);
}
});
return result;
}
body {
font-family: arial;
}
table, tr, td, th {
border-collapse: collapse;
border: solid 1px #ddd;
}
th, td {
padding: 4px 8px;
}
.subText {
color:#999;
font-style: italic;
}
#wpm {
width:600px;
height: 400px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.js"></script>
<textarea id="data" cols="80" rows="20" placeholder="Paste text or JSON here"></textarea><br />
<label for="text"><input type="radio" name="format" checked value="text" id="text"> Simple text</label>
<button type="button" onclick="parseData()">Analyze text</button>
<br><br>
<div id="output"></div><br><br>
<div id="wpm"></div>
<table>
<thead>
</thead>
<tbody>
</tbody>
</table>
https://jsfiddle.net/fxn5q8y0/6/
Parlez-vous des expressions régulières? – Jai
@Jai - peut-être sous le capot je veux fournir un code qui sera analysé par rapport à une structure de mot-clé ou peut-être un modèle –
S'il vous plaît être plus précis .. De quoi avez-vous besoin ** exactement ** . –