rmmseg-cpp 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.2.7 / 2008-09-17
2
+
3
+ * Fix various stupid bugs (typo) that cause problems under MacOSX.
4
+
1
5
  == 0.2.6 / 2008-08-14
2
6
 
3
7
  * Fix the problem that hang up when required (OS: MacOSX-Leopard)
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require 'rmmseg'
8
8
  task :default => 'spec:run'
9
9
 
10
10
  PROJ.name = 'rmmseg-cpp'
11
- PROJ.version = '0.2.6'
11
+ PROJ.version = '0.2.7'
12
12
  PROJ.authors = 'pluskid'
13
13
  PROJ.email = 'pluskid@gmail.com'
14
14
  PROJ.url = 'http://rmmseg-cpp.rubyforge.org'
data/ext/rmmseg/algor.cpp CHANGED
@@ -71,28 +71,27 @@ namespace rmmseg
71
71
 
72
72
  Token Algorithm::get_cjk_word(int len)
73
73
  {
74
- vector<Chunk> chunks = create_chunks();
75
-
76
- if (chunks.size() > 1)
77
- mm_filter(chunks);
78
- if (chunks.size() > 1)
79
- lawl_filter(chunks);
80
- if (chunks.size() > 1)
81
- svwl_filter(chunks);
82
- if (chunks.size() > 1)
83
- lsdmfocw_filter(chunks);
84
-
85
- if (chunks.size() < 1)
74
+ create_chunks();
75
+
76
+ if (m_chunks_size > 1)
77
+ m_chunks_size = mm_filter(m_chunks, m_chunks_size);
78
+ if (m_chunks_size > 1)
79
+ m_chunks_size = lawl_filter(m_chunks, m_chunks_size);
80
+ if (m_chunks_size > 1)
81
+ m_chunks_size = svwl_filter(m_chunks, m_chunks_size);
82
+ if (m_chunks_size > 1)
83
+ m_chunks_size = lsdmfocw_filter(m_chunks, m_chunks_size);
84
+
85
+ if (m_chunks_size < 1)
86
86
  return Token(NULL, 0);
87
87
 
88
- Token token(m_text+m_pos, chunks[0].words[0]->nbytes);
89
- m_pos += chunks[0].words[0]->nbytes;
88
+ Token token(m_text+m_pos, m_chunks[0].words[0]->nbytes);
89
+ m_pos += m_chunks[0].words[0]->nbytes;
90
90
  return token;
91
91
  }
92
92
 
93
- vector<Chunk> Algorithm::create_chunks()
93
+ void Algorithm::create_chunks()
94
94
  {
95
- vector<Chunk> chunks;
96
95
  Chunk chunk;
97
96
  Word *w1, *w2, *w3;
98
97
 
@@ -101,6 +100,8 @@ namespace rmmseg
101
100
  typedef vec_t::iterator it_t;
102
101
 
103
102
  vec_t words1 = find_match_words();
103
+ m_chunks_size = 0;
104
+
104
105
  for (it_t i1 = words1.begin();
105
106
  i1 != words1.end();
106
107
  ++i1)
@@ -135,13 +136,17 @@ namespace rmmseg
135
136
  chunk.n = 3;
136
137
  chunk.words[2] = w3;
137
138
  }
138
- chunks.push_back(chunk);
139
+ memcpy(m_chunks+m_chunks_size, &chunk,
140
+ sizeof(Chunk));
141
+ m_chunks_size++;
139
142
  }
140
143
  }
141
144
  else if (m_pos == m_text_length)
142
145
  {
143
146
  chunk.n = 2;
144
- chunks.push_back(chunk);
147
+ memcpy(m_chunks+m_chunks_size, &chunk,
148
+ sizeof(Chunk));
149
+ m_chunks_size++;
145
150
  }
146
151
  m_pos -= w2->nbytes;
147
152
  }
@@ -149,13 +154,13 @@ namespace rmmseg
149
154
  else if (m_pos == m_text_length)
150
155
  {
151
156
  chunk.n = 1;
152
- chunks.push_back(chunk);
157
+ memcpy(m_chunks+m_chunks_size, &chunk, sizeof(Chunk));
158
+ m_chunks_size++;
153
159
  }
