event_emitter 0.1.0 → 0.2.0
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.
- data/History.txt +5 -0
- data/README.rdoc +11 -0
- data/lib/event_emitter/emitter.rb +7 -7
- data/lib/event_emitter.rb +1 -1
- data/test/test_class_method.rb +4 -4
- data/test/test_event_emitter.rb +3 -3
- data/test/test_singular_method.rb +3 -3
- metadata +3 -3
    
        data/History.txt
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    | @@ -30,6 +30,7 @@ include | |
| 30 30 | 
             
                attr_accessor :name
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| 33 | 
            +
             | 
| 33 34 | 
             
            regist event listener
         | 
| 34 35 |  | 
| 35 36 | 
             
              user = User.new
         | 
| @@ -38,22 +39,26 @@ regist event listener | |
| 38 39 | 
             
                puts "#{name} go to #{data[:place]}"
         | 
| 39 40 | 
             
              end
         | 
| 40 41 |  | 
| 42 | 
            +
             | 
| 41 43 | 
             
            call event
         | 
| 42 44 |  | 
| 43 45 | 
             
              user.emit :go, {:place => "mountain"}
         | 
| 44 46 | 
             
              # => "shokai go to mountain"
         | 
| 45 47 |  | 
| 48 | 
            +
             | 
| 46 49 | 
             
            regist event using "once"
         | 
| 47 50 |  | 
| 48 51 | 
             
              user.once :eat do |what, where|
         | 
| 49 52 | 
             
                puts "#{name} -> eat #{what} at #{where}"
         | 
| 50 53 | 
             
              end
         | 
| 51 54 |  | 
| 55 | 
            +
             | 
| 52 56 | 
             
            call
         | 
| 53 57 |  | 
| 54 58 | 
             
              user.emit :eat, "BEEF", "zanmai"  # =>  "shokai -> eat BEEF at zanmai"
         | 
| 55 59 | 
             
              user.emit :eat, "Ramen", "marutomo"  # => do not call. call only first time.
         | 
| 56 60 |  | 
| 61 | 
            +
             | 
| 57 62 | 
             
            apply as instance-specific method
         | 
| 58 63 |  | 
| 59 64 | 
             
              class Foo
         | 
| @@ -63,6 +68,12 @@ apply as instance-specific method | |
| 63 68 | 
             
              EventEmitter.apply foo
         | 
| 64 69 |  | 
| 65 70 |  | 
| 71 | 
            +
            remove event listener
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              user.remove_listener :go
         | 
| 74 | 
            +
              user.remove_listener event_id
         | 
| 75 | 
            +
             | 
| 76 | 
            +
             | 
| 66 77 | 
             
            see samples https://github.com/shokai/event_emitter/tree/master/samples
         | 
| 67 78 |  | 
| 68 79 | 
             
            == TEST:
         | 
| @@ -13,14 +13,14 @@ module EventEmitter | |
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| 15 15 | 
             
              module InstanceMethods
         | 
| 16 | 
            -
                def  | 
| 17 | 
            -
                  @ | 
| 16 | 
            +
                def __events
         | 
| 17 | 
            +
                  @__events ||= []
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                def add_listener(type, params={}, &block)
         | 
| 21 21 | 
             
                  raise ArgumentError, 'listener block not given' unless block_given?
         | 
| 22 | 
            -
                  id =  | 
| 23 | 
            -
                   | 
| 22 | 
            +
                  id = __events.empty? ? 0 : __events.last[:id]+1
         | 
