Guest User

Untitled

a guest
Jan 12th, 2016
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.85 KB | None | 0 0
  1. local utf8substr = function(str, pos1, pos2)
  2.     if type(str)=="number" then str = tostring(str) end
  3.     if type(str)~="string" then
  4.         error("bad argument #1 to 'utf8substr' (string expected, got "..type(str)..")", 2)
  5.         return str
  6.     end
  7.     if pos1 and type(pos1)~="number" then
  8.         error("bad argument #2 to 'utf8substr' (number expected, got "..type(pos1)..")", 2)
  9.         return str
  10.     end
  11.     if pos2 and type(pos2)~="number" then
  12.         error("bad argument #3 to 'utf8substr' (number expected, got "..type(pos2)..")", 2)
  13.         return str
  14.     end
  15.     pos1 = pos1 or 1
  16.     pos2 = pos2 or -1
  17.     if pos1<0 or pos2<0 then
  18.         local len = utf8strlen(str)
  19.         if pos1<0 then pos1 = len+pos1+1 end
  20.         if pos2<0 then pos2 = len+pos2+1 end
  21.     end
  22.     local fn = rawget(GLOBAL, "utf8substr")
  23.     if fn then pos1 = pos1-1 end --c-like numbering behaviour
  24.     fn = fn or str.sub
  25.     return fn(str, pos1, pos2)
  26. end
Advertisement
Add Comment
Please, Sign In to add comment