154
160
  m_pos -= w1->nbytes;
155
161
  }
156
162
 
157
163
  m_pos = orig_pos;
158
- return chunks;
159
164
  }
160
165
 
161
166
  int Algorithm::next_char()
@@ -163,9 +168,17 @@ namespace rmmseg
163
168
  // ONLY for UTF-8
164
169
  unsigned char ch = m_text[m_pos];
165
170
  if (ch >= 0xC0 && ch <= 0xDF)
171
+ {
172
+ if (m_text_length-m_pos < 2)
173
+ return 1; /* broken text at the end */
166
174
  return 2;
175
+ }
167
176
  if (ch >= 0xE0 && ch <= 0xEF)
177
+ {
178
+ if (m_text_length-m_pos < 3)
179
+ return 1; /* broken text at the end */
168
180
  return 3;
181
+ }
169
182
  return 1;
170
183
  }
171
184
 
data/ext/rmmseg/algor.h CHANGED
@@ -22,7 +22,7 @@ namespace rmmseg
22
22
  {
23
23
  public:
24
24
  Algorithm(const char *text, int length)
25
- :m_text(text), m_pos(0),
25
+ :m_chunks_size(0), m_text(text), m_pos(0),
26
26
  m_text_length(length),
27
27
  m_tmp_words_i(0),
28
28
  m_match_cache_i(0)
@@ -36,13 +36,19 @@ namespace rmmseg
36
36
  private:
37
37
  Token get_basic_latin_word();
38
38
  Token get_cjk_word(int);
39
+
40
+ static const int MAX_WORD_LENGTH = 4;
41
+ static const int MAX_N_CHUNKS = \
42
+ MAX_WORD_LENGTH*MAX_WORD_LENGTH*MAX_WORD_LENGTH;
39
43
 
40
- std::vector<Chunk> create_chunks();
44
+ void create_chunks();
41
45
  int next_word();
42
46
  int next_char();
43
47
  std::vector<Word *> find_match_words();
44
- int max_word_length() { return 4; }
48
+ int max_word_length() { return MAX_WORD_LENGTH; }
45
49
 
50
+ Chunk m_chunks[MAX_N_CHUNKS];
51
+ int m_chunks_size;
46
52
 
47
53
  const char *m_text;
48
54
  int m_pos;
@@ -10,7 +10,7 @@ CONFIG['LDSHARED'] = CONFIG['LDSHARED'].sub(/^\$\(CC\)/, 'g++')
10
10
  # end
11
11
 
12
12
  if RUBY_PLATFORM =~ /darwin/
13
- CONFIG['LDShARED'] = 'g++ -dynamiclib -single_module -flat_namespace -undefined suppress'
13
+ CONFIG['LDSHARED'] = 'g++ -dynamiclib -single_module -flat_namespace -undefined suppress'
14
14
  end
15
15
 
16
16
  $objs = ['algor.o', 'dict.o', 'memory.o', 'rmmseg.o']
data/ext/rmmseg/rules.h CHANGED
@@ -9,12 +9,12 @@
9
9
  namespace rmmseg
10
10
  {
11
11
  template <typename Cmp>
12
- void take_highest(std::vector<Chunk> &chunks, Cmp &cmp)
12
+ int take_highest(Chunk *chunks, int n, Cmp &cmp)
13
13
  {
14
14
  int i = 1, j;
15
- Chunk& max = chunks[0];
16
-
17
- for (j = 1; j < chunks.size(); ++j)
15
+ Chunk &max = chunks[0];
16
+
17
+ for (j = 1; j < n; ++j)
18
18
  {
19
19
  int rlt = cmp(chunks[j], max);
20
20
  if (rlt > 0)
@@ -22,7 +22,7 @@ namespace rmmseg
22
22
  if (rlt >= 0)
23
23
  std::swap(chunks[i++], chunks[j]);
24
24
  }
25
- chunks.erase(chunks.begin()+i, chunks.end());
25
+ return i;
26
26
  }
27
27
 
28
28
  struct MMCmp_t
@@ -32,9 +32,9 @@ namespace rmmseg
32
32
  return a.total_length() - b.total_length();
33
33
  }
34
34
  } MMCmp;
