Skip to content

heartsker/TheBean

Repository files navigation

coffee

Вы любите кофе? У нас это есть!

Love coffee? We got you!

Документация - TheBean

Организация

Информацию про внутреннюю инфраструктуру и организацию Nephew-Ustas можно найти тут.

Локализация

Модуль Localize

Интерфейс локализации - ILocalizable.

Чтобы добавить новый сервис локализации, необходимо исполнить требования ILocalizable и добавить требуемые строки:

    class AppLocalization: ILocalizable {
        static let table: String = "App"
        static let name = AppLocalization.localize("name")
    }

после этого в соответствующей таблице App.strings нужно определить локализацию строк:

// App (English)
"name" = "The Bean";
// App (Russian)
"name" = "Зе рно";

Ресурсы

Модуль AssetsManager

Интерфейс IAssetsManager позволяет использовать в коде файлы из папки Assets

Например, для получения картинок реализован класс ImageManager:

class ImageManager: IAssetsManager {
    typealias Asset = UIImage

    static let latte = ImageManager.asset(for: "coffee.latte")
}

Тогда в коде следует использовать ImageManager.latte

Реактив

Модуль Reactive

Модуль позволяет просто создавать и использовать реактивщину в приложении. Все публикации и подписки сделаны на базе Combine

Класс Publisher позволяет создавать публикации изменений и подписываться на них.

Чтобы создать публикацию используется метод publishPost<T>(with:, for:).

Для подписки на обновления используется метод subscribe<T>(_: T, keyPath:, for:).

Таким образом, для подписания текста лейбла на обновления имени аккаунта используется следующий код:

let label = UILabel()
Publisher.subscribe(label, keyPath: \.text, for: .usernamePost)

Для того, чтобы опубликовать изменения имени, можно использовать такой код:

Publisher.publishPost(with: username, for: .usernamePost)

В примерах выше используется

extension Notification.Name {
    static let usernamePost = Notification.Name("usernamePost")
}

Графика

Модуль AdvancedGraphics

Модуль позволяет добавлять графические элементы в приложение

Объекты реализованы как расширения классов, например UIBezierPath

Утилиты

Модуль Utils

Модуль добавляет функциональность, необходимую для приложения. Это могут быть расширения или классы для упрощения разработки - для избежания дублирования кода.

About

☕️ Любите кофе? У нас есть! | Love coffee? We got you!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •