mtrack 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: 560415a9be1f9e76a1a0ea6d7de1d349a4878deb
4
- data.tar.gz: 2faa7e600966d3f2c686c30aeaf05e0c5f627136
3
+ metadata.gz: 0bfca617210cbd6c56886b4eb185dc4fd6953204
4
+ data.tar.gz: d3af2f661de85f44e958ec5090515b40c032bd44
5
5
  SHA512:
6
- metadata.gz: 1c3242c119adc1f937409f5334bbf2fd41ac5b8a8db5eda1acb21ff07a74bfa6e074f95ad086d256ec873e687e5b10c57c6112113ed555527ecd325f61212675
7
- data.tar.gz: 162df5d0a5f8cbedcd9ac48e6c4d126ffb2dde583e669c6ad3f8c978259b577874739d193342dfba993e0f58b059e39e3cc57cb32538f3317f57496fa6200395
6
+ metadata.gz: a186ed9e60cd1dec8355f127ae9b5b19000804726b169b0e23baa49c5a2e4610dfd6d13d0a2abe676c5bd4ec375dbe2f5487b448cc5468a7490b6a72d3d7e49a
7
+ data.tar.gz: 57a5be4b178c3215f3ea0d58cb4632be748be4b2cc2453193aff60b5c53890090af23154f28f4b964309e467eadea1eb29bace8319df13c5011deeb9499aedc3
data/Guardfile CHANGED
@@ -1,4 +1,4 @@
1
- guard :rspec, cmd: "rspec" do
1
+ guard :rspec, cmd: "rspec -fd" do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^lib/(.+)\.rb$}) {|m| "spec/lib/#{m[1]}_spec.rb" }
4
4
  watch("spec/spec_helper.rb") { "spec" }
data/README.md CHANGED
@@ -11,6 +11,7 @@
11
11
  [travis]: http://travis-ci.org/gdeoliveira/mtrack
12
12
  [codeclimate]: https://codeclimate.com/github/gdeoliveira/mtrack
13
13
  [gemnasium]: https://gemnasium.com/gdeoliveira/mtrack
14
+ [gemnasium]: https://gemnasium.com/gdeoliveira/mtrack#development-dependencies
14
15
  [inch-ci]: http://inch-ci.org/github/gdeoliveira/mtrack
15
16
 
16
17
  MTrack extends the functionality of Modules and Classes and enables them to
@@ -13,9 +13,7 @@ module MTrack
13
13
  # call-seq:
14
14
  # tracked_methods(group_name = nil) => set
15
15
  #
16
- # Returns a set containing the currently tracked methods. An optional
17
- # +group_name+ parameter can be passed to get the tracked methods of groups
18
- # othen than the default +nil+ group.
16
+ # Returns a set containing the currently tracked methods for a +group_name+.
19
17
  #
20
18
  # class C
21
19
  # track_methods :my_group do
@@ -75,5 +73,26 @@ module MTrack
75
73
  @__mtrack__.delete_tracked name
76
74
  @__mtrack__.add_undefined name
77
75
  end
76
+
77
+ ##
78
+ # call-seq:
79
+ # track_methods_with_block(group_name) {|| ... } => set
80
+ #
81
+ # All the methods defined within the block will be tracked under the
82
+ # +group_name+ parameter.
83
+ #
84
+ # Returns a set containing the methods that were defined within the block.
85
+ def track_methods_with_block(group_name, &b)
86
+ old_methods = public_instance_methods(false)
87
+
88
+ begin
89
+ module_eval(&b)
90
+ ensure
91
+ tracked = (public_instance_methods(false) - old_methods).map(&:to_sym).to_set
92
+ @__mtrack__[group_name].merge_tracked tracked unless tracked.empty?
93
+ end
94
+
95
+ tracked
96
+ end
78
97
  end
79
98
  end
@@ -35,18 +35,8 @@ module MTrack
35
35
  def track_methods(group_name = nil, &b)
36
36
  @__mtrack__ ||= State.new
37
37
  extend Core
38
-
39
- if block_given?
40
- old_methods = public_instance_methods(false)
41
- begin
42
- module_eval(&b)
43
- ensure
44
- tracked = (public_instance_methods(false) - old_methods).map(&:to_sym).to_set
45
- @__mtrack__[group_name].merge_tracked tracked unless tracked.empty?
46
- end
47
- end
48
-
49
- tracked || Set.new
38
+ return track_methods_with_block(group_name, &b) if block_given?
39
+ Set.new
50
40
  end
51
41
  end
52
42
  end
@@ -14,6 +14,9 @@ module MTrack
14
14
  #
15
15
  # Creates a new State instance. An optional +super_state+ parameter can be
16
16
  # passed that will be added to #super_states.
17
+ #
18
+ # super_state = MTrack::State.new
19
+ # sub_state = MTrack::State.new(super_state)
17
20
  def initialize(super_state = nil)
18
21
  self.groups = {}
19
22
  self.super_states = super_state ? Set[super_state] : Set.new
@@ -24,8 +27,9 @@ module MTrack
24
27
  # call-seq:
25
28
  # state[group_name] => group
26
29
  #
27
- # Returns a particular group in #groups. If the group doesn't exist it will
28
- # be created.
30
+ # Accepts a +group_name+ passed as a parameter.
31
+ #
32
+ # Returns an existing or a new group associated with +group_name+.
29
33
  def [](group_name)
30
34
  groups[group_name] ||= Group.new
31
35
  end
@@ -34,7 +38,9 @@ module MTrack
34
38
  # call-seq:
35
39
  # add_super_state(state) => state
36
40
  #
37
- # Adds a new state to #super_states.
41
+ # Adds a new +state+ to the #super_states set.
42
+ #
43
+ # Returns passed +state+.
38
44
  def add_super_state(state)
39
45
  super_states.add state
40
46
  state
@@ -45,6 +51,8 @@ module MTrack
45
51
  # add_undefined(name) => name
46
52
  #
47
53
  # Adds +name+ to the #undefined methods set.
54
+ #
55
+ # Returns passed +name+.
48
56
  def add_undefined(name)
49
57
  undefined.add name
50
58
  name
@@ -55,6 +63,8 @@ module MTrack
55
63
  # delete_tracked(name) => name
56
64
  #
57
65
  # Removes method +name+ from all #groups.
66
+ #
67
+ # Returns passed +name+.
58
68
  def delete_tracked(name)
59
69
  groups.each {|k, v| v.delete_tracked name }
60
70
  name
@@ -65,6 +75,8 @@ module MTrack
65
75
  # delete_undefined(name) => name
66
76
  #
67
77
  # Removes +name+ from the #undefined methods set.
78
+ #
79
+ # Returns passed +name+.
68
80
  def delete_undefined(name)
69
81
  undefined.delete name
70
82
  name
@@ -74,9 +86,7 @@ module MTrack
74
86
  # call-seq:
75
87
  # tracked(group_name = nil) => set
76
88
  #
77
- # Returns a set containing the currently tracked methods. An optional
78
- # +group_name+ parameter can be passed to get the tracked methods of groups
79
- # othen than the default +nil+ group.
89
+ # Returns a set containing the currently tracked methods for a +group_name+.
80
90
  def tracked(group_name = nil)
81
91
  ret_val = merge_super_states group_name
82
92
  ret_val.merge groups[group_name].tracked unless groups[group_name].nil?
@@ -21,6 +21,8 @@ module MTrack
21
21
  # delete_tracked(name) => name
22
22
  #
23
23
  # Removes method +name+ from tracked methods.
24
+ #
25
+ # Returns passed +name+.
24
26
  def delete_tracked(name)
25
27
  @tracked.delete name
26
28
  name
@@ -31,6 +33,8 @@ module MTrack
31
33
  # merge_tracked(names) => names
32
34
  #
33
35
  # Adds method +names+ to tracked methods.
36
+ #
37
+ # Returns passed +names+.
34
38
  def merge_tracked(names)
35
39
  @tracked.merge names
36
40
  names
@@ -20,5 +20,5 @@
20
20
  module MTrack
21
21
 
22
22
  # Current version of MTrack.
23
- VERSION = "0.0.3"
23
+ VERSION = "0.0.4"
24
24
  end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe MTrack::ModuleMixin do
4
+ describe "#track_methods" do
5
+ context "no block given" do
6
+ it "returns an empty set" do
7
+ ret_val = ::Module.new.module_eval { track_methods :group }
8
+ expect(ret_val).to be_a(Set)
9
+ expect(ret_val).to be_empty
10
+ end
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mtrack
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
  - Gabriel de Oliveira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: MTrack extends the functionality of modules and classes and enables them
14
14
  to define public methods within groups. These methods can then be queried back even
@@ -35,6 +35,7 @@ files:
35
35
  - lib/mtrack/version.rb
36
36
  - mtrack.gemspec
37
37
  - spec/lib/mtrack/core_spec.rb
38
+ - spec/lib/mtrack/module_mixin_spec.rb
38
39
  - spec/lib/mtrack/state/group_spec.rb
39
40
  - spec/lib/mtrack/state_spec.rb
40
41
  - spec/lib/mtrack/version_spec.rb
@@ -67,6 +68,7 @@ specification_version: 4
67
68
  summary: Group and track methods on classes and modules.
68
69
  test_files:
69
70
  - spec/lib/mtrack/core_spec.rb
71
+ - spec/lib/mtrack/module_mixin_spec.rb
70
72
  - spec/lib/mtrack/state/group_spec.rb
71
73
  - spec/lib/mtrack/state_spec.rb
72
74
  - spec/lib/mtrack/version_spec.rb