R3vo – User
mNo edit summary |
m (added function code for exporting BIS_fnc_ functions) |
||
| Line 39: | Line 39: | ||
*[https://community.bistudio.com/wiki/Special:LonelyPages Lonely Pages] | *[https://community.bistudio.com/wiki/Special:LonelyPages Lonely Pages] | ||
*[[:Category:AnswerMe|Answers needed]] | *[[:Category:AnswerMe|Answers needed]] | ||
= fn_exportFunctionsToWiki = | |||
<pre>/* | |||
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</pre>{{Informative|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 | |||
"{{Function|= Comments" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
format ["| %1 |Game name=",_project] call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
format ["|%1|Game version=",_gameVersion] call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"<!---|arg= local |Multiplayer Arguments=--->" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"<!---|eff= local |Multiplayer Effects=--->" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
format ["| %1 |Description=",_description] call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
format ["|[] call [[%1]]|Syntax=",_function] call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"|p1= parameter: Datatype - (Optional, default defValue) description |Parameter 1=" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"|Datatype - description|Return value=" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"|x1= <code></code>|Example 1=" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"|exec= call |Execution=" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
"| |See also=" call _fnc_addLine; | |||
"}}" call _fnc_addLine; | |||
"" call _fnc_addLine; | |||
//Categories | |||
format ["[[Category:Function Group: %2|{{uc:%1}}]]",_metaName,_metaCategory] call _fnc_addLine; | |||
format ["[[Category:Functions|{{uc:%1}}]]",_metaName] call _fnc_addLine; | |||
_compatible = false; | |||
{ | |||
if (_x == _project) then {_compatible = true;}; | |||
if (_compatible) then { | |||
format ["[[Category:{{Name|%2}}: Functions|{{uc:%1}}]]",_metaName,_x] call _fnc_addLine; | |||
}; | |||
} foreach _projects; | |||
}; | |||
systemChat format ["Progress:%1/100%2",round ((_foreachindex / _functionsListCount) * 100),"%"]; | |||
} forEach _functionsList; | |||
copyToClipboard _text;</pre> | |||
Revision as of 19:33, 1 January 2019
About Me
| Template:User de |
| Template:User en-2 |
GUI Documentation
Eden
Scripting
BIWiki To-Do
- Examples needed
- See also needed
- Need formatting
- Broken links
- Stubs
- Short pages
- Deletion request
- Lonely Pages
- Answers needed
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",_fileHeader]
};
_project = getText (_cfgRoot >> _metaTag >> "project");
if (_project == "") then {_project = toLower (productVersion # 1)};
_indent = 0;
//Function template
"
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;