annotato 0.1.2 → 0.1.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: d021b5310b11518f5cf32bb8cf5dd0c375043faa5f1b10fa494fcf009b971c0a
4
- data.tar.gz: 4c89d53facb4a5220961753ce65d8ee67dc92a1f5262d1ca87fd5e2770eb21a3
3
+ metadata.gz: 729bf5dd5fcf8ea70b736597058e2366a41a9f1624e9ab57a6411b3f6baf5ef8
4
+ data.tar.gz: 29f8d517f2e6de6c3d9f3234114cb862f08ddb73df00b9fa901291212e779747
5
5
  SHA512:
6
- metadata.gz: 29812430a61c397651d746e919adec987d421b3200d6b416f52095ce22f4b31e7f9efecca8d86636a93fec5c9f47d42d499ebfcf4ba0722ac30cdaceccc1c2bf
7
- data.tar.gz: c59e5a6dbad103793614a44a5eb15731d3c48f1c8c6a49eb997fbd2ddd1c48c65a09827a989bb49c4db25382cdb3344c50a06ef68f5f734587f21908e325fbfd
6
+ metadata.gz: 53a24228391462f73d506d5a2d4ce02c87daab0e4763f4877b53eb96d1a51e7579bc6bd7941c57e1d34fc2846f3830a3d1feba31d95bcb04a51814748bfcc7c3
7
+ data.tar.gz: 83ac809ddc119d52dec3887aff155e899135653cb085182dbfbebcb945a8c12bdd23e2cbb36d4f417f2e943e7425c8805d439eea100e475061ab7afef613c2e2
data/Gemfile CHANGED
@@ -12,4 +12,5 @@ gem "rspec", "~> 3.0"
12
12
 
13
13
  group :development, :test do
14
14
  gem "simplecov", require: false
15
+ gem "pry", require: false
15
16
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- annotato (0.1.2)
4
+ annotato (0.1.4)
5
5
  rails (>= 6.0)
6
6
 
7
7
  GEM
@@ -82,6 +82,7 @@ GEM
82
82
  benchmark (0.4.0)
83
83
  bigdecimal (3.1.9)
84
84
  builder (3.3.0)
85
+ coderay (1.1.3)
85
86
  concurrent-ruby (1.3.5)
86
87
  connection_pool (2.5.3)
87
88
  crass (1.0.6)
@@ -109,6 +110,7 @@ GEM
109
110
  net-pop
110
111
  net-smtp
111
112
  marcel (1.0.4)
113
+ method_source (1.1.0)
112
114
  mini_mime (1.1.5)
113
115
  minitest (5.25.5)
114
116
  net-imap (0.5.8)
@@ -128,6 +130,9 @@ GEM
128
130
  pp (0.6.2)
129
131
  prettyprint
130
132
  prettyprint (0.2.0)
133
+ pry (0.15.2)
134
+ coderay (~> 1.1)
135
+ method_source (~> 1.0)
131
136
  psych (5.2.5)
132
137
  date
133
138
  stringio
@@ -214,6 +219,7 @@ PLATFORMS
214
219
  DEPENDENCIES
215
220
  annotato!
216
221
  irb
222
+ pry
217
223
  rake (~> 13.0)
218
224
  rspec (~> 3.0)
219
225
  simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.4
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "json"
4
+
3
5
  module Annotato
4
6
  class ColumnFormatter
5
7
  def self.format(model, connection)
@@ -13,15 +15,8 @@ module Annotato
13
15
  type = col.sql_type
14
16
  options = []
15
17
 
16
- if !col.default.nil?
17
- if col.default.to_s.length > 60 && json_like?(col.default)
18
- formatted_default = format_json_default(col.default)
19
- options << "default(\n#{formatted_default}\n# )"
20
- else
21
- options << "default(#{col.default.inspect})"
22
- end
23
- end
24
-
18
+ default = format_default(col.default)
19
+ options << default if default
25
20
  options << "not null" unless col.null
26
21
  options << "primary key" if name == primary_key
27
22
  options << "is an Array" if type.end_with?("[]")
@@ -41,17 +36,30 @@ module Annotato
41
36
  end
42
37
  end
43
38
 
44
- def self.json_like?(value)
45
- value.is_a?(String) && value.strip.start_with?("{") && value.strip.end_with?("}")
46
- end
39
+ def self.format_default(value)
40
+ return nil if value.nil?
47
41
 
48
- def self.format_json_default(json_str)
49
- begin
50
- parsed = JSON.parse(json_str)
51
- parsed.map { |k, v| "# \"#{k}\": #{v}" }.join(",\n")
52
- rescue JSON::ParserError
53
- "# #{json_str.strip}"
42
+ if json_like?(value)
43
+ stripped = value.strip
44
+ begin
45
+ parsed = JSON.parse(stripped)
46
+ if parsed.is_a?(Array) && parsed.all? { |e| e.is_a?(String) }
47
+ lines = parsed.map { |e| %Q( "#{e}",) }
48
+ lines[-1] = lines[-1].chomp(',') # remove trailing comma
49
+ ["default([", *lines, "])"].join("\n# ")
50
+ else
51
+ "default(#{stripped.gsub(/\s+/, ' ')})"
52
+ end
53
+ rescue JSON::ParserError
54
+ "default(#{stripped.gsub(/\s+/, ' ')})"
55
+ end
56
+ else
57
+ "default(#{value.inspect})"
54
58
  end
55
59
  end
60
+
61
+ def self.json_like?(value)
62
+ value.is_a?(String) && value.strip.match?(/\A[\[{].*[\]}]\z/m)
63
+ end
56
64
  end
57
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Annotato
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: annotato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhii Bodnaruk