RegexToText
by Edgar Martinez
HTML
<div id="tool-text-from-regex">
<div class="field">
<textarea id="text-from-regex-text"></textarea>
</div>
<div class="field">
<div id="action-error" style="display: none;"></div>
</div>
<div class="field">
<input type="submit" value="Generate Text" id="text-from-regex-submit"> <input type="button" value="Copy to clipboard" id="copy-to-clipboard"> <span id="text-from-regex-submit-undo" class="undo" style="display: inline;"><a href="#">(undo)</a></span>
</div>
<div class="field">
<div>
Regex: <input type="text" value="hello \d{1,5} world" id="text-from-regex-regex">
</div>
</div>
<div class="field">
How many results?
<input id="text-from-regex-how-many" value="5" size="3">
</div>
</div>
JavaScript
mkTool("text-from-regex", function(r) {
for (var n = parseInt($("#text-from-regex-how-many").val(), 10), o = $("#text-from-regex-regex").val(), e = "", t = 1; t <= n; t++) {
var a = new RandExp(o);
e += a.gen(),
e += "\n";
}
return e
}, {
allowEmptyText: !0,
exceptionFn: function(r) {
$("#action-error").show(),
$("#action-error").text(r)
}
})
////////////////////////////////librerias
var undoStack = [];
function mkUndo (toolName) {
var undoSelector = '#' + toolName + '-submit-undo';
var textSelector = '#' + toolName + '-text';
$(undoSelector).click(function (ev) {
ev.preventDefault();
var last = undoStack.pop();
$(textSelector).val(last);
if (undoStack.length == 0) {
$(undoSelector).hide();
}
});
}
function mkTool (toolName, computeFn, opts) {
opts = opts || {};
var submitSelector = '#' + toolName + '-submit';
var undoSelector = '#' + toolName + '-submit-undo';
var textSelector = '#' + toolName + '-text';
$(submitSelector).click(function () {
var text = $(textSelector).val();
if (!opts.allowEmptyText) {
if (!text.length) return;
}
$('#action-error').hide();
try {
if (opts.asyncResultFn) {
computeFn(text, opts.asyncResultFn);
}
else {
var result = computeFn(text, opts.asyncResultFn);
$(textSelector).val(result);
}
}
catch (err) {
if (opts.exceptionFn) opts.exceptionFn(err);
return;
}
undoStack.push(text);
$(undoSelector).show();
});
mkUndo(toolName);
}
function mkImageConvertTool (toolName, inputOpts, outputOpts, computeFn) {
if ($('#tool-' + toolName).length == 0) return;
var fileSelector = '#file-select';
var submitSelector = '#submit';
var selectedFile;
//...