diff --git a/addons/arsenal/functions/fnc_addSort.sqf b/addons/arsenal/functions/fnc_addSort.sqf index 7dac85af36..49bbc04c76 100644 --- a/addons/arsenal/functions/fnc_addSort.sqf +++ b/addons/arsenal/functions/fnc_addSort.sqf @@ -5,8 +5,8 @@ * * Arguments: * 0: Tabs to add sort to - * 0.0: Left Tab Indexes - * 0.1: Right Tab Indexes + * - 0: Left Tab Indexes + * - 1: Right Tab Indexes * 1: Sort Class (a unique string for each algorithm) * 2: Title * 3: Algorithm diff --git a/addons/arsenal/functions/fnc_addStat.sqf b/addons/arsenal/functions/fnc_addStat.sqf index d813974f40..614e29d337 100644 --- a/addons/arsenal/functions/fnc_addStat.sqf +++ b/addons/arsenal/functions/fnc_addStat.sqf @@ -5,18 +5,18 @@ * * Arguments: * 0: Tabs to add the stat to - * 0.0: Left tab indexes - * 0.1: Right tab indexes + * - 0: Left tab indexes + * - 1: Right tab indexes * 1: Stat class (unique string for each stat) * 2: Config entries to pass * 3: Title * 4: Show bar / show text bools - * 4.0: Show bar (default: false) - * 4.1: Show text (default: false) + * - 0: Show bar (default: false) + * - 1: Show text (default: false) * 5: Array of statements - * 5.0: Bar code (default: {}) - * 5.1: Text code (default: {}) - * 5.2: Condition code (default: {true}) + * - 0: Bar code (default: {}) + * - 1: Text code (default: {}) + * - 2: Condition code (default: {true}) * 6: Priority (default: 0) * * Return Value: diff --git a/addons/arsenal/functions/fnc_handleMouse.sqf b/addons/arsenal/functions/fnc_handleMouse.sqf index 4f434855e7..75dfc576f9 100644 --- a/addons/arsenal/functions/fnc_handleMouse.sqf +++ b/addons/arsenal/functions/fnc_handleMouse.sqf @@ -8,9 +8,9 @@ * Arguments: * 0: Not used * 1: Arguments - * 1.0: Mouse area control - * 1.1: Mouse X position - * 1.2: Mouse Y position + * - 0: Mouse area control + * - 1: Mouse X position + * - 2: Mouse Y position * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_handleScrollWheel.sqf b/addons/arsenal/functions/fnc_handleScrollWheel.sqf index ddfb903f38..f412c8153c 100644 --- a/addons/arsenal/functions/fnc_handleScrollWheel.sqf +++ b/addons/arsenal/functions/fnc_handleScrollWheel.sqf @@ -6,8 +6,8 @@ * Arguments: * 0: Not used * 1: onMouseZChanged EH return - * 1.0: Not used - * 1.1: Mousewheel Z position + * - 0: Not used + * - 1: Mousewheel Z position * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_onArsenalClose.sqf b/addons/arsenal/functions/fnc_onArsenalClose.sqf index f2fdc477ae..73851d4aa9 100644 --- a/addons/arsenal/functions/fnc_onArsenalClose.sqf +++ b/addons/arsenal/functions/fnc_onArsenalClose.sqf @@ -6,8 +6,8 @@ * Arguments: * 0: Not used * 1: Args - * 1.0: Not used - * 1.1: Exit code + * - 0: Not used + * - 1: Exit code * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_onArsenalOpen.sqf b/addons/arsenal/functions/fnc_onArsenalOpen.sqf index 20ef9d53c0..2ee4f1f747 100644 --- a/addons/arsenal/functions/fnc_onArsenalOpen.sqf +++ b/addons/arsenal/functions/fnc_onArsenalOpen.sqf @@ -7,7 +7,7 @@ * Arguments: * 0: Not used * 1: Arguments - * 1.0: Arsenal display + * - 0: Arsenal display * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf b/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf index 6a0cd1ef5b..ecfce2925b 100644 --- a/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf +++ b/addons/arsenal/functions/fnc_onLoadoutsOpen.sqf @@ -7,7 +7,7 @@ * Arguments: * 0: Not used * 1: Arguments - * 1.0: Loadouts display + * - 0: Loadouts display * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_onMouseButtonDown.sqf b/addons/arsenal/functions/fnc_onMouseButtonDown.sqf index 1541289e0e..77d7ea84c4 100644 --- a/addons/arsenal/functions/fnc_onMouseButtonDown.sqf +++ b/addons/arsenal/functions/fnc_onMouseButtonDown.sqf @@ -6,10 +6,10 @@ * Arguments: * 0: Not used * 1: Args - * 1.0: Not used - * 1.1: Mouse button - * 1.2: Mouse X position - * 1.3: Mouse Y position + * - 0: Not used + * - 1: Mouse button + * - 2: Mouse X position + * - 3: Mouse Y position * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_onMouseButtonUp.sqf b/addons/arsenal/functions/fnc_onMouseButtonUp.sqf index 1866db5e13..d84b8dae2d 100644 --- a/addons/arsenal/functions/fnc_onMouseButtonUp.sqf +++ b/addons/arsenal/functions/fnc_onMouseButtonUp.sqf @@ -6,8 +6,8 @@ * Arguments: * 0: Not used * 1: Args - * 1.0: Not used - * 1.1: Mouse button + * - 0: Not used + * - 1: Mouse button * * Return Value: * None diff --git a/addons/arsenal/functions/fnc_removeSort.sqf b/addons/arsenal/functions/fnc_removeSort.sqf index 8b9c818217..4fe98569d1 100644 --- a/addons/arsenal/functions/fnc_removeSort.sqf +++ b/addons/arsenal/functions/fnc_removeSort.sqf @@ -10,8 +10,7 @@ * None * * Example: - * - [["scopeSortL00", "scopeSortL01", "scopeSortL02", "scopeSortR07"]] call ace_arsenal_fnc_removeSort; + * [["scopeSortL00", "scopeSortL01", "scopeSortL02", "scopeSortR07"]] call ace_arsenal_fnc_removeSort; * * Public: Yes */ diff --git a/addons/arsenal/functions/fnc_statBarStatement_accuracy.sqf b/addons/arsenal/functions/fnc_statBarStatement_accuracy.sqf index 22076ae143..f6fcae8030 100644 --- a/addons/arsenal/functions/fnc_statBarStatement_accuracy.sqf +++ b/addons/arsenal/functions/fnc_statBarStatement_accuracy.sqf @@ -7,8 +7,8 @@ * 0: Not used * 1: Item config path * 2: Args - * 2.0: Stat limits - * 2.1: Bar limits + * - 0: Stat limits + * - 1: Bar limits * * Return Value: * diff --git a/addons/arsenal/functions/fnc_statBarStatement_default.sqf b/addons/arsenal/functions/fnc_statBarStatement_default.sqf index 8c547078f6..c346b3a2e0 100644 --- a/addons/arsenal/functions/fnc_statBarStatement_default.sqf +++ b/addons/arsenal/functions/fnc_statBarStatement_default.sqf @@ -7,9 +7,9 @@ * 0: Stat * 1: Item config path * 2: Args for configExtreme - * 2.0: Stat limits - * 2.1: Bar limits - * 2.2: Evaluate as a logarithmic number + * - 0: Stat limits + * - 1: Bar limits + * - 2: Evaluate as a logarithmic number * * Return Value: * Bar statement diff --git a/addons/arsenal/functions/fnc_statBarStatement_impact.sqf b/addons/arsenal/functions/fnc_statBarStatement_impact.sqf index 84d82eb466..8384a386e9 100644 --- a/addons/arsenal/functions/fnc_statBarStatement_impact.sqf +++ b/addons/arsenal/functions/fnc_statBarStatement_impact.sqf @@ -8,8 +8,8 @@ * 0: Stats array * 1: Item config path * 2: Args for configExtreme - * 2.0: Stats limits - * 2.1: Bar limits + * - 0: Stats limits + * - 1: Bar limits * * Return Value: * Number diff --git a/addons/arsenal/functions/fnc_statBarStatement_rateOfFIre.sqf b/addons/arsenal/functions/fnc_statBarStatement_rateOfFIre.sqf index 22d29d7f9b..a4fb3d2970 100644 --- a/addons/arsenal/functions/fnc_statBarStatement_rateOfFIre.sqf +++ b/addons/arsenal/functions/fnc_statBarStatement_rateOfFIre.sqf @@ -7,8 +7,8 @@ * 0: Not used * 1: Item config path * 2: Args - * 2.0: Stat limits - * 2.1: Bar limits + * - 0: Stat limits + * - 1: Bar limits * * Return Value: * Number diff --git a/addons/common/functions/fnc_unloadUnitWeapon.sqf b/addons/common/functions/fnc_unloadUnitWeapon.sqf index 6998370e36..d82684fe22 100644 --- a/addons/common/functions/fnc_unloadUnitWeapon.sqf +++ b/addons/common/functions/fnc_unloadUnitWeapon.sqf @@ -14,7 +14,7 @@ * None * * Example: -* [ACE_player, currentWeapon ACE_player, currentMuzzle ACE_player, 23, false] call ace_common_fnc_unloadUnitWeapon + * [ACE_player, currentWeapon ACE_player, currentMuzzle ACE_player, 23, false] call ace_common_fnc_unloadUnitWeapon * * Public: No */ diff --git a/addons/common/functions/fnc_watchVariable.sqf b/addons/common/functions/fnc_watchVariable.sqf index 2bb2d053ef..cdd88e1771 100644 --- a/addons/common/functions/fnc_watchVariable.sqf +++ b/addons/common/functions/fnc_watchVariable.sqf @@ -8,11 +8,11 @@ * 1: Code to generate result (passed nothing, can return any) (default: {}) * 2: Array containing modifiers (default: []) * For Numbers: - * 2.0: Show Delta change (default: true) - * 2.1: Slider Min Value (default: 0) - * 2.1: Slider Max Value (default: 0) + * - 0: Show Delta change (default: true) + * - 1: Slider Min Value (default: 0) + * - 2: Slider Max Value (default: 0) * For Anything else: - * 2.0: Number of structured text lines (default: 1) + * + 0: Number of structured text lines (default: 1) * * Return Value: * None diff --git a/addons/cookoff/functions/fnc_detonateAmmunition.sqf b/addons/cookoff/functions/fnc_detonateAmmunition.sqf index 9cbe1c9f17..3d2089fe88 100644 --- a/addons/cookoff/functions/fnc_detonateAmmunition.sqf +++ b/addons/cookoff/functions/fnc_detonateAmmunition.sqf @@ -6,8 +6,8 @@ * Arguments: * 0: vehicle * 1: Ammo Array - * 0: Magazine Classname - * 1: Ammo Count + * - 0: Magazine Classname + * - 1: Ammo Count * 2: Total Ammo Count * * Return Value: diff --git a/addons/cookoff/functions/fnc_getVehicleAmmo.sqf b/addons/cookoff/functions/fnc_getVehicleAmmo.sqf index 95caf09dd5..9be02b75bb 100644 --- a/addons/cookoff/functions/fnc_getVehicleAmmo.sqf +++ b/addons/cookoff/functions/fnc_getVehicleAmmo.sqf @@ -8,8 +8,8 @@ * * Return Value: * 0: Ammo Array - * 0: Magazine Classname - * 1: Ammo Count + * - 0: Magazine Classname + * - 1: Ammo Count * 1: Total Ammo Count * * Example: diff --git a/addons/dragging/functions/fnc_carryObjectPFH.sqf b/addons/dragging/functions/fnc_carryObjectPFH.sqf index 2a392a20a6..ee9234a3c8 100644 --- a/addons/dragging/functions/fnc_carryObjectPFH.sqf +++ b/addons/dragging/functions/fnc_carryObjectPFH.sqf @@ -5,9 +5,9 @@ * * Arguments: * 0: Arguments - * 0.0: Unit - * 0.1: Target - * 0.2: Start time + * - 0: Unit + * - 1: Target + * - 2: Start time * 1: PFEH Id * * Return Value: diff --git a/addons/dragging/functions/fnc_dragObjectPFH.sqf b/addons/dragging/functions/fnc_dragObjectPFH.sqf index c5346bcd0e..24cd95ce6a 100644 --- a/addons/dragging/functions/fnc_dragObjectPFH.sqf +++ b/addons/dragging/functions/fnc_dragObjectPFH.sqf @@ -5,9 +5,9 @@ * * Arguments: * 0: Arguments - * 0.0: Unit - * 0.1: Target - * 0.2: Start time + * - 0: Unit + * - 1: Target + * - 2: Start time * 1: PFEH Id * * Return Value: diff --git a/addons/dragging/functions/fnc_startCarryPFH.sqf b/addons/dragging/functions/fnc_startCarryPFH.sqf index 8271b005e1..d96f29a0f3 100644 --- a/addons/dragging/functions/fnc_startCarryPFH.sqf +++ b/addons/dragging/functions/fnc_startCarryPFH.sqf @@ -5,9 +5,9 @@ * * Arguments: * 0: Arguments - * 0.0: Unit - * 0.1: Target - * 0.2: Timeout + * - 0: Unit + * - 1: Target + * - 2: Timeout * 1: PFEH Id * * Return Value: diff --git a/addons/dragging/functions/fnc_startDragPFH.sqf b/addons/dragging/functions/fnc_startDragPFH.sqf index ef5883e0e9..e72313828d 100644 --- a/addons/dragging/functions/fnc_startDragPFH.sqf +++ b/addons/dragging/functions/fnc_startDragPFH.sqf @@ -5,9 +5,9 @@ * * Arguments: * 0: Arguments - * 0.0: Unit - * 0.1: Target - * 0.2: Timeout + * - 0: Unit + * - 1: Target + * - 2: Timeout * 1: PFEH Id * * Return Value: diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index 3b2740fab2..2e84b66195 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -7,8 +7,8 @@ * 0: Unit * 1: Max range (-1 to ignore) * 2: Explosive - * 2.0: Explosive - * 2.1: Fuse time + * - 0: Explosive + * - 1: Fuse time * 3: Trigger Item Classname * * Return Value: diff --git a/addons/explosives/functions/fnc_detonateExplosiveAll.sqf b/addons/explosives/functions/fnc_detonateExplosiveAll.sqf index ec1f1e661a..f99e308423 100644 --- a/addons/explosives/functions/fnc_detonateExplosiveAll.sqf +++ b/addons/explosives/functions/fnc_detonateExplosiveAll.sqf @@ -7,8 +7,8 @@ * 0: Unit * 1: Range (-1 to ignore) * 2: Explosives to detonate - * 0: Explosive - * 1: Fuse time + * - 0: Explosive + * - 1: Fuse time * 3: Trigger Item Classname * * Return Value: diff --git a/addons/fortify/functions/fnc_modifyAction.sqf b/addons/fortify/functions/fnc_modifyAction.sqf index 4587840396..c81c4eff12 100644 --- a/addons/fortify/functions/fnc_modifyAction.sqf +++ b/addons/fortify/functions/fnc_modifyAction.sqf @@ -1,5 +1,5 @@ #include "script_component.hpp" - /* +/* * Author: PabstMirror * Modifies the fortify action, shows current budget. * diff --git a/addons/goggles/functions/fnc_isInRotorWash.sqf b/addons/goggles/functions/fnc_isInRotorWash.sqf index d978cde0ce..34f46047ca 100644 --- a/addons/goggles/functions/fnc_isInRotorWash.sqf +++ b/addons/goggles/functions/fnc_isInRotorWash.sqf @@ -9,8 +9,8 @@ * * Return Value: * Array : - * 0: In rotorwash - * 1: Amount of rotor wash. + * - 0: In rotorwash + * - 1: Amount of rotor wash. * * Example: * if ([ace_player, 10] call ace_goggles_fnc_isInRotorWash select 0) then { hint "Rotor wash"; }; diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index 11dc919a7e..6cff2a9fe5 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -5,7 +5,7 @@ * * Arguments: * 0: Args - * 0: Just update volume (skip ringing/recovery) (default: false) + * - 0: Just update volume (skip ringing/recovery) (default: false) * * Return Value: * None diff --git a/addons/laser/functions/fnc_findLaserSource.sqf b/addons/laser/functions/fnc_findLaserSource.sqf index 878b3e91db..d7b535a5de 100644 --- a/addons/laser/functions/fnc_findLaserSource.sqf +++ b/addons/laser/functions/fnc_findLaserSource.sqf @@ -6,7 +6,7 @@ * Arguments: * 0: Vehicle (shooter of laser) * 6: Method Args - * 0: Laser Source selection on Vehicle + * - 0: Laser Source selection on Vehicle * * Return Value: * [position, direction] diff --git a/addons/repair/functions/fnc_setDamage.sqf b/addons/repair/functions/fnc_setDamage.sqf index 13549ca54d..4840624105 100644 --- a/addons/repair/functions/fnc_setDamage.sqf +++ b/addons/repair/functions/fnc_setDamage.sqf @@ -6,7 +6,7 @@ * Arguments: * 0: Local Vehicle to Damage * 1: Total Damage - # 2: Use destruction effects + * 2: Use destruction effects * * Return Value: * None diff --git a/addons/zeus/functions/fnc_getModuleDestination.sqf b/addons/zeus/functions/fnc_getModuleDestination.sqf index 2066d5887e..e5a8d99151 100644 --- a/addons/zeus/functions/fnc_getModuleDestination.sqf +++ b/addons/zeus/functions/fnc_getModuleDestination.sqf @@ -5,14 +5,13 @@ * * Arguments: * 0: The souce object - * 1: Code to run when position is ready - * - Code is passed - * 0: Successful - * 1: Object - * 2: Position ASL - * 3: State of Shift - * 4: State of Ctrl - * 5: State of Alt + * 1: Code to run when position is ready (will be passed the following array) + * - 0: Successful + * - 1: Object + * - 2: Position ASL + * - 3: State of Shift + * - 4: State of Ctrl + * - 5: State of Alt * 2: Text (default: "") * 3: Icon image file (default: "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa") * 4: Icon color (default: [1,0,0,1]) diff --git a/docs/tools/document_functions.py b/docs/tools/document_functions.py index f91c237090..3f52286935 100644 --- a/docs/tools/document_functions.py +++ b/docs/tools/document_functions.py @@ -67,6 +67,10 @@ class FunctionFile: self.debug = debug self.lint_private = lint_private + for lineNumber, line in enumerate(self.header.splitlines()): + if (not (line.startswith(" * ") or line in ["", " *", "/*", "*/", " */"])): + self.feedback(f"header formating on line {lineNumber+1}: ({line})", 1) + # Preemptively cut away the comment characters (and leading/trailing whitespace) self.header_text = "\n".join([x[3:].strip() for x in self.header.splitlines()]) @@ -160,18 +164,30 @@ class FunctionFile: self.feedback("No blank line after arguments list", 1) arguments = [] + expectedMainIndex = 0 + expectedSubIndex = 0 for argument in lines: - valid = re.match(r"^(\d+):\s(.+?)\<([\s\w,\|]+?)\>( )?(\s\(default: (.+)\))?$", argument) + valid = re.match(r"^(- ){0,1}(\d+):\s(.+?)\<([\s\w,\|]+?)\>( )?(\s\(default: (.+)\))?$", argument) if valid: - arg_index = valid.group(1) - arg_name = valid.group(2) - arg_types = valid.group(3) - arg_default = valid.group(6) + arg_isSubIndex = valid.group(1) is not None + arg_index = valid.group(2) + arg_name = valid.group(3) + arg_types = valid.group(4) + arg_default = valid.group(7) arg_notes = [] - if arg_index != str(len(arguments)): - self.feedback("Argument index {} does not match listed order".format(arg_index), 1) + if arg_isSubIndex: + expectedIndex = expectedSubIndex + expectedSubIndex = expectedSubIndex + 1 + else: + expectedIndex = expectedMainIndex + expectedMainIndex = expectedMainIndex + 1 + expectedSubIndex = 0 + + if int(arg_index) != expectedIndex: + print(f"line|{argument}|") + self.feedback(f"Argument index {arg_index} does not match listed order {expectedIndex}", 1) if arg_default is None: arg_default = "" @@ -255,7 +271,7 @@ class FunctionFile: self.errors += 1 def write(self, message, indent=2): - to_print = [" "]*indent + to_print = [" "] * indent to_print.append(message) print("".join(to_print)) diff --git a/docs/wiki/development/coding-guidelines.md b/docs/wiki/development/coding-guidelines.md index 567951c55b..786a5d74e8 100644 --- a/docs/wiki/development/coding-guidelines.md +++ b/docs/wiki/development/coding-guidelines.md @@ -188,7 +188,9 @@ Every function should have a header of the following format appear before any co * * Arguments: * 0: The first argument - * 1: The second argument + * 1: The second argument which contains sub values + * - 0: Number of bannanas + * - 1: Bannana Color * 2: Multiple input types * 3: Optional input (default: true) * 4: Optional input with multiple types (default: {true})