Modul:Text: Unterschied zwischen den Versionen

+ ucfirstAll, update uprightNonlatin
w>Umherirrender
K (export concatParams and allow format string)
w>PerfektesChaos
(+ ucfirstAll, update uprightNonlatin)
Zeile 1: Zeile 1:
--[=[ 2014-02-16
--[=[ 2014-09-27
Text utilities
Text utilities
]=]
]=]
Zeile 103: Zeile 103:
     return r
     return r
end -- Text.sentenceTerminated()
end -- Text.sentenceTerminated()
Text.ucfirstAll = function ( adjust )
    -- Capitalize all words
    -- Precondition:
    --    adjust  -- string
    -- Returns: string with all first letters in upper case
    local r = " " .. adjust
    local i = 1
    local c, j, m
    if adjust:find( "&" ) then
        r = r:gsub( "&",      "&" )
            :gsub( "<",      "<" )
            :gsub( ">",      ">" )
            :gsub( " ",    " " )
            :gsub( " ", " " )
            :gsub( "‌",  "‌" )
            :gsub( "‍",    "‍" )
            :gsub( "‎",    "‎" )
            :gsub( "‏",    "‏" )
        m = true
    end
    while i do
        i = mw.ustring.find( r, "%W%l", i )
        if i then
            j = i + 1
            c = mw.ustring.upper( mw.ustring.sub( r, j, j ) )
            r = string.format( "%s%s%s",
                              mw.ustring.sub( r, 1, i ),
                              c,
                              mw.ustring.sub( r, i + 2 ) )
            i = j
        end
    end -- while i
    r = r:sub( 2 )
    if m then
        r = r:gsub(    "&", "&" )
            :gsub(    "<", "<" )
            :gsub(    ">", ">" )
            :gsub(    " ", " " )
            :gsub(  " ", " " )
            :gsub(  "‌", "‌" )
            :gsub(  "‍", "‍" )
            :gsub(  "‎", "‎" )
            :gsub(  "‏", "‏" )
            :gsub( "&#X(%x+);", "&#x%1;" )
    end
    return r
end -- Text.ucfirstAll()




Zeile 132: Zeile 182:
                 -- isLatin
                 -- isLatin
                 return  a <= 591  or  ( a >= 8194  and  a <= 8250 )
                 return  a <= 591  or  ( a >= 8194  and  a <= 8250 )
        end -- flat()
              end -- flat()
         local form = function ( a )
         local form = function ( a )
                 return string.format( span,
                 return string.format( span,
Zeile 138: Zeile 188:
                                       mw.ustring.sub( adjust, k, j - 1 ),
                                       mw.ustring.sub( adjust, k, j - 1 ),
                                       mw.ustring.sub( adjust, j, a ) )
                                       mw.ustring.sub( adjust, j, a ) )
        end -- form()
              end -- form()
         r = ""
         r = ""
         for i = 1, n do
         for i = 1, n do
             c = mw.ustring.codepoint( adjust, i, i )
             c = mw.ustring.codepoint( adjust, i, i )
             if c > 64 then
             if c > 64 or  c == 38  or  c == 60 then   -- '&' '<'
                 if flat( c ) then
                 if flat( c ) then
                     if j then
                     if j then
Zeile 153: Zeile 203:
                         end
                         end
                         if j then
                         if j then
                             r = form( i - 1 )
                            local nx = i - 1
                            local s  = ""
                            for ix = nx, 1, -1 do
                                c = mw.ustring.sub( adjust, ix, ix )
                                if c == " "  or  c == "(" then
                                    nx = nx - 1
                                    s  = c .. s
                                else
                                    break -- for ix
                                end
                            end -- for ix
                             r = form( nx ) .. s
                             j = false
                             j = false
                             k = i
                             k = i
Zeile 197: Zeile 258:
         args = frame.args
         args = frame.args
     end
     end
     return Text.concatParams( args, frame.args.separator, frame.args.format )
     return Text.concatParams( args,
                              frame.args.separator,
                              frame.args.format )
end
end


Zeile 221: Zeile 284:
function p.sentenceTerminated( frame )
function p.sentenceTerminated( frame )
     return Text.sentenceTerminated( frame.args[ 1 ] or "" ) and "1" or ""
     return Text.sentenceTerminated( frame.args[ 1 ] or "" ) and "1" or ""
end
function p.ucfirstAll( frame )
    return Text.ucfirstAll( frame.args[ 1 ] or "" )
end
end


Anonymer Benutzer