This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/371660/624615/H2Bjs.js
// ==UserScript==
// @name H2B.js
// @namespace http://tampermonkey.net/
// @version 0.1
// @description A Javascript library that converts HTML to BBCode.
// @author You
// @match *
// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @grant none
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);
this.$.expr[':'].css = function(obj, index, meta) {
var args = meta[3].split(/\s*,\s*/);
return $(obj).css(args[0]) === args[1];
};
window.H2B = (function (){
'use strict';
function arrayUnique(array, property) {
var a = array.concat();
var i, j;
if (property) {
for (i = 0; i < a.length; ++i) {
for (j = i + 1; j < a.length; ++j) {
if(a[i][property] === a[j][property]){
a.splice(j--, 1);
}
}
}
} else {
for (i = 0; i < a.length; ++i) {
for (j = i + 1; j < a.length; ++j) {
if (a[i] === a[j]){
a.splice(j--, 1);
}
}
}
}
return a;
}
function BBTagRule(html_selector_l, nth_parent_s2l, html_tag_count, post_equal_info, bbtag_name){
//Properties
this.HTMLSelectorL = html_selector_l;
this.NthParentS2L = nth_parent_s2l;
this.HTMLTagCount = html_tag_count;
this.PostEqualInfo = post_equal_info;
this.BBTagName = bbtag_name;
//Methods
if(typeof this.getTarget !== 'function'){
BBTagRule.prototype.getTarget = function(mother_obj){
var target_obj = {
location: null,
substituion: null
};
target_obj.location = mother_obj.find(this.HTMLSelectorL).add(mother_obj.filter(this.HTMLSelectorL)).sort(function(a, b){
return $(b).parents().length - $(a).parents().length;
});
if(this.NthParentS2L >= 0){
var that = this;
target_obj.substituion = target_obj.location.map(function(){
return $(this).parents().eq(that.NthParentS2L)[0];
});
}
else{
target_obj.substituion = target_obj.location;
}
return target_obj;
};
}
if(typeof this.updateTarget !== 'function'){
BBTagRule.prototype.updateTarget = function(mother_obj){
var target_obj = this.getTarget(mother_obj);
this.PostEqualInfo.modifyTag(target_obj, this.BBTagName);
};
}
}
function MoreInfo(info_type, info_name, info_RegExp, info_cap_num, info_case_sensitive){
//Properties
this.InfoType = info_type;
this.InfoName = info_name;
this.InfoRegExp = info_RegExp;
this.InfoCapNum = info_cap_num;
this.InfoCaseSensitve = info_case_sensitive;
//Methods
if(typeof this.modifyTag !== 'function'){
MoreInfo.prototype.modifyTag = function(target_obj, bbtag_name){
var that = this;
target_obj.substituion.map(function(ind, e){
if(that.InfoType){
var info = $(e)[that.InfoType](that.InfoName);
if((e.tagName === 'IMG') && (!(info && validURL(info)))){
info = $(e)[that.InfoType]('src');
}
try{
var info_bb = info.match(that.InfoRegExp)[that.InfoCapNum];
e.outerHTML = '<' + bbtag_name + '=' + encodeURIComponent(info_bb) +
' class="$ez_h2b$"' +
(that.InfoCaseSensitve?(' _ez-upper_="' + getUpperLocation(info_bb) + '">'):'>') +
target_obj.location[ind].innerHTML + '</' + bbtag_name + '>';
}
catch(error){
H2B.moreinfo_error_cbk();
console.log(that);
console.log(error);
}
}
else{
try{
e.outerHTML = '<' + bbtag_name + ' class="$ez_h2b$">' +
target_obj.location[ind].innerHTML +
'</' + bbtag_name + '>';
}
catch(error){
H2B.moreinfo_error_cbk();
console.log(error);
}
}
return e;
});
};
}
}
function Replacer(rep_RegExp, rep_replacer){
this.RepRegExp = rep_RegExp;
this.RepReplacer = rep_replacer;
if(typeof this.replaceThis !== 'function'){
Replacer.prototype.replaceThis = function(text){
return text.replace(this.RepRegExp, this.RepReplacer);
};
}
}
function getUpperLocation(text){
var upper_info = [];
var char = '';
for (var i = 0; i < text.length; i++) {
char = text.charCodeAt(i);
if(char >= 65 && char<=90){
upper_info.push(i);
}
}
if(!upper_info.length){
return -1;
}
return upper_info.join(';');
}
function hex(x){
return ("0" + parseInt(x).toString(16)).slice(-2);
}
function validURL(str){
var pattern = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i;
if(!pattern.test(str)){
return false;
}
else{
return true;
}
}
function uniRep(txt){
H2B.universe_replace.forEach(function(e){
txt = e.replaceThis(txt);
});
return txt;
}
function finalRep(txt){
H2B.final_replace.forEach(function(e){
txt = e.replaceThis(txt);
});
return txt;
}
function deCode(txt){
txt = txt.replace(/<([^=>]+=)?([^> ]+)( _ez-upper_="([^>"]+)")?>/gi, function(match, p1, p2, p3, p4){
//BBtags without "=XXX"
if((!p1)&&p2&&(!p3)){
return '[' + p2 + ']';
}
//BBtags with "=XXX" but without captitalized characters
else if(p1&&p2&&(!p3)){
try{
p2 = decodeURIComponent(p2);
}
catch(error){}
if((p1 === 'color=') && !(/^#[0-9A-F]{6}$/i.test(p2))){
var rgb_array = null;
if((rgb_array = p2.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))){
p2 = "#" + hex(rgb_array[1]) + hex(rgb_array[2]) + hex(rgb_array[3]);
}
}
if((p1 === 'url=')||(p1 === 'img=')){
H2B.redirect_list.forEach(function(e){
p2 = e.replaceThis(p2);
});
}
return '[' + p1 + p2 + ']';
}
//BBtags with "=XXX" with captitalized characters
else if(p1&&p2&&p3){
try{
p2 = decodeURIComponent(p2);
}
catch(error){}
var new_p = p2.split('');
p4.split(';').forEach(function(e){
new_p[e] = new_p[e].toUpperCase();
});
p2 = new_p.join('');
//Strip off redirection prefix
if((p1 === 'url=')||(p1 === 'img=')){
H2B.redirect_list.forEach(function(e){
p2 = e.replaceThis(p2);
});
}
return '[' + p1 + p2 + ']';
}
});
return txt;
}
var H2B ={
gazelle_uni_rules: {
'base': /.+/,
'rules': {
'jquery': {
'b': new BBTagRule('strong', -1, 2, new MoreInfo(), 'b'),
'i': new BBTagRule('em', -1, 2, new MoreInfo(), 'i'),
'u': new BBTagRule('span:css(text-decoration, underline)', -1, 2, new MoreInfo(), 'u'),
'u1': new BBTagRule('u', -1, 2, new MoreInfo(), 'u'),
's': new BBTagRule('span:css(text-decoration, line-through)', -1, 2, new MoreInfo(), 's'),
's1': new BBTagRule('s', -1, 2, new MoreInfo(), 's'),
'hr': new BBTagRule('hr', -1, 1, new MoreInfo(), 'hr'),
'p': new BBTagRule('p:not(blockquote.quote>p,p.sub)', -1, 2, new MoreInfo(), 'paragraph'),
'spoiler': new BBTagRule('div>div.quotetitle+div.quotecontent>div', 1, 2, new MoreInfo(), 'spoiler'),
'spoiler1': new BBTagRule('blockquote.spoiler', -1, 2, new MoreInfo(), 'spoiler'),
'spoiler2': new BBTagRule('div[style*="margin-top:5px; padding:5px; border: 1px solid #333"]>div[style^="display"]', -1, 2, new MoreInfo(), 'spoiler'),
'align': new BBTagRule('div[style*="text-align"]', -1, 2, new MoreInfo('css', 'text-align', /center|left|right/i, 0, 0), 'align'),
'color': new BBTagRule('span[style*="color"]:not(.spoiler)', -1, 2, new MoreInfo('css', 'color', /.+/, 0, 0), 'color'),
'font': new BBTagRule('span[style*="font-family"]', -1, 2, new MoreInfo('css', 'font-family', /.+/, 0, 0), 'font'),
'size': new BBTagRule('span[class^="size"],span[class^="bbcode-size-"]', -1, 2, new MoreInfo('prop', 'class', /\d+/, 0, 0), 'size'),
'url': new BBTagRule('a[href]:not([onclick^="QuoteJump"])', -1, 2, new MoreInfo('prop', 'href', /.+/, 0, 1), 'url'),
'img': new BBTagRule('img[src]', -1, 1, new MoreInfo('prop', 'alt', /.+/, 0, 1), 'img'),
'quote': new BBTagRule('blockquote:not(.spoiler)', -1, 2, new MoreInfo(), 'quote'),
'quote1': new BBTagRule('a[onclick^="QuoteJump"]', -1, 2, new MoreInfo('attr', 'onclick', /QuoteJump\(event, '[^']+'\)/, 0, 0), 'url'),
'star': new BBTagRule('li', -1, 1, new MoreInfo(), 'star'),
'pre': new BBTagRule('pre:not(.prettyprint.linenums)', -1, 2, new MoreInfo(), 'pre'),
'code': new BBTagRule('code', -1, 2, new MoreInfo(), 'code'),
'comparison': new BBTagRule('a[onclick^="BBCode.ScreenshotComparisonToggleShow"]', -1, 2, new MoreInfo('attr', 'onclick', /.+/, 0, 1), 'comparison'),
'indent': new BBTagRule('div.bbcode_indent', -1, 2, new MoreInfo(), 'indent'),
'video': new BBTagRule('iframe.youtube-player', -1, 2, new MoreInfo('prop', 'src', /embed\/([^?]+)\?/, 1, 1), 'video')
},
'string': {
'quote': new Replacer(/<b class="\$ez_h2b\$">([^<]+)<\/b> [wW]rote: (<quote)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3){
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}),
'quote1': new Replacer(/<url=quotejump\(event%2c%20'([^']+)'\) class="\$ez_h2b\$"><b class="\$ez_h2b\$">([^<]+)<\/b> [wW]rote: <\/url=[^>]+>(<quote)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3, p4){
return p3 + '=' + encodeURIComponent(p2 + '|' + p1 + '|undefined') + p4 + ' _ez-upper_="' + getUpperLocation(p2) + '">';
}),
'quote2': new Replacer(/<b class="\$ez_h2b\$">([^<]+) [wW]rote: <\/b>(<quote)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3){
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}),
'quote3': new Replacer(/<b class="\$ez_h2b\$">([^<]+) [wW]rote:<\/b> <url=([^>]+)><img=[^>]+><\/img=[^>]+><\/url=[^>]+>(<quote)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3, p4){
try{
return p3 + '=' + encodeURIComponent(p1 + ':f' + p2.match(/threadid%3d([^%]+)%/)[1] + ':' + p2.match(/postid%3d([^%]+)%/)[1]) + p4 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
catch(error){
return p3 + '=' + encodeURIComponent(p1 + ':t' + p2.match(/%3fid%3d([^%]+)%/)[1] + ':' + p2.match(/postid%3d([^%]+)%/)[1]) + p4 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
}),//
'spoiler1': new Replacer(/<b class="\$ez_h2b\$">([^<]+)<\/b>: <url=[^>]+>(?:Hide|Show)<\/url=[^>]+>(<spoiler)( class="\$ez_h2b\$")>/g, function(match, p1, p2 ,p3){
if(p1==='Hidden text'){
return p2 + p3 +'>';
}
else{
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
}),
'spoiler2': new Replacer(/<b class="\$ez_h2b\$">([^<]+)<\/b> <url=[^>]+>\[(?:hide|show)\]<\/url=[^>]+>(<spoiler)( class="\$ez_h2b\$")>/g, function(match, p1, p2 ,p3){
if(p1==='Spoiler'){
return p2 + p3 +'>';
}
else{
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
}),
'hide': new Replacer(/<b class="\$ez_h2b\$">([^<]+)<\/b>: <url=[^>]+>(?:Hide|Show)<\/url=[^>]+>(<hide)( class="\$ez_h2b\$")>/g, function(match, p1, p2 ,p3){
if(p1==='Spoiler'){
return p2 + p3 +'>';
}
else{
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
}),
'mi': new Replacer(/<url=[^>]+>[^<]+<\/url=[^>]+><hide class="\$ez_h2b\$">((?:(?!<\/hide>)[\s\S])+)<\/hide>/g, '<mi class="$ez_h2b$">$1</mi>'),
'img': new Replacer(/<\/img=[^>]+>/g, ''),
'url': new Replacer(/<url=[^>]+><\/url=[^>]+>/g, ''),
'hr': new Replacer(/<\/hr>/g, ''),
'comparison': new Replacer(/<b class="\$ez_h2b\$">[^<]+<\/b>: <comparison=([^ >]+) class="\$ez_h2b\$" _ez-upper_="([^"]+)">Show comparison<\/comparison=[^>]+>/g, function(match, p1, p2){
p1 = decodeURIComponent(p1);
var new_p = p1.split('');
if(p2!=='-1'){
p2.split(';').forEach(function(e){
new_p[e] = new_p[e].toUpperCase();
});
}
p1 = new_p.join('').replace(/\\\//g,'/');
return p1.replace(/^[^[]+\[([^\]]+)\], \[([^\]]+)\].+$/, function(match, sp1, sp2){
var info_bb = sp1.split(',').map(function(e){
return e.slice(1,-1);
}).join(',');
var inner_txt = sp2.split(',').map(function(e){
return e.slice(1,-1);
}).join('<br>');
return '<comparison=' + encodeURIComponent(info_bb) + ' class="$ez_h2b$" _ez-upper_="' + getUpperLocation(info_bb) + '">' + inner_txt + '</comparison=' + encodeURIComponent(info_bb) + '>';
});
}),
'video': new Replacer(/<video=([^> ]+) class="\$ez_h2b\$" _ez-upper_="([^"]+)"><\/video=[^>]+>/, function(match, p1, p2){
p1 = decodeURIComponent(p1);
var new_p = p1.split('');
if(p2!=='-1'){
p2.split(';').forEach(function(e){
new_p[e] = new_p[e].toUpperCase();
});
}
p1 = new_p.join('');
return '<video class="$ez_h2b$">http://www.youtube.com/watch?v=' + p1 + '</video>';
}),
'mention': new Replacer(/<user class="\$ez_h2b\$">(@[^<]+)<\/user>/g, '$1')
}
}
},
nexusphp_uni_rules: {
'base': /.+/,
'rules': {
'jquery': {
'b': new BBTagRule('b:not(blockquote.quote>span.nowrap>a.username>b)', -1, 2, new MoreInfo(), 'b'),
'b2': new BBTagRule('strong', -1, 2, new MoreInfo(), 'b'),
'i': new BBTagRule('i', -1, 2, new MoreInfo(), 'i'),
'u': new BBTagRule('u', -1, 2, new MoreInfo(), 'u'),
'del': new BBTagRule('del', -1, 2, new MoreInfo(), 'del'),
'hr': new BBTagRule('hr', -1, 1, new MoreInfo(), 'hr'),
'center': new BBTagRule('div[style*="text-align:center"]', -1, 2, new MoreInfo(), 'center'),
'center2': new BBTagRule('center', -1, 2, new MoreInfo(), 'center'),
'center3': new BBTagRule('div[align*="center"]', -1, 2, new MoreInfo(), 'center'),
'right': new BBTagRule('div[style*="text-align:right"]', -1, 2, new MoreInfo(), 'right'),
'right2': new BBTagRule('div[align*="right"]', -1, 2, new MoreInfo(), 'right'),
'left': new BBTagRule('div[style*="text-align:left"]', -1, 2, new MoreInfo(), 'left'),
'left2': new BBTagRule('div[align*="left"]', -1, 2, new MoreInfo(), 'left'),
'color': new BBTagRule('span[style*="color"]', -1, 2, new MoreInfo('css', 'color', /.+/, 0, 0), 'color'),
'color2': new BBTagRule('font[color]', -1, 2, new MoreInfo('prop', 'color', /.+/, 0, 0), 'color'),
'font': new BBTagRule('font[face]', -1, 2, new MoreInfo('prop', 'face', /.+/, 0, 0), 'font'),
'size': new BBTagRule('font[size]', -1, 2, new MoreInfo('prop', 'size', /.+/, 0, 0), 'size'),
'url': new BBTagRule('a[href]:not(.username)', -1, 2, new MoreInfo('prop', 'href', /.+/, 0, 1), 'url'),
'img': new BBTagRule('img[src]:not(.listicon)', -1, 1, new MoreInfo('prop', 'src', /.+/, 0, 1), 'img'),
'p': new BBTagRule('p:not(blockquote.quote>p,p.sub)', -1, 2, new MoreInfo(), 'paragraph'),
'quotehead': new BBTagRule('blockquote.quote>p,p.sub', -1, 2, new MoreInfo(), 'quotehead'),
'quotehead2': new BBTagRule('blockquote.quote>span.nowrap>a.username>b', 1, 2, new MoreInfo(), 'quotehead'),
'quote': new BBTagRule('fieldset,blockquote.quote', -1, 2, new MoreInfo(), 'quote'),
'quote2': new BBTagRule('table.main>tbody>tr>td[style*="dotted"]', 2, 2, new MoreInfo(), 'quote'),
'xp': new BBTagRule('img.listicon', -1, 1, new MoreInfo(), 'xp'),
'ol': new BBTagRule('ol', -1, 2, new MoreInfo(), 'ol'),
'ul': new BBTagRule('ul', -1, 2, new MoreInfo(), 'ul'),
'li': new BBTagRule('ol>li, ul>li', -1, 2, new MoreInfo(), 'li'),
'star': new BBTagRule('li:not(ol>li, ul>li)', -1, 1, new MoreInfo(), 'star'),
'pre': new BBTagRule('pre:not(.prettyprint.linenums)', -1, 2, new MoreInfo(), 'pre'),
'pre2': new BBTagRule('tt>nobr', 0, 2, new MoreInfo(), 'pre'),
'code': new BBTagRule('div.codemain', -1, 2, new MoreInfo(), 'code'),
'code2': new BBTagRule('pre.prettyprint.linenums', -1, 2, new MoreInfo(), 'code'),
'box': new BBTagRule('div.spoiler_body', -1, 2, new MoreInfo(), 'box'),
'boxhead': new BBTagRule('div.spoiler_head', -1, 2, new MoreInfo(), 'boxhead'),
'table': new BBTagRule('table', -1, 2, new MoreInfo(), 'table'),
'tr': new BBTagRule('tr', -1, 2, new MoreInfo(), 'tr'),
'td': new BBTagRule('td', -1, 2, new MoreInfo(), 'td')
},
'string': {
'img': new Replacer(/<\/img=[^>]+>/g, ''),
'url': new Replacer(/<url=[^>]+><\/url=[^>]+>/g, ''),
'quote': new Replacer(/(<quote)( class="\$ez_h2b\$")>[^:<]+:? (?:([^<]+) )?<br>/g, function(match, p1, p2, p3){
if(p3){
return p1 + '=' + encodeURIComponent(p3) + p2 + ' _ez-upper_="' + getUpperLocation(p3) + '">';
}
else{
return p1 + p2 + '>';
}
}),
'quote2': new Replacer(/(<quote)( class="\$ez_h2b\$")>(?:引用: )?(?:<quotehead class="\$ez_h2b\$">)?([^<]+)(?:<\/quotehead><br>|<\/quotehead>|<br>)/g, function(match, p1, p2, p3){
if(p3 !== ' 引用 '){
return p1 + '=' + encodeURIComponent(p3) + p2 + ' _ez-upper_="' + getUpperLocation(p3) + '">';
}
else{
return p1 + p2 + '>';
}
}),
'quote3': new Replacer(/<quotehead class="\$ez_h2b\$"><b class="\$ez_h2b\$">(?:([^<]+) wrote:|Quote:)<\/b><\/quotehead>(<quote)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3){
if(p1){
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
else{
return p2 + p3 + '>';
}
}),
'box': new Replacer(/<boxhead class="\$ez_h2b\$">([^<]*)<\/boxhead>(<box)( class="\$ez_h2b\$")>/g, function(match, p1, p2, p3){
if(p1 && p1!=='collapsed text' && p1!=='隐藏内容'){
return p2 + '=' + encodeURIComponent(p1) + p3 + ' _ez-upper_="' + getUpperLocation(p1) + '">';
}
else{
return p2 + p3 + '>';
}
}),
'hr': new Replacer(/<\/hr>/g, ''),
'codeend': new Replacer(/(<\/code>)<br>/g, '$1'),
'codehead': new Replacer(/<br>(<code class="\$ez_h2b\$">)/g, '$1'),
}
}
},
universe_replace: [
new Replacer(/<([^> ]+) class="\$ez_h2b\$"/g, '<$1'),
new Replacer(/ _ez-upper_="-1"/g, ''),
new Replacer(/\n/g, ''),
new Replacer(/<br>/g, '\n'),
new Replacer(/(<\/[^=>]+)=[^>]+>/g, '$1>'),
new Replacer(/([^\n])<star>/g, '$1\n<star>'),
new Replacer(/([^\n])<xp>/g, '$1\n<xp>'),
new Replacer(/<\/star>([^\n])/g, '\n$1'),
new Replacer(/<\/star>/g, ''),
new Replacer(/<\/xp>/g, ''),
new Replacer(/<star>/g, '<*>'),
new Replacer(/<xp>/g, '<*>'),
new Replacer(/<paragraph>/g, ''),
new Replacer(/<\/paragraph>/g, '\n'),
new Replacer(/<\/?tbody>/g, ''),
new Replacer(/"e;/g, '"'),
new Replacer(/</g, '<'),
new Replacer(/>/g, '>'),
new Replacer(/&/g, '&'),
new Replacer(/ /g, ' ')
],
final_replace: [
new Replacer(/\[img=([^\]]+)](?:\[\/img\])?/g, '[img]$1[/img]'),
],
redirect_list: [
new Replacer(/^https?:\/\/anonym\.to\/\?(.+$)/, '$1'),
new Replacer(/^https?:\/\/anon\.to\/\?(.+$)/, '$1'),
new Replacer(/^https?:\/\/nullrefer\.com\/\?(.+$)/, '$1'),
new Replacer(/^https?:\/\/blankrefer\.com\/\?(.+$)/, '$1'),
new Replacer(/^https?:\/\/www\.dereferer\.org\/\?(.+$)/, function(match, p1){
return decodeURIComponent(p1);
})//...to be continued
],
black_list: ['script','table.mediainfo','div.codetop','span.fa'].join(',')
};
/*--AHD--*/
H2B.ahd_rules = $.extend(true, {}, H2B.gazelle_uni_rules);
H2B.ahd_rules.base = 'awesome-hd.me';
/*--UHD--*/
H2B.uhd_rules = $.extend(true, {}, H2B.gazelle_uni_rules);
H2B.uhd_rules.base = 'uhdbits.org';
delete H2B.uhd_rules.rules.string.img;
delete H2B.uhd_rules.rules.string.url;
/*--PTP--*/
H2B.ptp_rules = $.extend(true, {}, H2B.gazelle_uni_rules);
H2B.ptp_rules.base = 'passthepopcorn.me';
H2B.ptp_rules.rules.jquery.spoiler1 = new BBTagRule('span.spoiler', -1, 2, new MoreInfo(), 'spoiler');
H2B.ptp_rules.rules.jquery.hide = new BBTagRule('blockquote.spoiler', -1, 2, new MoreInfo(), 'hide');
H2B.ptp_rules.rules.jquery.user = new BBTagRule('a[href^="user.php?action=search&search="]', -1, 2, new MoreInfo(), 'user');
H2B.ptp_rules.rules.jquery.artist = new BBTagRule('a[href^="artist.php?artistname="]', -1, 2, new MoreInfo(), 'artist');
H2B.ptp_rules.rules.jquery.movie = new BBTagRule('a[href^="torrents.php?searchstr="]', -1, 2, new MoreInfo(), 'movie');
H2B.ptp_rules.rules.jquery.url = new BBTagRule('a[href]:not('+[
H2B.ptp_rules.rules.jquery.user.HTMLSelectorL,
H2B.ptp_rules.rules.jquery.artist.HTMLSelectorL,
H2B.ptp_rules.rules.jquery.movie.HTMLSelectorL,
H2B.ptp_rules.rules.jquery.comparison.HTMLSelectorL,
].join(',')+')', -1, 2, new MoreInfo('prop', 'href', /.+/i, 0, 1), 'url');
/*--BTN--*/
H2B.btn_rules = $.extend(true, {}, H2B.gazelle_uni_rules);
H2B.btn_rules.base = 'broadcasthe.net';
/*--NHD--*/
H2B.nhd_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.nhd_rules.base = 'nexushd.org';
H2B.nhd_rules.rules.string.quoteend = new Replacer(/(<\/quote[^>]*>)<br>/g, '$1');
/*--NPU--*/
H2B.npu_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.npu_rules.base = 'npupt.com';
/*--TTG--*/
H2B.ttg_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.ttg_rules.base = 'totheglory.im';
/*--HDChina--*/
H2B.hdc_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.hdc_rules.base = 'hdchina.org';
/*--Ourbits--*/
H2B.ob_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.ob_rules.base = 'ourbits.club';
/*--HDHome--*/
H2B.hdh_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.hdh_rules.base = 'hdhome.org';
/*--TorViet--*/
H2B.torviet_rules = $.extend(true, {}, H2B.nexusphp_uni_rules);
H2B.torviet_rules.base = 'torviet.com';
/*--Univers--*/
H2B.universe_rules = {
'base': /.+/,
'rules': {
'jquery': null,
'string': null
}
};
H2B.universe_rules.rules.jquery = arrayUnique(Object.values(H2B.nexusphp_uni_rules.rules.jquery).concat(Object.values(H2B.gazelle_uni_rules.rules.jquery)), null);
H2B.universe_rules.rules.string = arrayUnique(Object.values(H2B.nexusphp_uni_rules.rules.string).concat(Object.values(H2B.gazelle_uni_rules.rules.string)), null);
H2B.h2b_rules = [H2B.ahd_rules,
H2B.uhd_rules,
H2B.ptp_rules,
H2B.btn_rules,
H2B.nhd_rules,
H2B.npu_rules,
H2B.ttg_rules,
H2B.hdc_rules,
H2B.ob_rules,
H2B.hdh_rules,
H2B.torviet_rules];
H2B.moreinfo_error_cbk = function(){return 0;},
H2B.HTML2BBCode = function (content){
var description_obj;
description_obj = $('<ezentity>').append($(content).clone());
description_obj.find(H2B.black_list).add(description_obj.filter(H2B.black_list)).remove();
$(description_obj.find('*').add(description_obj.filter('*')).contents().filter(function(){
return this.nodeType == 8;
})).remove();
var description_txt = description_obj[0].innerHTML.trim();
if(!H2B.h2b_rules.some(function(e_0){
if(window.location.href.match(e_0.base)){
Object.values(e_0.rules.jquery).forEach(function(e_1){
e_1.updateTarget(description_obj);
});
description_obj.find(':not([class="$ez_h2b$"],br)').sort(function(a, b){
return $(b).parents().length - $(a).parents().length;
}).map(function(){
this.outerHTML = this.innerHTML;
});
description_txt = description_obj[0].innerHTML.trim();
Object.values(e_0.rules.string).forEach(function(e_1){
description_txt = e_1.replaceThis(description_txt);
});
return true;
}
})){
H2B.universe_rules.rules.jquery.forEach(function(e_1){
e_1.updateTarget(description_obj);
});
description_obj.find(':not([class="$ez_h2b$"],br)').sort(function(a, b){
return $(b).parents().length - $(a).parents().length;
}).map(function(){
this.outerHTML = this.innerHTML;
});
description_txt = description_obj[0].innerHTML.trim();
//console.log(description_txt);
H2B.universe_rules.rules.string.forEach(function(e_1){
description_txt = e_1.replaceThis(description_txt);
});
}
description_txt = uniRep(description_txt);
description_txt = deCode(description_txt);
description_txt = finalRep(description_txt);
return description_txt;
}
return H2B;
}());