From 1bf7f287e3451b00a069326ae70563ae19d8a9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Debr=C3=A9e?= Date: Thu, 8 Sep 2022 16:56:24 +0200 Subject: [PATCH 1/3] Function analayzer class created --- src/domain/Calculus.ts | 6 ++++++ src/domain/FunctionAnalyzer.ts | 7 +++++++ src/system/providers.ts | 8 ++++---- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/domain/Calculus.ts create mode 100644 src/domain/FunctionAnalyzer.ts diff --git a/src/domain/Calculus.ts b/src/domain/Calculus.ts new file mode 100644 index 0000000..0ed0513 --- /dev/null +++ b/src/domain/Calculus.ts @@ -0,0 +1,6 @@ +export class Calculus { + constructor( + public readonly operator: string, + public readonly parameters: Array + ) {} +} diff --git a/src/domain/FunctionAnalyzer.ts b/src/domain/FunctionAnalyzer.ts new file mode 100644 index 0000000..ae067b0 --- /dev/null +++ b/src/domain/FunctionAnalyzer.ts @@ -0,0 +1,7 @@ +import { Formula } from './Formula'; + +export class FunctionAnalyzer { + run(formula: Formula) { + return ''; + } +} diff --git a/src/system/providers.ts b/src/system/providers.ts index 1bb35f9..c4b2edb 100644 --- a/src/system/providers.ts +++ b/src/system/providers.ts @@ -3,8 +3,8 @@ type ClassProvider = { useClass: C; }; -export function isClassProvider(provider: Provider): boolean { - return !!(provider as any)['useClass']; +export function isClassProvider(provider: Provider) { + return provider.hasOwnProperty('useClass'); } type ValueProvider = { @@ -12,8 +12,8 @@ type ValueProvider = { useValue: V; }; -export function isValueProvider(provider: Provider): boolean { - return !!(provider as any)['useValue']; +export function isValueProvider(provider: Provider) { + return provider.hasOwnProperty('useValue'); } export type Provider = ClassProvider | ValueProvider; From 071d7f8e2cdf6d2cac64eb034d68c59a352285da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Debr=C3=A9e?= Date: Sun, 11 Sep 2022 18:17:36 +0200 Subject: [PATCH 2/3] Either class implemented --- src/controllers/writer/writer.ts | 9 ++++--- src/controllers/writer/writer.vue | 20 +++++++++++--- src/controllers/writer/writer.vue.state.ts | 1 + src/core/Either.ts | 6 +++++ src/core/Left.ts | 7 +++++ src/core/Right.ts | 7 +++++ src/core/public_api.ts | 7 ++--- src/domain/CalculusFactory.ts | 12 +++++++++ src/domain/FunctionAnalyzer.ts | 7 ----- src/domain/public_api.ts | 31 +++++++--------------- 10 files changed, 69 insertions(+), 38 deletions(-) create mode 100644 src/core/Either.ts create mode 100644 src/core/Left.ts create mode 100644 src/core/Right.ts create mode 100644 src/domain/CalculusFactory.ts delete mode 100644 src/domain/FunctionAnalyzer.ts diff --git a/src/controllers/writer/writer.ts b/src/controllers/writer/writer.ts index ee95ce9..e980136 100644 --- a/src/controllers/writer/writer.ts +++ b/src/controllers/writer/writer.ts @@ -2,7 +2,7 @@ import { first, map } from 'rxjs'; import { ComponentOptionsBase, ComponentPublicInstance, createApp } from 'vue'; import { mergeObjects } from '../../core'; -import { findNextFormulaName, Formula } from '../../domain'; +import { CalculusFactory, findNextFormulaName, Formula } from '../../domain'; import { Encoder, Inject, @@ -28,8 +28,8 @@ type VueInstance = ComponentPublicInstance< ComponentOptionsBase >; -@Inject(Router, Encoder, MenuState, Window) -export default class Writer implements OnInit { +@Inject(Router, Encoder, MenuState, Window, CalculusFactory) +export class Writer implements OnInit { private readonly writerDOMRoot: HTMLDivElement; private readonly vueInstance: VueInstance; @@ -37,7 +37,8 @@ export default class Writer implements OnInit { private readonly router: Router, private readonly encoder: Encoder, menuState: MenuState, - window: Window + window: Window, + calculusFactory: CalculusFactory ) { const selectors = '#writer-root'; const writerDOMRoot = diff --git a/src/controllers/writer/writer.vue b/src/controllers/writer/writer.vue index b04739e..27f61c7 100644 --- a/src/controllers/writer/writer.vue +++ b/src/controllers/writer/writer.vue @@ -34,6 +34,7 @@ }" v-model="formula.content" placeholder="Formula" + @keyup="onFormulaUpdated" >