Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions data/bitclust/catalog/ja_JP.UTF-8
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ Private Instance Methods
privateメソッド
Protected Instance Methods
protectedメソッド
Redefined Methods
再定義されたメソッド
Private Singleton Methods
private特異メソッド
Required Libraries
Expand Down
1 change: 1 addition & 0 deletions data/bitclust/template.epub/class
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
[_('Private Instance Methods'), ents.private_instance_methods ],
[_('Protected Instance Methods'),ents.protected_instance_methods ],
[_('Module Functions'), ents.module_functions ],
[_('Redefined Methods'), ents.redefined ],
[_('Constants'), ents.constants ],
[_('Special Variables'), ents.special_variables ,'$']] %>
<%= headline(_("Index")) %>
Expand Down
1 change: 1 addition & 0 deletions data/bitclust/template.lillia/class
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
[_('Module Functions'), ents.module_functions ],
[_('Constants'), ents.constants ],
[_('Special Variables'), ents.special_variables ],
[_('Redefined Methods'), ents.redefined ],
[_('Added Methods'), ents.added ] ]\
.each do |label, entries|
unless entries.empty? %>
Expand Down
5 changes: 3 additions & 2 deletions data/bitclust/template.offline/class
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
[_('Private Instance Methods'), ents.private_instance_methods ],
[_('Protected Instance Methods'),ents.protected_instance_methods ],
[_('Module Functions'), ents.module_functions ],
[_('Redefined Methods'), ents.redefined ],
[_('Undefined Methods for Explanation'), ents.nomethod ],
[_('Constants'), ents.constants ],
[_('Special Variables'), ents.special_variables ,'$']] %>
Expand All @@ -148,8 +149,8 @@

<%
_myself, *ancestors = @entry.ancestors.reject { |c| %w[Object Kernel BasicObject].include?(c.name) }
displayed_instance_methods = Set.new(ents.instance_methods.flat_map(&:names))
displayed_singleton_methods = Set.new(ents.singleton_methods.flat_map(&:names))
displayed_instance_methods = Set.new((ents.instance_methods + ents.redefined.select(&:instance_method?)).flat_map(&:names))
displayed_singleton_methods = Set.new((ents.singleton_methods + ents.redefined.select(&:singleton_method?)).flat_map(&:names))
undefined_methods = @entry.partitioned_entries.undefined
undefined_instance_methods = undefined_methods.select(&:instance_method?)
undefined_singleton_methods = undefined_methods.select(&:singleton_method?)
Expand Down
35 changes: 35 additions & 0 deletions data/bitclust/template/class
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,41 @@
</code></p>
<% end %>

<%
[[_('Redefined Methods'), ents.redefined]]\
.each do |label, entries|
unless entries.empty? %>
<%= headline(label) %>
<table class="entries methods">
<tr>
<th><%= _('Signature') %></th>
<th><%= _('Description') %></th>
<th><%= _('Library') %></th>
</tr>
<%
headline_push
entries.each do |m|
foreach_method_chunk(m.source) do |sigs, src| %>
<tr>
<td class="signature">
<a href="<%=h method_url(m.spec_string) %>"><code>
<%= sigs.map {|sig| h(sig.friendly_string) }.join("<br>") %>
</code></a>
</td>
<td class="description"><%= compile_rd(src) %></td>
<td class="library"><%= library_link(m.library.name) %></td>
</tr>
<%
end
end
headline_pop
%>
</table>
<%
end
end
%>

<%
[[_('Added Methods'), ents.added]]\
.each do |label, entries|
Expand Down
9 changes: 7 additions & 2 deletions lib/bitclust/classentry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ def add_method(m)
:instance_methods, :private_instance_methods, :protected_instance_methods,
:module_functions,
:constants, :special_variables,
:redefined,
:added, :undefined, :nomethod)

def partitioned_entries(level = 0)
Expand All @@ -268,19 +269,21 @@ def partitioned_entries(level = 0)
# @type var mf: Array[MethodEntry]
# @type var c: Array[MethodEntry]
# @type var v: Array[MethodEntry]
# @type var redefined: Array[MethodEntry]
# @type var added: Array[MethodEntry]
# @type var undefined: Array[MethodEntry]
# @type var nomethod: Array[MethodEntry]
s = []; spv = []
i = []; ipv = []; ipt = []
mf = []
c = []; v = []
redefined = []
added = []
undefined = []
nomethod = []
entries(level).sort_by(&:name).each do |m|
case m.kind
when :defined, :redefined
when :defined
case m.type
when :singleton_method
(m.public? ? s : spv).push m
Expand All @@ -297,6 +300,8 @@ def partitioned_entries(level = 0)
else
raise "must not happen: m.type=#{m.type.inspect} (#{m.inspect})"
end
when :redefined
redefined.push m
when :added
added.push m
when :undefined
Expand All @@ -306,7 +311,7 @@ def partitioned_entries(level = 0)
end
end
# steep:ignore:start
Parts.new(s,spv, i,ipv,ipt, mf, c, v, added, undefined, nomethod)
Parts.new(s,spv, i,ipv,ipt, mf, c, v, redefined, added, undefined, nomethod)
# steep:ignore:end
end

Expand Down
2 changes: 2 additions & 0 deletions sig/bitclust/classentry.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ module BitClust
attr_accessor module_functions: Array[MethodEntry]
attr_accessor constants: Array[MethodEntry]
attr_accessor special_variables: Array[MethodEntry]
attr_accessor redefined: Array[MethodEntry]
attr_accessor added: Array[MethodEntry]
attr_accessor undefined: Array[MethodEntry]
attr_accessor nomethod: Array[MethodEntry]
Expand All @@ -106,6 +107,7 @@ module BitClust
Array[MethodEntry] instance_methods, Array[MethodEntry] private_instance_methods, Array[MethodEntry] protected_instance_methods,
Array[MethodEntry] module_functions,
Array[MethodEntry] constants, Array[MethodEntry] special_variables,
Array[MethodEntry] redefined,
Array[MethodEntry] added, Array[MethodEntry] undefined, Array[MethodEntry] nomethod) -> void
end

Expand Down
10 changes: 10 additions & 0 deletions test/test_class_screen.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ class TestClassScreen < Test::Unit::TestCase
--- explanatory_method
{: nomethod}
説明のために記載しているメソッドです。

= redefine Sub
== Instance Methods
--- redefined_instance_method
redefined instance method
HERE

def setup
Expand Down Expand Up @@ -93,4 +98,9 @@ def test_ancestor_instance_methods_include_modules
assert_include(@html, 'Mixinから継承しているメソッド')
assert_include(@html, 'mixin_instance_method')
end

def test_redefined_method_is_listed_in_its_own_section
assert_include(@html, '再定義されたメソッド')
assert_include(@html, 'redefined_instance_method')
end
end
19 changes: 19 additions & 0 deletions test/test_entry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,25 @@ def test_nomethod_is_partitioned_separately
assert_equal([], parts.instance_methods.map(&:name))
end

def test_redefined_is_partitioned_separately
klass = parse_class(<<HERE)
= class Hoge
== Instance Methods
--- bar

説明です。

= redefine Hoge
== Instance Methods
--- baz

再定義の説明です。
HERE
parts = klass.partitioned_entries
assert_equal(['baz'], parts.redefined.map(&:name))
assert_equal(['bar'], parts.instance_methods.map(&:name))
end

def test_description_skips_leading_metadata_paragraph
klass = parse_class(<<HERE)
= class Hoge
Expand Down
Loading