Модуль:Variables

Материал из Dota 2 Вики
Перейти к: навигация, поиск

Документация для Модуль:Variables Перейти к коду ↴ [ править | очистить ]

Смотрите также: Extension:Variables

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

Использование[править]

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[править]

ДаД All tests passed.

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


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

local libraryUtil = require( 'libraryUtil' )

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

local h = {}

function h.callParserFunction( func, args )
  if not frame then
    frame = mw.getCurrentFrame()
  end

  return frame:callParserFunction( func, args )
end

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

local p = {}

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

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

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

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

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

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

function p.var( name, default )
  libraryUtil.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