-
.CODICErequire 'sinatra'
require 'rexml/document'
class News
attr_accessor :date, :title, :content
def initialize(date, title, content)
@date = date
@title = title
@content = content
end
end
def parse(xml)
news = []
REXML::Document.new(xml).elements.each('repository/news') { |ele|
news << News.new(ele.elements['date'], ele.elements['title'], ele.elements['content'])
}
news
end
get '/x' do
@title = 'Blog'
@news = ''
repository = parse(File.read('public/news.xml'))
repository.each { |news|
@news += '<b>Title:</b> '+news.title.to_s
}
haml :index
end
not_found do
status 404
@title = '404'
@msg = 'Error 404: Not found'
haml :index
end
# XML
=begin
<?xml version="1.0" encoding="UTF-8"?>
<repository>
<news>
<date>Mon Nov 14 15:27:39 +0000 2011</date>
<title>Test #1</title>
<content>LOL</content>
</news>
<news>
<date>Mon Nov 14 15:27:39 +0000 2011</date>
<title>Test #2</title>
<content>TROLOLOL</content>
</news>
</repository>
=end
Output: `Title: Title:`
Inoltre se metto i vari metodi in una classe, chiamando il metodo parse() ottengo un errore di comando non trovato.. -
meh..
User deleted
Non usare REXML, usa Nokogiri. . -
.
Ok, ora è perfetto, però vedo che è molto lento °°
In ogni caso se volessi inserire i restanti tre metodi in una classe come richiamo poi il metodo parse() da get visto che mi dà MethodNotFoundException (vado a memoria)?. -
meh..
User deleted
Non fai prima a fare un metodo di classe News.parse? . -
.
parse crea un array di oggetti News a partire da un XML, non vedo molto senso darlo a News a dire il vero. . -
meh..
User deleted
parse crea un array di oggetti News a partire da un XML, non vedo molto senso darlo a News a dire il vero.
Io si invece.. -
.
Ho fatto in questo modo, anche se per quanto riguarda il tempo di esecuzione ottengo output del tipo `7.8e-05 seconds.`. CODICErequire 'sinatra'
require 'nokogiri'
class News
attr_accessor :date, :title, :content, :time
def initialize(date=nil, title=nil, content=nil)
@time = Time.now
@date = date
@title = title
@content = content
end
def parse(xml)
news = []
Nokogiri::XML(xml).xpath('repository/news').each { |ele|
news << News.new(ele.xpath('date').inner_text, ele.xpath('title').inner_text, ele.xpath('content').inner_text)
}
news
end
def get_time
Time.now - @time
end
end
news = News.new
get '/blog' do
@title = 'Blog'
@news = ''
repository = news.parse(File.read('public/news.xml'))
repository.each { |news|
@news += "<b>Date:</b> #{news.date.to_s}<br />"
@news += "<b>Title:</b> #{news.title.to_s}<br />"
@news += "<b>Content:</b> #{news.content.to_s}"
@news += '<hr />'
}
@footer = "#{news.get_time.to_s} seconds."
haml :index
end
not_found do
status 404
@title = '404'
@news = 'Error 404: Not found'
@footer = "#{news.get_time.to_s} seconds."
haml :index
end. -
meh..
User deleted
Ho fatto in questo modo, anche se per quanto riguarda il tempo di esecuzione ottengo output del tipo `7.8e-05 seconds.`.CODErequire 'sinatra'
require 'nokogiri'
class News
attr_accessor :date, :title, :content, :time
def initialize(date=nil, title=nil, content=nil)
@time = Time.now
@date = date
@title = title
@content = content
end
def parse(xml)
news = []
Nokogiri::XML(xml).xpath('repository/news').each { |ele|
news << News.new(ele.xpath('date').inner_text, ele.xpath('title').inner_text, ele.xpath('content').inner_text)
}
news
end
def get_time
Time.now - @time
end
end
news = News.new
get '/blog' do
@title = 'Blog'
@news = ''
repository = news.parse(File.read('public/news.xml'))
repository.each { |news|
@news += "<b>Date:</b> #{news.date.to_s}<br />"
@news += "<b>Title:</b> #{news.title.to_s}<br />"
@news += "<b>Content:</b> #{news.content.to_s}"
@news += '<hr />'
}
@footer = "#{news.get_time.to_s} seconds."
haml :index
end
not_found do
status 404
@title = '404'
@news = 'Error 404: Not found'
@footer = "#{news.get_time.to_s} seconds."
haml :index
end
Avevo detto metodo di classe io, non metodo d'istanza.. -
.CODICErequire 'sinatra'
require 'nokogiri'
start = Time.now
class News
attr_accessor :date, :title, :content
def initialize(date, title, content)
@date = date
@title = title
@content = content
end
def News.parse(xml)
news = []
Nokogiri::XML(xml).xpath('repository/news').each { |ele|
news << News.new(ele.xpath('date').inner_text, ele.xpath('title').inner_text, ele.xpath('content').inner_text)
}
news
end
end
get '/blog' do
@title = 'Blog'
@news = ''
repository = News.parse(File.read('public/news.xml'))
repository.each { |news|
@news += "<b>Date:</b> #{news.date.to_s}<br />"
@news += "<b>Title:</b> #{news.title.to_s}<br />"
@news += "<b>Content:</b> #{news.content.to_s}"
@news += '<hr />'
}
@footer = "#{(Time.now - start).to_s} seconds."
haml :index
end
not_found do
status 404
@title = '404'
@news = 'Error 404: Not found'
@footer = "#{(Time.now - start).to_s} seconds."
haml :index
end.