1e5c31af7Sopenharmony_ci# Copyright 2021-2024 The Khronos Group Inc.
2e5c31af7Sopenharmony_ci#
3e5c31af7Sopenharmony_ci# SPDX-License-Identifier: Apache-2.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ci# Khronos overrides for Rouge 'github' theme CSS for accessibility.
6e5c31af7Sopenharmony_ci# See (note that this code is evolving, works as of asciidoctor 2.0.12):
7e5c31af7Sopenharmony_ci# https://github.com/asciidoctor/asciidoctor/blob/master/lib/asciidoctor/syntax_highlighter/rouge.rb
8e5c31af7Sopenharmony_ci
9e5c31af7Sopenharmony_ciinclude ::Asciidoctor
10e5c31af7Sopenharmony_ci
11e5c31af7Sopenharmony_ciclass ExtendedRougeSyntaxHighlighter < (Asciidoctor::SyntaxHighlighter.for 'rouge')
12e5c31af7Sopenharmony_ci  register_for 'rouge'
13e5c31af7Sopenharmony_ci
14e5c31af7Sopenharmony_ci  # Insert rouge stylesheet from super
15e5c31af7Sopenharmony_ci  # Then replace many 'github' theme colors for accessibility compliance
16e5c31af7Sopenharmony_ci  # It would be better to use rouge's stylesheet factory, if it has one
17e5c31af7Sopenharmony_ci  def docinfo location, doc, opts
18e5c31af7Sopenharmony_ci    overrides = %(<style>
19e5c31af7Sopenharmony_ci/* Khronos overrides for Rouge 'github' theme for accessibility */
20e5c31af7Sopenharmony_ci/* Basically everything is overridden, but it is unclear how to add a new Rouge theme */
21e5c31af7Sopenharmony_ci/* Codelike overrides */
22e5c31af7Sopenharmony_cipre.rouge .cm, pre.rouge .cp, pre.rouge .c1, pre.rouge .cs,
23e5c31af7Sopenharmony_cipre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cpf,
24e5c31af7Sopenharmony_cipre.rouge .gh, pre.rouge .bp {
25e5c31af7Sopenharmony_ci  color: #5f5f5f;
26e5c31af7Sopenharmony_ci}
27e5c31af7Sopenharmony_ci/* Numberlike overrides */
28e5c31af7Sopenharmony_cipre.rouge .mf, pre.rouge .mh, pre.rouge .il, pre.rouge .mi,
29e5c31af7Sopenharmony_cipre.rouge .mo, pre.rouge .m, pre.rouge .mb, pre.rouge .mx {
30e5c31af7Sopenharmony_ci  color: #007f7f;
31e5c31af7Sopenharmony_ci}
32e5c31af7Sopenharmony_ci/* Namelike overrides */
33e5c31af7Sopenharmony_cipre.rouge .ne, pre.rouge .nf, pre.rouge .fm, pre.rouge .nl {
34e5c31af7Sopenharmony_ci  color: #5f0000;
35e5c31af7Sopenharmony_ci}
36e5c31af7Sopenharmony_ci/* Other things ANDI warns about - unsure of their purposes */
37e5c31af7Sopenharmony_cipre.rouge .go, pre.rouge .gu {
38e5c31af7Sopenharmony_ci  color: #727272;
39e5c31af7Sopenharmony_ci}
40e5c31af7Sopenharmony_cipre.rouge .sr {
41e5c31af7Sopenharmony_ci  color: #008512;
42e5c31af7Sopenharmony_ci}
43e5c31af7Sopenharmony_cipre.rouge .na, pre.rouge .nb {
44e5c31af7Sopenharmony_ci  color: #007f7f;
45e5c31af7Sopenharmony_ci}
46e5c31af7Sopenharmony_cipre.rouge .no, pre.rouge .vc, pre.rouge .vg, pre.rouge .vi,
47e5c31af7Sopenharmony_cipre.rouge .nv, pre.rouge .vm {
48e5c31af7Sopenharmony_ci  color: #007f7f;
49e5c31af7Sopenharmony_ci}
50e5c31af7Sopenharmony_cipre.rouge .w {
51e5c31af7Sopenharmony_ci  color: #727272;
52e5c31af7Sopenharmony_ci}
53e5c31af7Sopenharmony_ci</style>)
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_ci    # super can return either <style> or <link> markup, both work
56e5c31af7Sopenharmony_ci    %(#{super}
57e5c31af7Sopenharmony_ci#{overrides})
58e5c31af7Sopenharmony_ci  end
59e5c31af7Sopenharmony_ciend
60e5c31af7Sopenharmony_ci
61