33# ' \Sexpr[stage=render, results=rd]{lintr:::regexes_rd}. A name should
44# ' match at least one of these styles.
55# ' @export
6- object_name_linter <- function (styles = " snake_case" ) {
6+ object_name_linter <- function (styles = c( " snake_case" , " symbols " ) ) {
77
88 .or_string <- function (xs ) {
99 # returns "<S> or <T>"
@@ -13,7 +13,7 @@ object_name_linter <- function(styles = "snake_case") {
1313 if (len < = 1 ) {
1414 return (xs )
1515 }
16- comma_sepd_prefix <- paste (xs [- len ], collapse = " , " )
16+ comma_sepd_prefix <- toString (xs [- len ])
1717 paste(comma_sepd_prefix , " or" , xs [len ])
1818 }
1919
@@ -24,10 +24,9 @@ object_name_linter <- function(styles = "snake_case") {
2424 )
2525
2626 function (source_file ) {
27- x <- global_xml_parsed_content(source_file )
28- if (is.null(x )) {
29- return ()
30- }
27+ if (is.null(source_file $ full_xml_parsed_content )) return (list ())
28+
29+ xml <- source_file $ full_xml_parsed_content
3130
3231 xpath <- paste0(
3332 # Left hand assignments
@@ -46,14 +45,14 @@ object_name_linter <- function(styles = "snake_case") {
4645 " //SYMBOL_FORMALS"
4746 )
4847
49- assignments <- xml2 :: xml_find_all(x , xpath )
48+ assignments <- xml2 :: xml_find_all(xml , xpath )
5049
5150 # Retrieve assigned name
5251 nms <- strip_names(
5352 as.character(xml2 :: xml_find_first(assignments , " ./text()" )))
5453
5554 generics <- strip_names(c(
56- declared_s3_generics(x ),
55+ declared_s3_generics(xml ),
5756 namespace_imports()$ fun ,
5857 names(.knownS3Generics ),
5958 .S3PrimitiveGenerics , ls(baseenv())))
@@ -105,7 +104,6 @@ strip_names <- function(x) {
105104 x
106105}
107106
108-
109107object_lint2 <- function (expr , source_file , message , type ) {
110108 symbol <- xml2 :: as_list(expr )
111109 Lint(
@@ -281,53 +279,21 @@ object_lint <- function(source_file, token, message, type) {
281279}
282280
283281
284- object_name_linter_old <- function (style = " snake_case" ) {
285- make_object_linter(
286- function (source_file , token ) {
287- name <- unquote(token [[" text" ]])
288- if (! any(matches_styles(name , style ))) {
289- object_lint(
290- source_file ,
291- token ,
292- sprintf(" Variable and function name style should be %s." , paste(style , collapse = " or " )),
293- " object_name_linter"
294- )
295- }
296- }
297- )
298- }
299-
300-
301282loweralnum <- rex(one_of(lower , digit ))
302283upperalnum <- rex(one_of(upper , digit ))
303284
304285style_regexes <- list (
305- " CamelCase" = rex(start , maybe(" ." ), upper , zero_or_more(alnum ), end ),
306- " camelCase" = rex(start , maybe(" ." ), lower , zero_or_more(alnum ), end ),
307- " snake_case" = rex(start , maybe(" ." ), some_of(lower , digit ), any_of(" _" , lower , digit ), end ),
308- " SNAKE_CASE" = rex(start , maybe(" ." ), some_of(upper , digit ), any_of(" _" , upper , digit ), end ),
309- " dotted.case" = rex(start , maybe(" ." ), one_or_more(loweralnum ), zero_or_more(dot , one_or_more(loweralnum )), end ),
286+ " symbols" = rex(start , maybe(" ." ), zero_or_more(none_of(alnum )), end ),
287+ " CamelCase" = rex(start , maybe(" ." ), upper , zero_or_more(alnum ), end ),
288+ " camelCase" = rex(start , maybe(" ." ), lower , zero_or_more(alnum ), end ),
289+ " snake_case" = rex(start , maybe(" ." ), some_of(lower , digit ), any_of(" _" , lower , digit ), end ),
290+ " SNAKE_CASE" = rex(start , maybe(" ." ), some_of(upper , digit ), any_of(" _" , upper , digit ), end ),
291+ " dotted.case" = rex(start , maybe(" ." ), one_or_more(loweralnum ), zero_or_more(dot , one_or_more(loweralnum )), end ),
310292 " lowercase" = rex(start , maybe(" ." ), one_or_more(loweralnum ), end ),
311293 " UPPERCASE" = rex(start , maybe(" ." ), one_or_more(upperalnum ), end )
312294)
313295
314- regexes_rd <- paste0(collapse = " , " , paste0(" \\ sQuote{" , names(style_regexes ), " }" ))
315-
316- matches_styles <- function (name , styles = names(style_regexes )) {
317- invalids <- paste(styles [! styles %in% names(style_regexes )], collapse = " , " )
318- if (nzchar(invalids )) {
319- valids <- paste(names(style_regexes ), collapse = " , " )
320- stop(sprintf(" Invalid style(s) requested: %s\n Valid styles are: %s\n " , invalids , valids ))
321- }
322- name <- re_substitutes(name , rex(start , one_or_more(dot )), " " ) # remove leading dots
323- vapply(
324- style_regexes [styles ],
325- re_matches ,
326- logical (1L ),
327- data = name
328- )
329- }
330-
296+ regexes_rd <- toString(paste0(" \\ sQuote{" , names(style_regexes ), " }" ))
331297
332298# ' @describeIn linters check that object names are not too long.
333299# ' @export
0 commit comments