Skip to content

Commit 876b389

Browse files
fix #187
1 parent ce4976f commit 876b389

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

query.zig

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
5353
var pos = 0;
5454
var state = .start;
5555

56+
// This holds the starting character of the string while
57+
// state is .inside_string so that we know which type of
58+
// string we're exiting from
59+
var string_starting_character = null;
60+
5661
var current_bind_marker_type: [256]u8 = undefined;
5762
var current_bind_marker_type_pos = 0;
5863

@@ -75,6 +80,7 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
7580
},
7681
'\'', '"', '[', '`' => {
7782
state = .inside_string;
83+
string_starting_character = c;
7884
buf[pos] = c;
7985
pos += 1;
8086
},
@@ -84,8 +90,23 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
8490
},
8591
},
8692
.inside_string => switch (c) {
87-
'\'', '"', ']', '`' => {
88-
state = .start;
93+
'\'' => {
94+
if (string_starting_character == '\'') state = .start;
95+
buf[pos] = c;
96+
pos += 1;
97+
},
98+
'"' => {
99+
if (string_starting_character == '"') state = .start;
100+
buf[pos] = c;
101+
pos += 1;
102+
},
103+
']' => {
104+
if (string_starting_character == '[') state = .start;
105+
buf[pos] = c;
106+
pos += 1;
107+
},
108+
'`' => {
109+
if (string_starting_character == '`') state = .start;
89110
buf[pos] = c;
90111
pos += 1;
91112
},

0 commit comments

Comments
 (0)