yard2steep 0.1.3 → 0.2.0
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 +4 -4
- data/.travis.yml +5 -2
- data/Gemfile.lock +1 -1
- data/README.md +4 -1
- data/example/sample1/lib/example1.rb +3 -1
- data/example/sample1/sig/example1.rbi +4 -0
- data/lib/yard2steep/ast/class_node.rb +13 -9
- data/lib/yard2steep/parser.rb +65 -15
- data/lib/yard2steep/version.rb +1 -1
- data/sig/steep-scaffold/td.rbi +6 -1
- data/sig/yard2steep/yard2steep/parser.rbi +5 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d4e6a8130a1312dc38b74c326380d9e23f5e15ef536f5486b335694af8adc4e
|
4
|
+
data.tar.gz: be238532e8c75224380d54a5494b27cf3578122b4fe59f4f454609bbf309ada2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b52ffb2e6478def16ea64c5d9e68d46d54084f318376fbe2dc38f7f1be5fe87ae2750cf31d37c1edc76473ba2cd42257c43aba53df9453d8991c047e84c3d72
|
7
|
+
data.tar.gz: 778099a6c15f9fa648921f909236eebf5fceae28b2b2455188370269144e23f1b0c079377942666452b7dbb682f763ffc03d3c285c8fdfd0ac61b5037c36af46
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# Yard2steep
|
2
2
|
|
3
|
+
[](https://travis-ci.org/south37/yard2steep)
|
4
|
+
[](https://badge.fury.io/rb/yard2steep)
|
5
|
+
|
3
6
|
Generate [steep](https://github.com/soutaro/steep) type definition file from yard annotation.
|
4
7
|
|
5
|
-
:warning: **This is highly experimental project
|
8
|
+
:warning: **This is highly experimental project.**
|
6
9
|
|
7
10
|
## Installation
|
8
11
|
|
@@ -13,9 +13,11 @@ end
|
|
13
13
|
# @param [Array] contents
|
14
14
|
|
15
15
|
class SomeClass
|
16
|
-
# @dynamic index, comment
|
16
|
+
# @dynamic index, index=, comment, count, count=
|
17
17
|
attr_reader :index
|
18
|
+
attr_writer :index
|
18
19
|
attr_reader("comment")
|
20
|
+
attr_accessor :count
|
19
21
|
end
|
20
22
|
|
21
23
|
module SomeModule
|
@@ -28,14 +28,15 @@ module Yard2steep
|
|
28
28
|
parent.is_a?(AST::ClassNode) ||
|
29
29
|
(parent == nil && c_name == 'main')
|
30
30
|
}
|
31
|
-
@kind
|
32
|
-
@c_name
|
33
|
-
@super_c
|
34
|
-
@c_list
|
35
|
-
@m_list
|
36
|
-
@ivar_list
|
37
|
-
@
|
38
|
-
@
|
31
|
+
@kind = kind
|
32
|
+
@c_name = c_name
|
33
|
+
@super_c = super_c
|
34
|
+
@c_list = [] # list of constants
|
35
|
+
@m_list = [] # list of methods
|
36
|
+
@ivar_list = [] # list of instance variables
|
37
|
+
@ivarname_s = Set.new
|
38
|
+
@children = [] # list of child classes
|
39
|
+
@parent = parent
|
39
40
|
end
|
40
41
|
|
41
42
|
# @param [AST::ConstantNode] c
|
@@ -53,7 +54,10 @@ module Yard2steep
|
|
53
54
|
# @param [AST::IVarNode] ivar
|
54
55
|
# @return [void]
|
55
56
|
def append_ivar(ivar)
|
56
|
-
|
57
|
+
if !@ivarname_s.include?(ivar.name)
|
58
|
+
@ivar_list.push(ivar)
|
59
|
+
@ivarname_s << ivar.name
|
60
|
+
end
|
57
61
|
end
|
58
62
|
|
59
63
|
# @param [AST::ClassNode] child
|
data/lib/yard2steep/parser.rb
CHANGED
@@ -516,11 +516,9 @@ module Yard2steep
|
|
516
516
|
when "attr_reader"
|
517
517
|
parse_attr_reader(parse_command_args_add_block(r_ast[2]))
|
518
518
|
when "attr_writer"
|
519
|
-
|
520
|
-
# parse_attr_writer(parse_command_args_add_block(r_ast[2]))
|
519
|
+
parse_attr_writer(parse_command_args_add_block(r_ast[2]))
|
521
520
|
when "attr_accessor"
|
522
|
-
|
523
|
-
# parse_attr_accessor(parse_command_args_add_block(r_ast[2]))
|
521
|
+
parse_attr_accessor(parse_command_args_add_block(r_ast[2]))
|
524
522
|
end
|
525
523
|
|
526
524
|
# Do nothing for other case
|
@@ -605,17 +603,15 @@ module Yard2steep
|
|
605
603
|
when "attr_reader"
|
606
604
|
parse_attr_reader(parse_command_args_add_block(r_ast[2][1]))
|
607
605
|
when "attr_writer"
|
608
|
-
|
609
|
-
# parse_attr_writer(parse_command_args_add_block(r_ast[2][1]))
|
606
|
+
parse_attr_writer(parse_command_args_add_block(r_ast[2][1]))
|
610
607
|
when "attr_accessor"
|
611
|
-
|
612
|
-
# parse_attr_accessor(parse_command_args_add_block(r_ast[2][1]))
|
608
|
+
parse_attr_accessor(parse_command_args_add_block(r_ast[2][1]))
|
613
609
|
end
|
614
610
|
# Do nothing for other case
|
615
611
|
end
|
616
612
|
end
|
617
613
|
|
618
|
-
# @param [Array<String>]
|
614
|
+
# @param [Array<String>] ivars
|
619
615
|
# @return [void]
|
620
616
|
def parse_attr_reader(ivars)
|
621
617
|
ivars.each do |ivarname|
|
@@ -625,17 +621,71 @@ module Yard2steep
|
|
625
621
|
)
|
626
622
|
)
|
627
623
|
|
628
|
-
# NOTE:
|
629
|
-
@current_class.append_m(
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
624
|
+
# NOTE: attr_reader should add a getter method
|
625
|
+
@current_class.append_m(getter_method_node(ivarname))
|
626
|
+
end
|
627
|
+
end
|
628
|
+
|
629
|
+
# @param [Array<String>] ivars
|
630
|
+
# @return [void]
|
631
|
+
def parse_attr_writer(ivars)
|
632
|
+
ivars.each do |ivarname|
|
633
|
+
@current_class.append_ivar(
|
634
|
+
AST::IVarNode.new(
|
635
|
+
name: ivarname
|
636
|
+
)
|
637
|
+
)
|
638
|
+
|
639
|
+
# NOTE: attr_writer should add a setter method
|
640
|
+
@current_class.append_m(setter_method_node(ivarname))
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
644
|
+
# @param [Array<String>] ivars
|
645
|
+
# @return [void]
|
646
|
+
def parse_attr_accessor(ivars)
|
647
|
+
ivars.each do |ivarname|
|
648
|
+
@current_class.append_ivar(
|
649
|
+
AST::IVarNode.new(
|
650
|
+
name: ivarname
|
634
651
|
)
|
635
652
|
)
|
653
|
+
|
654
|
+
# NOTE: attr_accessor should add getter and setter methods
|
655
|
+
@current_class.append_m(getter_method_node(ivarname))
|
656
|
+
@current_class.append_m(setter_method_node(ivarname))
|
636
657
|
end
|
637
658
|
end
|
638
659
|
|
660
|
+
# @param [String] ivarname
|
661
|
+
# @return [AST::MethodNode]
|
662
|
+
def getter_method_node(ivarname)
|
663
|
+
AST::MethodNode.new(
|
664
|
+
p_list: [],
|
665
|
+
r_type: ANY_TYPE,
|
666
|
+
m_name: ivarname,
|
667
|
+
)
|
668
|
+
end
|
669
|
+
|
670
|
+
# @param [String] ivarname
|
671
|
+
# @return [AST::MethodNode]
|
672
|
+
def setter_method_node(ivarname)
|
673
|
+
AST::MethodNode.new(
|
674
|
+
p_list: [
|
675
|
+
AST::PNode.new(
|
676
|
+
type_node: AST::PTypeNode.new(
|
677
|
+
p_type: ANY_TYPE,
|
678
|
+
p_name: '',
|
679
|
+
kind: AST::PTypeNode::KIND[:normal],
|
680
|
+
),
|
681
|
+
style: AST::PNode::STYLE[:normal],
|
682
|
+
)
|
683
|
+
],
|
684
|
+
r_type: ANY_TYPE,
|
685
|
+
m_name: "#{ivarname}=",
|
686
|
+
)
|
687
|
+
end
|
688
|
+
|
639
689
|
##
|
640
690
|
# Helper
|
641
691
|
|
data/lib/yard2steep/version.rb
CHANGED
data/sig/steep-scaffold/td.rbi
CHANGED
@@ -49,6 +49,10 @@ class Yard2steep::Parser
|
|
49
49
|
def parse_command_args_add_block: (any) -> any
|
50
50
|
def parse_method_add_arg: (any) -> void
|
51
51
|
def parse_attr_reader: (any) -> any
|
52
|
+
def parse_attr_writer: (any) -> any
|
53
|
+
def parse_attr_accessor: (any) -> any
|
54
|
+
def getter_method_node: (any) -> any
|
55
|
+
def setter_method_node: (any) -> any
|
52
56
|
def debug_print!: (any) -> void
|
53
57
|
def type_node: (any) -> any
|
54
58
|
def block_type_node: (any) -> any
|
@@ -163,6 +167,7 @@ class Yard2steep::AST::ClassNode
|
|
163
167
|
@c_list: any
|
164
168
|
@m_list: any
|
165
169
|
@ivar_list: any
|
170
|
+
@ivarname_s: any
|
166
171
|
@children: any
|
167
172
|
@parent: any
|
168
173
|
@long_name: any
|
@@ -170,7 +175,7 @@ class Yard2steep::AST::ClassNode
|
|
170
175
|
def initialize: (kind: any, c_name: any, super_c: any, parent: any) -> any
|
171
176
|
def append_constant: (any) -> any
|
172
177
|
def append_m: (any) -> any
|
173
|
-
def append_ivar: (any) ->
|
178
|
+
def append_ivar: (any) -> void
|
174
179
|
def append_child: (any) -> any
|
175
180
|
def long_name: () -> any
|
176
181
|
def long_super: () -> any
|
@@ -19,7 +19,11 @@ class Yard2steep::Parser
|
|
19
19
|
def parse_command: (Array<any>) -> void
|
20
20
|
def parse_command_args_add_block: (Array<any>) -> Array<String>
|
21
21
|
def parse_method_add_arg: (Array<any>) -> void
|
22
|
-
def parse_attr_reader: (
|
22
|
+
def parse_attr_reader: (Array<String>) -> void
|
23
|
+
def parse_attr_writer: (Array<String>) -> void
|
24
|
+
def parse_attr_accessor: (Array<String>) -> void
|
25
|
+
def getter_method_node: (String) -> AST::MethodNode
|
26
|
+
def setter_method_node: (String) -> AST::MethodNode
|
23
27
|
def debug_print!: (String) -> void
|
24
28
|
def type_node: (String) -> AST::PTypeNode
|
25
29
|
def block_type_node: (String) -> AST::PTypeNode
|
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.
|
4
|
+
version: 0.2.0
|
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-07-
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|