Ruby. Интерполяция строк Хешом
Есть пример форматной строки:
"Mozilla/5.0 (%<system[ua_platform].to_s>s;"
И несколько хешей, данные из которых надо вставить по разным ключам в строку.
Например, system, который может хранить под разными ключами nil.
Как сделать так, чтоб не передавать для каждого ключа в строке нужные ему данные, т.к. их очень много и они могут меняться, как и сама строка, а передать один хеш и все заработало.
Например, в Python можно сделать так:
"({system[ua_platform]}; rv:{app[build_version]})".format(system=system, app=app)
Где system и app - словари.
Ответы (1 шт):
Автор решения: Василиса
→ Ссылка
Можно обернуть строку с интерполяцией в proc и вызывать тогда, когда есть все нужные данные
string = proc { |system| "Mozilla/5.0 #{system[ua_platform]}"}
system = { win: 'Windows', mac: 'MacOS' }
ua_platform = :mac
string.call(system)
=> "Mozilla/5.0 MacOS"