motion_blender 0.2.0 → 0.2.1
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 +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
|