Skip to content
This repository has been archived by the owner on Oct 12, 2022. It is now read-only.

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
Juanpe Catalán committed Jun 8, 2017
2 parents b7852ff + d0fae46 commit 19b1f2f
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 61 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ This template generates all files that you need to create a new VIPER module. Al

This is an example, we're creating a Login module:

- ![Default, without divide](/assets/defaultOutput.md)
- ![With divided Interactor (Input & Output)](/assets/inputOutput.md)
- [Default, without divide](/assets/defaultOutput.md)
- [With divided Interactor (Input & Output)](/assets/inputOutput.md)

## VIPER diagram overview
![Preview](/assets/viper_diagram.png)
Expand Down
54 changes: 26 additions & 28 deletions assets/defaultOutput.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,72 +14,70 @@ protocol LoginPresenterProtocol: class {
//MARK: Interactor -
protocol LoginInteractorProtocol: class {

var presenter: LoginPresenterProtocol? { get set }
var presenter: LoginPresenterProtocol? { get set }
}

//MARK: View -
protocol LoginViewProtocol: class {

var presenter: LoginPresenterProtocol? { get set }
var presenter: LoginPresenterProtocol? { get set }
}
```

**Interactor**
```swift
class LoginInteractor: LoginInteractorProtocol {

weak var presenter: LoginPresenterProtocol?
weak var presenter: LoginPresenterProtocol?
}
```

**Presenter**
```swift
class LoginPresenter: LoginPresenterProtocol {

weak private var view: LoginViewProtocol?
private let interactor: LoginInteractorProtocol
private let router: LoginWireframeProtocol
weak private var view: LoginViewProtocol?
private let interactor: LoginInteractorProtocol
private let router: LoginWireframeProtocol

init(interface: LoginViewProtocol, interactor: LoginInteractorProtocol, router: LoginWireframeProtocol) {
self.view = interface
self.interactor = interactor
self.router = router

self.interactor.presenter = self
}
init(interface: LoginViewProtocol, interactor: LoginInteractorProtocol, router: LoginWireframeProtocol) {
self.view = interface
self.interactor = interactor
self.router = router
}
}
```

**Wireframe**
```swift
class LoginRouter: LoginWireframeProtocol {

weak var viewController: UIViewController?
weak var viewController: UIViewController?

static func createModule() -> UIViewController {
static func createModule() -> UIViewController {

let view = LoginViewController(nibName: nil, bundle: nil)
let interactor = LoginInteractor()
let router = LoginRouter()
let presenter = LoginPresenter(interface: view, interactor: interactor, router: router)
let view = LoginViewController(nibName: nil, bundle: nil)
let interactor = LoginInteractor()
let router = LoginRouter()
let presenter = LoginPresenter(interface: view, interactor: interactor, router: router)

view.presenter = presenter
interactor.presenter = presenter
router.viewController = view
view.presenter = presenter
interactor.presenter = presenter
router.viewController = view

return view
}
return view
}
}
```

**View**
```swift
class LoginViewController: UIViewController, LoginViewProtocol {

var presenter: LoginPresenterProtocol?
var presenter: LoginPresenterProtocol?

override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
```
62 changes: 31 additions & 31 deletions assets/inputOutput.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,74 +9,74 @@ protocol LoginWireframeProtocol: class {
//MARK: Presenter -
protocol LoginPresenterProtocol: class {

var interactor: LoginInteractorInputProtocol? { get set }
var interactor: LoginInteractorInputProtocol? { get set }
}

//MARK: Interactor -
protocol LoginInteractorOutputProtocol: class {

/* Interactor -> Presenter */
/* Interactor -> Presenter */
}

protocol LoginInteractorInputProtocol: class {

var presenter: LoginInteractorOutputProtocol? { get set }
var presenter: LoginInteractorOutputProtocol? { get set }

/* Presenter -> Interactor */
/* Presenter -> Interactor */
}

//MARK: View -
protocol LoginViewProtocol: class {

var presenter: LoginPresenterProtocol? { get set }
var presenter: LoginPresenterProtocol? { get set }

/* Presenter -> ViewController */
/* Presenter -> ViewController */
}
```

**Interactor**
```swift
class LoginInteractor: LoginInteractorInputProtocol {

weak var presenter: LoginInteractorOutputProtocol?
weak var presenter: LoginInteractorOutputProtocol?
}
```

**Presenter**
```swift
class LoginPresenter: LoginPresenterProtocol, LoginInteractorOutputProtocol {

weak private var view: LoginViewProtocol?
var interactor: LoginInteractorInputProtocol?
private let router: LoginWireframeProtocol
weak private var view: LoginViewProtocol?
var interactor: LoginInteractorInputProtocol?
private let router: LoginWireframeProtocol

init(interface: LoginViewProtocol, interactor: LoginInteractorInputProtocol?, router: LoginWireframeProtocol) {
self.view = interface
self.interactor = interactor
self.router = router
}
init(interface: LoginViewProtocol, interactor: LoginInteractorInputProtocol?, router: LoginWireframeProtocol) {
self.view = interface
self.interactor = interactor
self.router = router
}
}
```

**Wireframe**
```swift
class LoginRouter: LoginWireframeProtocol {

weak var viewController: UIViewController?
weak var viewController: UIViewController?

static func createModule() -> UIViewController {
// Change to get view from storyboard if not using progammatic UI
let view = LoginViewController(nibName: nil, bundle: nil)
let interactor = LoginInteractor()
let router = LoginRouter()
let presenter = LoginPresenter(interface: view, interactor: interactor, router: router)
static func createModule() -> UIViewController {
let view = LoginViewController(nibName: nil, bundle: nil)
let interactor = LoginInteractor()
let router = LoginRouter()
let presenter = LoginPresenter(interface: view, interactor: interactor, router: router)

view.presenter = presenter
interactor.presenter = presenter
router.viewController = view
view.presenter = presenter
interactor.presenter = presenter
router.viewController = view

return view
}
return view
}
}

```
Expand All @@ -85,10 +85,10 @@ return view
```swift
class LoginViewController: UIViewController, LoginViewProtocol {

var presenter: LoginPresenterProtocol?
var presenter: LoginPresenterProtocol?

override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
```

0 comments on commit 19b1f2f

Please sign in to comment.