Page MenuHomeDevCentral

genindex
No OneTemporary

genindex

#!/usr/bin/env tclsh
#
# Generate feeds index
#
#Gets MD5 hash
proc md5 {string} {
#tcllib way:
#package require md5
#string tolower [::md5::md5 --hex $string]
#BSD way:
#exec -- md5 -q -s $string
#Linux way:
#exec -- echo -n $string | md5sum | sed "s/\ *-/\ \ /"
#Solaris way:
#lindex [exec -- echo -n $string | md5sum] 0
#OpenSSL way:
exec -- echo -n $string | openssl md5
}
namespace eval ::gravatar {
#Gets Gravatar e-mail hash
#http://en.gravatar.com/site/implement/hash/
proc get_hash {mail} {
md5 [string tolower [string trim $mail]]
}
#Gets Gravatar URL
#http://en.gravatar.com/site/implement/images/
#size: 1-512 (in pixels, default 80px
#default: what to print if hash not found, default gravatar logo
# values: 404 mm identicon monsterid wavatar retro or an URL
#rating: g pg r x
#We don't validate parameters, are API is unstable and evolves often.
proc get_url {mail {size 0} {default ""} {rating ""}} {
set url //www.gravatar.com/avatar/
append url [get_hash $mail]
set params {}
if {$size != 0} {
lappend params s $size
}
if {$default != ""} {
lappend params d $default
}
if {$rating != ""} {
lappend params r $rating
}
if {[llength $params] > 0} {
append url ?[::http::formatQuery {*}$params]
}
return $url
}
}
proc get_feed_info {feed} {
}
proc generate_index {{dir .} {index index.xml}} {
set fd [open index.tmp r]
set data [read $fd]
close $fd
set fd [open $index w]
puts $fd "<feeds>"
foreach file $data {
if {$data == ""} {continue}
# Gets feed name and e-mail
set name ""
set email ""
set fdfeed [open $file r]
set data [read $fdfeed 4096]
close $fdfeed
if [catch {
set pos [string first "owner email=" $data]
if {$pos == -1} {
set pos [string first "<user email=" $data]
}
set pos2 [string first "\"" $data $pos+13]
set email [string range $data $pos+13 $pos2-1]
set pos [string first ">" $data $pos2]
set pos2 [string first "<" $data $pos]
set name [string range $data $pos+1 $pos2-1]
}] {
puts stderr "Not a valid feed file: $file"
continue
}
# Writes feed entry (title, avatar from Gravatar and file)
puts $fd "\t<feed>"
puts $fd "\t\t<title>$name</title>"
puts $fd "\t\t<avatar>[gravatar::get_url $email]</avatar>"
puts $fd "\t\t<file>$file</file>"
puts $fd "\t</feed>"
}
puts $fd "</feeds>"
close $fd
}
generate_index

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 2, 21:47 (10 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2570824
Default Alt Text
genindex (2 KB)

Event Timeline