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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cacc928955bbd8e72446dcf6b20a5cbebc5ec4fc
4
- data.tar.gz: b4c9cad57b52ba7f6c48f04f9295935cbe918463
3
+ metadata.gz: eab9524eb5763fcc6b6c96491d3eda6670cda02f
4
+ data.tar.gz: ad946eb37111ca6329f1b089a59d99c1234a4740
5
5
  SHA512:
6
- metadata.gz: 00085874da8ad41948eca83217e3d36e519518a65d197c8fb6b38bb2fbca0ae3fd6a25bb7f3f00337d5400f1d240987a630955a6eefde5419001db7655637360
7
- data.tar.gz: 238d01df95d83893c687a2bf1e1e9b578dc12218f446137439a997127ec92f16fec87c38b1e1317c4f26a88a563907e5ad92755bdae8e79d96fc41dbb138b0ea
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
- parent.nil? ? name : parent.full_name + '::' + name
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
@@ -1,3 +1,3 @@
1
1
  module Analyst
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -20,10 +20,36 @@ describe Analyst::Entities::ClassMethod do
20
20
  end
21
21
  end
22
22
 
23
- describe "#fulL_name" do
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
- end
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
@@ -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
- end
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
- class FriendlyStaff
7
- class << self
8
- def greet_customers
9
- "Hello customers!"
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 "#fulL_name" do
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.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-11-26 00:00:00.000000000 Z
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