yard2steep 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: bb6af8f5dee325bf592f102d800a9d740fbe6cf1abf5548487def95356834d39
4
- data.tar.gz: 42b2cd5e679580d2b1765cd1a8204a5940f4b4c683dde3b151f061ebe76311c7
3
+ metadata.gz: 9dd410ad306476662e4768508ddb91363d6881d8714b83588f890b871571e8c2
4
+ data.tar.gz: a4ea944e7ec8b0ddaec01dfadce13cf85ad934ee1612aeff4ca00b045396f57e
5
5
  SHA512:
6
- metadata.gz: 60dee77fb6ea4475770849f0f89f44de867a9bcee2d59fdb988443a4edc77945b0540e7932b7a1b3a4f888ef33c97e378f81c3601830d8f90b311905a4c1598e
7
- data.tar.gz: 198627709bc5227d0996fdadf7be838421dbacf0c01a3ef34e3ab24af66e90db02ee96cea76c1e02732f94578207aae3fc54a5cb06f891cf0365e1c8f8afe0e5
6
+ metadata.gz: ca073d5d4eba5d8caad1d94877b9d7800cd1ec10306f2f02e8bc36cd37695e70a5e571c30aafeec27f0e42842e25ac34e46d1115f0534a39c846085612d97e1e
7
+ data.tar.gz: 470f49608f90134ce4cddee5e9a905371347ae3ad8eb49b245a2d8fab83b8be8b5d9d82fb813cf2389c49fdfecbb6c23f9f32b9ac2973bcd46010ba0a410ec7e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yard2steep (0.1.0)
4
+ yard2steep (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Generate [steep](https://github.com/soutaro/steep) type definition file from yard annotation.
4
4
 
5
- :warning: **This is highly experimental project. Current version is 0.1.0.**
5
+ :warning: **This is highly experimental project. Current version is 0.1.1.**
6
6
 
7
7
  ## Installation
8
8
 
@@ -12,6 +12,11 @@ end
12
12
  # NOTE: this is wrong comment. so should ignore it
13
13
  # @param [Array] contents
14
14
 
15
+ class SomeClass
16
+ # @dynamic index
17
+ attr_reader :index
18
+ end
19
+
15
20
  class MyClass
16
21
  # NOTE: method definition in singleton class should be ignored
17
22
  class << self
@@ -24,8 +29,6 @@ class MyClass
24
29
 
25
30
  CONSTANT = "This is constant".freeze
26
31
 
27
- attr_reader :index
28
-
29
32
  # This for should not be used.
30
33
  # @return [String]
31
34
  def self.name
@@ -42,6 +45,11 @@ class MyClass
42
45
  [:ok, :no]
43
46
  end
44
47
 
48
+ # @return [Array<Array<Symbol>>]
49
+ def nest
50
+ [[:o]]
51
+ end
52
+
45
53
  # @return [Array(Symbol, Integer)]
46
54
  def type
47
55
  [:number, 1]
@@ -58,6 +66,11 @@ class MyClass
58
66
  { ok: 3, no: nil }
59
67
  end
60
68
 
69
+ # @return [Hash{ Symbol => Array<Integer> }]
70
+ def nest_hash
71
+ { ok: [1, 2] }
72
+ end
73
+
61
74
  # @param [Array<Integer>] contents
62
75
  # @param [Symbol] order
63
76
  # @return [Array<Integer>]
@@ -1,12 +1,16 @@
1
- class MyClass
1
+ class SomeClass
2
2
  @index: any
3
3
  def index: -> any
4
+ end
5
+ class MyClass
4
6
  def self.name: -> String
5
7
  def name: -> String
6
8
  def pair: -> Array<Symbol>
9
+ def nest: -> Array<Array<Symbol>>
7
10
  def type: -> Array<Symbol | Integer>
8
11
  def opts: -> Hash<any, any>
9
12
  def values: (?off: Integer) -> Hash<Symbol, Integer | nil>
13
+ def nest_hash: -> Hash<Symbol, Array<Integer>>
10
14
  def reverse: (Array<Integer>, order: Symbol) -> Array<Integer>
11
15
  def first!: (any) -> any
12
16
  def present?: (any) -> any
@@ -16,6 +20,6 @@ MyClass::CONSTANT: any
16
20
  module MyClass::InnerClass
17
21
  def double: (source: Integer) -> Integer
18
22
  end
19
- class OtherClass
23
+ class OtherClass <: MyClass
20
24
  def yes: -> any
21
25
  end
@@ -7,19 +7,21 @@ module Yard2steep
7
7
  AST::ClassNode.new(
8
8
  kind: 'module',
9
9
  c_name: 'main',
10
- parent: nil,
10
+ super_c: nil,
11
+ parent: nil,
11
12
  )
12
13
  end
13
14
 
14
- # @dynamic kind, c_name, c_list, m_list, ivar_list, children, parent
15
- attr_reader :kind, :c_name, :c_list, :m_list, :ivar_list, :children, :parent
15
+ # @dynamic kind, c_name, super_c, c_list, m_list, ivar_list, children, parent
16
+ attr_reader :kind, :c_name, :super_c, :c_list, :m_list, :ivar_list, :children, :parent
16
17
 
17
18
  KIND = ['class', 'module']
18
19
 
19
20
  # @param [String] kind
20
21
  # @param [String] c_name
21
- # @param [AST::ClassNode | nil] parent
22
- def initialize(kind:, c_name:, parent:)
22
+ # @param [AST::ClassNode, nil] parent
23
+ # @param [String, nil] super_c
24
+ def initialize(kind:, c_name:, super_c:, parent:)
23
25
  Util.assert! { KIND.include?(kind) }
24
26
  Util.assert! { c_name.is_a?(String) }
25
27
  Util.assert! {
@@ -28,6 +30,7 @@ module Yard2steep
28
30
  }
29
31
  @kind = kind
30
32
  @c_name = c_name
33
+ @super_c = super_c
31
34
  @c_list = [] # list of constants
32
35
  @m_list = [] # list of methods
33
36
  @ivar_list = [] # list of instance variables
@@ -73,6 +76,16 @@ module Yard2steep
73
76
  end
74
77
  end
75
78
 
79
+ def long_super
80
+ @long_super ||= begin
81
+ if @parent.c_name == 'main'
82
+ @super_c
83
+ else
84
+ "#{@parent.long_name}::#{@super_c}"
85
+ end
86
+ end
87
+ end
88
+
76
89
  # @return [String]
77
90
  def to_s
78
91
  inspect
@@ -40,7 +40,7 @@ module Yard2steep
40
40
  gen_children!(c_node, off: 0)
41
41
  else
42
42
  if (c_node.m_list.size > 0) || (c_node.ivar_list.size > 0)
43
- emit! "#{c_node.kind} #{c_node.long_name}\n", off: off
43
+ emit! "#{c_node.kind} #{c_node.long_name}#{c_node.super_c ? " <: #{c_node.long_super}" : nil}\n", off: off
44
44
  gen_ivar_list!(c_node, off: off + 2)
45
45
  gen_m_list!(c_node, off: off + 2)
46
46
  emit! "end\n", off: off
@@ -1,4 +1,5 @@
1
1
  require 'yard2steep/ast'
2
+ require 'yard2steep/type'
2
3
 
3
4
  module Yard2steep
4
5
  class Parser
@@ -12,7 +13,7 @@ module Yard2steep
12
13
  (class)
13
14
  #{S_P_RE}
14
15
  (\w+)
15
- (?:
16
+ (
16
17
  #{S_P_RE}
17
18
  <
18
19
  #{S_P_RE}
@@ -60,7 +61,14 @@ module Yard2steep
60
61
  $/x
61
62
 
62
63
  COMMENT_RE = /#{PRE_RE}#/
63
- TYPE_WITH_PAREN_RE = /\[([^\]]*)\]/
64
+ TYPE_WITH_PAREN_RE = /
65
+ \[
66
+ (
67
+ [^\]]
68
+ *
69
+ )
70
+ \]
71
+ /x
64
72
 
65
73
  PARAM_RE = /
66
74
  #{COMMENT_RE}
@@ -280,9 +288,10 @@ module Yard2steep
280
288
  reset_method_context!
281
289
 
282
290
  c = AST::ClassNode.new(
283
- kind: m[1],
284
- c_name: m[2],
285
- parent: @current_class,
291
+ kind: m[1],
292
+ c_name: m[2],
293
+ super_c: m[3] && m[3].gsub('<', '').strip,
294
+ parent: @current_class,
286
295
  )
287
296
  @current_class.append_child(c)
288
297
  @current_class = c
@@ -516,69 +525,11 @@ module Yard2steep
516
525
  print "#{' ' * (@stack.size * 2 + offset)}#{message}\n" if @debug
517
526
  end
518
527
 
519
- ARRAY_TYPE_RE = /^
520
- Array
521
- #{S_RE}
522
- <
523
- ([^>]+)
524
- >
525
- #{S_RE}
526
- $/x
527
- FIXED_ARRAY_TYPE_RE = /^
528
- Array
529
- #{S_RE}
530
- \(
531
- ([^)]+)
532
- \)
533
- #{S_RE}
534
- $/x
535
- HASH_TYPE_RE = /^
536
- Hash
537
- #{S_RE}
538
- \{
539
- #{S_RE}
540
- ([^=]+)
541
- #{S_RE}
542
- =>
543
- #{S_RE}
544
- ([^}]+)
545
- #{S_RE}
546
- \}
547
- #{S_RE}
548
- $/x
549
-
550
- # NOTE: normalize type to steep representation
551
- #
552
528
  # @param [String] type
