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;
};