rubrowser 0.2.2 → 0.2.3
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/Gemfile.lock +5 -2
- data/Rakefile +10 -0
- data/bin/rubrowser +1 -1
- data/lib/{data.rb → rubrowser/data.rb} +1 -1
- data/lib/{formatter → rubrowser/formatter}/json.rb +0 -0
- data/lib/{parser → rubrowser/parser}/definition/base.rb +0 -0
- data/lib/{parser → rubrowser/parser}/definition/class.rb +1 -1
- data/lib/{parser → rubrowser/parser}/definition/module.rb +1 -1
- data/lib/{parser → rubrowser/parser}/directory.rb +0 -0
- data/lib/{parser → rubrowser/parser}/factory.rb +2 -2
- data/lib/{parser → rubrowser/parser}/file.rb +5 -5
- data/lib/{parser → rubrowser/parser}/relation/base.rb +1 -1
- data/lib/{server.rb → rubrowser/server.rb} +3 -3
- data/lib/rubrowser/version.rb +3 -0
- data/lib/rubrowser.rb +2 -1
- data/public/css/application.css +12 -2
- data/public/javascript/application.js +1 -0
- data/public/javascript/toolbox.js +45 -0
- data/readme.md +4 -0
- data/rubrowser.gemspec +11 -5
- data/views/index.erb +6 -0
- metadata +46 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19819d5f51980cf2b7fd66efa28292b538e88673
|
4
|
+
data.tar.gz: 227a86065f2a8ab92b589505eb36b9c4d65a71a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1de2e39e23cc3621022d63e58fbba3cd8e1f0bdf580462a15ac6fe31b54e643bb73f4eb3055c9f983bc402f877ccc58518f795bf6a13bc41bbda600a4f2ca7d0
|
7
|
+
data.tar.gz: 5b2ec70e1227e1ff09934587849f793775f4100f32787b51715d0631240b28c107b170ac61951318af74bcf922687b02ed32c25d12a4e5788cc6391a3be7afb9
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubrowser (0.2.
|
4
|
+
rubrowser (0.2.3)
|
5
5
|
parser (~> 2.3, >= 2.3.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -10,12 +10,15 @@ GEM
|
|
10
10
|
ast (2.3.0)
|
11
11
|
parser (2.3.1.2)
|
12
12
|
ast (~> 2.2)
|
13
|
+
rake (10.4.2)
|
13
14
|
|
14
15
|
PLATFORMS
|
15
16
|
ruby
|
16
17
|
|
17
18
|
DEPENDENCIES
|
19
|
+
bundler (~> 1.14)
|
20
|
+
rake (~> 10.0)
|
18
21
|
rubrowser!
|
19
22
|
|
20
23
|
BUNDLED WITH
|
21
|
-
1.
|
24
|
+
1.14.5
|
data/Rakefile
ADDED
data/bin/rubrowser
CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.push File.expand_path('../../lib', __FILE__)
|
|
3
3
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'rubrowser'
|
6
|
+
require 'rubrowser/server'
|
6
7
|
|
7
8
|
OPTIONS = {
|
8
9
|
port: 9000,
|
@@ -27,5 +28,4 @@ OptionParser.new do |opts|
|
|
27
28
|
end
|
28
29
|
end.parse!
|
29
30
|
|
30
|
-
require 'server'
|
31
31
|
Rubrowser::Server.start(OPTIONS)
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'parser/current'
|
2
|
-
require 'parser/definition/class'
|
3
|
-
require 'parser/definition/module'
|
4
|
-
require 'parser/relation/base'
|
2
|
+
require 'rubrowser/parser/definition/class'
|
3
|
+
require 'rubrowser/parser/definition/module'
|
4
|
+
require 'rubrowser/parser/relation/base'
|
5
5
|
|
6
6
|
module Rubrowser
|
7
7
|
module Parser
|
@@ -17,7 +17,7 @@ module Rubrowser
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def parse
|
20
|
-
if
|
20
|
+
if valid_file?(file)
|
21
21
|
code = ::File.read(file)
|
22
22
|
ast = ::Parser::CurrentRuby.parse(code)
|
23
23
|
constants = parse_block(ast)
|
@@ -29,7 +29,7 @@ module Rubrowser
|
|
29
29
|
warn "SyntaxError in #{file}"
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def valid_file?(file)
|
33
33
|
!::File.symlink?(file) &&
|
34
34
|
::File.file?(file) &&
|
35
35
|
::File.size(file) <= FILE_SIZE_LIMIT
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'webrick'
|
2
|
-
require 'data'
|
3
|
-
require 'formatter/json'
|
4
2
|
require 'erb'
|
3
|
+
require 'rubrowser/data'
|
4
|
+
require 'rubrowser/formatter/json'
|
5
5
|
|
6
6
|
module Rubrowser
|
7
7
|
class Server < WEBrick::HTTPServer
|
@@ -61,7 +61,7 @@ module Rubrowser
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def resolve_file_path(path)
|
64
|
-
File.expand_path("
|
64
|
+
File.expand_path("../../..#{path}", __FILE__)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
data/lib/rubrowser.rb
CHANGED
data/public/css/application.css
CHANGED
@@ -74,7 +74,7 @@ text.type{
|
|
74
74
|
}
|
75
75
|
|
76
76
|
.panel .title{
|
77
|
-
padding:
|
77
|
+
padding: 10px;
|
78
78
|
font-weight: bold;
|
79
79
|
text-transform: uppercase;
|
80
80
|
cursor: pointer;
|
@@ -84,10 +84,11 @@ text.type{
|
|
84
84
|
-webkit-user-select: none;
|
85
85
|
-ms-user-select: none;
|
86
86
|
user-select: none;
|
87
|
+
background: #eee;
|
87
88
|
}
|
88
89
|
|
89
90
|
.panel .title:hover{
|
90
|
-
background: #
|
91
|
+
background: #ddd;
|
91
92
|
}
|
92
93
|
|
93
94
|
.panel .content{
|
@@ -116,4 +117,13 @@ text.type{
|
|
116
117
|
width: 100%;
|
117
118
|
max-width: 100%;
|
118
119
|
display: block;
|
120
|
+
}
|
121
|
+
|
122
|
+
ul, ol{
|
123
|
+
list-style-position: inside;
|
124
|
+
white-space: nowrap;
|
125
|
+
margin: 0px;
|
126
|
+
padding-left: 0px;
|
127
|
+
max-width: 100%;
|
128
|
+
overflow: auto;
|
119
129
|
}
|
@@ -2,6 +2,51 @@ $(document).on('click', '.panel .title', function(){
|
|
2
2
|
$(this).siblings().toggle();
|
3
3
|
});
|
4
4
|
|
5
|
+
// --------------------------------
|
6
|
+
// Details Panel
|
7
|
+
// --------------------------------
|
8
|
+
$(document).on('graph-rendered', function(){
|
9
|
+
rubrowser.node.on('click', function(d){
|
10
|
+
var namespace = d.id;
|
11
|
+
var dependents = rubrowser.relations.filter(function(i){ return i.target.id == namespace; });
|
12
|
+
var dependencies = rubrowser.relations.filter(function(i){ return i.source.id == namespace; });
|
13
|
+
var definitions = rubrowser.data.definitions.filter(function(i){ return i.namespace == namespace; });
|
14
|
+
var relations = rubrowser.data.relations.filter(function(i){ return i.resolved_namespace == namespace || i.caller == namespace; });
|
15
|
+
|
16
|
+
var content = $('<div>');
|
17
|
+
content.append('<label><strong>'+namespace+'</strong></label>');
|
18
|
+
|
19
|
+
content.append('<strong>Defined in:</strong>');
|
20
|
+
var definitions_ol = $("<ol>");
|
21
|
+
for(var i=0; i<definitions.length; i++){
|
22
|
+
definitions_ol.append("<li>"+definitions[i].file+":"+definitions[i].line.toString()+"</li>");
|
23
|
+
}
|
24
|
+
content.append(definitions_ol);
|
25
|
+
|
26
|
+
if( dependents.length > 0 ){
|
27
|
+
content.append('<strong>Dependents:</strong>');
|
28
|
+
var dependents_ol = $("<ol>");
|
29
|
+
for(var i=0; i<dependents.length; i++){
|
30
|
+
dependents_ol.append("<li>"+dependents[i].source.id+"</li>");
|
31
|
+
}
|
32
|
+
content.append(dependents_ol);
|
33
|
+
}
|
34
|
+
|
35
|
+
if( dependencies.length > 0 ){
|
36
|
+
content.append('<strong>Dependencies:</strong>');
|
37
|
+
var dependencies_ol = $("<ol>");
|
38
|
+
for(var i=0; i<dependencies.length; i++){
|
39
|
+
dependencies_ol.append("<li>"+dependencies[i].target.id+"</li>");
|
40
|
+
}
|
41
|
+
content.append(dependencies_ol);
|
42
|
+
}
|
43
|
+
|
44
|
+
$('#information_panel').html(content);
|
45
|
+
return true;
|
46
|
+
});
|
47
|
+
});
|
48
|
+
|
49
|
+
|
5
50
|
// --------------------------------
|
6
51
|
// Search Panel
|
7
52
|
// --------------------------------
|
data/readme.md
CHANGED
@@ -56,6 +56,10 @@ it'll analyze the current directory and open port 9000, so you can access the gr
|
|
56
56
|
* highlight node and all related nodes, it'll make it easier for you to see what depends and dependencies of certain class
|
57
57
|
* ignore node by name
|
58
58
|
* ignore nodes of certain type (modules/classes)
|
59
|
+
* hide namespaces
|
60
|
+
* hide relations
|
61
|
+
* change graph appearance (collision radius)
|
62
|
+
* stop animation immediately
|
59
63
|
|
60
64
|
|
61
65
|
## Tests?
|
data/rubrowser.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'rubrowser/version'
|
3
4
|
|
4
5
|
Gem::Specification.new do |s|
|
5
6
|
s.name = 'rubrowser'
|
@@ -11,9 +12,14 @@ Gem::Specification.new do |s|
|
|
11
12
|
s.description = 'A ruby interactive dependency graph visualizer'
|
12
13
|
s.license = 'MIT'
|
13
14
|
|
14
|
-
s.files
|
15
|
-
|
16
|
-
|
15
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
|
+
f.match(%r{^(test|spec|features)/})
|
17
|
+
end
|
18
|
+
s.bindir = 'exe'
|
19
|
+
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
s.require_paths = ['lib']
|
17
21
|
|
18
22
|
s.add_runtime_dependency 'parser', '~> 2.3', '>= 2.3.0'
|
23
|
+
s.add_development_dependency 'bundler', '~> 1.14'
|
24
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
19
25
|
end
|
data/views/index.erb
CHANGED
@@ -13,6 +13,12 @@
|
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
<div class="toolbox">
|
16
|
+
<div class="panel">
|
17
|
+
<div class="title"> Node Details </div>
|
18
|
+
<div class="content" id="information_panel">
|
19
|
+
Please click on any node.
|
20
|
+
</div>
|
21
|
+
</div>
|
16
22
|
<div class="panel">
|
17
23
|
<div class="title"> Search </div>
|
18
24
|
<div class="content">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubrowser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emad Elsaid
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -30,11 +30,38 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.3.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: bundler
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.14'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.14'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '10.0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '10.0'
|
33
61
|
description: A ruby interactive dependency graph visualizer
|
34
62
|
email:
|
35
63
|
- blazeeboy@gmail.com
|
36
|
-
executables:
|
37
|
-
- rubrowser
|
64
|
+
executables: []
|
38
65
|
extensions: []
|
39
66
|
extra_rdoc_files: []
|
40
67
|
files:
|
@@ -43,18 +70,20 @@ files:
|
|
43
70
|
- Gemfile
|
44
71
|
- Gemfile.lock
|
45
72
|
- MIT-LICENSE
|
73
|
+
- Rakefile
|
46
74
|
- bin/rubrowser
|
47
|
-
- lib/data.rb
|
48
|
-
- lib/formatter/json.rb
|
49
|
-
- lib/parser/definition/base.rb
|
50
|
-
- lib/parser/definition/class.rb
|
51
|
-
- lib/parser/definition/module.rb
|
52
|
-
- lib/parser/directory.rb
|
53
|
-
- lib/parser/factory.rb
|
54
|
-
- lib/parser/file.rb
|
55
|
-
- lib/parser/relation/base.rb
|
56
75
|
- lib/rubrowser.rb
|
57
|
-
- lib/
|
76
|
+
- lib/rubrowser/data.rb
|
77
|
+
- lib/rubrowser/formatter/json.rb
|
78
|
+
- lib/rubrowser/parser/definition/base.rb
|
79
|
+
- lib/rubrowser/parser/definition/class.rb
|
80
|
+
- lib/rubrowser/parser/definition/module.rb
|
81
|
+
- lib/rubrowser/parser/directory.rb
|
82
|
+
- lib/rubrowser/parser/factory.rb
|
83
|
+
- lib/rubrowser/parser/file.rb
|
84
|
+
- lib/rubrowser/parser/relation/base.rb
|
85
|
+
- lib/rubrowser/server.rb
|
86
|
+
- lib/rubrowser/version.rb
|
58
87
|
- public/css/application.css
|
59
88
|
- public/javascript/application.js
|
60
89
|
- public/javascript/d3.js
|
@@ -71,7 +100,7 @@ metadata: {}
|
|
71
100
|
post_install_message:
|
72
101
|
rdoc_options: []
|
73
102
|
require_paths:
|
74
|
-
-
|
103
|
+
- lib
|
75
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
105
|
requirements:
|
77
106
|
- - ">="
|
@@ -84,9 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
113
|
version: '0'
|
85
114
|
requirements: []
|
86
115
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.6.
|
116
|
+
rubygems_version: 2.6.10
|
88
117
|
signing_key:
|
89
118
|
specification_version: 4
|
90
119
|
summary: A ruby interactive dependency graph visualizer
|
91
120
|
test_files: []
|
92
|
-
has_rdoc:
|