Mercurial > hatta
changeset 2437:ea73653dfadb
Refactor some code into _foreach_tag()
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Mon, 11 Nov 2013 21:26:01 +0100 |
| parents | 3ec6b586efa5 |
| children | 37ff0a2f286f |
| files | hatta/static/scripts.js |
| diffstat | 1 files changed, 28 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/hatta/static/scripts.js Mon Nov 11 20:46:07 2013 +0100 +++ b/hatta/static/scripts.js Mon Nov 11 21:26:01 2013 +0100 @@ -29,20 +29,24 @@ "GMT" + tz); }; + var _foreach_tag = function (tag_names, func) { + tag_names.forEach(function (tag_name) { + document.getElementsByTagName(tag_name).forEach(func); + }); + }; + hatta.localize_dates = function () { /* Scan whole document for UTC dates and replace them with * local time versions */ - var nodes = document.getElementsByTagName('abbr'); - for (var i=0, len=nodes.length; i < len; ++i) { - var node = nodes[i]; - if (node.className === 'date') { + _foreach_tag(['abbr'], function (tag) { + if (tag.className === 'date') { var d = _parse_date(node.getAttribute('title')); if (d) { - node.textContent = _format_date(d); + tag.textContent = _format_date(d); } } - } + }); }; hatta.js_editor = function () { @@ -94,57 +98,45 @@ } else { /* We have a normal page, make it go to editor on double click. */ var baseUrl = ''; - var tags = document.getElementsByTagName('link'); - for (var i=0, len=tags.length; i < len; ++i) { - var tag = tags[i]; + _foreach_tag(['link'], function (tag) { if (tag.getAttribute('type') === 'application/wiki') { baseUrl = tag.getAttribute('href'); } - } + }); if (baseUrl==='') { return; } - var tagList = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', - 'ul', 'div']; var dblclick = function () { /* The callback that invokes the editor. */ var url = baseUrl + '#' + this.id.replace('line_', ''); document.location = url; return false; }; - for (var j=0, len=tagList.length; j < len; ++j) { - var tags = document.getElementsByTagName(tagList[j]); - for (var i=0, len2=tags.length; i < len2; ++i) { - var tag = tags[i]; - if (tag.id && tag.id.match(/^line_\d+$/)) { - tag.ondblclick = dblclick; - } + _foreach_tag(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'ul', + 'div'], function (tag) { + if (tag.id && tag.id.match(/^line_\d+$/)) { + tag.ondblclick = dblclick; } - } + }); } }; hatta.purple_numbers = function () { /* Add links to the headings. */ - var tagList = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; - for (var j=0, len=tagList.length; j < len; ++j) { - var tags = document.getElementsByTagName(tagList[j]); - for (var i=0, len2=tags.length; i < len2; ++i) { - var tag = tags[i]; - var prev = tag.previousSibling; - while (prev && !prev.tagName) { - prev = prev.previousSibling; - } - if (prev && prev.tagName === 'A') { - var name = prev.getAttribute('name'); - if (name) { - tag.insertAdjacentHTML('beforeend', '<a href="#' + - name + '" class="hatta-purple">¶</a>'); - } + _foreach_tag(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], function (tag) { + var prev = tag.previousSibling; + while (prev && !prev.tagName) { + prev = prev.previousSibling; + } + if (prev && prev.tagName === 'A') { + var name = prev.getAttribute('name'); + if (name) { + tag.insertAdjacentHTML('beforeend', '<a href="#' + + name + '" class="hatta-purple">¶</a>'); } } - } + }); }; return hatta;
