Permanently protected module

Difference between revisions of "Module:Data"

From Yugipedia
Jump to: navigation, search
(Anime and manga series.)
(Split the normalization function and update interface. Update interface per latest changes on the database. Other minor changes and cleanup.)
Line 16: Line 16:
 
local DATA = mw.loadData( 'Module:Database' );
 
local DATA = mw.loadData( 'Module:Database' );
  
----------------------
+
---------------------
-- Internal functions:
+
-- Utility functions:
----------------------
+
---------------------
 +
-- mw functions:
 +
local trim = mw.text.trim;
 +
 
 
-- @name normalize
 
-- @name normalize
-- @description Normalize the input.
+
-- @parameter {*} «arg» - Argument to be normalize.
local function normalize( arg )
+
-- @parameter {function} «rules» - Normalization rules to apply.
return type( arg ) == 'string'
+
-- @description Normalizes the input applying a specific set of rules.
and mw.text.trim( arg ):lower()
+
local function normalize( arg, rules )
 +
return type( arg ) == type( 'string' )
 +
and rules( trim( arg ):lower() )
 +
or nil
 +
;
 +
end
 +
 
 +
-- @name normalizeGlobals
 +
-- @description Normalizes the input for:
 +
-- rg, region, ln, language, ed, edition,
 +
-- rel, release, amRel, amRelease, r and rarity.
 +
local function normalizeGlobals( arg )
 +
return normalize( arg, function( normalizedArg )
 +
return normalizedArg
 
:gsub(  ' rare$', '' ) -- Remove " rare" at the end (and with a space before it).
 
:gsub(  ' rare$', '' ) -- Remove " rare" at the end (and with a space before it).
:gsub(      ' ', '' ) -- Remove spaces.
+
:gsub(      '%s', '' ) -- Remove whitespace.
 +
:gsub(      '%-', '' ) -- Remove dashes.
 +
:gsub(      '/', '' ) -- Remove slashes.
 +
:gsub(      "'", '' ) -- Remove apostrophe.
 +
:gsub(  'north', '' ) -- Remove "north".
 +
:gsub( 'edition', '' ) -- Remove "edition".
 +
;
 +
end );
 +
end
 +
 
 +
-- @name normalizeSeries
 +
-- @description Normalizes the input for: ser and series.
 +
local function normalizeSeries( arg )
 +
return normalize( arg, function( normalizedArg )
 +
return normalizedArg
 +
:gsub(      '%s', '' ) -- Remove whitespace.
 
:gsub(      '%-', '' ) -- Remove dashes.
 
:gsub(      '%-', '' ) -- Remove dashes.
 
:gsub(      '/', '' ) -- Remove slashes.
 
:gsub(      '/', '' ) -- Remove slashes.
Line 31: Line 62:
 
:gsub(      '!', '' ) -- Remove exclamation mark.
 
:gsub(      '!', '' ) -- Remove exclamation mark.
 
:gsub(      "'", '' ) -- Remove apostrophe.
 
:gsub(      "'", '' ) -- Remove apostrophe.
:gsub(    'the', '' ) -- Remove "the". CAREFUL here. TODO: Split this function by type of data.
+
:gsub(    'the', '' ) -- Remove "the".
:gsub(  'north', '' ) -- Remove "north".
 
:gsub( 'edition', '' ) -- Remove "edition".
 
 
:gsub(    'ygo', '' )  
 
:gsub(    'ygo', '' )  
 
:gsub(  'yugioh', '' )
 
:gsub(  'yugioh', '' )
or nil
+
;
;
+
end );
 +
end
 +
 
 +
-- @name normalizeCardGalleryTypes
 +
-- @description Normalizes the input for: CardGallery.types.
 +
local function normalizeCardGalleryTypes( arg )
 +
return normalize( arg, function( normalizedArg )
 +
return normalizedArg
 +
:gsub(    '%s', '' ) -- Remove whitespace.
 +
:gsub(    '%-', '' ) -- Remove dashes.
 +
:gsub(    's', '' ) -- Remove "s".
 +
:gsub( 'video', '' ) -- Remove "video".
 +
;
 +
end );
 
end
 
end
  
