モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

このモジュールはブール値、またはブール値風の文字列の入力を処理するための統一したインターフェースを提供します。Luaではtruefalseといったブール値がありますが、ウィキテキストにおけるテンプレートでは"yes"、"no"など文字列でしか処理できません。このモジュールはこれらの文字列を処理して、Luaで使用するためのブール値に変換します。また、nilfalseを区別できるよう、nilの入力はnilとして返します。このモジュールはブール値、数字、テーブル、関数の入力も受け付けており、ブール値とnilとして認識できなかった場合の返り値を指定することもできます。

書式

yesno(value, default)

valueは処理される入力です。ブール値またはブール値風の文字列が入力された場合はtrueまたはfalseを返し、nilが入力された場合はnilを返し、それ以外の場合はdefaultを返します。

使用法

まず、モジュールをロードします。なお、このモジュールはほかのLuaモジュールでしか使用できません。テンプレートから使う場合は代わりに{{yesno}}を使用してください。

local yesno = require('Module:Yesno')

一部の入力値は必ずtrueを返し、一部は必ずfalseを返します。nil値は必ずnilを返します。

-- 必ずtrueを返す
yesno('yes')
yesno('y')
yesno('true')
yesno('t')
yesno('1')
yesno(1)
yesno(true)

-- 必ずfalseを返す
yesno('no')
yesno('n')
yesno('false')
yesno('f')
yesno('0')
yesno(0)
yesno(false)

-- nil値は必ずnil値を返す
yesno(nil)

文字列はまず小文字に変換してから判別しています。

-- 必ずtrueを返す
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')

-- 必ずfalseを返す
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')

上記以外の入力の場合に返すdefault値を指定できます。指定しなかった場合はnilを返します。

-- nilを返す
yesno('foo')
yesno({})
yesno(5)
yesno(function() return 'This is a function.' end)

-- trueを返す
yesno('foo', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)

-- "bar"を返す
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')

空文字列でも同じ扱いです。

yesno('')        -- nilを返す
yesno('', true)  -- trueを返す
yesno('', 'bar') -- "bar"を返す

ウィキテキストでは一般的には空文字列をfalseとして扱うが、Luaではtrueとして扱われます。本モジュールではLuaでの挙動を採用しているため、空文字列をfalseとして扱う必要がある場合は別に処理してください。

-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.

return function (val, default)
	-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
	-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
	-- following line.
	val = type(val) == 'string' and val:lower() or val
	if val == nil then
		return nil
	elseif val == true 
		or val == 'yes'
		or val == 'y'
		or val == 'true'
		or val == 't'
		or val == 'on'
		or tonumber(val) == 1
	then
		return true
	elseif val == false
		or val == 'no'
		or val == 'n'
		or val == 'false'
		or val == 'f'
		or val == 'off'
		or tonumber(val) == 0
	then
		return false
	else
		return default
	end
end
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy