diff --git a/.github/labeler.yml b/.github/labeler.yml index 45ea34644b..989b5dd6a3 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -4,4 +4,6 @@ core: "TelegramBotAPI/**" # currently not work code: "**/*.kt" gradle: "**/*.gradle" -markdown: "**/*.md" +markdown: + - "**/*.md" + - "!CHANGELOG.md" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d7afbc178..491ddf25e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,16 @@ * `closePollExactAfter` * `closePollAfter` +### 0.27.7 + +* `TelegramBotAPI`: + * Operator function `unaryPlus` was added to `RowBuilder`. Now it is possible to write `row { +button }` + * Function `flatMatrix` was added for single-row columns + * Operator extension `RowBuilder#plus` was added to be able to write things like `row { this + button }` +* `TelegramBotAPI-extensions-utils`: + * Function `InlineKeyboardMarkup` for flat keyboards was added + * Function `ReplyKeyboardMarkup` for flat keyboards was added + ### 0.27.6 * `Common`: diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/InlineKeyboardMarkup.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/InlineKeyboardMarkup.kt new file mode 100644 index 0000000000..9752514036 --- /dev/null +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/InlineKeyboardMarkup.kt @@ -0,0 +1,11 @@ +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.types.buttons + +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardButtons.InlineKeyboardButton +import com.github.insanusmokrassar.TelegramBotAPI.utils.* + +fun InlineKeyboardMarkup( + vararg buttons: InlineKeyboardButton +): InlineKeyboardMarkup = InlineKeyboardMarkup( + flatMatrix { buttons.forEach { +it } } +) diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/ReplyKeyboardMarkup.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/ReplyKeyboardMarkup.kt new file mode 100644 index 0000000000..473bc131ce --- /dev/null +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/types/buttons/ReplyKeyboardMarkup.kt @@ -0,0 +1,17 @@ +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.types.buttons + +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.ReplyKeyboardMarkup +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardButton +import com.github.insanusmokrassar.TelegramBotAPI.utils.flatMatrix + +fun ReplyKeyboardMarkup( + vararg buttons: KeyboardButton, + resizeKeyboard: Boolean? = null, + oneTimeKeyboard: Boolean? = null, + selective: Boolean? = null +): ReplyKeyboardMarkup = ReplyKeyboardMarkup( + flatMatrix { buttons.forEach { +it } }, + resizeKeyboard, + oneTimeKeyboard, + selective +) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Matrix.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Matrix.kt index 2469e74da7..2b5edc2af0 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Matrix.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Matrix.kt @@ -18,12 +18,27 @@ fun matrix(block: MatrixBuilder.() -> Unit): Matrix { return MatrixBuilder().also(block).matrix } +fun flatMatrix(block: RowBuilder.() -> Unit): Matrix { + return MatrixBuilder().apply { + row(block) + }.matrix +} + +fun flatMatrix(vararg elements: T): Matrix { + return MatrixBuilder().apply { + row { elements.forEach { +it } } + }.matrix +} + +operator fun RowBuilder.plus(t: T) = add(t) + class RowBuilder { private val mutRow: MutableList = ArrayList() val row: List get() = mutRow fun add(t: T) = mutRow.add(t) + operator fun T.unaryPlus() = add(this) } class MatrixBuilder { diff --git a/gradle.properties b/gradle.properties index cd63466dc7..3194ec89b8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,6 @@ ktor_version=1.3.2 javax_activation_version=1.1.1 library_group=com.github.insanusmokrassar -library_version=0.27.6 +library_version=0.27.7 gradle_bintray_plugin_version=1.8.4