Thank you Paul and Shil,

This seems like a good way to move forward. I will give this a shot. 

regards
Saravanan

On 2021/09/29 11:47:50, Paul King <pa...@asert.com.au> wrote: 
> Actually Shil's suggestion is a good way to go. You can cut and paste the
> following into the groovyConsole and it will run in the latest versions of
> Groovy:
> 
> import groovy.transform.ASTTest
> 
> @ASTTest(phase=SEMANTIC_ANALYSIS, value={
>     def myMethod = node.methods.find { it.name == 'myMethod' }
>     def from = myMethod.lineNumber
>     def to = myMethod.lastLineNumber
>     def lines = node.module.context.source.reader.readLines()[from-1..<to]
>     println 'Source for myMethod:\n' + lines.join('\n')
>     println 'Comment lines:'
>     lines.findAll{ it.matches($/\s*//.*/$) }.each{ println it }
> })
> class MyClass {
>     def myMethod() {
>         // my comment
>         println 'Hello'
>     }
> }
> println 'done'
> 
> Output is:
> 
> Source for myMethod:
>     def myMethod() {
>         // my comment
>         println 'Hello'
>     }
> Comment lines:
>         // my comment
> done
> 
> Cheers, Paul.
> 
> 
> On Wed, Sep 29, 2021 at 8:34 PM Shil Sinha <shil.si...@gmail.com> wrote:
> 
> > For extracting source code, you might be able to modify this AST
> > transformation for your specific use case: SourceCodeASTTransformation
> > <https://github.com/shils/groovy-exp/blob/master/src/main/groovy/me/shils/internal/transform/SourceCodeASTTransformation.groovy>
> >  (example
> > usage in the tests
> > <https://github.com/shils/groovy-exp/blob/master/src/test/groovy/me/shils/internal/transform/SourceCodeASTTransformationTest.groovy>).
> > I haven't touched this code since Groovy 2.4.x, so I can't guarantee it
> > works as intended in more recent versions.
> >
> > On Wed, Sep 29, 2021 at 8:55 AM Alessio Stalla <alessiosta...@gmail.com>
> > wrote:
> >
> >> I don't know about Groovy specifically, but most parsers discard comments
> >> (and whitespace, line endings, etc.) before building an AST. However, you
> >> can reconstruct the missing text if you have the position information of
> >> each AST node and the original source code available.
> >>
> >> On Wed, 29 Sept 2021 at 08:26, Saravanan Palanichamy <chava...@gmail.com>
> >> wrote:
> >>
> >>> Hello all,
> >>>
> >>> I am trying to do two things
> >>>
> >>> 1) Extract comments from inside a function code (not the function's
> >>> groovy doc, but comments embedded inside the function code itself)
> >>> 2) Extract the source code of the function itself
> >>>
> >>> For example
> >>>
> >>> /* Comments about myFunction *./
> >>> void myFunction() {
> >>>     // My first line in the function
> >>>     myFirstLine()
> >>>
> >>>     // My second line
> >>>     secondLine()
> >>> }
> >>>
> >>> I want to extract the two // comments inside the function. I also want
> >>> to be able to get the entire source code of the function (so essentially
> >>> the entire code snippet above) as part of my AST transformations. Is that
> >>> possible? Thank you for your time
> >>>
> >>> regards
> >>> Saravanan
> >>>
> >>
> 

Reply via email to