yard_ast_editable 0.1.0 → 0.1.2
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.
- data/VERSION +1 -1
- data/lib/yard_ast_editable.rb +24 -0
- data/spec/yard_ast_editable_spec.rb +28 -0
- data/yard_ast_editable.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/yard_ast_editable.rb
CHANGED
@@ -24,6 +24,20 @@ module YardAstEditable
|
|
24
24
|
@arguments.pop if @arguments.last == false
|
25
25
|
@arguments
|
26
26
|
end
|
27
|
+
|
28
|
+
def block_content_source
|
29
|
+
return nil unless block
|
30
|
+
result = block.source
|
31
|
+
case block.type
|
32
|
+
when :do_block then
|
33
|
+
result.sub!(/^do\s*(\|.*?\|)?\n?/, '')
|
34
|
+
result.sub!(/end$/, '')
|
35
|
+
when :brace_block then
|
36
|
+
result.sub!(/^\{\s*(\|.*?\|)?\n?/, '')
|
37
|
+
result.sub!(/\}$/, '')
|
38
|
+
end
|
39
|
+
result
|
40
|
+
end
|
27
41
|
end
|
28
42
|
|
29
43
|
|
@@ -47,6 +61,16 @@ module YardAstEditable
|
|
47
61
|
nil
|
48
62
|
end
|
49
63
|
|
64
|
+
# def children_source
|
65
|
+
# ranges = children.map{|c| [c.comments_range, c.source_range] }.flatten.compact
|
66
|
+
# min_range = ranges.min_by(&:first)
|
67
|
+
# max_range = ranges.max_by(&:last)
|
68
|
+
# puts "min_range: #{min_range.inspect}"
|
69
|
+
# puts "max_range: #{max_range.inspect}"
|
70
|
+
# full_source[min_range.first..max_range.last]
|
71
|
+
# end
|
72
|
+
|
73
|
+
|
50
74
|
def replace_source(node, new_source)
|
51
75
|
result = full_source.dup
|
52
76
|
result[node.source_range] = new_source
|
@@ -63,6 +63,34 @@ describe "YardAstEditable" do
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
describe :children_source do
|
67
|
+
|
68
|
+
it "do...endブロックの中身を取得" do
|
69
|
+
node = @ast.fcall_by_ident(:foo1){|fcall|
|
70
|
+
fcall.arguments.length == 2 && (n = fcall.arguments.first; n.source == ":name2")
|
71
|
+
}
|
72
|
+
fcall = YardAstEditable::Fcall.new(node)
|
73
|
+
fcall.block_content_source.should == %q{ # bar1 #3 S
|
74
|
+
bar1{ puts "name2 bar1" }
|
75
|
+
# bar1 #3 E
|
76
|
+
}
|
77
|
+
end
|
78
|
+
|
79
|
+
it "{}ブロックの中身を取得" do
|
80
|
+
node = @ast.fcall_by_ident(:bar1){|fcall|
|
81
|
+
fcall.arguments.length == 1 && (n = fcall.arguments.first; n.source == '"name2"')
|
82
|
+
}
|
83
|
+
fcall = YardAstEditable::Fcall.new(node)
|
84
|
+
fcall.block_content_source.should == %q{ # b2 S
|
85
|
+
puts b2.inspect
|
86
|
+
# b2 E
|
87
|
+
}
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
|
66
94
|
describe :replace_source do
|
67
95
|
it "全体に対して一部を置換" do
|
68
96
|
node = @ast.fcall_by_ident(:foo1){|fcall|
|
data/yard_ast_editable.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{yard_ast_editable}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["akimatter"]
|
12
|
-
s.date = %q{2010-12-
|
12
|
+
s.date = %q{2010-12-06}
|
13
13
|
s.description = %q{yard extension to modify source code by using AST Node}
|
14
14
|
s.email = %q{akm2000@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- akimatter
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-06 00:00:00 +09:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
126
|
requirements:
|
127
127
|
- - ">="
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
hash:
|
129
|
+
hash: 3450069555588162524
|
130
130
|
segments:
|
131
131
|
- 0
|
132
132
|
version: "0"
|