35
- void mm_filter(std::vector<Chunk> &chunks)
35
+ int mm_filter(Chunk *chunks, int n)
36
36
  {
37
- take_highest(chunks, MMCmp);
37
+ return take_highest(chunks, n, MMCmp);
38
38
  }
39
39
 
40
40
  struct LAWLCmp_t
@@ -49,9 +49,9 @@ namespace rmmseg
49
49
  return -1;
50
50
  }
51
51
  } LAWLCmp;
52
- void lawl_filter(std::vector<Chunk> &chunks)
52
+ int lawl_filter(Chunk *chunks, int n)
53
53
  {
54
- take_highest(chunks, LAWLCmp);
54
+ return take_highest(chunks, n, LAWLCmp);
55
55
  }
56
56
 
57
57
  struct SVWLCmp_t
@@ -66,9 +66,9 @@ namespace rmmseg
66
66
  return -1;
67
67
  }
68
68
  } SVWLCmp;
69
- void svwl_filter(std::vector<Chunk> &chunks)
69
+ int svwl_filter(Chunk *chunks, int n)
70
70
  {
71
- take_highest(chunks, SVWLCmp);
71
+ return take_highest(chunks, n, SVWLCmp);
72
72
  }
73
73
 
74
74
  struct LSDMFOCWCmp_t
@@ -78,9 +78,9 @@ namespace rmmseg
78
78
  return a.degree_of_morphemic_freedom() - b.degree_of_morphemic_freedom();
79
79
  }
80
80
  } LSDMFOCWCmp;
81
- void lsdmfocw_filter(std::vector<Chunk> &chunks)
81
+ int lsdmfocw_filter(Chunk *chunks, int n)
82
82
  {
83
- take_highest(chunks, LSDMFOCWCmp);
83
+ return take_highest(chunks, n, LSDMFOCWCmp);
84
84
  }
85
85
  }
86
86
 
data/misc/homepage.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <html xmlns="http://www.w3.org/1999/xhtml">
4
4
  <head>
5
5
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
6
- <meta name="date" content="14 August 2008"/>
6
+ <meta name="date" content="17 September 2008"/>
7
7
  <meta name="author" content="pluskid"/>
8
8
  <meta name="generator" content="Gerbil 3.1.0"/>
9
9
  <title>rmmseg-cpp Homepage</title>
@@ -929,7 +929,7 @@
929
929
 
930
930
  <h1 class="title"><a class="here" href="#">rmmseg-cpp Homepage</a></h1>
931
931
  <h2 class="authors"><a href="http://pluskid.lifegoo.com">pluskid</a></h2>
932
- <h3 class="date">14 August 2008</h3>
932
+ <h3 class="date">17 September 2008</h3>
933
933
 
934
934
  </div>
935
935
 
@@ -943,12 +943,12 @@
943
943
  <div id="Contents">
944
944
  <h1 class="title"><a class="here" href="#Contents">Contents</a></h1>
945
945
  <ul>
