annotato 0.1.3 → 0.1.5

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: 3fc032579335784d2fef64d554eb97d7a726749535dc6ceb7af6fb2977387cc4
4
- data.tar.gz: 2f4541f7bf902702312863801f9d056d9a8fd4cd18ac74c488ad0421bcbb3ce5
3
+ metadata.gz: e80ca78ee10d8d0ade55aea343a5cf37c9831190611eca4adbc913e82183dbb0
4
+ data.tar.gz: ede81923b6cb487f342b2b23db71aa9fdf56cdd82daf0c7af3b6e0a29de185f9
5
5
  SHA512:
6
- metadata.gz: 6e83a8511599b40aaf3ddd613273b3a99f2fe4d6478e8601636f45b5629fffcb59899947c7fb615dd63d856fcc0faf64394e4bf0f42b9ad475ecaf2451074581
7
- data.tar.gz: ebbcc2bb08d245dc19030a48a5f4e6a3b6c58f20c2f12b7bcd535fc85cc03eec67fb4c06bc9310db9f5c969c12f72fe106f01b422f5c630d6a79fc4a0e8da3d6
6
+ metadata.gz: 9a7b2c8a7008c0703d0eae63d2c586d56b32adac93e2bbe912df16b496f26e5d590013c6a842a00bdd792801879efcb3846082fcb8089313c366c0365090f15c
7
+ data.tar.gz: 83da6bec671419c9f8ead2fadf173e59caaf7593d63d5d53eab3cbc125dc48ada3554e08836a7061d639ae79a73cd38415443291c232eee92f73c000f1de8c8d
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.3)
4
+ annotato (0.1.5)
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
@@ -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,10 +15,8 @@ module Annotato
13
15
  type = col.sql_type
14
16
  options = []
15
17
 
16
- if formatted = format_default(col.default)
17
- options << formatted
18
- end
19
-
18
+ default = format_default(col.default)
19
+ options << default if default
20
20
  options << "not null" unless col.null
21
21
  options << "primary key" if name == primary_key
22
22
  options << "is an Array" if type.end_with?("[]")
@@ -36,18 +36,30 @@ module Annotato
36
36
  end
37
37
  end
38
38
 
39
- def self.json_like?(value)
40
- value.is_a?(String) && value.strip.start_with?('{', '[') && value.strip.end_with?('}', ']')
41
- end
42
-
43
39
  def self.format_default(value)
44
40
  return nil if value.nil?
45
41
 
46
42
  if json_like?(value)
47
- "default(#{value.strip.gsub(/\s+/, ' ')})"
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(',') if lines.last # <-- тут зміна
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
48
56
  else
49
57
  "default(#{value.inspect})"
50
58
  end
51
59
  end
60
+
61
+ def self.json_like?(value)
62
+ value.is_a?(String) && value.strip.match?(/\A[\[{].*[\]}]\z/m)
63
+ end
52
64
  end
53
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Annotato
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
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.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhii Bodnaruk
@@ -40,7 +40,6 @@ files:
40
40
  - LICENSE.txt
41
41
  - README.md
42
42
  - Rakefile
43
- - VERSION
44
43
  - annotato.gemspec
45
44
  - bin/console
46
45
  - bin/setup
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.3