Skip to content

Conversation

@keystroke3
Copy link
Contributor

@keystroke3 keystroke3 commented Jun 2, 2025

Fixes #6998 by looking for `" and "` patterns. If the first quote character is encountered before the second one, then the second character is treated as quoted and the outer quote block ends there. If the second character is encountered before the first, then the inner quote is considered closed, but the other one is not closed. So after the second " in `"" we are still in backtick block. For `"` we are not within any quote block after the last `

@keystroke3 keystroke3 changed the title fix quote within quotes formatted correctly fix quote within quotes formatted incorrectly by fmt Jun 2, 2025
@francislavoie
Copy link
Member

francislavoie commented Jun 2, 2025

I think it could be easier to change quoted to not be a boolean but instead a rune and then check if it's 0 to mean not quoted. Then you just need two conditions very early in the loop if quoted == '"' && ch == '`' and vice versa to just eat the character as-is until the matching quote is found

@mholt
Copy link
Member

mholt commented Jun 6, 2025

That's actually a great idea @francislavoie

@keystroke3
Copy link
Contributor Author

Sorry for the late reply. I will modify the code and update the pull request.

@moritzdietz
Copy link

Oh this is going to be a nice addition! :)

@francislavoie
Copy link
Member

@keystroke3 any interest in finishing this up?

@keystroke3
Copy link
Contributor Author

Apologies for the delay in delivering the fix, life got in the way. I will attempt to work it and deliver by the end of next week. If I can't, then I will update the issue as such so someone else can pick it up.

@keystroke3
Copy link
Contributor Author

I still want to fix this, I will need more time, hopefully this weekend I can make some time. Thanks for the patience.

@keystroke3
Copy link
Contributor Author

I need to synchronize with the repo, so I will create a new pull request.

@keystroke3 keystroke3 reopened this Oct 25, 2025
@keystroke3
Copy link
Contributor Author

OK, I tried the suggested way of using a rune, but it proved more confusing for me to implement. So I used a string instead and checked the cases five we can have; no quote, backtick, quote, quoted backtick and backticked quote:

'', '`', '"', '"`', '`"'

If you feel the suggested way is better, please feel free to reject and re-write as you see fit. I would also like to see how the suggestion looks like.
Thank you for your patience and the person who raised the issue as well.

Copy link
Member

@mholt mholt left a comment

Choose a reason for hiding this comment

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

Nice, I think that'll work... at least better than what we had before!

@mholt mholt merged commit 92c8bc7 into caddyserver:master Oct 27, 2025
43 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The formatter should allow for backticks within quotes and vice versa

4 participants