AnasAlhasani / MVP-Swift-Templates

Xcode templates to automatically generate MVP components: view controller, presenter, router and configurator.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MVP-Swift-Templates

MVP (Model View Presenter) generator which consists of:

  • View
class LoginViewController: UIViewController {
    
    // MARK: Outlets
    
    // MARK: Injections
    var presenter: LoginPresenterInput!
    var configurator: LoginConfigurable!

    // MARK: View lifeCycle
    override func viewDidLoad() {
        super.viewDidLoad()
        
        configurator = LoginConfigurator()
        configurator.configure(viewController: self)
        presenter.viewDidLoad()
        
    }

}

// MARK: - LoginPresenterOutput
extension LoginViewController: LoginPresenterOutput {

}
  • Presenter
protocol LoginPresenterInput: BasePresenterInput {
    
    var router: LoginRoutable { get }
    
}

protocol LoginPresenterOutput: BasePresenterOutput {
    
}

class LoginPresenter {
    
    //MARK: Injections
    private weak var output: LoginPresenterOutput?
    var router: LoginRoutable
    
    //MARK: LifeCycle 
    init(output: LoginPresenterOutput,
         router: LoginRoutable) {
        
        self.output = output
        self.router = router
    }
    
}

// MARK: - LoginPresenterInput
extension LoginPresenter: LoginPresenterInput {
    
    func viewDidLoad() {
        
    }
    
}
  • Configurator
protocol LoginConfigurable {
    func configure(viewController: LoginViewController)
}

class LoginConfigurator: LoginConfigurable {

    //MARK: LoginConfigurable
    func configure(viewController: LoginViewController) {
    
        let router = LoginRouter(viewController: viewController)
        
        let presenter = LoginPresenter(
            output: viewController,
            router: router
        )
        
        viewController.presenter = presenter

    }
}
  • Router
protocol LoginRoutable: ViewRoutable {
    
}

class LoginRouter {
    
    // MARK: Injections
    weak var viewController: UIViewController?
    
    // MARK: LifeCycle
    required init(viewController: UIViewController) {
        self.viewController = viewController
    }
    
}

// MARK: - LoginRoutable
extension LoginRouter: LoginRoutable {
    
}

Installation

To install MVP Swift Xcode templates, run:

make install

To uninstall MVP Swift Xcode templates, run:

make uninstall

About

Xcode templates to automatically generate MVP components: view controller, presenter, router and configurator.

License:MIT License


Languages

Language:Makefile 100.0%