553
529
  # @return [String]
554
530
  def normalize_type(type)
555
- if type[0..4] == 'Array'.freeze
556
- if type == 'Array'.freeze
557
- 'Array<any>'.freeze
558
- elsif (m = ARRAY_TYPE_RE.match(type))
559
- "Array<#{normalize_multi_type(m[1])}>"
560
- elsif (m = FIXED_ARRAY_TYPE_RE.match(type))
561
- "Array<#{normalize_multi_type(m[1])}>"
562
- else
563
- raise "invalid Array type: #{type}"
564
- end
565
- elsif type[0..3] == 'Hash'.freeze
566
- if type == 'Hash'.freeze
567
- 'Hash<any, any>'.freeze
568
- elsif (m = HASH_TYPE_RE.match(type))
569
- "Hash<#{normalize_multi_type(m[1])}, #{normalize_multi_type(m[2])}>"
570
- else
571
- raise "invalid Hash type: #{type}"
572
- end
573
- else
574
- normalize_multi_type(type)
575
- end
576
- end
577
-
578
- # @param [String] type_s
579
- # @return [String]
580
- def normalize_multi_type(type_s)
581
- type_s.split(',').map { |s| s.strip }.uniq.join(' | ')
531
+ debug_print! type
532
+ Type.translate(type)
582
533
  end