-----------
+
-----------------------
-- Methods:
+
-- Methods (Interface):
-----------
+
-----------------------
 
-- @name getRg
 
-- @name getRg
 
-- @parameter {string} «arg»
 
-- @parameter {string} «arg»
Line 48: Line 90:
 
-- @description Gets the region index for «arg». «nil» if not found.
 
-- @description Gets the region index for «arg». «nil» if not found.
 
function D.getRg( arg )
 
function D.getRg( arg )
return DATA.rg[ normalize( arg ) ];
+
return DATA.rg[ normalizeGlobals( arg ) ];
 
end
 
end
  
Line 80: Line 122:
 
-- @description Gets the edition abbreviation for «arg». «nil» if not found.
 
-- @description Gets the edition abbreviation for «arg». «nil» if not found.
 
function D.getEd( arg )
 
function D.getEd( arg )
return DATA.ed[ normalize( arg ) ];
+
return DATA.ed[ normalizeGlobals( arg ) ];
 
end
 
end
  
Line 96: Line 138:
 
-- @description Gets the release abbreviation for «arg». «nil» if not found.
 
-- @description Gets the release abbreviation for «arg». «nil» if not found.
 
function D.getRel( arg )
 
function D.getRel( arg )
return DATA.rel[ normalize( arg ) ];
+
return DATA.rel[ normalizeGlobals( arg ) ];
 
end
 
end
  
Line 112: Line 154:
 
-- @description Gets the anime and manga release abbreviation for «arg». «nil» if not found.
 
-- @description Gets the anime and manga release abbreviation for «arg». «nil» if not found.
 
function D.getAnimeMangaRel( arg )
 
function D.getAnimeMangaRel( arg )
return DATA.amRel[ normalize( arg ) ];
+
return DATA.amRel[ normalizeGlobals( arg ) ];
 
end
 
end
  
Line 128: Line 170:
 
-- @description Gets the rarity abbreviation for «arg». «nil» if not found.
 
-- @description Gets the rarity abbreviation for «arg». «nil» if not found.
 
function D.getR( arg )
 
function D.getR( arg )
return DATA.r[ normalize( arg ) ];
+
return DATA.r[ normalizeGlobals( arg ) ];
 
end
 
end
  
Line 139: Line 181:
 
end
 
end
  
-- @name getAnimeS
+
-- @name getAnimeSer
 
-- @parameter {string} «arg»
 
-- @parameter {string} «arg»
 
-- @return {string|nil} Anime series code.
 
-- @return {string|nil} Anime series code.
 
-- @description Gets the anime series code for «arg». «nil» if not found.
 
-- @description Gets the anime series code for «arg». «nil» if not found.
function D.getAnimeS( arg )
+
function D.getAnimeSer( arg )
return DATA.s.anime[ normalize( arg ) ];
+
return DATA.ser.anime[ normalizeSeries( arg ) ];
 
end
 
end
  
Line 152: Line 194:
 
-- @description Gets the anime series name for «arg». «nil» if not found.
 
-- @description Gets the anime series name for «arg». «nil» if not found.
 
function D.getAnimeSeries( arg )
 
function D.getAnimeSeries( arg )
return DATA.series.anime[ D.getAnimeS( arg ) ];
+
return DATA.series.anime[ D.getAnimeSer( arg ) ];
 
end
 
end
  
-- @name getMangaS
+
-- @name getMangaSer
 
-- @parameter {string} «arg»
 
-- @parameter {string} «arg»
 
-- @return {string|nil} Manga series code.
 
-- @return {string|nil} Manga series code.
 
-- @description Gets the manga series code for «arg». «nil» if not found.
 
-- @description Gets the manga series code for «arg». «nil» if not found.
function D.getMangaS( arg )
+
function D.getMangaSer( arg )
return DATA.s.manga[ normalize( arg ) ];
+
return DATA.ser.manga[ normalizeSeries( arg ) ];
 
end
 
end
  
Line 168: Line 210:
 
-- @description Gets the manga series name for «arg». «nil» if not found.
 
-- @description Gets the manga series name for «arg». «nil» if not found.
 
function D.getMangaSeries( arg )
 