946
- <li>1&nbsp;&nbsp;<a id="a-605841108" href="#Introduction">Introduction</a></li><li>2&nbsp;&nbsp;<a id="a-605858498" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="a-605869558" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="a-605875858" href="#Installation">Installation</a><ul><li>2.2.1&nbsp;&nbsp;<a id="a-605883808" href="#Using-RubyGems">Using RubyGems</a></li><li>2.2.2&nbsp;&nbsp;<a id="a-605892288" href="#From-Git">From Git</a></li></ul></li></ul></li><li>3&nbsp;&nbsp;<a id="a-605908088" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="a-605910488" href="#Stand-Alone-rmmseg">Stand Alone rmmseg</a></li><li>3.2&nbsp;&nbsp;<a id="a-605913918" href="#Use-in-Ruby-program">Use in Ruby program</a><ul><li>3.2.1&nbsp;&nbsp;<a id="a-605916398" href="#Initialize">Initialize</a></li><li>3.2.2&nbsp;&nbsp;<a id="a-605919558" href="#Ferret-Integration">Ferret Integration</a></li><li>3.2.3&nbsp;&nbsp;<a id="a-605931938" href="#Normal-Ruby-program">Normal Ruby program</a></li></ul></li></ul></li><li>4&nbsp;&nbsp;<a id="a-605957278" href="#Who-use-it">Who use it</a></li><li>5&nbsp;&nbsp;<a id="a-605989058" href="#Resources">Resources</a></li>
946
+ <li>1&nbsp;&nbsp;<a id="a-607090478" href="#Introduction">Introduction</a></li><li>2&nbsp;&nbsp;<a id="a-607093208" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="a-607094728" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="a-607099478" href="#Installation">Installation</a><ul><li>2.2.1&nbsp;&nbsp;<a id="a-607103648" href="#Using-RubyGems">Using RubyGems</a></li><li>2.2.2&nbsp;&nbsp;<a id="a-607106038" href="#From-Git">From Git</a></li></ul></li></ul></li><li>3&nbsp;&nbsp;<a id="a-607115348" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="a-607120028" href="#Stand-Alone-rmmseg">Stand Alone rmmseg</a></li><li>3.2&nbsp;&nbsp;<a id="a-607126248" href="#Use-in-Ruby-program">Use in Ruby program</a><ul><li>3.2.1&nbsp;&nbsp;<a id="a-607131168" href="#Initialize">Initialize</a></li><li>3.2.2&nbsp;&nbsp;<a id="a-607137248" href="#Ferret-Integration">Ferret Integration</a></li><li>3.2.3&nbsp;&nbsp;<a id="a-607154008" href="#Normal-Ruby-program">Normal Ruby program</a></li></ul></li></ul></li><li>4&nbsp;&nbsp;<a id="a-607162878" href="#Who-use-it">Who use it</a></li><li>5&nbsp;&nbsp;<a id="a-607172188" href="#Resources">Resources</a></li>
947
947
 
948
948
  </ul>
949
949
  </div>
950
950
 
951
- <div id="lof"><h1 id="Figures" class="title"><a class="here" href="#Figures">Figures</a></h1> <ol><li><a id="a-605925108" href="#Ferret-Example-Screenshot">Ferret Example Screenshot</a></li></ol><h1 id="Tips" class="title"><a class="here" href="#Tips">Tips</a></h1> <ol><li><a id="a-605970528" href="#Expand-this-list">Expand this list</a></li></ol><h1 id="Warnings" class="title"><a class="here" href="#Warnings">Warnings</a></h1> <ol><li><a id="a-605900448" href="#The-latest-source-code-may-be-unstable">The latest source code may be unstable</a></li></ol></div>
951
+ <div id="lof"><h1 id="Figures" class="title"><a class="here" href="#Figures">Figures</a></h1> <ol><li><a id="a-607147048" href="#Ferret-Example-Screenshot">Ferret Example Screenshot</a></li></ol><h1 id="Tips" class="title"><a class="here" href="#Tips">Tips</a></h1> <ol><li><a id="a-607168148" href="#Expand-this-list">Expand this list</a></li></ol><h1 id="Warnings" class="title"><a class="here" href="#Warnings">Warnings</a></h1> <ol><li><a id="a-607107678" href="#The-latest-source-code-may-be-unstable">The latest source code may be unstable</a></li></ol></div>
952
952
 
953
953
  <br style="display: none"/>
954
954
  <hr style="display: none"/>
@@ -958,7 +958,7 @@
958
958
  <div class="chapter">
959
959
  <h1 class="title">
960
960
  Chapter
961
- <a class="list" id="Introduction" href="#a-605841108">1</a>
961
+ <a class="list" id="Introduction" href="#a-607090478">1</a>
962
962
 
963
963
  <br/>
964
964
 
@@ -981,7 +981,7 @@ this.</p></div>
981
981
  <div class="chapter">
982
982
  <h1 class="title">
983
983
  Chapter
