Jump to content
Toggle menu
  • 8 articles
  • 75 files
  • 7 users
  • 37.8K edits
Neodyland Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Dir: Difference between revisions

From Neodyland Wiki
catch invalid language codes
allow overrides for RTL codes specified in Module:Dir/RTL overrides
Line 1: Line 1:
-- This module implements [[Template:Dir]].
-- This module implements [[Template:Dir]].
local rtlOverrides = mw.loadData('Module:Dir/RTL overrides')


local p = {}
local p = {}
Line 23: Line 25:
local function isRTL(code)
local function isRTL(code)
local success, ret = pcall(function ()
local success, ret = pcall(function ()
return mw.language.new(code):isRTL()
return rtlOverrides[code] or mw.language.new(code):isRTL()
end)
end)
return success and ret
return success and ret

Revision as of 04:15, 21 February 2015

Module documentation[ create · purge ]
This documentation is transcluded from Module:Dir/doc.
-- This module implements [[Template:Dir]].

local rtlOverrides = mw.loadData('Module:Dir/RTL overrides')

local p = {}

local function trim(s)
	if s then
		return s:match('^%s*(.-)%s*$')
	else
		return nil
	end
end

local function trimAndRemoveBlanks(s)
	if s then
		s = trim(s)
		if s ~= '' then
			return s
		end
	end
	return nil
end

local function isRTL(code)
	local success, ret = pcall(function ()
		return rtlOverrides[code] or mw.language.new(code):isRTL()
	end)
	return success and ret
end

function p.main(frame)
	local args = frame:getParent().args
	local code = trimAndRemoveBlanks(args[1])
	if isRTL(code) then
		return trim(args[2]) or 'rtl'
	else
		return trim(args[3]) or 'ltr'
	end
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.