Rosetta Code/Count examples: Difference between revisions

add Ruby
m (→‎{{header|Tcl}}: link to tcllib library)
(add Ruby)
Line 279:
 
print "\nTotal: %d examples." % sum(tasks)</lang>
 
=={{header|Ruby}}==
{{libheader|REXML}}
<lang ruby>require 'open-uri'
require 'rexml/document'
 
def rc_url(page, query)
"http://www.rosettacode.org/w/" + page + "?" +
URI.escape(query.map {|pair| "%s=%s" % pair}.join("&"))
end
 
def rc_tasks(category)
query = {
"action" => "query",
"list" => "categorymembers",
"cmtitle" => "Category:#{category}",
"format" => "xml",
"cmlimit" => 500,
}
while true
url = rc_url "api.php", query
doc = REXML::Document.new open(url)
 
REXML::XPath.each(doc, "//cm") do |task|
yield task.attribute("title").value
end
 
continue = REXML::XPath.first(doc, "//query-continue")
break if continue.nil?
cm = REXML::XPath.first(continue, "categorymembers")
query["cmcontinue"] = cm.attribute("cmcontinue").value
end
end
 
total_examples = 0
 
rc_tasks("Programming_Tasks") do |task|
url = rc_url "index.php", {"action" => "raw", "title" => task}
examples = open(url).read.scan("=={{header").length
puts "#{task}: #{examples}"
total_examples += examples
end
 
puts
puts "Total: #{total_examples}"</lang>
 
=={{header|Tcl}}==
Anonymous user