Pygments has some lexers that combine multiple languages and are referenced by name using the plus sign, eg "html+django" is a valid lexer name.
In the highlight tag, the lexer name also gets used as the CSS class name in the wrapping HTML <code> block, but the plus sign is invalid here.
This change simply converts plus signs to minus signs, to conform with valid CSS class names.
Use valid css class names when pygments language contains invalid cha…
…rs, eg html+jango
I think we'd want to normalize the lang elsewhere, right? And I'd love tests for this so we don't break it in the future. They're in ./test/test_tags.rb.
Is it used as a CSS classname anywhere else? As far as Pygments goes it's doing the right thing, so nothing needs to change there.
As for tests I haven't written Ruby for a couple of years, so I'm a bit out of my depth there. Happy to give it a go but I'd need some guidance.
@stephenmcd I'd be happy to pair with you remotely on this
Thanks @mattr- !
Might not be right away - I've a ton of outstanding work on my own projects unfortunately. But if I get around to it I'll ping you here.
Did this get fixed?
Nope, it was just closed by accident.
Would you like to go ahead and merge the fix? I don't do Ruby or anything with Jekyll these days, so I have almost no exposure to the code base - but as I understood, the line changed in this fix is the only location that deals with mapping language names to CSS class names, which the issue specifically is.
Doesn't seem worthwhile to leave a bug opened for this long when the fix is literally as trivial as they get. Just my 2 cents as someone who does way too much open source maintenance :-)
So this fix is pretty trivial but it doesn't take into account @lang being nil, in which case it'll just freak out. Can you call .to_s first, before gsub? Thanks!
Protect against nil @lang before fixing for css class names.
No sweat, all done - thanks a lot!
Boom! Thanks @stephenmcd :)
Update history to reflect merge of #994 [ci skip]