583
534
  end
584
535
  end
@@ -0,0 +1,52 @@
1
+ module Yard2steep
2
+ class Type
3
+ class TypeBase
4
+ # @param [Array<TypeBase>] types
5
+ # @return [String]
6
+ def self.union2s(types)
7
+ types.map { |t| t.to_s }.uniq.join(' | ')
8
+ end
9
+ end
10
+
11
+ class AnyType < TypeBase
12
+ def to_s
13
+ 'any'
14
+ end
15
+ end
16
+
17
+ class NormalType < TypeBase
18
+ # @param [String] type
19
+ def initialize(type:)
20
+ @type = type
21
+ end
22
+
23
+ def to_s
24
+ @type
25
+ end
26
+ end
27
+
28
+ class ArrayType < TypeBase
29
+ # @param [Array<TypeBase>] type
30
+ def initialize(type:)
31
+ @type = type
32
+ end
33
+
34
+ def to_s
35
+ "Array<#{TypeBase.union2s(@type)}>"
36
+ end
37
+ end
38
+
39
+ class HashType < TypeBase
40
+ # @param [Array<TypeBase>] key
41
+ # @param [Array<TypeBase>] val
42
+ def initialize(key:, val:)
43
+ @key = key
44
+ @val = val
45
+ end
46
+
47
+ def to_s
48
+ "Hash<#{TypeBase.union2s(@key)}, #{TypeBase.union2s(@val)}>"
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,145 @@
1
+ module Yard2steep
2
+ class Type
3
+ class Parser
4
+ # @param [Array<String>]
5
+ # @return [Array<TypeBase>]
6
+ def self.parse(tokens)
7
+ Parser.new(tokens).parse
8
+ end
9
+
10
+ # @param [Array<String>]
11
+ def initialize(tokens)
12
+ @tokens = tokens
13
+ @types = []
14
+ end
15
+
16
+ # @reutrn [Array<TypeBase>]
17
+ def parse
18
+ debug_print!(@tokens)
19
+
20
+ return [] if (@tokens.size == 0)
21
+
22
+ @types.push(parse_type)
23
+ while @tokens.size > 0
24
+ expect!(',')
25
+ @types.push(parse_type)
26
+ end
27
+
28
+ @types
29
+ end
30
+
31
+ private
32
+
33
+ # @return [TypeBase]
34
+ def parse_type
35
+ t = get
36
+ Util.assert! { t }
37
+
38
+ case t
39
+ when 'Array'
40
+ r = parse_array
41
+ when 'Hash'
42
+ r = parse_hash
43
+ else
44
+ r = parse_normal_type(t)
45
+ end
46
+
47
+ debug_print! "type: #{r}\n"
48
+ debug_print! "peek: #{peek}\n"
49
+
50
+ r
51
+ end
52
+
53
+ # @param [String] t
54
+ # @return [NormalType]
55
+ def parse_normal_type(t)
56
+ NormalType.new(type: t)
57
+ end
58
+
59
+ # @param [String] term_s
60
+ # @return [Array<TypeBase>]
61
+ def parse_multiple_types(term_s)
62
+ t = peek
63
+ if t == term_s
64
+ expect!(term_s)
65
+ return []
66
+ end
67
+
68
+ r = []
69
+ r.push(parse_type)
70
+
71
+ while t = peek
72
+ break if t != ','
73
+ expect!(',')
74
+ r.push(parse_type)
75
+ end
76
+
77
+ debug_print! "term_s: #{term_s}\n"
78
+ expect!(term_s)
79
+
80
+ r
81
+ end
82
+
83
+ # @return [ArrayType]
84
+ def parse_array
85
+ case peek
86
+ when '<'
87
+ expect!('<')
88
+ ArrayType.new(
89
+ type: parse_multiple_types('>')
90
+ )
91
+ when '('
92
+ expect!('(')
93
+ ArrayType.new(
94
+ type: parse_multiple_types(')')
95
+ )
96
+ else
97
+ ArrayType.new(
98
+ type: [AnyType.new]
99
+ )
100
+ end
101
+ end
102
+
103
+ def parse_hash
104
+ debug_print!("parse_hash, peek: #{peek}")
105
+
106
+ case peek
107
+ when '{'
108
+ expect!('{')
109
+ key = parse_multiple_types('=')
110
+ expect!('>')
111
+ val = parse_multiple_types('}')
112
+ HashType.new(
113
+ key: key,
114
+ val: val,
115
+ )
116
+ else
117
+ HashType.new(
118
+ key: [AnyType.new],
119
+ val: [AnyType.new],
120
+ )
121
+ end
122
+ end
123
+
124
+ # @param [String] token
125
+ def expect!(token)
126
+ t = get
127
+ Util.assert! { t == token }
128
+ end
129
+
130
+ def get
131
+ @tokens.shift
132
+ end
133
+
134
+ def peek
135
+ @tokens[0]
136
+ end
137
+
138
+ # @param [String] message
139
+ def debug_print!(message)
140
+ # TODO(south37) Add flag
141
+ # print message
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,41 @@
1
+ require 'strscan'
2
+ require 'yard2steep/type/ast'
3
+ require 'yard2steep/type/parser'
4
+
5
+ module Yard2steep
6
+ class Type
7
+ # @param [Strng]
8
+ # @return [String]
9
+ def self.translate(text)
10
+ Type.new(text).translate
11
+ end
12
+
13
+ # @param [String] text
14
+ def initialize(text)
15
+ @text = text
16
+ end
17
+
18
+ def translate
19
+ tokens = tokens(@text)
20
+ ast = Parser.parse(tokens)
21
+ TypeBase.union2s(ast)
22
+ end
23
+
24
+ S_RE = /[\s\t]*/
25
+ TOKENS = /
26
+ [<>(),|={}]|[\w:]+
27
+ /x
28
+
29
+ # @param [String] str
30
+ # @return [Array<String>]
31
+ def tokens(str)
32
+ r = []
33
+ s = StringScanner.new(str)
34
+ while !s.eos?
35
+ s.scan(S_RE)
36
+ r.push(s.scan(TOKENS))
37
+ end
38
+ r
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module Yard2steep
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -35,7 +35,6 @@ class Yard2steep::Parser
35
35
  def type_node: (any) -> any
