+// TextSentence ---------------------------------------------------------------
+
+TM::TextSentence::TextSentence(Text::pointer source_sentence)
+ : m_source_sentence(source_sentence)
+{
+}
+
+Text::pointer TM::TextSentence::source_sentence() { return m_source_sentence; }
+
+Text::pointer TM::TextSentence::target_sentence() { return m_target_sentence; }
+
+void TM::TextSentence::set_terget_sentence(Text::pointer target_sentence)
+{
+ m_target_sentence = target_sentence;
+}
+
+QJsonArray TM::TextSentence::link_data() { return m_link_data; }
+
+void TM::TextSentence::set_link_data(QJsonArray json) { m_link_data = json; }
+
+TM::TextSentence::pointer TM::TextSentence::create(Text::pointer source_sentence)
+{
+ return pointer(new TextSentence(source_sentence));
+}
+
+// TextSegment ----------------------------------------------------------------
+
+TM::TextSegment::TextSegment(
+ Service *service, int scode, int segment_id, QString source)
+ : m_segment_id(segment_id)
+ , m_document(source.toUtf8())
+{
+ HtmlNode body = m_document.first("html").first("body");
+ TextConverter tc;
+ m_text = tc.to_text(HtmlRange(body, body));
+
+ Text::pointer sentences = service->divide_into_sentences(scode, m_text->to_string());
+ for(Text::pointer s = sentences->begin(); s; s = s->next()) // s: sentence
+ {
+ Text::pointer words = service->divide_into_words(scode, s);
+ m_sentences.append(TextSentence::create(words));
+ }
+}
+
+int TM::TextSegment::segment_id() const { return m_segment_id; }
+
+TM::TextSentence::pointer TM::TextSegment::at(int index)
+{
+ return m_sentences.at(index);
+}
+
+TM::TextSegment::iterator TM::TextSegment::begin() { return m_sentences.begin(); }
+
+TM::TextSegment::iterator TM::TextSegment::end() { return m_sentences.end(); }
+
+TM::TextSegment::pointer TM::TextSegment::create(
+ Service *service, int scode, int segment_id, QString source)
+{
+ return pointer(new TextSegment(service, scode, segment_id, source));
+}
+