slyce 0.9.8 → 1.0.0
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/bin/slyce +9 -17
- data/bin/slyce3 +10 -18
- data/slyce.gemspec +1 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 36daa71deee82e19314bc1df0caedb1bc6b4a2b8f0bf524a471f48fcf28c1fb7
         | 
| 4 | 
            +
              data.tar.gz: 71c450033ed16659bcb206e6023dc92f9cf448736355385101d051f9c7cfebc4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a621fa8b4369fe27d5edc33573b0fe1f59312c7e97564a2c146517bebb3481b1633ffb9444cd494a97890efb0d8fa57f3885281e4c6d281821c6219376f1ee86
         | 
| 7 | 
            +
              data.tar.gz: aa98ed93dfc2e762b4e39fbe1d70d5f09c00d47ed5021511dc5811fbb826c97d121f7719a196677b60351f0fc5152f1efcc7a1984140b0be758dab6253cab38d
         | 
    
        data/bin/slyce
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 | 
            -
            VERSION="0. | 
| 3 | 
            +
            VERSION="1.0.0"
         | 
| 4 4 |  | 
| 5 5 | 
             
            STDOUT.sync = true
         | 
| 6 6 |  | 
| @@ -15,19 +15,19 @@ tabl = nil | |
| 15 15 | 
             
            OptionParser.new.instance_eval do
         | 
| 16 16 | 
             
              @banner  = "usage: #{program_name} [options] <database> <table>"
         | 
| 17 17 |  | 
| 18 | 
            -
              on "-a", "--alpha"                  , "Sort alphabetically, not numerically"
         | 
| 19 18 | 
             
              on "-c", "--columns"                , "Display column names and quit"
         | 
| 20 19 | 
             
              on "-h", "--help"                   , "Show help and command usage" do Kernel.abort to_s; end
         | 
| 20 | 
            +
              on "-n", "--natural"                , "Sort naturally, not numerically"
         | 
| 21 21 | 
             
              on "-s", "--show <count>"           , "Show this many values", Integer
         | 
| 22 22 | 
             
              on "-v", "--version"                , "Show version number" do Kernel.abort "#{program_name} #{VERSION}"; end
         | 
| 23 | 
            -
              on "-w", "--where <cond>"           , " | 
| 23 | 
            +
              on "-w", "--where <cond>"           , "Where clause (eg - 'age>50 and state='AZ')"
         | 
| 24 24 | 
             
              on "-x", "--extract <col1,col2,...>", "Comma separated list of columns to extract"
         | 
| 25 25 |  | 
| 26 26 | 
             
              self
         | 
| 27 27 | 
             
            end.parse!(into: opts={}) rescue abort($!.message)
         | 
| 28 28 |  | 
| 29 | 
            -
            abcd = opts[:alpha]
         | 
| 30 29 | 
             
            filt = opts[:where] and filt = "where\n  #{filt}"
         | 
| 30 | 
            +
            natu = opts[:natural]
         | 
| 31 31 | 
             
            show = opts[:show]
         | 
| 32 32 | 
             
            want = opts[:extract].to_s.downcase.split(",")
         | 
| 33 33 |  | 
| @@ -37,9 +37,7 @@ tabl ||= ARGV.shift or abort "no table given" | |
| 37 37 | 
             
            # ==[ Helpers ]==
         | 
| 38 38 |  | 
| 39 39 | 
             
            class Mysql2::Client
         | 
| 40 | 
            -
               | 
| 41 | 
            -
                query(...)
         | 
| 42 | 
            -
              end
         | 
| 40 | 
            +
              alias_method :sql, :query
         | 
| 43 41 |  | 
| 44 42 | 
             
              def sql!(stmt, *args, **, &)
         | 
| 45 43 | 
             
                puts "\n==[ SQL statement ]==\n\n", stmt.strip, ";"
         | 
| @@ -57,7 +55,7 @@ def display(name, data, show, uniq, tots) | |
| 57 55 | 
             
              puts "\n#{fill} #{name}\n#{fill} #{line}\n"
         | 
| 58 56 | 
             
              data.each {|cnt, val| puts "%*d %s" % [wide, cnt, val || "NULL"] }
         | 
| 59 57 | 
             
              puts "#{fill} -----\n"
         | 
