librime 1.2
Rime Input Method Engine, the core library
punctuator.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-11-21 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_PUNCTUATOR_H_
8#define RIME_PUNCTUATOR_H_
9
10#include <rime/common.h>
11#include <rime/component.h>
12#include <rime/config.h>
13#include <rime/processor.h>
14#include <rime/segmentor.h>
15#include <rime/translator.h>
16#include <rime/gear/shape.h>
17
18namespace rime {
19
20class Engine;
21
23 public:
24 void LoadConfig(Engine* engine, bool load_symbols = false);
25 an<ConfigItem> GetPunctDefinition(const string key);
26
27 bool has_digit_separators() const { return !digit_separators_.empty(); }
28 bool is_digit_separator(char ch) const {
29 return digit_separators_.find(ch) != string::npos;
30 }
32
33 protected:
34 string shape_;
37
38 string digit_separators_ = ".:";
40};
41
42class Punctuator : public Processor {
43 public:
44 Punctuator(const Ticket& ticket);
45 virtual ProcessResult ProcessKeyEvent(const KeyEvent& key_event);
46
47 protected:
48 bool ConvertDigitSeparator(char ch);
49 bool ReconvertDigitSeparatorAsPunct(const string& key);
50 bool AlternatePunct(const string& key, const an<ConfigItem>& definition);
51 bool ConfirmUniquePunct(const an<ConfigItem>& definition);
52 bool AutoCommitPunct(const an<ConfigItem>& definition);
53 bool PairPunct(const an<ConfigItem>& definition);
54
56 bool use_space_ = false;
57 map<an<ConfigItem>, int> oddness_;
58};
59
60class PunctSegmentor : public Segmentor {
61 public:
62 PunctSegmentor(const Ticket& ticket);
63 virtual bool Proceed(Segmentation* segmentation);
64
65 protected:
67};
68
70 public:
71 PunctTranslator(const Ticket& ticket);
72 virtual an<Translation> Query(const string& input, const Segment& segment);
73
74 protected:
75 an<Translation> TranslateUniquePunct(const string& key,
76 const Segment& segment,
77 const an<ConfigValue>& definition);
79 const Segment& segment,
80 const an<ConfigList>& definition);
82 const Segment& segment,
83 const an<ConfigMap>& definition);
84 an<Translation> TranslatePairedPunct(const string& key,
85 const Segment& segment,
86 const an<ConfigMap>& definition);
87
90};
91
92} // namespace rime
93
94#endif // RIME_PUNCTUATOR_H_
Definition algebra.cc:12
std::shared_ptr< T > an
Definition common.h:60
ProcessResult
Definition processor.h:18
Definition engine.h:20
Definition punctuator.h:22
bool digit_separator_commit() const
Definition punctuator.h:31
string digit_separators_
Definition punctuator.h:38
void LoadConfig(Engine *engine, bool load_symbols=false)
Definition punctuator.cc:23
an< ConfigItem > GetPunctDefinition(const string key)
Definition punctuator.cc:51
bool is_digit_separator(char ch) const
Definition punctuator.h:28
bool has_digit_separators() const
Definition punctuator.h:27
string shape_
Definition punctuator.h:34
an< ConfigMap > mapping_
Definition punctuator.h:35
an< ConfigMap > symbols_
Definition punctuator.h:36
bool digit_separator_commit_
Definition punctuator.h:39
bool use_space_
Definition punctuator.h:56
bool ReconvertDigitSeparatorAsPunct(const string &key)
Definition punctuator.cc:154
bool AlternatePunct(const string &key, const an< ConfigItem > &definition)
Definition punctuator.cc:178
bool ConfirmUniquePunct(const an< ConfigItem > &definition)
Definition punctuator.cc:202
PunctConfig config_
Definition punctuator.h:55
bool AutoCommitPunct(const an< ConfigItem > &definition)
Definition punctuator.cc:209
map< an< ConfigItem >, int > oddness_
Definition punctuator.h:57
virtual ProcessResult ProcessKeyEvent(const KeyEvent &key_event)
Definition punctuator.cc:94
bool ConvertDigitSeparator(char ch)
Definition punctuator.cc:139
Punctuator(const Ticket &ticket)
Definition punctuator.cc:56
bool PairPunct(const an< ConfigItem > &definition)
Definition punctuator.cc:217
PunctSegmentor(const Ticket &ticket)
Definition punctuator.cc:241
PunctConfig config_
Definition punctuator.h:66
virtual bool Proceed(Segmentation *segmentation)
Definition punctuator.cc:245
PunctConfig config_
Definition punctuator.h:89
ShapeFormatter formatter_
Definition punctuator.h:88
an< Translation > TranslateAutoCommitPunct(const string &key, const Segment &segment, const an< ConfigMap > &definition)
Definition punctuator.cc:396
PunctTranslator(const Ticket &ticket)
Definition punctuator.cc:278
an< Translation > TranslateUniquePunct(const string &key, const Segment &segment, const an< ConfigValue > &definition)
Definition punctuator.cc:362
an< Translation > TranslateAlternatingPunct(const string &key, const Segment &segment, const an< ConfigList > &definition)
Definition punctuator.cc:372
virtual an< Translation > Query(const string &input, const Segment &segment)
Definition punctuator.cc:325
an< Translation > TranslatePairedPunct(const string &key, const Segment &segment, const an< ConfigMap > &definition)
Definition punctuator.cc:410
Definition shape.h:16
Definition key_event.h:17
Processor(const Ticket &ticket)
Definition processor.h:26
Definition segmentation.h:18
Definition segmentation.h:60
Segmentor(const Ticket &ticket)
Definition segmentor.h:20
Definition ticket.h:17
Translator(const Ticket &ticket)
Definition translator.h:24