mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rdoc/encoding.rb: Do not remove #! line from document when
setting encoding. This allows ruby executables to be parsed as ruby files. * test/rdoc/test_rdoc_encoding.rb: Test for above. * lib/rdoc/parser.rb: Set the parser file name of ruby executables correctly. * test/rdoc/test_rdoc_parser.rb: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
aa233d3f33
commit
dff59f6c5d
5 changed files with 37 additions and 4 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
Tue Dec 18 17:24:40 2012 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
|
* lib/rdoc/encoding.rb: Do not remove #! line from document when
|
||||||
|
setting encoding. This allows ruby executables to be parsed as ruby
|
||||||
|
files.
|
||||||
|
* test/rdoc/test_rdoc_encoding.rb: Test for above.
|
||||||
|
|
||||||
|
* lib/rdoc/parser.rb: Set the parser file name of ruby executables
|
||||||
|
correctly.
|
||||||
|
* test/rdoc/test_rdoc_parser.rb: Test for above.
|
||||||
|
|
||||||
Tue Dec 18 16:46:15 2012 Eric Hodel <drbrain@segment7.net>
|
Tue Dec 18 16:46:15 2012 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
* doc/syntax/literals.rdoc: Used simplified heredoc example that
|
* doc/syntax/literals.rdoc: Used simplified heredoc example that
|
||||||
|
|
|
@ -75,7 +75,9 @@ module RDoc::Encoding
|
||||||
# Sets the encoding of +string+ based on the magic comment
|
# Sets the encoding of +string+ based on the magic comment
|
||||||
|
|
||||||
def self.set_encoding string
|
def self.set_encoding string
|
||||||
first_line = string[/\A(?:#!.*\n)?.*\n/]
|
string =~ /\A(?:#!.*\n)?(.*\n)/
|
||||||
|
|
||||||
|
first_line = $1
|
||||||
|
|
||||||
name = case first_line
|
name = case first_line
|
||||||
when /^<\?xml[^?]*encoding=(["'])(.*?)\1/ then $2
|
when /^<\?xml[^?]*encoding=(["'])(.*?)\1/ then $2
|
||||||
|
|
|
@ -45,6 +45,11 @@ class RDoc::Parser
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# The name of the file being parsed
|
||||||
|
|
||||||
|
attr_reader :file_name
|
||||||
|
|
||||||
##
|
##
|
||||||
# Alias an extension to another extension. After this call, files ending
|
# Alias an extension to another extension. After this call, files ending
|
||||||
# "new_ext" will be parsed using the same parser as "old_ext"
|
# "new_ext" will be parsed using the same parser as "old_ext"
|
||||||
|
@ -182,16 +187,18 @@ class RDoc::Parser
|
||||||
parser = use_markup content
|
parser = use_markup content
|
||||||
|
|
||||||
unless parser then
|
unless parser then
|
||||||
|
parse_name = file_name
|
||||||
|
|
||||||
# If no extension, look for shebang
|
# If no extension, look for shebang
|
||||||
if file_name !~ /\.\w+$/ && content =~ %r{\A#!(.+)} then
|
if file_name !~ /\.\w+$/ && content =~ %r{\A#!(.+)} then
|
||||||
shebang = $1
|
shebang = $1
|
||||||
case shebang
|
case shebang
|
||||||
when %r{env\s+ruby}, %r{/ruby}
|
when %r{env\s+ruby}, %r{/ruby}
|
||||||
file_name = "dummy.rb"
|
parse_name = 'dummy.rb'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
parser = can_parse file_name
|
parser = can_parse parse_name
|
||||||
end
|
end
|
||||||
|
|
||||||
return unless parser
|
return unless parser
|
||||||
|
|
|
@ -164,7 +164,7 @@ class TestRDocEncoding < RDoc::TestCase
|
||||||
|
|
||||||
RDoc::Encoding.set_encoding s
|
RDoc::Encoding.set_encoding s
|
||||||
|
|
||||||
assert_equal "# more comments", s
|
assert_equal "#!/bin/ruby\n# more comments", s
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_class_set_encoding_bad
|
def test_class_set_encoding_bad
|
||||||
|
|
|
@ -77,6 +77,19 @@ class TestRDocParser < RDoc::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_class_for_executable
|
||||||
|
temp_dir do
|
||||||
|
content = "#!/usr/bin/env ruby -w\n"
|
||||||
|
open 'app', 'w' do |io| io.write content end
|
||||||
|
app = @store.add_file 'app'
|
||||||
|
parser = @RP.for app, 'app', content, @options, :stats
|
||||||
|
|
||||||
|
assert_kind_of RDoc::Parser::Ruby, parser
|
||||||
|
|
||||||
|
assert_equal 'app', parser.file_name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_can_parse_modeline
|
def test_can_parse_modeline
|
||||||
readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
|
readme_ext = File.join Dir.tmpdir, "README.EXT.#{$$}"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue