Class: Canon::DiffFormatter::Theme::ThemeInheritance
- Inherits:
-
Object
- Object
- Canon::DiffFormatter::Theme::ThemeInheritance
- Defined in:
- lib/canon/diff_formatter/theme.rb
Overview
Theme inheritance builder
Instance Method Summary collapse
-
#build ⇒ Hash
Build the final theme hash.
-
#initialize(base_name) ⇒ ThemeInheritance
constructor
A new instance of ThemeInheritance.
-
#merge(overrides) ⇒ self
Add overrides to the inherited theme.
-
#merge!(overrides) ⇒ Object
Shorthand for merge + build.
Constructor Details
#initialize(base_name) ⇒ ThemeInheritance
Returns a new instance of ThemeInheritance.
466 467 468 469 470 471 472 473 474 |
# File 'lib/canon/diff_formatter/theme.rb', line 466 def initialize(base_name) unless THEMES.key?(base_name) raise ArgumentError, "Unknown theme: #{base_name}. Valid: #{THEMES.keys}" end @base_name = base_name @overrides = {} end |
Instance Method Details
#build ⇒ Hash
Build the final theme hash
486 487 488 489 490 |
# File 'lib/canon/diff_formatter/theme.rb', line 486 def build base = deep_dup(THEMES[@base_name]) deep_merge!(base, @overrides) base end |
#merge(overrides) ⇒ self
Add overrides to the inherited theme
479 480 481 482 |
# File 'lib/canon/diff_formatter/theme.rb', line 479 def merge(overrides) deep_merge!(@overrides, overrides) self end |
#merge!(overrides) ⇒ Object
Shorthand for merge + build
493 494 495 496 |
# File 'lib/canon/diff_formatter/theme.rb', line 493 def merge!(overrides) merge(overrides) build end |