Skip to content

Commit 1e8b18d

Browse files
committed
merges r25499 from trunk into ruby_1_9_1.
-- * parse.y (ripper_filename): add Ripper#filename. [ruby-dev:37856] * test/ripper/test_filter.rb: add more tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@26508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 8c1c150 commit 1e8b18d

File tree

3 files changed

+55
-7
lines changed

3 files changed

+55
-7
lines changed

parse.y

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10413,6 +10413,24 @@ ripper_column(VALUE self)
1041310413
return LONG2NUM(col);
1041410414
}
1041510415

10416+
/*
10417+
* call-seq:
10418+
* ripper#filename -> String
10419+
*
10420+
* Return current parsing filename.
10421+
*/
10422+
static VALUE
10423+
ripper_filename(VALUE self)
10424+
{
10425+
struct parser_params *parser;
10426+
10427+
Data_Get_Struct(self, struct parser_params, parser);
10428+
if (!ripper_initialized_p(parser)) {
10429+
rb_raise(rb_eArgError, "method called for uninitialized object");
10430+
}
10431+
return parser->parser_ruby_sourcefile_string;
10432+
}
10433+
1041610434
/*
1041710435
* call-seq:
1041810436
* ripper#lineno -> Integer
@@ -10464,6 +10482,7 @@ Init_ripper(void)
1046410482
rb_define_method(Ripper, "initialize", ripper_initialize, -1);
1046510483
rb_define_method(Ripper, "parse", ripper_parse, 0);
1046610484
rb_define_method(Ripper, "column", ripper_column, 0);
10485+
rb_define_method(Ripper, "filename", ripper_filename, 0);
1046710486
rb_define_method(Ripper, "lineno", ripper_lineno, 0);
1046810487
rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0);
1046910488
rb_define_method(Ripper, "encoding", rb_parser_encoding, 0);

test/ripper/test_filter.rb

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,60 @@ def filename
2323
File.expand_path(__FILE__)
2424
end
2525

26-
def test_filter_filename
26+
def test_filter_filename_unset
2727
data = {}
28-
Filter.new(File.read(filename)).parse(data)
28+
filter = Filter.new(File.read(filename))
29+
filter.parse(data)
2930
assert_equal('-', data[:filename], "[ruby-dev:37856]")
31+
assert_equal('-', filter.filename)
32+
end
3033

34+
def test_filter_filename
3135
data = {}
32-
Filter.new(File.read(filename), filename).parse(data)
36+
filter = Filter.new(File.read(filename), filename)
37+
assert_equal(filename, filter.filename)
38+
filter.parse(data)
3339
assert_equal(filename, data[:filename])
40+
assert_equal(filename, filter.filename)
3441
end
3542

3643
def test_filter_lineno
3744
data = {}
38-
Filter.new(File.read(filename)).parse(data)
45+
src = File.read(filename)
46+
src_lines = src.count("\n")
47+
filter = Filter.new(src)
48+
assert_equal(nil, filter.lineno)
49+
filter.parse(data)
3950
assert_equal(1, data[:lineno])
51+
assert_equal(src_lines, filter.lineno)
52+
end
53+
54+
def test_filter_lineno_set
55+
data = {}
56+
src = File.read(filename)
57+
src_lines = src.count("\n")
58+
filter = Filter.new(src, '-', 100)
59+
assert_equal(nil, filter.lineno)
60+
filter.parse(data)
61+
assert_equal(100, data[:lineno])
62+
assert_equal(src_lines+100-1, filter.lineno)
4063
end
4164

4265
def test_filter_column
4366
data = {}
44-
Filter.new(File.read(filename)).parse(data)
67+
src = File.read(filename)
68+
last_columns = src[/(.*)\Z/].size
69+
filter = Filter.new(src)
70+
assert_equal(nil, filter.column)
71+
filter.parse(data)
4572
assert_equal(0, data[:column])
73+
assert_equal(last_columns, filter.column)
4674
end
4775

4876
def test_filter_token
4977
data = {}
50-
Filter.new(File.read(filename)).parse(data)
78+
filter = Filter.new(File.read(filename))
79+
filter.parse(data)
5180
assert_equal("begin", data[:token])
5281
end
5382
end if ripper_test

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#define RUBY_VERSION "1.9.1"
2-
#define RUBY_PATCHLEVEL 413
2+
#define RUBY_PATCHLEVEL 414
33
#define RUBY_VERSION_MAJOR 1
44
#define RUBY_VERSION_MINOR 9
55
#define RUBY_VERSION_TEENY 1

0 commit comments

Comments
 (0)