function D.getMangaSeries( arg )
return DATA.series.manga[ D.getMangaS( arg ) ];
+
return DATA.series.manga[ D.getMangaSer( arg ) ];
 +
end
 +
 
 +
-- @name getCardGalleryType
 +
-- @parameter {string} «arg»
 +
-- @return {string|nil} {{Card gallery}} type.
 +
-- @description Gets the {{Card gallery}} type for «arg». «nil» if not found.
 +
function D.getCardGalleryType( arg )
 +
return DATA.CardGallery.types[ normalizeCardGalleryTypes( arg ) ];
 
end
 
end
  

Revision as of 22:47, 16 June 2018

-- <pre>
-- @name Data
-- @description Interface for Module:Database.
-- @notes Internal-only, so far.
-- @author [[User:Becasita]]
-- @contact [[User talk:Becasita]]

-------------------
-- Export variable:
-------------------
local D = {};

--------------
-- Load data:
--------------
local DATA = mw.loadData( 'Module:Database' );

---------------------
-- Utility functions:
---------------------
-- mw functions:
local trim = mw.text.trim;

-- @name normalize
-- @parameter {*} «arg» - Argument to be normalize.
-- @parameter {function} «rules» - Normalization rules to apply. 
-- @description Normalizes the input applying a specific set of rules.
local function normalize( arg, rules )
	return type( arg ) == type( 'string' )
		and rules( trim( arg ):lower() )
		or nil
	;
end

-- @name normalizeGlobals
-- @description Normalizes the input for:
-- rg, region, ln, language, ed, edition,
-- rel, release, amRel, amRelease, r and rarity.
local function normalizeGlobals( arg )
	return normalize( arg, function( normalizedArg )
		return normalizedArg
			:gsub(  ' rare$', '' ) -- Remove " rare" at the end (and with a space before it).
			:gsub(      '%s', '' ) -- Remove whitespace.
			:gsub(      '%-', '' ) -- Remove dashes.
			:gsub(       '/', '' ) -- Remove slashes.
			:gsub(       "'", '' ) -- Remove apostrophe.
			:gsub(   'north', '' ) -- Remove "north".
			:gsub( 'edition', '' ) -- Remove "edition".
		;
	end );
end

-- @name normalizeSeries
-- @description Normalizes the input for: ser and series.
local function normalizeSeries( arg )
	return normalize( arg, function( normalizedArg )
		return normalizedArg
			:gsub(      '%s', '' ) -- Remove whitespace.
			:gsub(      '%-', '' ) -- Remove dashes.
			:gsub(       '/', '' ) -- Remove slashes.
			:gsub(       ':', '' ) -- Remove semi-colon.
			:gsub(       '!', '' ) -- Remove exclamation mark.
			:gsub(       "'", '' ) -- Remove apostrophe.
			:gsub(     'the', '' ) -- Remove "the".
			:gsub(     'ygo', '' ) 
			:gsub(  'yugioh', '' )
		;
	end );
end

-- @name normalizeCardGalleryTypes
-- @description Normalizes the input for: CardGallery.types.
local function normalizeCardGalleryTypes( arg )
	return normalize( arg, function( normalizedArg )
		return normalizedArg
			:gsub(    '%s', '' ) -- Remove whitespace.
			:gsub(    '%-', '' ) -- Remove dashes.
			:gsub(     's', '' ) -- Remove "s".
			:gsub( 'video', '' ) -- Remove "video".
		;
	end );
end

-----------------------
-- Methods (Interface):
-----------------------
-- @name getRg
-- @parameter {string} «arg»
-- @return {string|nil} Region index.
-- @description Gets the region index for «arg». «nil» if not found.
function D.getRg( arg )
	return DATA.rg[ normalizeGlobals( arg ) ];
end

-- @name getRegion
-- @parameter {string} «arg»
-- @return {string|nil} Region name.
-- @description Gets the region name for «arg». «nil» if not found.
function D.getRegion( arg )
	return DATA.region[ D.getRg( arg ) ];
end

-- @name getLn
-- @parameter {string} «arg»
-- @return {string|nil} Language index.
-- @description Gets the language index for «arg». «nil» if not found.
function D.getLn( arg )
	return DATA.ln[ D.getRg( arg ) ];
