Pull to refresh
0
0
proshev @proshev

User

Send message
В статье этот момент рассмотрен.
Также можно обратить внимание и на Kotlin.
Сперва в общих чертах опишу принцип работы генератора, а потом перейду непосредственно к ответам на вопросы.

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

Немного раскрою термины и укажу примеры.

Корень генерации — такой класс, для наследников которого, а также него самого должны быть созданы классы-аналоги (например, javafx.scene.Node).

Отношение контейнер-объект — такая пара классов, что экземпляр одного класса можно «положить» в экземпляр другого (например, Node -> Pane в javafx).

Билдер — функция, позволяющая за один вызов создать и настроить объект. Создается она с использованием таких фич языка, как именованные аргументы и параметры по умолчанию.

Функции, позволяющие описывать вложенность объектов — это те же билдеры, но они уже являются методами контейнеров. Отличия от обычных билдеров заключаются в расширенном наборе параметров и умении класть объекты в контейнер.

Это я описал для лучшего понимания того, что вообще генератор делает.

Теперь к вопросам. Пока эксперименты проводились только с классом View в качестве корня генерации, но другие классы тоже можно пробовать, метод такой:
1) в корни добавляете интересующие классы
2) запускаете генерацию
3) компилируете сгенерированные исходники
4) в коде получаете экземпляр класса Abc
5а) либо передаете его в конструктор классу kotlin.dsl.Abc и настраиваете через свойства или with
5б) либо с помощью функции ниже начинаете строить объект

public fun Abc.dsl(init: kotlin.dsl.Abc.() -> Unit) {
    kotlin.dsl.Abc(this).init()
}

Пример:
getActionBar().dsl {
    homeButtonEnabled = true
    ...
}

Вроде все должно получиться, и ActionBar, и support-классы, и фрагменты. Если что, пишите, будем разбираться :)
На правах рекламы хотел бы упомянуть генератор, который умеет создавать внутренний Kotlin DSL для UI (и не только) библиотек.

Например, с помощью такого DSL интерфейс можно описывать следующим образом:

// android
scrollView {
     layoutParams(MATCH_PARENT, MATCH_PARENT)

     linearLayout {
        layoutParams(MATCH_PARENT, MATCH_PARENT)
        orientation = VERTICAL

        textView {
            linearLayoutParams(MATCH_PARENT, WRAP_CONTENT) {
                bottomMargin = 15.dp
            }
            text = getString("description")
        }
    }    
}

// javafx
gridPane {
    alignment = CENTER
    hgap = 10.0
    vgap = 10.0
    padding = Insets(25.0)

    text(column = 0, row = 0, colspan = 2, rowspan = 1) {
        text = "Welcome"
        font = Font.font("Tahoma", FontWeight.NORMAL, 20.0)
    }
}

Более крупные примеры можно посмотреть здесь.
Пластинку еще можно послушать уголком бумаги :)
Не нашел второй части :(
Жаль не выходные :(
В общаге ведущего айтишного вуза ИТМО до сих пор нет нормального интернета :)
Если вы фрилансер, в чем проблема жить там, а работать здесь?
Эх, подозревал же :) Вот мы и выяснили, что это не Чехия.
Если и Чехия, то точно не Прага. Там другие вагоны.
То есть если на компьютере установлена какая-то защита, кроме стандартной, то все ок и враг не пройдет?
Нет, он НЕ ставится только с вашего разрешения
Надо же, уже и планету под свой бренд загребли :)
А чего сами не поучаствуете? Идея у вас интересная
А можно привязать не только к одному сайту? Например, сделать привязку к аккаунту на Google и на Facebook
а поддержка rss лент присутствует?
Интересно конечно. Особенно в свете выхода различных компаний на IPO
1

Information

Rating
Does not participate
Location
Россия
Registered
Activity