diff options
author | Ana María Martínez Gómez <anamaria@martinezgomez.name> | 2019-04-07 07:57:37 +0200 |
---|---|---|
committer | Ana María Martínez Gómez <anamaria@martinezgomez.name> | 2019-04-08 16:28:29 +0200 |
commit | 154754be7399229351c2135a3051a0bc11ece4fb (patch) | |
tree | 0d290e067a55428234489b8443dcc06be056b1c1 /lib | |
parent | 69c8ea5b017634a1ae92141eab38967dc6a395b6 (diff) | |
download | highline-154754be7399229351c2135a3051a0bc11ece4fb.tar.gz |
Refactor letter options for index
Avoid code repetition and add comment.
Although we didn't have time to implement it, this was suggested during
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 | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/highline/menu.rb b/lib/highline/menu.rb index 4db6cd2..42be9bd 100755 --- a/lib/highline/menu.rb +++ b/lib/highline/menu.rb @@ -374,12 +374,10 @@ class HighLine end def map_items_by_index - 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 } + if [:letter, :capital_letter].include?(@index) + # @ and ` are the previous ASCII characters to A and a respectively + prev_char = (@index == :capital_letter ? '@' : '`') + all_items.map { prev_char.succ!.dup } else (1..all_items.size).map(&:to_s) end @@ -520,10 +518,9 @@ class HighLine case @index when :number ["#{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 :letter, :capital_letter + first_letter = (@index == :capital_letter ? 'A' : 'a') + ["#{(first_letter.ord + ix).chr}#{@index_suffix}", text] when :none [text, ""] else |