36
36
  def debug_print!: (any, ?offset: Integer) -> void
37
37
  def normalize_type: (any) -> any
38
- def normalize_multi_type: (any) -> any
39
38
  end
40
39
 
41
40
  Yard2steep::Parser::S_RE: Regexp
@@ -60,9 +59,6 @@ Yard2steep::Parser::ATTR_RE: Regexp
60
59
  Yard2steep::Parser::STATES: Hash<any, any>
61
60
  Yard2steep::Parser::ANY_TYPE: String
62
61
  Yard2steep::Parser::ANY_BLOCK_TYPE: String
63
- Yard2steep::Parser::ARRAY_TYPE_RE: Regexp
64
- Yard2steep::Parser::FIXED_ARRAY_TYPE_RE: Regexp
65
- Yard2steep::Parser::HASH_TYPE_RE: Regexp
66
62
  class Yard2steep::CLI
67
63
  @option: any
68
64
  @src_dir: any
@@ -89,6 +85,60 @@ class Yard2steep::Engine
89
85
  def self.execute: (any, any, ?debug: bool, ?debug_ast: bool) -> any
90
86
  end
91
87
 
88
+ class Yard2steep::Type::TypeBase
89
+ def self.union2s: (any) -> any
90
+ end
91
+
92
+ class Yard2steep::Type::AnyType
93
+ def to_s: () -> String
94
+ end
95
+
96
+ class Yard2steep::Type::NormalType
97
+ @type: any
98
+ def initialize: (type: any) -> any
99
+ def to_s: () -> any
100
+ end
101
+
102
+ class Yard2steep::Type::ArrayType
103
+ @type: any
104
+ def initialize: (type: any) -> any
105
+ def to_s: () -> String
106
+ end
107
+
108
+ class Yard2steep::Type::HashType
109
+ @key: any
110
+ @val: any
111
+ def initialize: (key: any, val: any) -> any
112
+ def to_s: () -> String
113
+ end
114
+
115
+ class Yard2steep::Type::Parser
116
+ @tokens: any
117
+ @types: any
118
+ def initialize: (any) -> Array<any>
119
+ def parse: () -> any
120
+ def parse_type: () -> any
121
+ def parse_normal_type: (any) -> any
122
+ def parse_multiple_types: (any) -> any
123
+ def parse_array: () -> any
124
+ def parse_hash: () -> any
125
+ def expect!: (any) -> any
126
+ def get: () -> any
127
+ def peek: () -> any
128
+ def debug_print!: (any) -> any
129
+ def self.parse: (any) -> any
130
+ end
131
+
132
+ class Yard2steep::Type
133
+ @text: any
134
+ def initialize: (any) -> any
135
+ def translate: () -> any
136
+ def tokens: (any) -> any
137
+ def self.translate: (any) -> any
138
+ end
139
+
140
+ Yard2steep::Type::S_RE: Regexp
141
+ Yard2steep::Type::TOKENS: Regexp
92
142
  module Yard2steep::Util
