require 'helper' require 'slim/logic_less' class TestSlimLogicLess < TestSlim class Scope def initialize @hash = { :person => [ { :name => 'Joe', :age => 1, :selected => true }, { :name => 'Jack', :age => 2 } ] } end end def test_lambda source = %q{ p == person .name = name == simple .hello= hello == list li = key } hash = { :hello => 'Hello!', :person => lambda do |&block| %w(Joe Jack).map do |name| "#{block.call(:name => name)}" end.join end, :simple => lambda do |&block| "
#{block.call}
" end, :list => lambda do |&block| list = [{:key => 'First'}, {:key => 'Second'}] "" end } assert_html '

Joe
Jack
Hello!

', source, :scope => hash end def test_symbol_hash source = %q{ p - person .name = name } hash = { :person => [ { :name => 'Joe', }, { :name => 'Jack', } ] } assert_html '

Joe
Jack

', source, :scope => hash end def test_string_access source = %q{ p - person .name = name } hash = { 'person' => [ { 'name' => 'Joe', }, { 'name' => 'Jack', } ] } assert_html '

Joe
Jack

', source, :scope => hash, :dictionary_access => :string end def test_symbol_access source = %q{ p - person .name = name } hash = { :person => [ { :name => 'Joe', }, { :name => 'Jack', } ] } assert_html '

Joe
Jack

', source, :scope => hash, :dictionary_access => :symbol end def test_method_access source = %q{ p - person .name = name } object = Object.new def object.person %w(Joe Jack).map do |name| person = Object.new person.instance_variable_set(:@name, name) def person.name @name end person end end assert_html '

Joe
Jack

', source, :scope => object, :dictionary_access => :method end def test_instance_variable_access source = %q{ p - person .name = name } object = Object.new object.instance_variable_set(:@person, %w(Joe Jack).map do |name| person = Object.new person.instance_variable_set(:@name, name) person end) assert_html '

Joe
Jack

', source, :scope => object, :dictionary_access => :instance_variable end def test_to_s_access source = %q{ p - people .name = self } hash = { :people => [ 'Joe', 'Jack' ] } assert_html '

Joe
Jack

', source, :scope => hash, :dictionary_access => :symbol end def test_string_hash source = %q{ p - person .name = name } hash = { 'person' => [ { 'name' => 'Joe', }, { 'name' => 'Jack', } ] } assert_html '

Joe
Jack

', source, :scope => hash end def test_dictionary_option source = %q{ p - person .name = name } assert_html '

Joe
Jack

', source, :scope => Scope.new, :dictionary => '@hash' end def test_flag_section source = %q{ p - show_person - person .name = name - show_person | shown } hash = { :show_person => true, :person => [ { :name => 'Joe', }, { :name => 'Jack', } ] } assert_html '

Joe
Jack
shown

', source, :scope => hash end def test_inverted_section source = %q{ p - person .name = name -! person | No person - !person | No person 2 } hash = {} assert_html '

No person No person 2

', source, :scope => hash end def test_escaped_interpolation source = %q{ p text with \#{123} test } assert_html '

text with #{123} test

', source end def test_ruby_attributes source = %q{ p - person b name=name Person a id=name = age span class=name Person } assert_html '

Person1Person2

', source, :scope => Scope.new, :dictionary => '@hash' end def test_boolean_attributes source = %q{ p - person input checked=selected = name } assert_html '

JoeJack

', source, :scope => Scope.new, :dictionary => '@hash' end def test_sections source = %q{ p - person .name = name } assert_html '

Joe
Jack

', source, :dictionary => 'ViewEnv.new' end def test_with_array source = %q{ ul - people_with_locations li = name li = city } assert_html '', source, :dictionary => 'ViewEnv.new' end def test_method source = %q{ a href=output_number Link } assert_html 'Link', source, :dictionary => 'ViewEnv.new' end def test_conditional_parent source = %q{ - prev_page li.previous a href=prev_page Older - next_page li.next a href=next_page Newer} assert_html'', source, :scope => {:prev_page => 'prev', :next_page => 'next'} end def test_render_with_yield source = %q{ div == yield } assert_html '
This is the menu
', source do 'This is the menu' end end end