katarina 0.1.0 → 0.1.1

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: 43ab1c6567c37055c23ed9124d0f8b9add6ab70a94d5b5407887658e912001c7
4
- data.tar.gz: a39845bd2f5982306e5434bd5fbf7fbe1357a7c9f759af2862b0a381df29f797
3
+ metadata.gz: 939fc8cc32495c0feae72bb679e8f8ea4ef41e67fe5a54ce3e4f369b208c8822
4
+ data.tar.gz: 917af113bc30c06b636e863fe0dcfe04823323af2c1507a80478075a955586d2
5
5
  SHA512:
6
- metadata.gz: a508469b087a906598ef45f32d126bfe6a583c8f698266d40e30d4314547a4e1450bfca3432a2d088c5df50f59461f49e0d80ca967d5b147788de3f6bada7594
7
- data.tar.gz: 9c9bd1067dd1f825a79885c4df133778a49e3bb3437eb2e319ce1a45dd4a0240172bd4b048f7fa8871e4e383144495bed1d84c07896adf9fb3499d79c38f5e31
6
+ metadata.gz: 19d58a0db473de561c66fb1af44195282e30e6bdeb55c19899f7f4d96c9a57fc4711f461c4fa2c4a64caafcad74e5591b2ccaf4c8d27cd3917c2d58163d771d9
7
+ data.tar.gz: 810b0b4c2c6dea8991567238d2c5a0f30c9ead69df0f2c4550baa96654762f2ccf61e8938fd31efe95545e4fc991d79718ce5ee1bf5efb876c76b754b59dfb59
@@ -5,44 +5,48 @@ module Katarina
5
5
  class << self
6
6
  def generate(schema)
7
7
  [
8
- "type #{schema.name} = {",
8
+ "type #{schema.name} = ",
9
9
  members(schema.types),
10
- "}\n"
11
- ].join("\n")
10
+ "\n",
11
+ ].join
12
12
  end
13
13
 
14
14
  private
15
15
 
16
- def members(types, level = 1)
16
+ def members(types, level = 0)
17
17
  case types
18
18
  when Hash
19
- types.map { |name, type| member(name, type, level) }.join("\n")
19
+ [
20
+ "{",
21
+ types.map { |name, type| member(name, type, level + 1) },
22
+ "#{indent(level)}}",
23
+ ].join("\n")
20
24
  when Array
21
25
  "#{members(types.first, level)}[]"
26
+ when String
27
+ number?(types) ? 'number' : types
22
28
  else
23
- types
29
+ raise "unknown type => #{types.class}: #{types}"
24
30
  end
25
31
  end
26
32
 
27
33
  def member(name, type, level)
28
34
  case type
29
35
  when Hash
30
- [
31
- "#{key(name, level)} {",
32
- members(type, level + 1),
33
- "#{indent(level)}}"
34
- ]
36
+ "#{key(name, level)} #{members(type, level)}"
35
37
  when Array
36
- if type.first != 'null'
37
- "#{member(name, type.first, level).join("\n")}[]"
38
- else
39
- "#{key(name, level)} null[]"
40
- end
38
+ "#{member(name, type.first, level)}[]"
41
39
  when String
42
- "#{key(name, level)} #{type == 'integer' ? 'number' : type}"
40
+ "#{key(name, level)} #{number?(type) ? 'number' : type}"
41
+ else
42
+ raise "unknown type => #{type.class}: #{type}"
43
43
  end
44
44
  end
45
45
 
46
+ def number?(type)
47
+ %w[integer float].include?(type)
48
+ end
49
+
46
50
  def key(name, level)
47
51
  "#{indent(level)}#{name}:"
48
52
  end
@@ -1,3 +1,3 @@
1
1
  module Katarina
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katarina
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - masatoshi_moritsuka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-04 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -116,8 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.7.3
119
+ rubygems_version: 3.1.2
121
120
  signing_key:
122
121
  specification_version: 4
123
122
  summary: This gem generates type definitions for TypeScript from a OpenAPI Documentation