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

Supporting Color and Size tags #26

Open
Dahie opened this issue Jun 21, 2020 · 1 comment
Open

Supporting Color and Size tags #26

Dahie opened this issue Jun 21, 2020 · 1 comment

Comments

@Dahie
Copy link

Dahie commented Jun 21, 2020

Hi,

BBCode has the color and size tag. These are not supported yet by the gem and are neither filtered nor converted. I can prepare the code change, but I'd like to know your stance on this. Some examples coming up.

Scenario 1: filter everything

[color=red]Hello world[/color]
# HTML filtered => "Hello World"
# markdown filtered => "Hello World"

Scenario 2: convert to span-class

[color=red]Hello world[/color]
# HTML to span => "<span class="red">Hello World</span>"
# Markdown to span => "<span class="red">Hello World</span>"

Markdown does support having some HTML tags in the syntax, so spans can be used also for underlines:

[u]Hello world[/u]
# HTML to span => "<span class="underlined">Hello World</span>"
# Markdown to span => "<span class="underlined">Hello World</span>"

Scenario 3: convert to span-style

[color=red]Hello world[/color]
# HTML to span => "<span style="color: red;">Hello World</span>"
# Markdown to span => "<span style="color: red;">Hello World</span>"

Which of the three do you support? Personally I'd like to see Scenario 2, because with this the styling information is not lost, but is only displayed if the styling classes are made in place. People who don't want to add the styling classes won't see the styling.

@jarrett
Copy link
Owner

jarrett commented Jun 21, 2020

I think scenario #2 is best. I'd add to that an API like the following:

RbbCode.new(output_format: :markdown, unsupported_features: :span)
RbbCode.new(output_format: :markdown, unsupported_features: :remove)
RbbCode.new(output_format: :markdown, unsupported_features: -> tag {
  # tag is a string representing the unsupported markup, including its content,
  # "[u]underlined text[/u]". Whatever this proc returns will be substituted into
  # the output.
  tab.sub('[u]', '_').sub('[/u]', '_')
})

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

2 participants