yard2steep 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/south37/yard2steep.svg?branch=master)](https://travis-ci.org/south37/yard2steep)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/yard2steep.svg)](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
|