end

-- @name getLanguage
-- @parameter {string} «arg»
-- @return {string|nil} Language name.
-- @description Gets the language name for «arg». «nil» if not found.
function D.getLanguage( arg )
	return DATA.language[ D.getLn( arg ) ];
end

-- @name getEd
-- @parameter {string} «arg»
-- @return {string|nil} Edition abbreviation.
-- @description Gets the edition abbreviation for «arg». «nil» if not found.
function D.getEd( arg )
	return DATA.ed[ normalizeGlobals( arg ) ];
end

-- @name getEdition
-- @parameter {string} «arg»
-- @return {string|nil} Edition name.
-- @description Gets the edition name for «arg». «nil» if not found.
function D.getEdition( arg )
	return DATA.edition[ D.getEd( arg ) ];
end

-- @name getRel
-- @parameter {string} «arg»
-- @return {string|nil} Release abbreviation.
-- @description Gets the release abbreviation for «arg». «nil» if not found.
function D.getRel( arg )
	return DATA.rel[ normalizeGlobals( arg ) ];
end

-- @name getRelease
-- @parameter {string} «arg»
-- @return {string|nil} Release name.
-- @description Gets the release name for «arg». «nil» if not found.
function D.getRelease( arg )
	return DATA.release[ D.getRel( arg ) ];
end

-- @name getAnimeMangaRel
-- @parameter {string} «arg»
-- @return {string|nil} Anime and manga release abbreviation.
-- @description Gets the anime and manga release abbreviation for «arg». «nil» if not found.
function D.getAnimeMangaRel( arg )
	return DATA.amRel[ normalizeGlobals( arg ) ];
end

-- @name getAnimeMangaRelease
-- @parameter {string} «arg»
-- @return {string|nil} Anime and manga release name.
-- @description Gets the anime and manga release name for «arg». «nil» if not found.
function D.getAnimeMangaRelease( arg )
	return DATA.amRelease[ D.getAnimeMangaRel( arg ) ];
end

-- @name getR
-- @parameter {string} «arg»
-- @return {string|nil} Rarity abbreviation.
-- @description Gets the rarity abbreviation for «arg». «nil» if not found.
function D.getR( arg )
	return DATA.r[ normalizeGlobals( arg ) ];
end

-- @name getRarity
-- @parameter {string} «arg»
-- @return {string|nil} Rarity name.
-- @description Gets the rarity name for «arg». «nil» if not found.
function D.getRarity( arg )
	return DATA.rarity[ D.getR( arg ) ];
end

-- @name getAnimeSer
-- @parameter {string} «arg»
-- @return {string|nil} Anime series code.
-- @description Gets the anime series code for «arg». «nil» if not found.
function D.getAnimeSer( arg )
	return DATA.ser.anime[ normalizeSeries( arg ) ];
end

-- @name getAnimeSeries
-- @parameter {string} «arg»
-- @return {string|nil} Anime series name.
-- @description Gets the anime series name for «arg». «nil» if not found.
function D.getAnimeSeries( arg )
	return DATA.series.anime[ D.getAnimeSer( arg ) ];
end

-- @name getMangaSer
-- @parameter {string} «arg»
-- @return {string|nil} Manga series code.
-- @description Gets the manga series code for «arg». «nil» if not found.
function D.getMangaSer( arg )
	return DATA.ser.manga[ normalizeSeries( arg ) ];
end

-- @name getMangaSeries
-- @parameter {string} «arg»
-- @return {string|nil} Manga series name.
-- @description Gets the manga series name for «arg». «nil» if not found.
function D.getMangaSeries( arg )
	return DATA.series.manga[ D.getMangaSer( arg ) ];
end

-- @name getCardGalleryType
-- @parameter {string} «arg»
-- @return {string|nil} {{Card gallery}} type.
-- @description Gets the {{Card gallery}} type for «arg». «nil» if not found.
function D.getCardGalleryType( arg )
	return DATA.CardGallery.types[ normalizeCardGalleryTypes( arg ) ];
end

----------
-- Return:
----------
return D;
-- </pre>