1*3c321d95SSadaf EbrahimiCode Block Format Strings 2*3c321d95SSadaf Ebrahimi========================= 3*3c321d95SSadaf Ebrahimi 4*3c321d95SSadaf EbrahimiCode blocks may specify the values for their placeholders in a few ways. Only one style may be used 5*3c321d95SSadaf Ebrahimifor each operation on a code block. 6*3c321d95SSadaf Ebrahimi 7*3c321d95SSadaf Ebrahimi## Relative Arguments 8*3c321d95SSadaf Ebrahimi 9*3c321d95SSadaf EbrahimiPass an argument value for each placeholder in the format string to `CodeBlock.add()`. In each 10*3c321d95SSadaf Ebrahimiexample, we generate code to say "I ate 3 tacos" 11*3c321d95SSadaf Ebrahimi 12*3c321d95SSadaf Ebrahimi```kotlin 13*3c321d95SSadaf EbrahimiCodeBlock.builder().add("I ate %L %L", 3, "tacos") 14*3c321d95SSadaf Ebrahimi``` 15*3c321d95SSadaf Ebrahimi 16*3c321d95SSadaf Ebrahimi## Positional Arguments 17*3c321d95SSadaf Ebrahimi 18*3c321d95SSadaf EbrahimiPlace an integer index (1-based) before the placeholder in the format string to specify which 19*3c321d95SSadaf Ebrahimiargument to use. 20*3c321d95SSadaf Ebrahimi 21*3c321d95SSadaf Ebrahimi```kotlin 22*3c321d95SSadaf EbrahimiCodeBlock.builder().add("I ate %2L %1L", "tacos", 3) 23*3c321d95SSadaf Ebrahimi``` 24*3c321d95SSadaf Ebrahimi 25*3c321d95SSadaf Ebrahimi## Named Arguments 26*3c321d95SSadaf Ebrahimi 27*3c321d95SSadaf EbrahimiUse the syntax `%argumentName:X` where `X` is the format character and call `CodeBlock.addNamed()` 28*3c321d95SSadaf Ebrahimiwith a map containing all argument keys in the format string. Argument names use characters in 29*3c321d95SSadaf Ebrahimi`a-z`, `A-Z`, `0-9`, and `_`, and must start with a lowercase character. 30*3c321d95SSadaf Ebrahimi 31*3c321d95SSadaf Ebrahimi```kotlin 32*3c321d95SSadaf Ebrahimival map = LinkedHashMap<String, Any>() 33*3c321d95SSadaf Ebrahimimap += "food" to "tacos" 34*3c321d95SSadaf Ebrahimimap += "count" to 3 35*3c321d95SSadaf EbrahimiCodeBlock.builder().addNamed("I ate %count:L %food:L", map) 36*3c321d95SSadaf Ebrahimi``` 37