Class: Canon::DiffFormatter::Theme::ThemeInheritance

Inherits:
Object
  • Object
show all
Defined in:
lib/canon/diff_formatter/theme.rb

Overview

Theme inheritance builder

Instance Method Summary collapse

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

#buildHash

Build the final theme hash

Returns:

  • (Hash)

    Merged theme



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

Parameters:

  • overrides (Hash)

    Nested hash of overrides

Returns:

  • (self)

    for chaining



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