motion_blender 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/motion_blender.rb +1 -0
- data/lib/motion_blender/analyzer.rb +18 -12
- data/lib/motion_blender/analyzer/parser.rb +5 -1
- data/lib/motion_blender/analyzer/require.rb +11 -1
- data/lib/motion_blender/callbacks.rb +19 -0
- data/lib/motion_blender/config.rb +4 -0
- data/lib/motion_blender/ext/raketime.rb +0 -1
- data/lib/motion_blender/rake_tasks.rb +14 -19
- data/lib/motion_blender/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 592c1d9b0693a9bb79980b54a3ab373366f16fce
|
4
|
+
data.tar.gz: 997a92be2a98a1556d973d2d5b2581862ab6da90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5dbd81dbda77d22774c9b081af0185b4a9adb9a682f6a8155fffa9594f0a127ec6e83684a07e337d977f728da0287b05ed588e0597b2332f1986d0ac6fb9b43d
|
7
|
+
data.tar.gz: 0d29f833f10aa9c79dc15d693e2b08ef1f090301b8720a1abb3196d24b8506d5c58fd39d93e48db36d8a061c344115fc6400531dfcd16684a572d63d106befcf
|
data/lib/motion_blender.rb
CHANGED
@@ -14,29 +14,35 @@ module MotionBlender
|
|
14
14
|
@dependencies = {}
|
15
15
|
end
|
16
16
|
|
17
|
-
def analyze file, backtrace = []
|
17
|
+
def analyze file, backtrace = []
|
18
18
|
return if @exclude_files.include? file
|
19
19
|
return if @analyzed_files.include? file
|
20
20
|
@analyzed_files << file
|
21
|
-
proc.call file if proc
|
22
21
|
|
22
|
+
requires = parse file, backtrace
|
23
|
+
if requires.any?
|
24
|
+
@dependencies[file] = requires.map(&:file)
|
25
|
+
@files = [*@files, file, *@dependencies[file]].uniq
|
26
|
+
requires.each do |req|
|
27
|
+
req.run_callbacks :require do
|
28
|
+
analyze req.file, [req.trace, *backtrace]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def parse file, backtrace
|
23
35
|
parser = Parser.new file
|
24
36
|
parser.exclude_files = @exclude_files
|
25
37
|
begin
|
26
|
-
parser.parse
|
38
|
+
parser.run_callbacks :parse do
|
39
|
+
parser.parse
|
40
|
+
end
|
27
41
|
rescue LoadError => err
|
28
42
|
err.set_backtrace [parser.last_trace, *backtrace].compact
|
29
43
|
raise err
|
30
44
|
end
|
31
|
-
|
32
|
-
requires = parser.requires
|
33
|
-
if requires.any?
|
34
|
-
@dependencies[file] = requires.map(&:file)
|
35
|
-
@files = [*@files, file, *@dependencies[file]].uniq
|
36
|
-
requires.each do |req|
|
37
|
-
analyze req.file, [req.trace, *backtrace], &proc
|
38
|
-
end
|
39
|
-
end
|
45
|
+
parser.requires
|
40
46
|
end
|
41
47
|
end
|
42
48
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'parser/current'
|
2
|
-
require '
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_support/callbacks'
|
3
4
|
|
4
5
|
require 'motion_blender/analyzer/evaluator'
|
5
6
|
require 'motion_blender/analyzer/require'
|
@@ -7,6 +8,9 @@ require 'motion_blender/analyzer/require'
|
|
7
8
|
module MotionBlender
|
8
9
|
class Analyzer
|
9
10
|
class Parser
|
11
|
+
include ActiveSupport::Callbacks
|
12
|
+
define_callbacks :parse
|
13
|
+
|
10
14
|
REQUIREMENT_TOKENS = %i(motion_require require_relative require)
|
11
15
|
|
12
16
|
attr_reader :file, :requires, :last_trace
|
@@ -1,6 +1,12 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_support/callbacks'
|
3
|
+
|
1
4
|
module MotionBlender
|
2
5
|
class Analyzer
|
3
6
|
class Require
|
7
|
+
include ActiveSupport::Callbacks
|
8
|
+
define_callbacks :require
|
9
|
+
|
4
10
|
attr_accessor :loader, :method, :arg, :trace
|
5
11
|
|
6
12
|
def initialize loader, method, arg
|
@@ -45,9 +51,13 @@ module MotionBlender
|
|
45
51
|
|
46
52
|
def load_path
|
47
53
|
if uses_load_path?
|
48
|
-
$LOAD_PATH
|
54
|
+
MotionBlender.config.motion_dirs + $LOAD_PATH
|
49
55
|
end
|
50
56
|
end
|
57
|
+
|
58
|
+
def match? arg_or_file
|
59
|
+
arg == arg_or_file || file == arg_or_file
|
60
|
+
end
|
51
61
|
end
|
52
62
|
end
|
53
63
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'motion_blender/analyzer'
|
2
|
+
|
3
|
+
module MotionBlender
|
4
|
+
module Callbacks
|
5
|
+
def on_parse file = nil, &proc
|
6
|
+
filters = {}
|
7
|
+
filters[:if] = -> { self.file == file } if file
|
8
|
+
Analyzer::Parser.set_callback(:parse, filters, &proc)
|
9
|
+
end
|
10
|
+
|
11
|
+
def on_require file = nil, &proc
|
12
|
+
filters = {}
|
13
|
+
filters[:if] = -> { match? file } if file
|
14
|
+
Analyzer::Require.set_callback(:require, filters, &proc)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
extend Callbacks
|
19
|
+
end
|
@@ -8,28 +8,23 @@ module MotionBlender
|
|
8
8
|
MotionBlender.config
|
9
9
|
end
|
10
10
|
|
11
|
-
def analyze
|
11
|
+
def analyze
|
12
|
+
analyzer = Analyzer.new
|
13
|
+
analyzer.exclude_files += builtin_features + config.excepted_files
|
12
14
|
Motion::Project::App.setup do |app|
|
13
15
|
files = config.incepted_files + app.files
|
14
|
-
|
15
|
-
|
16
|
-
if analyzer.files.any?
|
17
|
-
new_files = analyzer.files - app.files
|
18
|
-
app.exclude_from_detect_dependencies += new_files
|
19
|
-
app.files = new_files + app.files
|
20
|
-
app.files_dependencies analyzer.dependencies
|
16
|
+
files.flatten.each do |file|
|
17
|
+
analyzer.analyze file
|
21
18
|
end
|
19
|
+
apply analyzer, app if analyzer.files.any?
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
analyzer.analyze file, &proc
|
31
|
-
end
|
32
|
-
analyzer
|
23
|
+
def apply analyzer, app
|
24
|
+
new_files = analyzer.files - app.files
|
25
|
+
app.exclude_from_detect_dependencies += new_files
|
26
|
+
app.files = new_files + app.files
|
27
|
+
app.files_dependencies analyzer.dependencies
|
33
28
|
end
|
34
29
|
|
35
30
|
def builtin_features
|
@@ -40,10 +35,10 @@ end
|
|
40
35
|
|
41
36
|
namespace :motion_blender do
|
42
37
|
task :analyze do
|
43
|
-
|
44
|
-
|
45
|
-
Motion::Project::App.info('Analyze', file)
|
38
|
+
MotionBlender.on_parse do |parser|
|
39
|
+
Motion::Project::App.info('Analyze', parser.file)
|
46
40
|
end
|
41
|
+
MotionBlender::RakeTasks.new.analyze
|
47
42
|
end
|
48
43
|
end
|
49
44
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion_blender
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kayhide
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -231,6 +231,7 @@ files:
|
|
231
231
|
- lib/motion_blender/analyzer/hooker.rb
|
232
232
|
- lib/motion_blender/analyzer/parser.rb
|
233
233
|
- lib/motion_blender/analyzer/require.rb
|
234
|
+
- lib/motion_blender/callbacks.rb
|
234
235
|
- lib/motion_blender/config.rb
|
235
236
|
- lib/motion_blender/ext.rb
|
236
237
|
- lib/motion_blender/ext/raketime.rb
|