mirror of
https://github.com/NetEase/tango.git
synced 2026-09-01 15:03:03 +08:00
ffaa276b5c
* refactor: update attribute value parsing logic
* fix: refactor toggle setter logic
* fix: enhance basic setters
* fix: move basic value setter to setting-form package
* fix: add setter type
* fix: update
* feat: support toggle formObject to codeSetter
* fix: update invalid setter notice
* fix: update node2value
* fix: trigger onChange for formObject
* docs: update
* chore: up
* feat: improve code2value function and fix related issues
* Revert "chore: up"
This reverts commit a87d8fcce4.
* chore: update npm dependencies to latest versions
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import { isValidExpressionCode } from './ast';
|
|
|
|
const defineServiceHandlerNames = ['defineServices', 'createServices'];
|
|
const sfHandlerPattern = new RegExp(`^(${defineServiceHandlerNames.join('|')})$`);
|
|
|
|
/**
|
|
* 判断给定的函数名是否是 defineServices
|
|
* @param name
|
|
* @returns
|
|
*/
|
|
export function isDefineService(name: string) {
|
|
return sfHandlerPattern.test(name);
|
|
}
|
|
|
|
const defineStoreHandlerName = 'defineStore';
|
|
|
|
/**
|
|
* 判断给定的函数名是否是 defineStore
|
|
* @param name
|
|
* @returns
|
|
*/
|
|
export function isDefineStore(name: string) {
|
|
return defineStoreHandlerName === name;
|
|
}
|
|
|
|
/**
|
|
* 是否是 tango 的变量引用
|
|
* @example tango.stores.app.name
|
|
* @example tango.stores?.app?.name
|
|
*
|
|
* @param name
|
|
* @returns
|
|
*/
|
|
export function isTangoVariable(name: string) {
|
|
return /^tango\??\.(stores|services)\??\./.test(name) && name.split('.').length > 2;
|
|
}
|
|
|
|
const templatePattern = /^{(.+)}$/s;
|
|
|
|
/**
|
|
* 判断给定字符串是否被表达式容器`{expCode}`包裹
|
|
* @param code
|
|
* @deprecated 新版改为 {{code}} 作为容器,使用 isWrappedCode 代替
|
|
*/
|
|
export function isWrappedByExpressionContainer(code: string, isStrict = true) {
|
|
if (isStrict && isValidExpressionCode(code)) {
|
|
return false;
|
|
}
|
|
return templatePattern.test(code);
|
|
}
|