annotato 0.1.0 → 0.1.2

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: 003a8311576a66ee46f22d1b23d586d44225e0f162071a241cec1374ce80249f
4
- data.tar.gz: a714326713db198ec79ca4df5f1f81d9157e859fc9e6822939d72251c9f05a83
3
+ metadata.gz: d021b5310b11518f5cf32bb8cf5dd0c375043faa5f1b10fa494fcf009b971c0a
4
+ data.tar.gz: 4c89d53facb4a5220961753ce65d8ee67dc92a1f5262d1ca87fd5e2770eb21a3
5
5
  SHA512:
6
- metadata.gz: 8db71510d95ad8bf436688fe1c64292dda80dff2bda4b6580b97e0ecb65c6a47804c703e457326495b5ea83e6bb75828d6f6d32a0affda9fdc74a7353ce08d54
7
- data.tar.gz: 388ffb2c750400a6b59add8be79a216e5f6ac0fec1819c96a7b10febb3e248abe06c43d55cd929027ef77459462eaaf99b6414fd9999822f8e6d6f3c2f088b54
6
+ metadata.gz: 29812430a61c397651d746e919adec987d421b3200d6b416f52095ce22f4b31e7f9efecca8d86636a93fec5c9f47d42d499ebfcf4ba0722ac30cdaceccc1c2bf
7
+ data.tar.gz: c59e5a6dbad103793614a44a5eb15731d3c48f1c8c6a49eb997fbd2ddd1c48c65a09827a989bb49c4db25382cdb3344c50a06ef68f5f734587f21908e325fbfd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- annotato (0.1.0)
4
+ annotato (0.1.2)
5
5
  rails (>= 6.0)
6
6
 
7
7
  GEM
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.2
@@ -13,7 +13,15 @@ module Annotato
13
13
  type = col.sql_type
14
14
  options = []
15
15
 
16
- options << "default(#{col.default.inspect})" unless col.default.nil?
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
+
17
25
  options << "not null" unless col.null
18
26
  options << "primary key" if name == primary_key
19
27
  options << "is an Array" if type.end_with?("[]")
@@ -32,5 +40,18 @@ module Annotato
32
40
  line.rstrip
33
41
  end
34
42
  end
43
+
44
+ def self.json_like?(value)
45
+ value.is_a?(String) && value.strip.start_with?("{") && value.strip.end_with?("}")
46
+ end
47
+
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}"
54
+ end
55
+ end
35
56
  end
36
57
  end
@@ -6,14 +6,20 @@ module Annotato
6
6
  return [] if model.defined_enums.empty?
7
7
 
8
8
  model.defined_enums.map do |attr, values|
9
- # Check if all values equal keys (strings)
10
- if values.values.all? { |v| v == v.to_s && values.keys.include?(v) }
11
- enum_str = values.keys.join(", ")
12
- else
13
- enum_str = values.map { |k, v| "#{k} (#{v})" }.join(", ")
9
+ lines = ["# #{attr}: {"]
10
+
11
+ formatted_values = values.map do |key, val|
12
+ if key.to_s == val.to_s
13
+ "#{key}"
14
+ else
15
+ "#{key} (#{val})"
16
+ end
14
17
  end
15
18
 
16
- "# #{attr}: { #{enum_str} }"
19
+ lines += formatted_values.map { |v| "# #{v}," }
20
+ lines[-1] = lines[-1].chomp(',') # remove trailing comma from last line
21
+ lines << "# }"
22
+ lines.join("\n")
17
23
  end
18
24
  end
19
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Annotato
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
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.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhii Bodnaruk