Dani, Wayne, Thanks
On Mon, 07 May 2018 21:59:39 +0000, Wayne Stewart via 4D_Tech wrote: > Chip, > > I wrote some code to do that for Foundation it relies on some discipline in > creating your header comments of course. > > <macro name="FHead"> > <text>// ---------------------------------------------------- > // Project Method: <method_name/> --> ReturnType > // Description > // Access: Shared > // Parameters: > // $1 : Type : Description > // $x : Type : Description (optional) > > // Returns: > // $0 : Type : Description > > // Created by Wayne Stewart (<date format="9"/>) > // wa...@4dsupport.guru > // ---------------------------------------------------- > </text> > </macro> > > // ---------------------------------------------------- > // Project Method: Fnd_Shell_WriteComments {(Method Name; Do not use)} > > // This method will create documentation comments > // it is based on the assumption that you format your > // method header comments in the same manner as Foundation > // The second paramater is just used to trigger the method > // starting in a new process, you should not pass anything in this > parameter > > // Access: Shared > > // Parameters: > // $1 : Text : Either pass > // (a) "" - All methods (or don't pass any parameters) > // (b) "Prefix" - Only methods which match a prefix (Eg. Fnd_Art) > // (c) "Specific method name" - write comments for that method > // $2 : Longint : Do not use this > > // Created by Wayne Stewart > // ---------------------------------------------------- > > C_TEXT($1) > C_LONGINT($2) > > C_LONGINT($CurrentMethod_i;$NumberOfMethods_i;$Position_i;$ProcessID_i;$StackSize_i) > C_TEXT($FirstChars_t;$MethodCode_t;$MethodName_t;$ThreadSafe_t;$ThreadSafeSection_t) > C_OBJECT($Attributes_o) > > ARRAY TEXT($MethodCode_at;0) > ARRAY TEXT($MethodNames_at;0) > > If (False) > C_TEXT(Fnd_Shell_WriteComments ;$1) > C_LONGINT(Fnd_Shell_WriteComments ;$2) > End if > > > $StackSize_i:=0 > > If (Count parameters=2) > > METHOD GET PATHS(Path project method;$MethodNames_at) > > $MethodName_t:=$1 > > If (Length($MethodName_t)>0) // A method name or prefix has been > specified > > $NumberOfMethods_i:=Count in array($MethodNames_at;$MethodName_t) > > If ($NumberOfMethods_i=1) // exactly one match (use this specific > method) > APPEND TO ARRAY($MethodNames_at;$MethodName_t) > Else > > $NumberOfMethods_i:=Size of array($MethodNames_at) > For ($CurrentMethod_i;$NumberOfMethods_i;1;-1) // Go Backwards > If ($MethodNames_at{$CurrentMethod_i}=($MethodName_t+"@")) > Else > DELETE FROM ARRAY($MethodNames_at;$CurrentMethod_i) > End if > > End for > > End if > > End if > > $NumberOfMethods_i:=Size of array($MethodNames_at) > > METHOD GET CODE($MethodNames_at;$MethodCode_at) > > ARRAY TEXT($MethodComments_at;$NumberOfMethods_i) > > For ($CurrentMethod_i;1;$NumberOfMethods_i) > $MethodCode_t:=$MethodCode_at{$CurrentMethod_i} > > $Position_i:=Position("comment added and reserved by > 4D.\r";$MethodCode_t) > > $MethodCode_t:=Substring($MethodCode_t;$Position_i+Length("comment > added and reserved by 4D.\r")) > > // Threadsafe? > METHOD GET ATTRIBUTES($MethodNames_at{$CurrentMethod_i};$Attributes_o) > $ThreadSafe_t:=OB Get($Attributes_o;"preemptive") > > Case of > : ($ThreadSafe_t="capable") > $ThreadSafeSection_t:="\rPreemptive\r" > > : ($ThreadSafe_t="incapable") > $ThreadSafeSection_t:="\rCooperative\r" > > : ($ThreadSafe_t="indifferent") > $ThreadSafeSection_t:="\rPreemptive capable\r" > > End case > > $MethodCode_t:=Replace string($MethodCode_t;"\r // Access: > Shared\r";"\r // Access: Shared\r"+$ThreadSafeSection_t) > $MethodCode_t:=Replace string($MethodCode_t;"\r // Access: > Private\r";"\r // Access: Shared\r"+$ThreadSafeSection_t) > > // End Threadsafe section > > $MethodCode_t:=Replace string($MethodCode_t;" // > ----------------------------------------------------\r";"") > $MethodCode_t:=Replace string($MethodCode_t;"// > ----------------------------------------------------\r";"") > > $MethodCode_t:=Replace string($MethodCode_t;" // Project Method: ";"") > $MethodCode_t:=Replace string($MethodCode_t;"// Project Method: ";"") > > $MethodCode_t:=Replace string($MethodCode_t;" // ";"") > $MethodCode_t:=Replace string($MethodCode_t;"// ";"") > > $Position_i:=Position("Created by";$MethodCode_t) > > $MethodCode_t:=Substring($MethodCode_t;1;($Position_i-3)) > > $FirstChars_t:=Substring($MethodCode_t;1;2) > While ($FirstChars_t="\r\r") > $MethodCode_t:=Substring($MethodCode_t;2) > $FirstChars_t:=Substring($MethodCode_t;1;2) > End while > > $MethodComments_at{$CurrentMethod_i}:=$MethodCode_t > > End for > > METHOD SET COMMENTS($MethodNames_at;$MethodComments_at) > > Else > > If (Count parameters=1) > $MethodName_t:=$1 > Else > $MethodName_t:="" > End if > > // This version allows for any number of processes > // $ProcessID_i:=New Process(Current method name;$StackSize_i;Current > method name;0) > > // On the other hand, this version allows for one unique process > $ProcessID_i:=New process(Current method name;$StackSize_i;Current method > name;$MethodName_t;0;*) > > RESUME PROCESS($ProcessID_i) > SHOW PROCESS($ProcessID_i) > BRING TO FRONT($ProcessID_i) > End if > > > Regards, > > Wayne > > > Wayne Stewart > about.me/waynestewart > > > > > On Tue, 8 May 2018 at 07:40, Dani Beaubien via 4D_Tech > <4d_tech@lists.4d.com> > wrote: > >> Hi Chip, > >> You can use "METHOD SET COMMENTS” to set the method comments using code. > >> I actually use that call in my Code Analysis component. I have a feature > that will look at each method, grab the comment lines at the top of the > method until it hits a line that is not a comment, and then put those > comments into the method comments using "METHOD SET COMMENTS”. Really > useful for ensuring all the shared methods in a component have a comment > can then be seen as a tip in a host database. > >> The Code Analysis component can be grabbed from here. Source code is > there as well. >> http://openroaddevelopment.com/downloads.html > >> Dani > > >>> On May 7, 2018, at 3:04 PM, Chip Scheide via 4D_Tech < > 4d_tech@lists.4d.com> wrote: >>> >>> I have not looked into this much... >>> Is there a way in code to access the method comments (form the Explorer >>> Pane)? >>> >>> I would like to be able to, as a start, copy the actual method header >>> comments into this area. >>> >>> any info appreciated. >>> >>> Thanks >>> Chip >>> >>> --------------- >>> Gas is for washing parts >>> Alcohol is for drinkin' >>> Nitromethane is for racing >>> ********************************************************************** >>> 4D Internet Users Group (4D iNUG) >>> FAQ: http://lists.4d.com/faqnug.html >>> Archive: http://lists.4d.com/archives.html >>> Options: https://lists.4d.com/mailman/options/4d_tech >>> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >>> ********************************************************************** > >> ********************************************************************** >> 4D Internet Users Group (4D iNUG) >> FAQ: http://lists.4d.com/faqnug.html >> Archive: http://lists.4d.com/archives.html >> Options: https://lists.4d.com/mailman/options/4d_tech >> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >> ********************************************************************** > ********************************************************************** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: https://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ********************************************************************** --------------- Gas is for washing parts Alcohol is for drinkin' Nitromethane is for racing ********************************************************************** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************