rmtools 2.4.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/lib/rmtools/dev/logging.rb +50 -15
- data/lib/rmtools/dev/trace_format.rb +22 -4
- data/lib/rmtools/lang/cyrillic.rb +4 -0
- data/lib/rmtools/text/string_simple.rb +5 -0
- data/lib/rmtools/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3543de2cf0e25504f8c5be1c6e91aad75b102672
         | 
| 4 | 
            +
              data.tar.gz: 75d5c56892deed75940a1d990e4bd681a39351a6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a2239289a4dde502cca7e83dfaff86803c56ac352b702f51012a6faa97443b87cd1600d03809131c5a3c49222a27a537b766d331a8dd1bb50fa9b62812c550ab
         | 
| 7 | 
            +
              data.tar.gz: 0c1a64bdafb956dce0ae7af597fbe6f7f4188260ab1c471dfe6950dd91c2441dc72940063b78afa6c4654328d7f2b040f88ecca86bdafb59bedb20f65a88dc02
         | 
    
        data/README.md
    CHANGED
    
    | @@ -29,6 +29,16 @@ It's still randomly documented since it's just my working tool. | |
| 29 29 |  | 
| 30 30 | 
             
            ### CHANGES
         | 
| 31 31 |  | 
| 32 | 
            +
            ##### Version 2.4.1
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            * Fixed trace_format for exceptions using Thread::Backtrace
         | 
| 35 | 
            +
            * Added String#decapitalize and (for cyrillic strings) #funcap
         | 
| 36 | 
            +
            * RMLogger
         | 
| 37 | 
            +
             * made indifferent of global variables: $panic, $verbose, $quiet
         | 
| 38 | 
            +
             * control log level by
         | 
| 39 | 
            +
              * env variables (globally): LOGLEVEL, DEBUG || VERBOSE, WARN || QUIET, SILENT
         | 
| 40 | 
            +
              * instance methods: log_level=, debug=, log=, info=, warn=, error=
         | 
| 41 | 
            +
             | 
| 32 42 | 
             
            ##### Version 2.4.0
         | 
| 33 43 |  | 
| 34 44 | 
             
            * Ruby 2.1+ behaviour:
         | 
    
        data/lib/rmtools/dev/logging.rb
    CHANGED
    
    | @@ -9,10 +9,10 @@ module RMTools | |
| 9 9 | 
             
              # with caller processing and highlighting
         | 
| 10 10 | 
             
              class RMLogger
         | 
| 11 11 | 
             
                __init__
         | 
| 12 | 
            -
                attr_accessor :mute_info, :mute_warn, :mute_log, :mute_debug
         | 
| 12 | 
            +
                attr_accessor :mute_info, :mute_error, :mute_warn, :mute_log, :mute_debug
         | 
| 13 13 | 
             
                attr_reader :default_format
         | 
| 14 14 |  | 
| 15 | 
            -
                Modes = [:debug, :log, :info, :warn]
         | 
| 15 | 
            +
                Modes = [:debug, :log, :info, :warn, :error]
         | 
| 16 16 | 
             
                NOPRINT = 8
         | 
| 17 17 | 
             
                NOLOG = 4
         | 
| 18 18 | 
             
                PREV_CALLER = 2
         | 
| @@ -21,6 +21,7 @@ module RMTools | |
| 21 21 | 
             
                def initialize format={}
         | 
| 22 22 | 
             
                  @c = Painter
         | 
| 23 23 | 
             
                  @highlight = {
         | 
| 24 | 
            +
                      :error => @c.red_bold("ERROR"),
         | 
| 24 25 | 
             
                      :warn => @c.red_bold("WARN"),
         | 
| 25 26 | 
             
                      :log => @c.cyan("INFO"),
         | 
| 26 27 | 
             
                      :info => @c.cyan_bold("INFO"),
         | 
| @@ -28,6 +29,16 @@ module RMTools | |
| 28 29 | 
             
                  }
         | 
| 29 30 | 
             
                  @file_formats = Hash.new(@default_format = {})
         | 
| 30 31 | 
             
                  set_format :global, format
         | 
| 32 | 
            +
                  
         | 
| 33 | 
            +
                  if ENV['LOGLEVEL']
         | 
| 34 | 
            +
                    self.log_level = ENV['LOGLEVEL']
         | 
| 35 | 
            +
                  elsif ENV['DEBUG'] || ENV['VERBOSE']
         | 
| 36 | 
            +
                    self.log_level = 'DEBUG'
         | 
| 37 | 
            +
                  elsif ENV['WARN'] || ENV['QUIET']
         | 
| 38 | 
            +
                    self.log_level = 'WARN'
         | 
| 39 | 
            +
                  elsif ENV['SILENT']
         | 
| 40 | 
            +
                    self.log_level = 'ERROR'
         | 
| 41 | 
            +
                  end
         | 
| 31 42 | 
             
                end
         | 
| 32 43 |  | 
| 33 44 | 
             
                def _set_format file, format
         | 
