Как я могу получить шестнадцатеричный код, когда я даю название цвета - PullRequest
0 голосов
/ 11 июля 2019

Я создаю бота для телеграммы и хотел бы, чтобы он мог давать шестнадцатеричный код для имени цвета.Я знаю, что существует огромное количество цветов RGB, но я также знаю, что есть статья в Википедии с известными названиями цветов и шестнадцатеричными кодами, если бы я мог получить страницы как json, это помогло бы.Кроме того, если json говорит hex code = color name, как я могу инвертировать это?Как я могу искать по значению, а не по имени?

Ответы [ 3 ]

2 голосов
/ 11 июля 2019

Вы можете написать свой собственный Hash тогда Hash # инвертировать it:

color_to_hex = { red: 'ff0000', green: '00ff00', blue: '0000ff' }
hex_to_color = color_to_hex.invert

color_to_hex[:red] #=> "ff0000"
hex_to_color['00ff00'] #=> :green

Или без создания обратного хеша:

colors_to_hex.key('00ff00') #=> :green
1 голос
/ 11 июля 2019

Вы можете попробовать следующее:

color_mappings = { 'yellow' => 'ffff00', 'red' => 'ff0000', 'green' => '00ff00', 'blue' => '0000ff' }

Хеш можно инвертировать следующим образом:

inverted_color_mappings = color_mappings.invert

вывод:

{
    "ffff00" => "yellow",
    "ff0000" => "red",
    "00ff00" => "green",
    "0000ff" => "blue"
}


pattern = 'fff'
inverted_color_mappings.select{ |k,v| k[pattern] }

вывод:

{
    "ffff00" => "yellow"
}
0 голосов
/ 11 июля 2019

Остальные ответы в порядке. Если вы ищете драгоценный камень, который уже сделал всю работу за вас, посмотрите на Цвет . Его метод Color::CSS[] ищет цвет по имени и возвращает объект Color :: RGB, который, в свою очередь, имеет методы hex и html :

require "color"

aliceblue = Color::CSS["aliceblue"]
puts aliceblue.hex
# => f0f8ff
puts aliceblue.html
# => #f0f8ff

Color :: RGB также имеет статический метод by_hex, который будет возвращать именованный объект Color :: RGB для данного шестнадцатеричного кода. Метод name возвращает имя (если оно есть):

require "color"

mystery_color = Color::RGB.by_hex("#ffefd5")
puts mystery_color.name
# => papayawhip

Вы можете увидеть это в действии на repl.it: https://repl.it/@jrunning/EqualReasonableSpellchecker (Если вы получаете сообщение об ошибке при первом нажатии кнопки запуска, нажмите ее снова. У repl.it иногда возникают проблемы с загрузкой гемов первым время.)

...