auto_sql_formatter 0.1.0.dev → 0.1.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/Gemfile +2 -0
- data/Gemfile.lock +3 -1
- data/example/example.rb +7 -7
- data/example/example2.rb +93 -0
- data/example/example3.rb +42 -0
- data/example/example4.rb +0 -0
- data/example/example5.rb +0 -0
- data/lib/.DS_Store +0 -0
- data/lib/auto_sql_formatter/core.rb +13 -13
- data/lib/auto_sql_formatter/formatter.rb +3 -2
- data/lib/auto_sql_formatter/runner.rb +15 -16
- data/lib/auto_sql_formatter/searcher.rb +3 -7
- data/lib/auto_sql_formatter/version.rb +1 -1
- metadata +9 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b400f6cb9005cd9caf412e2b9a7109d6e85fd28805efbb97f4613ca59c97c40f
         | 
| 4 | 
            +
              data.tar.gz: d4f74bf8a1e545911229967226b1f3ad601dd73d27b7ccb514f7453dd53178af
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3aaff527171abb4c149a4b5987f4f02d62f738d37c362af377c95308cbfffcfae7ade069194411d167fad95b55b55cdd3d96db29190c064ed83202f43a10f7d5
         | 
| 7 | 
            +
              data.tar.gz: 7092111e81614f6a4c5a9f3ac33830537f2e1ba3b9f985d9a0439e21e9ea68f41176be50a0b83f2592eb7a547b1aa74f29bce646040aacc2f060091a2be80c21
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                auto_sql_formatter (0.1. | 
| 4 | 
            +
                auto_sql_formatter (0.1.1)
         | 
| 5 5 |  | 
| 6 6 | 
             
            GEM
         | 
| 7 7 | 
             
              remote: https://rubygems.org/
         | 
| 8 8 | 
             
              specs:
         | 
| 9 9 | 
             
                diff-lcs (1.3)
         | 
| 10 | 
            +
                export_strings (0.2.0)
         | 
| 10 11 | 
             
                rake (10.5.0)
         | 
| 11 12 | 
             
                rspec (3.8.0)
         | 
| 12 13 | 
             
                  rspec-core (~> 3.8.0)
         | 
| @@ -28,6 +29,7 @@ PLATFORMS | |
| 28 29 | 
             
            DEPENDENCIES
         | 
| 29 30 | 
             
              auto_sql_formatter!
         | 
| 30 31 | 
             
              bundler (~> 1.17)
         | 
| 32 | 
            +
              export_strings
         | 
| 31 33 | 
             
              rake (~> 10.0)
         | 
| 32 34 | 
             
              rspec (~> 3.0)
         | 
| 33 35 |  | 
    
        data/example/example.rb
    CHANGED
    
    | @@ -4,8 +4,8 @@ class Example | |
| 4 4 | 
             
                <<-SQL
         | 
| 5 5 | 
             
                  sasdfasdf
         | 
| 6 6 | 
             
                  adsafsdf
         | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 7 | 
            +
             ssdfghs
         | 
| 8 | 
            +
             dfasdfa
         | 
| 9 9 | 
             
                  dfasdf
         | 
| 10 10 | 
             
            a      asdfasdfasdfasdfsh
         | 
| 11 11 | 
             
                SQL
         | 
| @@ -20,18 +20,18 @@ a      asdfasdfasdfasdfsh | |
| 20 20 | 
             
              def sql2
         | 
| 21 21 | 
             
                "
         | 
| 22 22 | 
             
                  SELECT * 
         | 
| 23 | 
            -
             | 
| 23 | 
            +
             from users 
         | 
| 24 24 | 
             
                  where user.id > 100
         | 
| 25 | 
            -
             | 
| 25 | 
            +
               JOIN profiles ON profiles.user_id =users.id
         | 
| 26 26 | 
             
                "
         | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              def sql3
         | 
| 30 30 | 
             
                "
         | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 31 | 
            +
             SELECT * 
         | 
| 32 | 
            +
              from users 
         | 
| 33 33 | 
             
                where user.id > 100
         | 
| 34 | 
            -
             | 
| 34 | 
            +
                   JOIN profiles ON profiles.user_id =users.id
         | 
| 35 35 | 
             
                GROUP BY gender
         | 
| 36 36 | 
             
                HAVING 100 > Max(#{hogeo})
         | 
| 37 37 | 
             
                "
         | 
    
        data/example/example2.rb
    ADDED
    
    | @@ -0,0 +1,93 @@ | |
| 1 | 
            +
            class Example
         | 
| 2 | 
            +
              @pokemon = 'pokemon'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              def str
         | 
| 5 | 
            +
                <<-SQL
         | 
| 6 | 
            +
                  sasdfasdf
         | 
| 7 | 
            +
                  adsafsdf
         | 
| 8 | 
            +
                  ssdfghs
         | 
| 9 | 
            +
                  dfasdfa
         | 
| 10 | 
            +
                  dfasdf
         | 
| 11 | 
            +
            a      asdfasdfasdfasdfsh
         | 
| 12 | 
            +
                SQL
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def sql1
         | 
| 16 | 
            +
                <<-SQL
         | 
| 17 | 
            +
                  select * from users where user.id > 100
         | 
| 18 | 
            +
                SQL
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def sql2
         | 
| 22 | 
            +
                "
         | 
| 23 | 
            +
                  SELECT * 
         | 
| 24 | 
            +
                from users 
         | 
| 25 | 
            +
                  where user.id > 100    JOIN profiles ON profiles.user_id =users.id
         | 
| 26 | 
            +
                "
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def sql3
         | 
| 30 | 
            +
                "
         | 
| 31 | 
            +
                SELECT *     from users 
         | 
| 32 | 
            +
              where user.id > 100
         | 
| 33 | 
            +
              JOIN profiles ON profiles.user_id =users.id
         | 
| 34 | 
            +
              GROUP BY gender
         | 
| 35 | 
            +
                HAVING 100 > Max(#{hogeo})
         | 
| 36 | 
            +
                AND HAVING 1000 < Max(#{test})
         | 
| 37 | 
            +
                AND HAVING 1000 < Max(#{String.new})
         | 
| 38 | 
            +
                AND HAVING 1000 < Max(#{test; test})
         | 
| 39 | 
            +
                AND HAVING 1000 < Max(#{@pokemon})
         | 
| 40 | 
            +
                #{!!test ? 'hogeo' : 'hoge'}
         | 
| 41 | 
            +
                "
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              def hogeo
         | 
| 45 | 
            +
                'test'
         | 
| 46 | 
            +
                "test"
         | 
| 47 | 
            +
                'test' + "test"
         | 
| 48 | 
            +
                'test' << 'test'
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def test
         | 
| 52 | 
            +
                'hi'
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def single_auot
         | 
| 56 | 
            +
                'single_quot_str'
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            class Example2
         | 
| 61 | 
            +
              def hogeo2
         | 
| 62 | 
            +
                'test'
         | 
| 63 | 
            +
                "test"
         | 
| 64 | 
            +
                'test' + "test"
         | 
| 65 | 
            +
                'test' << 'test'
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              def test2
         | 
| 69 | 
            +
                'hi'
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
            end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            class Example
         | 
| 74 | 
            +
              def str1
         | 
| 75 | 
            +
                <<-SQL
         | 
| 76 | 
            +
                  SELECT *
         | 
| 77 | 
            +
                  FROM users
         | 
| 78 | 
            +
                  WHERE id > 100
         | 
| 79 | 
            +
                SQL
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
              def str2
         | 
| 83 | 
            +
                "I like gohan. Do you like gohan.Oh Yeah."
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              def str3
         | 
| 87 | 
            +
                "#{hello} Mikel"
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              def hello
         | 
| 91 | 
            +
                'hello world'
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
            end
         | 
    
        data/example/example3.rb
    ADDED
    
    | @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            class Example3
         | 
| 2 | 
            +
              def str
         | 
| 3 | 
            +
                <<-SQL
         | 
| 4 | 
            +
                  sasdfasdf
         | 
| 5 | 
            +
                  adsafsdf
         | 
| 6 | 
            +
                  ssdfghs
         | 
| 7 | 
            +
             dfasdfa
         | 
| 8 | 
            +
                  dfasdf
         | 
| 9 | 
            +
            a      asdfasdfasdfasdfsh
         | 
| 10 | 
            +
                SQL
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def sql1
         | 
| 14 | 
            +
                <<-SQL
         | 
| 15 | 
            +
                  select * from users where user.id > 100
         | 
| 16 | 
            +
                SQL
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def sql2
         | 
| 20 | 
            +
                "
         | 
| 21 | 
            +
                  SELECT * 
         | 
| 22 | 
            +
              from users 
         | 
| 23 | 
            +
                  where user.id > 100
         | 
| 24 | 
            +
                  JOIN profiles ON profiles.user_id =users.id
         | 
| 25 | 
            +
                "
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def sql3
         | 
| 29 | 
            +
                "
         | 
| 30 | 
            +
                SELECT * 
         | 
| 31 | 
            +
              from users 
         | 
| 32 | 
            +
                where user.id > 100
         | 
| 33 | 
            +
                JOIN profiles ON profiles.user_id =users.id
         | 
| 34 | 
            +
                GROUP BY gender
         | 
| 35 | 
            +
                HAVING 100 > Max(#{hogeo})
         | 
| 36 | 
            +
                "
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              def hogeo
         | 
| 40 | 
            +
                'test'
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
    
        data/example/example4.rb
    ADDED
    
    | 
            File without changes
         | 
    
        data/example/example5.rb
    ADDED
    
    | 
            File without changes
         | 
    
        data/lib/.DS_Store
    ADDED
    
    | Binary file | 
| @@ -6,23 +6,23 @@ module AutoSqlFormatter | |
| 6 6 | 
             
                attr_reader :workdir
         | 
| 7 7 |  | 
| 8 8 | 
             
                def initialize(dir = DEFAULT_DIR)
         | 
| 9 | 
            -
                  @workdir = dir | 
| 9 | 
            +
                  @workdir = dir
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 12 | 
             
                def execute
         | 
| 13 13 | 
             
                  puts "========Start to format sql========="
         | 
| 14 | 
            -
             | 
| 14 | 
            +
                  puts
         | 
| 15 15 | 
             
                  files.each do |file|
         | 
| 16 16 | 
             
                    result = Runner.do file[:path]
         | 
| 17 | 
            -
                    display(file[: | 
| 17 | 
            +
                    display(file[:status] = result)
         | 
| 18 18 | 
             
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  puts | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
                   | 
| 19 | 
            +
                  puts
         | 
| 20 | 
            +
                  puts
         | 
| 21 | 
            +
                  files.each do |file| 
         | 
| 22 | 
            +
                    puts "#{file[:path]}  #{file[:status]}\n"
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                  puts
         | 
| 25 | 
            +
                  puts '===========Completed!!!============'
         | 
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 28 | 
             
                private
         | 
| @@ -34,12 +34,12 @@ module AutoSqlFormatter | |
| 34 34 | 
             
                #   { 'path' => 'spec/sql_formatter./sql_formatter._spec.rb', 'state' => 'success' }
         | 
| 35 35 | 
             
                # ]
         | 
| 36 36 | 
             
                def files
         | 
| 37 | 
            -
                  @files ||= Dir.glob("#{workdir}/**/*.rb").map { |file| { path: file,  | 
| 37 | 
            +
                  @files ||= Dir.glob("#{workdir}/**/*.rb").map { |file| { path: file, status: nil } }
         | 
| 38 38 | 
             
                end
         | 
| 39 39 |  | 
| 40 40 | 
             
                # 実行中に SSSSS・・・E・SSSSみたいに表示される
         | 
| 41 | 
            -
                def display( | 
| 42 | 
            -
                  str = case  | 
| 41 | 
            +
                def display(status)
         | 
| 42 | 
            +
                  str = case status
         | 
| 43 43 | 
             
                        when 'success'
         | 
| 44 44 | 
             
                          'S' #success
         | 
| 45 45 | 
             
                        when 'error'
         | 
| @@ -5,7 +5,7 @@ require 'json' | |
| 5 5 | 
             
            module AutoSqlFormatter
         | 
| 6 6 | 
             
              class Formatter
         | 
| 7 7 | 
             
                DEFAULT_INDENT = 2
         | 
| 8 | 
            -
                DEFAULT_CASE = 'upper'
         | 
| 8 | 
            +
                DEFAULT_CASE = 'upper'.freeze
         | 
| 9 9 | 
             
                API_URI = 'https://sqlformat.org/api/v1/format'.freeze
         | 
| 10 10 | 
             
                HEADERS = { 'Content-Type' => 'application/x-www-form-urlencoded' }.freeze
         | 
| 11 11 |  | 
| @@ -19,8 +19,9 @@ module AutoSqlFormatter | |
| 19 19 | 
             
                    https = Net::HTTP.new(uri.host, uri.port)
         | 
| 20 20 | 
             
                    https.use_ssl = true
         | 
| 21 21 |  | 
| 22 | 
            -
                    body = URI.encode_www_form(sql: sql)
         | 
| 22 | 
            +
                    body = URI.encode_www_form(sql: sql, keyword_case: DEFAULT_CASE)
         | 
| 23 23 |  | 
| 24 | 
            +
                    '===Net::HTTP==='
         | 
| 24 25 | 
             
                    response = https.post(uri.path, body, HEADERS)
         | 
| 25 26 | 
             
                    JSON.parse(response.body)['result']
         | 
| 26 27 | 
             
                  end
         | 
| @@ -1,24 +1,23 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 1 | 
            +
            require 'auto_sql_formatter/formatter'
         | 
| 2 | 
            +
            require 'auto_sql_formatter/searcher'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module AutoSqlFormatter
         | 
| 5 5 | 
             
              class Runner
         | 
| 6 6 | 
             
                def self.do(path)
         | 
| 7 7 | 
             
                  file_text = File.read(path)
         | 
| 8 | 
            -
                  sqls = Searcher.do | 
| 9 | 
            -
                  if sqls
         | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                   | 
| 21 | 
            -
                  'none'
         | 
| 8 | 
            +
                  sqls = Searcher.do(file_text)
         | 
| 9 | 
            +
                  return 'none' if sqls.empty?
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # results
         | 
| 12 | 
            +
                  # [
         | 
| 13 | 
            +
                  #   {
         | 
| 14 | 
            +
                  #     from: old sql,
         | 
| 15 | 
            +
                  #     to: new sql,
         | 
| 16 | 
            +
                  #   }
         | 
| 17 | 
            +
                  # ]
         | 
| 18 | 
            +
                  results = Formatter.do sqls
         | 
| 19 | 
            +
                  results.each { |result| file_text.gsub! /#{result[:from]}/m, result[:to] }
         | 
| 20 | 
            +
                  return 'success' if File.open(path, 'w') { |f| f.write file_text }
         | 
| 22 21 | 
             
                end
         | 
| 23 22 | 
             
                class Error < StandardError; end
         | 
| 24 23 | 
             
              end
         | 
| @@ -1,14 +1,10 @@ | |
| 1 | 
            -
            require ' | 
| 1 | 
            +
            require 'export_strings'
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            module AutoSqlFormatter
         | 
| 3 4 | 
             
              class Searcher
         | 
| 4 5 | 
             
                class << self
         | 
| 5 6 | 
             
                  def do(file_text)
         | 
| 6 | 
            -
                     | 
| 7 | 
            -
                    pp r = Ripper.lex(file_text)
         | 
| 8 | 
            -
                    r = Ripper.lex(file_text).reduce([]) do |acc, element|
         | 
| 9 | 
            -
                      element[1] == :on_tstring_content && sql?(element[2]) ? acc.push(element[2]) : acc
         | 
| 10 | 
            -
                    end
         | 
| 11 | 
            -
                    pp r
         | 
| 7 | 
            +
                    ExportStrings::Core.execute(file_text).each_with_object([]) { |str, memo| memo << str if sql?(str) }
         | 
| 12 8 | 
             
                  end
         | 
| 13 9 |  | 
| 14 10 | 
             
                  private
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: auto_sql_formatter
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tashiro
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-06-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -73,6 +73,11 @@ files: | |
| 73 73 | 
             
            - bin/console
         | 
| 74 74 | 
             
            - bin/setup
         | 
| 75 75 | 
             
            - example/example.rb
         | 
| 76 | 
            +
            - example/example2.rb
         | 
| 77 | 
            +
            - example/example3.rb
         | 
| 78 | 
            +
            - example/example4.rb
         | 
| 79 | 
            +
            - example/example5.rb
         | 
| 80 | 
            +
            - lib/.DS_Store
         | 
| 76 81 | 
             
            - lib/auto_sql_formatter.rb
         | 
| 77 82 | 
             
            - lib/auto_sql_formatter/core.rb
         | 
| 78 83 | 
             
            - lib/auto_sql_formatter/formatter.rb
         | 
| @@ -97,9 +102,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 97 102 | 
             
                  version: '0'
         | 
| 98 103 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 99 104 | 
             
              requirements:
         | 
| 100 | 
            -
              - - " | 
| 105 | 
            +
              - - ">="
         | 
| 101 106 | 
             
                - !ruby/object:Gem::Version
         | 
| 102 | 
            -
                  version:  | 
| 107 | 
            +
                  version: '0'
         | 
| 103 108 | 
             
            requirements: []
         | 
| 104 109 | 
             
            rubygems_version: 3.0.3
         | 
| 105 110 | 
             
            signing_key: 
         |