Два года в /fg/. Войти !bnw Сегодня Клубы
У меня есть filepath в котором все не ascii символы заменены на заквотированные бэкслешем номера кодпоинтов (судя по тому откуда они прилетели это наверное utf-16). Как бы мне их привести в божеский вид?
#D469DU / @ndtimofeev / 3215 дней назад

петухоном, покеж чотам
#D469DU/LFL / @mugiseyebrows / 3215 дней назад
@mugiseyebrows Это кишки приблуды для vim'а, которая запускает приблуду для рефакторинга haskell'я. То ли в emacs'е вышеозначенной проблемы не существует, то ли во всей этой цепочке авторов никто не знал что в именах файлов бывает не ascii. Надо на регулярной основе исправлять то что срёт бинраник в vimscript или дать пиздюлей автору бинарника.
#D469DU/H0N / @ndtimofeev --> #D469DU/LFL / 3215 дней назад
# coding: utf-8
require 'fileutils'

chars = {}
Dir.glob('/tmp/\\\\u*').each do |f|
  f.scan(/\\u.{4}/) { |n| chars[n] ||= n[2..-1].hex.chr('utf-8') }
  f_new = f.gsub(/\\u.{4}/, chars)
  puts "Moving #{f} to #{f_new}"
  FileUtils.mv(f, f_new)
end
$ bundle exec ruby /tmp/1.rb
Moving /tmp/\u0441\u043b\u0430\u0432\u0438\u043a.txt to /tmp/славик.txt
$
#D469DU/MC0 / @anonymous / 3215 дней назад

а, там utf-16. Ну поправить циферки и сделать chr('utf-16'), будет норм.

#D469DU/HKB / @anonymous / 3215 дней назад
@anonymous При помощи ЯВУ я и сам могу, но если уж расчехлять ЯВУ так проще пропатчить то говно которое прислало мне эту кривую строку.
#D469DU/PO4 / @ndtimofeev --> #D469DU/MC0 / 3215 дней назад

@ndtimofeev пруф или не можешь

#D469DU/PLR / @anonymous --> #D469DU/PO4 / 3215 дней назад
@anonymous ``` import Data.Char parse :: String -> String parse str = case str of '\\' : d0 : d1 : d2 : d3 : rest -> chr (read [d0, d1, d2, d3]) : parse rest '\\' : _ -> error "Пыщ!" c : rest -> c : parse rest _ -> [] main :: IO () main = interact parse ``` ``` $ echo '/tmp/\1089\1083\1072\1074\1080\1082.txt' | runhaskell tst6.hs $ ```
#D469DU/1LS / @ndtimofeev --> #D469DU/PLR / 3215 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.