1 #include <ail/configuration.hpp>
5 configuration::configuration()
9 configuration::configuration(std::string
const & file_name
)
14 bool configuration::load(std::string
const & new_file_name
)
16 file_name
= new_file_name
;
21 bool success
= read_file(file_name
, input
);
27 std::vector
<std::string
> lines
= tokenise(input
, "\n");
28 for(std::vector
<std::string
>::iterator i
= lines
.begin(), end
= lines
.end(); i
!= end
; ++i
)
30 std::string line
= trim(*i
);
32 bool is_empty
= line
.empty();
47 std::size_t offset
= line
.find('=');
48 if(offset
== std::string::npos
)
54 variable
= right_trim(line
.substr(0, offset
)),
55 value
= left_trim(line
.substr(offset
+ 1));
62 (*(value
.end() - 1) == '"')
65 value
.erase(value
.begin());
66 value
.erase(value
.end() - 1);
69 values
[variable
] = value
;
75 bool configuration::read_string(std::string
const & variable_name
, std::string
& output
)
77 std::map
<std::string
, std::string
>::iterator search
= values
.find(variable_name
);
78 if(search
== values
.end())
81 output
= search
->second
;
85 std::string
configuration::string(std::string
const & variable_name
)
88 bool success
= read_string(variable_name
, output
);
90 throw exception("Unable to find string value \"" + variable_name
+ "\" in \"" + file_name
+ "\"");
94 std::string
configuration::string(std::string
const & variable_name
, std::string
const & default_value
)
97 bool success
= read_string(variable_name
, output
);