Add suppress_line_ids to Gitlab::Highlight

What does this MR do and why?

Adds suppress_line_ids option to Gitlab::Highlight, threads through BlobPresenter.

(I need this for the stacked MRs; split into smol pieces because the whole thing was too large for one review.)

Note that suppress_line_ids already exists in master, it just can't be passed in from outside yet. This lets you do so while still using its previous default if not given.

MR stack

For Render blob line of code in GFM (#300855):

How to set up and validate locally

Internal API exposure only; you can test it out with bin/rails console though:

[1] pry(main)> Gitlab::Highlight.highlight('abc.nix', "{ hello = world; }\n", language: 'nix')
=> "<span id=\"LC1\" class=\"line\" data-lang=\"nix\"><span class=\"p\">{</span> <span class=\"nv\">hello</span> <span class=\"o\">=</span> <span class=\"nv\">world</span><span class=\"p\">;</span> <span class=\"p\">}</span></span>"
[2] pry(main)> Gitlab::Highlight.highlight('abc.nix', "{ hello = world; }\n", language: 'nix', used_on: :diff)
=> "<span class=\"line\" data-lang=\"nix\"><span class=\"p\">{</span> <span class=\"nv\">hello</span> <span class=\"o\">=</span> <span class=\"nv\">world</span><span class=\"p\">;</span> <span class=\"p\">}</span></span>"
[3] pry(main)> Gitlab::Highlight.highlight('abc.nix', "{ hello = world; }\n", language: 'nix', suppress_line_ids: true)
=> "<span class=\"line\" data-lang=\"nix\"><span class=\"p\">{</span> <span class=\"nv\">hello</span> <span class=\"o\">=</span> <span class=\"nv\">world</span><span class=\"p\">;</span> <span class=\"p\">}</span></span>"

used_on defaults to :blob; line IDs are suppressed by default on diffs, but now we can force it.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Asherah Connor

Merge request reports

Loading