Keyword wrapper/splitter
by joplomacedo
HTML
<form>
<textarea></textarea>
<button>Split in groups</button>
</form>
JavaScript
var $textarea = $('textarea'),
wrapKeywords = function ( kws ) {
var kw,
wrapped_kws = [];
kws = kws.filter(function (kw) {
return kw.length;
});
while ( kws.length ) {
kw = kws.shift();
wrapped_kws.push(kw);
kw = '"' + kw + '"';
wrapped_kws.push(kw);
kw = '[' + kw + ']';
wrapped_kws.push(kw);
}
return wrapped_kws;
},
splitInGroupsOf = function (kws, lines_per_group) {
var kw_groups = [],
current_kw_group_index = 0;
while ( kws.length ) {
kw_groups[current_kw_group_index++] = kws.splice(0, lines_per_group);
}
return kw_groups;
},
createTextareaFromKwGroup = function ( kw_group ) {
var $textarea = $('<textarea>');
while ( kw_group.length ) {
$textarea.append(kw_group.shift() + '\n');
}
return $textarea;
},
wrapAndSplitKws = function ( kws ) {
var wrapped_kws = wrapKeywords(kws),
kw_groups = splitInGroupsOf(wrapped_kws, 2500),
$textarea,
$textareas = $('');
while ( kw_groups.length ) {
$textarea = createTextareaFromKwGroup(kw_groups.shift());
$textareas = $textareas.add($textarea);
}
$textareas.appendTo('body');
};
$('form').on('submit', function (e) {
var kws = $textarea.val().split('\n');
wrapAndSplitKws( kws );
e.preventDefault();
});