93
143
  def self.assert!: { () -> any } -> void
94
144
  end
@@ -106,18 +156,21 @@ end
106
156
  class Yard2steep::AST::ClassNode
107
157
  @kind: any
108
158
  @c_name: any
159
+ @super_c: any
109
160
  @c_list: any
110
161
  @m_list: any
111
162
  @ivar_list: any
112
163
  @children: any
113
164
  @parent: any
114
165
  @long_name: any
115
- def initialize: (kind: any, c_name: any, parent: any) -> any
166
+ @long_super: any
167
+ def initialize: (kind: any, c_name: any, super_c: any, parent: any) -> any
116
168
  def append_constant: (any) -> any
117
169
  def append_m: (any) -> any
118
170
  def append_ivar: (any) -> any
119
171
  def append_child: (any) -> any
120
172
  def long_name: () -> any
173
+ def long_super: () -> any
121
174
  def to_s: () -> any
122
175
  def inspect: () -> String
123
176
  def self.create_main: () -> any
@@ -1,6 +1,7 @@
1
1
  class Yard2steep::AST::ClassNode
2
2
  @kind: any
3
3
  @c_name: any
4
+ @super_c: any
4
5
  @c_list: any
5
6
  @m_list: any
6
7
  @ivar_list: any
@@ -9,17 +10,19 @@ class Yard2steep::AST::ClassNode
9
10
  def self.create_main: -> AST::ClassNode
10
11
  def kind: -> any
11
12
  def c_name: -> any
13
+ def super_c: -> any
12
14
  def c_list: -> any
13
15
  def m_list: -> any
14
16
  def ivar_list: -> any
15
17
  def children: -> any
16
18
  def parent: -> any
17
- def initialize: (kind: String, c_name: String, parent: AST::ClassNode | nil) -> any
19
+ def initialize: (kind: String, c_name: String, super_c: String | nil, parent: AST::ClassNode | nil) -> any
18
20
  def append_constant: (AST::ConstantNode) -> void
19
21
  def append_m: (AST::MethodNode) -> void
