Add "" and `` in string literals.
This commit is contained in:
parent
d9d44a9683
commit
675ddb89f9
@ -24,6 +24,7 @@ New features
|
||||
Enhancements
|
||||
------------
|
||||
|
||||
* Two double quotes (`""`) in a string literal now maps to `"`; two back-ticks (``` `` ```) in a literal string now maps to `` ` ``.
|
||||
* Added `Engine::register_type_with_name_raw` to register a custom type based on a fully-qualified type path.
|
||||
* Added `into_array` and `into_typed_array` for `Dynamic`.
|
||||
* Added `FnPtr::call` and `FnPtr::call_within_context` to simplify calling a function pointer.
|
||||
|
@ -1175,6 +1175,15 @@ pub fn parse_string_literal(
|
||||
result.push(next_char)
|
||||
}
|
||||
|
||||
// Double wrapper
|
||||
_ if termination_char == next_char
|
||||
&& escape.is_empty()
|
||||
&& stream.peek_next().map_or(false, |c| c == termination_char) =>
|
||||
{
|
||||
eat_next(stream, pos);
|
||||
result.push(termination_char)
|
||||
}
|
||||
|
||||
// Close wrapper
|
||||
_ if termination_char == next_char && escape.is_empty() => {
|
||||
state.is_within_text_terminated_by = None;
|
||||
|
@ -8,6 +8,10 @@ fn test_string() -> Result<(), Box<EvalAltResult>> {
|
||||
engine.eval::<String>(r#""Test string: \u2764""#)?,
|
||||
"Test string: ❤"
|
||||
);
|
||||
assert_eq!(
|
||||
engine.eval::<String>(r#""Test string: ""\u2764""""#)?,
|
||||
r#"Test string: "❤""#
|
||||
);
|
||||
assert_eq!(
|
||||
engine.eval::<String>("\"Test\rstring: \\u2764\"")?,
|
||||
"Test\rstring: ❤"
|
||||
@ -24,6 +28,10 @@ fn test_string() -> Result<(), Box<EvalAltResult>> {
|
||||
engine.eval::<String>(" `Test string: \\u2764\nhello,\\nworld!`")?,
|
||||
"Test string: \\u2764\nhello,\\nworld!"
|
||||
);
|
||||
assert_eq!(
|
||||
engine.eval::<String>(r#" `Test string: \\u2764\n``hello``,\\n"world"!`"#)?,
|
||||
r#"Test string: \\u2764\n`hello`,\\n"world"!"#
|
||||
);
|
||||
assert_eq!(
|
||||
engine.eval::<String>(" `\nTest string: \\u2764\nhello,\\nworld!`")?,
|
||||
"Test string: \\u2764\nhello,\\nworld!"
|
||||
|
Loading…
Reference in New Issue
Block a user