Ruby::V4
Ruby::V4.format(...) → Kernel.format
Instance methods
flatten с ограничением глубины. Рекурсивные союзы типов не выражаются в Crystal, поэтому элементы боксируются в Ruby::V4::Any.
Float#to_s Ruby: экспонента минимум из двух цифр ("1.0e-05", не "1.0e-5").
gsub с Hash: отсутствующий ключ → пустая строка (как в Ruby).
String#lines Ruby; chomp: true — без разделителей в элементах. (без chomp — отдельная перегрузка arity-1 в inspect.cr)
pattern === value для grep: класс → is_a?, Range → cover?, Regex → совпадение, иначе равенство.
Rational из разности дат: Date - Date → "2/1".
Float#round Ruby: по умолчанию half: :up; без знаков — Integer.
Integer#round(digits) Ruby: half-up (away from zero) — у Crystal round(digits) half-to-even, семантику ядра не меняем.
String#scan Ruby: массив совпавших строк (не MatchData).
Set#add? Ruby: мутирует и возвращает сет, либо nil если элемент был.
Ruby String#inspect: NUL → \x00 (Crystal печатает \u0000). Без NUL достаточно нативного inspect, поэтому побайтовый рендер — только для строк с NUL (Ruby-строки из unpack и есть binary: байты ≥ 0x80 в них эскейпятся побайтово, что этот рендер и даёт).
sub/gsub с блоком Ruby: блок получает строку матча. В Crystal 1.21 gsub(Regex)/gsub(String) уже передают String — просто транслируем.
Хэш с "символьными" ключами как в Ruby: {x: 1, y: 2}.