Dota 2 Wiki
Register
(p.var now returns nil instead of empty strings; Added a default option to p.var; Renamed h.parser_function to h.callParserFunction)
mNo edit summary
Line 3: Line 3:
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
   
local libraryUtil = require( 'libraryUtil' )
+
local util = require( 'libraryUtil' )
  +
local checkType = util.checkType
  +
local checkTypeMulti = util.checkTypeMulti
   
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
Line 12: Line 14:
   
 
function h.callParserFunction( func, args )
 
function h.callParserFunction( func, args )
 
return mw.getCurrentFrame():callParserFunction( func, args )
if not frame then
 
frame = mw.getCurrentFrame()
 
end
 
 
return frame:callParserFunction( func, args )
 
 
end
 
end
   
Line 26: Line 24:
   
 
function p.vardefine( name, value )
 
function p.vardefine( name, value )
libraryUtil.checkType( 'vardefine', 1, name, 'string' )
+
checkType( 'vardefine', 1, name, 'string' )
libraryUtil.checkTypeMulti( 'vardefine', 2, value, { 'boolean', 'string', 'number', 'nil' } )
+
checkTypeMulti( 'vardefine', 2, value, { 'boolean', 'string', 'number', 'nil' } )
  +
local value = tostring( value or '' )
   
h.callParserFunction( '#vardefine', { name, tostring( value or '' ) } )
+
h.callParserFunction( '#vardefine', { name, value } )
 
end
 
end
   
 
function p.vardefineecho( name, value )
 
function p.vardefineecho( name, value )
libraryUtil.checkType( 'vardefineecho', 1, name, 'string' )
+
checkType( 'vardefineecho', 1, name, 'string' )
libraryUtil.checkTypeMulti( 'vardefineecho', 2, value, { 'boolean', 'string', 'number', 'nil' } )
+
checkTypeMulti( 'vardefineecho', 2, value, { 'boolean', 'string', 'number', 'nil' } )
  +
local value = tostring( value or '' )
   
return h.callParserFunction( '#vardefineecho', { name, tostring( value or '' ) } )
+
return h.callParserFunction( '#vardefineecho', { name, value } )
 
end
 
end
   
 
function p.varexists( name )
 
function p.varexists( name )
libraryUtil.checkType( 'varexists', 1, name, 'string' )
+
checkType( 'varexists', 1, name, 'string' )
   
 
return ( h.callParserFunction( '#varexists', name ) == '1' )
 
return ( h.callParserFunction( '#varexists', name ) == '1' )
Line 46: Line 46:
   
 
function p.var( name, default )
 
function p.var( name, default )
libraryUtil.checkType( 'var', 1, name, 'string' )
+
checkType( 'var', 1, name, 'string' )
   
 
local value = h.callParserFunction( '#var', name )
 
local value = h.callParserFunction( '#var', name )

Revision as of 07:43, 6 August 2018

Documentation for Module:Variables Jump to code ↴ [ edit | purge ]

This module provides a Lua interface for the parser functions provided by Extension:Variables.

Usage

Function names are identical to the parser function names.

Variables.vardefineecho

Returns the value as it was stored (as a string). Should only be used to verify the stored value, not for inline declarations.

Differences

  • Returns nil instead of empty strings (use p.varexists() to check for variables holding an empty string).
  • varexists() returns a boolean instead of 1 or nil.

Tests

YesY All tests passed.

Name Expected Actual
YesY test_var_defined
YesY test_var_defined_empty
YesY test_var_defined_empty_default
YesY test_var_not_defined
YesY test_var_not_defined_default
YesY test_vardefine_boolean
YesY test_vardefine_function_throws
YesY test_vardefine_nil
YesY test_vardefine_number
YesY test_vardefine_string
YesY test_vardefine_table_throws
YesY test_vardefineecho_boolean
YesY test_vardefineecho_function_throws
YesY test_vardefineecho_nil
YesY test_vardefineecho_number
YesY test_vardefineecho_returns
YesY test_vardefineecho_string
YesY test_vardefineecho_table_throws
YesY test_varexists_false
YesY test_varexists_true


--------------------------------------------------------------------------------
-- Imports
--------------------------------------------------------------------------------

local util = require( 'libraryUtil' )
local checkType = util.checkType
local checkTypeMulti = util.checkTypeMulti

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local h = {}

function h.callParserFunction( func, args )
  return mw.getCurrentFrame():callParserFunction( func, args )
end

--------------------------------------------------------------------------------
-- Functions
--------------------------------------------------------------------------------

local p = {}

function p.vardefine( name, value )
  checkType( 'vardefine', 1, name, 'string' )
  checkTypeMulti( 'vardefine', 2, value, { 'boolean', 'string', 'number', 'nil' } )
  local value = tostring( value or '' )

  h.callParserFunction( '#vardefine', { name, value } )
end

function p.vardefineecho( name, value )
  checkType( 'vardefineecho', 1, name, 'string' )
  checkTypeMulti( 'vardefineecho', 2, value, { 'boolean', 'string', 'number', 'nil' } )
  local value = tostring( value or '' )

  return h.callParserFunction( '#vardefineecho', { name, value } )
end

function p.varexists( name )
  checkType( 'varexists', 1, name, 'string' )

  return ( h.callParserFunction( '#varexists', name ) == '1' )
end

function p.var( name, default )
  checkType( 'var', 1, name, 'string' )

  local value = h.callParserFunction( '#var', name )
  if value ~= '' then
    return value
  elseif default then
    return default
  else
    return nil
  end
end

--------------------------------------------------------------------------------
-- Return
--------------------------------------------------------------------------------

return p