aboutsummaryrefslogtreecommitdiffstats
path: root/js/user-rules.js
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2019-08-11 19:58:26 -0500
committerJesús <heckyel@hyperbola.info>2019-08-11 19:58:26 -0500
commit9ec39f09621c9975582a2b6d9a6fa0313b308086 (patch)
tree918786fdf371606f80bc9cdfbc2966909703e9bf /js/user-rules.js
parent144581a54b8bb1808e23a3ea5c81e619e36a459f (diff)
downloadematrix-9ec39f09621c9975582a2b6d9a6fa0313b308086.tar.lz
ematrix-9ec39f09621c9975582a2b6d9a6fa0313b308086.tar.xz
ematrix-9ec39f09621c9975582a2b6d9a6fa0313b308086.zip
remove tabs in javascript files
Diffstat (limited to 'js/user-rules.js')
-rw-r--r--js/user-rules.js513
1 files changed, 256 insertions, 257 deletions
diff --git a/js/user-rules.js b/js/user-rules.js
index 3197284..02ff787 100644
--- a/js/user-rules.js
+++ b/js/user-rules.js
@@ -29,314 +29,313 @@
(function() {
-/******************************************************************************/
-
-// Switches before, rules after
+ /******************************************************************************/
-var directiveSort = function(a, b) {
- var aIsSwitch = a.indexOf(':') !== -1;
- var bIsSwitch = b.indexOf(':') !== -1;
- if ( aIsSwitch === bIsSwitch ) {
- return a.localeCompare(b);
- }
- return aIsSwitch ? -1 : 1;
-};
+ // Switches before, rules after
-/******************************************************************************/
+ var directiveSort = function(a, b) {
+ var aIsSwitch = a.indexOf(':') !== -1;
+ var bIsSwitch = b.indexOf(':') !== -1;
+ if ( aIsSwitch === bIsSwitch ) {
+ return a.localeCompare(b);
+ }
+ return aIsSwitch ? -1 : 1;
+ };
-var processUserRules = function(response) {
- var rules, rule, i;
- var allRules = {};
- var permanentRules = {};
- var temporaryRules = {};
- var onLeft, onRight;
-
- rules = response.permanentRules.split(/\n+/);
- i = rules.length;
- while ( i-- ) {
- rule = rules[i].trim();
- if ( rule.length !== 0 ) {
- permanentRules[rule] = allRules[rule] = true;
+ /******************************************************************************/
+
+ var processUserRules = function(response) {
+ var rules, rule, i;
+ var allRules = {};
+ var permanentRules = {};
+ var temporaryRules = {};
+ var onLeft, onRight;
+
+ rules = response.permanentRules.split(/\n+/);
+ i = rules.length;
+ while ( i-- ) {
+ rule = rules[i].trim();
+ if ( rule.length !== 0 ) {
+ permanentRules[rule] = allRules[rule] = true;
+ }
}
- }
- rules = response.temporaryRules.split(/\n+/);
- i = rules.length;
- while ( i-- ) {
- rule = rules[i].trim();
- if ( rule.length !== 0 ) {
- temporaryRules[rule] = allRules[rule] = true;
+ rules = response.temporaryRules.split(/\n+/);
+ i = rules.length;
+ while ( i-- ) {
+ rule = rules[i].trim();
+ if ( rule.length !== 0 ) {
+ temporaryRules[rule] = allRules[rule] = true;
+ }
}
- }
- var permanentList = document.createDocumentFragment(),
- temporaryList = document.createDocumentFragment(),
- li;
-
- rules = Object.keys(allRules).sort(directiveSort);
- for ( i = 0; i < rules.length; i++ ) {
- rule = rules[i];
- onLeft = permanentRules.hasOwnProperty(rule);
- onRight = temporaryRules.hasOwnProperty(rule);
- if ( onLeft && onRight ) {
- li = document.createElement('li');
- li.textContent = rule;
- permanentList.appendChild(li);
- li = document.createElement('li');
- li.textContent = rule;
- temporaryList.appendChild(li);
- } else if ( onLeft ) {
- li = document.createElement('li');
- li.textContent = rule;
- permanentList.appendChild(li);
- li = document.createElement('li');
- li.textContent = rule;
- li.className = 'notRight toRemove';
- temporaryList.appendChild(li);
- } else if ( onRight ) {
- li = document.createElement('li');
- li.textContent = '\xA0';
- permanentList.appendChild(li);
- li = document.createElement('li');
- li.textContent = rule;
- li.className = 'notLeft';
- temporaryList.appendChild(li);
+ var permanentList = document.createDocumentFragment(),
+ temporaryList = document.createDocumentFragment(),
+ li;
+
+ rules = Object.keys(allRules).sort(directiveSort);
+ for ( i = 0; i < rules.length; i++ ) {
+ rule = rules[i];
+ onLeft = permanentRules.hasOwnProperty(rule);
+ onRight = temporaryRules.hasOwnProperty(rule);
+ if ( onLeft && onRight ) {
+ li = document.createElement('li');
+ li.textContent = rule;
+ permanentList.appendChild(li);
+ li = document.createElement('li');
+ li.textContent = rule;
+ temporaryList.appendChild(li);
+ } else if ( onLeft ) {
+ li = document.createElement('li');
+ li.textContent = rule;
+ permanentList.appendChild(li);
+ li = document.createElement('li');
+ li.textContent = rule;
+ li.className = 'notRight toRemove';
+ temporaryList.appendChild(li);
+ } else if ( onRight ) {
+ li = document.createElement('li');
+ li.textContent = '\xA0';
+ permanentList.appendChild(li);
+ li = document.createElement('li');
+ li.textContent = rule;
+ li.className = 'notLeft';
+ temporaryList.appendChild(li);
+ }
}
- }
- // TODO: build incrementally.
+ // TODO: build incrementally.
- uDom('#diff > .left > ul > li').remove();
- document.querySelector('#diff > .left > ul').appendChild(permanentList);
- uDom('#diff > .right > ul > li').remove();
- document.querySelector('#diff > .right > ul').appendChild(temporaryList);
- uDom('#diff').toggleClass('dirty', response.temporaryRules !== response.permanentRules);
-};
+ uDom('#diff > .left > ul > li').remove();
+ document.querySelector('#diff > .left > ul').appendChild(permanentList);
+ uDom('#diff > .right > ul > li').remove();
+ document.querySelector('#diff > .right > ul').appendChild(temporaryList);
+ uDom('#diff').toggleClass('dirty', response.temporaryRules !== response.permanentRules);
+ };
-/******************************************************************************/
+ /******************************************************************************/
-// https://github.com/chrisaljoudi/uBlock/issues/757
-// Support RequestPolicy rule syntax
+ // https://github.com/chrisaljoudi/uBlock/issues/757
+ // Support RequestPolicy rule syntax
-var fromRequestPolicy = function(content) {
- var matches = /\[origins-to-destinations\]([^\[]+)/.exec(content);
- if ( matches === null || matches.length !== 2 ) {
- return;
- }
- return matches[1].trim()
- .replace(/\|/g, ' ')
- .replace(/\n/g, ' * allow\n');
-};
+ var fromRequestPolicy = function(content) {
+ var matches = /\[origins-to-destinations\]([^\[]+)/.exec(content);
+ if ( matches === null || matches.length !== 2 ) {
+ return;
+ }
+ return matches[1].trim()
+ .replace(/\|/g, ' ')
+ .replace(/\n/g, ' * allow\n');
+ };
-/******************************************************************************/
+ /******************************************************************************/
-// https://github.com/gorhill/uMatrix/issues/270
+ // https://github.com/gorhill/uMatrix/issues/270
-var fromNoScript = function(content) {
- var noscript = null;
- try {
- noscript = JSON.parse(content);
- } catch (e) {
- }
- if (
- noscript === null ||
- typeof noscript !== 'object' ||
- typeof noscript.prefs !== 'object' ||
- typeof noscript.prefs.clearClick === 'undefined' ||
- typeof noscript.whitelist !== 'string' ||
- typeof noscript.V !== 'string'
- ) {
- return;
- }
- var out = new Set();
- var reBad = /[a-z]+:\w*$/;
- var reURL = /[a-z]+:\/\/([0-9a-z.-]+)/;
- var directives = noscript.whitelist.split(/\s+/);
- var i = directives.length;
- var directive, matches;
- while ( i-- ) {
- directive = directives[i].trim();
- if ( directive === '' ) {
- continue;
+ var fromNoScript = function(content) {
+ var noscript = null;
+ try {
+ noscript = JSON.parse(content);
+ } catch (e) {
}
- if ( reBad.test(directive) ) {
- continue;
+ if (
+ noscript === null ||
+ typeof noscript !== 'object' ||
+ typeof noscript.prefs !== 'object' ||
+ typeof noscript.prefs.clearClick === 'undefined' ||
+ typeof noscript.whitelist !== 'string' ||
+ typeof noscript.V !== 'string'
+ ) {
+ return;
}
- matches = reURL.exec(directive);
- if ( matches !== null ) {
- directive = matches[1];
+ var out = new Set();
+ var reBad = /[a-z]+:\w*$/;
+ var reURL = /[a-z]+:\/\/([0-9a-z.-]+)/;
+ var directives = noscript.whitelist.split(/\s+/);
+ var i = directives.length;
+ var directive, matches;
+ while ( i-- ) {
+ directive = directives[i].trim();
+ if ( directive === '' ) {
+ continue;
+ }
+ if ( reBad.test(directive) ) {
+ continue;
+ }
+ matches = reURL.exec(directive);
+ if ( matches !== null ) {
+ directive = matches[1];
+ }
+ out.add('* ' + directive + ' * allow');
+ out.add('* ' + directive + ' script allow');
+ out.add('* ' + directive + ' frame allow');
}
- out.add('* ' + directive + ' * allow');
- out.add('* ' + directive + ' script allow');
- out.add('* ' + directive + ' frame allow');
- }
- return Array.from(out).join('\n');
-};
+ return Array.from(out).join('\n');
+ };
-/******************************************************************************/
+ /******************************************************************************/
-var handleImportFilePicker = function() {
- var fileReaderOnLoadHandler = function() {
- if ( typeof this.result !== 'string' || this.result === '' ) {
- return;
- }
- var result = fromRequestPolicy(this.result);
- if ( result === undefined ) {
- result = fromNoScript(this.result);
+ var handleImportFilePicker = function() {
+ var fileReaderOnLoadHandler = function() {
+ if ( typeof this.result !== 'string' || this.result === '' ) {
+ return;
+ }
+ var result = fromRequestPolicy(this.result);
if ( result === undefined ) {
- result = this.result;
+ result = fromNoScript(this.result);
+ if ( result === undefined ) {
+ result = this.result;
+ }
}
- }
- if ( this.result === '' ) { return; }
- var request = {
- 'what': 'setUserRules',
- 'temporaryRules': rulesFromHTML('#diff .right li') + '\n' + result
+ if ( this.result === '' ) { return; }
+ var request = {
+ 'what': 'setUserRules',
+ 'temporaryRules': rulesFromHTML('#diff .right li') + '\n' + result
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
+ var file = this.files[0];
+ if ( file === undefined || file.name === '' ) {
+ return;
+ }
+ if ( file.type.indexOf('text') !== 0 && file.type !== 'application/json') {
+ return;
+ }
+ var fr = new FileReader();
+ fr.onload = fileReaderOnLoadHandler;
+ fr.readAsText(file);
};
- var file = this.files[0];
- if ( file === undefined || file.name === '' ) {
- return;
- }
- if ( file.type.indexOf('text') !== 0 && file.type !== 'application/json') {
- return;
- }
- var fr = new FileReader();
- fr.onload = fileReaderOnLoadHandler;
- fr.readAsText(file);
-};
-/******************************************************************************/
+ /******************************************************************************/
-var startImportFilePicker = function() {
- var input = document.getElementById('importFilePicker');
- // Reset to empty string, this will ensure an change event is properly
- // triggered if the user pick a file, even if it is the same as the last
- // one picked.
- input.value = '';
- input.click();
-};
-
-/******************************************************************************/
+ var startImportFilePicker = function() {
+ var input = document.getElementById('importFilePicker');
+ // Reset to empty string, this will ensure an change event is properly
+ // triggered if the user pick a file, even if it is the same as the last
+ // one picked.
+ input.value = '';
+ input.click();
+ };
-function exportUserRulesToFile() {
- vAPI.download({
- 'url': 'data:text/plain,' + encodeURIComponent(rulesFromHTML('#diff .left li') + '\n'),
- 'filename': uDom('[data-i18n="userRulesDefaultFileName"]').text()
- });
-}
+ /******************************************************************************/
-/******************************************************************************/
+ function exportUserRulesToFile() {
+ vAPI.download({
+ 'url': 'data:text/plain,' + encodeURIComponent(rulesFromHTML('#diff .left li') + '\n'),
+ 'filename': uDom('[data-i18n="userRulesDefaultFileName"]').text()
+ });
+ }
-var rulesFromHTML = function(selector) {
- var rules = [];
- var lis = uDom(selector);
- var li;
- for ( var i = 0; i < lis.length; i++ ) {
- li = lis.at(i);
- if ( li.hasClassName('toRemove') ) {
- rules.push('');
- } else {
- rules.push(li.text());
+ /******************************************************************************/
+
+ var rulesFromHTML = function(selector) {
+ var rules = [];
+ var lis = uDom(selector);
+ var li;
+ for ( var i = 0; i < lis.length; i++ ) {
+ li = lis.at(i);
+ if ( li.hasClassName('toRemove') ) {
+ rules.push('');
+ } else {
+ rules.push(li.text());
+ }
}
- }
- return rules.join('\n');
-};
+ return rules.join('\n');
+ };
-/******************************************************************************/
+ /******************************************************************************/
-var revertHandler = function() {
- var request = {
- 'what': 'setUserRules',
- 'temporaryRules': rulesFromHTML('#diff .left li')
+ var revertHandler = function() {
+ var request = {
+ 'what': 'setUserRules',
+ 'temporaryRules': rulesFromHTML('#diff .left li')
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
-};
-/******************************************************************************/
+ /******************************************************************************/
-var commitHandler = function() {
- var request = {
- 'what': 'setUserRules',
- 'permanentRules': rulesFromHTML('#diff .right li')
+ var commitHandler = function() {
+ var request = {
+ 'what': 'setUserRules',
+ 'permanentRules': rulesFromHTML('#diff .right li')
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
-};
-/******************************************************************************/
+ /******************************************************************************/
-var editStartHandler = function() {
- uDom('#diff .right textarea').val(rulesFromHTML('#diff .right li'));
- var parent = uDom(this).ancestors('#diff');
- parent.toggleClass('edit', true);
-};
+ var editStartHandler = function() {
+ uDom('#diff .right textarea').val(rulesFromHTML('#diff .right li'));
+ var parent = uDom(this).ancestors('#diff');
+ parent.toggleClass('edit', true);
+ };
-/******************************************************************************/
+ /******************************************************************************/
-var editStopHandler = function() {
- var parent = uDom(this).ancestors('#diff');
- parent.toggleClass('edit', false);
- var request = {
- 'what': 'setUserRules',
- 'temporaryRules': uDom('#diff .right textarea').val()
+ var editStopHandler = function() {
+ var parent = uDom(this).ancestors('#diff');
+ parent.toggleClass('edit', false);
+ var request = {
+ 'what': 'setUserRules',
+ 'temporaryRules': uDom('#diff .right textarea').val()
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
-};
-/******************************************************************************/
+ /******************************************************************************/
-var editCancelHandler = function() {
- var parent = uDom(this).ancestors('#diff');
- parent.toggleClass('edit', false);
-};
+ var editCancelHandler = function() {
+ var parent = uDom(this).ancestors('#diff');
+ parent.toggleClass('edit', false);
+ };
-/******************************************************************************/
+ /******************************************************************************/
-var temporaryRulesToggler = function() {
- var li = uDom(this);
- li.toggleClass('toRemove');
- var request = {
- 'what': 'setUserRules',
- 'temporaryRules': rulesFromHTML('#diff .right li')
+ var temporaryRulesToggler = function() {
+ var li = uDom(this);
+ li.toggleClass('toRemove');
+ var request = {
+ 'what': 'setUserRules',
+ 'temporaryRules': rulesFromHTML('#diff .right li')
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
-};
-
-/******************************************************************************/
-self.cloud.onPush = function() {
- return rulesFromHTML('#diff .left li');
-};
+ /******************************************************************************/
-self.cloud.onPull = function(data, append) {
- if ( typeof data !== 'string' ) { return; }
- if ( append ) {
- data = rulesFromHTML('#diff .right li') + '\n' + data;
- }
- var request = {
- 'what': 'setUserRules',
- 'temporaryRules': data
+ self.cloud.onPush = function() {
+ return rulesFromHTML('#diff .left li');
};
- vAPI.messaging.send('user-rules.js', request, processUserRules);
-};
-/******************************************************************************/
+ self.cloud.onPull = function(data, append) {
+ if ( typeof data !== 'string' ) { return; }
+ if ( append ) {
+ data = rulesFromHTML('#diff .right li') + '\n' + data;
+ }
+ var request = {
+ 'what': 'setUserRules',
+ 'temporaryRules': data
+ };
+ vAPI.messaging.send('user-rules.js', request, processUserRules);
+ };
-uDom.onLoad(function() {
- // Handle user interaction
- uDom('#importButton').on('click', startImportFilePicker);
- uDom('#importFilePicker').on('change', handleImportFilePicker);
- uDom('#exportButton').on('click', exportUserRulesToFile);
- uDom('#revertButton').on('click', revertHandler);
- uDom('#commitButton').on('click', commitHandler);
- uDom('#editEnterButton').on('click', editStartHandler);
- uDom('#editStopButton').on('click', editStopHandler);
- uDom('#editCancelButton').on('click', editCancelHandler);
- uDom('#diff > .right > ul').on('click', 'li', temporaryRulesToggler);
-
- vAPI.messaging.send('user-rules.js', { what: 'getUserRules' }, processUserRules);
-});
+ /******************************************************************************/
+
+ uDom.onLoad(function() {
+ // Handle user interaction
+ uDom('#importButton').on('click', startImportFilePicker);
+ uDom('#importFilePicker').on('change', handleImportFilePicker);
+ uDom('#exportButton').on('click', exportUserRulesToFile);
+ uDom('#revertButton').on('click', revertHandler);
+ uDom('#commitButton').on('click', commitHandler);
+ uDom('#editEnterButton').on('click', editStartHandler);
+ uDom('#editStopButton').on('click', editStopHandler);
+ uDom('#editCancelButton').on('click', editCancelHandler);
+ uDom('#diff > .right > ul').on('click', 'li', temporaryRulesToggler);
+
+ vAPI.messaging.send('user-rules.js', { what: 'getUserRules' }, processUserRules);
+ });
-/******************************************************************************/
+ /******************************************************************************/
})();
-