|
33 | 33 | var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
|
34 | 34 | var endsWith = require( '@stdlib/string/ends-with' );
|
35 | 35 | var lowercase = require( '@stdlib/string/lowercase' );
|
| 36 | +var replace = require( '@stdlib/string/replace' ); |
36 | 37 |
|
37 | 38 |
|
38 | 39 | // VARIABLES //
|
@@ -141,42 +142,38 @@ function porterStemmer( word ) {
|
141 | 142 | if ( !isString( word ) ) {
|
142 | 143 | throw new TypeError( 'invalid argument. First argument must be a string primitive. Value: `' + word + '`.' );
|
143 | 144 | }
|
144 |
| - if ( word.length < 3) { |
| 145 | + if ( word.length < 3 ) { |
145 | 146 | return word;
|
146 | 147 | }
|
147 | 148 | word = lowercase( word );
|
148 |
| - firstch = word.substr( 0, 1 ); |
| 149 | + firstch = word[ 0 ]; |
149 | 150 | if ( firstch === 'y' ) {
|
150 | 151 | word = firstch.toUpperCase() + word.substr( 1 );
|
151 | 152 | }
|
152 | 153 |
|
153 | 154 | // Step 1a:
|
154 | 155 | if ( RE_STEP1A.test( word ) ) {
|
155 |
| - word = word.replace( RE_STEP1A, '$1$2' ); |
156 |
| - } |
157 |
| - else if ( RE2_STEP1A.test( word ) ) { |
158 |
| - word = word.replace( RE2_STEP1A, '$1$2' ); |
| 156 | + word = replace( word, RE_STEP1A, '$1$2' ); |
| 157 | + } else if ( RE2_STEP1A.test( word ) ) { |
| 158 | + word = replace( word, RE2_STEP1A, '$1$2' ); |
159 | 159 | }
|
160 | 160 |
|
161 | 161 | // Step 1b:
|
162 | 162 | if ( RE_STEP1B.test( word ) ) {
|
163 | 163 | fp = RE_STEP1B.exec( word );
|
164 | 164 | if ( RE_MGR0.test( fp[ 1 ] ) ) {
|
165 |
| - word = word.replace( RE_LAST, '' ); |
| 165 | + word = replace( word, RE_LAST, '' ); |
166 | 166 | }
|
167 |
| - } |
168 |
| - else if ( RE2_STEP1B.test( word ) ) { |
| 167 | + } else if ( RE2_STEP1B.test( word ) ) { |
169 | 168 | fp = RE2_STEP1B.exec( word );
|
170 | 169 | stem = fp[ 1 ];
|
171 | 170 | if ( RE_SV.test( stem ) ) {
|
172 | 171 | word = stem;
|
173 | 172 | if ( RE_ATBLIZ.test( word ) ) {
|
174 | 173 | word += 'e';
|
175 |
| - } |
176 |
| - else if ( RE_DOUBLE.test( word ) ) { |
177 |
| - word = word.replace( RE_LAST, '' ); |
178 |
| - } |
179 |
| - else if ( RE_CV.test( word ) ) { |
| 174 | + } else if ( RE_DOUBLE.test( word ) ) { |
| 175 | + word = replace( word, RE_LAST, '' ); |
| 176 | + } else if ( RE_CV.test( word ) ) { |
180 | 177 | word += 'e';
|
181 | 178 | }
|
182 | 179 | }
|
@@ -238,7 +235,7 @@ function porterStemmer( word ) {
|
238 | 235 | }
|
239 | 236 | }
|
240 | 237 | if ( endsWith( word, 'll' ) && RE_MGR1.test( word ) ) {
|
241 |
| - word = word.replace( RE_LAST, '' ); |
| 238 | + word = replace( word, RE_LAST, '' ); |
242 | 239 | }
|
243 | 240 |
|
244 | 241 | // Turn initial Y back to y:
|
|
0 commit comments