Sha256: ffad8a90e87a51781aff69dc68da43c4c53ffa074161ca73845b924956c978fa

Contents?: true

Size: 991 Bytes

Versions: 28

Compression:

Stored size: 991 Bytes

Contents

#include "ruby.h"
#include "lex.linguist_yy.h"

int linguist_yywrap(yyscan_t yyscanner) {
	return 1;
}

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;
}

__attribute__((visibility("default"))) void Init_linguist() {
	VALUE rb_mLinguist = rb_define_module("Linguist");
	VALUE rb_cTokenizer = rb_define_class_under(rb_mLinguist, "Tokenizer", rb_cObject);

	rb_define_method(rb_cTokenizer, "extract_tokens", rb_tokenizer_extract_tokens, 1);
}

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
github-linguist-9.1.0 ext/linguist/linguist.c
github-linguist-9.0.0 ext/linguist/linguist.c
github-linguist-8.0.1 ext/linguist/linguist.c
github-linguist-8.0.0 ext/linguist/linguist.c
github-linguist-7.30.0 ext/linguist/linguist.c
github-linguist-7.29.0 ext/linguist/linguist.c
github-linguist-7.28.0 ext/linguist/linguist.c
github-linguist-7.27.0 ext/linguist/linguist.c
github-linguist-7.26.0 ext/linguist/linguist.c
github-linguist-7.25.0 ext/linguist/linguist.c
github-linguist-7.24.1 ext/linguist/linguist.c
github-linguist-7.24.0 ext/linguist/linguist.c
github-linguist-7.23.0 ext/linguist/linguist.c
github-linguist-7.22.1 ext/linguist/linguist.c
github-linguist-7.22.0 ext/linguist/linguist.c
github-linguist-7.21.0 ext/linguist/linguist.c
github-linguist-7.20.0 ext/linguist/linguist.c
github-linguist-7.19.0 ext/linguist/linguist.c
github-linguist-7.18.0 ext/linguist/linguist.c
github-linguist-7.17.0 ext/linguist/linguist.c