motion_blender 0.2.0 → 0.2.1
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/analyzer/cache.rb +46 -0
- data/lib/motion_blender/analyzer.rb +7 -2
- data/lib/motion_blender/config.rb +2 -0
- 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: 7121d843e2bcddd5273bebf2813494d561a19bcb
|
4
|
+
data.tar.gz: c73a06ece8cc6fbd6abd0c4ea66a0d5042fd6b89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15e84edf8cc830f2ba39332cca4c690e883a352c2bd4437ef567274ce55ec33ba2691262aca1dbaba758c11f47cf375a10fcb96171b4ea18cf6e236fca355db3
|
7
|
+
data.tar.gz: e7fac9a8ea4c72eba203912e77ee78f51b3bf4346cd4a3767ee059a2439984fbd0a0bec74919cc8d5215f3e1c7f566b7de6d4991cc641b3eefb6c769acd798de
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module MotionBlender
|
2
|
+
class Analyzer
|
3
|
+
class Cache
|
4
|
+
def dir
|
5
|
+
MotionBlender.config.cache_dir
|
6
|
+
end
|
7
|
+
|
8
|
+
def fetch file
|
9
|
+
return yield unless dir
|
10
|
+
file = Pathname.new(file)
|
11
|
+
cache = cache_file_for(file)
|
12
|
+
if valid_cache?(file, cache)
|
13
|
+
read cache
|
14
|
+
else
|
15
|
+
content = yield
|
16
|
+
write cache, content
|
17
|
+
end
|
18
|
+
rescue YAML::Exception
|
19
|
+
if cache.exist?
|
20
|
+
cache.delete
|
21
|
+
retry
|
22
|
+
end
|
23
|
+
raise
|
24
|
+
end
|
25
|
+
|
26
|
+
def read file
|
27
|
+
YAML.load_file file
|
28
|
+
end
|
29
|
+
|
30
|
+
def write file, content
|
31
|
+
file.dirname.mkpath
|
32
|
+
file.write YAML.dump(content)
|
33
|
+
content
|
34
|
+
end
|
35
|
+
|
36
|
+
def valid_cache? file, cache
|
37
|
+
cache.file? && file.mtime < cache.mtime
|
38
|
+
end
|
39
|
+
|
40
|
+
def cache_file_for file
|
41
|
+
file = file.relative_path_from(Pathname.new('/')) if file.absolute?
|
42
|
+
dir.join(file.to_s + '.yml')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
require 'set'
|
2
2
|
require 'pathname'
|
3
3
|
require 'motion_blender/analyzer/parser'
|
4
|
+
require 'motion_blender/analyzer/cache'
|
4
5
|
|
5
6
|
module MotionBlender
|
6
7
|
class Analyzer
|
7
|
-
attr_reader :files, :dependencies
|
8
|
+
attr_reader :files, :dependencies, :cache
|
8
9
|
|
9
10
|
def initialize
|
10
11
|
@analyzed_files = Set.new
|
11
12
|
@files = []
|
12
13
|
@dependencies = {}
|
14
|
+
@cache = Cache.new
|
13
15
|
end
|
14
16
|
|
15
17
|
def analyze file, backtrace = []
|
@@ -17,7 +19,10 @@ module MotionBlender
|
|
17
19
|
return if @analyzed_files.include? file
|
18
20
|
@analyzed_files << file
|
19
21
|
|
20
|
-
requires =
|
22
|
+
requires = @cache.fetch(file) do
|
23
|
+
parse file, backtrace
|
24
|
+
end
|
25
|
+
|
21
26
|
if requires.any?
|
22
27
|
@dependencies[file] = requires.map(&:file)
|
23
28
|
@files = [*@files, file, *@dependencies[file]].uniq
|
@@ -4,12 +4,14 @@ module MotionBlender
|
|
4
4
|
class Config
|
5
5
|
attr_reader :incepted_files, :excepted_files, :motion_dirs
|
6
6
|
attr_reader :builtin_features
|
7
|
+
attr_accessor :cache_dir
|
7
8
|
|
8
9
|
def initialize
|
9
10
|
@incepted_files = []
|
10
11
|
@excepted_files = Set.new
|
11
12
|
@motion_dirs = []
|
12
13
|
@builtin_features = Set.new %w(bigdecimal rational date thread)
|
14
|
+
@cache_dir = Pathname.new('build/analyze')
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
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.2.
|
4
|
+
version: 0.2.1
|
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-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -227,6 +227,7 @@ files:
|
|
227
227
|
- bin/setup
|
228
228
|
- lib/motion_blender.rb
|
229
229
|
- lib/motion_blender/analyzer.rb
|
230
|
+
- lib/motion_blender/analyzer/cache.rb
|
230
231
|
- lib/motion_blender/analyzer/evaluator.rb
|
231
232
|
- lib/motion_blender/analyzer/original_finder.rb
|
232
233
|
- lib/motion_blender/analyzer/parser.rb
|