VDS-Badges: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Astro (Diskussion | Beiträge) (Mit Chaosknoten) |
Astro (Diskussion | Beiträge) (This page must use the Rübÿ Spëëd Mëtäl Cödïng template!!!111) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Generiert Schilder zum Umhängen auf der Demo gegen die Vorratsdatenspeicherung. Nutzung: | Generiert Schilder zum Umhängen auf der Demo gegen die Vorratsdatenspeicherung. Nutzung: | ||
ruby vds-badges.rb 23 > vds-badges.fo && fop -fo vds-badges.fo -pdf vds-badges.pdf | ruby vds-badges.rb 23 > vds-badges.fo && fop -fo vds-badges.fo -pdf vds-badges.pdf | ||
Dabei sollte ''chaosknoten.jpg'' im Verzeichnis liegen. | Dabei sollte ''chaosknoten.jpg'' im Verzeichnis liegen. | ||
<source lang="ruby"> | <source lang="ruby"> | ||
#!/usr/bin/env ruby | #!/usr/bin/env ruby | ||
require 'cgi' | require 'cgi' | ||
NAMEN = ['Wolfgang Schäuble', | NAMEN = ['Wolfgang Schäuble', | ||
'Rudolf Seiters', | 'Rudolf Seiters', | ||
Zeile 32: | Zeile 28: | ||
namen1 = NAMEN.collect { |n| n.split(' ')[0..-2].join(' ') } | namen1 = NAMEN.collect { |n| n.split(' ')[0..-2].join(' ') } | ||
namen2 = NAMEN.collect { |n| n.split(' ')[-1] } | namen2 = NAMEN.collect { |n| n.split(' ')[-1] } | ||
class Array | class Array | ||
def any_one | def any_one | ||
Zeile 38: | Zeile 33: | ||
end | end | ||
end | end | ||
class Symbol | class Symbol | ||
def u2m | def u2m | ||
Zeile 44: | Zeile 38: | ||
end | end | ||
end | end | ||
class Fixnum | |||
def rjust(*a) | |||
to_s.rjust(*a) | |||
end | |||
end | |||
class Builder | class Builder | ||
def self.print | def self.print | ||
Zeile 51: | Zeile 49: | ||
puts | puts | ||
end | end | ||
def initialize(output) | def initialize(output) | ||
@o = output | @o = output | ||
end | end | ||
def method_missing(fname, attrs={}) | def method_missing(fname, attrs={}) | ||
@o << "<#{fname.u2m}" | @o << "<#{fname.u2m}" | ||
Zeile 66: | Zeile 62: | ||
@o << '/>' | @o << '/>' | ||
end | end | ||
nil | nil | ||
end | end | ||
end | end | ||
class BadgeMaker | class BadgeMaker | ||
def initialize(fo) | def initialize(fo) | ||
@fo = fo | @fo = fo | ||
end | end | ||
def make(text) | def make(text) | ||
@fo.page_sequence('master-reference' => 'A4') { | @fo.page_sequence('master-reference' => 'A4') { | ||
Zeile 82: | Zeile 75: | ||
'margin-right' => '1cm') { | 'margin-right' => '1cm') { | ||
@fo.external_graphic('src' => 'url("chaosknoten.jpg")', | @fo.external_graphic('src' => 'url("chaosknoten.jpg")', | ||
'content-width' => ' | 'content-width' => '3cm', | ||
'content-height' => ' | 'content-height' => '2.75cm') | ||
} | } | ||
} | } | ||
Zeile 94: | Zeile 87: | ||
end | end | ||
end | end | ||
n = (ARGV.shift || 1).to_i | n = (ARGV.shift || 1).to_i | ||
XMLNS_FO = 'http://www.w3.org/1999/XSL/Format' | XMLNS_FO = 'http://www.w3.org/1999/XSL/Format' | ||
Builder.print { |fo| | Builder.print { |fo| | ||
Zeile 107: | Zeile 98: | ||
'display-align' => 'center') | 'display-align' => 'center') | ||
fo.region_after('extent' => '4cm', | fo.region_after('extent' => '4cm', | ||
'margin-bottom' => ' | 'display-align' => 'after', | ||
'margin-bottom' => '1.5cm') | |||
} | } | ||
} | } | ||
n.times { | n.times { | ||
name = namen1.any_one + ' ' + namen2.any_one | name = namen1.any_one + ' ' + namen2.any_one | ||
datum = ((rand * 29).to_i + 1).to_s + '.' + | datum = ((rand * 29).to_i + 1).to_s + '.' + | ||
((rand * 12).to_i + 1).to_s + '.' + | ((rand * 12).to_i + 1).to_s + '.' + | ||
((rand * 5).to_i + 2008).to_s | ((rand * 5).to_i + 2008).to_s + ' um ' + | ||
(rand * 24).to_i.rjust(2, '0') + ':' + | |||
(rand * 60).to_i.rjust(2, '0') + ':' + | |||
(rand * 60).to_i.rjust(2, '0') | |||
text = case (rand * 5).to_i | text = case (rand * 5).to_i | ||
when 0 | when 0 | ||
Zeile 133: | Zeile 127: | ||
} | } | ||
</source> | </source> | ||
[[Kategorie:Ruby]] | |||
{{Rübÿ Spëëd Mëtäl Cödïng}} |
Aktuelle Version vom 26. Juni 2008, 17:12 Uhr
Generiert Schilder zum Umhängen auf der Demo gegen die Vorratsdatenspeicherung. Nutzung:
ruby vds-badges.rb 23 > vds-badges.fo && fop -fo vds-badges.fo -pdf vds-badges.pdf
Dabei sollte chaosknoten.jpg im Verzeichnis liegen.
#!/usr/bin/env ruby
require 'cgi'
NAMEN = ['Wolfgang Schäuble',
'Rudolf Seiters',
'Manfred Kanther',
'Otto Schily',
'Wolfgang Schäuble',
'Heribert Rech',
'Günther Beckstein',
'Ehrhart Körting',
'Jörg Schönbohm',
'Willi Lemke',
'Udo Nagel',
'Volker Bouffier',
'Lorenz Caffier',
'Uwe Schünemann',
'Ingo Wolf',
'Karl Peter Bruch',
'Klaus Meiser',
'Albrecht Buttolo',
'Holger Hövelmann',
'Ralf Stegner',
'Karl Heinz Gasser']
namen1 = NAMEN.collect { |n| n.split(' ')[0..-2].join(' ') }
namen2 = NAMEN.collect { |n| n.split(' ')[-1] }
class Array
def any_one
self[(rand * size)]
end
end
class Symbol
def u2m
to_s.gsub('_', '-')
end
end
class Fixnum
def rjust(*a)
to_s.rjust(*a)
end
end
class Builder
def self.print
puts '<?xml version="1.0" encoding="utf-8"?>'
yield new($stdout)
puts
end
def initialize(output)
@o = output
end
def method_missing(fname, attrs={})
@o << "<#{fname.u2m}"
@o << attrs.collect { |k,v| " #{k}=\"#{CGI::escapeHTML(v)}\"" }.to_s
if block_given?
@o << '>'
@o << yield.to_s
@o << "</#{fname.u2m}>"
else
@o << '/>'
end
nil
end
end
class BadgeMaker
def initialize(fo)
@fo = fo
end
def make(text)
@fo.page_sequence('master-reference' => 'A4') {
@fo.static_content('flow-name' => 'xsl-region-after') {
@fo.block('text-align' => 'right',
'margin-right' => '1cm') {
@fo.external_graphic('src' => 'url("chaosknoten.jpg")',
'content-width' => '3cm',
'content-height' => '2.75cm')
}
}
@fo.flow('font-size' => '2.5cm',
'text-align' => 'center',
'flow-name' => 'xsl-region-body') {
@fo.block { text }
}
}
end
end
n = (ARGV.shift || 1).to_i
XMLNS_FO = 'http://www.w3.org/1999/XSL/Format'
Builder.print { |fo|
fo.root('xmlns' => XMLNS_FO) {
fo.layout_master_set {
fo.simple_page_master('master-name' => 'A4',
'page-width' => '297mm',
'page-height' => '210mm') {
fo.region_body('margin' => '1cm 1cm 1cm 1cm',
'display-align' => 'center')
fo.region_after('extent' => '4cm',
'display-align' => 'after',
'margin-bottom' => '1.5cm')
}
}
n.times {
name = namen1.any_one + ' ' + namen2.any_one
datum = ((rand * 29).to_i + 1).to_s + '.' +
((rand * 12).to_i + 1).to_s + '.' +
((rand * 5).to_i + 2008).to_s + ' um ' +
(rand * 24).to_i.rjust(2, '0') + ':' +
(rand * 60).to_i.rjust(2, '0') + ':' +
(rand * 60).to_i.rjust(2, '0')
text = case (rand * 5).to_i
when 0
"Hat am #{datum} #{name} angerufen"
when 1
"Hat am #{datum} eine E-Mail an #{name} geschrieben"
when 2
"Hat am #{datum} das Weblog von #{name} gelesen"
when 3
"Hat sich am #{datum} in der Nähe von #{name} aufgehalten"
when 4
"Hat am #{datum} eine Kurznachricht an #{name} gesendet"
end
BadgeMaker.new(fo).make(text)
}
}
}
Rübÿ Spëëd Mëtäl Cödïng
Projects: CacaANSICam | Date Determinator | DVB-Scraping | Filmnächte-Scraping | GeeKal | Gruntmaster | Harvester | Hirn | Irb | Jargon-File | Ruby-MediaWiki | Miniwebserver | Momomoto | Pentabarf | Podcast-fetching | Ruby | Ruby-Geekend | Ruby und Ruby on Rails | Sedusa | VDS-Badges | Xmotoctl | Youtube-Scraping