File: github.rb

package info (click to toggle)
ruby-rouge 4.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,844 kB
  • sloc: ruby: 38,489; sed: 2,071; perl: 152; makefile: 8
file content (149 lines) | stat: -rw-r--r-- 4,905 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# -*- coding: utf-8 -*- #
# frozen_string_literal: true

module Rouge
  module Themes
    class Github < CSSTheme
      name 'github'

      # Primer primitives
      # https://github.com/primer/primitives/tree/main/src/tokens
      P_RED_0        = {:light => '#ffebe9', :dark => '#ffdcd7'}
      P_RED_3        = {:dark => '#ff7b72'}
      P_RED_5        = {:light => '#cf222e'}
      P_RED_7        = {:light => '#82071e', :dark => '#8e1519'}
      P_RED_8        = {:dark => '#67060c'}
      P_ORANGE_2     = {:dark => '#ffa657'}
      P_ORANGE_6     = {:light => '#953800'}
      P_GREEN_0      = {:light => '#dafbe1', :dark => '#aff5b4'}
      P_GREEN_1      = {:dark => '#7ee787'}
      P_GREEN_6      = {:light => '#116329'}
      P_GREEN_8      = {:dark => '#033a16'}
      P_BLUE_1       = {:dark => '#a5d6ff'}
      P_BLUE_2       = {:dark => '#79c0ff'}
      P_BLUE_5       = {:dark => '#1f6feb'}
      P_BLUE_6       = {:light => '#0550ae'}
      P_BLUE_8       = {:light => '#0a3069'}
      P_PURPLE_2     = {:dark => '#d2a8ff'}
      P_PURPLE_5     = {:light => '#8250df'}
      P_GRAY_0       = {:light => '#f6f8fa', :dark => '#f0f6fc'}
      P_GRAY_1       = {:dark => '#c9d1d9'}
      P_GRAY_3       = {:dark => '#8b949e'}
      P_GRAY_5       = {:light => '#6e7781'}
      P_GRAY_8       = {:dark => '#161b22'}
      P_GRAY_9       = {:light => '#24292f'}

      extend HasModes

      def self.light!
        mode :dark # indicate that there is a dark variant
        mode! :light
      end

      def self.dark!
        mode :light # indicate that there is a light variant
        mode! :dark
      end

      def self.make_dark!
        palette :comment     => P_GRAY_3[@mode]
        palette :constant    => P_BLUE_2[@mode]
        palette :entity      => P_PURPLE_2[@mode]
        palette :heading     => P_BLUE_5[@mode]
        palette :keyword     => P_RED_3[@mode]
        palette :string      => P_BLUE_1[@mode]
        palette :tag         => P_GREEN_1[@mode]
        palette :variable    => P_ORANGE_2[@mode]

        palette :fgDefault   => P_GRAY_1[@mode]
        palette :bgDefault   => P_GRAY_8[@mode]

        palette :fgInserted  => P_GREEN_0[@mode]
        palette :bgInserted  => P_GREEN_8[@mode]

        palette :fgDeleted   => P_RED_0[@mode]
        palette :bgDeleted   => P_RED_8[@mode]

        palette :fgError     => P_GRAY_0[@mode]
        palette :bgError     => P_RED_7[@mode]
      end

      def self.make_light!
        palette :comment     => P_GRAY_5[@mode]
        palette :constant    => P_BLUE_6[@mode]
        palette :entity      => P_PURPLE_5[@mode]
        palette :heading     => P_BLUE_6[@mode]
        palette :keyword     => P_RED_5[@mode]
        palette :string      => P_BLUE_8[@mode]
        palette :tag         => P_GREEN_6[@mode]
        palette :variable    => P_ORANGE_6[@mode]

        palette :fgDefault   => P_GRAY_9[@mode]
        palette :bgDefault   => P_GRAY_0[@mode]

        palette :fgInserted  => P_GREEN_6[@mode]
        palette :bgInserted  => P_GREEN_0[@mode]

        palette :fgDeleted   => P_RED_7[@mode]
        palette :bgDeleted   => P_RED_0[@mode]

        palette :fgError     => P_GRAY_0[@mode]
        palette :bgError     => P_RED_7[@mode]
      end

      light!

      style Text,                       :fg => :fgDefault, :bg => :bgDefault

      style Keyword,                    :fg => :keyword

      style Generic::Error,             :fg => :fgError

      style Generic::Deleted,           :fg => :fgDeleted, :bg => :bgDeleted

      style Name::Builtin,
            Name::Class,
            Name::Constant,
            Name::Namespace,            :fg => :variable

      style Literal::String::Regex,
            Name::Attribute,
            Name::Tag,                  :fg => :tag

      style Generic::Inserted,          :fg => :fgInserted, :bg => :bgInserted
      style Generic::EmphStrong, :italic => true, :bold => true

      style Keyword::Constant,
            Literal,
            Literal::String::Backtick,
            Name::Builtin::Pseudo,
            Name::Exception,
            Name::Label,
            Name::Property,
            Name::Variable,
            Operator,                   :fg => :constant

      style Generic::Heading,
            Generic::Subheading,        :fg => :heading, :bold => true

      style Literal::String,            :fg => :string

      style Name::Decorator,
            Name::Function,             :fg => :entity

      style Error,                      :fg => :fgError, :bg => :bgError

      style Comment,
            Generic::Lineno,
            Generic::Traceback,         :fg => :comment

      style Name::Entity,
            Literal::String::Interpol,  :fg => :fgDefault

      style Generic::Emph,              :fg => :fgDefault, :italic => true

      style Generic::Strong,            :fg => :fgDefault, :bold => true

    end
  end
end