FIX server#143
Summary
Fix for https://gitlab.com/caosdb/caosdb-server/-/issues/143
Focus
- Changes to the Parser and Lexer rules are necessary to parse anything like
1e2 m^2
as "number" plus "unit". - Changes to the POV filter are necessary because the old implementation would interpret 1e2 as integer "1" with unit "e2".
Test Environment
- Tests in caosdb-pyinttest!60 (merged)
- No manual testing necessary
Check List for the Author
Please, prepare your MR for a review. Be sure to write a summary and a focus and create gitlab comments for the reviewer. They should guide the reviewer through the changes, explain your changes and also point out open questions. For further good practices have a look at our review guidelines
-
All automated tests pass -
Reference related issues -
Up-to-date CHANGELOG.md (or not necessary) -
Up-to-date JSON schema (or not necessary) -
Appropriate user and developer documentation (or not necessary) - How do I use the software? Assume "stupid" users.
- How do I develop or debug the software? Assume novice developers.
-
Annotations in code (Gitlab comments) - Intent of new code
- Problems with old code
- Why this implementation?
Check List for the Reviewer
-
I understand the intent of this MR -
All automated tests pass -
Up-to-date CHANGELOG.md (or not necessary) -
Appropriate user and developer documentation (or not necessary) -
The test environment setup works and the intended behavior is reproducible in the test environment -
In-code documentation and comments are up-to-date. -
Check: Are there specifications? Are they satisfied?
For further good practices have a look at our review guidelines.
Edited by Henrik tom Wörden
Merge request reports
Activity
assigned to @timm
mentioned in merge request caosdb-pyinttest!60 (merged)
mentioned in issue #287 (closed)
- Resolved by Henrik tom Wörden
- Resolved by Henrik tom Wörden
116 118 117 119 // try and parse as integer 118 120 try { 119 final Pattern dp = Pattern.compile("^(-?[0-9]++)\\s*([^(\\.[0-9])-][^-]*)?$"); 120 final Matcher m = dp.matcher(value); 121 final Matcher m = NUMBER_PATTERN.matcher(value); 121 122 if (!m.matches()) { 122 123 throw new NumberFormatException(); 123 124 } 124 125 final String vIntStr = m.group(1); 126 this.vInt = Integer.parseInt(vIntStr.replaceAll("\\s", "")); We allow white spaces, e.g. "1 e-23 m/2". But the parseInt function would not.
Edited by Timm Fitschen
- Resolved by Henrik tom Wörden
added 2 commits
added 1 commit
- 91d578aa - EHN: throw error when the users uses white spaces as a part of numbers
Please register or sign in to reply