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

Fixed bugs in parsing block scalars #435

Merged
merged 5 commits into from
Nov 26, 2024

Conversation

fktn-k
Copy link
Owner

@fktn-k fktn-k commented Nov 25, 2024

In this PR, several bugs in parsing block literal/folded scalars (due to wrong implementations) have been fixed.

  1. A leading empty line which is more indented than the first non-empty line

    foo: |
       # this leading line contains 3 spaces as indentation
      foo # 2 spaces as indentation
    • Before: no error was emitted
    • After: parse_error is thrown
  2. A non-empty line which is less indented than the content indentation level
    but more indented than the base indentation level

    foo: |
      text
     invalid # this line is less indented than the content indentation level (2)
             # but more indented than the base indentation level (0)
    • Before: no error was emitted
    • After: parse_error is thrown
  3. A more-indented empty line in block folded scalar contents

    foo: >
           # 2 spaces(indent) + 1 tab(content) + 1 space(content)
      bar
    • Before: parsed as foo: "\t bar"
    • After: parsed as \n\t \nbar

Furthermore, although the current implementation treats half-width spaces and tabs as indentation characters, only half-width spaces should be treated as the indentation character as the YAML specification defines here.
So, in this PR, detecting an indentation level has been fixed to search only for half-width spaces in parsing block scalars.


Pull Request Checklist

Read the CONTRIBUTING.md file for detailed information.

  • Changes are described in the pull request or in a referenced issue.
  • The test suite compiles and runs without any error.
  • The code coverage on your branch is 100%.
  • The documentation is updated if you added/changed a feature.

Please don't

  • The C++11 support varies between different compilers and versions. Please note the list of supported compilers. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with #ifdefs or other means.
  • Please refrain from proposing changes that would break YAML specifications. If you propose a conformant extension of YAML to be supported by the library, please motivate this extension.
  • Please do not open pull requests that address multiple issues.

@fktn-k fktn-k added the bug Something isn't working label Nov 25, 2024
@fktn-k fktn-k added this to the Release v0.4.0 milestone Nov 25, 2024
@fktn-k fktn-k self-assigned this Nov 25, 2024
Copy link

github-actions bot commented Nov 25, 2024

:octocat: Upload Coverage Event Notification

Coverage data has been uploaded for the commit baa21c68a13068f2b8758c54ee81caa2e5e585a0.
You can download the artifact which contains the same file uploaded to the Coveralls and its HTML version.

Name fkYAML_coverage.pr435.zip
ID 2235996598
URL https://github.com/fktn-k/fkYAML/actions/runs/12020724013/artifacts/2235996598

@fktn-k fktn-k changed the title Fixed bugs in parsing block literal/folded scalars Fixed bugs in parsing block scalars Nov 26, 2024
@fktn-k fktn-k merged commit a3ada06 into develop Nov 26, 2024
155 checks passed
@fktn-k fktn-k deleted the too_many_spaces_before_block_scalar_content branch November 26, 2024 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant