Генерамба и прочие аспекты кодогенерации в viper

24
Генерамба и прочие аспекты кодогенерации в VIPER

Upload: rambler-ios

Post on 14-Apr-2017

1.134 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Генерамба и прочие аспекты кодогенерации в VIPER

Генерамбаи прочие аспекты

кодогенерации в VIPER

Page 2: Генерамба и прочие аспекты кодогенерации в VIPER

Автор

Егор Толстой

Ведущий iOS разработчик

Rambler&Co

Twitter: @igrekde

www.github.com/igrekde

Page 3: Генерамба и прочие аспекты кодогенерации в VIPER

•Использование шаблонов Xcode

•Что такое Генерамба

•Устройство Генерамбы

Page 4: Генерамба и прочие аспекты кодогенерации в VIPER

Классы:

Assembly.h Assembly.m

ViewController.h ViewController.m

Presenter.h Presenter.m

Interactor.h Interactor.m

Router.h Router.m

Протоколы:

ViewInput.h ViewOutput.h

InteractorInput.h InteractorOutput.h

RouterInput.h

ModuleInput.h

Тесты:

AssemblyTests.m

ViewControllerTests.m

PresenterTests.m

InteractorTests.m

RouterTests.m

Page 5: Генерамба и прочие аспекты кодогенерации в VIPER

21 файл * 30 секунд =

10 минут

Page 6: Генерамба и прочие аспекты кодогенерации в VIPER
Page 7: Генерамба и прочие аспекты кодогенерации в VIPER
Page 8: Генерамба и прочие аспекты кодогенерации в VIPER
Page 9: Генерамба и прочие аспекты кодогенерации в VIPER

#import "___VARIABLE_viperModuleName:identifier___Interactor.h" #import "___VARIABLE_viperModuleName:identifier___InteractorOutput.h"

@implementation ___VARIABLE_viperModuleName:identifier___Interactor

#pragma mark - ___VARIABLE_viperModuleName:identifier___InteractorInput

@end

Page 10: Генерамба и прочие аспекты кодогенерации в VIPER

gem install generamba

Page 11: Генерамба и прочие аспекты кодогенерации в VIPER

generamba setup

generamba template install

generamba gen MyModule template_name

Page 12: Генерамба и прочие аспекты кодогенерации в VIPER

#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

Page 13: Генерамба и прочие аспекты кодогенерации в VIPER
Page 14: Генерамба и прочие аспекты кодогенерации в VIPER

• Project/Rambafile

• Project/Templates/

• ~/.generamba/

user-

preferences.yml

• Локальные шаблоны

• Удаленные шаблоны

• Шаблоны каталога

Проект Пользователь Внешние ресурсы

Page 15: Генерамба и прочие аспекты кодогенерации в VIPER

{{ module_name }}

{{ prefix }}

{{ module_info.description }}

liquid

Page 16: Генерамба и прочие аспекты кодогенерации в VIPER

{% if user.name == 'tobi' %}

Hello tobi

{% elsif user.name == 'bob' %}

Hello bob

{% endif %}

if/else

liquid

Page 17: Генерамба и прочие аспекты кодогенерации в VIPER

{% for item in array %}

{{ item }}

{% endfor %}

for loop

liquid

Page 18: Генерамба и прочие аспекты кодогенерации в VIPER

• {{ "a~b" | split:"~" }} #=> ['a','b']

• {{ 'barbar' | remove_first:'bar' }} #=> 'bar'

• {{ 3 | pluralize: 'item', 'items' }} #=> 'items'

работа со строками

liquid

Page 19: Генерамба и прочие аспекты кодогенерации в VIPER

XCODEPROJ_HELPER

GEN_COMMAND

MODULE_GENERATOR

CONTENT_GENERATOR

CODE_MODULE

MODULE_TEMPLATE

Filesystem Project.xcodeproj

Command Line Interface

Code Generation

Output

TILT

Page 20: Генерамба и прочие аспекты кодогенерации в VIPER

SETUP_COMMAND

RAMBAFILE_ GENERATOR

Rambafile

Command Line Interface

Output

TILT

Code Generation

Page 21: Генерамба и прочие аспекты кодогенерации в VIPER

LOCAL_INSTALLER

TEMPLATE_ INSTALL_

COMMAND

TEMPLATE_PROCESSOR REMOTE_INSTALLERTEMPLATE_DECLARATION

Filesystem

Command Line Interface

Installation Logic

Output

CATALOG_INSTALLER

Page 22: Генерамба и прочие аспекты кодогенерации в VIPER

•Полное покрытие тестами,

•Автоматическая установка зависимостей,

•Автогенерация тестов по интерфейсам,

•Список всех сгенерированных модулей,

•GUI

Планы

Page 23: Генерамба и прочие аспекты кодогенерации в VIPER

•Ruby - отличный выбор для подобных

утилит,

•Автоматизация любых процессов - ценное

вложение труда и времени,

•rails-way для iOS приложений.

Выводы

Page 24: Генерамба и прочие аспекты кодогенерации в VIPER

https://github.com/rambler-ios/Generamba

&