deprecations_detector 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +56 -0
- data/.rubocop.yml +22 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +74 -0
- data/Rakefile +28 -0
- data/deprecations_detector.gemspec +38 -0
- data/lib/deprecations_detector/active_support/deprecation_decorator.rb +17 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/application.js +213 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/libraries/jquery-1.6.2.min.js +18 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/plugins/highlight.pack.js +1 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/plugins/jquery.colorbox.js +1090 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/plugins/jquery.dataTables.min.js +152 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/plugins/jquery.timeago.js +141 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/plugins/jquery.url.js +174 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/settings.js +1 -0
- data/lib/deprecations_detector/formatters/html/assets/javascripts/treeview.js +261 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/application.css +4 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/plugins/highlight.css +129 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/plugins/jquery-ui-1.8.4.custom.css +295 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/plugins/jquery.colorbox.css +52 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/reset.css +103 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/screen.css.sass +249 -0
- data/lib/deprecations_detector/formatters/html/assets/stylesheets/treeview.css +12 -0
- data/lib/deprecations_detector/formatters/html/formatter.rb +169 -0
- data/lib/deprecations_detector/formatters/html/public/application.css +852 -0
- data/lib/deprecations_detector/formatters/html/public/application.js +2050 -0
- data/lib/deprecations_detector/formatters/html/public/colorbox/border.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/colorbox/controls.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/colorbox/loading.gif +0 -0
- data/lib/deprecations_detector/formatters/html/public/colorbox/loading_background.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/favicon.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-icons_222222_256x240.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-icons_2e83ff_256x240.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-icons_454545_256x240.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-icons_888888_256x240.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/loading.gif +0 -0
- data/lib/deprecations_detector/formatters/html/public/magnify.png +0 -0
- data/lib/deprecations_detector/formatters/html/public/settings.js +1 -0
- data/lib/deprecations_detector/formatters/html/views/file_list.erb +24 -0
- data/lib/deprecations_detector/formatters/html/views/layout.erb +39 -0
- data/lib/deprecations_detector/formatters/html/views/source_file.erb +24 -0
- data/lib/deprecations_detector/main.rb +113 -0
- data/lib/deprecations_detector/version.rb +5 -0
- data/lib/deprecations_detector.rb +10 -0
- data/lib/tasks/deprecations/combine.rake +30 -0
- data/lib/tasks/deprecations/format.rake +14 -0
- metadata +254 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 14223f744285f1f73bc7453f2de6a42a9a8f87b599393cb67fb9345043be5f14
|
4
|
+
data.tar.gz: e1879d540ed9af626488355929a378cfbb71b83b6b9775411a7420173f65dcfc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 296a9a4345d4aa010f62cd1f967430d3cf40896dbb6361b50fd8b8f8c39e652ce2b44fb464ab91bb78f4c123a786f0702d3dc460d6428b9844457d6eb1ec8dcb
|
7
|
+
data.tar.gz: 14b1e67170d3e0586f6c56e7c9dd9573bc2998895aeb2f792c9afce7252dcc48e03c5c111473744b7f4f8906610652143622ef13181ad995b4a7e886f13fbb68
|
data/.gitignore
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
*.rbc
|
2
|
+
capybara-*.html
|
3
|
+
.rspec
|
4
|
+
.rspec_status
|
5
|
+
.rubocop-*
|
6
|
+
/log
|
7
|
+
/tmp
|
8
|
+
/db/*.sqlite3
|
9
|
+
/db/*.sqlite3-journal
|
10
|
+
/public/system
|
11
|
+
/coverage/
|
12
|
+
/spec/tmp
|
13
|
+
*.orig
|
14
|
+
rerun.txt
|
15
|
+
pickle-email-*.html
|
16
|
+
|
17
|
+
# TODO Comment out this rule if you are OK with secrets being uploaded to the repo
|
18
|
+
config/initializers/secret_token.rb
|
19
|
+
config/master.key
|
20
|
+
|
21
|
+
# Only include if you have production secrets in this file, which is no longer a Rails default
|
22
|
+
# config/secrets.yml
|
23
|
+
|
24
|
+
# dotenv
|
25
|
+
# TODO Comment out this rule if environment variables can be committed
|
26
|
+
.env
|
27
|
+
|
28
|
+
## Environment normalization:
|
29
|
+
/.bundle
|
30
|
+
/vendor/bundle
|
31
|
+
|
32
|
+
# these should all be checked in to normalize the environment:
|
33
|
+
# Gemfile.lock, .ruby-version, .ruby-gemset
|
34
|
+
Gemfile.lock
|
35
|
+
|
36
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
37
|
+
.rvmrc
|
38
|
+
|
39
|
+
# if using bower-rails ignore default bower_components path bower.json files
|
40
|
+
/vendor/assets/bower_components
|
41
|
+
*.bowerrc
|
42
|
+
bower.json
|
43
|
+
|
44
|
+
# Ignore pow environment settings
|
45
|
+
.powenv
|
46
|
+
|
47
|
+
# Ignore Byebug command history file.
|
48
|
+
.byebug_history
|
49
|
+
|
50
|
+
# Ignore node_modules
|
51
|
+
node_modules/
|
52
|
+
|
53
|
+
# Others
|
54
|
+
spec/faked_project/tmp/deprecations_detector.yml
|
55
|
+
|
56
|
+
tmp/
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rspec
|
3
|
+
|
4
|
+
inherit_from:
|
5
|
+
- https://relaxed.ruby.style/rubocop.yml
|
6
|
+
|
7
|
+
Metrics/BlockLength:
|
8
|
+
Exclude:
|
9
|
+
- config/routes.rb
|
10
|
+
- db/seeds/**/*
|
11
|
+
- spec/**/*
|
12
|
+
|
13
|
+
RSpec/MultipleExpectations:
|
14
|
+
Max: 5
|
15
|
+
# Default is 1
|
16
|
+
|
17
|
+
RSpec/ExampleLength:
|
18
|
+
Max: 20
|
19
|
+
# Default is 5
|
20
|
+
|
21
|
+
AllCops:
|
22
|
+
TargetRubyVersion: 1.9
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2019 Nebulab
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2019 Nebulab
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
[![Gem Version](https://badge.fury.io/rb/deprecations_detector.svg)](https://badge.fury.io/rb/deprecations_detector)
|
2
|
+
|
3
|
+
# DeprecationsDetector
|
4
|
+
|
5
|
+
The goal of this component is to collect and list all the deprecation of the project visually.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add `gem 'deprecations_detector', git: 'https://github.com/nebulab/deprecations_detector'` to your application's Gemfile and execute `bundle`.
|
10
|
+
|
11
|
+
Put the following code under you specs configuration:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
require 'deprecations_detector'
|
15
|
+
|
16
|
+
RSpec.configure do |config|
|
17
|
+
config.before(:suite) do
|
18
|
+
DeprecationsDetector::Main.start
|
19
|
+
end
|
20
|
+
|
21
|
+
config.around do |e|
|
22
|
+
e.run
|
23
|
+
DeprecationsDetector::Main.add(e)
|
24
|
+
end
|
25
|
+
|
26
|
+
config.after(:suite) do
|
27
|
+
DeprecationsDetector::Main.save_results
|
28
|
+
coverage_matrix = DeprecationsDetector::Main.coverage_matrix
|
29
|
+
DeprecationsDetector::Formatters::HTML::Formatter.new.format(coverage_matrix)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
# Run it on multiple jobs
|
35
|
+
|
36
|
+
Sometimes specs are run concurrently on multiple jobs. In order to collect the result on one file this gem provides some
|
37
|
+
helpful task to combine the result in one single file and then format it.
|
38
|
+
|
39
|
+
1. Remove the formatter from the after(:suite) hook
|
40
|
+
2. Make the task available on your application following the instruction under `Tasks` section.
|
41
|
+
3. Save the coverage result on the same directory with different name for any job (e.g. tmp/deps/a.yml, tmp/deps/b.yml etc..)
|
42
|
+
4. Run the task to combine the YAML files `bundle exec rake 'deprecations:combine[tmp/deps/,deprecations_detector.yml]'`
|
43
|
+
5. Run the task to format the YAML to HTML `bundle exec rake 'deprecations:format[tmp/deps/,deprecations_detector.yml]'`
|
44
|
+
|
45
|
+
## Tasks
|
46
|
+
|
47
|
+
Add the following lines on your Rakefile to make the DeprecationsDetector tasks available from your application:
|
48
|
+
|
49
|
+
```
|
50
|
+
spec = Gem::Specification.find_by_name 'deprecations_detector'
|
51
|
+
load "#{spec.gem_dir}/lib/tasks/deprecations/combine.rake"
|
52
|
+
load "#{spec.gem_dir}/lib/tasks/deprecations/format.rake"
|
53
|
+
```
|
54
|
+
|
55
|
+
## Testing
|
56
|
+
|
57
|
+
Execute `bundle exec rspec` on the component root path, specs are based on an internal fake project.
|
58
|
+
|
59
|
+
## Contributing
|
60
|
+
|
61
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/nebulab/deprecations_detector. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
62
|
+
|
63
|
+
## License
|
64
|
+
|
65
|
+
DeprecationsDetector is copyright © 2023 [Nebulab](http://nebulab.it/). It is free software, and may be redistributed under the terms specified in the [license](LICENSE.txt).
|
66
|
+
Inspired by ReverseCoverage
|
67
|
+
|
68
|
+
## About
|
69
|
+
|
70
|
+
![Nebulab](http://nebulab.it/assets/images/public/logo.svg)
|
71
|
+
|
72
|
+
DeprecationsDetector is funded and maintained by the [Nebulab](http://nebulab.it/) team.
|
73
|
+
|
74
|
+
We firmly believe in the power of open-source. [Contact us](http://nebulab.it/contact-us/) if you like our work and you need help with your project design or development.
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'pry'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
|
+
|
10
|
+
import './lib/tasks/deprecations/combine.rake'
|
11
|
+
import './lib/tasks/deprecations/format.rake'
|
12
|
+
|
13
|
+
task default: :spec
|
14
|
+
|
15
|
+
namespace :assets do
|
16
|
+
desc "Compiles all assets"
|
17
|
+
task :compile do
|
18
|
+
puts "Compiling assets"
|
19
|
+
require "sprockets"
|
20
|
+
base_path = 'lib/deprecations_detector/formatters/html'
|
21
|
+
assets = Sprockets::Environment.new
|
22
|
+
assets.append_path "#{base_path}/assets/javascripts"
|
23
|
+
assets.append_path "#{base_path}/assets/stylesheets"
|
24
|
+
assets["application.js"].write_to("#{base_path}/public/application.js")
|
25
|
+
assets["settings.js"].write_to("#{base_path}/public/settings.js")
|
26
|
+
assets["application.css"].write_to("#{base_path}/public/application.css")
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'deprecations_detector/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = 'deprecations_detector'
|
10
|
+
spec.version = DeprecationsDetector::VERSION
|
11
|
+
spec.summary = 'A tool to find what specs examples cover a specific line of code'
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.license = 'MIT'
|
14
|
+
spec.authors = ['Daniele Palombo']
|
15
|
+
spec.email = ['danielepalombo@nebulab.com']
|
16
|
+
spec.homepage = 'https://github.com/nebulab/deprecations_detector'
|
17
|
+
|
18
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
19
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|extra)/}) }
|
20
|
+
end
|
21
|
+
spec.bindir = 'exe'
|
22
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
|
+
spec.require_paths = ['lib']
|
24
|
+
|
25
|
+
spec.add_runtime_dependency 'rspec', '~> 3.8'
|
26
|
+
spec.add_development_dependency 'activesupport'
|
27
|
+
spec.add_development_dependency 'pry'
|
28
|
+
|
29
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
30
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.67.2'
|
33
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.1.0'
|
34
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.32.0'
|
35
|
+
|
36
|
+
spec.add_development_dependency 'sass', '~> 3.7.4' # TODO: replace with sassc
|
37
|
+
spec.add_development_dependency 'sprockets', '~> 3.7.2'
|
38
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DeprecationsDetector
|
4
|
+
module ActiveSupport
|
5
|
+
module DeprecationDecorator
|
6
|
+
def warn(message = nil, callstack = caller)
|
7
|
+
DeprecationsDetector::Main.add_deprecation(message, caller)
|
8
|
+
|
9
|
+
return if DeprecationsDetector::Main.suppress_deprecations
|
10
|
+
|
11
|
+
super(message, callstack)
|
12
|
+
end
|
13
|
+
|
14
|
+
::ActiveSupport::Deprecation.prepend(self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
//= require_directory ./libraries/
|
2
|
+
//= require_directory ./plugins/
|
3
|
+
//= require treeview.js
|
4
|
+
//= require_self
|
5
|
+
|
6
|
+
$(document).ready(function() {
|
7
|
+
// Configuration for fancy sortable tables for source file groups
|
8
|
+
$('.file_list').dataTable({
|
9
|
+
"aaSorting": [[ 0, "asc" ]],
|
10
|
+
"bPaginate": false,
|
11
|
+
"bJQueryUI": true,
|
12
|
+
"aoColumns": [
|
13
|
+
null,
|
14
|
+
null,
|
15
|
+
null
|
16
|
+
]
|
17
|
+
});
|
18
|
+
|
19
|
+
// Syntax highlight all files up front - deactivated
|
20
|
+
// $('.source_table pre code').each(function(i, e) {hljs.highlightBlock(e, ' ')});
|
21
|
+
|
22
|
+
// Syntax highlight source files on first toggle of the file view popup
|
23
|
+
$("a.src_link").click(function() {
|
24
|
+
// Get the source file element that corresponds to the clicked element
|
25
|
+
var source_table = $($(this).attr('href'));
|
26
|
+
|
27
|
+
// If not highlighted yet, do it!
|
28
|
+
if (!source_table.hasClass('highlighted')) {
|
29
|
+
source_table.find('pre code').each(function(i, e) {hljs.highlightBlock(e, ' ')});
|
30
|
+
source_table.addClass('highlighted');
|
31
|
+
};
|
32
|
+
});
|
33
|
+
|
34
|
+
var prev_anchor;
|
35
|
+
var curr_anchor;
|
36
|
+
|
37
|
+
// Set-up of popup for source file views
|
38
|
+
$("a.src_link").colorbox({
|
39
|
+
transition: "none",
|
40
|
+
inline: true,
|
41
|
+
opacity: 1,
|
42
|
+
width: "95%",
|
43
|
+
height: "95%",
|
44
|
+
onLoad: function() {
|
45
|
+
prev_anchor = curr_anchor ? curr_anchor : jQuery.url.attr('anchor');
|
46
|
+
curr_anchor = this.href.split('#')[1];
|
47
|
+
window.location.hash = curr_anchor;
|
48
|
+
},
|
49
|
+
onCleanup: function() {
|
50
|
+
if (prev_anchor && prev_anchor != curr_anchor) {
|
51
|
+
$('a[href="#'+prev_anchor+'"]').click();
|
52
|
+
curr_anchor = prev_anchor;
|
53
|
+
} else {
|
54
|
+
$('.group_tabs a:first').click();
|
55
|
+
prev_anchor = curr_anchor;
|
56
|
+
curr_anchor = "#_AllFiles";
|
57
|
+
}
|
58
|
+
window.location.hash = curr_anchor;
|
59
|
+
}
|
60
|
+
});
|
61
|
+
|
62
|
+
window.onpopstate = function(event){
|
63
|
+
if (location.hash.substring(0,2) == "#_") {
|
64
|
+
$.colorbox.close();
|
65
|
+
curr_anchor = jQuery.url.attr('anchor');
|
66
|
+
} else {
|
67
|
+
if ($('#colorbox').is(':hidden')) {
|
68
|
+
$('a.src_link[href="'+location.hash+'"]').colorbox({ open: true });
|
69
|
+
}
|
70
|
+
}
|
71
|
+
};
|
72
|
+
|
73
|
+
// Hide src files and file list container after load
|
74
|
+
$('.source_files').hide();
|
75
|
+
$('.file_list_container').hide();
|
76
|
+
|
77
|
+
// Add tabs based upon existing file_list_containers
|
78
|
+
$('.file_list_container h2').each(function(){
|
79
|
+
var container_id = $(this).parent().attr('id');
|
80
|
+
var group_name = $(this).find('.group_name').first().html();
|
81
|
+
|
82
|
+
$('.group_tabs').append('<li><a href="#' + container_id + '">' + group_name.substring(0, 30) + '</a></li>');
|
83
|
+
});
|
84
|
+
|
85
|
+
$('.group_tabs a').each( function() {
|
86
|
+
$(this).addClass($(this).attr('href').replace('#', ''));
|
87
|
+
});
|
88
|
+
|
89
|
+
// Make sure tabs don't get ugly focus borders when active
|
90
|
+
$('.group_tabs a').live('focus', function() { $(this).blur(); });
|
91
|
+
|
92
|
+
var favicon_path = $('link[rel="icon"]').attr('href');
|
93
|
+
$('.group_tabs a').live('click', function(){
|
94
|
+
if (!$(this).parent().hasClass('active')) {
|
95
|
+
$('.group_tabs a').parent().removeClass('active');
|
96
|
+
$(this).parent().addClass('active');
|
97
|
+
$('.file_list_container').hide();
|
98
|
+
$(".file_list_container" + $(this).attr('href')).show();
|
99
|
+
window.location.href = window.location.href.split('#')[0] + $(this).attr('href').replace('#', '#_');
|
100
|
+
|
101
|
+
// Force favicon reload - otherwise the location change containing anchor would drop the favicon...
|
102
|
+
// Works only on firefox, but still... - Anyone know a better solution to force favicon on local file?
|
103
|
+
$('link[rel="shortcut icon"]').remove();
|
104
|
+
$('head').append('<link rel="shortcut icon" type="image/png" href="'+ favicon_path +'" />');
|
105
|
+
};
|
106
|
+
return false;
|
107
|
+
});
|
108
|
+
|
109
|
+
if (jQuery.url.attr('anchor')) {
|
110
|
+
var anchor = jQuery.url.attr('anchor')
|
111
|
+
if (anchor.length == 40) {
|
112
|
+
$('a.src_link[href=#' + anchor + ']').click();
|
113
|
+
} else {
|
114
|
+
$('.group_tabs a.'+anchor.replace('_', '')).click();
|
115
|
+
}
|
116
|
+
} else {
|
117
|
+
$('.group_tabs a:first').click();
|
118
|
+
};
|
119
|
+
|
120
|
+
$("abbr.timeago").timeago();
|
121
|
+
$('#loading').fadeOut();
|
122
|
+
$('#wrapper').show();
|
123
|
+
$('.dataTables_filter input').focus();
|
124
|
+
|
125
|
+
// https://stackoverflow.com/a/34430701
|
126
|
+
window.getAbsoluteUrl = function (base, relative) {
|
127
|
+
var hashPosition = base.indexOf('#');
|
128
|
+
if (hashPosition > 0){
|
129
|
+
base = base.slice(0, hashPosition);
|
130
|
+
}
|
131
|
+
|
132
|
+
var stack = base.split("/"),
|
133
|
+
parts = relative.split("/");
|
134
|
+
stack.pop();
|
135
|
+
for (var i=0; i<parts.length; i++) {
|
136
|
+
if (parts[i] == ".")
|
137
|
+
continue;
|
138
|
+
if (parts[i] == "..")
|
139
|
+
stack.pop();
|
140
|
+
else
|
141
|
+
stack.push(parts[i]);
|
142
|
+
}
|
143
|
+
return stack.join("/");
|
144
|
+
}
|
145
|
+
|
146
|
+
window.traverseTreeData = function(treeData, paths) {
|
147
|
+
if(paths.length == 0) { return []; }
|
148
|
+
|
149
|
+
const currentNode = paths[0];
|
150
|
+
|
151
|
+
let nodeIndex = treeData.findIndex(function(node) { return node.name == currentNode.name });
|
152
|
+
if(nodeIndex == -1) {
|
153
|
+
let node = {
|
154
|
+
name: currentNode.name,
|
155
|
+
example: currentNode.example,
|
156
|
+
expanded: true,
|
157
|
+
children: traverseTreeData([], paths.slice(1))
|
158
|
+
};
|
159
|
+
treeData.push(node);
|
160
|
+
|
161
|
+
} else {
|
162
|
+
let node = treeData[nodeIndex];
|
163
|
+
node.children = traverseTreeData(node.children, paths.slice(1));
|
164
|
+
node.expanded = (node.children.length > 1) ? false : true;
|
165
|
+
treeData[nodeIndex] = node;
|
166
|
+
}
|
167
|
+
|
168
|
+
return treeData;
|
169
|
+
};
|
170
|
+
|
171
|
+
$('.source_table.highlighted li.covered').live('click', function() {
|
172
|
+
const exampleRefs = $(this).children('.deprecations_detector')[0].dataset.exampleRefs.split(",");
|
173
|
+
if(!$(this).children('.deprecations_detector').is(':visible')){
|
174
|
+
let treeData = [];
|
175
|
+
const self = this;
|
176
|
+
exampleRefs.forEach(function(ref) {
|
177
|
+
const example = window.examples[ref]
|
178
|
+
const treeNodes = []
|
179
|
+
example["file_path"].split('/').slice(1).forEach(function(node_path){
|
180
|
+
treeNodes.push({ name: node_path })
|
181
|
+
});
|
182
|
+
treeNodes.push({ example: example, name: example['full_description'] });
|
183
|
+
|
184
|
+
treeData = traverseTreeData(treeData, treeNodes)
|
185
|
+
})
|
186
|
+
|
187
|
+
const domElement = self.querySelector('.deprecations_detector');
|
188
|
+
|
189
|
+
let tree = new TreeView(treeData, domElement);
|
190
|
+
tree.on('select', function (node) {
|
191
|
+
const example = node.data.example;
|
192
|
+
const url = getAbsoluteUrl('', `${window.base_url}${example.file_path}#L${example.line_number}`);
|
193
|
+
window.open(url, '_blank');
|
194
|
+
});
|
195
|
+
$(this).children('.deprecations_detector').show();
|
196
|
+
|
197
|
+
let divMessages = document.createElement('div');
|
198
|
+
divMessages.className = 'messages';
|
199
|
+
domElement.prepend(divMessages);
|
200
|
+
deprecations = exampleRefs.map(function(ref) { return window.examples[ref]['deprecation_message'] });
|
201
|
+
[...new Set(deprecations)].forEach(function(message){
|
202
|
+
divMessages.append(message);
|
203
|
+
divMessages.append(document.createElement('br'));
|
204
|
+
})
|
205
|
+
} else {
|
206
|
+
$(this).children('.deprecations_detector').html('');
|
207
|
+
$(this).children('.deprecations_detector').hide();
|
208
|
+
}
|
209
|
+
});
|
210
|
+
$('.source_table.highlighted li.covered .deprecations_detector').live('click', function(event) {
|
211
|
+
event.stopPropagation();
|
212
|
+
});
|
213
|
+
});
|