984
- <a class="list" id="Setup" href="#a-605858498">2</a>
984
+ <a class="list" id="Setup" href="#a-607093208">2</a>
985
985
 
986
986
  <br/>
987
987
 
@@ -990,7 +990,7 @@ this.</p></div>
990
990
 
991
991
  <div class="content"><div class="section">
992
992
  <h2 class="title">
993
- <a class="list" id="Requirements" href="#a-605869558">2.1</a>&nbsp;&nbsp;<a class="here" href="#Requirements">Requirements</a>
993
+ <a class="list" id="Requirements" href="#a-607094728">2.1</a>&nbsp;&nbsp;<a class="here" href="#Requirements">Requirements</a>
994
994
  </h2>
995
995
  <div class="content"><p>Your system needs the following software to run RMMSeg.</p>
996
996
  <table border="1">
@@ -1014,11 +1014,11 @@ this.</p></div>
1014
1014
  </div><br />
1015
1015
  <div class="section">
1016
1016
  <h2 class="title">
1017
- <a class="list" id="Installation" href="#a-605875858">2.2</a>&nbsp;&nbsp;<a class="here" href="#Installation">Installation</a>
1017
+ <a class="list" id="Installation" href="#a-607099478">2.2</a>&nbsp;&nbsp;<a class="here" href="#Installation">Installation</a>
1018
1018
  </h2>
1019
1019
  <div class="content"><div class="section">
1020
1020
  <h3 class="title">
1021
- <a class="list" id="Using-RubyGems" href="#a-605883808">2.2.1</a>&nbsp;&nbsp;<a class="here" href="#Using-RubyGems">Using RubyGems</a>
1021
+ <a class="list" id="Using-RubyGems" href="#a-607103648">2.2.1</a>&nbsp;&nbsp;<a class="here" href="#Using-RubyGems">Using RubyGems</a>
1022
1022
  </h3>
1023
1023
  <div class="content"><p>To install the gem remotely from <a href="http://rubyforge.org">RubyForge</a>:</p>
1024
1024
  sudo gem install rmmseg-cpp
@@ -1029,12 +1029,12 @@ sudo gem install &#8212;local rmmseg-cpp-x.y.z.gem</div>
1029
1029
  </div><br />
1030
1030
  <div class="section">
1031
1031
  <h3 class="title">
1032
- <a class="list" id="From-Git" href="#a-605892288">2.2.2</a>&nbsp;&nbsp;<a class="here" href="#From-Git">From Git</a>
1032
+ <a class="list" id="From-Git" href="#a-607106038">2.2.2</a>&nbsp;&nbsp;<a class="here" href="#From-Git">From Git</a>
1033
1033
  </h3>
1034
1034
  <div class="content"><p>To build the gem manually from the latest source code. You&#8217;ll<br />
1035
1035
  need to have <strong>git</strong> and <strong>rake</strong> installed.</p>
1036
1036
  <p><div class="warning">
1037
- <p class="title"><a class="list" id="The-latest-source-code-may-be-unstable" href="#a-605900448">Warning 1</a>.&nbsp;&nbsp;<a class="here" href="#The-latest-source-code-may-be-unstable">The latest source code may be unstable</a></p>
1037
+ <p class="title"><a class="list" id="The-latest-source-code-may-be-unstable" href="#a-607107678">Warning 1</a>.&nbsp;&nbsp;<a class="here" href="#The-latest-source-code-may-be-unstable">The latest source code may be unstable</a></p>
1038
1038
 
1039
1039
  <div class="content icon-warning">While I tried to avoid such kind of problems, the source<br />
1040
1040
  code from the repository might still be broken sometimes.<br />
@@ -1053,7 +1053,7 @@ rake gem:install</div>
1053
1053
  <div class="chapter">
1054
1054
  <h1 class="title">
1055
1055
  Chapter
1056
- <a class="list" id="Usage" href="#a-605908088">3</a>
1056
+ <a class="list" id="Usage" href="#a-607115348">3</a>
1057
1057
 
1058
1058
  <br/>
1059
1059
 
@@ -1062,7 +1062,7 @@ rake gem:install</div>
1062
1062
 
