Method: TermColor::RuleSet#initialize

Defined in:
lib/term_color/rule_set.rb

#initialize(rules = nil, **opts) ⇒ RuleSet

Construct new rule set

Examples:

rules = RuleSet.new({
    # Green underlined text; will auto reset fg and disable underline
    # for close, since no z: is provided
    name: {fg: :green, enable: :underline},
    # Italic text; will auto generate z: that disables italic
    quote: { enable: :italic },
    # A weird rule that will make fg red inside rule,
    # and change fg to blue after rule block ends
    weird: { inside: { fg: :red }, after: { fg: :blue }}
})

print rules.colorize("{%nameJohn%}: '{%quoteRoses are {%weirdRed%} (blue)%}.\n")
# Result will be:
#   fg green+underline "John"
#   regular ":  "
#   italic "Roses are "
#   fg red (still italic) "Red"
#   (fg blue)(still italic) "(blue)"
#   (regular) "."

Parameters:

  • rules (Hash) (defaults to: nil)

    Hash of rule names mapping to rule hashes, which can define before rules (‘inside:`), after rules (`after:`) or both.

    • If neither are given, content is treated as though it was inside a ‘inside:` key.

    • If ‘inside:` only is given, Rule evaluate method attempts to

      auto guess `after:`, resetting any used color or style rules from `inside:`
      
  • opts (Hash)

    Optional arguments

Options Hash (**opts):

  • :after (Hash|Symbol)

    Override default ‘:after` rule behavior when rule has no `after:` Options:

    • ‘:reset` - Reset all color and styles

    • ‘:auto` (default) - Try to automatically determine what to reset based on applied colors/styles

    • ‘:keep` - Keel all rule styles intact

    • (‘Hash`) - Custom rule (formatted as Rule `after` prop, e.g. `{ reset: :fg, keep: :style }`)

  • :symbols (Hash)

    Override styling symbols Options:

    • ‘:open` - Rule open symbol (used as symbolRulename) (default `

    • ‘:close` - Rule close symbol (default `%`)

    • ‘:reset` - Symbol that can be used between rule blocks to fully reset everything (default `%@`)

See Also:



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/term_color/rule_set.rb', line 83

def initialize(rules=nil, **opts)
    if rules.nil?
      rules = opts
      opts = {}
    end
    @base_rules = rules
    @base_rules[:reset] = @base_rules.fetch(:reset, DEFAULT_RESET_RULE)
    # binding.pry
    after = opts.fetch(:after, nil)
    after = DEFAULT_AFTER if after.nil? || (after.is_a?(Symbol) && !AFTER_PRESETS.has_key?(after))
    @default_after = (after.is_a?(Hash))? after : AFTER_PRESETS[after]
    sym_opts = opts.fetch(:symbols,{})
    @symbols = SymbolOptions.new(
      sym_opts.fetch(:open, DEFAULT_SYMBOLS[:open]),
      sym_opts.fetch(:close, DEFAULT_SYMBOLS[:close]),
      sym_opts.fetch(:reset, DEFAULT_SYMBOLS[:reset])
    )
    evaluate_rules
    build_regexs
end