Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
// _ _ _ // __ _(_) __| | ___ ___ (_)___ // \ \ / / |/ _` |/ _ \/ _ \ | / __| // \ V /| | (_| | __/ (_) | | \__ \ // \_/ |_|\__,_|\___|\___/ _/ |___/ // |__/ // // JavaScript code for handling indexes of videos, // possibly with links to local copies in MP4 format // From: http://angg.twu.net/blogme3/local-videos-mini.js.html // (find-blogme3 "local-videos-mini.js") // See: http://angg.twu.net/ferramentas-para-ativistas.html // (find-TH "ferramentas-para-ativistas") // http://angg.twu.net/linkdasruas.html // Author: Eduardo Ochs <eduardoochs@gmail.com> // Version: 2014jul13 // eltbyid = function (id) { return document.getElementById(id); } from_textarea = function (id) { return eltbyid(id).value; } from_pre = function (id) { return eltbyid(id).innerHTML; } to_textarea = function (id, txt) { eltbyid(id).innerHTML = txt; } to_pre = function (id, txt) { eltbyid(id).innerHTML = txt; } function href0 (tgt, text) { return '<a href="'+tgt+'">' + text + '</a>'; } function href (tgt, text) { return tgt ? href0(tgt, text) : text; } // escape_re = /[\x0f&<>"']/g; // escape_table = { // '&': '&', // '<': '<', // '>': '>', // '"': '"', // "'": ''', // "\x0f": '<font color="red"><strong>*</strong></font>' // } escape_re = /[\x0f]/g; escape_table = { "\x0f": '<font color="red"><strong>*</strong></font>' } escape = function (str) { return str.replace(escape_re, function (c) { return escape_table[c] || c; }); } yt_mp4s = {} yt_mp4_re = /(...........)\.mp4$/ yt_hash_re = /[?&]v=([^ &]+)/ yt_line_re = /^(.*)(https?:\/\/www.youtube[^ ]*)( *)(.*)$/ function yt_extract_mp4s(bigstr) { // process and remove the mp4 lines from str var f = function (line) { line = line.replace(/\n/g, ""); var A = line.match(yt_mp4_re); if (A) { yt_mp4s[A[1]] = line; // put in yt_mp4a return ""; } else { return line + "\n"; } } // f = function (s) { var p = "("+s+")"; alert(p); return p; } return bigstr.replace(/([^\n]+)\n/g, f); } function yt_hash (str) { var A = str.match(yt_hash_re); if (A) { return A[1]; } } function yt_line_parse (str) { var A = str.match(yt_line_re); if (A) { var all=A[0], a=A[1], url=A[2], b=A[3], title=A[4]; var hash = yt_hash(url); if (hash) { return {'all':all, 'a':a, 'url':url, 'b':b, 'title':title, 'hash':hash}; } } } function yt_url (hash) { return "http://www.youtube.com/watch?v="+hash; } function yt_ytlink_html (hash) { return "("+href(yt_url(hash), "YT")+")"; } function yt_title_html (h, t) { return href(yt_mp4s[h], escape(t)); } function yt_line_html (line) { var A = yt_line_parse(line) if (A) { return A.a + yt_ytlink_html(A.hash) + A.b + yt_title_html(A.hash, A.title); } } url_line_re = /^(.*)(https?:\/\/[!-~]*)(.*)$/ url_line_html = function (line) { var A = line.match(url_line_re); if (A) { var all=A[0], a=A[1], url=A[2], b=A[3]; return escape(a)+href(url, url)+escape(b); } } yt_htmlize0 = function (bigstr) { var f = function (li) { return yt_line_html(li) || url_line_html(li) || li; } return yt_extract_mp4s(bigstr).replace(/[^\n]+/g, f); } yt_htmlize = function (bigstr) { yt_mp4s={}; return yt_htmlize0(bigstr); } yt_htmlize_pre = function (pre_id) { to_pre(pre_id, yt_htmlize(from_pre(pre_id))); } // Typical uses: // to_pre('output_a',yt_htmlize(from_textarea('input_a'))); // to_pre('my_pre_a',yt_htmlize(from_pre('my_pre_a'))); // youtube_activate0 = function (bigstr, f) { // return bigstr.replace(/[^\n]+/g, (f || youtube_line)); // } // youtube_activate = function (id, f) { // var elt = document.getElementById(id); // // elt.innerHTML = youtube_activate0(elt.innerText, f); // elt.innerHTML = youtube_activate0(elt.textContent, f); // }