User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Ruby section within the Web Development category of DaniWeb, a massive community of 391,648 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,872 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Ruby advertiser: SELL YOUR PRODUCT TODAY !
Views: 2235 | Replies: 5 | Solved
Reply
Join Date: Jul 2006
Posts: 155
Reputation: tefflox is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 0
tefflox's Avatar
tefflox tefflox is offline Offline
Junior Poster

My first Ruby programming question :-)

  #1  
Dec 26th, 2007
Hello, I'm pleased to be here by way of the html forum. I've been using php for static pages for 18 months. I wanted to learn rails, but I just realized that I could configure my host to automate index.rhtml files just like php. This is a major motivator for me to learn Ruby, and after a few more months I can start fresh with Rails. OK, here is the code that works in PHP, and what I've got so far in Ruby. The JS effect can be viewed here: http://listenlight.net/13 ---

<?php

  $i = 0; $n = 0;
  
  $str = "listenlightpoetryjournal";
  
  while( $str[$i] != "" ) {
    echo("<span id=\"n".$n++."\" style=\"position:relative; visibility: hidden; font-size: normal; top:".(rand(-18, 18))."px; color: black;\">".$str[$i]."</span>");
  
    $i++;
  }

  
?>


  <%   
  def banner
      str = "listenlightpoetryjournal"
      i, n = 0, 0
    until c = str[i] == nil 
        line = "<span id=\"n", n, "\" style=\"position: relative; font-size: normal; top:", rand(36) - 18, "px;\">", c, "</span>"
        i += 1
        n += 1 
        output = output, line
    end
  end
   %>
   
   <%= banner  %>

In the Ruby example, I've set the visibility attribute in the CSS, attempting to clean the markup. Also, is there a way to do a parallel incrementing?--such as a, b += 1, 1 (?)
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Jul 2006
Posts: 155
Reputation: tefflox is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 0
tefflox's Avatar
tefflox tefflox is offline Offline
Junior Poster

Solution Re: My first Ruby programming question :-)

  #2  
Dec 26th, 2007
My solution ---

  <%=
      def banner
        i, n, span, str = 0, 0, String.new, "listenlightpoetryjournal"
        until i == str.length do
          span << "<span id=\"n" << n.to_s << "\" style=\"top: " 
                << (rand(36) - 18).to_s << "px;\">" << str[i] << "</span>"
          i, n = i + 1, n + 1
        end 
        return span
      end
      banner
  %>

No more PHP for this one.
Reply With Quote  
Join Date: Oct 2005
Location: Manchester, UK
Posts: 481
Reputation: pty is on a distinguished road 
Rep Power: 3
Solved Threads: 31
pty's Avatar
pty pty is offline Offline
Posting Pro in Training

Re: My first Ruby programming question :-)

  #3  
Dec 29th, 2007
Originally Posted by tefflox View Post
My solution ---

  <%=
      def banner
        i, n, span, str = 0, 0, String.new, "listenlightpoetryjournal"
        until i == str.length do
          span << "<span id=\"n" << n.to_s << "\" style=\"top: " 
                << (rand(36) - 18).to_s << "px;\">" << str[i] << "</span>"
          i, n = i + 1, n + 1
        end 
        return span
      end
      banner
  %>

No more PHP for this one.


Although your solution is fine it can be a little more readable (and re-usable) in rails.

In the controller:

  1. def banner(text)
  2. span = String.new
  3. text.split(//).each_with_index do |c, i|
  4. span += "<span id='#{i}' style='top:#{(rand(36)-18)}px;'>#{c}</span>\n"
  5. end
  6. span
  7. end

Then in the view

<%= banner("listenlightpoetryjournal") %>
Note to self... pocket cup
Reply With Quote  
Join Date: Jan 2005
Location: San Jose, CA
Posts: 3
Reputation: eruder is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 1
eruder eruder is offline Offline
Newbie Poster

Re: My first Ruby programming question :-)

  #4  
Jan 1st, 2008
pty's improvement is a good one!

The only nit I have with it is that I wouldn't put the banner method in the controller, since it has nothing to do with the "traffic cop" jobs that controllers normally do. I would put it in a helper file, either this controller's helper file or the application_helper.rb file (if it's a method you'd want to use in other controllers).

Ed
Reply With Quote  
Join Date: Jul 2006
Posts: 155
Reputation: tefflox is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 0
tefflox's Avatar
tefflox tefflox is offline Offline
Junior Poster

Re: My first Ruby programming question :-)

  #5  
Jan 1st, 2008
thanks. i appreciate the direction on working with strings, but it's only for static pages. i'm not using the rails framework. i just wanted to make it concise.
Reply With Quote  
Join Date: Oct 2005
Location: Manchester, UK
Posts: 481
Reputation: pty is on a distinguished road 
Rep Power: 3
Solved Threads: 31
pty's Avatar
pty pty is offline Offline
Posting Pro in Training

Re: My first Ruby programming question :-)

  #6  
Jan 2nd, 2008
Originally Posted by eruder View Post
pty's improvement is a good one!

The only nit I have with it is that I wouldn't put the banner method in the controller, since it has nothing to do with the "traffic cop" jobs that controllers normally do. I would put it in a helper file, either this controller's helper file or the application_helper.rb file (if it's a method you'd want to use in other controllers).

Ed


Thanks Ed
Note to self... pocket cup
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

DaniWeb Ruby Marketplace
Thread Tools Display Modes

Similar Threads
Other Threads in the Ruby Forum

All times are GMT -4. The time now is 1:15 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC