katarina 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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