sexp_info 0.0.3 → 0.0.4

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: 42da7e65506de7864cf395cdded2f81025688061
4
- data.tar.gz: 1de13ae66e4d97a7810247170e4f5a9ae1b5bdfb
3
+ metadata.gz: 57e9e886d54dc00c0dd43eddd338c6f4a7dcfe88
4
+ data.tar.gz: 3b13759241d684b0d7f718f2a64a26267e8c5c37
5
5
  SHA512:
6
- metadata.gz: e7b225e67a37552ca2d0fa6fb916643cdf278b5e0ffb7b5ae5d52c14ed935d11d7cf476fe10c6f74900b3d5dbe463e48aa01f1305376b2daf5ff3d13439a435d
7
- data.tar.gz: 0fb39d79275bb1ab6cbfdf5e78f46ec75d236eb377331b1984ffe66f206f5ae181b2e9769ecd41ed06ccb4f7d01806bd5fc5a254ae3113c0e1fa8d98f73af022
6
+ metadata.gz: 8b8c993c33798b03491ec288ed5f0b388e7284535f8b09fd69528443e10d11a754557fa22300bf36032c98b403664a1feb35c9fac9c8c410eb44bf80115b32b2
7
+ data.tar.gz: fcc11c85bf0af7aad0a11d7cebebfa170a2a9a80ffa671f615235ee6785c86c51253e868de341b056cc91b18b44e4e516f20fc26fa09393af898f666e2c6fe20
data/.gitignore CHANGED
@@ -15,4 +15,6 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- *~
18
+ *~
19
+ *\#
20
+ .\#*
@@ -2,7 +2,7 @@ require 'active_support/all'
2
2
  require 'sexp_info/sexp_thing/sexp_thing'
3
3
  class SexpInfo
4
4
 
5
- VERSION = "0.0.3"
5
+ VERSION = "0.0.4"
6
6
 
7
7
  def initialize(sexp)
8
8
  @sexp = sexp
@@ -20,12 +20,21 @@ class SexpInfo
20
20
  defined(:class)
21
21
  end
22
22
 
23
+ def to_h
24
+ Hash[children.map{|c| [c.name, c.to_h] }]
25
+ end
26
+
23
27
  def defined_modules
24
28
  defined(:module)
25
29
  end
26
30
 
31
+
32
+ def children
33
+ defined_classes + defined_methods + defined_modules
34
+ end
35
+
27
36
  def [](name)
28
- (defined_classes + defined_methods + defined_modules).find{|m| m == name }
37
+ (children).find{|m| m == name }
29
38
  end
30
39
 
31
40
  private
@@ -6,6 +6,10 @@ module SexpThing
6
6
  sexp[1][1][1]
7
7
  end
8
8
 
9
+ def to_h
10
+ Hash[defined_methods.map{|m| [m.name, m]}].merge(:sexp => self)
11
+ end
12
+
9
13
  def defined_methods
10
14
  SexpInfo.new(sexp[3]).defined_methods
11
15
  end
@@ -4,6 +4,11 @@ module SexpThing
4
4
  def name
5
5
  sexp[1][1][1]
6
6
  end
7
+
8
+ def to_h
9
+ Hash[defined_classes.map{|c| [c.name, c.to_h] }].merge(:sexp => self)
10
+ end
11
+
7
12
  def defined_classes
8
13
  SexpInfo.new(sexp[2]).defined_classes
9
14
  end
@@ -26,7 +26,7 @@ describe SexpInfo do
26
26
  Then { sexp["StdClass"].defined_methods.should == ["optional_args"] }
27
27
  end
28
28
 
29
- context "classes" do
29
+ context "modules" do
30
30
  Given(:modules) { File.read('spec/fixtures/modules.rb') }
31
31
  Given(:rip) { Ripper.sexp(modules) }
32
32
  Given(:sexp) { SexpInfo.new(rip) }
@@ -34,6 +34,17 @@ describe SexpInfo do
34
34
  Then { sexp.defined_modules.should == ["StdModule"] }
35
35
  Then { sexp["StdModule"].should be_a SexpThing::Module }
36
36
  Then { sexp["StdModule"].defined_classes.should == ["StdClass"] }
37
+ Then { sexp.to_h.should == {
38
+ "StdModule" => {
39
+ :sexp => "StdModule",
40
+ "StdClass" => {
41
+ :sexp => "StdClass",
42
+ "optional_args" => "optional_args"
43
+ }
44
+ }
45
+ }
46
+ }
47
+
37
48
  end
38
49
 
39
50
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sexp_info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - svs