schema_to_dbml 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9032720a1b5f18280931f1c79673a0f1bd19fe11984b7648fe8a51daa4845cad
4
- data.tar.gz: e255d62a37be7d8c1980ef5920f447993bff019119ac86cb45e2102d35a65ff1
3
+ metadata.gz: 01e5c423d835476a25d170272a5d89e762f051951176a21df6b6d62235b0a9c0
4
+ data.tar.gz: 51a2746ca61db2fae5125b0cf368c4bbca195d7f042b07b5444740e393c0a381
5
5
  SHA512:
6
- metadata.gz: 51f4a20647f1a6a050b08e45c4d6d0a7c8be8dab2ae1ffed85bcfb94b08d002dd1291247bf6487494e661f5ce993e4378e5ef540542282bee5ae9c4096fb90f9
7
- data.tar.gz: 84e5fdc4390ed090174685f6ac18c9f29e278bc82ea99452f5d8dccae9f874c49031daac59bc135c31a2befb990f1ad3795ec024d72bd12bea91697dff0634cc
6
+ metadata.gz: 9aaefc5b170b0cb209df1b8ab12f80ae7293eb9859cc5470d07af3a84cc55a6546917e23c401de24ba17dc630bd08e297b901af838d6fceac5340d69ed4fe277
7
+ data.tar.gz: bd6ae1da9afff47e053d851e538a3e3e36a266dc822a98ddfd1b2b81989b814100ba0a6dece7e3c47cadb538530315e582d042fe6bc193e1a36a01dba41cad96
data/.rubocop.yml CHANGED
@@ -76,4 +76,4 @@ Gemspec/DevelopmentDependencies:
76
76
  Enabled: false
77
77
 
78
78
  Metrics/ParameterLists:
79
- Max: 7
79
+ Max: 8
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.1.2
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- schema_to_dbml (0.0.3)
4
+ schema_to_dbml (0.0.4)
5
5
  activesupport (>= 6.1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (7.0.5)
10
+ activesupport (7.0.6)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
12
  i18n (>= 1.6, < 2)
13
13
  minitest (>= 5.1)
@@ -17,15 +17,16 @@ GEM
17
17
  concurrent-ruby (1.2.2)
18
18
  diff-lcs (1.5.0)
19
19
  docile (1.4.0)
20
- i18n (1.13.0)
20
+ i18n (1.14.1)
21
21
  concurrent-ruby (~> 1.0)
22
22
  json (2.6.3)
23
- minitest (5.18.0)
23
+ language_server-protocol (3.17.0.3)
24
+ minitest (5.18.1)
24
25
  parallel (1.23.0)
25
26
  parser (3.2.2.3)
26
27
  ast (~> 2.4.1)
27
28
  racc
28
- racc (1.7.0)
29
+ racc (1.7.1)
29
30
  rainbow (3.1.1)
30
31
  rake (13.0.6)
31
32
  regexp_parser (2.8.1)
@@ -43,8 +44,9 @@ GEM
43
44
  diff-lcs (>= 1.2.0, < 2.0)
44
45
  rspec-support (~> 3.12.0)
45
46
  rspec-support (3.12.0)
46
- rubocop (1.52.1)
47
+ rubocop (1.54.0)
47
48
  json (~> 2.3)
49
+ language_server-protocol (>= 3.17.0)
48
50
  parallel (~> 1.10)
49
51
  parser (>= 3.2.2.3)
50
52
  rainbow (>= 2.2.2, < 4.0)
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'helpers/constants'
4
- require_relative './dbml_tables_formatter'
5
- require_relative './dbml_relations_formatter'
4
+ require_relative 'dbml_tables_formatter'
5
+ require_relative 'dbml_relations_formatter'
6
6
 
7
7
  class SchemaConverter
8
8
  include Helpers::Constants
@@ -22,11 +22,11 @@ class DbmlTablesFormatter
22
22
  def build_columns(parsed_columns)
23
23
  columns = []
24
24
 
25
- parsed_columns.scan(COLUMNS_REGEXP).each do |type, name, default, null, comment, _precision, array|
25
+ parsed_columns.scan(COLUMNS_REGEXP).each do |type, name, default, null, comment, _precision, array, limit|
26
26
  formatted_comment = format_comment(comment:)
27
27
  formatted_default = format_default(default:)
28
28
  formatted_null = format_null(null:)
29
- formatted_type = format_type(type:, array:)
29
+ formatted_type = format_type(type:, array:, limit:)
30
30
 
31
31
  final_values = [formatted_default, formatted_null, formatted_comment].compact.reject(&:empty?)
32
32
  columns << build_line(name, formatted_type, final_values)
@@ -5,6 +5,10 @@ require_relative 'default_field_formatter_helper'
5
5
  module Formatters
6
6
  module FieldsFormatter
7
7
  include DefaultFieldFormatterHelper
8
+ COMMENT_MAPPER = [
9
+ { from: "'", to: "\\\\'" },
10
+ { from: '\"', to: '"' }
11
+ ].freeze
8
12
  TYPE_MAPPER = {
9
13
  string: 'varchar',
10
14
  integer: 'int',
@@ -12,12 +16,13 @@ module Formatters
12
16
  datetime: 'timestamp'
13
17
  }.freeze
14
18
 
15
- def format_type(type:, array:)
19
+ def format_type(type:, array:, limit:)
16
20
  return '' if type.to_s.empty?
17
21
 
18
22
  parsed = TYPE_MAPPER[type.to_sym] || type.to_s
19
23
 
20
24
  return "#{parsed}[]" if array == 'true'
25
+ return "#{parsed}(#{limit})" if limit
21
26
 
22
27
  parsed
23
28
  end
@@ -41,7 +46,12 @@ module Formatters
41
46
  def format_comment(comment:)
42
47
  return '' if comment.to_s.empty?
43
48
 
44
- "note: '#{comment.gsub("'", "\\\\'")}'"
49
+ note = comment.dup
50
+ COMMENT_MAPPER.each do |mapper|
51
+ note.gsub!(mapper[:from], mapper[:to])
52
+ end
53
+
54
+ "note: '#{note}'"
45
55
  end
46
56
  end
47
57
  end
@@ -18,9 +18,10 @@ module Helpers
18
18
  (?:
19
19
  (?:,\s+(?<default>default:[^,\n]+?(?=(?:,\s)|$)))?
20
20
  (?:,\s+(?<null>null:\s+\w+))?
21
- (?:,\s+comment:\s+"(?<comment>[^"]+)")?
21
+ (?:,\s+comment:\s+"(?<comment>[^"\\]*(?:\\.[^"\\]*)*)")?
22
22
  (?:,\s+precision:\s+(?<precision>\d+))?
23
23
  (?:,\s+array:\s+(?<array>true|false))?
24
+ (?:,\s+limit:\s+(?<limit>\d+))?
24
25
  )*
25
26
  /x
26
27
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'helpers/constants'
4
- require_relative './dbml_tables_formatter'
5
- require_relative './dbml_relations_formatter'
4
+ require_relative 'dbml_tables_formatter'
5
+ require_relative 'dbml_relations_formatter'
6
6
 
7
7
  class SchemaConverter
8
8
  include Helpers::Constants
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SchemaToDbml
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_to_dbml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Ribeiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-21 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -118,6 +118,7 @@ extra_rdoc_files: []
118
118
  files:
119
119
  - ".rspec"
120
120
  - ".rubocop.yml"
121
+ - ".ruby-version"
121
122
  - CHANGELOG.md
122
123
  - CODE_OF_CONDUCT.md
123
124
  - CONTRIBUTE.md