Module:Domino Unicode

From MOASSpedia
Revision as of 14:23, 13 March 2022 by Wikipedia>Ytx21cn (if num1 == nil and num2 == nil then charNum = start;)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This module is the helper module for Template:Domino Unicode to output Unicode characters of Domino tiles.


Note: This module only outputs the HEX codepoint. To convert it to the Unicode character in HTML, write &#x<some_codepoint>;.

  • For example: to get the horizontal tile that has 1 followed by 2, write &#x{{#invoke:Domino Unicode|output|h|1|2}};, which gives you the output "🀺".

Usage

{{#invoke:Domino Unicode|output|<direction>|<num1>|<num2>}}

Parameters (letters are case-insensitive):

  1. direction: to indicate whether the tile should be horizontal or vertical.
    • H or horizontal for horizontal tiles.
    • V or vertical for vertical tiles.
  2. num1 (optional): the first number on the tile.
    • Valid numbers are: 06.
    • If omitted, then output the code point of the back of the tile.
      • {{#invoke:Domino Unicode|output|H}} or {{#invoke:Domino Unicode|output|horizontal}} gives "1F030".
      • {{#invoke:Domino Unicode|output|V}} or {{#invoke:Domino Unicode|output|vertical}} gives "1F062".
  3. num2 (optional): the second number on the tile.
    • Valid numbers are: 06.
    • If omitted, then num2 is treated as the same as num1.
      • For example: {{#invoke:Domino Unicode|output|H|6}} gives the same output as {{#invoke:Domino Unicode|output|H|6|6}}: "1F061".

External links


local getArgs = require('Module:Arguments').getArgs

local p = {}

local hStart = tonumber('0x1f030');
local vStart = hStart + 50;

local function output(direction, num1, num2)
	direction = string.lower(direction);
	num1 = tonumber(num1);
	num2 = tonumber(num2);
	
	local start = hStart;
	if direction == 'h' or direction == 'horizontal' then
		start = hStart;		
	elseif direction == 'v' or direction == 'vertical' then
		start = vStart;
	else
		return '';
	end
	
	local charNum = start;
	if num1 == nil and num2 == nil then
		charNum = start;
	else
		if num2 == nil then
			num2 = num1;
		end
		charNum = start + 1 + (num1 * 7 + num2);
	end
	
	return string.format("%X", charNum);
end

function p.output(frame)
	local args = getArgs(frame);
	return output(args[1], args[2], args[3]);
end

return p;