MinitScript  0.9.31 PRE-BETA
Properties.cpp
Go to the documentation of this file.
2 
3 #include <algorithm>
4 #include <string>
5 #include <unordered_map>
6 #include <vector>
7 
11 
12 using std::sort;
13 using std::string;
14 using std::unordered_map;
15 using std::vector;
16 
18 
21 
22 void Properties::load(const string& pathName, const string& fileName)
23 {
24  properties.clear();
25  vector<string> lines;
26  FileSystem::getContentAsStringArray(pathName, fileName, lines);
27  for (auto i = 0; i < lines.size(); i++) {
28  string line = StringTools::trim(lines[i]);
29  if (line.length() == 0 || StringTools::startsWith(line, "#")) continue;
30  auto separatorPos = line.find('=');
31  if (separatorPos == -1) continue;
32  string key = StringTools::substring(line, 0, separatorPos);
33  string value = StringTools::substring(line, separatorPos + 1);
34  properties[key] = value;
35  }
36 }
37 
38 void Properties::store(const string& pathName, const string& fileName) const {
39  vector<string> result;
40  int32_t idx = 0;
41  for (const auto& [key, value]: properties) {
42  result.push_back(key + "=" + value);
43  }
44  sort(result.begin(), result.end());
45  FileSystem::setContentFromStringArray(pathName, fileName, result);
46 }
Properties class, which helps out with storeing or loading key value pairs from/to property files.
Definition: Properties.h:17
void store(const string &pathName, const string &fileName) const
Store property file.
Definition: Properties.cpp:38
unordered_map< string, string > properties
Definition: Properties.h:19
static const bool startsWith(const string &str, const string &prefix)
Checks if string starts with prefix.
Definition: StringTools.h:29
static const string substring(const string &str, int64_t beginIndex)
Returns substring of given string from begin index.
Definition: StringTools.h:203
static const string trim(const string &str)
Trim string.
Definition: StringTools.cpp:57