Class: Carioca::Services::Output::Provider
- Inherits:
-
Object
- Object
- Carioca::Services::Output::Provider
- Includes:
- FormatsMapping
- Defined in:
- lib/carioca/services/output.rb
Constant Summary collapse
Constants included from FormatsMapping
FormatsMapping::ALIAS, FormatsMapping::COLORS, FormatsMapping::EMOJI, FormatsMapping::LEVELS
Instance Attribute Summary collapse
-
#color ⇒ Object
Returns the value of attribute color.
-
#emoji ⇒ Object
Returns the value of attribute emoji.
-
#mode ⇒ Object
Returns the value of attribute mode.
-
#target ⇒ Object
Returns the value of attribute target.
Instance Method Summary collapse
- #add_alias(newalias:, level:) ⇒ Object
-
#check_unicode_term ⇒ Boolean
check if unicode must be used with term ENV.
-
#display(level:, message:, session:, source:) ⇒ Object
abstract method for log wrapper.
-
#generate_session ⇒ String
build a session number.
-
#initialize(level: :debug, mode: :mono, emoji: true, colors: true, target: :stdout) ⇒ Provider
constructor
constructor.
-
#level ⇒ Symbol
getter for the current level.
-
#level=(level) ⇒ Object
virtual setter for level, set the current level.
- #map_color(color:, analias:) ⇒ Object
- #map_emoji(emoji:, analias:) ⇒ Object
Constructor Details
#initialize(level: :debug, mode: :mono, emoji: true, colors: true, target: :stdout) ⇒ Provider
constructor
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/carioca/services/output.rb', line 112 def initialize(level: :debug, mode: :mono, emoji: true, colors: true, target: :stdout) registry = Carioca::Registry.get @logger = registry.get_service name: :logger @i18n = registry.get_service name: :i18n @debug = Carioca::Registry.config.debug? self.level = level @target = target @mode = mode @emoji = check_unicode_term ? emoji : false @color = colors set = [] set.push mode set.push :emoji if @emoji set.push :colors if @color set.push target @logger.debug('Carioca->Output') { @i18n.t('output.load.context', confset: set.to_s) } if @debug raise "Unknown output mode : #{@mode}" unless MODE.include? @mode end |
Instance Attribute Details
#color ⇒ Object
Returns the value of attribute color.
69 70 71 |
# File 'lib/carioca/services/output.rb', line 69 def color @color end |
#emoji ⇒ Object
Returns the value of attribute emoji.
69 70 71 |
# File 'lib/carioca/services/output.rb', line 69 def emoji @emoji end |
#mode ⇒ Object
Returns the value of attribute mode.
69 70 71 |
# File 'lib/carioca/services/output.rb', line 69 def mode @mode end |
#target ⇒ Object
Returns the value of attribute target.
69 70 71 |
# File 'lib/carioca/services/output.rb', line 69 def target @target end |
Instance Method Details
#add_alias(newalias:, level:) ⇒ Object
102 103 104 105 106 107 108 109 |
# File 'lib/carioca/services/output.rb', line 102 def add_alias(newalias:, level:) raise 'Alias must be a Symbol' unless newalias.instance_of?(Symbol) raise "Bad Level : #{level}" unless LEVELS.include? level self.class.define_method(newalias) do |, session = nil| display({ level: newalias, message:, session: }) end end |
#check_unicode_term ⇒ Boolean
check if unicode must be used with term ENV
155 156 157 158 159 160 |
# File 'lib/carioca/services/output.rb', line 155 def check_unicode_term return false unless ENV.include? 'TERM' ENV.values_at('LC_ALL', 'LC_CTYPE', 'LANG').compact.first.include?('UTF-8') && ENV.values_at('TERM').first.include?('xterm') end |
#display(level:, message:, session:, source:) ⇒ Object
abstract method for log wrapper
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/carioca/services/output.rb', line 167 def display(level:, message:, session:, source:) << " (#{session})" if session save = .dup target_level = @@alias.keys.include?(level) ? @@alias[level] : level if @active_levels.include? target_level if @color pastel = ::Pastel.new = pastel.send @@colors[level], end if @@emoji.include? level pattern = @emoji ? @@emoji[level][:value] : @@emoji[level][:alt] pattern = "#{pattern} #{@@emoji[level][:text]}" if @@emoji[level].include?(:text) && !@emoji = "#{pattern} #{}" unless pattern.empty? end if @mode == :dual save = "#{@@emoji[level][:text]} #{save}" if !LEVELS.include?(level) && (@@emoji[level].include? :text) block = proc { save } @logger.send target_level, source, &block end if @target == :stderr warn if (@mode == :mono) || (@mode == :dual) elsif (@mode == :mono) || (@mode == :dual) $stdout.puts end end end |
#generate_session ⇒ String
build a session number
133 134 135 |
# File 'lib/carioca/services/output.rb', line 133 def generate_session "#{Time.now.to_i}#{rand(999)}" end |
#level ⇒ Symbol
getter for the current level
139 140 141 |
# File 'lib/carioca/services/output.rb', line 139 def level @active_levels.first end |
#level=(level) ⇒ Object
virtual setter for level, set the current level
146 147 148 149 150 151 |
# File 'lib/carioca/services/output.rb', line 146 def level=(level) raise "Bad Level : #{level}" unless LEVELS.include? level @active_levels = LEVELS.dup @active_levels.shift(LEVELS.index(level)) end |
#map_color(color:, analias:) ⇒ Object
88 89 90 91 92 93 |
# File 'lib/carioca/services/output.rb', line 88 def map_color(color:, analias:) raise 'Color must be a Symbol' unless color.instance_of?(Symbol) raise "Missing alias : #{analias}" unless LEVELS.include? analias @@alias[analias] = color end |
#map_emoji(emoji:, analias:) ⇒ Object
95 96 97 98 99 100 |
# File 'lib/carioca/services/output.rb', line 95 def map_emoji(emoji:, analias:) raise 'Emoji must be a String' unless color.instance_of?(String) raise "Missing alias : #{analias}" unless LEVELS.include? analias @@alias[analias] = emoji end |