Improve AiScript

This commit is contained in:
syuilo 2019-05-01 14:54:34 +09:00
parent d0af2c2a98
commit 52ebf2055e
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
6 changed files with 80 additions and 75 deletions

View file

@ -25,6 +25,9 @@
<section v-else-if="value.type === 'ref'" class="hpdwcrvs">
<select v-model="value.value">
<option v-for="v in aiScript.getVarsByType(getExpectedType ? getExpectedType() : null).filter(x => x.name !== name)" :value="v.name">{{ v.name }}</option>
<optgroup :label="$t('script.argVariables')">
<option v-for="v in fnSlots" :value="v.name">{{ v.name }}</option>
</optgroup>
<optgroup :label="$t('script.pageVariables')">
<option v-for="v in aiScript.getPageVarsByType(getExpectedType ? getExpectedType() : null)" :value="v">{{ v }}</option>
</optgroup>
@ -33,11 +36,6 @@
</optgroup>
</select>
</section>
<section v-else-if="value.type === 'in'" class="hpdwcrvs">
<select v-model="value.value">
<option v-for="v in fnSlots" :value="v.name">{{ v.name }}</option>
</select>
</section>
<section v-else-if="value.type === 'fn'" class="" style="padding:0 16px 16px 16px;">
<ui-textarea v-model="slots">
<span>{{ $t('script.blocks._fn.slots') }}</span>
@ -115,6 +113,7 @@ export default Vue.extend({
},
typeText(): any {
if (this.value.type === null) return null;
if (this.value.type.startsWith('fn:')) return this.value.type.split(':')[1];
return this.$t(`script.blocks.${this.value.type}`);
},
},

View file

@ -77,6 +77,7 @@
<template v-if="moreDetails">
<ui-info><span v-html="$t('variables-info2')"></span></ui-info>
<ui-info><span v-html="$t('variables-info3')"></span></ui-info>
<ui-info><span v-html="$t('variables-info4')"></span></ui-info>
</template>
</div>
</ui-container>

View file

@ -1,5 +1,5 @@
<template>
<div v-show="script.vars.find(x => x.name === value.var).value">
<div v-show="script.vars[value.var]">
<x-block v-for="child in value.children" :value="child" :page="page" :script="script" :key="child.id" :h="h"/>
</div>
</template>

View file

@ -27,7 +27,7 @@ import { url } from '../../../../config';
class Script {
public aiScript: AiScript;
public vars: any;
public vars: Record<string, any>;
constructor(aiScript) {
this.aiScript = aiScript;
@ -41,7 +41,7 @@ class Script {
public interpolate(str: string) {
if (str == null) return null;
return str.replace(/\{(.+?)\}/g, match => {
const v = this.vars.find(x => x.name === match.slice(1, -1).trim()).value;
const v = this.vars[match.slice(1, -1).trim()];
return v == null ? 'NULL' : v.toString();
});
}