20
22
  def append_ivar: (AST::IVarNode) -> void
21
23
  def append_child: (AST::ClassNode) -> void
22
24
  def long_name: -> String
25
+ def long_super: -> any
23
26
  def to_s: -> String
24
27
  def inspect: -> String
25
28
  end
@@ -23,7 +23,6 @@ class Yard2steep::Parser
23
23
  def type_node: (String) -> AST::PTypeNode
24
24
  def debug_print!: (String, ?offset: Integer) -> void
25
25
  def normalize_type: (String) -> String
26
- def normalize_multi_type: (String) -> String
27
26
  end
28
27
  Yard2steep::Parser::S_RE: any
29
28
  Yard2steep::Parser::S_P_RE: any
@@ -47,6 +46,3 @@ Yard2steep::Parser::ATTR_RE: any
47
46
  Yard2steep::Parser::STATES: any
48
47
  Yard2steep::Parser::ANY_TYPE: any
49
48
  Yard2steep::Parser::ANY_BLOCK_TYPE: any
50
- Yard2steep::Parser::ARRAY_TYPE_RE: any
51
- Yard2steep::Parser::FIXED_ARRAY_TYPE_RE: any
52
- Yard2steep::Parser::HASH_TYPE_RE: any
@@ -0,0 +1,18 @@
1
+ class Yard2steep::Type::TypeBase
2
+ def self.union2s: (Array<TypeBase>) -> String
3
+ end
4
+ class Yard2steep::Type::AnyType <: Yard2steep::Type::TypeBase
5
+ def to_s: -> any
6
+ end
7
+ class Yard2steep::Type::NormalType <: Yard2steep::Type::TypeBase
8
+ def initialize: (type: String) -> any
9
+ def to_s: -> any
10
+ end
11
+ class Yard2steep::Type::ArrayType <: Yard2steep::Type::TypeBase
12
+ def initialize: (type: Array<TypeBase>) -> any
13
+ def to_s: -> any
14
+ end
15
+ class Yard2steep::Type::HashType <: Yard2steep::Type::TypeBase
16
+ def initialize: (key: Array<TypeBase>, val: Array<TypeBase>) -> any
17
+ def to_s: -> any
18
+ end
@@ -0,0 +1,14 @@
1
+ class Yard2steep::Type::Parser
2
+ def self.parse: (any) -> Array<TypeBase>
3
+ def initialize: (any) -> any
4
+ def parse: -> any
5
+ def parse_type: -> TypeBase
6
+ def parse_normal_type: (String) -> NormalType
7
+ def parse_multiple_types: (String) -> Array<TypeBase>
8
+ def parse_array: -> ArrayType
9
+ def parse_hash: -> any
10
+ def expect!: (String) -> any
11
+ def get: -> any
12
+ def peek: -> any
13
+ def debug_print!: (String) -> any
14
+ end
@@ -0,0 +1,8 @@
1
+ class Yard2steep::Type
2
+ def self.translate: (any) -> String
3
+ def initialize: (String) -> any
4
+ def translate: -> any
5
+ def tokens: (String) -> Array<String>
6
+ end
7
+ Yard2steep::Type::S_RE: any
8
+ Yard2steep::Type::TOKENS: any
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard2steep
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
  - Nao Minami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-27 00:00:00.000000000 Z
11
+ date: 2018-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -118,6 +118,9 @@ files:
118
118
  - lib/yard2steep/engine.rb
119
119
  - lib/yard2steep/gen.rb
120
120
  - lib/yard2steep/parser.rb
121
+ - lib/yard2steep/type.rb
122
+ - lib/yard2steep/type/ast.rb
123
+ - lib/yard2steep/type/parser.rb
121
124
  - lib/yard2steep/util.rb
122
125
  - lib/yard2steep/version.rb
123
126
  - sig/steep-scaffold/td.rbi
@@ -134,6 +137,9 @@ files:
134
137
  - sig/yard2steep/yard2steep/engine.rbi
135
138
  - sig/yard2steep/yard2steep/gen.rbi
136
139
  - sig/yard2steep/yard2steep/parser.rbi
140
+ - sig/yard2steep/yard2steep/type.rbi
141
+ - sig/yard2steep/yard2steep/type/ast.rbi
142
+ - sig/yard2steep/yard2steep/type/parser.rbi
137
143
  - sig/yard2steep/yard2steep/util.rbi
138
144
  - sig/yard2steep/yard2steep/version.rbi
139
145
  - yard2steep.gemspec