Merge pull request #15560 from s-hadinger/openhasp_support_strings_in_template

OpenHASP support string in template
This commit is contained in:
s-hadinger 2022-05-06 19:07:03 +02:00 committed by GitHub
commit cf8fe9e147
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 54 deletions

View File

@ -744,7 +744,7 @@ be_local_closure(lvh_obj_set_pad_all2, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(lvh_obj_text_rule_matched, /* name */ be_local_closure(lvh_obj_text_rule_matched, /* name */
be_nested_proto( be_nested_proto(
13, /* nstack */ 12, /* nstack */
2, /* argc */ 2, /* argc */
2, /* varg */ 2, /* varg */
0, /* has upvals */ 0, /* has upvals */
@ -752,61 +752,68 @@ be_local_closure(lvh_obj_text_rule_matched, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 7]) { /* constants */ ( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_literal("_text_rule_function"), /* K0 */ be_nested_str_literal("int"),
/* K1 */ be_nested_str_literal("string"), /* K1 */ be_nested_str_literal("_text_rule_function"),
/* K2 */ be_nested_str_literal("format"), /* K2 */ be_nested_str_literal("string"),
/* K3 */ be_nested_str_literal("HSP: failed to run self._text_rule_function - %s (%s)"), /* K3 */ be_nested_str_literal("format"),
/* K4 */ be_nested_str_literal("_text_rule_format"), /* K4 */ be_nested_str_literal("HSP: failed to run self._text_rule_function - %s (%s)"),
/* K5 */ be_nested_str_literal(""), /* K5 */ be_nested_str_literal("_text_rule_format"),
/* K6 */ be_nested_str_literal("text"), /* K6 */ be_nested_str_literal(""),
/* K7 */ be_nested_str_literal("text"),
}), }),
be_str_literal("text_rule_matched"), be_str_literal("text_rule_matched"),
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[43]) { /* code */ ( &(const binstruction[49]) { /* code */
0x6008000A, // 0000 GETGBL R2 G10 0x60080004, // 0000 GETGBL R2 G4
0x5C0C0200, // 0001 MOVE R3 R1 0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1 0x7C080200, // 0002 CALL R2 1
0x880C0100, // 0003 GETMBR R3 R0 K0 0x1C080500, // 0003 EQ R2 R2 K0
0x4C100000, // 0004 LDNIL R4 0x780A0003, // 0004 JMPF R2 #0009
0x20100604, // 0005 NE R4 R3 R4 0x6008000A, // 0005 GETGBL R2 G10
0x78120012, // 0006 JMPF R4 #001A 0x5C0C0200, // 0006 MOVE R3 R1
0xA8020005, // 0007 EXBLK 0 #000E 0x7C080200, // 0007 CALL R2 1
0x5C100600, // 0008 MOVE R4 R3 0x5C040400, // 0008 MOVE R1 R2
0x5C140400, // 0009 MOVE R5 R2 0x88080101, // 0009 GETMBR R2 R0 K1
0x7C100200, // 000A CALL R4 1 0x4C0C0000, // 000A LDNIL R3
0x5C080800, // 000B MOVE R2 R4 0x200C0403, // 000B NE R3 R2 R3
0xA8040001, // 000C EXBLK 1 1 0x780E0012, // 000C JMPF R3 #0020
0x7002000B, // 000D JMP #001A 0xA8020005, // 000D EXBLK 0 #0014
0xAC100002, // 000E CATCH R4 0 2 0x5C0C0400, // 000E MOVE R3 R2
0x70020008, // 000F JMP #0019 0x5C100200, // 000F MOVE R4 R1
0xA41A0200, // 0010 IMPORT R6 K1 0x7C0C0200, // 0010 CALL R3 1
0x601C0001, // 0011 GETGBL R7 G1 0x5C040600, // 0011 MOVE R1 R3
0x8C200D02, // 0012 GETMET R8 R6 K2 0xA8040001, // 0012 EXBLK 1 1
0x58280003, // 0013 LDCONST R10 K3 0x7002000B, // 0013 JMP #0020
0x5C2C0800, // 0014 MOVE R11 R4 0xAC0C0002, // 0014 CATCH R3 0 2
0x5C300A00, // 0015 MOVE R12 R5 0x70020008, // 0015 JMP #001F
0x7C200800, // 0016 CALL R8 4 0xA4160400, // 0016 IMPORT R5 K2
0x7C1C0200, // 0017 CALL R7 1 0x60180001, // 0017 GETGBL R6 G1
0x70020000, // 0018 JMP #001A 0x8C1C0B03, // 0018 GETMET R7 R5 K3
0xB0080000, // 0019 RAISE 2 R0 R0 0x58240004, // 0019 LDCONST R9 K4
0x88100104, // 001A GETMBR R4 R0 K4 0x5C280600, // 001A MOVE R10 R3
0x60140004, // 001B GETGBL R5 G4 0x5C2C0800, // 001B MOVE R11 R4
0x5C180800, // 001C MOVE R6 R4 0x7C1C0800, // 001C CALL R7 4
0x7C140200, // 001D CALL R5 1 0x7C180200, // 001D CALL R6 1
0x1C140B01, // 001E EQ R5 R5 K1 0x70020000, // 001E JMP #0020
0x78160006, // 001F JMPF R5 #0027 0xB0080000, // 001F RAISE 2 R0 R0
0xA4160200, // 0020 IMPORT R5 K1 0x880C0105, // 0020 GETMBR R3 R0 K5
0x8C180B02, // 0021 GETMET R6 R5 K2 0x60100004, // 0021 GETGBL R4 G4
0x5C200800, // 0022 MOVE R8 R4 0x5C140600, // 0022 MOVE R5 R3
0x5C240400, // 0023 MOVE R9 R2 0x7C100200, // 0023 CALL R4 1
0x7C180600, // 0024 CALL R6 3 0x1C100902, // 0024 EQ R4 R4 K2
0x5C100C00, // 0025 MOVE R4 R6 0x78120006, // 0025 JMPF R4 #002D
0x70020000, // 0026 JMP #0028 0xA4120400, // 0026 IMPORT R4 K2
0x58100005, // 0027 LDCONST R4 K5 0x8C140903, // 0027 GETMET R5 R4 K3
0x90020C04, // 0028 SETMBR R0 K6 R4 0x5C1C0600, // 0028 MOVE R7 R3
0x50140000, // 0029 LDBOOL R5 0 0 0x5C200200, // 0029 MOVE R8 R1
0x80040A00, // 002A RET 1 R5 0x7C140600, // 002A CALL R5 3
0x5C0C0A00, // 002B MOVE R3 R5
0x70020000, // 002C JMP #002E
0x580C0006, // 002D LDCONST R3 K6
0x90020E03, // 002E SETMBR R0 K7 R3
0x50100000, // 002F LDBOOL R4 0 0
0x80040800, // 0030 RET 1 R4
}) })
) )
); );

Binary file not shown.

Binary file not shown.

View File

@ -811,12 +811,14 @@ class lvh_obj
def text_rule_matched(val) def text_rule_matched(val)
# print(">> rule matched text", "val=", val) # print(">> rule matched text", "val=", val)
var val_n = real(val) # force float type if type(val) == 'int'
val = real(val) # force float type
end
var func = self._text_rule_function var func = self._text_rule_function
if func != nil if func != nil
try try
val_n = func(val_n) val = func(val)
except .. as e, m except .. as e, m
import string import string
print(string.format("HSP: failed to run self._text_rule_function - %s (%s)", e, m)) print(string.format("HSP: failed to run self._text_rule_function - %s (%s)", e, m))
@ -826,7 +828,7 @@ class lvh_obj
var format = self._text_rule_format var format = self._text_rule_format
if type(format) == 'string' if type(format) == 'string'
import string import string
format = string.format(format, val_n) format = string.format(format, val)
else else
format = "" format = ""
end end