Size: a a a

2019 February 27

IB

Ilya Borovitinov in pro.elixir
источник

IB

Ilya Borovitinov in pro.elixir
Хотя это смешно, сообщение он отдает в utf8, а смещения в utf16
источник

A

Alexander in pro.elixir
Ооо. В ерланге это смещение делается довольно богато, я в итоге забил и стал разбирать посимвольно.

Вот мой split utf8 строки в нужном месте, отсчитанном в utf16

utf_split(SplitPoints, Text) ->
   utf_split(SplitPoints, [<<>>], 0, Text).

utf_split([], [<<>> | Acc], _, Text) ->
   lists:reverse([Text | Acc]);
utf_split([ Point | SplitPoints ], Acc, Point, Text) ->
   utf_split(SplitPoints, [<<>> | Acc], Point, Text);
utf_split([ Point | _ ], _, Pos, _) when Pos > Point ->
   error(invalid_utf16_offset);
utf_split(SplitPoints, [CurrentAcc | Acc], Pos, <<Char/utf8, Rest/binary>>) ->
   Size = trunc(byte_size(<<Char/utf16>>) / 2),
   utf_split(SplitPoints, [<<CurrentAcc/binary, Char/utf8>> | Acc], Pos + Size, Rest).

юзается так: utf_split([1,5,18], Str).
источник

A

Alexander in pro.elixir
ну в эликсир транслируется один в один, очевидно
источник

IB

Ilya Borovitinov in pro.elixir
Интересно, почему они выбрали такое смешение сущностей
источник

A

Alexander in pro.elixir
Alexander
Ооо. В ерланге это смещение делается довольно богато, я в итоге забил и стал разбирать посимвольно.

Вот мой split utf8 строки в нужном месте, отсчитанном в utf16

utf_split(SplitPoints, Text) ->
   utf_split(SplitPoints, [<<>>], 0, Text).

utf_split([], [<<>> | Acc], _, Text) ->
   lists:reverse([Text | Acc]);
utf_split([ Point | SplitPoints ], Acc, Point, Text) ->
   utf_split(SplitPoints, [<<>> | Acc], Point, Text);
utf_split([ Point | _ ], _, Pos, _) when Pos > Point ->
   error(invalid_utf16_offset);
utf_split(SplitPoints, [CurrentAcc | Acc], Pos, <<Char/utf8, Rest/binary>>) ->
   Size = trunc(byte_size(<<Char/utf16>>) / 2),
   utf_split(SplitPoints, [<<CurrentAcc/binary, Char/utf8>> | Acc], Pos + Size, Rest).

юзается так: utf_split([1,5,18], Str).
вот нашёл прямо пример использования у себя

SplitPoints =
 lists:map(
   fun(Entity) ->
           {_, Offset} = lists:keyfind(offset, 1, Entity),
           {_, Length} = lists:keyfind(length, 1, Entity),
           [Offset, Offset + Length]
   end, Entities ),
SplitText = utf_split(lists:flatten(SplitPoints), Text),
источник

МБ

Максим Барулин in pro.elixir
Благодарю, попробую чуть позже
источник

NP

Nicolae Paraschiva in pro.elixir
Почему директория priv так называется? Сокращение от private?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Сокращённо от privileged
источник

NP

Nicolae Paraschiva in pro.elixir
Почему?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Потому что тебя зовут Николай
источник

NP

Nicolae Paraschiva in pro.elixir
Зачем вообще что-то сокращать? Символы платные?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Конечно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Не замечал? Почему def вместо define_function_in_this_module
источник

NP

Nicolae Paraschiva in pro.elixir
Это не название папки/файла
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lib вместо library тебя не смущает?
источник

NP

Nicolae Paraschiva in pro.elixir
Нет, потому что в юниксе тоже /lib )
источник

NP

Nicolae Paraschiva in pro.elixir
и сложно перепутать с чем-то еще
liberty?)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Какая разница, liberty или libertex, если ты пишешь lib
источник

NP

Nicolae Paraschiva in pro.elixir
Разница в том, что lib интуитивно в контексте программирования :)
источник