Swiftpack.co - Package - hironytic/Eventitic

Eventitic

CI Status Version License Platform Carthage compatible

Library for dispatching and listening events.

Usage

Events are dispatched by EventSource.

let source = EventSource<String>()

// listen
let listener = source.listen { message in
    print(message)
}

// dispatch
source.fire("Hello, World!")

// unlisten
listener.unlisten()

There is a utility class ListenerStore which holds listeners and makes it possible to unlisten them all later.

let store = ListenerStore()

let source1 = EventSource<String>()
let source2 = EventSource<Int>()

// listen
source1.listen { message in
    print("listener 1: \(message)")
}.addToStore(store)

source1.listen { message in
    print("listener 2: \(message)")
}.addToStore(store)

source2.listen { value in
    print("listener 3: \(value)")
}.addToStore(store)

// dispatch
source1.fire("foo")
source2.fire(10)

// unlisten all
store.unlistenAll()

Requirements

  • iOS 8.0+
  • OS X 10.9+
  • watchOS 2.0+
  • tvOS 9.0+
  • Swift 4.0+

Installation

CocoaPods

Eventitic is available through CocoaPods. To install it, simply add the following lines to your Podfile:

use_frameworks!
pod "Eventitic", '~> 3.0'

Carthage

Eventitic is available through Carthage. To install it, simply add the following line to your Cartfile:

github "hironytic/Eventitic" ~> 3.0

Swift Package Manager

Eventitic is available through Swift Package Manager. To install it, add dependency to your Package.swift file like following:

import PackageDescription

let package = Package(
    name: "Hello",
    dependencies: [
        .package(url: "https://github.com/hironytic/Eventitic.git", from: "3.0.0"),
    ],
    ...
)

Author

Hironori Ichimiya, hiron@hironytic.com

License

Eventitic is available under the MIT license. See the LICENSE file for more info.

Github

link
Stars: 1
Help us keep the lights on

Dependencies

Used By

Total: 0

Releases

v3.0.0 - Sep 20, 2017

Adapt to Swift 4

v2.0.0 - Oct 25, 2016

  • Adapt to Swift 3

v1.0.1 - Apr 20, 2016

  • Support multiple platforms. (iOS, OS X, watchOS and tvOS)