Skip to content

Commit 7e6eeca

Browse files
authored
Merge pull request #250 from theludovyc/fix#245_aks_like_doc
fix #245 ask like doc
2 parents 04d8fbb + 41d4218 commit 7e6eeca

File tree

6 files changed

+124
-15
lines changed

6 files changed

+124
-15
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
extends "res://Test/RakugoTest.gd"
2+
3+
const file_path = "res://Test/TestExecuter/TestAsk/TestAsk.rk"
4+
5+
var file_base_name = get_file_base_name(file_path)
6+
7+
func test_ask():
8+
watch_rakugo_signals()
9+
10+
await wait_parse_and_execute_script(file_path)
11+
12+
await wait_ask({}, "Are you human ?", "Yes")
13+
14+
assert_ask_return("answer", "No")
15+
16+
await wait_execute_script_finished(file_base_name)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
answer = ? "Are you human ?" "Yes"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[gd_scene load_steps=2 format=3 uid="uid://c65gxwwshluof"]
2+
3+
[ext_resource type="Script" path="res://Test/TestParser/TestAsk/TestAsk.gd" id="1"]
4+
5+
[node name="TestAsk" type="Node"]
6+
script = ExtResource("1")

Test/TestParser/TestAsk/TestAsk.gd

Lines changed: 97 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,101 @@
1-
extends "res://Test/RakugoTest.gd"
1+
extends GutTest
22

3-
const file_path = "res://Test/TestParser/TestAsk/TestAsk.rk"
3+
const Parser = preload("res://addons/Rakugo/lib/systems/Parser.gd")
44

5-
var file_base_name = get_file_base_name(file_path)
5+
@onready var parser := Parser.new()
66

7-
func test_ask():
8-
watch_rakugo_signals()
7+
var test_ask_params = [
8+
["answer=?\"Hello ?\""],
9+
["answer = ? \"Hello ?\""]
10+
]
911

10-
await wait_parse_and_execute_script(file_path)
11-
12-
await wait_ask({}, "Are you human ?", "Yes")
13-
14-
assert_ask_return("answer", "No")
15-
16-
await wait_execute_script_finished(file_base_name)
12+
func test_ask(params=use_parameters(test_ask_params)):
13+
var parsed_script = parser.parse_script(params)
14+
15+
assert_false(parsed_script.is_empty())
16+
17+
var parsed_array = parsed_script["parse_array"]
18+
19+
assert_false(parsed_array.is_empty())
20+
21+
assert_true(parsed_array[0][0] == "ASK")
22+
23+
var result = parsed_array[0][1]
24+
25+
assert_eq(result.get_string("variable"), "answer")
26+
27+
assert_eq(result.get_string("question"), "\"Hello ?\"")
28+
29+
var test_ask_default_answer_params = [
30+
["answer=?\"Hello ?\" \"Bob\""],
31+
["answer = ? \"Hello ?\" \"Bob\""]
32+
]
33+
34+
func test_ask_default_answer(params=use_parameters(test_ask_default_answer_params)):
35+
var parsed_script = parser.parse_script(params)
36+
37+
assert_false(parsed_script.is_empty())
38+
39+
var parsed_array = parsed_script["parse_array"]
40+
41+
assert_false(parsed_array.is_empty())
42+
43+
assert_true(parsed_array[0][0] == "ASK")
44+
45+
var result = parsed_array[0][1]
46+
47+
assert_eq(result.get_string("variable"), "answer")
48+
49+
assert_eq(result.get_string("question"), "\"Hello ?\"")
50+
51+
assert_eq(result.get_string("default_answer"), "\"Bob\"")
52+
53+
var test_ask_tag_params = [
54+
["answer=?gd \"Hello ?\""],
55+
["answer = ? gd \"Hello ?\""]
56+
]
57+
58+
func test_ask_tag(params=use_parameters(test_ask_tag_params)):
59+
var parsed_script = parser.parse_script(params)
60+
61+
assert_false(parsed_script.is_empty())
62+
63+
var parsed_array = parsed_script["parse_array"]
64+
65+
assert_false(parsed_array.is_empty())
66+
67+
assert_true(parsed_array[0][0] == "ASK")
68+
69+
var result = parsed_array[0][1]
70+
71+
assert_eq(result.get_string("variable"), "answer")
72+
73+
assert_eq(result.get_string("character_tag"), "gd")
74+
75+
assert_eq(result.get_string("question"), "\"Hello ?\"")
76+
77+
var test_ask_all_params = [
78+
["answer=?gd \"Hello ?\" \"Bob\""],
79+
["answer = ? gd \"Hello ?\" \"Bob\""]
80+
]
81+
82+
func test_ask_all(params=use_parameters(test_ask_all_params)):
83+
var parsed_script = parser.parse_script(params)
84+
85+
assert_false(parsed_script.is_empty())
86+
87+
var parsed_array = parsed_script["parse_array"]
88+
89+
assert_false(parsed_array.is_empty())
90+
91+
assert_true(parsed_array[0][0] == "ASK")
92+
93+
var result = parsed_array[0][1]
94+
95+
assert_eq(result.get_string("variable"), "answer")
96+
97+
assert_eq(result.get_string("character_tag"), "gd")
98+
99+
assert_eq(result.get_string("question"), "\"Hello ?\"")
100+
101+
assert_eq(result.get_string("default_answer"), "\"Bob\"")

Test/TestParser/TestAsk/TestAsk.rk

Lines changed: 0 additions & 1 deletion
This file was deleted.

addons/Rakugo/lib/systems/Parser.gd

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var Tokens := {
3939
var Regex := {
4040
NAME = "[a-zA-Z][a-zA-Z_0-9]*",
4141
NUMERIC = "-?[0-9]\\.?[0-9]*",
42-
STRING = "\".*\"",
42+
STRING = "\"[^\"]*\"",
4343
VARIABLE = "((?<char_tag>{NAME})\\.)?(?<var_name>{NAME})",
4444
# MULTILINE_STRING = "\"\"\"(?<string>.*)\"\"\"",
4545
}
@@ -59,7 +59,7 @@ var parser_regex :={
5959
# character_tag? "say"
6060
SAY = "^((?<character_tag>{NAME}) )?(?<text>{STRING})$",
6161
# var_name = character_tag? "please enter text"
62-
ASK = "^(?<variable>{VARIABLE}) = ((?<character_tag>{NAME}) )?(?<question>{STRING}) \\? (?<default_answer>{STRING})$",
62+
ASK = "^(?<variable>{VARIABLE})\\s*=\\s*\\?\\s*((?<character_tag>{NAME}) )?(?<question>{STRING})( (?<default_answer>{STRING}))?$",
6363
# "like regex" (> label_name)?
6464
CHOICE = "^(?<text>{STRING})( > (?<label>{NAME}))?$",
6565
# jump label
@@ -143,6 +143,8 @@ func parse_script(lines:PackedStringArray) -> Dictionary:
143143

144144
for i in lines.size():
145145
var line = lines[i]
146+
147+
prints("Parser", line)
146148

147149
line = line.strip_edges()
148150

0 commit comments

Comments
 (0)