aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Trevor Elliott <trevor@galois.com>2013-06-13 16:25:06 -0700
committerGravatar Trevor Elliott <trevor@galois.com>2013-06-13 16:25:06 -0700
commitdcef9bbbdf681791a21cdb55a2a7960d22fc53c9 (patch)
treee91d3fa2381ee85701744f23e78b1ccefd39b961
parent0aa7436f015bf6e071a2bf2d3edd393ad0064dec (diff)
Switch to passing a report object to rules, instead of binding this
-rw-r--r--exampleData/ruleSets/colorRules/backgroundCheck.js13
-rw-r--r--exampleData/ruleSets/colorRules/foregroundCheck.js15
-rw-r--r--src/js/fiveui/injected/compute.js38
3 files changed, 33 insertions, 33 deletions
diff --git a/exampleData/ruleSets/colorRules/backgroundCheck.js b/exampleData/ruleSets/colorRules/backgroundCheck.js
index d860410..eb070db 100644
--- a/exampleData/ruleSets/colorRules/backgroundCheck.js
+++ b/exampleData/ruleSets/colorRules/backgroundCheck.js
@@ -6,17 +6,12 @@ exports.description =
, '#00 #FF #3D #F7 #C2 #B4 #4E #FFCB05 #7B8738'
].join('\n');
-exports.rule = function() {
- var rule = this;
-
-
+exports.rule = function(report) {
var allow = '#00 #FF #3D #F7 #C2 #B4 #4E'.split(' ');
- rule.report("broken");
$5(':visible')
.cssIsNot('background-color', allow, fiveui.color.colorToHex)
.each(function(i, elt) {
- var color = fiveui.color.colorToHex($(elt).css('background-color'));
- eonsole.log(rule);
- rule.report('non-standard background color: ' + color, $(elt));
- });
+ var color = fiveui.color.colorToHex($(elt).css('background-color'));
+ report.error('non-standard background color: ' + color, $(elt));
+ });
};
diff --git a/exampleData/ruleSets/colorRules/foregroundCheck.js b/exampleData/ruleSets/colorRules/foregroundCheck.js
index 9102bbe..0cbb2ae 100644
--- a/exampleData/ruleSets/colorRules/foregroundCheck.js
+++ b/exampleData/ruleSets/colorRules/foregroundCheck.js
@@ -1,17 +1,16 @@
-exports.name = 'Background Check';
+exports.name = 'Foreground Check';
exports.description =
- [ 'Backgrounds colors should be in the set:'
- , '#00 #FF #3D #F7 #C2 #B4 #4E'
+ [ 'Foreground colors should be in the set:'
+ , '#00 #FF #3D #F7 #C2 #B4 #4E #FFCB05 #7B8738'
].join('\n');
-exports.rule = function() {
- var rule = this;
+exports.rule = function(report) {
var allow = '#00 #FF #3D #F7 #C2 #B4 #4E #FFCB05 #7B8738'.split(' ');
$5(':visible')
.cssIsNot('color', allow, fiveui.color.colorToHex)
.each(function(i, elt) {
- var color = fiveui.color.colorToHex($(elt).css('color'));
- rule.report('foreground color: ' + color, elt);
- });
+ var color = fiveui.color.colorToHex($(elt).css('color'));
+ report.error('foreground color: ' + color, elt);
+ });
};
diff --git a/src/js/fiveui/injected/compute.js b/src/js/fiveui/injected/compute.js
index 36217ac..67f2d56 100644
--- a/src/js/fiveui/injected/compute.js
+++ b/src/js/fiveui/injected/compute.js
@@ -20,6 +20,7 @@
*/
(function(){
+
var guidGenerator = function () {
var S4 = function() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
@@ -84,6 +85,15 @@
core.port.emit('ReportProblem', prob);
};
+ core.resetStats = function() {
+ core.reportStats(
+ { start: 0
+ , end: 0
+ , numRules: 0
+ , numElts: 0
+ });
+ };
+
core.reportStats = function(stats) {
core.port.emit('ReportStats', stats);
};
@@ -210,29 +220,24 @@
};
fiveui.stats.numElts = 0; // reset stats element counter
- var report = function(message, node) {
- var prob = core.hash(theRule, message, node);
- var query = $(node);
- if(!query.hasClass(prob.hash)) {
- query.addClass(prob.hash);
- core.reportProblem(prob);
+ var report = {
+ error:function(message, node) {
+ var prob = core.hash(theRule, message, node);
+ var query = $(node);
+ if(!query.hasClass(prob.hash)) {
+ query.addClass(prob.hash);
+ core.reportProblem(prob);
+ }
}
};
for(var i=0; i<rs.length; ++i) {
- var theRule = rs[i];
- var scope = {
- name: theRule.name,
- description: theRule.description,
- ruleSet: core.rules,
- // maybe it would be better for this to be an argument to the rule?
- report: report
- };
+ theRule = rs[i];
if (theRule.rule) {
try {
// note: fiveui.stats.numElts is updated as a side effect here
- theRule.rule.apply(scope);
+ theRule.rule.call(window, report);
} catch (e) {
console.log('exception running rule: ' + theRule.name);
console.log(e.toString());
@@ -330,5 +335,6 @@
};
registerBackendListeners(core.port);
-}());
+ core.resetStats();
+})();