diff options
author | Ana María Martínez Gómez <anamaria@martinezgomez.name> | 2019-04-07 07:12:30 +0200 |
---|---|---|
committer | Ana María Martínez Gómez <anamaria@martinezgomez.name> | 2019-04-08 16:27:57 +0200 |
commit | 69c8ea5b017634a1ae92141eab38967dc6a395b6 (patch) | |
tree | dd150fe359a8a76c78ea3a1378d2721db7781972 /lib | |
parent | defb6ec8d93448b79a4f20cd3d0c49da80e8df1f (diff) | |
download | highline-69c8ea5b017634a1ae92141eab38967dc6a395b6.tar.gz |
Add new capital_letter option to menu index
To configure menu indexes we could use `:number`, `:letter` and `none`
options. The `:letter` option uses lowercase letter. Add a new option
`:capital_letter` which uses uppercase letter as indexes.
This code was written as it is in The Biggest Mobprogramming session
ever at RubyConfBY 2019: https://rubyconference.by
Co-authored-by: Mikhail <imikailoby@gmail.com>
Co-authored-by: Alex <alexneisc@gmail.com>
Co-authored-by: Eduardo <eduardoj@gmail.com>
Co-authored-by: Tung Nguyen <tongueroo@gmail.com>
Co-authored-by: Mikhail <mikhaildyomin@gmail.com>
Co-authored-by: Gennady <minenkov3108@gmail.com>
Co-authored-by: Tatiana <tatiana.karpesh@gmail.com>
Co-authored-by: Pavel <bondek777@gmail.com>
Co-authored-by: Suhakou Yauheni <shiroginne@gmail.com>
Co-authored-by: Vladislav Berdinskiy <vvberdinskiy@yandex.ru>
Co-authored-by: Andreyeu Uladzislau <me@vld.by>
Co-authored-by: Dan <d.kachur@daarokets.com>
Co-authored-by: Denis Defreyne <denis@denis.ws>
Co-authored-by: Nikita <bulajnikita@gmail.com>
Co-authored-by: Dmitry <dsalahitdinov@gmail.com>
Co-authored-by: Aleksey <lesha@kurepin.com>
Co-authored-by: Vladislav Kalach <kalach.vladislav@gmail.com>
Co-authored-by: Dzmitry <kremez19@gmail.com>
Co-authored-by: Tung Nguyen <tongueroo@gmail.com>
Co-authored-by: Ilya <ilyabyar@gmail.com>
Co-authored-by: Aliaksei Hrechushkin <ahrechushkin@gmail.com>
Co-authored-by: Piotr Wasiak <chooosen@gmail.com>
Co-authored-by: Aaron Patterson <aaron.patterson@gmail.com>
Co-authored-by: Ihar <iharidla@gmail.com>
Co-authored-by: Maks <rusakovich94@gmail.com>
Co-authored-by: Karol Topolski <ktopolski.it@gmail.com>
Co-authored-by: Konstantin Rudy <konstantin.rudy@gmail.com>
Co-authored-by: Artyom <artemshibalko@gmail.com>
Co-authored-by: Yuri <mkrvch.yury@gmail.com>
Co-authored-by: Oleg <o.bekasov96@gmail.com>
Co-authored-by: Rostislav Zhuravsky <rostislav.zhuravsky@gmail.com>
Co-authored-by: Hanna Novikava <arnikasky@gmail.com>
Co-authored-by: Alex <goodniceweb@gmail.com>
Co-authored-by: Anton <orangeudav@gmail.com>
Co-authored-by: Alexander <alexander.skachko@gmail.com>
Co-authored-by: igorpolyakov <igorpolyakov@protonmail.com>
Co-authored-by: Inna <ina.karatkova@itechart-group.com>
Co-authored-by: Yury Matusevich <yury.a.matusevich@gmail.com>
Co-authored-by: Paul Pavlovsky <fatpaher@gmail.com>
Co-authored-by: Vlad <vlad.horbachevsky@gmail.com>
Co-authored-by: Serge <Kislak7@gmail.com>
Co-authored-by: Boris & Anton <Borisanton@mail.ru>
Co-authored-by: Karina <rktiurina@gmail.com>
Co-authored-by: Andrei Kryuda <a.kryuda@gmail.com>
Co-authored-by: Artem <artemkrivonozhko@gmail.com>
Co-authored-by: DimaAleks <dimaalekseichik@gmail.com>
Co-authored-by: Hanna Kolesnikova <kolesaak@gmail.com>
Co-authored-by: Aliaksandr Lomau <lomov.as@gmail.com>
Co-authored-by: Eugene Khrantsov <eugene.kstu@gmail.com>
Co-authored-by: Dmitry Zhlobo <dima.zhlobo@gmail.com>
Co-authored-by: Oleg Ryzhko <ryz.oleg@gmail.com>
Co-authored-by: Aleksandr <skyksandr@gmail.com>
Co-authored-by: Dmitriy Kiriyenko <dmitriy.kiriyenko@gmail.com>
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/highline/menu.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/highline/menu.rb b/lib/highline/menu.rb index 8029b49..4db6cd2 100755 --- a/lib/highline/menu.rb +++ b/lib/highline/menu.rb @@ -377,6 +377,9 @@ class HighLine if @index == :letter l_index = "`" all_items.map { l_index.succ!.dup } + elsif @index == :capital_letter + l_index = "@" + all_items.map { l_index.succ!.dup } else (1..all_items.size).map(&:to_s) end @@ -407,7 +410,7 @@ class HighLine items = all_items # Find the selected action. - selected_item = find_item_from_selection(items, selection) + selected_item = find_item_from_selection(items, selection.downcase) # Run or return it. @highline = highline_context @@ -519,6 +522,8 @@ class HighLine ["#{ix + 1}#{@index_suffix}", text] when :letter ["#{('a'.ord + ix).chr}#{@index_suffix}", text] + when :capital_letter + ["#{('A'.ord + ix).chr}#{@index_suffix}", text] when :none [text, ""] else |