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
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 346 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
388 389 390 391 392 393 394 395 396 397 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 388 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
372 373 374 375 376 377 378 379 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 372 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
363 364 365 366 367 368 369 370 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 363 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
381 382 383 384 385 386 |
# File 'lib/jekyll/vitepress_theme/hooks.rb', line 381 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 |