Jump to content

Recommended Posts

Posted (edited)
#include <Array.au3>

If @Compiled Then Exit

Global Enum $FUNC_OUTER, $FUNC_NAME, $FUNC_PARAM, $FUNC_INNER

_Example()
Func _Example()
    Local $sIncludeDir = StringTrimRight(@AutoItExe, StringLen('AutoIt3.exe')) & 'Include\'

    Local $aOuterArray = _GetFunctionsToArray($sIncludeDir & 'Color.au3')
    If Not @error Then
        For $iOuter_idx = 0 To UBound($aOuterArray) - 1
            _ArrayDisplay($aOuterArray[$iOuter_idx], ($aOuterArray[$iOuter_idx])[$FUNC_NAME])
        Next
    EndIf
EndFunc   ;==>_Example

Func _GetFunctionsToArray($sUDF_FileFullPath)
    Local $sUDFContent = FileRead($sUDF_FileFullPath)
    Local $aResult = StringRegExp($sUDFContent, '(?is)\RFunc (.*?)\((.*?)\)\v\R(.*?)\REndFunc', $STR_REGEXPARRAYGLOBALFULLMATCH)
    Return SetError(@error, @extended, $aResult)
EndFunc   ;==>_GetFunctionsToArray

 

Edited by mLipok
typo in variable name

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

  • 6 months later...
Posted (edited)

Another variation:

#include <Array.au3>

If @Compiled Then Exit

_Example()
Func _Example()
    Local $sIncludeDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, '\', 0, -1)) & 'Include\'

    Local $aArray = _GetFunctionsToArray($sIncludeDir & 'Color.au3')
    _ArrayDisplay($aArray)
EndFunc   ;==>_Example

Func _GetFunctionsToArray($sUDF_FileFullPath)
    Local $sUDFContent = FileRead($sUDF_FileFullPath)
    Local $aResult = _StringRegExp2D($sUDFContent, '(?is)\RFunc (.*?)\((.*?)\)\v\R(.*?)\REndFunc')
    Return SetError(@error, @extended, $aResult)
EndFunc   ;==>_GetFunctionsToArray

Func _StringRegExp2D($sTest, $sPattern)
    Local $avSRE = StringRegExp($sTest, $sPattern, $STR_REGEXPARRAYGLOBALFULLMATCH)
    If @error Then Return SetError(@error, @extended, 0)
    Local $iSRERows = UBound($avSRE)
    Local $avReturn[$iSRERows][0]
    For $iRow = 0 To $iSRERows - 1
        Local $avCols = $avSRE[$iRow]
        Local $iCols = UBound($avCols)
        If UBound($avReturn, 2) < $iCols - 1 Then ReDim $avReturn[$iSRERows][$iCols - 1]
        For $iCol = 1 To $iCols - 1
            $avReturn[$iRow][$iCol - 1] = $avCols[$iCol]
        Next
    Next
    Return $avReturn
EndFunc   ;==>_StringRegExp2D

 

Edited by GMK
Edited for speed; added error checking

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...