summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAna María Martínez Gómez <anamaria@martinezgomez.name>2019-04-07 07:57:37 +0200
committerAna María Martínez Gómez <anamaria@martinezgomez.name>2019-04-08 16:28:29 +0200
commit154754be7399229351c2135a3051a0bc11ece4fb (patch)
tree0d290e067a55428234489b8443dcc06be056b1c1 /lib
parent69c8ea5b017634a1ae92141eab38967dc6a395b6 (diff)
downloadhighline-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-xlib/highline/menu.rb17
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