require 'helper' class TestSlimHtmlStructure < TestSlim def test_simple_render # Keep the trailing space behind "body "! source = %q{ html head title Simple Test Title body p Hello World, meet Slim. } assert_html 'Simple Test Title

Hello World, meet Slim.

', source end def test_html_tag_with_text_and_empty_line source = %q{ p Hello p World } assert_html "

Hello

World

", source end def test_html_namespaces source = %q{ html:body html:p html:id="test" Text } assert_html 'Text', source end def test_doctype source = %q{ doctype 1.1 html } assert_html '', source, :format => :xhtml end def test_doctype_new_syntax source = %q{ doctype 5 html } assert_html '', source, :format => :xhtml end def test_doctype_new_syntax_html5 source = %q{ doctype html html } assert_html '', source, :format => :xhtml end def test_render_with_shortcut_attributes source = %q{ h1#title This is my title #notice.hello.world = hello_world } assert_html '

This is my title

Hello World from @env
', source end def test_render_with_overwritten_default_tag source = %q{ #notice.hello.world = hello_world } assert_html '
Hello World from @env
', source, :default_tag => 'section' end def test_render_with_custom_shortcut source = %q{ #notice.hello.world@test = hello_world @abc = hello_world } assert_html '
Hello World from @env
Hello World from @env
', source, :shortcut => {'#' => 'id', '.' => 'class', '@' => 'section role'} end def test_render_with_text_block source = %q{ p | Lorem ipsum dolor sit amet, consectetur adipiscing elit. } assert_html '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', source end def test_render_with_text_block_with_subsequent_markup source = %q{ p | Lorem ipsum dolor sit amet, consectetur adipiscing elit. p Some more markup } assert_html '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Some more markup

', source end def test_render_with_text_block_with_trailing_whitespace source = %q{ ' this is a link to a href="link" page } assert_html "this is\na link to page", source end def test_nested_text source = %q{ p | This is line one. This is line two. This is line three. This is line four. p This is a new paragraph. } assert_html "

This is line one.\n This is line two.\n This is line three.\n This is line four.

This is a new paragraph.

", source end def test_nested_text_with_nested_html_one_same_line source = %q{ p | This is line one. This is line two. span.bold This is a bold line in the paragraph. | This is more content. } assert_html "

This is line one.\n This is line two.This is a bold line in the paragraph. This is more content.

", source end def test_nested_text_with_nested_html_one_same_line2 source = %q{ p |This is line one. This is line two. span.bold This is a bold line in the paragraph. | This is more content. } assert_html "

This is line one.\n This is line two.This is a bold line in the paragraph. This is more content.

", source end def test_nested_text_with_nested_html source = %q{ p | This is line one. This is line two. This is line three. This is line four. span.bold This is a bold line in the paragraph. | This is more content. } assert_html "

This is line one.\n This is line two.\n This is line three.\n This is line four.This is a bold line in the paragraph. This is more content.

", source end def test_simple_paragraph_with_padding source = %q{ p There will be 3 spaces in front of this line. } assert_html '

There will be 3 spaces in front of this line.

', source end def test_paragraph_with_nested_text source = %q{ p This is line one. This is line two. } assert_html "

This is line one.\n This is line two.

", source end def test_paragraph_with_padded_nested_text source = %q{ p This is line one. This is line two. } assert_html "

This is line one.\n This is line two.

", source end def test_paragraph_with_attributes_and_nested_text source = %q{ p#test class="paragraph" This is line one. This is line two. } assert_html "

This is line one.\nThis is line two.

", source end def test_output_code_with_leading_spaces source = %q{ p= hello_world p = hello_world p = hello_world } assert_html '

Hello World from @env

Hello World from @env

Hello World from @env

', source end def test_single_quoted_attributes source = %q{ p class='underscored_class_name' = output_number } assert_html '

1337

', source end def test_nonstandard_attributes source = %q{ p id="dashed-id" class="underscored_class_name" = output_number } assert_html '

1337

', source end def test_nonstandard_shortcut_attributes source = %q{ p#dashed-id.underscored_class_name = output_number } assert_html '

1337

', source end def test_dashed_attributes source = %q{ p data-info="Illudium Q-36" = output_number } assert_html '

1337

', source end def test_dashed_attributes_with_shortcuts source = %q{ p#marvin.martian data-info="Illudium Q-36" = output_number } assert_html '

1337

', source end def test_parens_around_attributes source = %q{ p(id="marvin" class="martian" data-info="Illudium Q-36") = output_number } assert_html '

1337

', source end def test_square_brackets_around_attributes source = %q{ p[id="marvin" class="martian" data-info="Illudium Q-36"] = output_number } assert_html '

1337

