From 46a6833e432a26440c0a5a4099b622b56ea41e2b Mon Sep 17 00:00:00 2001 From: Borys_Levytskyi Date: Sun, 27 Nov 2016 11:22:38 +0200 Subject: [PATCH] Basic implementation of bitwise expressions --- .vscode/settings.json | 3 + package.json | 3 + .../BitwiseOperationExpressionView.jsx | 123 ++++++++++++++++++ .../results/ExpressionResultView.jsx | 14 +- .../results/ListOfNumbersExpressionView.jsx | 8 +- src/app/index.jsx | 2 +- 6 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/app/components/results/BitwiseOperationExpressionView.jsx diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ccdda08 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.check.workspaceVersion": false +} \ No newline at end of file diff --git a/package.json b/package.json index 8c739c0..136c61d 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,8 @@ "lodash": "^4.17.2", "react": "^15.4.0", "react-dom": "^15.4.0" + }, + "scripts": { + "serv": "webpack-dev-server --content-base ./src" } } diff --git a/src/app/components/results/BitwiseOperationExpressionView.jsx b/src/app/components/results/BitwiseOperationExpressionView.jsx new file mode 100644 index 0000000..5ec3d50 --- /dev/null +++ b/src/app/components/results/BitwiseOperationExpressionView.jsx @@ -0,0 +1,123 @@ +import React from 'react'; +import * as expression from '../../expression'; +import formatter from '../../formatter'; + +export default class BitwiseOperationEpxressionView extends React.Component { + render() { + var rows = this.getRows(); + if(!rows) { + return null; + } + + return + {rows} +
+ } + + getRows() { + const expr = this.props.expression; + + if(expr instanceof expression.SingleOperandExpression) { + const m = BitwiseExpressionViewModel.buildNot(expr); + return m.items.map((itm, i) => ); + } + + if(expr instanceof expression.MultipleOperandsExpression) { + const m = BitwiseExpressionViewModel.buildMultiple(expr); + return m.items.map((itm, i) => ); + } + + return null; + } +} + +class ExpressionRow extends React.Component { + render() { + const { sign, label, bin, other, css, maxNumberOfBits } = this.props; + + return + {sign} + {label} + {formatter.padLeft(bin, maxNumberOfBits, '0')} + {other} + ; + } +} + +class BitwiseExpressionViewModel { + + constructor() { + this.items = []; + this.maxNumberOfBits = 0; + } + + static buildMultiple (expr) { + var op = expr.expressions[0], + i = 1, l = expr.expressions.length, + ex, m = new BitwiseExpressionViewModel(); + + m.addOperand(op); + + for (;i - Expression: {expr.expressionString} - - + + } + if(expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) { + return
+ +
+ } + + console.log('[BitwiseOperationExpressionView] render()', expr); return Expression: {expr.expressionString}; } diff --git a/src/app/components/results/ListOfNumbersExpressionView.jsx b/src/app/components/results/ListOfNumbersExpressionView.jsx index d180bd3..414b833 100644 --- a/src/app/components/results/ListOfNumbersExpressionView.jsx +++ b/src/app/components/results/ListOfNumbersExpressionView.jsx @@ -5,17 +5,11 @@ export default class ListOfNumersExpressionView extends React.Component { render() { const expr = this.props.expression; const numberRows = expr.numbers.map((n, i) => ); - console.log('Numbers: ', expr.numbers); - return
-
- !{expr.toString()}! -
- + return
{numberRows}
-
} } diff --git a/src/app/index.jsx b/src/app/index.jsx index ec9d955..15213b5 100644 --- a/src/app/index.jsx +++ b/src/app/index.jsx @@ -10,7 +10,7 @@ commands.initialize(cmd); // cmd.execute('1'); // cmd.execute('2'); -// cmd.execute('3'); +cmd.execute('~3'); var root = ; ReactDOM.render(root, document.getElementById('root')); \ No newline at end of file