| 23 | 
            +
                  __events << {
         | 
| 24 24 | 
             
                    :type => type.to_sym,
         | 
| 25 25 | 
             
                    :listener => block,
         | 
| 26 26 | 
             
                    :params => params,
         | 
| @@ -33,18 +33,18 @@ module EventEmitter | |
| 33 33 |  | 
| 34 34 | 
             
                def remove_listener(id_or_type)
         | 
| 35 35 | 
             
                  if id_or_type.class == Fixnum
         | 
| 36 | 
            -
                     | 
| 36 | 
            +
                    __events.delete_if do |e|
         | 
| 37 37 | 
             
                      e[:id] == id_or_type
         | 
| 38 38 | 
             
                    end
         | 
| 39 39 | 
             
                  elsif [String, Symbol].include? id_or_type.class
         | 
| 40 | 
            -
                     | 
| 40 | 
            +
                    __events.delete_if do |e|
         | 
| 41 41 | 
             
                      e[:type] == id_or_type.to_sym
         | 
| 42 42 | 
             
                    end
         | 
| 43 43 | 
             
                  end
         | 
| 44 44 | 
             
                end
         | 
| 45 45 |  | 
| 46 46 | 
             
                def emit(type, *data)
         | 
| 47 | 
            -
                   | 
| 47 | 
            +
                  __events.each do |e|
         | 
| 48 48 | 
             
                    if e[:type] == type.to_sym
         | 
| 49 49 | 
             
                      listener = e[:listener]
         | 
| 50 50 | 
             
                      remove_listener e[:id] if e[:params][:once]
         | 
    
        data/lib/event_emitter.rb
    CHANGED
    
    
    
        data/test/test_class_method.rb
    CHANGED
    
    | @@ -78,7 +78,7 @@ class TestClassMethod < MiniTest::Unit::TestCase | |
| 78 78 | 
             
              end
         | 
| 79 79 |  | 
| 80 80 | 
             
              def test_remove_listener
         | 
| 81 | 
            -
                size = Foo. | 
| 81 | 
            +
                size = Foo.__events.size
         | 
| 82 82 |  | 
| 83 83 | 
             
                Foo.on :foo do |data|
         | 
| 84 84 | 
             
                  puts "bar #{data}"
         | 
| @@ -91,12 +91,12 @@ class TestClassMethod < MiniTest::Unit::TestCase | |
| 91 91 | 
             
                  p data
         | 
| 92 92 | 
             
                end
         | 
| 93 93 |  | 
| 94 | 
            -
                assert Foo. | 
| 94 | 
            +
                assert Foo.__events.size == size+3, 'check registerd listener count'
         | 
| 95 95 | 
             
                Foo.remove_listener id
         | 
| 96 | 
            -
                assert Foo. | 
| 96 | 
            +
                assert Foo.__events.size == size+2, 'remove listener by id'
         | 
| 97 97 |  | 
| 98 98 | 
             
                Foo.remove_listener :foo
         | 
| 99 | 
            -
                assert Foo. | 
| 99 | 
            +
                assert Foo.__events.size == size, 'remove all "foo" listener'
         | 
| 100 100 | 
             
              end
         | 
| 101 101 |  | 
| 102 102 | 
             
              def test_once
         | 
    
        data/test/test_event_emitter.rb
    CHANGED
    
    | @@ -85,12 +85,12 @@ class TestEventEmitter < MiniTest::Unit::TestCase | |
| 85 85 | 
             
                  p data
         | 
| 86 86 | 
             
                end
         | 
| 87 87 |  | 
| 88 | 
            -
                assert @foo. | 
| 88 | 
            +
                assert @foo.__events.size == 3, 'check registerd listener count'
         | 
| 89 89 | 
             
                @foo.remove_listener id
         | 
| 90 | 
            -
                assert @foo. | 
| 90 | 
            +
                assert @foo.__events.size == 2, 'remove listener by id'
         | 
| 91 91 |  | 
| 92 92 | 
             
                @foo.remove_listener :bar
         | 
| 93 | 
            -
                assert @foo. | 
| 93 | 
            +
                assert @foo.__events.size == 0, 'remove all "bar" listener'
         | 
| 94 94 | 
             
              end
         | 
| 95 95 |  | 
| 96 96 | 
             
              def test_once
         | 
| @@ -85,12 +85,12 @@ class TestSingularMethod < MiniTest::Unit::TestCase | |
| 85 85 | 
             
                  p data
         | 
| 86 86 | 
             
                end
         | 
| 87 87 |  | 
| 88 | 
            -
                assert @foo. | 
| 88 | 
            +
                assert @foo.__events.size == 3, 'check registerd listener count'
         | 
| 89 89 | 
             
                @foo.remove_listener id
         | 
| 90 | 
            -
                assert @foo. | 
| 90 | 
            +
                assert @foo.__events.size == 2, 'remove listener by id'
         | 
| 91 91 |  | 
| 92 92 | 
             
                @foo.remove_listener :bar
         | 
| 93 | 
            -
                assert @foo. | 
| 93 | 
            +
                assert @foo.__events.size == 0, 'remove all "bar" listener'
         | 
| 94 94 | 
             
              end
         | 
| 95 95 |  | 
| 96 96 | 
             
              def test_once
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: event_emitter
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012- | 
| 12 | 
            +
            date: 2012-12-16 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rdoc
         | 
| @@ -106,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 106 106 | 
             
                  version: '0'
         | 
| 107 107 | 
             
                  segments:
         | 
| 108 108 | 
             
                  - 0
         | 
| 109 | 
            -
                  hash: - | 
| 109 | 
            +
                  hash: -1579719327575037681
         | 
| 110 110 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 111 111 | 
             
              none: false
         | 
| 112 112 | 
             
              requirements:
         |