diff --git a/lib/rocco.rb b/lib/rocco.rb index 5fc31e8..87b516b 100644 --- a/lib/rocco.rb +++ b/lib/rocco.rb @@ -211,6 +211,7 @@ class Rocco "c" => { :single => "//", :multi => { :start => "/**", :middle => "*", :end => "*/" } }, "coffee-script" => { :single => "#", :multi => { :start => "###", :middle => nil, :end => "###" } }, "cpp" => { :single => "//", :multi => { :start => "/**", :middle => "*", :end => "*/" } }, + "css" => { :single => nil, :multi => { :start => "/**", :middle => "*", :end => "*/" } }, "java" => { :single => "//", :multi => { :start => "/**", :middle => "*", :end => "*/" } }, "js" => { :single => "//", :multi => { :start => "/**", :middle => "*", :end => "*/" } }, "lua" => { :single => "--", :multi => nil }, @@ -265,7 +266,7 @@ class Rocco if block_comment_end && line.match( block_comment_end ) in_comment_block = false else - docs << line.sub( block_comment_mid, '' ) + docs << line.sub( block_comment_mid || '', '' ) end # Otherwise, check whether the line matches the beginning of a block, or # a single-line comment all on it's lonesome. In either case, if there's @@ -282,7 +283,7 @@ class Rocco sections << [docs, code] docs, code = [], [] end - docs << line.sub( single_line_comment, '' ) + docs << line.sub( single_line_comment || '', '' ) else code << line end diff --git a/test/test_block_comments.rb b/test/test_block_comments.rb index 14b95b9..a61fceb 100644 --- a/test/test_block_comments.rb +++ b/test/test_block_comments.rb @@ -7,13 +7,13 @@ class RoccoBlockCommentTest < Test::Unit::TestCase [ [ [ "Comment 1" ], [ "def codeblock", "end" ] ] ], - r.parse( "/**\n * Comment 1\n*/\ndef codeblock\nend\n" ) + r.parse( "/**\n * Comment 1\n */\ndef codeblock\nend\n" ) ) assert_equal( [ [ [ "Comment 1a", "Comment 1b" ], [ "def codeblock", "end" ] ] ], - r.parse( "/**\n * Comment 1a\n * Comment 1b\n*/\ndef codeblock\nend\n" ) + r.parse( "/**\n * Comment 1a\n * Comment 1b\n */\ndef codeblock\nend\n" ) ) end def test_multiple_blocks @@ -23,14 +23,41 @@ class RoccoBlockCommentTest < Test::Unit::TestCase [ [ "Comment 1" ], [ "def codeblock", "end" ] ], [ [ "Comment 2" ], [] ] ], - r.parse( "/**\n * Comment 1\n*/\ndef codeblock\nend\n/**\n * Comment 2\n*/\n" ) + r.parse( "/**\n * Comment 1\n */\ndef codeblock\nend\n/**\n * Comment 2\n */\n" ) ) assert_equal( [ [ [ "Comment 1" ], [ "def codeblock", "end" ] ], [ [ "Comment 2" ], [ "if false", "end" ] ] ], - r.parse( "/**\n * Comment 1\n*/\ndef codeblock\nend\n/**\n * Comment 2\n*/\nif false\nend" ) + r.parse( "/**\n * Comment 1\n */\ndef codeblock\nend\n/**\n * Comment 2\n */\nif false\nend" ) + ) + end + def test_block_without_middle_character + r = Rocco.new( 'test', '', { :language => "python" } ) { "" } # Generate throwaway instance so I can test `parse` + assert_equal( + [ + [ [ " Comment 1" ], [ "def codeblock", "end" ] ], + [ [ " Comment 2" ], [] ] + ], + r.parse( "\"\"\"\n Comment 1\n\"\"\"\ndef codeblock\nend\n\"\"\"\n Comment 2\n\"\"\"\n" ) + ) + assert_equal( + [ + [ [ " Comment 1" ], [ "def codeblock", "end" ] ], + [ [ " Comment 2" ], [ "if false", "end" ] ] + ], + r.parse( "\"\"\"\n Comment 1\n\"\"\"\ndef codeblock\nend\n\"\"\"\n Comment 2\n\"\"\"\nif false\nend" ) + ) + end + def test_language_without_single_line_comments + r = Rocco.new( 'test', '', { :language => "css" } ) { "" } # Generate throwaway instance so I can test `parse` + assert_equal( + [ + [ [ "Comment 1" ], [ "def codeblock", "end" ] ], + [ [ "Comment 2" ], [ "if false", "end" ] ] + ], + r.parse( "/**\n * Comment 1\n */\ndef codeblock\nend\n/**\n * Comment 2\n */\nif false\nend" ) ) end end