analyst 1.0.0 → 1.0.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/analyst.gemspec +0 -3
- data/lib/analyst/entities/constant_assignment.rb +5 -1
- data/lib/analyst/version.rb +1 -1
- data/spec/entities/class_method_spec.rb +28 -2
- data/spec/entities/hash_spec.rb +30 -2
- data/spec/entities/singleton_class_spec.rb +9 -7
- metadata +2 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eab9524eb5763fcc6b6c96491d3eda6670cda02f
|
4
|
+
data.tar.gz: ad946eb37111ca6329f1b089a59d99c1234a4740
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84bd02e46b5745ae1f4b1847b61b3f003b014cb5370c71fdcd9bd9fdf56e6559441e70a11567d3932789061d2aed3dc9e04fadf61e395cd41fd14c2bc459982e
|
7
|
+
data.tar.gz: 3c539573aa32661008537ed3353a704a9f12b2f31d7166a770b6badabda94efa115ccd88d8d716d86141f83f22563202a557747b354529349ba05739652ce572
|
data/analyst.gemspec
CHANGED
@@ -20,9 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "haml"
|
22
22
|
spec.add_dependency "parser"
|
23
|
-
spec.add_dependency "rainbow"
|
24
|
-
spec.add_dependency "rouge"
|
25
|
-
spec.add_dependency "terminal-table"
|
26
23
|
spec.add_dependency "thor"
|
27
24
|
|
28
25
|
spec.add_development_dependency "bundler", "~> 1.6"
|
@@ -10,7 +10,11 @@ module Analyst
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def full_name
|
13
|
-
|
13
|
+
(scope.nil? ? parent.full_name : scope.full_name) + '::' + name
|
14
|
+
end
|
15
|
+
|
16
|
+
def scope
|
17
|
+
@scope ||= process_node(ast.children.first)
|
14
18
|
end
|
15
19
|
|
16
20
|
private
|
data/lib/analyst/version.rb
CHANGED
@@ -20,10 +20,36 @@ describe Analyst::Entities::ClassMethod do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
describe "#
|
23
|
+
describe "#full_name" do
|
24
24
|
it "returns its fully qualified name" do
|
25
25
|
expect(method.full_name).to eq("DefaultCarrier::register")
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
context "using `class << self` blocks" do
|
30
|
+
|
31
|
+
let(:code) {<<-CODE
|
32
|
+
class BodyBuilder
|
33
|
+
class << self
|
34
|
+
def generate_tanning_booth
|
35
|
+
TanningBooth.new
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
CODE
|
40
|
+
}
|
41
|
+
|
42
|
+
describe "#name" do
|
43
|
+
it "returns its short name" do
|
44
|
+
expect(method.name).to eq("generate_tanning_booth")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#full_name" do
|
49
|
+
it "returns its fully qualified name" do
|
50
|
+
pending "must resolve out handling of singleton classes"
|
51
|
+
expect(method.full_name).to eq("BodyBuilder::generate_tanning_booth")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/entities/hash_spec.rb
CHANGED
@@ -40,6 +40,34 @@ describe Analyst::Entities::Hash do
|
|
40
40
|
[Analyst::Entities::MethodCall, Analyst::Entities::MethodCall]
|
41
41
|
)
|
42
42
|
end
|
43
|
-
end
|
44
43
|
|
45
|
-
|
44
|
+
describe "`extract_values` option" do
|
45
|
+
let(:code) { "{ :name => 'Jim', :sex => :male, Coolness => get_coolness }" }
|
46
|
+
let(:hash) { Analyst.for_source(code).hashes.first }
|
47
|
+
|
48
|
+
context "with `extract_values: true` (default)" do
|
49
|
+
let(:hash_frd) { hash.to_hash }
|
50
|
+
|
51
|
+
it "extracts symbols and strings" do
|
52
|
+
coolness = hash.constants.first
|
53
|
+
get_coolness = hash.pairs.last.method_calls.first
|
54
|
+
|
55
|
+
expect(hash_frd.keys).to match_array [:name, :sex, coolness]
|
56
|
+
expect(hash_frd.values).to match_array ['Jim', :male, get_coolness]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "with `extract_values: false`" do
|
61
|
+
let(:hash_frd) { hash.to_hash(extract_values: false) }
|
62
|
+
|
63
|
+
it "returns Entities instead of primitives" do
|
64
|
+
key_classes = hash_frd.keys.map(&:class)
|
65
|
+
value_classes = hash_frd.values.map(&:class)
|
66
|
+
|
67
|
+
expect(key_classes).to eq [Analyst::Entities::Symbol, Analyst::Entities::Symbol, Analyst::Entities::Constant]
|
68
|
+
expect(value_classes).to eq [Analyst::Entities::String, Analyst::Entities::Symbol, Analyst::Entities::MethodCall]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -3,10 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe Analyst::Entities::SingletonClass do
|
4
4
|
|
5
5
|
let(:code) {<<-CODE
|
6
|
-
|
7
|
-
class
|
8
|
-
|
9
|
-
|
6
|
+
module Arbys
|
7
|
+
class FriendlyStaff
|
8
|
+
class << self
|
9
|
+
def greet_customers
|
10
|
+
"Hello customers!"
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
@@ -22,9 +24,9 @@ describe Analyst::Entities::SingletonClass do
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
|
-
describe "#
|
27
|
+
describe "#full_name" do
|
26
28
|
it "returns its fully qualified name" do
|
27
|
-
expect(singleton.full_name).to eq("FriendlyStaff!SINGLETON")
|
29
|
+
expect(singleton.full_name).to eq("Arbys::FriendlyStaff!SINGLETON")
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -34,4 +36,4 @@ describe Analyst::Entities::SingletonClass do
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
37
|
-
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: analyst
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Coraline Ada Ehmke
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: haml
|
@@ -39,48 +39,6 @@ dependencies:
|
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: rainbow
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :runtime
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: rouge
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :runtime
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: terminal-table
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
42
|
- !ruby/object:Gem::Dependency
|
85
43
|
name: thor
|
86
44
|
requirement: !ruby/object:Gem::Requirement
|