schema_to_dbml 0.0.3 → 0.0.4

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 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