Dicen que cuando un programador novato tiene un problema, y piensa que la solución es usar expresiones regulares, entonces tiene dos problemas.
Pero con ganas, experiencia, un poco de cuidado, y mucho sex-appeal pueden hacer cosas como esta:
Código Javascript
:
Ver originalvar Reemplazator = {
MATCHES : [
{
REG : /\[youtube\](.*)\[\/youtube\]/ig,
TPL : '<iframe type="text/html" width="640" height="390" src="http://www.youtube.com/embed/$1" frameborder="0"></iframe>'
},
{
REG : /\[img\](.*)\[\/img\]/ig,
TPL : '<img src="$1" />'
},
{
REG : /\[url name="([^"]*)"\](.*)\[\/url\]/ig,
TPL : '<a href="$2">$1</a>'
}
],
parse : function (txt) {
for (var i = 0, n = Reemplazator.MATCHES.length; i < n; i++) {
var rule = Reemplazator.MATCHES[i];
console.log(txt.match(rule.REG));
txt = txt.replace(rule.REG, rule.TPL);
}
return txt;
}
};
http://jsfiddle.net/marlanga/9axyz13x/
Veo que en tu último mensaje estuviste a punto de lograrlo. Bien hecho, joven padawan.
Posdata:
Una vuelta de tuerca a la función parse, porque me gusta complicar las cosas:
Código Javascript
:
Ver originalparse : function (txt) {
return Reemplazator.MATCHES.reduce(function (value, rule) { return value.replace(rule.REG, rule.TPL); }, txt);
}
http://jsfiddle.net/marlanga/9axyz13x/1/