Skip to content

ansi_html() bug when strings with the same style have been pasted together #752

Description

@trevorld

I'm observing an error with ansi_html() when strings with the same styles have been pasted together. An example:

library("cli")
asf <- combine_ansi_styles(bg_blue, col_br_yellow)
s <- paste(rep_len(asf(" "), 10L), collapse = "")
h_cli <- ansi_html(s)
print(h_cli)
[1] "<span class=\"ansi ansi-color-3 ansi-bg-color-4\"> </span>         "

Note only the first space is styled with the correct background color and the remaining nine spaces are unstyled. In contrast I believe the right output should instead be:

[1] "<span class=\"ansi ansi-color-3 ansi-bg-color-4\">          </span>"

(note the different placement of the </span>). In contrast fansi::sgr_to_html() seems to correctly preserve a style for all ten spaces:

h_fansi <- fansi::sgr_to_html(s)
print(h_fansi)
[1] "<span style='color: #FFFF55; background-color: #0000BB;'>          </span>"

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugan unexpected problem or unintended behavior

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions