Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: string escape characters #750

Merged
merged 6 commits into from
Nov 15, 2023
Merged

fix: string escape characters #750

merged 6 commits into from
Nov 15, 2023

Conversation

nicpuppa
Copy link
Contributor

Description

This PR changes the evaluation of escape characters within a string. Instead of escaping those characters now are translated.

Related issues

closes #701

@nicpuppa nicpuppa requested a review from saig0 as a code owner October 21, 2023 11:57
@nicpuppa
Copy link
Contributor Author

Hey @saig0 , I tried to solve the bug about the new line character. I thought that the problem involved also all the other special characters, so I changed a bit the behaviour of the engine. Please let me know your thoughts 👍 💭 🙏

Copy link
Member

@saig0 saig0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nicpuppa awesome. 🎉

I have a few minor comments before merging. Please have a look. 🍪

Expressions which contain escapes are now translated as if in a string
literal
Instead of using a Java 15 escape function (not compatible with java
11), using a built-in scala function to parse escpae characters in
strings
Copy link
Member

@saig0 saig0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nicpuppa very nice! 🎉

I did a manual test with the changes to see how it works in Zeebe. And it looks good. ✔️ The newline characters are not escaped anymore, except for the static value but this is probably related to Zeebe and not the FEEL engine. It seems that Unicode characters are still escaped but we can follow up on this issue.

Before merging, please have a look at my comments. 🚀


Screenshot from 2023-11-15 11-24-48

Use a more functional expression in translateEscapes new
function.
Use
translateEscapes function also in parseUnaryTests
@saig0 saig0 added this pull request to the merge queue Nov 15, 2023
Merged via the queue into main with commit 7cc6d4f Nov 15, 2023
3 checks passed
@saig0 saig0 deleted the 701-string-escape branch November 15, 2023 12:37
@saig0
Copy link
Member

saig0 commented Nov 20, 2023

/backport

Copy link

Successfully created backport PR for 1.17:

@saig0
Copy link
Member

saig0 commented Dec 20, 2023

/backport

Copy link

Backport failed for 1.16, because it was unable to cherry-pick the commit(s).

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin 1.16
git worktree add -d .worktree/backport-750-to-1.16 origin/1.16
cd .worktree/backport-750-to-1.16
git switch --create backport-750-to-1.16
git cherry-pick -x dbef7e42c2c9c2ba59e8bd959dabe50f7c8c2c01 f1f320479a04c24e320e0b2d8a88bffa3ae31275 37c2b4b67a441b8273478837c5aa3da1c0c62ef0 ccd4e02c5a4df7a3c5431a1babf5c5a23f991117 ebdb11056b4c09ef4926a403c0b8f6ad356e85db 2c8c1b7c7ef51205535cabd29d184c2c12088da4

This comment was marked as resolved.

