blob: f23bf29db92df80e907a9976cf0f2f7658fc617d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#include "fileurlreader.h"
#include <fstream>
#include "utils.h"
namespace newsboat {
FileUrlReader::FileUrlReader(const std::string& file)
: filename(file)
{
}
std::string FileUrlReader::get_source()
{
return filename;
}
void FileUrlReader::reload()
{
urls.clear();
tags.clear();
alltags.clear();
std::fstream f;
f.open(filename.c_str(), std::fstream::in);
if (f.is_open()) {
std::string line;
while (!f.eof()) {
std::getline(f, line);
if (line.length() > 0 && line[0] != '#') {
std::vector<std::string> tokens =
utils::tokenize_quoted(line);
if (!tokens.empty()) {
std::string url = tokens[0];
urls.push_back(url);
tokens.erase(tokens.begin());
if (!tokens.empty()) {
tags[url] = tokens;
for (const auto& token :
tokens) {
alltags.insert(token);
}
}
}
}
};
}
}
void FileUrlReader::load_config(const std::string& file)
{
filename = file;
reload();
}
void FileUrlReader::write_config()
{
std::fstream f;
f.open(filename.c_str(), std::fstream::out);
if (f.is_open()) {
for (const auto& url : urls) {
f << url;
if (tags[url].size() > 0) {
for (const auto& tag : tags[url]) {
f << " \"" << tag << "\"";
}
}
f << std::endl;
}
}
}
}
|