[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

file renaming/parsing help

Mike Mr.

12/2/2007 8:45:00 AM

First of all let me say that I am an absolute newb when it comes to
rails. I am simply trying to work on an existing script that was
written by someone else.

I need to take a filename that will always have a similar name and turn
it into an rfc2822 compliant line for an xml file. Here is what I have
so far but I am absolutely lost as you can see. sad

The filenames will always be the same, e.g. November 15,2007.mp3 or
September 7,2008.mp3, etc. One thing I am concerned about is the day
since sometimes it will be a single digit and sometimes a double digit,
although I am sure their is a way around that too.

I would love if someone could shed some light on this for me. I might
even learn something in the process. smile

#The goal is turn "November 15,2007.mp3" into "Wed, 15 Nov 2007 19:00:00
GMT"
#
#So far the output below gives me Wed, Nov15


filename = "November 15, 2007.mp3"
puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])
--
Posted via http://www.ruby-....

4 Answers

Todd Benson

12/2/2007 10:53:00 AM

0

On Dec 2, 2007 2:44 AM, Mike Mr. <saltydog4791@gmail.com> wrote:
> First of all let me say that I am an absolute newb when it comes to
> rails. I am simply trying to work on an existing script that was
> written by someone else.
>
> I need to take a filename that will always have a similar name and turn
> it into an rfc2822 compliant line for an xml file. Here is what I have
> so far but I am absolutely lost as you can see. sad
>
> The filenames will always be the same, e.g. November 15,2007.mp3 or
> September 7,2008.mp3, etc. One thing I am concerned about is the day
> since sometimes it will be a single digit and sometimes a double digit,
> although I am sure their is a way around that too.
>
> I would love if someone could shed some light on this for me. I might
> even learn something in the process. smile
>
> #The goal is turn "November 15,2007.mp3" into "Wed, 15 Nov 2007 19:00:00
> GMT"
> #
> #So far the output below gives me Wed, Nov15
>
>
> filename = "November 15, 2007.mp3"
> puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])

You could make your life easy by using a Date object and the #parse method...

str = "November 15, 2007.mp3"
date_str = str.split('.')[0]
d = Date.parse(date_str) ##### parse it
puts d.strftime "%a, %e %b %Y.mp3" ##### output it the way you want

You can add other formats too (see #strftime and look at the source)
Todd

Axel Etzold

12/2/2007 11:14:00 AM

0


-------- Original-Nachricht --------
> Datum: Sun, 2 Dec 2007 17:44:56 +0900
> Von: "Mike Mr." <saltydog4791@gmail.com>
> An: ruby-talk@ruby-lang.org
> Betreff: file renaming/parsing help

> First of all let me say that I am an absolute newb when it comes to
> rails. I am simply trying to work on an existing script that was
> written by someone else.
>
> I need to take a filename that will always have a similar name and turn
> it into an rfc2822 compliant line for an xml file. Here is what I have
> so far but I am absolutely lost as you can see. sad
>
> The filenames will always be the same, e.g. November 15,2007.mp3 or
> September 7,2008.mp3, etc. One thing I am concerned about is the day
> since sometimes it will be a single digit and sometimes a double digit,
> although I am sure their is a way around that too.
>
> I would love if someone could shed some light on this for me. I might
> even learn something in the process. smile
>
> #The goal is turn "November 15,2007.mp3" into "Wed, 15 Nov 2007 19:00:00
> GMT"
> #
> #So far the output below gives me Wed, Nov15
>
>
> filename = "November 15, 2007.mp3"
> puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])
> --
> Posted via http://www.ruby-....

Dear Mike,

here's some code using regexps .. that avoids knowing
the exact indices where your one-digit or two-digit day information is.
To get the day of week, you can use the time class of Ruby.
(http://ruby-doc.org/core/classes/Time.ht...)

Best regards,

Axel

------------------------------------------------------------
require "time"

mp_files=["November 15, 2007.mp3"]
result=[]
month=["January","February","March","April","May","June","July","August","September","October","November","December"]
year=/(1|2)[0-9]{3}/ # year must start in 1 or in 2 and have 4 digits
day=/[0-9]{1,2}/

file_month=''
file_year=''
file_day=''
mp_files.each{|file_name|
file_name.sub!(/\.[^\.]*$/,'') # chop off endings
month.each{|m| if file_name.index(m)!=nil; file_month=m; break; end}
if file_month==''
raise "No month given for file : " + file_name
end
ref_year=year.match(file_name)
if ref_year!=nil
file_year=ref_year[0]
else
raise "No year given for file : " + file_name
end
file_name.sub!(ref_year[0],'') # remove year, so that doesn't interfere with search for file_name's day
ref_day=day.match(file_name)
if ref_day!=nil
file_day=ref_day[0]
else
raise "No day given for file : " + file_name
end
# get day of week
dow=Time.parse([file_month,file_day,file_year].join(' ')).wday
result<<Time.parse([file_month,file_day,file_year].join(' ')).to_s
}

p 'result'
p result


--
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
Browser-Versionen downloaden: http://www.gmx.net/de/...

markonlinux

12/2/2007 11:19:00 PM

0

Hi,

On Dec 2, 7:44 pm, "Mike Mr." <saltydog4...@gmail.com> wrote:
> First of all let me say that I am an absolute newb when it comes to
> rails. I am simply trying to work on an existing script that was
> written by someone else.
>
> I need to take a filename that will always have a similar name and turn
> it into an rfc2822 compliant line for an xml file. Here is what I have
> so far but I am absolutely lost as you can see. sad
>
> The filenames will always be the same, e.g. November 15,2007.mp3 or
> September 7,2008.mp3, etc. One thing I am concerned about is the day
> since sometimes it will be a single digit and sometimes a double digit,
> although I am sure their is a way around that too.
>
> I would love if someone could shed some light on this for me. I might
> even learn something in the process. smile
>
> #The goal is turn "November 15,2007.mp3" into "Wed, 15 Nov 2007 19:00:00
> GMT"
> #
> #So far the output below gives me Wed, Nov15
>
> filename = "November 15, 2007.mp3"
> puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])
> --
> Posted viahttp://www.ruby-....


not exactly what you're after (not sure how you intend to generate
times?) but might help.

require 'date'
require 'time'

str = "November 15, 2007.mp3"
#str_sans_ext = str.split('.')[0]
# or,
str_sans_ext = str.gsub(/\.mp3/,'')
new_date = Time.parse(str_sans_ext)
puts new_date
puts new_date.httpdate


cheers,

--
Mark

Mike Mr.

12/3/2007 9:03:00 PM

0

Todd Benson wrote:
> On Dec 2, 2007 2:44 AM, Mike Mr. <saltydog4791@gmail.com> wrote:
>> since sometimes it will be a single digit and sometimes a double digit,
>>
>> filename = "November 15, 2007.mp3"
>> puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])
>
> You could make your life easy by using a Date object and the #parse
> method...
>
> str = "November 15, 2007.mp3"
> date_str = str.split('.')[0]
> d = Date.parse(date_str) ##### parse it
> puts d.strftime "%a, %e %b %Y.mp3" ##### output it the way you want
>
> You can add other formats too (see #strftime and look at the source)
> Todd

Thank you so much Todd. I integrated your code successfully and it
works great. Kudos to all of you who lent me a hand.

Warm regards,

Mike

--
Posted via http://www.ruby-....