diff --git a/src/analytics.js b/src/analytics.js index 82d9879..d5f56b2 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -1,7 +1,15 @@ (function() { - if(window.location.host != 'bitwisecmd.com' || window.location.hash.indexOf('-notrack') > -1) { - console.log("Analytics not tracked") + var disableAnalytics = localStorage.getItem('trackAnalytics') === 'false' || window.location.hash.indexOf('-notrack') > -1 + + if(disableAnalytics) { + localStorage.setItem("trackAnalytics", "false"); + console.log('Analytics tracking disabled.'); + return; + } + + if(window.location.host != 'bitwisecmd.com') { + console.log("Analytics not tracked. Non-prod host") return; } diff --git a/src/app/components/results/models/BitwiseExpressionViewModel.js b/src/app/components/results/models/BitwiseExpressionViewModel.js index 5958ba9..a710d6e 100644 --- a/src/app/components/results/models/BitwiseExpressionViewModel.js +++ b/src/app/components/results/models/BitwiseExpressionViewModel.js @@ -32,6 +32,7 @@ export default class BitwiseExpressionViewModel { continue; } + // If it a single NOT expression if(ex.isNotExpression) { m.addExpression(ex); var notResult = ex.apply(); diff --git a/src/app/expression.js b/src/app/expression.js index 17d9c89..7a33d62 100644 --- a/src/app/expression.js +++ b/src/app/expression.js @@ -86,8 +86,8 @@ var expression = { return new MultipleOperandsExpression(normalizedString, operands) }, parseMatch: function (m) { - console.log('match'); - console.log(m); + // console.log('match'); + // console.log(m); var input = m[0], sign = m[1], num = m[2]; @@ -111,16 +111,9 @@ var expression = { } }); -// Expressions like ~1 - - -// Expression like 1|2 or 4^5 - - export var parser = expression; - export class Parser { constructor(input, pos) { this.input = input; diff --git a/src/app/expression/ExpressionOperand.js b/src/app/expression/ExpressionOperand.js index 51686c6..f1be29c 100644 --- a/src/app/expression/ExpressionOperand.js +++ b/src/app/expression/ExpressionOperand.js @@ -13,10 +13,10 @@ export default class ExpressionOperand { apply(operand) { if (operand instanceof ExpressionOperand) { console.error("value shouldnt be expression", value); - throw new Error('value shouldnt be expression'); + throw new Error('value shouldnt be expression'); } - console.log('operand', operand); + // console.log('operand', operand); var str = ''; if(this.sign == '~'){ @@ -25,11 +25,10 @@ export default class ExpressionOperand { str = operand.value + this.sign + this.operand.apply().value; } - console.log('eval:' + str, this); + // console.log('eval:' + str, this); const resultValue = eval(str); - var resultOp = Operand.create(eval(str), this.operand.kind || this.operand.operand.kind); - console.log(resultValue, resultOp); + // console.log(resultValue, resultOp); return resultOp; }; diff --git a/src/app/expression/numberParser.js b/src/app/expression/numberParser.js index d142034..41368a8 100644 --- a/src/app/expression/numberParser.js +++ b/src/app/expression/numberParser.js @@ -1,6 +1,7 @@ var decimalRegex = /^-?\d+$/; var hexRegex = /^-?0x[0-9,a-f]+$/i; var binRegex = /^-?0b[0-1]+$/i; +var operatorRegex = /^<<|>>|<<<|\&|\|\^|~$/; var parsers = [ { regex: decimalRegex, radix: 10, kind: 'dec', prefix: '^$' }, @@ -25,6 +26,15 @@ function applyParser(parser, rawInput) { var parser = { parse: function(input) { return parsers.map(p => applyParser(p, input)).reduce((c, n) => c || n); + }, + + parseOperator: function(input) { + var m = input.match(input); + if(m.length == 0) { + return null; + } + + return m[0]; } }