xprint 0.8.1 → 0.9.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/lib/version.rb +1 -1
- data/lib/xprint.rb +55 -5
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 72c5d81ad083539ab972c38b51405d5275034ce535f4014696257dbec0d6e5ab
         | 
| 4 | 
            +
              data.tar.gz: 950f5d948e5098902d02d25eea8a62c1ec146a0dd58bb052bed139df50d06512
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 33fb5f501119a0cb8015797c93f72516276eb332a03b9dba5f01696965a2ab2b8d06659724c8e12dcb3c9dd287df0311a6a11b48e9bef51fdf5bc329e9d114b5
         | 
| 7 | 
            +
              data.tar.gz: 11492f4674dcd327edf54cfe909c1c830236ce798f34c830a8ac5f74b36e860ea3548d44af465a72a5ca73af90c8ff5ce3d92f8f8fc429baff92e8d0c2bafaa4
         | 
    
        data/lib/version.rb
    CHANGED
    
    
    
        data/lib/xprint.rb
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            require 'bigdecimal'
         | 
| 2 2 | 
             
            require 'date'
         | 
| 3 | 
            +
            require 'yaml'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module XPrint
         | 
| 5 6 | 
             
                @data_classes = [
         | 
| @@ -7,14 +8,14 @@ module XPrint | |
| 7 8 | 
             
                    Symbol, Date, Time, DateTime, BigDecimal, Rational
         | 
| 8 9 | 
             
                ]
         | 
| 9 10 | 
             
                @hash_name_classes = @data_classes + [Proc]
         | 
| 10 | 
            -
                @tab = " | 
| 11 | 
            +
                @tab = "  "
         | 
| 11 12 | 
             
                @indexes = true
         | 
| 12 13 | 
             
                @full_proc_path = false
         | 
| 13 14 | 
             
                @braces = true
         | 
| 14 15 | 
             
                @date_format = '%F'
         | 
| 15 16 | 
             
                @time_format = '%c'
         | 
| 16 17 | 
             
                @datetime_format = '%FT%T%:z'
         | 
| 17 | 
            -
                @color =  | 
| 18 | 
            +
                @color = true
         | 
| 18 19 | 
             
                @colors = {
         | 
| 19 20 | 
             
                    attribute:   :blue,
         | 
| 20 21 | 
             
                    bigdecimal:  :darkcyan,
         | 
| @@ -76,6 +77,48 @@ module XPrint | |
| 76 77 | 
             
                    return
         | 
| 77 78 | 
             
                end
         | 
| 78 79 |  | 
| 80 | 
            +
                def self.load_file(config)
         | 
| 81 | 
            +
                    config_data = YAML.load( File.read config )
         | 
| 82 | 
            +
                    config_data = self.symbolize_keys(config_data)
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                    if config_data.key? :general
         | 
| 85 | 
            +
                        self.set **config_data[:general]
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                    if config_data.key? :colors
         | 
| 89 | 
            +
                        color_data = config_data[:colors]
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                        color_data.each do |name, color|
         | 
| 92 | 
            +
                            color_data[name] = color.to_sym
         | 
| 93 | 
            +
                        end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                        self.set_color_for **config_data[:colors]
         | 
| 96 | 
            +
                    end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    if config_data.key? :'color codes'
         | 
| 99 | 
            +
                        self.set_color_code_for **config_data[:'color codes']
         | 
| 100 | 
            +
                    end
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                def self.load(config)
         | 
| 104 | 
            +
                    calling_file = caller_locations.first.absolute_path
         | 
| 105 | 
            +
                    base_dir = File.dirname calling_file
         | 
| 106 | 
            +
                    relative_config = File.expand_path config, base_dir
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                    self.load_file relative_config
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                private_class_method def self.symbolize_keys(hash)
         | 
| 112 | 
            +
                    hash.inject({}) do |result, (key, value)|
         | 
| 113 | 
            +
                        new_key = key.to_sym
         | 
| 114 | 
            +
                        new_value = value.is_a?(Hash) ? symbolize_keys(value) : value
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                        result[new_key] = new_value
         | 
| 117 | 
            +
                        
         | 
| 118 | 
            +
                        result
         | 
| 119 | 
            +
                    end
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 79 122 | 
             
                def self.set_color_for(**kwargs)
         | 
| 80 123 | 
             
                    kwargs.each do |keyword, arg|
         | 
| 81 124 | 
             
                        @colors[keyword] = arg
         | 
| @@ -135,7 +178,7 @@ module XPrint | |
| 135 178 | 
             
                    return result
         | 
| 136 179 | 
             
                end
         | 
| 137 180 |  | 
| 138 | 
            -
                def self.xpand(x, indent: '', tab:  | 
| 181 | 
            +
                def self.xpand(x, indent: '', tab: '  ')
         | 
| 139 182 |  | 
| 140 183 | 
             
                    _indent = "#{tab}#{indent}"
         | 
| 141 184 |  | 
| @@ -180,7 +223,14 @@ module XPrint | |
| 180 223 | 
             
                            data = xpand(item, indent: _indent, tab: tab)
         | 
| 181 224 |  | 
| 182 225 | 
             
                            result += "#{_indent}"
         | 
| 183 | 
            -
                             | 
| 226 | 
            +
                            if @indexes
         | 
| 227 | 
            +
                                adjustment = x.length.to_s.length + 3
         | 
| 228 | 
            +
                                # Account for characters used for color coding.
         | 
| 229 | 
            +
                                adjustment += 9 if @color
         | 
| 230 | 
            +
             | 
| 231 | 
            +
                                result += "#{colorize("[#{index}]", :index)} ".
         | 
| 232 | 
            +
                                            ljust(adjustment)
         | 
| 233 | 
            +
                            end
         | 
| 184 234 | 
             
                            result += "#{data}"
         | 
| 185 235 |  | 
| 186 236 | 
             
                            unless index + 1 == x.length
         | 
| @@ -310,4 +360,4 @@ end | |
| 310 360 |  | 
| 311 361 | 
             
            def xpand(item, tab: "\t")
         | 
| 312 362 | 
             
                XPrint::xpand(item, tab: tab)
         | 
| 313 | 
            -
            end
         | 
| 363 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: xprint
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.9.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - JCabr
         | 
| @@ -11,7 +11,8 @@ cert_chain: [] | |
| 11 11 | 
             
            date: 2020-07-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: Gem that allows for pretty printing data over multiple lines and with
         | 
| 14 | 
            -
              indentation, and works with objects as well as basic data types.
         | 
| 14 | 
            +
              indentation, and works with objects as well as basic data types. Also allows color,
         | 
| 15 | 
            +
              and loading settings via a YAML config file.
         | 
| 15 16 | 
             
            email:
         | 
| 16 17 | 
             
            - jcabr.dev@gmail.com
         | 
| 17 18 | 
             
            executables: []
         |