Extract ripper_parser_params
This commit is contained in:
parent
1cedecebb8
commit
d647709d1a
@ -126,6 +126,20 @@ ripper_s_allocate(VALUE klass)
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct parser_params *
|
||||||
|
ripper_parser_params(VALUE self, bool initialized)
|
||||||
|
{
|
||||||
|
struct ripper *r;
|
||||||
|
struct parser_params *p;
|
||||||
|
|
||||||
|
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
||||||
|
p = r->p;
|
||||||
|
if (initialized && !rb_ruby_ripper_initialized_p(p)) {
|
||||||
|
rb_raise(rb_eArgError, "method called for uninitialized object");
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* ripper.error? -> Boolean
|
* ripper.error? -> Boolean
|
||||||
@ -135,10 +149,9 @@ ripper_s_allocate(VALUE klass)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_error_p(VALUE vparser)
|
ripper_error_p(VALUE vparser)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(vparser, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(vparser, struct ripper, &parser_data_type, r);
|
return RBOOL(rb_ruby_parser_error_p(p));
|
||||||
return RBOOL(rb_ruby_parser_error_p(r->p));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -150,10 +163,9 @@ ripper_error_p(VALUE vparser)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_end_seen_p(VALUE vparser)
|
ripper_parser_end_seen_p(VALUE vparser)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(vparser, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(vparser, struct ripper, &parser_data_type, r);
|
return RBOOL(rb_ruby_parser_end_seen_p(p));
|
||||||
return RBOOL(rb_ruby_parser_end_seen_p(r->p));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -165,10 +177,9 @@ ripper_parser_end_seen_p(VALUE vparser)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_encoding(VALUE vparser)
|
ripper_parser_encoding(VALUE vparser)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(vparser, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(vparser, struct ripper, &parser_data_type, r);
|
return rb_ruby_parser_encoding(p);
|
||||||
return rb_ruby_parser_encoding(r->p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -180,10 +191,9 @@ ripper_parser_encoding(VALUE vparser)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_get_yydebug(VALUE self)
|
ripper_parser_get_yydebug(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
return RBOOL(rb_ruby_parser_get_yydebug(p));
|
||||||
return RBOOL(rb_ruby_parser_get_yydebug(r->p));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -195,10 +205,9 @@ ripper_parser_get_yydebug(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_set_yydebug(VALUE self, VALUE flag)
|
ripper_parser_set_yydebug(VALUE self, VALUE flag)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
rb_ruby_parser_set_yydebug(p, RTEST(flag));
|
||||||
rb_ruby_parser_set_yydebug(r->p, RTEST(flag));
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,10 +220,9 @@ ripper_parser_set_yydebug(VALUE self, VALUE flag)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_get_debug_output(VALUE self)
|
ripper_parser_get_debug_output(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
return rb_ruby_parser_debug_output(p);
|
||||||
return rb_ruby_parser_debug_output(r->p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -226,10 +234,9 @@ ripper_parser_get_debug_output(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parser_set_debug_output(VALUE self, VALUE output)
|
ripper_parser_set_debug_output(VALUE self, VALUE output)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
rb_ruby_parser_set_debug_output(p, output);
|
||||||
rb_ruby_parser_set_debug_output(r->p, output);
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,7 +321,6 @@ parser_dedent_string(VALUE self, VALUE input, VALUE width)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_initialize(int argc, VALUE *argv, VALUE self)
|
ripper_initialize(int argc, VALUE *argv, VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
|
||||||
struct parser_params *p;
|
struct parser_params *p;
|
||||||
VALUE src, fname, lineno;
|
VALUE src, fname, lineno;
|
||||||
VALUE (*gets)(struct parser_params*,VALUE);
|
VALUE (*gets)(struct parser_params*,VALUE);
|
||||||
@ -322,8 +328,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self)
|
|||||||
const char *sourcefile;
|
const char *sourcefile;
|
||||||
int sourceline;
|
int sourceline;
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
p = ripper_parser_params(self, false);
|
||||||
p = r->p;
|
|
||||||
rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
|
rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
|
||||||
if (RB_TYPE_P(src, T_FILE)) {
|
if (RB_TYPE_P(src, T_FILE)) {
|
||||||
gets = ripper_lex_io_get;
|
gets = ripper_lex_io_get;
|
||||||
@ -358,12 +363,8 @@ ripper_initialize(int argc, VALUE *argv, VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parse0(VALUE vparser)
|
ripper_parse0(VALUE vparser)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(vparser, false);
|
||||||
struct parser_params *p;
|
|
||||||
|
|
||||||
TypedData_Get_Struct(vparser, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
// RB_GC_GUARD(vparser);
|
|
||||||
rb_ruby_ripper_parse0(p);
|
rb_ruby_ripper_parse0(p);
|
||||||
return rb_ruby_parser_result(p);
|
return rb_ruby_parser_result(p);
|
||||||
}
|
}
|
||||||
@ -371,10 +372,9 @@ ripper_parse0(VALUE vparser)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_ensure(VALUE vparser)
|
ripper_ensure(VALUE vparser)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(vparser, false);
|
||||||
|
|
||||||
TypedData_Get_Struct(vparser, struct ripper, &parser_data_type, r);
|
rb_ruby_parser_set_parsing_thread(p, Qnil);
|
||||||
rb_ruby_parser_set_parsing_thread(r->p, Qnil);
|
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,14 +387,9 @@ ripper_ensure(VALUE vparser)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_parse(VALUE self)
|
ripper_parse(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
VALUE result;
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
if (!NIL_P(rb_ruby_parser_parsing_thread(p))) {
|
if (!NIL_P(rb_ruby_parser_parsing_thread(p))) {
|
||||||
if (rb_ruby_parser_parsing_thread(p) == rb_thread_current())
|
if (rb_ruby_parser_parsing_thread(p) == rb_thread_current())
|
||||||
rb_raise(rb_eArgError, "Ripper#parse is not reentrant");
|
rb_raise(rb_eArgError, "Ripper#parse is not reentrant");
|
||||||
@ -402,9 +397,10 @@ ripper_parse(VALUE self)
|
|||||||
rb_raise(rb_eArgError, "Ripper#parse is not multithread-safe");
|
rb_raise(rb_eArgError, "Ripper#parse is not multithread-safe");
|
||||||
}
|
}
|
||||||
rb_ruby_parser_set_parsing_thread(p, rb_thread_current());
|
rb_ruby_parser_set_parsing_thread(p, rb_thread_current());
|
||||||
rb_ensure(ripper_parse0, self, ripper_ensure, self);
|
result = rb_ensure(ripper_parse0, self, ripper_ensure, self);
|
||||||
|
RB_GC_GUARD(self);
|
||||||
|
|
||||||
return rb_ruby_parser_result(p);
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -417,15 +413,9 @@ ripper_parse(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_column(VALUE self)
|
ripper_column(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
|
||||||
long col;
|
long col;
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
||||||
col = rb_ruby_ripper_column(p);
|
col = rb_ruby_ripper_column(p);
|
||||||
return LONG2NUM(col);
|
return LONG2NUM(col);
|
||||||
@ -440,14 +430,8 @@ ripper_column(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_filename(VALUE self)
|
ripper_filename(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
return rb_ruby_parser_ruby_sourcefile_string(p);
|
return rb_ruby_parser_ruby_sourcefile_string(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,14 +445,8 @@ ripper_filename(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_lineno(VALUE self)
|
ripper_lineno(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
||||||
return INT2NUM(rb_ruby_parser_ruby_sourceline(p));
|
return INT2NUM(rb_ruby_parser_ruby_sourceline(p));
|
||||||
}
|
}
|
||||||
@ -482,14 +460,8 @@ ripper_lineno(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_state(VALUE self)
|
ripper_state(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
||||||
return INT2NUM(rb_ruby_parser_lex_state(p));
|
return INT2NUM(rb_ruby_parser_lex_state(p));
|
||||||
}
|
}
|
||||||
@ -503,15 +475,9 @@ ripper_state(VALUE self)
|
|||||||
static VALUE
|
static VALUE
|
||||||
ripper_token(VALUE self)
|
ripper_token(VALUE self)
|
||||||
{
|
{
|
||||||
struct ripper *r;
|
struct parser_params *p = ripper_parser_params(self, true);
|
||||||
struct parser_params *p;
|
|
||||||
long pos, len;
|
long pos, len;
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ripper, &parser_data_type, r);
|
|
||||||
p = r->p;
|
|
||||||
if (!rb_ruby_ripper_initialized_p(p)) {
|
|
||||||
rb_raise(rb_eArgError, "method called for uninitialized object");
|
|
||||||
}
|
|
||||||
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
if (NIL_P(rb_ruby_parser_parsing_thread(p))) return Qnil;
|
||||||
pos = rb_ruby_ripper_column(p);
|
pos = rb_ruby_ripper_column(p);
|
||||||
len = rb_ruby_ripper_token_len(p);
|
len = rb_ruby_ripper_token_len(p);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user