Вернулся на number
This commit is contained in:
33
src/App.tsx
33
src/App.tsx
@@ -6,23 +6,44 @@ export const App = () => {
|
||||
}
|
||||
|
||||
const testText = `
|
||||
# Welcome to calculator (написать норм приветствие и описать принцип работы калькулятора)
|
||||
# Lines starting with # are ignored
|
||||
|
||||
# Basic math
|
||||
2 + 2
|
||||
6 - 3
|
||||
10 / 4
|
||||
5 * 1.5
|
||||
2 + 2 * 2
|
||||
sqrt(3^2 + 4^2)
|
||||
5cm + 0.2 m in inch
|
||||
cos(45 deg)
|
||||
(2 + 2) * 2
|
||||
0.1 + 0.2
|
||||
|
||||
# Units
|
||||
10 inch in cm
|
||||
2 feet to m
|
||||
15 degC to degF
|
||||
3 tbsp to tsp
|
||||
9 km/h to m/s
|
||||
|
||||
# Functions
|
||||
sqrt(3^2 + 4^2)
|
||||
cos(pi rad)
|
||||
sin(30 deg)
|
||||
|
||||
# Variables
|
||||
a = 25
|
||||
b = a * 2
|
||||
|
||||
pow2(x) = x ^ 2
|
||||
pow2(6)
|
||||
|
||||
2 * 2
|
||||
last + 1
|
||||
|
||||
# Function declaration
|
||||
pow2(x) = x ^ 2
|
||||
pow2(6)
|
||||
|
||||
f(x) = (sin(x) + cos(x/2)) * 5
|
||||
|
||||
# Matrices
|
||||
a = [1, 2, 3; 2+2, 5, 6]
|
||||
a[2, 3]
|
||||
a[1:2, 2]
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
html {
|
||||
line-height: 1.5;
|
||||
font-size: 16px;
|
||||
line-height: 1.4;
|
||||
tab-size: 4;
|
||||
font-feature-settings: normal;
|
||||
font-variation-settings: normal;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
max-width: 800px;
|
||||
margin: auto;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
@@ -16,6 +18,10 @@ body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#root .cm-editor-mount .cm-editor {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.math-result {
|
||||
color: rgb(80, 80, 80);
|
||||
margin-left: 8px;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { create, all } from 'mathjs'
|
||||
|
||||
export const math = create(all, { number: 'BigNumber', precision: 16 })
|
||||
export const math = create(all)
|
||||
|
||||
@@ -33,17 +33,34 @@ const createDecorations = (view: EditorView) => {
|
||||
try {
|
||||
const result = parser.evaluate(text)
|
||||
|
||||
if (result?.isBigNumber || result?.type === 'Unit') {
|
||||
if (result === undefined) {
|
||||
continue
|
||||
}
|
||||
|
||||
console.log(result)
|
||||
|
||||
if (typeof result === 'number') {
|
||||
parser.set('last', result)
|
||||
parser.set('prev', result)
|
||||
parser.set('previous', result)
|
||||
|
||||
decoration = Decoration.widget({
|
||||
widget: new MathResult(math.format(result, { precision: 12 })),
|
||||
side: 1,
|
||||
})
|
||||
} else if (result?.type === 'Unit') {
|
||||
parser.set('last', result)
|
||||
parser.set('prev', result)
|
||||
parser.set('previous', result)
|
||||
|
||||
decoration = Decoration.widget({
|
||||
widget: new MathResult(result.toString()),
|
||||
side: 1,
|
||||
})
|
||||
}
|
||||
|
||||
if (result?.type === 'DenseMatrix') {
|
||||
} else if (result?.type === 'DenseMatrix') {
|
||||
parser.set('last', result)
|
||||
parser.set('prev', result)
|
||||
parser.set('previous', result)
|
||||
|
||||
const size = result.size()
|
||||
|
||||
@@ -58,15 +75,22 @@ const createDecorations = (view: EditorView) => {
|
||||
side: 1,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof result === 'function') {
|
||||
} else if (typeof result === 'function') {
|
||||
decoration = Decoration.widget({
|
||||
widget: new MathResult(result.syntax),
|
||||
side: 1,
|
||||
})
|
||||
} else if (result.isResultSet) {
|
||||
decoration = Decoration.widget({
|
||||
widget: new MathResult(result.entries[0].toString()),
|
||||
side: 1,
|
||||
})
|
||||
} else {
|
||||
console.log(result)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
if (decoration) {
|
||||
widgets.push(decoration.range(to))
|
||||
|
||||
Reference in New Issue
Block a user