Skip to content

Instantly share code, notes, and snippets.

@simrandotdev
Created December 17, 2020 02:22
Show Gist options
  • Save simrandotdev/5ae5d00167dd84ceb474e9324ed19f4a to your computer and use it in GitHub Desktop.
Save simrandotdev/5ae5d00167dd84ceb474e9324ed19f4a to your computer and use it in GitHub Desktop.
Swift Viper boiler plate
//
// HomeViewBuilder.swift
// Viper_Basic_Slider
//
// Created by jc on 2020-12-16.
//
import UIKit
// view
protocol <#view#> : class {
}
// use case
protocol <#usecase#> : class {
}
// interactor : usecase
class <#interactor#>: <#usecase#> {
}
// wireframe
protocol <#wireframe#> : class, BaseWireframe{
}
// router: BaseViewRouter, wireframe
class router: BaseViewRouter, <#wireframe#> {
}
// presentation
protocol <#presentation#> : class {
weak var view: <#view#>? { get }
var router: <#wireframe#>? { get }
var interactor: <#wireframe#>? { get }
}
class <#presenter#> : <#presentation#> {
weak var view: <#view#>?
var router: <#wireframe#>?
var interactor: <#wireframe#>?
}
protocol <#modelbuilder#> {
// if a need arises where data neeeds to be passed, then remove this extension and implement the feature in the Builder class
static func assembleModule(data: String) -> UIViewController? {
return nil
}
}
class <#builder#> : <#modelbuilder#> {
static func assembleModule(data: String) -> UIViewController? {
let view = <#viewcontroller#>
let presenter = <#presenter#>
let interactor = <#inteactor#>
let router = <#router#>
view?.presenter = presenter
presenter.view = view
presenter.interactor = interactor
presenter.router = router
router.viewController = view
return view
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment