Read a configuration file: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 4,242:
otherfamily[2]: Harry Barber
</pre>
 
=={{header|SenseTalk}}==
<lang sensetalk>
// first create the configuration file for testing
set source to {{
# This is a configuration file in standard configuration file format
#
# Lines beginning with a hash or a semicolon are ignored by the application
# program. Blank lines are also ignored by the application program.
 
# This is the fullname parameter
FULLNAME Foo Barber
 
# This is a favourite fruit
FAVOURITEFRUIT banana
 
# This is a boolean that should be set
NEEDSPEELING
 
# This boolean is commented out
; SEEDSREMOVED
 
# Configuration option names are not case sensitive, but configuration parameter
# data is case sensitive and may be preserved by the application program.
 
# An optional equals sign can be used to separate configuration parameter data
# from the option name. This is dropped by the parser.
 
# A configuration option may take multiple parameters separated by commas.
# Leading and trailing whitespace around parameter names and parameter data fields
# are ignored by the application program.
 
OTHERFAMILY Rhu Barber, Harry Barber
}}
put source into file "config.txt"
 
// read the configuration file and get a list of just the interesting lines
set lines to each line of file "config.txt" where char 1 of each isn't in ("#", ";", "")
 
set the listFormat's quotes to quote -- be sure to quote values for evaluating
 
repeat with each configLine in lines
put word 1 of configLine into varName
insert varName into variableNames -- make a list of all config variables
put (words 2 to last of configLine) split by comma into values
put trim of each item of values into values -- trim any leading/trailing spaces
if values is empty then set values to true -- no value means boolean true
do "set" && varName && "to" && values -- assign value to variable
end repeat
 
repeat with each name in variableNames
put "Variable" && name && "is" && value(name)
end repeat
</lang>
 
=={{header|Sidef}}==