| Line 1: |
Line 1: |
| − | {{#invoke:Str endswith|main}}<noinclude> | + | -- This module implements {{str endswith}}. |
| − | {{documentation}} | + | |
| − | </noinclude>
| + | local TRUE_STRING = 'yes' |
| | + | local FALSE_STRING = '' |
| | + | |
| | + | local p = {} |
| | + | |
| | + | local function trim(s) |
| | + | return s:match('^%s*(.-)%s*$') |
| | + | end |
| | + | |
| | + | function p.main(frame) |
| | + | local args = frame:getParent().args |
| | + | local s = args[1] |
| | + | local pattern = args[2] |
| | + | if not s or not pattern then |
| | + | -- TRUE_STRING is not the natural choice here, but is needed for |
| | + | -- backwards compatibility. |
| | + | return TRUE_STRING |
| | + | end |
| | + | s = trim(s) |
| | + | pattern = trim(pattern) |
| | + | if pattern == '' then |
| | + | -- All strings end with the empty string. |
| | + | return TRUE_STRING |
| | + | end |
| | + | if mw.ustring.sub(s, 0 - mw.ustring.len(pattern), -1) == pattern then |
| | + | return TRUE_STRING |
| | + | else |
| | + | return FALSE_STRING |
| | + | end |
| | + | end |
| | + | |
| | + | return p |