Hacking arrays

The code:

http://pastie.caboo.se/188207

The question:

Why isn't it doing them like nested folders? I'd like to get

.-----------------

···

Parent folder
.------------------
> child folder
> child files
>____________

__________

but I don't. Can anyone see whats wrong here? I'm losing my mind.
Thanks.

Where are the unit tests?

--
  Phlip

That's a good question, a fair question, and I would love to anwser it.

Hi --

···

On Tue, 29 Apr 2008, John wrote:

The code:

http://pastie.caboo.se/188207

The question:

Why isn't it doing them like nested folders? I'd like to get

.-----------------
> Parent folder
> .------------------
> > child folder
> > child files
> >____________
__________

but I don't. Can anyone see whats wrong here? I'm losing my mind.

It probably just a matter of counting the divs. I've sort of hacked
together a rewrite that looks like it's getting it right. Emphasis on
"hacked" :slight_smile: There's room for refinement, but anyway, this might get
you moving. http://pastie.org/188490

David

--
Rails training from David A. Black and Ruby Power and Light:
   INTRO TO RAILS June 9-12 Berlin
   ADVANCING WITH RAILS June 16-19 Berlin
   INTRO TO RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for details and updates!

it looks like you are making it much harder than it needs to be... this code gives you the depth you are at all the way down without the need to count:

cfp:~ > find a
a
a/b
a/b/c
a/b/c/file.rb
a/b/file.rb
a/file.rb

cfp:~ > cat a.rb

def div folder = '.', depth = 0
   title = folder

   entries = Dir[ "#{ folder }/*" ]

   padding = ' ' * depth

   files = entries.select{|entry| test ?f, entry}
   dirs = entries.select{|entry| test ?d, entry}

   dir_content = dirs.map do |dir|
     div dir, depth + 1
   end

   file_content = files.map do |file|
     content = <<-html
       <span class='file'>#{ file }</span>
     html
   end

   content = <<-html
     <div class='folder'>
      <div class='title'> #{ title } </div>
       #{ file_content }
       #{ dir_content }
      </div>
     </div>
   html

   indent = content[%r/^\s*/]
   content.strip.gsub %r/^#{ indent }/, padding
end

puts div( ARGV.shift )

cfp:~ > ruby a.rb a
<div class='folder'>
  <div class='title'> a </div>
         <span class='file'>a/file.rb</span>

   <div class='folder'>
   <div class='title'> a/b </div>
      <span class='file'>a/b/file.rb</span>

    <div class='folder'>
    <div class='title'> a/b/c </div>
    <span class='file'>a/b/c/file.rb</span>

    </div>
   </div>
  </div>
</div>

the indentation could be improved... but i suppose that doesn't matter for html anyhow.

regards.

a @ http://codeforpeople.com/

···

On Apr 28, 2008, at 8:10 PM, John wrote:

The code:

http://pastie.caboo.se/188207

The question:

Why isn't it doing them like nested folders? I'd like to get

.-----------------
> Parent folder
> .------------------
> > child folder
> > child files
> >____________
__________

but I don't. Can anyone see whats wrong here? I'm losing my mind.
Thanks.

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

The anwser to Phlips question is 'I don't know how to write unit
tests.'

It probably just a matter of counting the divs. I've sort of hacked
together a rewrite that looks like it's getting it right. Emphasis on
"hacked" :slight_smile: There's room for refinement, but anyway, this might get
you moving.http://pastie.org/188490

David

That works, perfect. David, thanks. Looks like the num function was
the problem. I couldn't see it - the array intersection wasn't even
part of the equation.

John wrote:

The anwser to Phlips question is 'I don't know how to write unit
tests.'

And I guess you'd like to know how to do that?

Well, Ruby ships with Test::Unit
http://ruby-doc.org/core/classes/Test/Unit.html

Then, there's Shoulda:

RSpec:

Just to name three options you have. :wink:

Ruby on Rails books usually cover Unit Testing (though, Rails brings its
own additions to the framework!).

And here's a quick guide to unit testing in Ruby:

http://ruby.about.com/od/learnruby/p/learn_by_test.htm?rd=1

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan

Zoo: An excellent place to study the habits of human beings.
~ -- Evan Esar