Module: Jekyll::VitePressTheme::RougeStyles
- Defined in:
- lib/jekyll/vitepress_theme/hooks.rb
Constant Summary collapse
- DEFAULT_LIGHT =
'github'.freeze
- DEFAULT_DARK =
'github.dark'.freeze
Class Method Summary collapse
- .apply(site) ⇒ Object
- .generated_css(light_name, dark_name) ⇒ Object
- .normalized_name(name) ⇒ Object
- .resolved_theme_names(syntax_config) ⇒ Object
- .valid_theme_name(name, fallback) ⇒ Object
Class Method Details
.apply(site) ⇒ Object
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 329 def apply(site) theme_config = site.config['jekyll_vitepress'] return unless theme_config.is_a?(Hash) light_name, dark_name = resolved_theme_names(theme_config['syntax']) light_name = valid_theme_name(light_name, DEFAULT_LIGHT) dark_name = valid_theme_name(dark_name, DEFAULT_DARK) theme_config['syntax'] = { 'light_theme' => light_name, 'dark_theme' => dark_name } theme_config['_generated_rouge_css'] = generated_css(light_name, dark_name) rescue StandardError => e Jekyll.logger.warn('jekyll-vitepress-theme', "Rouge theme generation failed: #{e.}") end |
.generated_css(light_name, dark_name) ⇒ Object
371 372 373 374 375 376 377 378 379 380 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 371 def generated_css(light_name, dark_name) light_theme = Rouge::Theme.find(light_name) dark_theme = Rouge::Theme.find(dark_name) return '' unless light_theme && dark_theme [ light_theme.render(scope: '.vp-doc .highlighter-rouge .highlight'), dark_theme.render(scope: '.dark .vp-doc .highlighter-rouge .highlight') ].join("\n") end |
.normalized_name(name) ⇒ Object
355 356 357 358 359 360 361 362 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 355 def normalized_name(name) return nil unless name value = name.to_s.strip return nil if value.empty? value end |
.resolved_theme_names(syntax_config) ⇒ Object
346 347 348 349 350 351 352 353 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 346 def resolved_theme_names(syntax_config) return [DEFAULT_LIGHT, DEFAULT_DARK] unless syntax_config.is_a?(Hash) light = normalized_name(syntax_config['light_theme'] || syntax_config[:light_theme]) dark = normalized_name(syntax_config['dark_theme'] || syntax_config[:dark_theme]) [light || DEFAULT_LIGHT, dark || DEFAULT_DARK] end |
.valid_theme_name(name, fallback) ⇒ Object
364 365 366 367 368 369 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 364 def valid_theme_name(name, fallback) return name if Rouge::Theme.find(name) Jekyll.logger.warn('jekyll-vitepress-theme', "Unknown Rouge theme '#{name}', falling back to '#{fallback}'.") fallback end |