You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/app/models/brush.rb

71 lines
1.0 KiB
Ruby

11 years ago
class Brush
ALLOWED_ATTRIBUTES = [:fg, :bg, :bold, :underline, :inverse, :blink]
11 years ago
def initialize(attributes = {})
@attributes = attributes.symbolize_keys
end
def ==(other)
fg == other.fg &&
bg == other.bg &&
bold? == other.bold? &&
underline? == other.underline? &&
inverse? == other.inverse? &&
blink? == other.blink?
11 years ago
end
def fg
code = attributes[:fg]
if code
if code < 8 && bold?
code += 8
end
end
code
11 years ago
end
def bg
code = attributes[:bg]
if code
if code < 8 && blink?
code += 8
end
end
code
11 years ago
end
def bold?
!!attributes[:bold]
end
def underline?
!!attributes[:underline]
end
def inverse?
!!attributes[:inverse]
end
def blink?
!!attributes[:blink]
end
def default?
fg.nil? && bg.nil? && !bold? && !underline? && !inverse? && !blink?
end
def as_json(*)
attributes.slice(*ALLOWED_ATTRIBUTES)
end
protected
attr_reader :attributes
11 years ago
end