diff --git a/package.json b/package.json index 3cc6f6f..3ea0715 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "asajs", - "version": "4.0.4-preview", + "version": "4.0.5-indev", "description": "Create your Minecraft JSON-UI resource packs using JavaScript", "keywords": [ "Minecraft", diff --git a/src/compilers/bindings/Function.ts b/src/compilers/bindings/Function.ts index 987ea62..3b99b2e 100644 --- a/src/compilers/bindings/Function.ts +++ b/src/compilers/bindings/Function.ts @@ -68,6 +68,10 @@ export const defaultFunctions = { return { genBindings: [ + { + source: `(${input} < 0)`, + target: isNegative, + }, { source: `(${input} < 2)`, target: isLowerThanTwo, @@ -109,9 +113,30 @@ export const defaultFunctions = { } }, - // str_length: str => { - // if (!/\#\w+/.test(str)) throw new Error("Invalid string") - // } + strlen: str => { + if (!/\#\w+/.test(str)) throw new Error("Invalid string") + + const count = RandomBindingString() + const inputStr = RandomBindingString() + + return { + genBindings: [ + { + source: `0 * (${str} = 'a')`, + target: count, + }, + { + source: `'a' + ${str}`, + target: inputStr, + }, + { + source: `${count} + (not ((('%.' + (${count} + 1) + 's') * ${inputStr}) = ${inputStr}))`, + target: count, + }, + ], + value: count, + } + }, /** * Return a translatable string @@ -120,6 +145,7 @@ export const defaultFunctions = { */ translatable: key => { return { + genBindings: [], value: `'%' + ${key}`, } },