Выступление на Rambler.iOS #5: Видео: http://www.youtube.com/watch?v=NXNiN9FaUnY Генерамба: https://github.com/rambler-ios/Generamba
Генерамбаи прочие аспектыкодогенерации в VIPER
View Slide
АвторЕгор ТолстойВедущий iOS разработчикRambler&CoTwitter: @igrekdewww.github.com/igrekde
•Использование шаблонов Xcode•Что такое Генерамба•Устройство Генерамбы
Классы:Assembly.hAssembly.mViewController.hViewController.mPresenter.hPresenter.mInteractor.hInteractor.mRouter.hRouter.mПротоколы:ViewInput.hViewOutput.hInteractorInput.hInteractorOutput.hRouterInput.hModuleInput.hТесты:AssemblyTests.mViewControllerTests.mPresenterTests.mInteractorTests.mRouterTests.m
21 файл * 30 секунд=10 минут
#import "___VARIABLE_viperModuleName:identifier___Interactor.h"#import "___VARIABLE_viperModuleName:identifier___InteractorOutput.h"@implementation ___VARIABLE_viperModuleName:identifier___Interactor#pragma mark - ___VARIABLE_viperModuleName:identifier___InteractorInput@end
gem install generamba
generamba setupgeneramba template installgeneramba gen MyModule template_name
#import "{{ prefix }}{{ module_info.name }}Presenter.h"@implementation {{ prefix }}{{ module_info.name }}Presenter#pragma mark - Методы {{ prefix }}{{ module_info.name }}ViewOutput- (void)didTriggerViewReadyEvent {[self.view setupInitialState];}@end
• Project/Rambafile• Project/Templates/• ~/.generamba/user-preferences.yml• Локальные шаблоны• Удаленные шаблоны• Шаблоны каталогаПроект Пользователь Внешние ресурсы
{{ module_name }}{{ prefix }}{{ module_info.description }}liquid
{% if user.name == 'tobi' %}Hello tobi{% elsif user.name == 'bob' %}Hello bob{% endif %}if/elseliquid
{% for item in array %}{{ item }}{% endfor %}for loopliquid
• {{ "a~b" | split:"~" }} #=> ['a','b']• {{ 'barbar' | remove_first:'bar' }} #=> 'bar'• {{ 3 | pluralize: 'item', 'items' }} #=> 'items'работа со строкамиliquid
XCODEPROJ_HELPERGEN_COMMANDMODULE_GENERATORCONTENT_GENERATORCODE_MODULEMODULE_TEMPLATEFilesystem Project.xcodeprojCommand Line InterfaceCode GenerationOutputTILT
SETUP_COMMANDRAMBAFILE_GENERATORRambafileCommand Line InterfaceOutputTILTCode Generation
LOCAL_INSTALLERTEMPLATE_INSTALL_COMMANDTEMPLATE_PROCESSOR REMOTE_INSTALLERTEMPLATE_DECLARATIONFilesystemCommand Line InterfaceInstallation LogicOutputCATALOG_INSTALLER
•Полное покрытие тестами,•Автоматическая установка зависимостей,•Автогенерация тестов по интерфейсам,•Список всех сгенерированных модулей,•GUIПланы
•Ruby - отличный выбор для подобныхутилит,•Автоматизация любых процессов - ценноевложение труда и времени,•rails-way для iOS приложений.Выводы
https://github.com/rambler-ios/Generamba&