(Tcl) Implement Preprocessor #include with StringBuilder
Demonstrates how to implement #include with a Chilkat StringBuilder.
load ./chilkat.dll
# First build a string that has a preprocessor include
set sbSrc [new_CkStringBuilder]
CkStringBuilder_Append $sbSrc "1\r\n2\r\n3\r\n"
CkStringBuilder_Append $sbSrc "#include <qa_data/txt/helloWorld.txt>\r\n"
CkStringBuilder_Append $sbSrc "4\r\n5\r\n"
puts [CkStringBuilder_getAsString $sbSrc]
# sbSrc contains:
# 1
# 2
# 3
# #include <qa_data/txt/helloWorld.txt>
# 4
# 5
# The qa_data/txt/helloWorld.txt file contains "Hello World!"
set filePath [CkStringBuilder_getAfterBetween $sbSrc "#include" "<" ">"]
if {[CkStringBuilder_get_LastMethodSuccess $sbSrc] != 1} then {
puts "No #include's found."
delete_CkStringBuilder $sbSrc
exit
}
puts "filePath: $filePath"
# Load the contents of the filePath
set sbIncludeFile [new_CkStringBuilder]
CkStringBuilder_LoadFile $sbIncludeFile $filePath "utf-8"
# Replace the first occurrence of #include <...> line with the contents of the include file.
CkStringBuilder_ReplaceAllBetween $sbSrc "#include" ">" [CkStringBuilder_getAsString $sbIncludeFile] 1
puts [CkStringBuilder_getAsString $sbSrc]
# sbSrce now contains:
# 1
# 2
# 3
# Hello World!
# 4
# 5
delete_CkStringBuilder $sbSrc
delete_CkStringBuilder $sbIncludeFile
|