mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2025-12-16 18:02:15 +01:00
Move some code around
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import formatter from '../../core/formatter';
|
import formatter from '../../core/formatter';
|
||||||
import BinaryStringView, { FlipBitEventArg } from '../../core/components/BinaryString';
|
import BinaryStringView, { FlipBitEventArg } from '../../core/components/BinaryString';
|
||||||
import BitwiseExpressionViewModel from './BitwiseExpressionModel';
|
import BitwiseResultViewModel from './BitwiseResultViewModel';
|
||||||
import { ExpressionInput, Expression } from '../expression-interfaces';
|
import { ExpressionInput, Expression } from '../expression-interfaces';
|
||||||
import { OperatorExpression, ScalarExpression } from '../expression';
|
import { OperatorExpression, ScalarExpression } from '../expression';
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ type BitwiseOperationExpressionViewState = {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class BitwiseOperationExpressionView extends React.Component<BitwiseOperationExpressionViewProps, BitwiseOperationExpressionViewState> {
|
export default class BitwiseResultView extends React.Component<BitwiseOperationExpressionViewProps, BitwiseOperationExpressionViewState> {
|
||||||
constructor(props: BitwiseOperationExpressionViewProps) {
|
constructor(props: BitwiseOperationExpressionViewProps) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {};
|
this.state = {};
|
||||||
@@ -33,7 +33,7 @@ export default class BitwiseOperationExpressionView extends React.Component<Bitw
|
|||||||
}
|
}
|
||||||
|
|
||||||
getRows() : JSX.Element[] | null {
|
getRows() : JSX.Element[] | null {
|
||||||
var model = BitwiseExpressionViewModel.createModel(this.props.expression, this.props.emphasizeBytes);
|
var model = BitwiseResultViewModel.createModel(this.props.expression, this.props.emphasizeBytes);
|
||||||
|
|
||||||
return model.items.map((itm, i) =>
|
return model.items.map((itm, i) =>
|
||||||
<ExpressionRow
|
<ExpressionRow
|
||||||
@@ -16,7 +16,7 @@ type ExpressionItemModel = {
|
|||||||
label: string;
|
label: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class BitwiseExpressionViewModel {
|
export default class BitwiseResultViewModel {
|
||||||
|
|
||||||
emphasizeBytes: boolean;
|
emphasizeBytes: boolean;
|
||||||
items: ExpressionItemModel[];
|
items: ExpressionItemModel[];
|
||||||
@@ -31,17 +31,17 @@ export default class BitwiseExpressionViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {
|
static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {
|
||||||
var model = new BitwiseExpressionViewModel(config);
|
var model = new BitwiseResultViewModel(config);
|
||||||
expr.children.forEach(op => model.addScalarRow(op));
|
expr.children.forEach(op => model.addScalarRow(op));
|
||||||
model.maxNumberOfBits = BitwiseExpressionViewModel.applyEmphasizeBytes(model.maxNumberOfBits, model.emphasizeBytes);
|
model.maxNumberOfBits = BitwiseResultViewModel.applyEmphasizeBytes(model.maxNumberOfBits, model.emphasizeBytes);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
static buildMultiple (expr : BitwiseOperationExpression, config : Config) {
|
static buildBitwiseOperation (expr : BitwiseOperationExpression, config : Config) {
|
||||||
|
|
||||||
var op = expr.children[0],
|
var op = expr.children[0],
|
||||||
i = 0, len = expr.children.length,
|
i = 0, len = expr.children.length,
|
||||||
ex, m = new BitwiseExpressionViewModel(config);
|
ex, m = new BitwiseResultViewModel(config);
|
||||||
|
|
||||||
var prev : ScalarExpression | null = null;
|
var prev : ScalarExpression | null = null;
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ export default class BitwiseExpressionViewModel {
|
|||||||
|
|
||||||
// If it a single NOT expression
|
// If it a single NOT expression
|
||||||
if(eo.isNotExpression) {
|
if(eo.isNotExpression) {
|
||||||
m.addExpressionOperandRow(eo);
|
m.addOperatorRow(eo);
|
||||||
var notResult = eo.evaluate();
|
var notResult = eo.evaluate();
|
||||||
m.addExpressionResultRow(notResult);
|
m.addExpressionResultRow(notResult);
|
||||||
prev = notResult;
|
prev = notResult;
|
||||||
@@ -68,21 +68,12 @@ export default class BitwiseExpressionViewModel {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
prev = eo.evaluate(prev as ScalarExpression);
|
prev = eo.evaluate(prev as ScalarExpression);
|
||||||
m.addExpressionOperandRow(eo);
|
m.addOperatorRow(eo);
|
||||||
m.addExpressionResultRow(prev);
|
m.addExpressionResultRow(prev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m.maxNumberOfBits = BitwiseExpressionViewModel.applyEmphasizeBytes(m.maxNumberOfBits, m.emphasizeBytes);
|
m.maxNumberOfBits = BitwiseResultViewModel.applyEmphasizeBytes(m.maxNumberOfBits, m.emphasizeBytes);
|
||||||
return m;
|
|
||||||
};
|
|
||||||
|
|
||||||
static buildNot (expression: OperatorExpression, config : Config) {
|
|
||||||
|
|
||||||
var m = new BitwiseExpressionViewModel(config);
|
|
||||||
m.addExpressionOperandRow(expression);
|
|
||||||
m.addExpressionResultRow(expression.evaluate());
|
|
||||||
m.maxNumberOfBits = BitwiseExpressionViewModel.applyEmphasizeBytes(m.maxNumberOfBits, m.emphasizeBytes);
|
|
||||||
return m;
|
return m;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -98,7 +89,7 @@ export default class BitwiseExpressionViewModel {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
addExpressionOperandRow(expr: OperatorExpression) {
|
addOperatorRow(expr: OperatorExpression) {
|
||||||
|
|
||||||
const resultNumber = expr.isNotExpression ? expr.evaluate() : expr.getUnderlyingScalarOperand();
|
const resultNumber = expr.isNotExpression ? expr.evaluate() : expr.getUnderlyingScalarOperand();
|
||||||
const bits = calc.numberOfBitsDisplayed(resultNumber.value);
|
const bits = calc.numberOfBitsDisplayed(resultNumber.value);
|
||||||
@@ -157,16 +148,16 @@ export default class BitwiseExpressionViewModel {
|
|||||||
return bits;
|
return bits;
|
||||||
};
|
};
|
||||||
|
|
||||||
static createModel(expr : ExpressionInput, emphasizeBytes: boolean) : BitwiseExpressionViewModel {
|
static createModel(expr : ExpressionInput, emphasizeBytes: boolean) : BitwiseResultViewModel {
|
||||||
if(expr instanceof ListOfNumbersExpression) {
|
if(expr instanceof ListOfNumbersExpression) {
|
||||||
return BitwiseExpressionViewModel.buildListOfNumbers(expr, {
|
return BitwiseResultViewModel.buildListOfNumbers(expr, {
|
||||||
emphasizeBytes: emphasizeBytes,
|
emphasizeBytes: emphasizeBytes,
|
||||||
allowFlipBits: true
|
allowFlipBits: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(expr instanceof BitwiseOperationExpression) {
|
if(expr instanceof BitwiseOperationExpression) {
|
||||||
return BitwiseExpressionViewModel.buildMultiple(expr, {
|
return BitwiseResultViewModel.buildBitwiseOperation(expr, {
|
||||||
emphasizeBytes: emphasizeBytes,
|
emphasizeBytes: emphasizeBytes,
|
||||||
allowFlipBits: false
|
allowFlipBits: false
|
||||||
});
|
});
|
||||||
@@ -4,7 +4,6 @@ import ListOfNumbersExpression from './ListOfNumbersExpression';
|
|||||||
import BitwiseOperationExpression from './BitwiseOperationExpression';
|
import BitwiseOperationExpression from './BitwiseOperationExpression';
|
||||||
import { ExpressionInput, Expression } from './expression-interfaces';
|
import { ExpressionInput, Expression } from './expression-interfaces';
|
||||||
import { NumberBase } from '../core/formatter';
|
import { NumberBase } from '../core/formatter';
|
||||||
import { Match } from '@testing-library/react';
|
|
||||||
|
|
||||||
export { default as ScalarExpression } from './ScalarExpression';
|
export { default as ScalarExpression } from './ScalarExpression';
|
||||||
export { default as OperatorExpression } from './OperatorExpression';
|
export { default as OperatorExpression } from './OperatorExpression';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import AppState from '../shell/AppState';
|
import AppState from '../shell/AppState';
|
||||||
import { CmdShell, CommandInput } from '../shell/cmd';
|
import { CmdShell, CommandInput } from '../shell/cmd';
|
||||||
import BitwiseOperationExpressionView from './components/BitwiseOperationExpressionView';
|
import BitwiseResultView from './components/BitwiseResultView';
|
||||||
import {parser} from './expression';
|
import {parser} from './expression';
|
||||||
|
|
||||||
const expressionAppModule = {
|
const expressionAppModule = {
|
||||||
@@ -12,7 +12,7 @@ const expressionAppModule = {
|
|||||||
canHandle: (input:string) => parser.canParse(input),
|
canHandle: (input:string) => parser.canParse(input),
|
||||||
handle: function(c: CommandInput) {
|
handle: function(c: CommandInput) {
|
||||||
var expr = parser.parse(c.input);
|
var expr = parser.parse(c.input);
|
||||||
appState.addCommandResult(c.input, <BitwiseOperationExpressionView expression={expr!} emphasizeBytes={appState.emphasizeBytes} />);
|
appState.addCommandResult(c.input, <BitwiseResultView expression={expr!} emphasizeBytes={appState.emphasizeBytes} />);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user