Sha256: 3e06ca76823a96ae5f0935254c3010d0178199e96fc351509eb8de1624726734
Contents?: true
Size: 1.05 KB
Versions: 3
Compression:
Stored size: 1.05 KB
Contents
#include <ruby.h> #ifndef RSTRING_PTR #define RSTRING_PTR(str) (RSTRING(str)->ptr) #endif extern struct stemmer * create_stemmer(void); extern void free_stemmer(struct stemmer * z); extern int stem(struct stemmer * z, char * b, int k); /* copied from porter.c */ struct stemmer { char * b; /* buffer for word to be stemmed */ int k; /* offset to the end of the string */ int j; /* a general offset into the string */ }; static VALUE stem_word(VALUE self, VALUE arg) { int length, i; char *word; char *res; struct stemmer z; VALUE str, rv; str = StringValue(arg); word = RSTRING_PTR(str); length = stem(&z, word, strlen(word)-1); /* length is the index of last char, add one for size and one for '\0' */ res = (char *)malloc((length+2) * sizeof(char)); for (i=0; i<=length; i++) { res[i] = word[i]; } res[length+1] = 0; rv = rb_str_new2(res); free(res); return rv; } VALUE mStemmer; void Init_stemmer(void) { mStemmer = rb_define_module("Stemmer"); rb_define_module_function(mStemmer, "stem_word", stem_word, 1); }
Version data entries
3 entries across 3 versions & 3 rubygems
Version | Path |
---|---|
romanbsd-fast-stemmer-1.0.0 | ext/porter_wrap.c |
vanity-1.7.1 | vendor/ruby/1.9.1/gems/fast-stemmer-1.0.0/ext/porter_wrap.c |
fast-stemmer-1.0.0 | ext/porter_wrap.c |