', source end def test_parens_around_attributes_with_equal_sign_snug_to_right_paren source = %q{ p(id="marvin" class="martian" data-info="Illudium Q-36")= output_number } assert_html '

1337

', source end def test_static_empty_attribute source = %q{ p(id="marvin" class="" data-info="Illudium Q-36")= output_number } assert_html '

1337

', source end def test_dynamic_empty_attribute source = %q{ p(id="marvin" class=nil other_empty=("".to_s) data-info="Illudium Q-36")= output_number } assert_html '

1337

', source end def test_closed_tag source = %q{ closed/ } assert_html '', source, :format => :xhtml end def test_attributs_with_parens_and_spaces source = %q{label{ for='filter' }= hello_world} assert_html '', source end def test_attributs_with_parens_and_spaces2 source = %q{label{ for='filter' } = hello_world} assert_html '', source end def test_attributs_with_multiple_spaces source = %q{label for='filter' class="test" = hello_world} assert_html '', source end def test_closed_tag_with_attributes source = %q{ closed id="test" / } assert_html '', source, :format => :xhtml end def test_closed_tag_with_attributes_and_parens source = %q{ closed(id="test")/ } assert_html '', source, :format => :xhtml end def test_render_with_html_comments source = %q{ p Hello /! This is a comment Another comment p World } assert_html "

Hello

World

", source end def test_render_with_html_conditional_and_tag source = %q{ /[ if IE ] p Get a better browser. } assert_html "", source end def test_render_with_html_conditional_and_method_output source = %q{ /[ if IE ] = message 'hello' } assert_html "", source end def test_multiline_attributes_with_method source = %q{ p = output_number } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '

1337

', str end end def test_multiline_attributes_with_text_on_same_line source = %q{ p THE space modulator } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '

THE space modulator

', str end end def test_multiline_attributes_with_nested_text source = %q{ p | THE space modulator } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '

THE space modulator

', str end end def test_multiline_attributes_with_dynamic_attr source = %q{ p | THE space modulator } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '

THE space modulator

', str end end def test_multiline_attributes_with_nested_tag source = %q{ p span.emphasis THE | space modulator } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '

THE space modulator

', str end end def test_multiline_attributes_with_nested_text_and_extra_indentation source = %q{ li< id="myid" class="myclass" data-info="myinfo"> a href="link" My Link } Slim::Parser::DELIMITERS.each do |k,v| str = source.sub('<',k).sub('>',v) assert_html '
  • My Link
  • ', str end end def test_block_expansion_support source = %q{ ul li.first: a href='a' foo li: a href='b' bar li.last: a href='c' baz } assert_html %{}, source end def test_block_expansion_class_attributes source = %q{ .a: .b: #c d } assert_html %{
    d
    }, source end def test_block_expansion_nesting source = %q{ html: body: .content | Text } assert_html %{
    Text
    }, source end def test_eval_attributes_once source = %q{ input[value=succ_x] input[value=succ_x] } assert_html %{}, source end def test_shortcut_splat source = %q{ *hash This is my title } assert_html '
    This is my title
    ', source end def test_splat source = %q{ h1 *hash This is my title } assert_html '

    This is my title

    ', source end def test_splat_tag_name source = %q{ *{:tag => 'h1', :id => 'title'} This is my title } assert_html '

    This is my title

    ', source end def test_splat_empty_tag_name source = %q{ *{:tag => '', :id => 'test'} This is my title } assert_html '
    This is my title
    ', source, :remove_empty_attrs => true assert_html '
    This is my title
    ', source, :remove_empty_attrs => false end def test_closed_splat_tag source = %q{ *hash / This is my title } assert_html '
    ', source end def test_splat_with_id_shortcut source = %q{ #myid*hash This is my title } assert_html '
    This is my title
    ', source end def test_splat_with_class_shortcut source = %q{ .myclass*hash This is my title } assert_html '
    This is my title
    ', source end def test_splat_with_id_and_class_shortcuts source = %q{ #myid.myclass*hash This is my title } assert_html '
    This is my title
    ', source end def test_splat_with_class_merging source = %q{ #myid.myclass *{:class => [:secondclass, %w(x y z)]} *hash This is my title } assert_html '
    This is my title
    ', source end def test_splat_with_boolean_attribute source = %q{ *{:disabled => true, :empty1 => false, :empty2 => '', :empty3 => nil} This is my title } assert_html '
    This is my title
    ', source assert_html '
    This is my title
    ', source, :remove_empty_attrs => false end def test_splat_merging_with_arrays source = %q{ *{:a => 1, :b => 2} *[[:c, 3], [:d, 4]] *[[:e, 5], [:f, 6]] This is my title } assert_html '
    This is my title
    ', source end def test_splat_with_other_attributes source = %q{ h1 data-id="123" *hash This is my title } assert_html '

    This is my title

    ', source end end