| @@ -97,6 +108,8 @@ module RMTools | |
| 97 108 | 
             
                  %{<Logger #{cfg.fmt.sub('%time', "%time(#{cfg.tf*'.'})").sub('%caller', "%caller(#{cfg.cf0})")}#{' -> '+cfg.out if cfg.out} #{modes.b ? modes.inspect : 'muted'}>}
         | 
| 98 109 | 
             
                end
         | 
| 99 110 |  | 
| 111 | 
            +
                # TODO: добавить фильтров, 
         | 
| 112 | 
            +
                # например, для обработки текста, который будет логирован
         | 
| 100 113 | 
             
                def _print mode, text, opts, caler, bind, cfg
         | 
| 101 114 | 
             
                  log_ = opts&NOLOG==0
         | 
| 102 115 | 
             
                  print_ = opts&NOPRINT==0
         | 
| @@ -139,12 +152,22 @@ module RMTools | |
| 139 152 | 
             
                end
         | 
| 140 153 |  | 
| 141 154 | 
             
                # controls:
         | 
| 142 | 
            -
                # -  | 
| 143 | 
            -
                #  | 
| 144 | 
            -
                # -  | 
| 145 | 
            -
                # - @ | 
| 146 | 
            -
                # | 
| 147 | 
            -
             | 
| 155 | 
            +
                # - @mute_warn, @mute_info, @mute_log, @mute_debug: 
         | 
| 156 | 
            +
                #       do not print this messages regardless of any globals
         | 
| 157 | 
            +
                # - @out_all: write to file info and debug messages
         | 
| 158 | 
            +
                # - @out:      write to file
         | 
| 159 | 
            +
                # - @print:    write to stdout
         | 
| 160 | 
            +
                    
         | 
| 161 | 
            +
                def error *args
         | 
| 162 | 
            +
                  cfg = get_config!
         | 
| 163 | 
            +
                  if (cfg.out or cfg.print) && !@mute_error
         | 
| 164 | 
            +
                    text, bind, opts = args.get_opts [!block_given? && args[0].kinda(Hash) ? args[0] : "\b\b ", nil], :mute => 0
         | 
| 165 | 
            +
                    opts[:mute] |= NOLOG if !cfg.out
         | 
| 166 | 
            +
                    opts[:mute] |= NOPRINT if !cfg.print
         | 
| 167 | 
            +
                    return if block_given? && (text = yield).nil?
         | 
| 168 | 
            +
                    _print(:error, text, opts[:mute], cfg._caller && (@current_caller || caller)[opts[:caller].to_i], bind, cfg)
         | 
| 169 | 
            +
                  end  
         | 
| 170 | 
            +
                end
         | 
| 148 171 |  | 
| 149 172 | 
             
                def warn *args
         | 
| 150 173 | 
             
                  cfg = get_config!
         | 
| @@ -159,10 +182,10 @@ module RMTools | |
| 159 182 |  | 
| 160 183 | 
             
                def log *args
         | 
| 161 184 | 
             
                  cfg = get_config!
         | 
| 162 | 
            -
                  if (cfg.out or cfg.print | 
| 185 | 
            +
                  if (cfg.out or cfg.print) && !@mute_log
         | 
| 163 186 | 
             
                    text, bind, opts = args.get_opts [!block_given? && args[0].kinda(Hash) ? args[0] : "\b\b ", nil], :mute => 0
         | 
| 164 187 | 
             
                    opts[:mute] |= NOLOG if !cfg.out
         | 
| 165 | 
            -
                    opts[:mute] |= NOPRINT if ! | 
| 188 | 
            +
                    opts[:mute] |= NOPRINT if !cfg.print
         | 
| 166 189 | 
             
                    return if block_given? && (text = yield).nil?
         | 
| 167 190 | 
             
                    _print(:log, text, opts[:mute], cfg._caller && (@current_caller || caller)[opts[:caller].to_i], bind, cfg)
         | 
| 168 191 | 
             
                  end
         | 
| @@ -170,10 +193,10 @@ module RMTools | |
| 170 193 |  | 
| 171 194 | 
             
                def info *args
         | 
| 172 195 | 
             
                  cfg = get_config!
         | 
| 173 | 
            -
                  if (cfg.print  | 
| 196 | 
            +
                  if (cfg.print or cfg.out && cfg.out_all) && !@mute_info
         | 
| 174 197 | 
             
                    text, bind, opts = args.get_opts [!block_given? && args[0].kinda(Hash) ? args[0] : "\b\b ", nil], :mute => 0
         | 
| 175 198 | 
             
                    opts[:mute] |= NOLOG if !(cfg.out && cfg.out_all)
         | 
| 176 | 
            -
                    opts[:mute] |= NOPRINT if ! | 
| 199 | 
            +
                    opts[:mute] |= NOPRINT if !cfg.print
         | 
| 177 200 | 
             
                    return if block_given? && (text = yield).nil?
         | 
| 178 201 | 
             
                    _print(:info, text, opts[:mute], cfg._caller && (@current_caller || caller)[opts[:caller].to_i], bind, cfg)
         | 
| 179 202 | 
             
                  end 
         | 
| @@ -181,10 +204,10 @@ module RMTools | |
| 181 204 |  | 
| 182 205 | 
             
                def debug *args
         | 
| 183 206 | 
             
                  cfg = get_config!
         | 
| 184 | 
            -
                  if (cfg.print  | 
| 207 | 
            +
                  if (cfg.print or cfg.out && cfg.out_all) && !@mute_debug
         | 
| 185 208 | 
             
                    text, bind, opts = args.get_opts [!block_given? && args[0].kinda(Hash) ? args[0] : "\b\b ", nil], :mute => 0
         | 
| 186 209 | 
             
                    opts[:mute] |= NOLOG if !(cfg.out && cfg.out_all)
         | 
| 187 | 
            -
                    opts[:mute] |= NOPRINT if ! | 
| 210 | 
            +
                    opts[:mute] |= NOPRINT if !cfg.print
         | 
| 188 211 | 
             
                    return if block_given? && (text = yield).nil?
         | 
| 189 212 | 
             
                    _print(:debug, text, opts[:mute], cfg._caller && (@current_caller || caller)[opts[:caller].to_i], bind, cfg)
         | 
| 190 213 | 
             
                  end 
         | 
| @@ -192,12 +215,24 @@ module RMTools | |
| 192 215 |  | 
| 193 216 | 
             
                alias :<= :debug
         | 
| 194 217 | 
             
                alias :<< :info
         | 
| 195 | 
            -
                alias :<   :warn
         | 
| 196 218 | 
             
                alias :puts :info
         | 
| 219 | 
            +
                alias :<   :warn
         | 
| 220 | 
            +
                alias :fatal :error
         | 
| 197 221 |  | 
| 198 222 | 
             
                def print text
         | 
| 199 223 | 
             
                  info text, caller: 1, mute: INLINE 
         | 
| 200 224 | 
             
                end
         | 
| 225 | 
            +
                
         | 
| 226 | 
            +
                def log_level=(level)
         | 
| 227 | 
            +
                  unless level.is_a? Integer
         | 
| 228 | 
            +
                    level = ::Logger.const_get(level.to_s.upcase)
         | 
| 229 | 
            +
                  end
         | 
| 230 | 
            +
                  self.debug = level < 1
         | 
| 231 | 
            +
                  self.info     = level < 2
         | 
| 232 | 
            +
                  self.log      = level < 2
         | 
| 233 | 
            +
                  self.warn   = level < 3
         | 
| 234 | 
            +
                  self.error   = level < 4
         | 
| 235 | 
            +
                end
         | 
| 201 236 |  | 
| 202 237 | 
             
                Modes.each {|m| define_method("#{m}=") {|mute| send :"mute_#{m}=", !mute}}
         | 
| 203 238 |  | 
| @@ -104,12 +104,30 @@ class Exception | |
| 104 104 | 
             
              #   end
         | 
| 105 105 | 
             
              # it will be possible to fetch lines entered in IRB
         | 
| 106 106 | 
             
              # else format_trace would only read ordinally require'd files
         | 
| 107 | 
            -
               | 
| 108 | 
            -
                 | 
| 109 | 
            -
             | 
| 107 | 
            +
              if RUBY_VERSION > '2.1'
         | 
| 108 | 
            +
                
         | 
| 109 | 
            +
                def set_backtrace src
         | 
| 110 | 
            +
                  if format = self.class.trace_format
         | 
| 111 | 
            +
                    if src.is_a? Thread::Backtrace
         | 
| 112 | 
            +
                      return src
         | 
| 113 | 
            +
                    else
         | 
| 114 | 
            +
                      src = RMTools.__send__ format, src
         | 
| 115 | 
            +
                    end
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
                  set_bt src
         | 
| 110 118 | 
             
                end
         | 
| 111 | 
            -
                 | 
| 119 | 
            +
                
         | 
| 120 | 
            +
              else
         | 
| 121 | 
            +
                
         | 
| 122 | 
            +
                def set_backtrace src
         | 
| 123 | 
            +
                  if format = self.class.trace_format
         | 
| 124 | 
            +
                    src = RMTools.__send__ format, src
         | 
| 125 | 
            +
                  end
         | 
| 126 | 
            +
                  set_bt src
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
                
         | 
| 112 129 | 
             
              end
         | 
| 130 | 
            +
              
         | 
| 113 131 | 
             
            end
         | 
| 114 132 |  | 
| 115 133 | 
             
            # This is the most usable setting, I think. Set it in the irbrc, config/initializers or wherever
         | 
    
        data/lib/rmtools/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rmtools
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.4. | 
| 4 | 
            +
              version: 2.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sergey Baev
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-09-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: RMTools is a collection of helpers for debug, text/array/file processing
         | 
| 14 14 | 
             
              and simply easing a coding process
         |