Class: Vedeu::Presentation::Style

Inherits:
Object
  • Object
show all
Includes:
Common
Defined in:
lib/vedeu/output/presentation/style.rb

Overview

Converts the style value or value collection into a terminal escape sequence. Unrecognised values are discarded- an empty string is returned.

Vedeu has a range of symbol styles which are compatible with most terminals which are ANSI compatible. Like colours, they can be defined in either interfaces, for specific lines or within streams. Styles are applied as encountered.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value = nil) ⇒ Vedeu::Presentation::Style

Return a new instance of Vedeu::Presentation::Style.

Parameters:

  • value (Array<String|Symbol>|String|Symbol) (defaults to: nil)

    The style value or a collection of values.



40
41
42
# File 'lib/vedeu/output/presentation/style.rb', line 40

def initialize(value = nil)
  @value = value
end

Instance Attribute Details

#valueString|Symbol

Returns:

  • (String|Symbol)


22
23
24
# File 'lib/vedeu/output/presentation/style.rb', line 22

def value
  @value
end

Class Method Details

.coerce(value) ⇒ Object

Produces new objects of the correct class from the value, ignores objects that have already been coerced.

Parameters:

  • value (Object|NilClass)

Returns:

  • (Object)


29
30
31
32
33
# File 'lib/vedeu/output/presentation/style.rb', line 29

def self.coerce(value)
  return value if value.is_a?(self)

  new(value)
end

Instance Method Details

#absent?(variable) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether a variable is nil or empty.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

  • (Boolean)

#attributesHash<Symbol => Array<String|Symbol>|String|Symbol>

Return an attributes hash for this class.

Returns:

  • (Hash<Symbol => Array<String|Symbol>|String|Symbol>)


47
48
49
50
51
# File 'lib/vedeu/output/presentation/style.rb', line 47

def attributes
  {
    style: value
  }
end

#demodulize(klass) ⇒ String Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Removes the module part from the expression in the string.

Examples:

demodulize('Vedeu::SomeModule::SomeClass') # => "SomeClass"

Parameters:

  • klass (Class|String)

Returns:

  • (String)

#eql?(other) ⇒ Boolean Also known as: ==

An object is equal when its values are the same.

Parameters:

Returns:

  • (Boolean)


57
58
59
# File 'lib/vedeu/output/presentation/style.rb', line 57

def eql?(other)
  self.class == other.class && value == other.value
end

#present?(variable) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether a variable has a useful value.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

  • (Boolean)

#snake_case(name) ⇒ String Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Converts a class name to a lowercase snake case string.

Examples:

snake_case(MyClassName) # => "my_class_name"
snake_case(NameSpaced::ClassName)
# => "name_spaced/class_name"

Parameters:

  • name (String)

Returns:

  • (String)

#to_sString Also known as: escape_sequences, to_str

Return the terminal escape sequences after converting the style or styles.

Returns:

  • (String)


66
67
68
69
70
71
72
# File 'lib/vedeu/output/presentation/style.rb', line 66

def to_s
  return '' unless present?(value)

  @sequences ||= Array(value).flat_map do |v|
    Vedeu::EscapeSequences::Esc.string(v)
  end.join
end