/** * Matches a single dot variable method reference inside an angle bracket identifier. * * Used to detect primitive method references such as `expiry.toIso8601`. * * For example `expiry.toIso8601` matches with base expiry and method toIso8601. * `requestedSatoshis` does not match because it has no method. * `key.schnorr_signature.all_outputs` does not match because it has more than one dot. */ export const CASHASSEMBLY_VARIABLE_METHOD_REFERENCE_PATTERN = /^([^.]+)\.([^.]+)$/; /** * Character count of the `$(` evaluation opener, which is two characters long. * * Adding this length moves the read position to the first character after that sequence so scanning * starts on the evaluation contents rather than on the opening parenthesis. */ export const CASHASSEMBLY_EVALUATION_START_LENGTH = 2; /** * Character count of the `//` and `/*` comment openers, which are both two characters long. * * Adding this length moves the read position to the first character after that sequence so the '*' * of a block comment opener cannot be reused as the '*' of its closer. */ export const CASHASSEMBLY_COMMENT_START_LENGTH = 2; /** * Character count of the block comment closer, which is two characters long. * * Adding this length moves the read position to the first character after that sequence so the * closing slash cannot pair with the next character and open another comment. */ export const CASHASSEMBLY_BLOCK_COMMENT_END_LENGTH = 2; /** * `$()` with nothing between the parentheses. * * Callers use this to detect an evaluation that has no contents to compile. */ export const EMPTY_CASHASSEMBLY_EVALUATION = '$()';