1063
1063
  <div class="content"><div class="section">
1064
1064
  <h2 class="title">
1065
- <a class="list" id="Stand-Alone-rmmseg" href="#a-605910488">3.1</a>&nbsp;&nbsp;<a class="here" href="#Stand-Alone-rmmseg">Stand Alone rmmseg</a>
1065
+ <a class="list" id="Stand-Alone-rmmseg" href="#a-607120028">3.1</a>&nbsp;&nbsp;<a class="here" href="#Stand-Alone-rmmseg">Stand Alone rmmseg</a>
1066
1066
  </h2>
1067
1067
  <div class="content"><p>rmmseg-cpp comes with a script <strong>rmmseg</strong>. To get the basic usage, just execute it with <tt>-h</tt> option:<br />
1068
1068
  <br />
@@ -1074,11 +1074,11 @@ $ echo &#8220;我们都喜欢用 Ruby&#8221; | rmmseg
1074
1074
  </div><br />
1075
1075
  <div class="section">
1076
1076
  <h2 class="title">
1077
- <a class="list" id="Use-in-Ruby-program" href="#a-605913918">3.2</a>&nbsp;&nbsp;<a class="here" href="#Use-in-Ruby-program">Use in Ruby program</a>
1077
+ <a class="list" id="Use-in-Ruby-program" href="#a-607126248">3.2</a>&nbsp;&nbsp;<a class="here" href="#Use-in-Ruby-program">Use in Ruby program</a>
1078
1078
  </h2>
1079
1079
  <div class="content"><div class="section">
1080
1080
  <h3 class="title">
1081
- <a class="list" id="Initialize" href="#a-605916398">3.2.1</a>&nbsp;&nbsp;<a class="here" href="#Initialize">Initialize</a>
1081
+ <a class="list" id="Initialize" href="#a-607131168">3.2.1</a>&nbsp;&nbsp;<a class="here" href="#Initialize">Initialize</a>
1082
1082
  </h3>
1083
1083
  <div class="content"><p>To use rmmseg-cpp in Ruby program, you&#8217;ll first load it with RubyGems:</p>
1084
1084
  <pre class="code">
@@ -1095,7 +1095,7 @@ how to add your own dictionaries) and load all dictionaries:</p>
1095
1095
  </div><br />
1096
1096
  <div class="section">
1097
1097
  <h3 class="title">
1098
- <a class="list" id="Ferret-Integration" href="#a-605919558">3.2.2</a>&nbsp;&nbsp;<a class="here" href="#Ferret-Integration">Ferret Integration</a>
1098
+ <a class="list" id="Ferret-Integration" href="#a-607137248">3.2.2</a>&nbsp;&nbsp;<a class="here" href="#Ferret-Integration">Ferret Integration</a>
1099
1099
  </h3>
1100
1100
  <div class="content"><p>To use rmmseg-cpp with Ferret, you&#8217;ll need to <code class="code">require</code> the<br />
