R3vo – User

From Bohemia Interactive Community
Revision as of 20:33, 1 January 2019 by R3vo (talk | contribs) (added function code for exporting BIS_fnc_ functions)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


About Me

Template:User de
Template:User en-2

GUI Documentation

Eden

Scripting

BIWiki To-Do

fn_exportFunctionsToWiki

/*
    Author: Karel Moricky, updated by Revo (23.12.2018)
 
    Description:
    Export function descriptions to Community Wiki.
    Exported text will be copied to clipboard.
    Import it to wiki using https://community.bistudio.com/wiki?title=Special:Import
    If the page already exists, it will be replaced only when timestamp is newer.
 
    Parameter(s):
        0: ARRAY - functions filter in format [<tags>,<categories>,<functions>]
            tags: STRING or ARRAY of STRINGs - CfgFunctions tags (e.g., "BIS"). Use empty string for all of them.
            categories: STRING or ARRAY of STRINGs - categories (e.g., "Debug"). Use empty string for all of them.
            functions: STRING or ARRAY of STRINGs - specific function names (e.g., "BIS_fnc_log"). Use empty string for all of them.
        1: STRING - Game Version, default will be the current one.
 
    Returns:
    NOTHING
 
    Example:
    Export all functions:       [] spawn bis_fnc_exportFunctionsToWiki;
    Export all Array functions: [["","Arrays"]] spawn bis_fnc_exportFunctionsToWiki;
    Export specific functions:  [["","",["BIS_fnc_log","BIS_fnc_param"]]]  spawn bis_fnc_exportFunctionsToWiki;
*/
_path = _this param [0,[],[[]]];
_gameVersion = _this param [1,productVersion # 2 / 100,[0,""]];
_pathTags = _path param [0,[],[[],""]];
_pathCategories = _path param [1,[],[[],""]];
_pathFunctions = _path param [2,[],[[],""]];
_text = "";
_cfgRoot = configFile >> "cfgfunctions";
_projects = ["arma2","arma2oa","tkoh","arma3"];
_indent = 1;
 
if (_pathTags isEqualType "") then {_pathTags = [_pathTags]};
if (_pathCategories isEqualType "") then {_pathCategories = [_pathCategories]};
if (_pathFunctions isEqualType "") then {_pathFunctions = [_pathFunctions]};
 
_allTags = {_x != ""} count _pathTags == 0;
_allCategories = {_x != ""} count _pathCategories == 0;
_allFunctions = {_x != ""} count _pathFunctions == 0;
 
_fnc_addLine = {
    for "_t" from 1 to _indent do {_text = _text + "    ";};
    _text = _text + _this + endl;
};
 
_functionsList = call (uiNamespace getVariable ["BIS_functions_list",{[]}]);
_functionsListCount = count _functionsList;
 
{
    _function = _x;
    _meta = _x call bis_fnc_functionMeta;
    _metaPath = _meta # 0;
    _metaFormat = _meta # 1;
    _metaTag = _meta # 6;
    _metaCategory = _meta # 7;
    _metaName = _meta # 8;
 
    if (
        (_allTags || {{_metaTag == _x} count _pathTags > 0})
        &&
        {_allCategories || {{_metaCategory == _x} count _pathCategories > 0}}
        &&
        {_allFunctions || {{_function == _x} count _pathFunctions > 0}}
        )
    then
    {
        //Header
        _file = loadFile _metaPath;
        copyToClipboard _file;
        _headerStart = _file find "/*";
        _headerEnd = _file find "*/";
        _headerLength = _headerEnd - _headerStart;
        _fileHeader = _file select [_headerStart,_headerLength + 2];
        _description = if (_fileHeader == "" || _metaFormat != ".sqf") then
    {
        "''N/A''"
    } else
    {
        format ["<pre>%1
Placeholder description extracted from the function header by BIS_fnc_exportFunctionsToWiki

",_fileHeader]

   };

       _project = getText (_cfgRoot >> _metaTag >> "project");
       if (_project == "") then {_project = toLower (productVersion # 1)};

       _indent = 0;

       //Function template
       " 
-wrong parameter ("%1") defined!-[[:Category:Introduced with %1 version %1|%1]]
Hover & click on the images for description

Description

Description:
%1
Execution:
call
Groups:
Uncategorised

Syntax

Syntax:
[] call %1
Parameters:
parameter: Datatype - (Optional, default defValue) description
Return Value:
Datatype - description

Examples

Example 1:

Additional Information

See also:
See also needed

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

[[Category:Introduced with %1 version %1]][[ Category: %1: New Functions | R3VO]][[ Category: %1: Functions | R3VO]]" call _fnc_addLine;

       "" call _fnc_addLine;
       //Categories
       format ["",_metaName,_metaCategory] call _fnc_addLine;
       format ["",_metaName] call _fnc_addLine;
       _compatible = false;
       {
           if (_x == _project) then {_compatible = true;};
           if (_compatible) then {
               format ["[[Category:%2: Functions|%1]]",_metaName,_x] call _fnc_addLine;
           };
       } foreach _projects;
   };
   systemChat format ["Progress:%1/100%2",round ((_foreachindex / _functionsListCount) * 100),"%"];

} forEach _functionsList;

copyToClipboard _text;