X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/3beaf9036986d749752eb658a7c83a1c69d04dd4..f737a40a8269639bb3364df31c4d9888e9f12d98:/awesome/widgets/awesompd/utf8.lua?ds=sidebyside diff --git a/awesome/widgets/awesompd/utf8.lua b/awesome/widgets/awesompd/utf8.lua deleted file mode 100644 index 0d2c139..0000000 --- a/awesome/widgets/awesompd/utf8.lua +++ /dev/null @@ -1,164 +0,0 @@ --- Provides UTF-8 aware string functions implemented in pure lua: --- * string.utf8len(s) --- * string.utf8sub(s, i, j) --- --- All functions behave as their non UTF-8 aware counterparts with the exception --- that UTF-8 characters are used instead of bytes for all units. --- --- Note: all validations had been removed due to awesome usage specifics. ---[[ -Copyright (c) 2006-2007, Kyle Smith -Modified by Alexander Yakushev, 2010-2013. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the author nor the names of its contributors may be -used to endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---]] - --- ABNF from RFC 3629 --- --- UTF8-octets = *( UTF8-char ) --- UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 --- UTF8-1 = %x00-7F --- UTF8-2 = %xC2-DF UTF8-tail --- UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / --- %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) --- UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / --- %xF4 %x80-8F 2( UTF8-tail ) --- UTF8-tail = %x80-BF --- - --- returns the number of bytes used by the UTF-8 character at byte i in s --- also doubles as a UTF-8 character validator - -local utf8 = {} - -function utf8.charbytes (s, i) - -- argument defaults - i = i or 1 - local c = string.byte(s, i) - - -- determine bytes needed for character, based on RFC 3629 - if c > 0 and c <= 127 then - -- UTF8-1 - return 1 - elseif c >= 194 and c <= 223 then - -- UTF8-2 - local c2 = string.byte(s, i + 1) - return 2 - elseif c >= 224 and c <= 239 then - -- UTF8-3 - local c2 = s:byte(i + 1) - local c3 = s:byte(i + 2) - return 3 - elseif c >= 240 and c <= 244 then - -- UTF8-4 - local c2 = s:byte(i + 1) - local c3 = s:byte(i + 2) - local c4 = s:byte(i + 3) - return 4 - end -end - --- returns the number of characters in a UTF-8 string -function utf8.len (s) - local pos = 1 - local bytes = string.len(s) - local len = 0 - - while pos <= bytes and len ~= chars do - local c = string.byte(s,pos) - len = len + 1 - - pos = pos + utf8.charbytes(s, pos) - end - - if chars ~= nil then - return pos - 1 - end - - return len -end - --- functions identically to string.sub except that i and j are UTF-8 characters --- instead of bytes -function utf8.sub (s, i, j) - j = j or -1 - - if i == nil then - return "" - end - - local pos = 1 - local bytes = string.len(s) - local len = 0 - - -- only set l if i or j is negative - local l = (i >= 0 and j >= 0) or utf8.len(s) - local startChar = (i >= 0) and i or l + i + 1 - local endChar = (j >= 0) and j or l + j + 1 - - -- can't have start before end! - if startChar > endChar then - return "" - end - - -- byte offsets to pass to string.sub - local startByte, endByte = 1, bytes - - while pos <= bytes do - len = len + 1 - - if len == startChar then - startByte = pos - end - - pos = pos + utf8.charbytes(s, pos) - - if len == endChar then - endByte = pos - 1 - break - end - end - - return string.sub(s, startByte, endByte) -end - --- replace UTF-8 characters based on a mapping table -function utf8.replace (s, mapping) - local pos = 1 - local bytes = string.len(s) - local charbytes - local newstr = "" - - while pos <= bytes do - charbytes = utf8.charbytes(s, pos) - local c = string.sub(s, pos, pos + charbytes - 1) - newstr = newstr .. (mapping[c] or c) - pos = pos + charbytes - end - - return newstr -end - -return utf8