github-merge-queue bot referenced this pull request in camunda/camunda Sep 3, 2024
#21884)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [org.camunda.feel:feel-engine](http://www.camunda.org)
([source](https://redirect.github.com/camunda/feel-scala)) |
`1.18.0-alpha1` -> `1.18.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.camunda.feel:feel-engine/1.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.camunda.feel:feel-engine/1.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.camunda.feel:feel-engine/1.18.0-alpha1/1.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.camunda.feel:feel-engine/1.18.0-alpha1/1.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>camunda/feel-scala (org.camunda.feel:feel-engine)</summary>

###
[`v1.18.0`](https://redirect.github.com/camunda/feel-scala/releases/tag/1.18.0)

[Compare
Source](https://redirect.github.com/camunda/feel-scala/compare/1.18.0-alpha1...1.18.0)

#### What's Changed

##### Features ✨

- feat: Add built-in function to strip whitespace by
[@&#8203;skayliu](https://redirect.github.com/skayliu) in
[https://github.com/camunda/feel-scala/pull/826](https://redirect.github.com/camunda/feel-scala/pull/826)
- feat: Add built-in function to generate a UUID string by
[@&#8203;skayliu](https://redirect.github.com/skayliu) in
[https://github.com/camunda/feel-scala/pull/834](https://redirect.github.com/camunda/feel-scala/pull/834)
- feat: Add built-in function to encode a string as base64 by
[@&#8203;sbuettner](https://redirect.github.com/sbuettner) in
[https://github.com/camunda/feel-scala/pull/847](https://redirect.github.com/camunda/feel-scala/pull/847)
- feat: Add built-in function to check if a list is empty by
[@&#8203;skayliu](https://redirect.github.com/skayliu) in
[https://github.com/camunda/feel-scala/pull/851](https://redirect.github.com/camunda/feel-scala/pull/851)
- feat: Make the FeelEngineBuilder available from Java/Kotlin by
[@&#8203;vicmosin](https://redirect.github.com/vicmosin) in
[https://github.com/camunda/feel-scala/pull/832](https://redirect.github.com/camunda/feel-scala/pull/832)
- feat: I can interrupt an expression evaluation by
[@&#8203;vicmosin](https://redirect.github.com/vicmosin) in
[https://github.com/camunda/feel-scala/pull/824](https://redirect.github.com/camunda/feel-scala/pull/824)

##### Fixes 🐛

- fix: Regression in string() function for string and null values by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/749](https://redirect.github.com/camunda/feel-scala/pull/749)
- fix: String escape characters by
[@&#8203;nicpuppa](https://redirect.github.com/nicpuppa) in
[https://github.com/camunda/feel-scala/pull/750](https://redirect.github.com/camunda/feel-scala/pull/750)
- fix: Double quotes in string literal are escaped by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/780](https://redirect.github.com/camunda/feel-scala/pull/780)
- fix: Variable resolution for custom context by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/786](https://redirect.github.com/camunda/feel-scala/pull/786)
- fix: `string()` function can handle a context with custom value types
by [@&#8203;mustafadagher](https://redirect.github.com/mustafadagher) in
[https://github.com/camunda/feel-scala/pull/833](https://redirect.github.com/camunda/feel-scala/pull/833)
- fix: Invoke `context()` function with a list containing a custom
context by [@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/858](https://redirect.github.com/camunda/feel-scala/pull/858)
- fix: `substring()` with exceeding length by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/893](https://redirect.github.com/camunda/feel-scala/pull/893)
- fix: `number()` to return null if the given string is invalid by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/892](https://redirect.github.com/camunda/feel-scala/pull/892)
- fix: Return `null` if a date is invalid by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/889](https://redirect.github.com/camunda/feel-scala/pull/889)
- fix: Function `context put()` works for more than two keys by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/902](https://redirect.github.com/camunda/feel-scala/pull/902)
- fix: Unary-test behavior with special input variable `?` by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/887](https://redirect.github.com/camunda/feel-scala/pull/887)
- fix: List operation returns null if the value is not a list by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/895](https://redirect.github.com/camunda/feel-scala/pull/895)
- fix: Variable name starting with "in" by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/909](https://redirect.github.com/camunda/feel-scala/pull/909)
- fix: Parse expression with NBSP character by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/914](https://redirect.github.com/camunda/feel-scala/pull/914)
- fix: Detect duplicated context values in `distinct values()` +
`union()` + `duplicate values()` by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/908](https://redirect.github.com/camunda/feel-scala/pull/908)

##### Dependencies 🤖

- chore(deps): bump org.apache.maven.plugins:maven-shade-plugin from
3.5.0 to 3.5.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/733](https://redirect.github.com/camunda/feel-scala/pull/733)
- build: Update mvn-scalafmt plugin by
[@&#8203;saig0](https://redirect.github.com/saig0) in
[https://github.com/camunda/feel-scala/pull/721](https://redirect.github.com/camunda/feel-scala/pull/721)
- chore(deps-dev): bump version.log4j from 2.20.0 to 2.21.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/745](https://redirect.github.com/camunda/feel-scala/pull/745)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.1.2 to 3.2.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/755](https://redirect.github.com/camunda/feel-scala/pull/755)
- chore(deps-dev): bump version.log4j from 2.21.0 to 2.21.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/754](https://redirect.github.com/camunda/feel-scala/pull/754)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.2.1 to 3.2.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/760](https://redirect.github.com/camunda/feel-scala/pull/760)
- chore(deps-dev): bump version.log4j from 2.21.1 to 2.22.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/764](https://redirect.github.com/camunda/feel-scala/pull/764)
- chore(deps): bump
org.apache.maven.plugins:maven-project-info-reports-plugin from 3.4.5 to
3.5.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/766](https://redirect.github.com/camunda/feel-scala/pull/766)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.2.2 to 3.2.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/775](https://redirect.github.com/camunda/feel-scala/pull/775)
- chore(deps-dev): bump version.log4j from 2.22.0 to 2.22.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/787](https://redirect.github.com/camunda/feel-scala/pull/787)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.2.3 to 3.2.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/793](https://redirect.github.com/camunda/feel-scala/pull/793)
- chore(deps): bump actions/cache from 3 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/795](https://redirect.github.com/camunda/feel-scala/pull/795)
- chore(deps): bump org.apache.maven.plugins:maven-shade-plugin from
3.5.1 to 3.5.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/812](https://redirect.github.com/camunda/feel-scala/pull/812)
- chore(deps-dev): bump version.log4j from 2.22.1 to 2.23.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/811](https://redirect.github.com/camunda/feel-scala/pull/811)
- chore(deps): bump org.scala-lang:scala-library from 2.13.12 to 2.13.13
by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/813](https://redirect.github.com/camunda/feel-scala/pull/813)
- chore(deps-dev): bump version.log4j from 2.23.0 to 2.23.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/816](https://redirect.github.com/camunda/feel-scala/pull/816)
- chore(deps): bump org.apache.maven.plugins:maven-assembly-plugin from
3.6.0 to 3.7.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/817](https://redirect.github.com/camunda/feel-scala/pull/817)
- chore(deps): bump org.apache.maven.plugins:maven-assembly-plugin from
3.7.0 to 3.7.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/819](https://redirect.github.com/camunda/feel-scala/pull/819)
- chore(deps): bump com.lihaoyi:fastparse\_2.13 from 3.0.2 to 3.1.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/827](https://redirect.github.com/camunda/feel-scala/pull/827)
- chore(deps): bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0
to 3.4.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[https://github.com/camunda/feel-scala/pull/828](https://redirect.github.com/camunda/feel-scala/pull/828)
- chore(deps): bump org.apache.maven.plugins:maven-jar-plugin from 3.4.0
to 3.4.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[https://github.com/camunda/feel-scala/pull/837](https://redirect.github.com/camunda/feel-scala/pull/837)
- chore(deps): bump org.apache.maven.plugins:maven-shade-plugin from
3.5.2 to 3.5.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/842](https://redirect.github.com/camunda/feel-scala/pull/842)
- chore(deps): bump net.alchim31.maven:scala-maven-plugin from 4.8.1 to
4.9.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/841](https://redirect.github.com/camunda/feel-scala/pull/841)
- chore(deps): bump org.scala-lang:scala-library from 2.13.13 to 2.13.14
by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/845](https://redirect.github.com/camunda/feel-scala/pull/845)
- chore(deps): bump net.alchim31.maven:scala-maven-plugin from 4.9.0 to
4.9.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/849](https://redirect.github.com/camunda/feel-scala/pull/849)
- chore(deps): bump org.apache.maven.plugins:maven-shade-plugin from
3.5.3 to 3.6.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/862](https://redirect.github.com/camunda/feel-scala/pull/862)
- chore(deps): bump com.fasterxml.uuid:java-uuid-generator from 5.0.0 to
5.1.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/863](https://redirect.github.com/camunda/feel-scala/pull/863)
- chore(deps): bump
org.apache.maven.plugins:maven-project-info-reports-plugin from 3.5.0 to
3.6.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/868](https://redirect.github.com/camunda/feel-scala/pull/868)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.2.5 to 3.3.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/866](https://redirect.github.com/camunda/feel-scala/pull/866)
- chore(deps): bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1
to 3.4.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[https://github.com/camunda/feel-scala/pull/869](https://redirect.github.com/camunda/feel-scala/pull/869)
- chore(deps): bump
org.apache.maven.plugins:maven-project-info-reports-plugin from 3.6.0 to
3.6.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/871](https://redirect.github.com/camunda/feel-scala/pull/871)
- chore(deps): bump net.alchim31.maven:scala-maven-plugin from 4.9.1 to
4.9.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/872](https://redirect.github.com/camunda/feel-scala/pull/872)
- chore(deps): bump com.lihaoyi:fastparse\_2.13 from 3.1.0 to 3.1.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/875](https://redirect.github.com/camunda/feel-scala/pull/875)
- chore(deps): bump
org.apache.maven.plugins:maven-project-info-reports-plugin from 3.6.1 to
3.6.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/878](https://redirect.github.com/camunda/feel-scala/pull/878)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.3.0 to 3.3.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/876](https://redirect.github.com/camunda/feel-scala/pull/876)
- chore(deps): bump org.apache.maven.plugins:maven-site-plugin from
3.12.1 to 3.20.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/886](https://redirect.github.com/camunda/feel-scala/pull/886)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.3.1 to 3.4.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/885](https://redirect.github.com/camunda/feel-scala/pull/885)
- chore(deps): bump
org.apache.maven.plugins:maven-project-info-reports-plugin from 3.6.2 to
3.7.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/894](https://redirect.github.com/camunda/feel-scala/pull/894)
- chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin from
3.4.0 to 3.5.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/camunda/feel-scala/pull/910](https://redirect.github.com/camunda/feel-scala/pull/910)

#### New Contributors

- [@&#8203;lzgabel](https://redirect.github.com/lzgabel) made their
first contribution in
[https://github.com/camunda/feel-scala/pull/734](https://redirect.github.com/camunda/feel-scala/pull/734)
- [@&#8203;jonathanlukas](https://redirect.github.com/jonathanlukas)
made their first contribution in
[https://github.com/camunda/feel-scala/pull/794](https://redirect.github.com/camunda/feel-scala/pull/794)
- [@&#8203;vicmosin](https://redirect.github.com/vicmosin) made their
first contribution in
[https://github.com/camunda/feel-scala/pull/824](https://redirect.github.com/camunda/feel-scala/pull/824)
- [@&#8203;skayliu](https://redirect.github.com/skayliu) made their
first contribution in
[https://github.com/camunda/feel-scala/pull/826](https://redirect.github.com/camunda/feel-scala/pull/826)
- [@&#8203;mustafadagher](https://redirect.github.com/mustafadagher)
made their first contribution in
[https://github.com/camunda/feel-scala/pull/833](https://redirect.github.com/camunda/feel-scala/pull/833)
- [@&#8203;sbuettner](https://redirect.github.com/sbuettner) made their
first contribution in
[https://github.com/camunda/feel-scala/pull/847](https://redirect.github.com/camunda/feel-scala/pull/847)
- [@&#8203;andromaqui](https://redirect.github.com/andromaqui) made
their first contribution in
[https://github.com/camunda/feel-scala/pull/870](https://redirect.github.com/camunda/feel-scala/pull/870)

**Full Changelog**:
camunda/feel-scala@1.17.0...1.18.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/camunda/camunda).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIl19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Newline characters should not be escaped
2 participants