Hi,

Maybe the parser package can help you building such a code beautifier:

> require( parser )
> data <- attr( parser( "/tmp/code.R" ), "data" )
> head( subset( data, terminal ), 5 )
line1 col1 byte1 line2 col2 byte2 token id parent token.desc terminal text 1 1 0 0 1 15 15 263 1 4 SYMBOL TRUE this.is.my.name 2 1 16 16 1 17 17 266 3 97 EQ_ASSIGN TRUE = 4 1 18 18 1 26 26 264 6 95 FUNCTION TRUE function 5 1 26 26 1 27 27 40 7 95 '(' TRUE ( 6 2 3 3 2 4 4 292 10 95 SYMBOL_FORMALS TRUE a

Or maybe you can write a custom highlight [1] renderer that would beautify your code instead of render it in markup.

Romain

[1] http://r-forge.r-project.org/R/?group_id=384



On 08/31/2009 12:27 PM, baptiste auguie wrote:

2009/8/31 David Scott<d.sc...@auckland.ac.nz>



I think this discussion is valuable, and have previously asked about style
which I think is very important. Base R does suffer from very inconsistent
naming and as I think Duncan said it makes it very difficult sometimes to
remember names when you have variations in case and separators as with
things related to system.

David


Is it a foolish idea to think that perhaps code could be checked and
re-formatted automatically when building a package?

Say, I write a function like this,

this.is.my.name = function(
    a = 1,b=2,
   # i'm a comment
    z=F)
{
if(T)
{
print("true")
} else
{
print("else")
}

}
package.skeleton automatically converts the first "=" sign to "<-" and
sometimes also adds backquotes `` to protect the function name. Could this
be extended in a few ways,

1- rationalise the function naming scheme, e.g convert every function name
to camelCase (and provide aliases not to break dependencies)

2- indent the code and add spaces around commas

3- tidy up the position of braces to make it consistent

4- convert T and F to TRUE and FALSE, this sort of things

5- finally, run a comparison of the two versions to check that the behaviour
is as intended.

1,2,3 could be tuned according to a template that the user chooses for a
given package (some may prefer underscores, etc.)


Perhaps I'm dreaming a bit here, this sounds like meta-programming.


Best,

baptiste

--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/xkMc : Combine R CMD build and junit
|- http://tr.im/w33B : Completion for java objects
`- http://tr.im/vzip : Code Snippet : List of CRAN packages

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to