xp XML to JS
by Alexander Shutov
HTML
<textarea style="width:30em; height:40em;"></textarea>
<br/>
<button>Process</button>
JavaScript
var t = document.querySelector('textarea');
var b = document.querySelector('button');
b.onclick = function () {
var input = t.value;
var output = input;
output = output.replace(/\sxmlns=".*?"/g, '');
output = output.replace(/<([\dA-Za-z]+)/g, 'new xp.$1({');
output = output.replace(/\/>/g, '}),');
output = output.replace(/<\/[\dA-Za-z]+>/g, ']),');
output = output.replace(/>/g, '}, [');
output = output.replace(/([\dA-Za-z]+)=\"(.*?)\"/g, '$1: \'$2\', ');
output = output.replace(/(,\s*)(\})/g, '$2');
output = output.replace(/Stretch/g, 'stretch')
.replace(/None/g, 'none')
.replace(/Shrink/g, 'shrink')
.replace(/Grow/g, 'grow')
.replace(/Top/g, 'top')
.replace(/Middle/g, 'middle')
.replace(/Bottom/g, 'bottom')
.replace(/Left/g, 'left')
.replace(/Center/g, 'center')
.replace(/Right/g, 'right')
.replace(/Both/g, 'both')
.replace(/Horizontal/g, 'horizontal')
.replace(/Vertical/g, 'vertical');
t.value = output;
};