rubrowser 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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: