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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c73af6e853cf9a9ccbfecd66f87167be4f6437a2
4
- data.tar.gz: 644e9a8d84252da3aeb417c52cdc37ac5c598d1f
3
+ metadata.gz: 19819d5f51980cf2b7fd66efa28292b538e88673
4
+ data.tar.gz: 227a86065f2a8ab92b589505eb36b9c4d65a71a3
5
5
  SHA512:
6
- metadata.gz: a3fee22947295cf8a8aa168c63edf91f6c19d91ed967fac419d5371ab5a6970694a9f9ec039a3f3244218f8a15a2d05c5ad8ea6d1bd6e6c04bff4ece7f3089e9
7
- data.tar.gz: f1a827ac8faf66d3609ac2f52cf54508d856b053c1950fb427c9ff4b3ef3886ab319b8f74d114d425aad18b66f9c599b722658e67f9a3ac3a067ffd4bb377b55
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.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.12.5
24
+ 1.14.5
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task default: :test
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)
@@ -1,4 +1,4 @@
1
- require 'parser/factory'
1
+ require 'rubrowser/parser/factory'
2
2
 
3
3
  module Rubrowser
4
4
  class Data
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- require 'parser/definition/base'
1
+ require 'rubrowser/parser/definition/base'
2
2
 
3
3
  module Rubrowser
4
4
  module Parser
@@ -1,4 +1,4 @@
1
- require 'parser/definition/base'
1
+ require 'rubrowser/parser/definition/base'
2
2
 
3
3
  module Rubrowser
4
4
  module Parser
File without changes
@@ -1,5 +1,5 @@
1
- require 'parser/file'
2
- require 'parser/directory'
1
+ require 'rubrowser/parser/file'
2
+ require 'rubrowser/parser/directory'
3
3
 
4
4
  module Rubrowser
5
5
  module Parser
@@ -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 file_valid?(file)
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 file_valid?(file)
32
+ def valid_file?(file)
33
33
  !::File.symlink?(file) &&
34
34
  ::File.file?(file) &&
35
35
  ::File.size(file) <= FILE_SIZE_LIMIT
@@ -1,4 +1,4 @@
1
- require 'parser/definition/base'
1
+ require 'rubrowser/parser/definition/base'
2
2
 
3
3
  module Rubrowser
4
4
  module Parser
@@ -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("../..#{path}", __FILE__)
64
+ File.expand_path("../../..#{path}", __FILE__)
65
65
  end
66
66
  end
67
67
  end
@@ -0,0 +1,3 @@
1
+ module Rubrowser
2
+ VERSION = '0.2.3'.freeze
3
+ end
data/lib/rubrowser.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'rubrowser/version'
2
+
1
3
  module Rubrowser
2
- VERSION = '0.2.2'.freeze
3
4
  end
@@ -74,7 +74,7 @@ text.type{
74
74
  }
75
75
 
76
76
  .panel .title{
77
- padding: 20px 10px;
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: #eee;
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
  }
@@ -155,4 +155,5 @@ var parseGraph = function(data){
155
155
  node: node,
156
156
  link: link
157
157
  };
158
+ $(document).trigger('graph-rendered');
158
159
  };
@@ -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
- $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
- require 'rubrowser'
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 = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
15
- s.require_paths = ['../lib']
16
- s.executables << 'rubrowser'
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.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emad Elsaid
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-02 00:00:00.000000000 Z
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/server.rb
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
- - "../lib"
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.3
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: