Skip to content

Commit 6bd73d0

Browse files
authored
fix(simplifier): Lazily initialize Opencc (#1101)
1 parent e4d835a commit 6bd73d0

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/rime/gear/simplifier.cc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,28 @@ namespace rime {
3131

3232
class Opencc {
3333
public:
34-
Opencc(const path& config_path) {
35-
LOG(INFO) << "initializing opencc: " << config_path;
34+
Opencc(const path& config_path)
35+
: initialized_(false), config_path_(config_path) {}
36+
37+
void Initialize() {
38+
if (initialized_)
39+
return;
40+
initialized_ = true;
3641
opencc::Config config;
3742
try {
3843
// opencc accepts file path encoded in UTF-8.
39-
converter_ = config.NewFromFile(config_path.u8string());
44+
converter_ = config.NewFromFile(config_path_.u8string());
4045

4146
const list<opencc::ConversionPtr> conversions =
4247
converter_->GetConversionChain()->GetConversions();
4348
dict_ = conversions.front()->GetDict();
4449
} catch (...) {
45-
LOG(ERROR) << "opencc config not found: " << config_path;
50+
LOG(ERROR) << "opencc config not found: " << config_path_;
4651
}
4752
}
4853

4954
bool ConvertWord(const string& text, vector<string>* forms) {
55+
Initialize();
5056
if (converter_ == nullptr) {
5157
return false;
5258
}
@@ -111,6 +117,7 @@ class Opencc {
111117
}
112118

113119
bool RandomConvertText(const string& text, string* simplified) {
120+
Initialize();
114121
if (dict_ == nullptr)
115122
return false;
116123
const list<opencc::ConversionPtr> conversions =
@@ -143,13 +150,16 @@ class Opencc {
143150
}
144151

145152
bool ConvertText(const string& text, string* simplified) {
153+
Initialize();
146154
if (converter_ == nullptr)
147155
return false;
148156
*simplified = converter_->Convert(text);
149157
return *simplified != text;
150158
}
151159

152160
private:
161+
bool initialized_;
162+
path config_path_;
153163
opencc::ConverterPtr converter_;
154164
opencc::DictPtr dict_;
155165
};

0 commit comments

Comments
 (0)