|
|
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) |
| Zeile 86: |
Zeile 86: |
|
| |
|
| function p.bracketSplitAndStrip(s) | | function p.bracketSplitAndStrip(s) |
| | -- scheidet einen geklammerten String am Anfang und am Ende ab |
| | -- Beispiel: "( a ) b (c)" ergibt "( a )", "b", "(c)" |
| local s_pre_bracket = "" | | local s_pre_bracket = "" |
| local s_main = ""
| |
| local s_post_bracket = "" | | local s_post_bracket = "" |
| | | -- Klammerung am Anfang |
| s = p.strip(s) | | local bracket_open = string.find(s, "%(") |
| local s_len = string.len(s)
| | local bracket_close = string.find(s, "%)") |
| | | if bracket_open == 1 and bracket_close ~= nil then |
| local first_opening_bracket = string.find(s, "%(")
| | s_pre_bracket = string.sub(s, bracket_open, bracket_close) |
| local first_closing_bracket = string.find(s, "%)") | | s = p.strip(string.sub(s, bracket_close+1)) |
| local last_opening_bracket = string.find(s, "%([^%(]*$")
| |
| local last_closing_bracket = string.find(s, "%)[^%)]*$") | |
| mw.log( "first_opening_bracket=" .. (first_opening_bracket or "nil") ..
| |
| " first_closing_bracket=" .. (first_closing_bracket or "nil") ..
| |
| " last_opening_bracket=" .. (last_opening_bracket or "nil") ..
| |
| " last_closing_bracket=" .. (last_closing_bracket or "nil"))
| |
| | |
| if first_opening_bracket == nil or first_closing_bracket == nil then -- Klammer-auf/zu-Pärchen nicht vorhanden | |
| s_main = s -- => keine Klammer-Abtrennung
| |
| elseif first_opening_bracket == last_opening_bracket then -- nur ein Klammer-auf/zu-Pärchen vorhanden
| |
| if first_opening_bracket ~= 1 and first_closing_bracket ~= s_len then -- Klammern mitten im String
| |
| s_main = s -- => keine Klammer-Abtrennung
| |
| elseif first_opening_bracket == 1 and first_closing_bracket == s_len then -- Klammerung umfasst ganzen String | |
| s_pre_bracket = s -- => Klammer-String ohne Haupt-String
| |
| elseif first_opening_bracket == 1 then -- Klammerung vorne
| |
| s_pre_bracket = string.sub(s, first_opening_bracket, first_closing_bracket) -- => Klammer-String mit Haupt-String
| |
| s_main = p.strip(string.sub(s, first_closing_bracket+1, s_len))
| |
| else -- ergo Klammerung hinten | |
| s_post_bracket = string.sub(s, first_opening_bracket, first_closing_bracket) -- => Klammer-String mit Haupt-String
| |
| s_main = p.strip(string.sub(s, 1, first_opening_bracket-1))
| |
| end
| |
| else
| |
| end | | end |
| -- else | | -- Klammerung am Ende |
| mw.log( "s_pre_bracket=" .. s_pre_bracket .. | | bracket_open = string.find(s, "%([^%(]*$") |
| " s_main=" .. s_main ..
| | bracket_close = string.find(s, "%)[^%)]*$") |
| " s_post_bracket=" .. s_post_bracket)
| | if bracket_open ~= nil and bracket_close == string.len(s) then |
| return s_pre_bracket, s_main, s_post_bracket | | s_post_bracket = string.sub(s, bracket_open, bracket_close) |
| | s = p.strip(string.sub(s, 1, bracket_open-1)) |
| | end |
| | return s_pre_bracket, s, s_post_bracket |
| end | | end |
|
| |
|
| return p | | return p |