Skip to content

Instantly share code, notes, and snippets.

@jodaka
Created February 19, 2013 12:13
Show Gist options
  • Save jodaka/4985322 to your computer and use it in GitHub Desktop.
Save jodaka/4985322 to your computer and use it in GitHub Desktop.
var __articleView=function(e,t){var n=" .__av-body-hidden{display:none!important}.__av-overlay{position:absolute;height:100%;width:100%;margin:0;border:0}.__av-body{background-color:#FFF;margin:0;height:100%;width:100%}.__av-content{font-size:100%;overflow-y:scroll!important;overflow-x:hidden}adiv{display:block}avtext{display:block;padding:1ex 0;font-size:120%;font-style:normal;text-align:left}avtext a{text-decoration:underline!important}.__av-body-m0 .__av-content{margin:0 5% 0 5%}.__av-body-m1 .__av-content{margin:0 10% 0 10%}.__av-body-m2 .__av-content{margin:0 15% 0 15%}div.__av-author,div.__av-date{display:inline-block;opacity:0.3;font-size:2ex!important}.__av-author{margin-right:1ex}.__av-title{padding-top:1.5ex;margin:0.7ex 0 0.3ex 0;font-size:4.2ex!important;line-height:2.3ex}.__av-article{padding-top:4ex}.__av-content img{display:block}.__av-tagline{border-bottom:1px solid #000;padding:1em 0 0.3em 0;opacity:0.3}.__av-meta{border-top:1px solid black;padding:2ex 0 0 0;margin:2ex 0 0 0;opacity:0.5}.__av-meta ul{margin:0 0 0 2.5ex;padding:0}.__av-meta li{list-style:square!important;padding-bottom:1ex}.__av-meta .metaName{font-weight:bold}div.__av-noarticle{margin:4ex;padding:3ex;border-radius:1ex;font-size:4ex!important;color:#F2F2F2!important;background-color:#BF6363!important}.__av-touchOverlay,.__av-touchCanvasOverlay{opacity:0.5;height:100%;background-color:#FFF;width:100%;z-index:2147483646;position:fixed;top:0;bottom:0;right:0;left:0}.__av-touchCanvasOverlay{opacity:1;background-color:transparent;z-index:2147483647}.__av-body-lh0 ul,.__av-body-lh0 p,.__av-body-lh0 div.__av-body-lh0 avtext{padding-bottom:1.2em}.__av-body-lh1 avtext{padding-bottom:1.7em}.__av-body-lh2 avtext{padding-bottom:2.2em}.__av-body-lh0 avtext,.__av-body-lh0 avtext *{line-height:1.2em}.__av-body-lh1 avtext,.__av-body-lh1 avtext *{line-height:1.5em}.__av-body-lh2 avtext,.__av-body-lh2 avtext *{line-height:1.9em}.__av-body-bg0,.__av-body-bg0 avtext,.__av-body-bg0 .__av-color{background-color:#FFF}.__av-body-bg1,.__av-body-bg1 avtext,.__av-body-bg1 .__av-color{background-color:#515151}.__av-body-bg2,.__av-body-bg2 avtext,.__av-body-bg2 .__av-color{background-color:#CACACA}.__av-body-bg3,.__av-body-bg3 avtext,.__av-body-bg3 .__av-color{background-color:#FEFEFE}.__av-body-bg4,.__av-body-bg4 avtext,.__av-body-bg4 .__av-color{background-color:#A69D94}.__av-body-bg5,.__av-body-bg5 avtext,.__av-body-bg5 .__av-color{background-color:#FEF2DA}.__av-body-bg0 avtext,.__av-body-bg0 a,.__av-body-bg0 .__av-color{color:#000}.__av-body-bg1 avtext,.__av-body-bg1 a,.__av-body-bg1 .__av-color{color:#FFF}.__av-body-bg2 avtext,.__av-body-bg2 a,.__av-body-bg2 .__av-color{color:#515151}.__av-body-bg3 avtext,.__av-body-bg3 a,.__av-body-bg3 .__av-color{color:#6c6058}.__av-body-bg4 avtext,.__av-body-bg4 a,.__av-body-bg4 .__av-color{color:#fafdf2}.__av-body-bg5 avtext,.__av-body-bg5 a,.__av-body-bg5 .__av-color{color:#000}",r=function(){var e=t.documentElement,n=Array.prototype.splice.call(t.getElementsByTagName("meta"),0),r={title:"",date:"",author:"",keywords:"",description:""};for(var i=0;i<n.length;i++){var s=n[i],o=s.getAttribute("itemprop"),u=s.getAttribute("property"),a=s.getAttribute("name");o=o&&o.toLowerCase(),u=u&&u.toLowerCase(),a=a&&a.toLowerCase(),(a==="title"||u==="og:title"||a==="dc.title")&&r.title===""&&(r.title=s.getAttribute("content"));if(o==="author"||a==="author"||a==="dc.creator")r.author=s.getAttribute("content");if(a==="pubdate"||a==="dc.date"||o==="datepublished"||a==="dat"||a==="originalpublicationdate"||a==="dc.date.issued"||a==="sailthru.date"||u==="article:published_time")r.date=s.getAttribute("content");if(a==="keywords"||a==="sailthru.tags")r.keywords=s.getAttribute("content");if(a==="description"||u==="og:description"||a==="sailthru.description")r.description=s.getAttribute("content")}return r.url=location.origin+location.pathname,r.date!==""&&/\dT\d/.test(r.date)&&(r.date=r.date.replace(/^([\d-]+)T([\d:]+).*/,"$1 $2")),r},i=function(){"use strict";var e={};return e.overlapLimit=25,e.returnSelectedElements=function(n){var r=function(e){e=e.parentNode;var n={x:0,y:0};while(e&&e!==t.body)n.x+=e.scrollLeft,n.y+=e.scrollTop,e=e.parentNode;return n},i=function(e){var n=e.getBoundingClientRect(),i=r(e),s=t.defaultView.getComputedStyle(e,null).position==="fixed",o={x:t.body.scrollLeft,y:t.body.scrollTop};return{x:parseInt(n.left,10)+i.x+(s?0:o.x)-t.documentElement.clientLeft,y:parseInt(n.top,10)+i.y+(s?0:o.y)-t.documentElement.clientTop,w:e.offsetWidth,h:e.offsetHeight}},s=function(e,n){var r;while(e&&e!==t.body){e=e.parentNode,r=n.length;while(r--)if(e===n[r])return!1}return!0},o=function(t){var n,r,s=i(t),o=e.region,u=0;s.x0=s.x,s.y0=s.y,s.x1=s.x+s.w,s.y1=s.y+s.h;if(s.x1-s.x0===0||s.y1-s.y0===0)u=0;else if(s.x0>=o.x0&&s.y0>=o.y0&&s.x1<=o.x1&&s.y1<=o.y1)u=100;else if(s.x0<o.x0&&s.y0<o.y0&&s.x1>o.x1&&s.y1>o.y1)n=(s.x1-s.x0)*(s.y1-s.y0),r=(o.x1-o.x0)*(o.y1-o.y0),u=100*r/n;else if(!(o.x0>=s.x1||o.y1<=s.y0||o.x1<=s.x0||o.y0>=s.y1)){n=(s.x1-s.x0)*(s.y1-s.y0);var a=[s.x0,s.x1,o.x0,o.x1],f=[s.y0,s.y1,o.y0,o.y1],l=function(e,t){return e>t};a.sort(l),f.sort(l),u=100*Math.abs(a[1]-a[2])*Math.abs(f[1]-f[2])/n}return Math.round(u)},u=function(){var n=t.body.getElementsByTagName("*"),r=n.length,i=[],u=[];while(r--)o(n[r])>e.overlapLimit&&i.push(n[r]);r=i.length;while(r--)s(i[r],i)&&u.push(i[r]);return u};e.region=n,e.nodes=u(),typeof e._callback=="function"&&e._callback({nodes:e.nodes,coords:e.region})},{init:function(t,n){typeof n=="function"&&(e._callback=n),e.returnSelectedElements(t)}}}(),s=function(e){var t=e.getElementsByClassName("instapaper_body")[0],n=e.getElementsByClassName("instapaper_title")[0];if(t){var r=Array.prototype.slice.call(t.getElementsByClassName("instapaper_ignore"),0);for(var i=0,s=r.length;i<s;i++)r[i].parentNode.removeChild(r[i]);t=t.outerHTML||""}return n=n&&n.outerHTML||"",[n,t]},o=function(e,t){var n={};n["thesun.co.uk"]=function(){var e=t.getElementById("bodyText");if(!e)return["",""];var n=t.getElementById("image-container");n&&e.insertBefore(n,e.firstChild);var r=t.body.getElementsByClassName("flag-author")[0];return r&&(r=r.innerText.replace(/By /i,"")),e=e&&e.innerHTML||"",["",e,r?{author:r}:null]},n["time.com"]=function(){var e=t.body.getElementsByClassName("item-container")[0];return e=e&&e.innerHTML||"",["",e]},n["news.yahoo.com"]=function(){var e=t.body.getElementsByClassName("yom-art-content")[0];return e=e&&e.innerHTML||"",["",e]},n["lenta.ru"]=function(){var e=t.body.querySelector(".b-topic__content .b-topic__title-image"),n=t.body.querySelector(".b-topic__content .b-text");return e=e&&e.innerHTML||"",n=n&&n.innerHTML||"",["","<div>"+e+"<br />"+n+"</div>"]},n["espn.go.com"]=function(){var e=t.body.querySelector(".story-container .article");return e||(e=t.body.getElementsByClassName("mod-container")[0]),e=e&&e.innerHTML||"",["",e]},n["usatoday.com"]=function(){var e=t.body.querySelector('div[itemprop="articleBody"]');if(e){e=e.cloneNode(!0);var n=e.querySelector(".blog-tag-cloud");n&&n.parentNode.removeChild(n),e=e.outerHTML}var r=t.querySelector("article h1");return r=r&&r.innerText,["",e]},n["cnn.com"]=function(){var e=t.documentElement.innerHTML,n=/<!--startclickprintinclude-->([\s\S]*?)<!--endclickprintinclude-->/img,r=e.match(n);return["",r!==null?r.join("\n"):""]},n["telegraph.co.uk"]=function(){var e,n=t.body.getElementsByClassName("ssImg")[0];n=n?n.parentNode.innerHTML:"";var r=t.getElementById("mainBodyArea");r=r?'<div class="article">'+n+r.innerHTML+"</div>":"";var i=t.querySelector(".bylineBody a");return i||(i=t.querySelector('.byline a[rel="author"]')),i&&(i=i.textContent.trim()),["",r,i?{author:i}:null]},n["nytimes.com"]=function(){var e=t.body.getElementsByClassName("articleHeadline")[0],n=Array.prototype.slice.call(t.body.getElementsByClassName("articleBody"),0),r="";for(var i=0,s=n.length;i<s;i++)r+=n[i].innerHTML;return[e&&e.innerHTML,r]},n["foxnews.com"]=function(){var e=t.body.getElementsByClassName("entry-title")[0],n=t.body.getElementsByClassName("article-text")[0],r=t.body.getElementsByClassName("article-ct")[0];return r=r&&r.innerHTML,n=n&&n.innerHTML,[e&&e.innerHTML,+r+n]};for(var r in n)if(n.hasOwnProperty(r)&&e.indexOf(r)>-1)return n[r](t);return null},u=function(t,u){var a={};a.DEBUG=!0;var f=function(){return!0};a.__onScroll=f,a.__onError=f,a.statusURL="http://localhost/articleview/",a.meta=r(),a.gotData=!1,a.foundGoodArticle=!1,a.settings={REMOVE_QUESTIONABLE_OPTIONS:!0,USE_CLASSNAMES_WEIGH:!0,minTextThreshold:200,paragraphThreshold:15,minImageWidth:100,minImageHeight:100,regexps:{badCandidates:/ad-break|ad_|-ad|ads|agegate|byline|combx|comment|controls|community|date|disqus|extra|facebook|foot|header|links|menu|pager|pagination|popup|print|remark|rss|social|share|shoutbox|sidebar|sponsor|time|tags|tools|tweet|twitter/i,tolerableCandidate:/and|article|body|column|main|shadow/i,negative:/combx|controls|comment|com-|contact|foot|footer|footnote|masthead|media|meta|outbrain|promo|related|scroll|shoutbox|sidebar|sponsor|social|share|shopping|tags|tool|widget/i,positive:/article|body|blog|content|entry|hentry|main|page|pagination|post|readability|text|story/i,divToPElements:/<(a|blockquote|dl|div|img|ol|p|pre|table|ul)/i,killBreaks:/(<br\s*\/?>(\s|&nbsp;?)*){1,}/g},overlayClass:"__av-overlay",bodyClass:"__av-body",overlay:{bg:0,lh:0,m:0,noArticleText:"Sorry no article found. Tap to return to Browser View"}};if(typeof __articleViewSavedSettings!="undefined")for(var l in __articleViewSavedSettings)__articleViewSavedSettings.hasOwnProperty(l)&&(l==="debug"?a.DEBUG=__articleViewSavedSettings[l]:a.settings.overlay[l]=__articleViewSavedSettings[l]);a.data={title:null,article:null,meta:null,coords:null};var c=function(e){return a.DEBUG&&console&&typeof console[e]=="function"?function(){var t=Array.prototype.slice.call(arguments,0);a.dbg.data+='<div class="'+e+'">'+t.join(" ")+"</div>",console[e].apply(console,t)}:f};return a.dbg={data:"",log:c("log"),warn:c("warn"),error:c("error")},a.sendStatus=function(e){var t=a.statusURL+"?";for(var n in e)e.hasOwnProperty(n)&&(t+=n+"="+encodeURIComponent(e[n])+"&");t=t.replace(/&$/,""),a.dbg.log("sending status to "+t);var r=new Image;r.src=t},a.countLinksAmount=function(e){var t=Array.prototype.slice.call(e.getElementsByTagName("a"),0),n=0;for(var r=0,i=t.length;r<i;r++)n+=a.getInnerText(t[r]).length;return n===0?0:n/a.getInnerText(e).length},a.trimString=function(e){e=e.replace(/^\s+/,"");for(var t=e.length-1;t>=0;t--)if(/\S/.test(e.charAt(t))){e=e.substring(0,t+1);break}return e},a.selectBestFrame=function(e){a.dbg.log("--> checking for frames");var t=e.getElementsByTagName("frame");if(t.length===0)return a.dbg.log("--> no frames found"),e.body;var n=0,r=null;for(var i=0;i<t.length;i++){var s=t[i].offsetWidth+t[i].offsetHeight,o=!1;try{var u=t[i].contentWindow.document.body;o=!0}catch(f){a.dbg.warn("frame ",t[i]," doesn't provide access to body")}o&&s>n&&(n=s,r=t[i])}if(r!==null){var l=e.createElement("body");return l.innerHTML=r.contentWindow.document.body.innerHTML,l}return a.dbg.warn("frames found, but all of them were unsable"),e.body},a.getInnerText=function(e){var t="";if(e&&e.length>0&&typeof e.textContent=="undefined"){var n=u.createElement("div");n.innerHTML=e,e=n}return a.trimString(e.textContent.trim())},a.cleanStyles=function(e){var t=e.getElementsByTagName("*");for(var n=t.length-1;n>=0;n--)t[n].removeAttribute("id"),t[n].removeAttribute("class"),t[n].removeAttribute("style")},a.cleanByTags=function(e,t){!t instanceof Array&&(t=[t]);for(var n=t.length-1;n>=0;n--){var r=e.getElementsByTagName(t[n]);for(var i=r.length-1;i>=0;i--)r[i].parentNode.removeChild(r[i])}},a.cleanLineBreaks=function(e){try{e.innerHTML=e.innerHTML.replace(a.settings.regexps.killBreaks,"<br />")}catch(t){return!1}},a.recursiveMarkupCleaning=function(e){var t=e.querySelectorAll("*");for(var n=0,r=t.length;n<r;n++){var i=t[n];if(i.tagName!=="A"&&i.children&&i.children.length===1&&i.textContent.trim()===i.children[0].textContent.trim()&&i.parentNode){i.parentNode.replaceChild(i.children[0],i),a.recursiveMarkupCleaning(e);break}}},a.leaveAV=function(t){a.dbg.log("leaving articleView and going to "+t),a.turnOff(!0),e.location.href=t},a.changeLinksTarget=function(e){var t=Array.prototype.slice.call(e.getElementsByTagName("a"),0);for(var n=0,r=t.length;n<r;n++){var i=encodeURIComponent(t[n].getAttribute("href"));t[n].setAttribute("data-url",i),t[n].setAttribute("href","javscript:void(0)")}},a.cleanDoubleImages=function(e){var t=Array.prototype.slice.call(e.getElementsByTagName("img"),0),n={};for(var r=0,i=t.length;r<i;r++)n[t[r].src]?n[t[r].src].w>t[r].getAttribute("width")&&t[r].parentNode.removeChild(t[r]):n[t[r].src]={w:t[r].getAttribute("width"),h:t[r].getAttribute("height")}},a.cleanEmptyTags=function(e){var t={},n=function(e){e.parentNode&&e.parentNode.removeChild(e)},r=function(e){var t=new Image;t.src=e?e.getAttribute("src"):null;if(!t.src)return n(e),!1;t.onload=i},i=function(){this.width<a.settings.minImageWidth||this.height<a.settings.minImageHeight?(a.dbg.log(" ----> removing image due to small size",this),n(this)):(this.setAttribute("width",this.width),this.setAttribute("height",this.height))},s=Array.prototype.slice.call(e.getElementsByTagName("*"),0),o,u;for(var f=0,l=s.length;f<l;f++){var c=s[f];if(c.tagName.toUpperCase()==="BR")continue;if(c.tagName.toUpperCase()==="IMG"){var h=new Image;h.src=c.src,o=h.width,u=h.height;if(!o||!u){r(c);continue}if(o<a.settings.minImageWidth||u<a.settings.minImageHeight||/spacer/.test(c.src)){var p=c.parentNode;a.dbg.log(" ---> removing image due to small size",c),n(c),p&&(!p.children||p.children.length<2)&&a.getInnerText(p)===""&&n(p);continue}continue}var d=0,v=0;if(c.children&&c.children.length>0){var m=c.getElementsByTagName("img");for(var g=0,y=m.length;g<y;g++){if(!m[g])continue;o=m[g].getAttribute("width")||(m[g].style.width?parseInt(m[g].style.width,10):0),u=m[g].getAttribute("height")||(m[g].style.height?parseInt(m[g].style.height,10):0);if(!o||!u){r(m[g]),d++;continue}o>a.settings.minImageWidth&&u>a.settings.minImageHeight&&d++}}if(d===0&&a.getInnerText(c).length===0){n(c);continue}c.removeAttribute("class"),c.removeAttribute("style"),c.removeAttribute("id"),c.removeAttribute("onclick"),c.removeAttribute("ondblclick"),c.removeAttribute("onmouseover"),c.removeAttribute("onmouseout")}a.recursiveMarkupCleaning(e),a.cleanSpamTags(e,["div","ul","span"])},a.cleanSpamTags=function(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=Array.prototype.slice.call(e.getElementsByTagName(r),0);for(var s=0,o=i.length;s<o;s++){var u=a.countLinksAmount(i[s]);if(u>.3&&i[s].parentNode){i[s].parentNode.removeChild(i[s]);continue}}}},a.finalMarkupCleaning=function(e){for(var t=0,n=e.children.length;t<n;t++){var r=e.children[t],i=u.createElement("avtext"),s=r.innerHTML?r.innerHTML:r.textContent;i.innerHTML=s,r.parentNode.replaceChild(i,r)}},a.cleanArticle=function(e){a.cleanEmptyTags(e,["p","div","textnode","a"]),a.cleanByTags(e,["h1","h2"]),a.cleanLineBreaks(e),a.cleanStyles(e),a.cleanDoubleImages(e),a.changeLinksTarget(e),a.finalMarkupCleaning(e)},a.getArticle=function(e){a.cleanByTags(e.documentElement,["script","noscript","object","embed","iframe","style"]);var t=e.documentElement.getElementsByTagName("*"),n=[];for(var r=0,i=t.length;r<i;r++){if(!t[r])continue;var s=t[r],o=s.tagName.toUpperCase();if(a.settings.REMOVE_QUESTIONABLE_OPTIONS){var u=s.className+" "+s.id;if(o!=="BODY"&&u.search(a.settings.regexps.badCandidates)!==-1&&u.search(a.settings.regexps.tolerableCandidate)===-1){s.parentNode.removeChild(s);continue}}(o==="P"||o==="TD"||o==="PRE")&&n.push(s);if(o==="DIV"&&s.innerHTML.search(a.settings.regexps.divToPElements)===-1){var f=e.createElement("p");f.innerHTML=s.innerHTML,s.parentNode.replaceChild(f,s),n.push(f)}}var l=a.setScore(n),c=null;for(r=l.length-1;r>=0;r--){a.dbg.log(l[r],l[r]._score);if(!c||l[r]._score>c._score)c=l[r]}a.dbg.log("=====> we got candidate",c);if(c===null||c.tagName.toUpperCase==="BODY")e.body._score||(a.setNodeScore(e.body),c=e.body);if(a.getInnerText(c).length<a.settings.minTextThreshold){if(a.settings.REMOVE_QUESTIONABLE_OPTIONS)return a.dbg.warn(" >> turning off QUESTIONABLE "),a.settings.REMOVE_QUESTIONABLE_OPTIONS=!1,a.getArticle(e);if(a.settings.USE_CLASSNAMES_WEIGH)return a.dbg.log(" >> turning off USE_CLASSNAMES_WEIGH "),a.settings.USE_CLASSNAMES_WEIGH=!1,a.getArticle(e)}return a.countLinksAmount(c)<.3&&(a.foundGoodArticle=!0),a.cleanArticle(c),c},a.scoreByClassName=function(e){var t=0;if(!a.settings.USE_CLASSNAMES_WEIGH)return 0;var n=function(e){var t=0;for(var n=0;n<e.length;n++)e[n].type==="string"&&e[n].value!==""&&(e[n].value.search(a.settings.regexps.negative)!==-1&&(t-=25),e[n].value.search(a.settings.regexps.positive)!==-1&&(t+=35));return t};return t+=n([{value:e.className,type:typeof e.className},{value:e.id,type:typeof e.id}]),t},a.setNodeScore=function(e){e._score=0;switch(e.tagName.toUpperCase()){case"DIV":e._score+=5;break;case"PRE":case"TD":case"BLOCKQUOTE":e._score+=3;break;case"ADDRESS":case"OL":case"UL":case"DL":case"DD":case"DT":case"LI":case"FORM":e._score-=3;break;case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"TH":e._score-=5}e._score+=a.scoreByClassName(e)},a.setScore=function(e){var t=[];for(var n=e.length-1;n>=0;n--){var r=e[n].parentNode,i=r?r.parentNode:null,s=a.getInnerText(e[n]);if(!r||typeof r.tagName=="undefined"||s.length<25)continue;r&&typeof r._score=="undefined"&&(a.setNodeScore(r),t.push(r)),i&&typeof i._score=="undefined"&&typeof i.tagName!="undefined"&&(a.setNodeScore(i),t.push(i));var o=1;o+=s.split(",").length,o+=Math.min(Math.floor(s.length/100),5),r&&(r._score+=o/1.2),i&&(i._score+=o/1.4)}return t},a.getTitle=function(e){if(a.meta.title!=="")return a.meta.title;var t="",n=function(t){for(var n=0;n<t.length;n++){var r=e.getElementsByTagName(t[n])[0];if(typeof r!="undefined")return a.getInnerText(r)}return""};t=u.title,t===""&&(t=n(["h1","h2","h3"]));var r=t,i=new RegExp("^s*"+location.hostname+"s*[:-—//]*s+(.*?)");switch(!0){case/\s::\s/.test(r):t=r.replace(/(.*?)::.*/g,"$1");break;case/\s[\/|]+\s/.test(r):t=r.replace(/(.*?)[\/|].*/g,"$1");break;case i.test(r):t=r.replace(i,"$1");break;case/\s-|–\s/.test(r):t=r.split(/\s-|–\s/).sort(function(e,t){return t.length-e.length})[0]}return t},a.tryExtractors=function(t){var n,r=function(e){if(e!==null){if(e.length===3&&typeof e[2]=="object")for(var t in e[2])e[2]&&e[2][t]&&e[2].hasOwnProperty(t)&&a.meta.hasOwnProperty(t)&&(a.meta[t]=e[2][t]);if(!(e[1]&&e[1].length>0&&a.getInnerText(e[1]).length>=a.settings.minTextThreshold))return!1;var r=u.createElement("div");return r.innerHTML=(e[0]&&e[0].length>0?"<h1>"+e[0]+"</h1>":"")+e[1],n=[r],!0}return!1},i=[];return typeof s=="function"&&r(s(u))?(a._gotInstapaperResult=!0,a.foundGoodArticle=!0,a.dbg.log(" got result from instapaper "),n):typeof o=="function"&&r(o(e.location.hostname,u))?(a.dbg.log("got result from extractors "),n):t},a.prepareData=function(e){a.ammendMeta();if(!e||!e instanceof Array||e.length===0)e=u.body?[u.body]:[u.documentElement],e=a.tryExtractors(e);var t=u.createElement("body");for(var n=0,r=e.length;n<r;n++)t.appendChild(e[n].cloneNode(!0));var i=u.implementation.createDocument(null,"html",null);i.documentElement.appendChild(t);var s=a.getTitle(i);a.dbg.log(" --> found title ",s);var o=a._gotInstapaperResult?t.firstChild:a.getArticle(i);return a.dbg.log(" --> found article ",o),a.data.title=s,o},a.injectCSS=function(e){var t=u.createElement("style");t.setAttribute("type","text/css"),t.appendChild(u.createTextNode(e)),typeof t!="undefined"&&u.getElementsByTagName("head")[0].appendChild(t)},a.addClass=function(e,t){e.className.indexOf(" "+t+" ")===-1&&(e.className+=" "+t)},a.removeClass=function(e,t){if(e.className.indexOf(t)!==-1){var n=new RegExp(t,"g");e.className=e.className.replace(n,"").trim()}},a.showOverlay=function(e){e||(a.overlay=u.createElement("aframe"),a.overlay.className=a.settings.overlayClass);var t=a.settings.bodyClass+" ";for(var r in a.settings.overlay)a.settings.overlay.hasOwnProperty(r)&&(t+=" "+a.settings.bodyClass+"-"+r+a.settings.overlay[r]);var i='<adiv class="__av-noarticle">'+a.settings.overlay.noArticleText+"</adiv>",s='<adiv class="__av-content"><adiv class="__av-tagline __av-color">'+location.hostname+" </adiv>"+'<ah1 class="__av-title __av-color">'+a.data.title+"</ah1>"+(a.meta.author!==""?'<adiv class="__av-author __av-color">By '+a.meta.author+"</adiv>":"")+(a.meta.date!==""?'<adiv class="__av-date __av-color">'+a.meta.date+"</adiv>":"")+'<adiv class="__av-article">'+a.data.article.innerHTML+"</adiv>"+a.printMetadata()+"</adiv>",o='<style type="text/css">'+n+" </style>"+'<adiv class="'+t+'">'+(a.foundGoodArticle?s:i)+"</adiv>";a._articleHTML=o,a._articleText=a.foundGoodArticle?s:"";if(!e){a.overlay.innerHTML=o,u.documentElement.appendChild(a.overlay);if(!a.foundGoodArticle)var f=a.overlay.getElementsByClassName("__av-noarticle")[0],l=f.addEventListener("touchend",function(e){e.target.className==="__av-noarticle"&&(f.removeEventListener(l),__articleView.turnOff())});a.addClass(u.body,"__av-body-hidden"),a.overlay.addEventListener("click",function(e){a.dbg.log("click on target "+e.target.tagName.toUpperCase(),e);var t=e.target||e.srcElement;if(t.tagName.toUpperCase()==="A"){var n=decodeURIComponent(t.getAttribute("data-url"));a.leaveAV(n)}})}},a.ammendMeta=function(){if(a.meta.author===""){var e=u.querySelector(".vcard .fn");e||(e=u.querySelector(".hcard .fn")),e||(e=u.getElementsByClassName("byline")[0]),e||(e=u.querySelector('a[rel="author"]')),e&&(a.meta.author=a.getInnerText(e).trim())}if(!a.meta.date){var t=u.getElementsByTagName("time")[0];t||(t=u.getElementsByClassName("date")[0]),t&&(a.meta.date=t.innerText.trim())}a.meta.author&&(a.meta.author=a.meta.author.replace(/by /i,""))},a.printMetadata=function(){if(a.DEBUG){var e='<div class="__av-meta __av-color"><ul>';for(var t in a.meta)a.meta[t]!==""&&(e+='<li><span class="metaName"> '+t+":</span> "+a.meta[t]+"</li>");return e+"</ul></div>"}return""},a.hideOverlay=function(){var e=u.getElementsByClassName(a.settings.overlayClass)[0];e&&(a.overlay.onscroll=null,u.documentElement.removeChild(e)),a.removeClass(u.body,"__av-body-hidden")},a.prepareDataFromSelection=function(e){var t=u.createElement("div");for(var n=0,r=e.length;n<r;n++)t.appendChild(e[n].cloneNode(1));return a.cleanByTags(t,["script","noscript","object","embed","iframe","style"]),a.cleanStyles(t),a.foundGoodArticle=1,t},a.run=function(e){var t=e&&e.nodes||[];a.data.coords=e&&e.coords||null,a.dbg.log("creating article view. Params ",t);var n;!t||!t instanceof Array||t.length===0?n=a.prepareData(t):n=a.prepareDataFromSelection(t),n===""&&t&&(a.dbg.warn("Unable to recover article from dom nodes ",t),a.dbg.warn("Trying to find article in the complete body "),n=a.prepareData()),a.data.article=n,a.showOverlay(e&&e.silent),a.gotData=!0;if(typeof a._callback=="function")try{a._callback()}catch(r){}},a.changeSettings=function(e){var t=u.getElementsByClassName(a.settings.overlayClass)[0];if(!t)return!1;t=t.contentWindow.document.body;var n=["bg","lh","m"];typeof e=="undefined"&&(e=a.settings.overlay);for(var r=0;r<n.length;r++)typeof e[n[r]]!="undefined"&&(a.removeClass(t,a.settings.bodyClass+"-"+n[r]+a.settings.overlay[n[r]]),a.settings.overlay[n[r]]=e[n[r]],a.addClass(t,a.settings.bodyClass+"-"+n[r]+a.settings.overlay[n[r]]))},a.getData=function(e,t){typeof t!="function"&&(t=function(e){a.sendStatus({article:"<doctype html><html><head><title>test</title><style></style><script></script></head><body>"+e.article+"</body></html>"})});var n=function(e,t){if(typeof e=="function")try{e(t)}catch(n){}};if(a.gotData){var r=a.data;return r.settings=a.settings.overlay,r.meta=a.meta,r.article=a.foundGoodArticle?a._articleText:"",r.gotArticle=a.foundGoodArticle,n(t,r),r}a.turnOn(e,function(){a.getData(null,t)},"silent")},a.handleSpecialEvents=function(t){t?(e.onerror=a.__onError,e.onscroll=a.__onScroll):(typeof e.onerror=="function"&&(a.__onError=e.onerror),e.onerror=function(e,t,n){a.dbg.error(e,t,n),a.sendStatus({status:"error"})},typeof e.onscroll=="function"&&(a.__onScroll=e.onScroll),e.onscroll=null)},a.turnOn=function(e,t,r){r||a.injectCSS(n),typeof t=="function"?a._callback=t:a._callback=function(){a.sendStatus({status:"ArticleView ready",scroll:a.lpr})},e&&typeof e=="object"?i.init(e,function(e){e.silent=r,a.run(e)}):a.run({silent:r}),!r},a.turnOff=function(e){a.dbg.log("removing article view"),a.hideOverlay(),a.handleSpecialEvents("release"),e&&a.sendStatus({status:"Inactive"})},{turnOn:a.turnOn,turnOff:a.turnOff,changeSettings:a.changeSettings,getData:a.getData,leave:a.leaveAV}}(e,t);return u}(window,window.document),Helper={loadSettings:function(e,t,n){__articleView.changeSettings({bg:e,lh:t,m:n})}};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment