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

Newlines ("\n") get lost and replaced with a whitespace #269

Open
1 task done
ndemie opened this issue Aug 4, 2021 · 13 comments
Open
1 task done

Newlines ("\n") get lost and replaced with a whitespace #269

ndemie opened this issue Aug 4, 2021 · 13 comments

Comments

@ndemie
Copy link

ndemie commented Aug 4, 2021

Please help prevent duplicate issues before submitting a new one:

  • I've searched other open/closed issues for duplicates before opening up this new issue.

Report

Newlines seem to get lost when creating an attributed string using DownStyler and get replaced with a whitespace

What did you do?

let string = "Test\nTest"
let down = Down(markdownString: string)
do {
    let attributedString = try down.toAttributedString(styler: DownStyler(configuration: .testConfiguration)
    print(attributedString.string)
}

"Test Test"

What did you expect to happen?

print(attributedString.string)

"Test\nTest"

Before this we used a stylesheet which didn't cause this issue. I've tried replacing newlines by double newlines but that renders two newlines causing too much spacing.

@ndemie ndemie changed the title Newlines ("\n") get lost and replace with a whitespace Newlines ("\n") get lost and replaced with a whitespace Aug 4, 2021
@johnxnguyen
Copy link
Owner

Hi @ndemie , so there is a specific option to use to treat these "soft breaks" (what you're getting) as "hard breaks" (what you want). By default, all single newlines are considered soft breaks. You want to pass in this option to the parser, so something like:

let attributedString = try down.toAttributedString(.hardBreaks, styler: DownStyler(configuration: .testConfiguration)

Let me know how it goes.

@ndemie
Copy link
Author

ndemie commented Aug 4, 2021

That fixes it, thanks!

@ndemie ndemie closed this as completed Aug 4, 2021
@ndemie
Copy link
Author

ndemie commented Aug 10, 2021

Multiple breaks still seem to get lost though.

Test\nTest\n\nTest
gets rendered as

Test
Test
Test

while I would expect

Test
Test

Test

Any solution for this @johnxnguyen?

@ndemie ndemie reopened this Aug 10, 2021
@ndemie
Copy link
Author

ndemie commented Aug 10, 2021

Also, unrelated (so let me know if you want this in a seperate issue), but none of the custom glyph's seem to get rendered for me e.g. codeBlockBackground, quoteStripe and thematicBreak. Any clue where the issue could be?

@johnxnguyen
Copy link
Owner

@ndemie those custom attributes require the use of the DownLayoutManager, which understands what they are and is capable of drawing them in the text view. In short, you need to insert an instance of this object in your text field stack. Check out the implementation of DownTextView, or open a new issue and we can discuss it in more detail there.

@johnxnguyen
Copy link
Owner

@ndemie regarding the line break issue, I'll need to try it out myself and do some debugging, not sure if it's an issue with the parsing or the styling. I have a bit of a backlog of things to do for this repo so I won't be able to jump on this immediately. Feel free to come back and remind me if there's no activity here.

@ndemie ndemie closed this as completed Aug 11, 2021
@applypost
Copy link

Multiple breaks isn't working for me either with the solution.

Is the fix still in the backlog?

@ndemie
Copy link
Author

ndemie commented Apr 28, 2022

Any update on this @johnxnguyen?

@ndemie ndemie reopened this Apr 28, 2022
@ndemie
Copy link
Author

ndemie commented Sep 2, 2022

Hi @johnxnguyen, it's been a while. I was wondering if you had the chance to take a look at this yet?

@SilenceLove
Copy link

Do you still have time to fix this issue? @johnxnguyen

@YBJust
Copy link

YBJust commented Mar 28, 2024

I have encountered the same problem, and this problem has a great impact on me. Do you have time to solve it? Thanks very much!

@daehn
Copy link

daehn commented Jun 3, 2024

Running into this issue as well, is this currently unsupported or are there ways to work around this @johnxnguyen? Hope your doing well btw, has been a while!

@daehn
Copy link

daehn commented Jun 3, 2024

I was able to fix rendering multiple line breaks by adjusting my custom styler to style paragraphs accordingly.

open func style(paragraph str: NSMutableAttributedString) {
    let style = NSMutableParagraphStyle()
    style.paragraphSpacing = 20
    str.addAttributes([.paragraphStyle: style], range: NSRange(location: 0, length: str.length))
}

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

No branches or pull requests

6 participants