| 60 | 
            -
              puts "%*d shown (top %d)" % [wide,  | 
| 58 | 
            +
              puts "%*d shown (top %d)" % [wide, seen, rows] if show
         | 
| 61 59 | 
             
              puts "%*d total (all %d)" % [wide, tots, uniq]
         | 
| 62 60 | 
             
            end
         | 
| 63 61 |  | 
| @@ -78,7 +76,7 @@ if want.empty? | |
| 78 76 | 
             
            end
         | 
| 79 77 |  | 
| 80 78 | 
             
            want.each do |name|
         | 
| 81 | 
            -
              sort =  | 
| 79 | 
            +
              sort = natu ? "" : "cnt desc,"
         | 
| 82 80 | 
             
              stmt = show ? "limit #{show}" : ""
         | 
| 83 81 | 
             
              data = conn.sql(<<~"" + stmt).to_a
         | 
| 84 82 | 
             
                select
         | 
| @@ -95,15 +93,9 @@ want.each do |name| | |
| 95 93 | 
             
                  -if(regexp_like(`#{name}`, '^\\\\d'), regexp_instr(`#{name}`, '[^\\\\d]'), null) desc,
         | 
| 96 94 | 
             
                  `#{name}` is null, `#{name}`
         | 
| 97 95 |  | 
| 98 | 
            -
              uniq = conn.sql(<<~"").to_a[0] | 
| 99 | 
            -
                select
         | 
| 100 | 
            -
                  count(distinct(ifnull(`#{name}`,0)))
         | 
| 101 | 
            -
                from
         | 
| 102 | 
            -
                  `#{tabl}`
         | 
| 103 | 
            -
                #{filt}
         | 
| 104 | 
            -
             | 
| 105 | 
            -
              tots = conn.sql(<<~"").to_a[0][0]
         | 
| 96 | 
            +
              uniq, tots = conn.sql(<<~"").to_a[0]
         | 
| 106 97 | 
             
                select
         | 
| 98 | 
            +
                  count(distinct(ifnull(`#{name}`,0))),
         | 
| 107 99 | 
             
                  count(ifnull(`#{name}`,0))
         | 
| 108 100 | 
             
                from
         | 
| 109 101 | 
             
                  `#{tabl}`
         | 
    
        data/bin/slyce3
    CHANGED
    
    | @@ -9,7 +9,7 @@ | |
| 9 9 | 
             
            #   wget https://github.com/nalgeon/sqlean/releases/download/0.19.3/sqlean-macos-arm64.zip
         | 
| 10 10 | 
             
            #   unzip sqlean-macos-arm64.zip regexp.dylib
         | 
| 11 11 |  | 
| 12 | 
            -
            VERSION="0. | 
| 12 | 
            +
            VERSION="1.0.0"
         | 
| 13 13 |  | 
| 14 14 | 
             
            STDOUT.sync = true
         | 
| 15 15 |  | 
| @@ -24,21 +24,21 @@ tabl = nil | |
| 24 24 | 
             
            OptionParser.new.instance_eval do
         | 
| 25 25 | 
             
              @banner  = "usage: #{program_name} [options] <database> <table>"
         | 
| 26 26 |  | 
| 27 | 
            -
              on "-a", "--alpha"                  , "Sort alphabetically, not numerically"
         | 
| 28 27 | 
             
              on "-c", "--columns"                , "Display column names and quit"
         | 
| 29 28 | 
             
              on "-h", "--help"                   , "Show help and command usage" do Kernel.abort to_s; end
         | 
| 29 | 
            +
              on "-n", "--natural"                , "Sort naturally, not numerically"
         | 
| 30 30 | 
             
              on "-r", "--regexp <path>"          , "Path to the sqlean/regexp extension"
         | 
| 31 31 | 
             
              on "-s", "--show <count>"           , "Show this many values", Integer
         | 
| 32 32 | 
             
              on "-v", "--version"                , "Show version number" do Kernel.abort "#{program_name} #{VERSION}"; end
         | 
| 33 | 
            -
              on "-w", "--where <cond>"           , " | 
| 33 | 
            +
              on "-w", "--where <cond>"           , "Where clause (eg - 'age>50 and state='AZ')"
         | 
| 34 34 | 
             
              on "-x", "--extract <col1,col2,...>", "Comma separated list of columns to extract"
         | 
| 35 35 |  | 
| 36 36 | 
             
              self
         | 
| 37 37 | 
             
            end.parse!(into: opts={}) rescue abort($!.message)
         | 
| 38 38 |  | 
| 39 | 
            -
            abcd = opts[:alpha]
         | 
| 40 39 | 
             
            filt = opts[:where] and filt = "where\n  #{filt}"
         | 
| 41 | 
            -
             | 
| 40 | 
            +
            natu = opts[:natural]
         | 
| 41 | 
            +
            regx = opts[:regexp] || Dir["{.,sqlean}/regexp.{dll,dylib,so}"].first
         | 
| 42 42 | 
             
            show = opts[:show]
         | 
| 43 43 | 
             
            want = opts[:extract].to_s.downcase.split(",")
         | 
| 44 44 |  | 
| @@ -50,9 +50,7 @@ regx &&  File.exist?(regx) or abort "no regexp extension found#{regx ? " at '#{r | |
| 50 50 | 
             
            # ==[ Helpers ]==
         | 
| 51 51 |  | 
| 52 52 | 
             
            class Extralite::Database
         | 
| 53 | 
            -
               | 
| 54 | 
            -
                query_ary(...)
         | 
| 55 | 
            -
              end
         | 
| 53 | 
            +
              alias_method :sql, :query_ary
         | 
| 56 54 |  | 
| 57 55 | 
             
              def sql!(stmt, *args, **, &)
         | 
| 58 56 | 
             
                puts "\n==[ SQL statement ]==\n\n", stmt.strip, ";"
         | 
| @@ -70,7 +68,7 @@ def display(name, data, show, uniq, tots) | |
| 70 68 | 
             
              puts "\n#{fill} #{name}\n#{fill} #{line}\n"
         | 
| 71 69 | 
             
              data.each {|cnt, val| puts "%*d %s" % [wide, cnt, val || "NULL"] }
         | 
| 72 70 | 
             
              puts "#{fill} -----\n"
         | 
| 73 | 
            -
              puts "%*d shown (top %d)" % [wide,  | 
| 71 | 
            +
              puts "%*d shown (top %d)" % [wide, seen, rows] if show
         | 
| 74 72 | 
             
              puts "%*d total (all %d)" % [wide, tots, uniq]
         | 
| 75 73 | 
             
            end
         | 
| 76 74 |  | 
| @@ -91,7 +89,7 @@ if want.empty? | |
| 91 89 | 
             
            end
         | 
| 92 90 |  | 
| 93 91 | 
             
            want.each do |name|
         | 
| 94 | 
            -
              sort =  | 
| 92 | 
            +
              sort = natu ? "" : "cnt desc,"
         | 
| 95 93 | 
             
              stmt = show ? "limit #{show}" : ""
         | 
| 96 94 | 
             
              data = conn.sql(<<~"" + stmt).to_a
         | 
| 97 95 | 
             
                select
         | 
| @@ -109,15 +107,9 @@ want.each do |name| | |
| 109 107 | 
             
                  `#{name}` is null, `#{name}`
         | 
| 110 108 | 
             
                collate nocase
         | 
| 111 109 |  | 
| 112 | 
            -
              uniq = conn.sql(<<~"").to_a[0] | 
| 113 | 
            -
                select
         | 
| 114 | 
            -
                  count(distinct(ifnull(`#{name}`,0)))
         | 
| 115 | 
            -
                from
         | 
| 116 | 
            -
                  `#{tabl}`
         | 
| 117 | 
            -
                #{filt}
         | 
| 118 | 
            -
             | 
| 119 | 
            -
              tots = conn.sql(<<~"").to_a[0][0]
         | 
| 110 | 
            +
              uniq, tots = conn.sql(<<~"").to_a[0]
         | 
| 120 111 | 
             
                select
         | 
| 112 | 
            +
                  count(distinct(ifnull(`#{name}`,0))),
         | 
| 121 113 | 
             
                  count(ifnull(`#{name}`,0))
         | 
| 122 114 | 
             
                from
         | 
| 123 115 | 
             
                  `#{tabl}`
         | 
    
        data/slyce.gemspec
    CHANGED
    
    | @@ -11,6 +11,6 @@ Gem::Specification.new do |s| | |
| 11 11 | 
             
              s.license     = "MIT"
         | 
| 12 12 | 
             
              s.files       = `git ls-files`.split("\n") - %w[.gitignore]
         | 
| 13 13 | 
             
              s.executables = `cd bin && git ls-files .`.split("\n")
         | 
| 14 | 
            -
              s.add_runtime_dependency "extralite-bundle", "~> 1. | 
| 14 | 
            +
              s.add_runtime_dependency "extralite-bundle", "~> 1.25"
         | 
| 15 15 | 
             
              s.add_runtime_dependency "mysql2", "~> 0.5"
         | 
| 16 16 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: slyce
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Steve Shreeve
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023-03- | 
| 11 | 
            +
            date: 2023-03-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: extralite-bundle
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 1. | 
| 19 | 
            +
                    version: '1.25'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 1. | 
| 26 | 
            +
                    version: '1.25'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: mysql2
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         |