1# todo add R specific things, data.frame and vector rendering
2# for data.frames it should render per row (using paste)
3# for vectors it should render per item (for ".")
4section <- function(texts, keys, renders){
5   force(texts)
6   force(keys)
7   force(renders)
8
9   renderFUN <- function(value, context){
10      processSection(value, context, texts, keys, renders)
11   }
12   renderFUN
13}
14
15processSection <- function(value, context, texts, keys, renders){
16   if (isFalsey(value)){
17     return()
18   }
19
20   if (is.list(value) || is.vector(value)){
21     if (is.null(names(value))){
22       str <- sapply( value
23                    , function(item){
24                       context <- c(list(as.list(item)), context)
25                       values <- lapply(keys, resolve, context=context)
26                       renderTemplate(values, context, texts, renders)
27                      }
28                    )
29       return(paste(str, collapse=""))
30     } else {
31       context <- c(list(value), context)
32     }
33   }
34
35   values <- lapply(keys, resolve, context=context)
36   return(renderTemplate(values, context, texts, renders))
37}
38