Возвращает группу связанных с аддоном текстовых ресурсов. Группа представляет собой userdata (RelatedTextsLua).
-- библиотека: common -- объявление: function GetAddonRelatedTextGroup( sysGroup, optional ) -- параметры: sysGroup: string - идентификатор группы optional: boolean or nil - если true, то отсутствие искомой группы не считается ошибкой (по умолчанию false) -- возвращаемые значения: RelatedTextsLua or nil - группа текстов или nil в случае если группа не найдена -- пример: -------------------------------------------------------------------------------- -- Text caches -------------------------------------------------------------------------------- do -------------------------------------------------------------------------------- local _textDefaultGroupId = "Common" local _dummyGroup = { HasText = function() return false end } local _textAddonGroups = {} local _textAddonCache = {} local _textStateGroups = {} local _textStateCache = {} -------------------------------------------------------------------------------- local function GetGroupText( group, groupCache, sysName, optional ) local result = groupCache[ sysName ] if result == nil then local hasText = group:HasText( sysName ) if hasText then result = group:GetText( sysName ) elseif optional then result = false else result = GetEWs() ---BEGIN_DEBUG--- local _, sysGroup = table.search( _textAddonGroups, group ) if not sysGroup then _, sysGroup = table.search( _textStateGroups, group ) end if group == _dummyGroup then LogError( string.format( "Requested text [%s] from non-existent group [%s]", tostring( sysName ), tostring( sysGroup ) ) ) else LogError( string.format( "Requested non-existent text [%s] from group [%s]", tostring( sysName ), tostring( sysGroup ) ) ) end ---END_DEBUG--- end groupCache[ sysName ] = result end return result end -------------------------------------------------------------------------------- -- Получить текст sysName из группы аддона sysGroup (или Common если nil) -- Если задано optional то отсутствие текста не считается ошибкой (группа должна существовать) function GetAddonText( sysGroup, sysName, optional ) sysGroup = sysGroup or _textDefaultGroupId local group = _textAddonGroups[ sysGroup ] if not group then group = common.GetAddonRelatedTextGroup( sysGroup, true ) or _dummyGroup _textAddonGroups[ sysGroup ] = group _textAddonCache[ sysGroup ] = {} end return GetGroupText( group, _textAddonCache[ sysGroup ], sysName, optional ) end -------------------------------------------------------------------------------- -- Получить текст sysName из группы стейта sysGroup (или Common если nil) -- Если задано optional то отсутствие текста не считается ошибкой (группа должна существовать) function GetStateText( sysGroup, sysName, optional ) sysGroup = sysGroup or _textDefaultGroupId local group = _textStateGroups[ sysGroup ] if not group then group = common.GetStateRelatedTextGroup( sysGroup, true ) or _dummyGroup _textStateGroups[ sysGroup ] = group _textStateCache[ sysGroup ] = {} end return GetGroupText( group, _textStateCache[ sysGroup ], sysName, optional ) end -------------------------------------------------------------------------------- end --------------------------------------------------------------------------------
См. описание группы текстовых ресурсов: RelatedTextsLua