blood 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/blood/version.rb +1 -1
- data/lib/blood.rb +44 -3
- 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: 761ec35533a1ca239737387f6db021aff647615513d94f3a863d544cff6f829d
|
4
|
+
data.tar.gz: 77c985d7880aa0ec40a88ad5835b666cffbbae181e31c7c2bee9be1696ad8a33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 913f867664ab4c5ea34c16a07ac93128007cff92f3d9d5f0b817e814cf2e7d6488063d6d227187cbdd4d3e891bcafe829f09d033cb842d7b67c44fbf4bdd0e3c
|
7
|
+
data.tar.gz: e18c7a9b0152137dbef1cbb6efd06fba6bd2f33482866082db6ab228ec3f28c2322d882490ab27017acfcf7c95b8d7daa55da6daf7683d496f924b67594778da
|
data/Gemfile.lock
CHANGED
data/lib/blood/version.rb
CHANGED
data/lib/blood.rb
CHANGED
@@ -9,7 +9,13 @@ module Blood
|
|
9
9
|
def self.source(mods)
|
10
10
|
hier = Hash.new{ |h, k| h[k] = Set.new }
|
11
11
|
mods.each do |mod|
|
12
|
-
|
12
|
+
# maybe [Class, [Module, Module], ...]
|
13
|
+
ances = mod.ancestors.reduce([]) do |arr, a|
|
14
|
+
next arr << a if Class === a
|
15
|
+
arr << Modules.new unless Modules === arr[-1]
|
16
|
+
arr[-1].add(a)
|
17
|
+
arr
|
18
|
+
end
|
13
19
|
ances.each_with_index do |child, i|
|
14
20
|
parent = ances[i + 1]
|
15
21
|
hier[parent] << child
|
@@ -18,6 +24,26 @@ module Blood
|
|
18
24
|
Node.new(BasicObject, hier)
|
19
25
|
end
|
20
26
|
|
27
|
+
class Modules
|
28
|
+
def add(mod)
|
29
|
+
(@mods ||= []) << mod
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_s
|
33
|
+
@to_s ||= (@mods.count == 1 ? @mods[0].to_s : @mods.to_s)
|
34
|
+
end
|
35
|
+
|
36
|
+
alias_method :name, :to_s
|
37
|
+
|
38
|
+
def hash
|
39
|
+
to_s.hash
|
40
|
+
end
|
41
|
+
|
42
|
+
def eql?(other)
|
43
|
+
to_s.eql?(other.to_s)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
21
47
|
class Node
|
22
48
|
include TreeHtml
|
23
49
|
|
@@ -27,16 +53,31 @@ module Blood
|
|
27
53
|
end
|
28
54
|
|
29
55
|
def label_for_tree_html
|
30
|
-
name = ::CGI.escapeHTML(@mod.to_s)
|
56
|
+
name = ::CGI.escapeHTML(@mod.name || @mod.to_s)
|
31
57
|
Class === @mod ? "<span class='hl'>#{name}</span>" : name
|
32
58
|
end
|
33
59
|
|
60
|
+
NORMAL_NAME = /^[A-Z][A-Za-z0-9]*(::[A-Z][A-Za-z0-9]*)*$/
|
61
|
+
|
62
|
+
if Module.method_defined?(:const_source_location)
|
63
|
+
alias_method :raw_label_for_tree_html, :label_for_tree_html
|
64
|
+
|
65
|
+
def label_for_tree_html
|
66
|
+
return raw_label_for_tree_html if Modules === @mod
|
67
|
+
return raw_label_for_tree_html unless @mod.name =~ NORMAL_NAME
|
68
|
+
loc = Module.const_source_location(@mod.name)
|
69
|
+
return raw_label_for_tree_html unless loc
|
70
|
+
loc = ::CGI.escapeHTML(loc.join(':'))
|
71
|
+
"#{raw_label_for_tree_html} <span class='sd'>#{loc}</span>"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
34
75
|
def children_for_tree_html
|
35
76
|
children.map{ |sub| Node.new(sub, @hier) }
|
36
77
|
end
|
37
78
|
|
38
79
|
def css_for_tree_html
|
39
|
-
'.hl{color: #cc342d;}'
|
80
|
+
'.hl{color: #cc342d;} .sd{color: #9e9e9e;}'
|
40
81
|
end
|
41
82
|
|
42
83
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blood
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ken
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tree_html
|