string2

Для документации этого модуля может быть создана страница Модуль:String2/doc

--[[     Кое-какие дополнительные функции для строк ]] local M = {     bs=function(f)-- первый параметр до начала второго параметра (или до конца, если он не встретился)         --необяз. 3-й параметр - с какого по номеру (с 1) символа начинать поиск.         return mw.ustring.sub(f.args[1], 1, (mw.ustring.find(f.args[1],f.args[2],tonumber(f.args[3] or 1),true) or 0)-1)     end;     as=function(f)-- первый параметр после начала второго параметра         return mw.ustring.sub(f.args[1], (mw.ustring.find(f.args[1],f.args[2],1,true) or 0)+1)     end;     Tr=function(s,f,t,cf,df,sf)-- транслитерация первого параметра путём замены символов из второго параметра символами из третьего.     -- Отдельными параметрами можно передавать флаги c, d и s, как в Perl; диапазоны в замене не работают, только в левой части     -- (т.е. дефис надо передавать первым или последним). Второй результат - число заменённых символов         local r, l, l2 = {}, mw.ustring.len(f), mw.ustring.len(t);         for i = 1, l do             r[mw.ustring.sub(f,i,i)] = i<=l2 and mw.ustring.sub(t,i,i) or df and '' or mw.ustring.sub(t,l2,l2)         end         local n2=0;         local res, n = mw.ustring.gsub(             s,             ('[%s%s]%s'):format(                 cf and '^' or '',                 f:gsub('%','%%'):gsub(']','%]'):gsub('^%^','%^'),                 sf and '+' or ''             ),             sf and function(cc)                 n2 = n2+mw.ustring.len(cc)-1;                 return mw.ustring.gsub(cc,'.',r)             end or r         )         return res, n+n2     end;    -- tr = function(f) return (M.Tr(f.args[1],f.args[2],f.args[3],f.args['c'],f.args['d'],f.args['s'])) end;-- транслитерировать    -- trс = function(f) return ({M.Tr(f.args[1],f.args[2],f.args[3],f.args['c'],f.args['d'],f.args['s'])})[2] end;-- посчитать символы     Trg = function(s,t,f,fi)-- Производит замену строк произвольной длины (если с fi, регистр не учитывает).     -- Приоритет - по порядку в таблицах.         for n,p in ipairs(t) do             t[n] = {fi and mw.ustring.upper(p) or p,mw.ustring.len(p)}         end         local r,i,l,N = {},1,mw.ustring.len(s),0         while i<=l do             (function()                 for n,p in ipairs(t) do                     if ( fi and mw.ustring.upper(mw.ustring.sub(s,i,i+p[2]-1)) or mw.ustring.sub(s,i,i+p[2]-1) ) == p[1] then                         table.insert(r,f[n]);                         i = i+p[2]; N=N+1;                         return                     end                 end                 table.insert(r,mw.ustring.sub(s,i,i));                 i=i+1;                 return             end)()         end         return table.concat(r),N     end;     trg = function(frame)--Работает с номерными аргументами шаблона,если задан параметр u, иначе со своими.         --  Заменяет в первом аргументе аргументы 2, 4, 6... на аргументы 3, 5, 7...         local tf, t, f, i= frame.args['u'] and frame.getParent() or f, {}, {}, 1;         while tf.args[2*i] do t[tf.args[2*i]]=tf.args[2*i+1] or '' end         return ( M.Trg(tf.args[1],t,f,(frame.args['i'] or '')~='') )     end;     join = function (f) --объединяет нумерованные аргументы вызвавшего шаблона     -- от from или 1 до to или первого отсутствующего     -- через первый параметр invoke. Последний элемент можно присоединять иначе, задав второй параметр.     -- По умолчанию ',' & 'и'     -- Если 3-й параметр invoke — "s", строки из пробелов игнорируются; если "_", игнорируются пустые строки     local t, tf, i = {}, f:getParent(), tonumber(f.args.from) or 1     local k,j,m = tonumber(f.args.to),i,f.args[3]     while k and i<=k or tf.args[i] do     if (     ({     ['_']=function(s)return s~=''end;     ['s']=function(s)return not tostring(s):match("^%s*$")end     })[m] or function() return true end     )(tf.args[i]) then     t[j]=tf.args[i];     j=j+1     end;     i=i+1     end     return mw.text.listToText(t,f.args[1],f.args[2] or f.args[1]) end }  function M.formatRound(frame) --форматирует число, чтобы оно имело order знаков после запятой   return string.format("%0."..frame.args[2].."f",tonumber(frame.args[1]));   end return M 

Tags:

🔥 Trending searches on Wiki Кырык Мары (Kyryk Mary):

КиевНью-Мексико1863 иШекспир, УильямМаймылМайамиНим (пушӓнгӹ)Гарсиа Лорка, ФедерикоРуш йӹлмӹЛатин йӹлмӹВикипедиЕврази2010 иИспани йӹлмӹГватемалаИ1564 иКыткыИюль1941 иФиниксКаирПиФритаун1967 иКеа1993 иАвстралиМинскШур Кушыргы1820 иРуанда2004 иВильнюсАлатнаЛиндгрен, АстридШур школАйплатов, Геннадий НиколаевичФиладельфи510 иТатарстан Республика1472 и1437 иКанада2008 иИзи Шӹндӹр2012 иМемфис (Теннесси)1676 иСибирьВенгриРодийИндейвлӓТопика (Канзас)Индонези500 иРтуть1991 иУкраина халавлӓЫшкал1974 иИранПариж1717 иХамелеонАнгл йӹлмӹ1857 иЛитва1614 и1978 иНорвеги🡆 More