File: sqf

package info (click to toggle)
ruby-rouge 4.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,836 kB
  • sloc: ruby: 38,168; sed: 2,071; perl: 152; makefile: 8
file content (52 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * Author: BaerMitUmlaut
 * Generates and dumps a list of all currently available commands.
 * List can be dumped to clipboard or global variable.
 *
 * Arguments:
 * 0: Dump target (clipboard|var:VARNAME)                 <STRING>
 * 1: List delimiter (default: new line)                  <STRING>
 *
 * Return Value:
 * None
 */

#define SORT_ASC  true
#define SORT_DESC false
#define MAKE_UNIQUE(arr) (arr arrayIntersect arr)

params [
    ["_target", "clipboard", [""]],
    ["_delimiter", endl, [""]]
];

private _supportInfo = supportInfo "";

// Remove types from list
private _allCommands = _supportInfo select {_x find "t:" == -1};

// Sort commands into categories for processing
private _nulars   = _allCommands select {_x find "n:" == 0};
private _unaries  = _allCommands select {_x find "u:" == 0};
private _binaries = _allCommands select {_x find "b:" == 0};

// Remove argument types from command description
_nulars   = _nulars   apply {_x select [2]};
_unaries  = _unaries  apply {_x select [2]};
_unaries  = _unaries  apply {_x splitString " " select 0};
_binaries = _binaries apply {_x splitString " " select 1};

// Merge lists
private _commandList = _nulars + _unaries + _binaries;
_commandList = MAKE_UNIQUE(_commandList);
_commandList sort SORT_ASC;

// Dump list
if (_target find "var:" == 0) then {
    missionNamespace setVariable [_target select [4], _commandList];
} else {
    _commandList = _commandList joinString _delimiter;
    copyToClipboard _commandList;
};

// comment at eof