1 | const {Expr, Token, Setter, Expression, SetterExpression, SpliceSetterExpression, TokenTypeData} = require('./lang');
|
2 | const _ = require('lodash');
|
3 | const NaiveCompiler = require('./naive-compiler');
|
4 | const {
|
5 | splitSettersGetters,
|
6 | normalizeAndTagAllGetters
|
7 | } = require('./expr-tagging');
|
8 |
|
9 | class SimpleCompiler extends NaiveCompiler {
|
10 | constructor(model, options) {
|
11 | const {getters, setters} = splitSettersGetters(model);
|
12 | super({...model, ...normalizeAndTagAllGetters(getters, setters, options)}, options);
|
13 | }
|
14 |
|
15 | buildDerived(name) {
|
16 | return `$res.${name} = ${this.generateExpr(this.getters[name])};`;
|
17 | }
|
18 |
|
19 | topLevelToIndex(str) {
|
20 | return this.getters[str][0].$topLevelIndex;
|
21 | }
|
22 |
|
23 | get template() {
|
24 | return require('./templates/simple.js');
|
25 | }
|
26 | }
|
27 |
|
28 | module.exports = SimpleCompiler;
|