From 1106790c4650572c791051afc762dbe1ef42cd44 Mon Sep 17 00:00:00 2001 From: Vlaho Date: Tue, 29 Jan 2019 21:42:26 +0100 Subject: [PATCH 1/6] Initial commit --- Base VIPER Interfaces V1/BaseWireframe.swift | 46 ------ .../PresenterInterface.swift | 31 ---- .../InteractorInterface.swift | 5 - .../PresenterInterface.swift | 31 ---- .../UIStoryboardExtension.swift | 10 -- Base VIPER Interfaces V2/ViewInterface.swift | 5 - .../BaseWireframe.swift | 0 .../FormatterInterface.swift | 5 + .../InteractorInterface.swift | 0 .../PresenterInterface.swift | 5 + .../UIStoryboardExtension.swift | 0 .../ViewInterface.swift | 0 Makefile | 6 +- .../Resources/Images}/TemplateIcon.png | Bin .../Resources/Images}/TemplateIcon@2x.png | Bin .../Resources/Images}/TemplateIcon@3x.png | Bin .../Resources/TemplateInfo.plist.erb | 42 ++++-- .../___FILEBASENAME___.storyboard.erb | 0 .../___FILEBASENAME___Formatter.swift.erb | 28 ++++ .../___FILEBASENAME___Interactor.swift.erb | 3 + .../___FILEBASENAME___Interfaces.swift.erb | 63 ++++++++ .../___FILEBASENAME___Presenter.swift.erb | 61 ++++++++ ...___FILEBASENAME___ViewController.swift.erb | 21 +++ .../___FILEBASENAME___ViewController.xib.erb | 22 +++ .../___FILEBASENAME___Wireframe.swift.erb | 54 +++++++ Templates/generator.rb | 27 ++++ Templates/main.rb | 90 ++++++++++++ Templates/parameters.rb | 118 +++++++++++++++ .../Module V1.xctemplate/TemplateInfo.plist | 137 ------------------ .../___FILEBASENAME___Interactor.swift | 19 --- .../___FILEBASENAME___Interfaces.swift | 27 ---- .../___FILEBASENAME___Presenter.swift | 35 ----- .../___FILEBASENAME___ViewController.swift | 29 ---- .../___FILEBASENAME___Wireframe.swift | 43 ------ .../___FILEBASENAME___Interactor.swift | 19 --- .../___FILEBASENAME___Interfaces.swift | 27 ---- .../Default/___FILEBASENAME___Presenter.swift | 33 ----- .../___FILEBASENAME___ViewController.swift | 30 ---- .../Default/___FILEBASENAME___Wireframe.swift | 38 ----- .../___FILEBASENAME___Interfaces.swift | 27 ---- .../___FILEBASENAME___Presenter.swift | 33 ----- .../___FILEBASENAME___Wireframe.swift | 38 ----- .../Module V2.xctemplate/TemplateIcon.png | Bin 10093 -> 0 bytes 43 files changed, 534 insertions(+), 674 deletions(-) delete mode 100755 Base VIPER Interfaces V1/BaseWireframe.swift delete mode 100755 Base VIPER Interfaces V1/PresenterInterface.swift delete mode 100644 Base VIPER Interfaces V2/InteractorInterface.swift delete mode 100644 Base VIPER Interfaces V2/PresenterInterface.swift delete mode 100644 Base VIPER Interfaces V2/UIStoryboardExtension.swift delete mode 100644 Base VIPER Interfaces V2/ViewInterface.swift rename {Base VIPER Interfaces V2 => Base VIPER Interfaces}/BaseWireframe.swift (100%) create mode 100644 Base VIPER Interfaces/FormatterInterface.swift rename {Base VIPER Interfaces V1 => Base VIPER Interfaces}/InteractorInterface.swift (100%) mode change 100755 => 100644 create mode 100644 Base VIPER Interfaces/PresenterInterface.swift rename {Base VIPER Interfaces V1 => Base VIPER Interfaces}/UIStoryboardExtension.swift (100%) mode change 100755 => 100644 rename {Base VIPER Interfaces V1 => Base VIPER Interfaces}/ViewInterface.swift (100%) mode change 100755 => 100644 rename {VIPER Templates/Module V1.xctemplate => Templates/Resources/Images}/TemplateIcon.png (100%) rename {VIPER Templates/Module V1.xctemplate => Templates/Resources/Images}/TemplateIcon@2x.png (100%) rename {VIPER Templates/Module V1.xctemplate => Templates/Resources/Images}/TemplateIcon@3x.png (100%) rename VIPER Templates/Module V2.xctemplate/TemplateInfo.plist => Templates/Resources/TemplateInfo.plist.erb (54%) mode change 100644 => 100755 rename VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___.storyboard => Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb (100%) create mode 100644 Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb rename VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interactor.swift => Templates/Resources/Templates/___FILEBASENAME___Interactor.swift.erb (88%) create mode 100644 Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb create mode 100644 Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb rename VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___ViewController.swift => Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb (60%) create mode 100644 Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb create mode 100644 Templates/Resources/Templates/___FILEBASENAME___Wireframe.swift.erb create mode 100644 Templates/generator.rb create mode 100644 Templates/main.rb create mode 100644 Templates/parameters.rb delete mode 100755 VIPER Templates/Module V1.xctemplate/TemplateInfo.plist delete mode 100755 VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interactor.swift delete mode 100755 VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interfaces.swift delete mode 100755 VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Presenter.swift delete mode 100755 VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___ViewController.swift delete mode 100755 VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Wireframe.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interactor.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interfaces.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Presenter.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___ViewController.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Wireframe.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interfaces.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Presenter.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Wireframe.swift delete mode 100644 VIPER Templates/Module V2.xctemplate/TemplateIcon.png diff --git a/Base VIPER Interfaces V1/BaseWireframe.swift b/Base VIPER Interfaces V1/BaseWireframe.swift deleted file mode 100755 index b3eda51..0000000 --- a/Base VIPER Interfaces V1/BaseWireframe.swift +++ /dev/null @@ -1,46 +0,0 @@ -import UIKit - -enum Transition { - case root - case push - case present(fromViewController: UIViewController) -} - -protocol WireframeInterface: class { - func popFromNavigationController(animated: Bool) - func dismiss(animated: Bool) -} - -class BaseWireframe { - - unowned var navigationController: UINavigationController - - init(navigationController: UINavigationController) { - self.navigationController = navigationController - } - - func show(_ viewController: UIViewController, with transition: Transition, animated: Bool) { - switch transition { - case .push: - navigationController.pushViewController(viewController, animated: animated) - case .present(let fromViewController): - navigationController.viewControllers = [viewController] - fromViewController.present(navigationController, animated: animated, completion: nil) - case .root: - navigationController.setViewControllers([viewController], animated: animated) - } - } - -} - -extension BaseWireframe: WireframeInterface { - - func popFromNavigationController(animated: Bool) { - let _ = navigationController.popViewController(animated: animated) - } - - func dismiss(animated: Bool) { - navigationController.dismiss(animated: animated) - } - -} diff --git a/Base VIPER Interfaces V1/PresenterInterface.swift b/Base VIPER Interfaces V1/PresenterInterface.swift deleted file mode 100755 index a374052..0000000 --- a/Base VIPER Interfaces V1/PresenterInterface.swift +++ /dev/null @@ -1,31 +0,0 @@ -protocol PresenterInterface: class { - func viewDidLoad() - func viewWillAppear(animated: Bool) - func viewDidAppear(animated: Bool) - func viewWillDisappear(animated: Bool) - func viewDidDisappear(animated: Bool) -} - -extension PresenterInterface { - - func viewDidLoad() { - fatalError("Implementation pending...") - } - - func viewWillAppear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewDidAppear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewWillDisappear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewDidDisappear(animated: Bool) { - fatalError("Implementation pending...") - } - -} diff --git a/Base VIPER Interfaces V2/InteractorInterface.swift b/Base VIPER Interfaces V2/InteractorInterface.swift deleted file mode 100644 index 9f0fb64..0000000 --- a/Base VIPER Interfaces V2/InteractorInterface.swift +++ /dev/null @@ -1,5 +0,0 @@ -protocol InteractorInterface: class { -} - -extension InteractorInterface { -} diff --git a/Base VIPER Interfaces V2/PresenterInterface.swift b/Base VIPER Interfaces V2/PresenterInterface.swift deleted file mode 100644 index a374052..0000000 --- a/Base VIPER Interfaces V2/PresenterInterface.swift +++ /dev/null @@ -1,31 +0,0 @@ -protocol PresenterInterface: class { - func viewDidLoad() - func viewWillAppear(animated: Bool) - func viewDidAppear(animated: Bool) - func viewWillDisappear(animated: Bool) - func viewDidDisappear(animated: Bool) -} - -extension PresenterInterface { - - func viewDidLoad() { - fatalError("Implementation pending...") - } - - func viewWillAppear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewDidAppear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewWillDisappear(animated: Bool) { - fatalError("Implementation pending...") - } - - func viewDidDisappear(animated: Bool) { - fatalError("Implementation pending...") - } - -} diff --git a/Base VIPER Interfaces V2/UIStoryboardExtension.swift b/Base VIPER Interfaces V2/UIStoryboardExtension.swift deleted file mode 100644 index 181086c..0000000 --- a/Base VIPER Interfaces V2/UIStoryboardExtension.swift +++ /dev/null @@ -1,10 +0,0 @@ -import UIKit - -extension UIStoryboard { - - func instantiateViewController(ofType _: T.Type, withIdentifier identifier: String? = nil) -> T { - let identifier = identifier ?? String(describing: T.self) - return instantiateViewController(withIdentifier: identifier) as! T - } - -} diff --git a/Base VIPER Interfaces V2/ViewInterface.swift b/Base VIPER Interfaces V2/ViewInterface.swift deleted file mode 100644 index 0966b94..0000000 --- a/Base VIPER Interfaces V2/ViewInterface.swift +++ /dev/null @@ -1,5 +0,0 @@ -protocol ViewInterface: class { -} - -extension ViewInterface { -} diff --git a/Base VIPER Interfaces V2/BaseWireframe.swift b/Base VIPER Interfaces/BaseWireframe.swift similarity index 100% rename from Base VIPER Interfaces V2/BaseWireframe.swift rename to Base VIPER Interfaces/BaseWireframe.swift diff --git a/Base VIPER Interfaces/FormatterInterface.swift b/Base VIPER Interfaces/FormatterInterface.swift new file mode 100644 index 0000000..2b30f34 --- /dev/null +++ b/Base VIPER Interfaces/FormatterInterface.swift @@ -0,0 +1,5 @@ +protocol FormatterInterface: class { +} + +extension FormatterInterface { +} diff --git a/Base VIPER Interfaces V1/InteractorInterface.swift b/Base VIPER Interfaces/InteractorInterface.swift old mode 100755 new mode 100644 similarity index 100% rename from Base VIPER Interfaces V1/InteractorInterface.swift rename to Base VIPER Interfaces/InteractorInterface.swift diff --git a/Base VIPER Interfaces/PresenterInterface.swift b/Base VIPER Interfaces/PresenterInterface.swift new file mode 100644 index 0000000..c3b1739 --- /dev/null +++ b/Base VIPER Interfaces/PresenterInterface.swift @@ -0,0 +1,5 @@ +protocol PresenterInterface: class { +} + +extension PresenterInterface { +} diff --git a/Base VIPER Interfaces V1/UIStoryboardExtension.swift b/Base VIPER Interfaces/UIStoryboardExtension.swift old mode 100755 new mode 100644 similarity index 100% rename from Base VIPER Interfaces V1/UIStoryboardExtension.swift rename to Base VIPER Interfaces/UIStoryboardExtension.swift diff --git a/Base VIPER Interfaces V1/ViewInterface.swift b/Base VIPER Interfaces/ViewInterface.swift old mode 100755 new mode 100644 similarity index 100% rename from Base VIPER Interfaces V1/ViewInterface.swift rename to Base VIPER Interfaces/ViewInterface.swift diff --git a/Makefile b/Makefile index 25d3f52..855bbe4 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,14 @@ XCODE_USER_TEMPLATES_DIR=~/Library/Developer/Xcode/Templates/File\ Templates VIPER_TEMPLATES_DIR=VIPER\ Templates +TEMPLATES_ROOT_DIR=Templates +MAIN_RUBY_SCRIPY=main.rb install_templates: rm -R -f $(XCODE_USER_TEMPLATES_DIR)/$(VIPER_TEMPLATES_DIR) mkdir -p $(XCODE_USER_TEMPLATES_DIR) - cp -R -f $(VIPER_TEMPLATES_DIR) $(XCODE_USER_TEMPLATES_DIR) + cd $(TEMPLATES_ROOT_DIR) && \ + ruby $(MAIN_RUBY_SCRIPY) && \ + mv -f $(VIPER_TEMPLATES_DIR) $(XCODE_USER_TEMPLATES_DIR) uninstall_templates: rm -R $(XCODE_USER_TEMPLATES_DIR)/$(VIPER_TEMPLATES_DIR) diff --git a/VIPER Templates/Module V1.xctemplate/TemplateIcon.png b/Templates/Resources/Images/TemplateIcon.png similarity index 100% rename from VIPER Templates/Module V1.xctemplate/TemplateIcon.png rename to Templates/Resources/Images/TemplateIcon.png diff --git a/VIPER Templates/Module V1.xctemplate/TemplateIcon@2x.png b/Templates/Resources/Images/TemplateIcon@2x.png similarity index 100% rename from VIPER Templates/Module V1.xctemplate/TemplateIcon@2x.png rename to Templates/Resources/Images/TemplateIcon@2x.png diff --git a/VIPER Templates/Module V1.xctemplate/TemplateIcon@3x.png b/Templates/Resources/Images/TemplateIcon@3x.png similarity index 100% rename from VIPER Templates/Module V1.xctemplate/TemplateIcon@3x.png rename to Templates/Resources/Images/TemplateIcon@3x.png diff --git a/VIPER Templates/Module V2.xctemplate/TemplateInfo.plist b/Templates/Resources/TemplateInfo.plist.erb old mode 100644 new mode 100755 similarity index 54% rename from VIPER Templates/Module V2.xctemplate/TemplateInfo.plist rename to Templates/Resources/TemplateInfo.plist.erb index 1b873b8..4e77671 --- a/VIPER Templates/Module V2.xctemplate/TemplateInfo.plist +++ b/Templates/Resources/TemplateInfo.plist.erb @@ -3,9 +3,9 @@ DefaultCompletionName - MyModule + VIPERModule Description - This generates a new Module using 🐍VIPER generator. It consists of the view controller, interactor, presenter, wireframe, and an interface file. + This generates a new Module using 🐍VIPER generator. Kind Xcode.IDEKit.TextSubstitutionFileTemplateKind Options @@ -18,7 +18,7 @@ Identifier moduleName Name - New Module Name: + New <%= @template.name %> Name: Required YES Type @@ -34,17 +34,39 @@ Identifier - Storyboard + interface Name - Generate Storyboard with UIViewController + Generate Interface Builder: Description - Generate Storyboard with UIViewController + Whicih interface builder to generate Type - checkbox + popup Default - false - NotPersisted - + <%= @interface.default.name%> + Values + + <%- @interface.types.each do |type| -%> + <%= type.name %> + <%- end -%> + + + + Identifier + complex + Name + Module Complexity: + Description + Estimated complexity of modul to be generated + Type + popup + Default + <%= @complexity.default.name%> + Values + + <%- @complexity.types.each do |type| -%> + <%= type.name %> + <%- end -%> + Platforms diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___.storyboard b/Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb similarity index 100% rename from VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___.storyboard rename to Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb diff --git a/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb new file mode 100644 index 0000000..1608d7b --- /dev/null +++ b/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb @@ -0,0 +1,28 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +<% if @template.generate_io -%> +import RxSwift +import RxCocoa +<% end -%> + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { + <%- if @template.generate_io -%> + func format(for input: ___VARIABLE_moduleName___.ForlatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { + return ___VARIABLE_moduleName___.FormatterOutput() + } + <%- end -%> +} diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interactor.swift b/Templates/Resources/Templates/___FILEBASENAME___Interactor.swift.erb similarity index 88% rename from VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interactor.swift rename to Templates/Resources/Templates/___FILEBASENAME___Interactor.swift.erb index 676cfc1..9ac5db0 100644 --- a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interactor.swift +++ b/Templates/Resources/Templates/___FILEBASENAME___Interactor.swift.erb @@ -9,6 +9,9 @@ // import Foundation +<% if @template.generate_io -%> +import RxSwift +<% end -%> final class ___VARIABLE_moduleName___Interactor { } diff --git a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb new file mode 100644 index 0000000..35429d7 --- /dev/null +++ b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb @@ -0,0 +1,63 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +<% if @template.generate_io -%> +import RxSwift +import RxCocoa +<% end -%> + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +<% if @template.generate_io -%> + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +<% end -%> +} + +<% if @complexity.generate_formatter -%> +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + <%- if @template.generate_io -%> + func format(for input: ___VARIABLE_moduleName__.FormatterInput) -> ___VARIABLE_moduleName__.FormatterOutput + <%- end -%> +} +<% end -%> + +<% if @complexity.generate_interactor -%> +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} +<% end -%> + +<% if @template.generate_io -%> +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + <%- if @complexity.generate_formatter -%> + let models: FormatterOutput + <%- end -%> + } + + <%- if @complexity.generate_formatter -%> + struct FormatterInput { + } + + struct FormatterOutput { + } + <%- end -%> + +} +<% end -%> \ No newline at end of file diff --git a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb new file mode 100644 index 0000000..7cb5a32 --- /dev/null +++ b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb @@ -0,0 +1,61 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +<% if @template.generate_io -%> +import RxSwift +import RxCocoa +<% end -%> + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned var view: ___VARIABLE_moduleName___ViewInterface +<% if @complexity.generate_formatter -%> + private var formatter: ___VARIABLE_moduleName___FormatterInterface +<% end -%> +<% if @complexity.generate_interactor -%> + private var interactor: ___VARIABLE_moduleName___InteractorInterface +<% end -%> + private var wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, <%= @complexity.generate_formatter ? 'formatter: ___VARIABLE_moduleName___FormatterInterface, ' : '' %><%= @complexity.generate_interactor ? 'interactor: ___VARIABLE_moduleName___InteractorInterface, ' : '' %>wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + <%- if @complexity.generate_formatter -%> + self.formatter = formatter + <%- end -%> + <%- if @complexity.generate_interactor -%> + self.interactor = interactor + <%- end -%> + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + <%- if @template.generate_io -%> + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + <%- if @complexity.generate_formatter -%> + + let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + + let formatterOutput = formatter.format(for: formatterInput) + + <%- end -%> + return ViewInput(<%= @complexity.generate_formatter ? 'models: formatterOutput' : '' %>) + } + + <%- end -%> +} diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___ViewController.swift b/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb similarity index 60% rename from VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___ViewController.swift rename to Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb index cca6aeb..fbc4339 100644 --- a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___ViewController.swift +++ b/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb @@ -9,6 +9,10 @@ // import UIKit +<% if @template.generate_io -%> +import RxSwift +import RxCocoa +<% end -%> final class ___VARIABLE_moduleName___ViewController: UIViewController { @@ -20,6 +24,9 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + <%- if @template.generate_io -%> + configure() + <%- end -%> } } @@ -28,3 +35,17 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } + +<%- if @template.generate_io -%> +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} +<%- end -%> diff --git a/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb b/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/Resources/Templates/___FILEBASENAME___Wireframe.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Wireframe.swift.erb new file mode 100644 index 0000000..2a3d3c1 --- /dev/null +++ b/Templates/Resources/Templates/___FILEBASENAME___Wireframe.swift.erb @@ -0,0 +1,54 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +<% if @template.generate_io -%> +import RxSwift +import RxCocoa +<% end -%> + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + +<% if !@interface.generate_xib -%> + // MARK: - Private properties - + + <%- if @interface.generate_sb -%> + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + <%- else -%> + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + <%- end -%> + +<% end -%> + // MARK: - Module setup - + + init() { + <%- if @interface.generate_xib -%> + let moduleViewController = ___VARIABLE_moduleName___ViewController() + <%- else -%> + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + <%- end -%> + super.init(viewController: moduleViewController) + + <%- if @complexity.generate_formatter -%> + let formatter = ___VARIABLE_moduleName___Formatter() + <%- end -%> + <%- if @complexity.generate_interactor -%> + let interactor = ___VARIABLE_moduleName___Interactor() + <%- end -%> + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, <%= @complexity.generate_formatter ? 'formatter: formatter, ' : '' %><%= @complexity.generate_interactor ? 'interactor: interactor, ' : '' %>wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/generator.rb b/Templates/generator.rb new file mode 100644 index 0000000..0639d3e --- /dev/null +++ b/Templates/generator.rb @@ -0,0 +1,27 @@ +require 'erb' +require 'fileutils' + +class Generator + include ERB::Util + attr_accessor :template, :interface, :complexity + + def initialize(template_file, template, interface, complexity) + @template_file = IO.read template_file + @template = template + @interface = interface + @complexity = complexity + end + + def render() + ERB.new(@template_file, nil, "-").result(binding) + end + + def save(file_name) + dirname = File.dirname(file_name) + unless File.directory?(dirname) + FileUtils.mkdir_p(dirname) + end + IO.write(file_name, render) + end + +end \ No newline at end of file diff --git a/Templates/main.rb b/Templates/main.rb new file mode 100644 index 0000000..5a8ccc5 --- /dev/null +++ b/Templates/main.rb @@ -0,0 +1,90 @@ +#!/usr/bin/env ruby + +require 'fileutils' +require './generator' +require './parameters' + +PATH = "VIPER Templates" +RESOURCES = "Resources" + + +def generate_xib(template, interface, complexity, source_folder, destination_folder) + return unless interface.generate_xib + generator = Generator.new("#{source_folder}/___FILEBASENAME___ViewController.xib.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___ViewController.xib" +end + +def generate_sb(template, interface, complexity, source_folder, destination_folder) + return unless interface.generate_sb + generator = Generator.new("#{source_folder}/___FILEBASENAME___.storyboard.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___.storyboard" +end + +def generate_interfaces(template, interface, complexity, source_folder, destination_folder) + generator = Generator.new("#{source_folder}/___FILEBASENAME___Interfaces.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___Interfaces.swift" +end + +def generate_wireframe(template, interface, complexity, source_folder, destination_folder) + generator = Generator.new("#{source_folder}/___FILEBASENAME___Wireframe.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___Wireframe.swift" +end + +def generate_presenter(template, interface, complexity, source_folder, destination_folder) + generator = Generator.new("#{source_folder}/___FILEBASENAME___Presenter.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___Presenter.swift" +end + +def generate_interactor(template, interface, complexity, source_folder, destination_folder) + return unless complexity.generate_interactor + generator = Generator.new("#{source_folder}/___FILEBASENAME___Interactor.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___Interactor.swift" +end + +def generate_formatter(template, interface, complexity, source_folder, destination_folder) + return unless complexity.generate_formatter + generator = Generator.new("#{source_folder}/___FILEBASENAME___Formatter.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___Formatter.swift" +end + +def generate_view(template, interface, complexity, source_folder, destination_folder) + generator = Generator.new("#{source_folder}/___FILEBASENAME___ViewController.swift.erb", template, interface, complexity) + generator.save "#{destination_folder}/___FILEBASENAME___ViewController.swift" +end + +def generate(template, interface, complexity) + source_folder = "#{RESOURCES}/Templates" + destination_folder = "#{PATH}/#{template.name}.xctemplate/#{interface.name}#{complexity.name}" + generate_xib(template, interface, complexity, source_folder, destination_folder) + generate_sb(template, interface, complexity, source_folder, destination_folder) + generate_interfaces(template, interface, complexity, source_folder, destination_folder) + generate_wireframe(template, interface, complexity, source_folder, destination_folder) + generate_presenter(template, interface, complexity, source_folder, destination_folder) + generate_interactor(template, interface, complexity, source_folder, destination_folder) + generate_formatter(template, interface, complexity, source_folder, destination_folder) + generate_view(template, interface, complexity, source_folder, destination_folder) +end + +def generate_info_plist(template) + generator = Generator.new("#{RESOURCES}/TemplateInfo.plist.erb", template, Interface, Complexity) + generator.save "#{PATH}/#{template.name}.xctemplate/TemplateInfo.plist" +end + +def copy_images(template) + source = "#{RESOURCES}/Images/." + destination = "#{PATH}/#{template.name}.xctemplate" + FileUtils.cp_r source, destination +end + +Template.types.each do |template| + generate_info_plist template + copy_images template + + Interface.types.each do |interface| + Complexity.types.each do |complexity| + + generate(template, interface, complexity) + + end + end +end \ No newline at end of file diff --git a/Templates/parameters.rb b/Templates/parameters.rb new file mode 100644 index 0000000..6ce9c3a --- /dev/null +++ b/Templates/parameters.rb @@ -0,0 +1,118 @@ +class Template + attr_accessor :name, :generate_io +end + +class Interface + attr_accessor :name, :generate_xib, :generate_sb, :wireframe_sb +end + +class Complexity + attr_accessor :name, :generate_interactor, :generate_formatter +end + +module Initializable + + def initialize(params) + params.each do |key, value| + instance_variable_set("@#{key}", value) + end + end + +end + +class Template + include Initializable + + def self.types + [normal, rx] + end + + def self.normal + Template.new({ + name: "Module", + generate_io: false + }) + end + + def self.rx + Template.new({ + name: "RxModule", + generate_io: true + }) + end +end + +class Interface + include Initializable + + def self.types + [xib, none, storyboard] + end + + def self.default + none + end + + def self.storyboard + Interface.new({ + name: "Storyboard", + generate_xib: false, + generate_sb: true, + wireframe_sb: true + }) + end + + def self.xib + Interface.new({ + name: "XIB", + generate_xib: true, + generate_sb: false, + wireframe_sb: false + }) + end + + def self.none + Interface.new({ + name: "None", + generate_xib: false, + generate_sb: false, + wireframe_sb: true + }) + end +end + +class Complexity + include Initializable + + def self.types + [simple, normal, hard] + end + + def self.default + normal + end + + def self.normal + Complexity.new({ + name: "Normal", + generate_interactor: true, + generate_formatter: false + }) + end + + def self.simple + Complexity.new({ + name: "Simple", + generate_interactor: false, + generate_formatter: false + }) + end + + def self.hard + Complexity.new({ + name: "Hard", + generate_interactor: true, + generate_formatter: true + }) + end +end \ No newline at end of file diff --git a/VIPER Templates/Module V1.xctemplate/TemplateInfo.plist b/VIPER Templates/Module V1.xctemplate/TemplateInfo.plist deleted file mode 100755 index f8783f0..0000000 --- a/VIPER Templates/Module V1.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,137 +0,0 @@ - - - - - DefaultCompletionName - MyModule - Description - This generates a new Module using 🐍VIPER generator. It consists of the view controller, interactor, presenter, wireframe, and an interface file. - Kind - Xcode.IDEKit.TextSubstitutionFileTemplateKind - Options - - - Description - The name of the module to create - Identifier - moduleName - Name - New Module Name: - NotPersisted - - Required - - Type - text - - - Default - ___VARIABLE_moduleName___ - Identifier - productName - Type - static - - - Default - ___VARIABLE_moduleName___Interfaces - Description - The interfaces name - Identifier - interfacesName - Name - Interfaces Name: - Required - - Type - static - - - Default - ___VARIABLE_moduleName___ViewController - Description - The view controller name - Identifier - viewControllerName - Name - View Controller Name: - Required - - Type - static - - - Default - ___VARIABLE_moduleName___Interactor - Description - The interactor name - Identifier - interactorName - Name - Interactor Name: - Required - - Type - static - - - Default - ___VARIABLE_moduleName___Presenter - Description - The presenter name - Identifier - presenterName - Name - Presenter Name: - Required - - Type - static - - - Default - ___VARIABLE_moduleName___Wireframe - Description - The wireframe name - Identifier - wireframeName - Name - Wireframe Name: - Required - - Type - static - - - Default - UIViewController - Description - What view controller class to subclass for the new module - FallbackHeader - #import <UIKit/UIKit.h> - Identifier - viewControllerSubclass - Name - Subclass of: - NotPersisted - - Required - YES - Type - class - Values - - UIViewController - - - - Platforms - - com.apple.platform.iphoneos - - SortOrder - 7 - Summary - This generates a new 🐍 VIPER module. - - diff --git a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interactor.swift b/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interactor.swift deleted file mode 100755 index 676cfc1..0000000 --- a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interactor.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import Foundation - -final class ___VARIABLE_moduleName___Interactor { -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { -} diff --git a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interfaces.swift b/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interfaces.swift deleted file mode 100755 index 2fd41a7..0000000 --- a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Interfaces.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -enum ___VARIABLE_moduleName___NavigationOption { -} - -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} diff --git a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Presenter.swift b/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Presenter.swift deleted file mode 100755 index 0579bab..0000000 --- a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Presenter.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Presenter { - - // MARK: - Private properties - - - private unowned let _view: ___VARIABLE_moduleName___ViewInterface - private let _interactor: ___VARIABLE_moduleName___InteractorInterface - private let _wireframe: ___VARIABLE_moduleName___WireframeInterface - - // MARK: - Lifecycle - - - init(wireframe: ___VARIABLE_moduleName___WireframeInterface, - view: ___VARIABLE_moduleName___ViewInterface, - interactor: ___VARIABLE_moduleName___InteractorInterface) { - _wireframe = wireframe - _view = view - _interactor = interactor - } -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { -} diff --git a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___ViewController.swift b/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___ViewController.swift deleted file mode 100755 index 9fa6e17..0000000 --- a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___ViewController.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___ViewController: UIViewController { - - // MARK: - Public properties - - - var presenter: ___VARIABLE_moduleName___PresenterInterface! - - // MARK: - Lifecycle - - - override func viewDidLoad() { - super.viewDidLoad() - } -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { -} diff --git a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Wireframe.swift b/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Wireframe.swift deleted file mode 100755 index 02fac53..0000000 --- a/VIPER Templates/Module V1.xctemplate/UIViewController/___FILEBASENAME___Wireframe.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { - - // MARK: - Private properties - - - private let _storyboard = UIStoryboard(name: <#Storyboard name#>, bundle: nil) - - // MARK: - Module setup - - - func configureModule(with viewController: ___VARIABLE_moduleName___ViewController) { - let interactor = ___VARIABLE_moduleName___Interactor() - let presenter = ___VARIABLE_moduleName___Presenter(wireframe: self, view: viewController, interactor: interactor) - viewController.presenter = presenter - } - - // MARK: - Transitions - - - func show(with transition: Transition, animated: Bool = true) { - let moduleViewController = _storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) - configureModule(with: moduleViewController) - - show(moduleViewController, with: transition, animated: animated) - } -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { - - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) { - } -} diff --git a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interactor.swift b/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interactor.swift deleted file mode 100644 index 676cfc1..0000000 --- a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interactor.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import Foundation - -final class ___VARIABLE_moduleName___Interactor { -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interfaces.swift b/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interfaces.swift deleted file mode 100644 index 2fd41a7..0000000 --- a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Interfaces.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -enum ___VARIABLE_moduleName___NavigationOption { -} - -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Presenter.swift b/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Presenter.swift deleted file mode 100644 index 099a0ab..0000000 --- a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Presenter.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Presenter { - - // MARK: - Private properties - - - private unowned let _view: ___VARIABLE_moduleName___ViewInterface - private let _wireframe: ___VARIABLE_moduleName___WireframeInterface - private let _interactor: ___VARIABLE_moduleName___InteractorInterface - - // MARK: - Lifecycle - - - init(wireframe: ___VARIABLE_moduleName___WireframeInterface, view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface) { - _wireframe = wireframe - _view = view - _interactor = interactor - } -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___ViewController.swift b/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___ViewController.swift deleted file mode 100644 index cca6aeb..0000000 --- a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___ViewController.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___ViewController: UIViewController { - - // MARK: - Public properties - - - var presenter: ___VARIABLE_moduleName___PresenterInterface! - - // MARK: - Lifecycle - - - override func viewDidLoad() { - super.viewDidLoad() - } - -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Wireframe.swift b/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Wireframe.swift deleted file mode 100644 index 12a61b2..0000000 --- a/VIPER Templates/Module V2.xctemplate/Default/___FILEBASENAME___Wireframe.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { - - // MARK: - Private properties - - - private let _storyboard = UIStoryboard(name: <#Storyboard name#>, bundle: nil) - - // MARK: - Module setup - - - init() { - let moduleViewController = _storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) - super.init(viewController: moduleViewController) - - let interactor = ___VARIABLE_moduleName___Interactor() - let presenter = ___VARIABLE_moduleName___Presenter(wireframe: self, view: moduleViewController, interactor: interactor) - moduleViewController.presenter = presenter - } - -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { - - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) { - } -} diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interfaces.swift b/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interfaces.swift deleted file mode 100644 index 2fd41a7..0000000 --- a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Interfaces.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -enum ___VARIABLE_moduleName___NavigationOption { -} - -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Presenter.swift b/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Presenter.swift deleted file mode 100644 index 099a0ab..0000000 --- a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Presenter.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Presenter { - - // MARK: - Private properties - - - private unowned let _view: ___VARIABLE_moduleName___ViewInterface - private let _wireframe: ___VARIABLE_moduleName___WireframeInterface - private let _interactor: ___VARIABLE_moduleName___InteractorInterface - - // MARK: - Lifecycle - - - init(wireframe: ___VARIABLE_moduleName___WireframeInterface, view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface) { - _wireframe = wireframe - _view = view - _interactor = interactor - } -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { -} diff --git a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Wireframe.swift b/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Wireframe.swift deleted file mode 100644 index 5946dc1..0000000 --- a/VIPER Templates/Module V2.xctemplate/Storyboard/___FILEBASENAME___Wireframe.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. -// -// This file was generated by the 🐍 VIPER generator -// - -import UIKit - -final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { - - // MARK: - Private properties - - - private let _storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) - - // MARK: - Module setup - - - init() { - let moduleViewController = _storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) - super.init(viewController: moduleViewController) - - let interactor = ___VARIABLE_moduleName___Interactor() - let presenter = ___VARIABLE_moduleName___Presenter(wireframe: self, view: moduleViewController, interactor: interactor) - moduleViewController.presenter = presenter - } - -} - -// MARK: - Extensions - - -extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { - - func navigate(to option: ___VARIABLE_moduleName___NavigationOption) { - } -} diff --git a/VIPER Templates/Module V2.xctemplate/TemplateIcon.png b/VIPER Templates/Module V2.xctemplate/TemplateIcon.png deleted file mode 100644 index f47277e0e14ddc813dbcb8f3fc1be001310625be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10093 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 P00000NkvXXu0mjfOgtny From df56ef1d3614232b34e03f3c05941ceb71d38f41 Mon Sep 17 00:00:00 2001 From: Vlaho Date: Thu, 31 Jan 2019 16:06:48 +0100 Subject: [PATCH 2/6] PR Fixes --- Templates/Resources/TemplateInfo.plist.erb | 4 ++-- .../Templates/___FILEBASENAME___Formatter.swift.erb | 4 +++- .../Templates/___FILEBASENAME___Interfaces.swift.erb | 6 +++--- .../Templates/___FILEBASENAME___Presenter.swift.erb | 8 ++++---- Templates/parameters.rb | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Templates/Resources/TemplateInfo.plist.erb b/Templates/Resources/TemplateInfo.plist.erb index 4e77671..5baa398 100755 --- a/Templates/Resources/TemplateInfo.plist.erb +++ b/Templates/Resources/TemplateInfo.plist.erb @@ -38,7 +38,7 @@ Name Generate Interface Builder: Description - Whicih interface builder to generate + Which interface builder to generate Type popup Default @@ -56,7 +56,7 @@ Name Module Complexity: Description - Estimated complexity of modul to be generated + Type of a module to generate - simple, with interactor, or with interactor and formatter Type popup Default diff --git a/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb index 1608d7b..3d1cd7d 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Formatter.swift.erb @@ -21,8 +21,10 @@ final class ___VARIABLE_moduleName___Formatter { extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { <%- if @template.generate_io -%> - func format(for input: ___VARIABLE_moduleName___.ForlatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { + + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { return ___VARIABLE_moduleName___.FormatterOutput() } + <%- end -%> } diff --git a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb index 35429d7..7dd4517 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb @@ -29,16 +29,16 @@ protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { <% if @complexity.generate_formatter -%> protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { <%- if @template.generate_io -%> - func format(for input: ___VARIABLE_moduleName__.FormatterInput) -> ___VARIABLE_moduleName__.FormatterOutput + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput <%- end -%> } -<% end -%> +<% end -%> <% if @complexity.generate_interactor -%> protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } -<% end -%> +<% end -%> <% if @template.generate_io -%> enum ___VARIABLE_moduleName___ { diff --git a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb index 7cb5a32..a1aab11 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb @@ -18,14 +18,14 @@ final class ___VARIABLE_moduleName___Presenter { // MARK: - Private properties - - private unowned var view: ___VARIABLE_moduleName___ViewInterface + private unowned let view: ___VARIABLE_moduleName___ViewInterface <% if @complexity.generate_formatter -%> - private var formatter: ___VARIABLE_moduleName___FormatterInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface <% end -%> <% if @complexity.generate_interactor -%> - private var interactor: ___VARIABLE_moduleName___InteractorInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface <% end -%> - private var wireframe: ___VARIABLE_moduleName___WireframeInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface // MARK: - Lifecycle - diff --git a/Templates/parameters.rb b/Templates/parameters.rb index 6ce9c3a..65021ce 100644 --- a/Templates/parameters.rb +++ b/Templates/parameters.rb @@ -94,7 +94,7 @@ def self.default def self.normal Complexity.new({ - name: "Normal", + name: "Interactor", generate_interactor: true, generate_formatter: false }) @@ -110,7 +110,7 @@ def self.simple def self.hard Complexity.new({ - name: "Hard", + name: "Interactor & Formatter", generate_interactor: true, generate_formatter: true }) From 514262c7f1087da5af3a538f140e2621b21ed0ab Mon Sep 17 00:00:00 2001 From: Vlaho Date: Tue, 19 Mar 2019 21:05:32 +0100 Subject: [PATCH 3/6] Finish PR review, generated templates --- Makefile | 10 +-- README.md | 7 +- .../___FILEBASENAME___Interfaces.swift.erb | 8 +- .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 23 +++++ .../___FILEBASENAME___Presenter.swift | 33 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 35 ++++++++ .../___FILEBASENAME___Formatter.swift | 19 ++++ .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 26 ++++++ .../___FILEBASENAME___Presenter.swift | 35 ++++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 36 ++++++++ .../___FILEBASENAME___Interfaces.swift | 20 +++++ .../___FILEBASENAME___Presenter.swift | 31 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 34 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 23 +++++ .../___FILEBASENAME___Presenter.swift | 33 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 35 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Formatter.swift | 19 ++++ .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 26 ++++++ .../___FILEBASENAME___Presenter.swift | 35 ++++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 36 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Interfaces.swift | 20 +++++ .../___FILEBASENAME___Presenter.swift | 31 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___Wireframe.swift | 34 ++++++++ .../Module.xctemplate/TemplateIcon.png | Bin 0 -> 3011 bytes .../Module.xctemplate/TemplateIcon@2x.png | Bin 0 -> 6624 bytes .../Module.xctemplate/TemplateIcon@3x.png | Bin 0 -> 10093 bytes .../Module.xctemplate/TemplateInfo.plist | 81 ++++++++++++++++++ .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 23 +++++ .../___FILEBASENAME___Presenter.swift | 33 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 31 +++++++ .../___FILEBASENAME___Formatter.swift | 19 ++++ .../___FILEBASENAME___Interactor.swift | 19 ++++ .../___FILEBASENAME___Interfaces.swift | 26 ++++++ .../___FILEBASENAME___Presenter.swift | 35 ++++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 32 +++++++ .../___FILEBASENAME___Interfaces.swift | 20 +++++ .../___FILEBASENAME___Presenter.swift | 31 +++++++ .../___FILEBASENAME___ViewController.swift | 31 +++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 30 +++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 36 ++++++++ .../___FILEBASENAME___Presenter.swift | 40 +++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 37 ++++++++ .../___FILEBASENAME___Formatter.swift | 26 ++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 47 ++++++++++ .../___FILEBASENAME___Presenter.swift | 47 ++++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 38 ++++++++ .../___FILEBASENAME___Interfaces.swift | 33 +++++++ .../___FILEBASENAME___Presenter.swift | 38 ++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 36 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 36 ++++++++ .../___FILEBASENAME___Presenter.swift | 40 +++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 37 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Formatter.swift | 26 ++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 47 ++++++++++ .../___FILEBASENAME___Presenter.swift | 47 ++++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 38 ++++++++ .../___FILEBASENAME___.storyboard | 29 +++++++ .../___FILEBASENAME___Interfaces.swift | 33 +++++++ .../___FILEBASENAME___Presenter.swift | 38 ++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___Wireframe.swift | 36 ++++++++ .../RxModule.xctemplate/TemplateIcon.png | Bin 0 -> 3011 bytes .../RxModule.xctemplate/TemplateIcon@2x.png | Bin 0 -> 6624 bytes .../RxModule.xctemplate/TemplateIcon@3x.png | Bin 0 -> 10093 bytes .../RxModule.xctemplate/TemplateInfo.plist | 81 ++++++++++++++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 36 ++++++++ .../___FILEBASENAME___Presenter.swift | 40 +++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 33 +++++++ .../___FILEBASENAME___Formatter.swift | 26 ++++++ .../___FILEBASENAME___Interactor.swift | 20 +++++ .../___FILEBASENAME___Interfaces.swift | 47 ++++++++++ .../___FILEBASENAME___Presenter.swift | 47 ++++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 34 ++++++++ .../___FILEBASENAME___Interfaces.swift | 33 +++++++ .../___FILEBASENAME___Presenter.swift | 38 ++++++++ .../___FILEBASENAME___ViewController.swift | 45 ++++++++++ .../___FILEBASENAME___ViewController.xib | 22 +++++ .../___FILEBASENAME___Wireframe.swift | 32 +++++++ Templates/parameters.rb | 2 +- 114 files changed, 3385 insertions(+), 14 deletions(-) create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/TemplateIcon.png create mode 100644 Templates/VIPER Templates/Module.xctemplate/TemplateIcon@2x.png create mode 100644 Templates/VIPER Templates/Module.xctemplate/TemplateIcon@3x.png create mode 100644 Templates/VIPER Templates/Module.xctemplate/TemplateInfo.plist create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon.png create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon@2x.png create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon@3x.png create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/TemplateInfo.plist create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib create mode 100644 Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift diff --git a/Makefile b/Makefile index 855bbe4..060941d 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,10 @@ XCODE_USER_TEMPLATES_DIR=~/Library/Developer/Xcode/Templates/File\ Templates -VIPER_TEMPLATES_DIR=VIPER\ Templates -TEMPLATES_ROOT_DIR=Templates -MAIN_RUBY_SCRIPY=main.rb +VIPER_TEMPLATES_DIR=Templates/VIPER\ Templates install_templates: rm -R -f $(XCODE_USER_TEMPLATES_DIR)/$(VIPER_TEMPLATES_DIR) mkdir -p $(XCODE_USER_TEMPLATES_DIR) - cd $(TEMPLATES_ROOT_DIR) && \ - ruby $(MAIN_RUBY_SCRIPY) && \ - mv -f $(VIPER_TEMPLATES_DIR) $(XCODE_USER_TEMPLATES_DIR) + cp -R -f $(VIPER_TEMPLATES_DIR) $(XCODE_USER_TEMPLATES_DIR) uninstall_templates: - rm -R $(XCODE_USER_TEMPLATES_DIR)/$(VIPER_TEMPLATES_DIR) + rm -R $(XCODE_USER_TEMPLATES_DIR)/$(VIPER_TEMPLATES_DIR) \ No newline at end of file diff --git a/README.md b/README.md index 9dd21c8..2a12990 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ ![iOS VIPER](/Images/ios_viper_logo.png "iOS VIPER") # Versions -Latest version is v2. You can still use initial v1 of the VIPER templates generator. v2 has breaking changes in base VIPER methods related to wireframe setup and navigation and is recommended to use it if starting a new project. It's not backwards compatible with v1. +Latest version is v3. +You can find older versions in [version/2.0 branch](https://github.com/infinum/iOS-VIPER-Xcode-Templates/tree/version/2.0). # Installation instructions @@ -31,8 +32,9 @@ Let's go over the basics quickly - the main components of VIPER are as follows: * **View**: contains UI logic and knows how to layout and animate itself. It displays what it's _told_ by the Presenter and it _delegates_ user interaction actions to the Presenter. Ideally it contains no business logic, only view logic. * **Interactor**: used for fetching data when requested by the Presenter, regardless of where the data is coming from. Contains only business logic. -* **Presenter**: prepares the content which it receives from the Interactor to be presented by the View. Contains business and view logic - basically it connects the two. +* **Presenter**: also known as the event handler. Handles all the communication with view, interactor and wireframe. Contains presentation logic - basically it controllers the module. * **Entity**: models which are handled by the Interactor. Contains only business logic, but primarily data, not rules. +* **Formatter**(new): handles formatting logic. Sits between presenter and the view. It formats the data from the business world into something that can be consumed by the view. * **Router**: handles navigation logic. In our case we use components called Wireframes for this responsibility. ## Components @@ -43,6 +45,7 @@ Module components: * **View** * **Presenter** * **Interactor** (not mandatory) +* **Formatter** (not mandatory) * **Wireframe** In some simpler cases you won't need an Interactor for a certain module, which is why this component is not mandatory. These are cases where you don't need to fetch any data, which is usually not common. diff --git a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb index 7dd4517..33f4571 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb @@ -25,21 +25,21 @@ protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput <% end -%> } - <% if @complexity.generate_formatter -%> + protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { <%- if @template.generate_io -%> func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput <%- end -%> } - <% end -%> <% if @complexity.generate_interactor -%> + protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } - <% end -%> <% if @template.generate_io -%> + enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -57,7 +57,7 @@ enum ___VARIABLE_moduleName___ { struct FormatterOutput { } + <%- end -%> - } <% end -%> \ No newline at end of file diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..c3bebb6 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..51cc5ea --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..40ba967 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7ea487f --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..a9473d4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..22e31e4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..d91d43d --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..3366117 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..7995f03 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..e83ffe2 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,34 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..c3bebb6 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..51cc5ea --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..8c0a397 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7ea487f --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..a9473d4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..22e31e4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..b3adcd7 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..3366117 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..7995f03 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..8ca61c6 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,34 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/TemplateIcon.png b/Templates/VIPER Templates/Module.xctemplate/TemplateIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..21ba540fdb915af20eb77e03b230481cb9c78dc6 GIT binary patch literal 3011 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 FV1f?^y^{a{ literal 0 HcmV?d00001 diff --git a/Templates/VIPER Templates/Module.xctemplate/TemplateIcon@2x.png b/Templates/VIPER Templates/Module.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f95e65cb78caa6c674abf8c4f691e8640d5b7e49 GIT binary patch literal 6624 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 P00000NkvXXu0mjfOgtny literal 0 HcmV?d00001 diff --git a/Templates/VIPER Templates/Module.xctemplate/TemplateInfo.plist b/Templates/VIPER Templates/Module.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..e977270 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/TemplateInfo.plist @@ -0,0 +1,81 @@ + + + + + DefaultCompletionName + VIPERModule + Description + This generates a new Module using 🐍VIPER generator. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the module to create + Default + + Identifier + moduleName + Name + New Module Name: + Required + YES + Type + text + + + Default + ___VARIABLE_moduleName___ + Identifier + productName + Type + static + + + Identifier + interface + Name + Generate Interface Builder: + Description + Which interface builder to generate + Type + popup + Default + None + Values + + XIB + None + Storyboard + + + + Identifier + complex + Name + Module Complexity: + Description + Type of a module to generate - simple, with interactor, or with interactor and formatter + Type + popup + Default + Interactor + Values + + Simple + Interactor + InteractorAndFormatter + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 1 + Summary + This generates a new 🐍 VIPER module. + + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..c3bebb6 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..51cc5ea --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..90d64e7 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7ea487f --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..676cfc1 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,19 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..a9473d4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..22e31e4 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..2641d56 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,32 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..3366117 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..7995f03 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { +} diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..5d116a0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..3ae8d98 --- /dev/null +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,30 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..2b30342 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..ba98f2b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,40 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..c2c0462 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,37 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7e26c0b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { + + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { + return ___VARIABLE_moduleName___.FormatterOutput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..5f4255f --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + let models: FormatterOutput + } + + struct FormatterInput { + } + + struct FormatterOutput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..f0d94e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + + let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + + let formatterOutput = formatter.format(for: formatterInput) + + return ViewInput(models: formatterOutput) + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..2bebcec --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..7eafe07 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..a2e7c72 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..8ffc9e9 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "<#___VARIABLE_moduleName___#>", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..2b30342 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..ba98f2b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,40 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..432eaeb --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,37 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7e26c0b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { + + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { + return ___VARIABLE_moduleName___.FormatterOutput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..5f4255f --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + let models: FormatterOutput + } + + struct FormatterInput { + } + + struct FormatterOutput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..f0d94e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + + let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + + let formatterOutput = formatter.format(for: formatterInput) + + return ViewInput(models: formatterOutput) + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..06be2be --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard new file mode 100644 index 0000000..7137d29 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..7eafe07 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..a2e7c72 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..2d73c53 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Private properties - + + private let storyboard = UIStoryboard(name: "___VARIABLE_moduleName___", bundle: nil) + + // MARK: - Module setup - + + init() { + let moduleViewController = storyboard.instantiateViewController(ofType: ___VARIABLE_moduleName___ViewController.self) + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon.png b/Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..21ba540fdb915af20eb77e03b230481cb9c78dc6 GIT binary patch literal 3011 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 FV1f?^y^{a{ literal 0 HcmV?d00001 diff --git a/Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon@2x.png b/Templates/VIPER Templates/RxModule.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f95e65cb78caa6c674abf8c4f691e8640d5b7e49 GIT binary patch literal 6624 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 P00000NkvXXu0mjfOgtny literal 0 HcmV?d00001 diff --git a/Templates/VIPER Templates/RxModule.xctemplate/TemplateInfo.plist b/Templates/VIPER Templates/RxModule.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..ecb8d17 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/TemplateInfo.plist @@ -0,0 +1,81 @@ + + + + + DefaultCompletionName + VIPERModule + Description + This generates a new Module using 🐍VIPER generator. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the module to create + Default + + Identifier + moduleName + Name + New RxModule Name: + Required + YES + Type + text + + + Default + ___VARIABLE_moduleName___ + Identifier + productName + Type + static + + + Identifier + interface + Name + Generate Interface Builder: + Description + Which interface builder to generate + Type + popup + Default + None + Values + + XIB + None + Storyboard + + + + Identifier + complex + Name + Module Complexity: + Description + Type of a module to generate - simple, with interactor, or with interactor and formatter + Type + popup + Default + Interactor + Values + + Simple + Interactor + InteractorAndFormatter + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 1 + Summary + This generates a new 🐍 VIPER module. + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..2b30342 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,36 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..ba98f2b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift @@ -0,0 +1,40 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..303e39d --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift new file mode 100644 index 0000000..7e26c0b --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Formatter.swift @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Formatter { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Formatter: ___VARIABLE_moduleName___FormatterInterface { + + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput { + return ___VARIABLE_moduleName___.FormatterOutput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..02d9dba --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interactor.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import Foundation +import RxSwift + +final class ___VARIABLE_moduleName___Interactor { +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Interactor: ___VARIABLE_moduleName___InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..5f4255f --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + let models: FormatterOutput + } + + struct FormatterInput { + } + + struct FormatterOutput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..f0d94e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -0,0 +1,47 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let formatter: ___VARIABLE_moduleName___FormatterInterface + private let interactor: ___VARIABLE_moduleName___InteractorInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, formatter: ___VARIABLE_moduleName___FormatterInterface, interactor: ___VARIABLE_moduleName___InteractorInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.formatter = formatter + self.interactor = interactor + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + + let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + + let formatterOutput = formatter.format(for: formatterInput) + + return ViewInput(models: formatterOutput) + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..623e7d4 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,34 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let formatter = ___VARIABLE_moduleName___Formatter() + let interactor = ___VARIABLE_moduleName___Interactor() + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, formatter: formatter, interactor: interactor, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift new file mode 100644 index 0000000..7eafe07 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift @@ -0,0 +1,33 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..a2e7c72 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Presenter { + + // MARK: - Private properties - + + private unowned let view: ___VARIABLE_moduleName___ViewInterface + private let wireframe: ___VARIABLE_moduleName___WireframeInterface + + // MARK: - Lifecycle - + + init(view: ___VARIABLE_moduleName___ViewInterface, wireframe: ___VARIABLE_moduleName___WireframeInterface) { + self.view = view + self.wireframe = wireframe + } +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { + + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { + return ViewInput() + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..c09c3e6 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift @@ -0,0 +1,45 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___ViewController: UIViewController { + + // MARK: - Public properties - + + var presenter: ___VARIABLE_moduleName___PresenterInterface! + + // MARK: - Lifecycle - + + override func viewDidLoad() { + super.viewDidLoad() + configure() + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { +} + +private extension ___VARIABLE_moduleName___ViewController { + + func configure() { + + let output = ___VARIABLE_moduleName___.ViewOutput() + + let input = presenter.configure(with: output) + + } + +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib new file mode 100644 index 0000000..d57cda0 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift new file mode 100644 index 0000000..ee67530 --- /dev/null +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Wireframe.swift @@ -0,0 +1,32 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the 🐍 VIPER generator +// + +import UIKit +import RxSwift +import RxCocoa + +final class ___VARIABLE_moduleName___Wireframe: BaseWireframe { + + // MARK: - Module setup - + + init() { + let moduleViewController = ___VARIABLE_moduleName___ViewController() + super.init(viewController: moduleViewController) + + let presenter = ___VARIABLE_moduleName___Presenter(view: moduleViewController, wireframe: self) + moduleViewController.presenter = presenter + } + +} + +// MARK: - Extensions - + +extension ___VARIABLE_moduleName___Wireframe: ___VARIABLE_moduleName___WireframeInterface { +} diff --git a/Templates/parameters.rb b/Templates/parameters.rb index 65021ce..c18486b 100644 --- a/Templates/parameters.rb +++ b/Templates/parameters.rb @@ -110,7 +110,7 @@ def self.simple def self.hard Complexity.new({ - name: "Interactor & Formatter", + name: "InteractorAndFormatter", generate_interactor: true, generate_formatter: true }) From c867a1ad72b19fc46207b1d904903a151b52b759 Mon Sep 17 00:00:00 2001 From: Filip Gulan Date: Wed, 20 Mar 2019 08:03:18 +0100 Subject: [PATCH 4/6] Fix typos and update class names. --- Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb | 2 +- .../Resources/Templates/___FILEBASENAME___Presenter.swift.erb | 2 +- .../Templates/___FILEBASENAME___ViewController.xib.erb | 2 +- .../StoryboardInteractor/___FILEBASENAME___.storyboard | 2 +- .../___FILEBASENAME___.storyboard | 2 +- .../StoryboardSimple/___FILEBASENAME___.storyboard | 2 +- .../XIBInteractor/___FILEBASENAME___ViewController.xib | 2 +- .../___FILEBASENAME___ViewController.xib | 2 +- .../XIBSimple/___FILEBASENAME___ViewController.xib | 2 +- .../___FILEBASENAME___Presenter.swift | 2 +- .../StoryboardInteractor/___FILEBASENAME___.storyboard | 2 +- .../___FILEBASENAME___.storyboard | 2 +- .../___FILEBASENAME___Presenter.swift | 2 +- .../StoryboardSimple/___FILEBASENAME___.storyboard | 2 +- .../XIBInteractor/___FILEBASENAME___ViewController.xib | 2 +- .../XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift | 2 +- .../___FILEBASENAME___ViewController.xib | 2 +- .../XIBSimple/___FILEBASENAME___ViewController.xib | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb b/Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb index 7137d29..121f30b 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___.storyboard.erb @@ -13,7 +13,7 @@ - + diff --git a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb index a1aab11..7c2701b 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb @@ -49,7 +49,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { <%- if @complexity.generate_formatter -%> - let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + let formatterInput = ___VARIABLE_moduleName___.FormatterInput() let formatterOutput = formatter.format(for: formatterInput) diff --git a/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb b/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb index d57cda0..949017e 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___ViewController.xib.erb @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift index f0d94e6..6e90abb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -37,7 +37,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + let formatterInput = ___VARIABLE_moduleName___.FormatterInput() let formatterOutput = formatter.format(for: formatterInput) diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift index f0d94e6..6e90abb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -37,7 +37,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + let formatterInput = ___VARIABLE_moduleName___.FormatterInput() let formatterOutput = formatter.format(for: formatterInput) diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard index 7137d29..121f30b 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift index f0d94e6..6e90abb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -37,7 +37,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - let formatterInput = ___VARIABLE_moduleName___.ForlatterInput() + let formatterInput = ___VARIABLE_moduleName___.FormatterInput() let formatterOutput = formatter.format(for: formatterInput) diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib index d57cda0..949017e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.xib @@ -6,7 +6,7 @@ - + From bcddffcd35b533ef6554273841ae5e99b3fc22fc Mon Sep 17 00:00:00 2001 From: Filip Gulan Date: Thu, 25 Apr 2019 08:30:25 +0200 Subject: [PATCH 5/6] Add missing namespace to Rx generator. --- .../Resources/Templates/___FILEBASENAME___Presenter.swift.erb | 2 +- .../NoneInteractor/___FILEBASENAME___Presenter.swift | 2 +- .../___FILEBASENAME___Presenter.swift | 2 +- .../NoneSimple/___FILEBASENAME___Presenter.swift | 2 +- .../StoryboardInteractor/___FILEBASENAME___Presenter.swift | 2 +- .../___FILEBASENAME___Presenter.swift | 2 +- .../StoryboardSimple/___FILEBASENAME___Presenter.swift | 2 +- .../XIBInteractor/___FILEBASENAME___Presenter.swift | 2 +- .../XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift | 2 +- .../XIBSimple/___FILEBASENAME___Presenter.swift | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb index 7c2701b..8e64888 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Presenter.swift.erb @@ -54,7 +54,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter let formatterOutput = formatter.format(for: formatterInput) <%- end -%> - return ViewInput(<%= @complexity.generate_formatter ? 'models: formatterOutput' : '' %>) + return ___VARIABLE_moduleName___.ViewInput(<%= @complexity.generate_formatter ? 'models: formatterOutput' : '' %>) } <%- end -%> diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift index ba98f2b..5f2e521 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Presenter.swift @@ -34,7 +34,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift index 6e90abb..24e2354 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -41,7 +41,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter let formatterOutput = formatter.format(for: formatterInput) - return ViewInput(models: formatterOutput) + return ___VARIABLE_moduleName___.ViewInput(models: formatterOutput) } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift index a2e7c72..44562eb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Presenter.swift @@ -32,7 +32,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift index ba98f2b..5f2e521 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Presenter.swift @@ -34,7 +34,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift index 6e90abb..24e2354 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -41,7 +41,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter let formatterOutput = formatter.format(for: formatterInput) - return ViewInput(models: formatterOutput) + return ___VARIABLE_moduleName___.ViewInput(models: formatterOutput) } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift index a2e7c72..44562eb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Presenter.swift @@ -32,7 +32,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift index ba98f2b..5f2e521 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Presenter.swift @@ -34,7 +34,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift index 6e90abb..24e2354 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Presenter.swift @@ -41,7 +41,7 @@ extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___Presenter let formatterOutput = formatter.format(for: formatterInput) - return ViewInput(models: formatterOutput) + return ___VARIABLE_moduleName___.ViewInput(models: formatterOutput) } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift index a2e7c72..44562eb 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Presenter.swift @@ -32,7 +32,7 @@ final class ___VARIABLE_moduleName___Presenter { extension ___VARIABLE_moduleName___Presenter: ___VARIABLE_moduleName___PresenterInterface { func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput { - return ViewInput() + return ___VARIABLE_moduleName___.ViewInput() } } From 411484611dd77301767605ddd01f66aa844634ee Mon Sep 17 00:00:00 2001 From: Filip Gulan Date: Thu, 25 Apr 2019 09:19:06 +0200 Subject: [PATCH 6/6] Add DisposeBag to view controller. --- .../___FILEBASENAME___Interfaces.swift.erb | 46 +++++++++---------- ...___FILEBASENAME___ViewController.swift.erb | 12 +++-- .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___ViewController.swift | 1 - .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 34 +++++++------- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 34 +++++++------- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 34 +++++++------- .../___FILEBASENAME___ViewController.swift | 6 ++- .../___FILEBASENAME___Interfaces.swift | 20 ++++---- .../___FILEBASENAME___ViewController.swift | 6 ++- 29 files changed, 178 insertions(+), 165 deletions(-) diff --git a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb index 33f4571..101217e 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___Interfaces.swift.erb @@ -13,6 +13,29 @@ import UIKit import RxSwift import RxCocoa <% end -%> +<% if @template.generate_io -%> + +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + <%- if @complexity.generate_formatter -%> + let models: FormatterOutput + <%- end -%> + } + + <%- if @complexity.generate_formatter -%> + struct FormatterInput { + } + + struct FormatterOutput { + } + + <%- end -%> +} +<% end -%> protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { } @@ -37,27 +60,4 @@ protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } -<% end -%> -<% if @template.generate_io -%> - -enum ___VARIABLE_moduleName___ { - - struct ViewOutput { - } - - struct ViewInput { - <%- if @complexity.generate_formatter -%> - let models: FormatterOutput - <%- end -%> - } - - <%- if @complexity.generate_formatter -%> - struct FormatterInput { - } - - struct FormatterOutput { - } - - <%- end -%> -} <% end -%> \ No newline at end of file diff --git a/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb b/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb index fbc4339..fa89ded 100644 --- a/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb +++ b/Templates/Resources/Templates/___FILEBASENAME___ViewController.swift.erb @@ -20,6 +20,12 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + <%- if @template.generate_io -%> + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + + <%- end -%> // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,17 +41,15 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - <%- if @template.generate_io -%> + private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } -<%- end -%> +<%- end -%> \ No newline at end of file diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift index 5d116a0..cca6aeb 100644 --- a/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/Module.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift @@ -28,4 +28,3 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___ViewInterface { } - diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift index 2b30342..53cf848 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___Interfaces.swift @@ -12,6 +12,16 @@ import UIKit import RxSwift import RxCocoa +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} + protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { } @@ -24,13 +34,3 @@ protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } - -enum ___VARIABLE_moduleName___ { - - struct ViewOutput { - } - - struct ViewInput { - } - -} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractor/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift index 5f4255f..32c388a 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -12,23 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - -protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { - func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -45,3 +28,20 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift index 7eafe07..4b9643e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___Interfaces.swift @@ -12,16 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -31,3 +21,13 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/NoneSimple/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift index 2b30342..53cf848 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___Interfaces.swift @@ -12,6 +12,16 @@ import UIKit import RxSwift import RxCocoa +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} + protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { } @@ -24,13 +34,3 @@ protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } - -enum ___VARIABLE_moduleName___ { - - struct ViewOutput { - } - - struct ViewInput { - } - -} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractor/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift index 5f4255f..32c388a 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -12,23 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - -protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { - func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -45,3 +28,20 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift index 7eafe07..4b9643e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___Interfaces.swift @@ -12,16 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -31,3 +21,13 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/StoryboardSimple/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift index 2b30342..53cf848 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___Interfaces.swift @@ -12,6 +12,16 @@ import UIKit import RxSwift import RxCocoa +enum ___VARIABLE_moduleName___ { + + struct ViewOutput { + } + + struct ViewInput { + } + +} + protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { } @@ -24,13 +34,3 @@ protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { } - -enum ___VARIABLE_moduleName___ { - - struct ViewOutput { - } - - struct ViewInput { - } - -} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractor/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift index 5f4255f..32c388a 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___Interfaces.swift @@ -12,23 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - -protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { - func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput -} - -protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -45,3 +28,20 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} + +protocol ___VARIABLE_moduleName___FormatterInterface: FormatterInterface { + func format(for input: ___VARIABLE_moduleName___.FormatterInput) -> ___VARIABLE_moduleName___.FormatterOutput +} + +protocol ___VARIABLE_moduleName___InteractorInterface: InteractorInterface { +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBInteractorAndFormatter/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } } diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift index 7eafe07..4b9643e 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___Interfaces.swift @@ -12,16 +12,6 @@ import UIKit import RxSwift import RxCocoa -protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { -} - -protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { -} - -protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { - func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput -} - enum ___VARIABLE_moduleName___ { struct ViewOutput { @@ -31,3 +21,13 @@ enum ___VARIABLE_moduleName___ { } } + +protocol ___VARIABLE_moduleName___WireframeInterface: WireframeInterface { +} + +protocol ___VARIABLE_moduleName___ViewInterface: ViewInterface { +} + +protocol ___VARIABLE_moduleName___PresenterInterface: PresenterInterface { + func configure(with output: ___VARIABLE_moduleName___.ViewOutput) -> ___VARIABLE_moduleName___.ViewInput +} diff --git a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift index c09c3e6..a38cc70 100644 --- a/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift +++ b/Templates/VIPER Templates/RxModule.xctemplate/XIBSimple/___FILEBASENAME___ViewController.swift @@ -18,6 +18,10 @@ final class ___VARIABLE_moduleName___ViewController: UIViewController { var presenter: ___VARIABLE_moduleName___PresenterInterface! + // MARK: - Private properties - + + private let disposeBag = DisposeBag() + // MARK: - Lifecycle - override func viewDidLoad() { @@ -35,11 +39,9 @@ extension ___VARIABLE_moduleName___ViewController: ___VARIABLE_moduleName___View private extension ___VARIABLE_moduleName___ViewController { func configure() { - let output = ___VARIABLE_moduleName___.ViewOutput() let input = presenter.configure(with: output) - } }