Class: Linguist::Tokenizer
- Inherits:
-
Object
- Object
- Linguist::Tokenizer
- Defined in:
- lib/linguist/tokenizer.rb,
ext/linguist/linguist.c
Overview
Generic programming language tokenizer.
Tokens are designed for use in the language bayes classifier. It strips any data strings or comments and preserves significant language symbols.
Class Method Summary collapse
-
.tokenize(data) ⇒ Object
Public: Extract tokens from data.
Instance Method Summary collapse
Class Method Details
.tokenize(data) ⇒ Object
Public: Extract tokens from data
data - String to tokenize
Returns Array of token Strings.
16 17 18 |
# File 'lib/linguist/tokenizer.rb', line 16 def self.tokenize(data) new.extract_tokens(data) end |
Instance Method Details
#extract_tokens(rb_data) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'ext/linguist/linguist.c', line 8
static VALUE rb_tokenizer_extract_tokens(VALUE self, VALUE rb_data) {
YY_BUFFER_STATE buf;
yyscan_t scanner;
VALUE extra;
VALUE ary;
long len;
int r;
Check_Type(rb_data, T_STRING);
len = RSTRING_LEN(rb_data);
if (len > 100000)
len = 100000;
linguist_yylex_init_extra(&extra, &scanner);
buf = linguist_yy_scan_bytes(RSTRING_PTR(rb_data), (int) len, scanner);
ary = rb_ary_new();
do {
extra = 0;
r = linguist_yylex(scanner);
if (extra) {
rb_ary_push(ary, extra);
}
} while (r);
linguist_yy_delete_buffer(buf, scanner);
linguist_yylex_destroy(scanner);
return ary;
}
|