1101
1101
  Ferret support of rmmseg-cpp (Of course you&#8217;ll also have to<br />
@@ -1119,13 +1119,13 @@ A complete example can be found in <tt>misc/ferret_example.rb</tt>. The result<b
1119
1119
  of running that example is shown in <a class="xref" href="#Ferret-Example-Screenshot">Figure 1. Ferret Example Screenshot</a>.<br />
1120
1120
  <br />
1121
1121
  <div class="figure">
1122
- <p class="title"><a class="list" id="Ferret-Example-Screenshot" href="#a-605925108">Figure 1</a>.&nbsp;&nbsp;<a class="here" href="#Ferret-Example-Screenshot">Ferret Example Screenshot</a></p>
1122
+ <p class="title"><a class="list" id="Ferret-Example-Screenshot" href="#a-607147048">Figure 1</a>.&nbsp;&nbsp;<a class="here" href="#Ferret-Example-Screenshot">Ferret Example Screenshot</a></p>
1123
1123
  <div class="content"><img src="http://pluskid.lifegoo.com/wp-content/uploads/2008/02/rmmseg.png" alt="" /></div>
1124
1124
  </div></p></div>
1125
1125
  </div><br />
1126
1126
  <div class="section">
1127
1127
  <h3 class="title">
1128
- <a class="list" id="Normal-Ruby-program" href="#a-605931938">3.2.3</a>&nbsp;&nbsp;<a class="here" href="#Normal-Ruby-program">Normal Ruby program</a>
1128
+ <a class="list" id="Normal-Ruby-program" href="#a-607154008">3.2.3</a>&nbsp;&nbsp;<a class="here" href="#Normal-Ruby-program">Normal Ruby program</a>
1129
1129
  </h3>
1130
1130
  <div class="content"><p>rmmseg-cpp can also be used in normal Ruby programs. Just create<br />
1131
1131
  an <code class="code"><span style="color:#036; font-weight:bold">Algorithm</span></code> object and call <code class="code">next_token</code> until a <code class="code"><span style="color:#038; font-weight:bold">nil</span></code> is returned:</p>
@@ -1143,7 +1143,7 @@ loop <span style="color:#080; font-weight:bold">do</span>
1143
1143
  <div class="chapter">
1144
1144
  <h1 class="title">
1145
1145
  Chapter
1146
- <a class="list" id="Who-use-it" href="#a-605957278">4</a>
1146
+ <a class="list" id="Who-use-it" href="#a-607162878">4</a>
1147
1147
 
1148
1148
  <br/>
1149
1149
 
@@ -1151,7 +1151,7 @@ loop <span style="color:#080; font-weight:bold">do</span>
1151
1151
  </h1>
1152
1152
 
1153
1153
  <div class="content"><p><div class="tip">
1154
- <p class="title"><a class="list" id="Expand-this-list" href="#a-605970528">Tip 1</a>.&nbsp;&nbsp;<a class="here" href="#Expand-this-list">Expand this list</a></p>
1154
+ <p class="title"><a class="list" id="Expand-this-list" href="#a-607168148">Tip 1</a>.&nbsp;&nbsp;<a class="here" href="#Expand-this-list">Expand this list</a></p>
1155
1155
 
1156
1156
  <div class="content icon-tip">If you used rmmseg-cpp and would like your project to<br />
1157
1157
  appear in this list, please <a href="mailto:pluskid@gmail.com">contact me</a>.</div>
@@ -1164,7 +1164,7 @@ appear in this list, please <a href="mailto:pluskid@gmail.com">contact me</a>.</
1164
1164
  <div class="chapter">
1165
1165
  <h1 class="title">
1166
1166
  Chapter
1167
- <a class="list" id="Resources" href="#a-605989058">5</a>
1167
+ <a class="list" id="Resources" href="#a-607172188">5</a>
1168
1168
 
1169
1169
  <br/>
1170
1170
 
@@ -1187,7 +1187,7 @@ appear in this list, please <a href="mailto:pluskid@gmail.com">contact me</a>.</
1187
1187
 
1188
1188
  <div id="footer">
1189
1189
 
1190
- Generated on Thu Aug 14 12:26:56 -0400 2008 by <a href="http://gerbil.rubyforge.org">Gerbil</a> 3.1.0.
1190
+ Generated on Wed Sep 17 10:18:56 -0400 2008 by <a href="http://gerbil.rubyforge.org">Gerbil</a> 3.1.0.
1191
1191
 
1192
1192
  <div id="footer-credits">
1193
1193
  <span class="icon-warning" style="float: right">&nbsp;</span>
data/spec/rmmseg_spec.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require File.join(File.dirname(__FILE__), %w[spec_helper])
4
4
 
5
- describe Rmmseg do
5
+ describe RMMSeg do
6
6
  end
7
7
 
8
8
  # EOF
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmmseg-cpp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - pluskid
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-14 00:00:00 -04:00
12
+ date: 2008-09-17 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  requirements: []
92
92
 
93
93
  rubyforge_project: rmmseg-cpp
94
- rubygems_version: 1.1.1
94
+ rubygems_version: 1.2.0
95
95
  signing_key:
96
96
  specification_version: 2
97
97
  summary: rmmseg-cpp is a high performance Chinese word segmentation utility for Ruby