Skip to content

Instantly share code, notes, and snippets.

@moonhouse
Created July 28, 2017 14:59
Show Gist options
  • Select an option

  • Save moonhouse/a3f57e2f53e0a86599930358a1058529 to your computer and use it in GitHub Desktop.

Select an option

Save moonhouse/a3f57e2f53e0a86599930358a1058529 to your computer and use it in GitHub Desktop.
Program to create a document in RTF format with info about wedding guests
require 'csv'
require 'rtf'
include RTF
welcome_text = "Vi är väldigt glada för att just du ville komma och fira vår dag. Vi hoppas att du ska få en härlig eftermiddag med god mat och trevliga samtal.
För att lära känna de andra gästerna lite bättre ger vi här en kort presentation."
table_starts = {1 => "Vänsterflanken", 18 => "Mitten", 24 => "Högerflanken"}
document = RTF::Document.new(RTF::Font.new(RTF::Font::ROMAN, 'Garamond'))
styles = {}
styles['NULL'] = ParagraphStyle.new
styles['TOP_DOCUMENT'] = ParagraphStyle.new
styles['INTRODUCTION'] = ParagraphStyle.new
styles['PERSON'] = ParagraphStyle.new
styles['SUB_HEADING'] = ParagraphStyle.new
styles['NAME'] = CharacterStyle.new
styles['DESCRIPTION'] = CharacterStyle.new
styles['SUB_HEADING_FONT'] = CharacterStyle.new
styles['TOP_DOCUMENT'].space_before = 18 * 20
styles['TOP_DOCUMENT'].space_after = 9 * 20
styles['INTRODUCTION'].space_after = 24 * 20
styles['PERSON'].space_after = 9 * 20
styles['SUB_HEADING'].space_before = 18 * 20
styles['SUB_HEADING'].space_after = 6 * 20
styles['SUB_HEADING_FONT'].font = Font.new(Font::MODERN, 'Franklin Gothic Medium')
styles['SUB_HEADING_FONT'].bold = true
styles['SUB_HEADING_FONT'].font_size = 18 * 2
styles['NAME'].font = Font.new(Font::MODERN, 'Franklin Gothic Medium')
styles['NAME'].bold = true
styles['NAME'].font_size = 12 * 2
styles['DESCRIPTION'].font = Font.new(Font::ROMAN, 'Garamond')
styles['DESCRIPTION'].bold = false
styles['DESCRIPTION'].font_size = 12 * 2
document.paragraph(styles['NULL']) do |n1|
n1.line_break
end
document.paragraph(styles['TOP_DOCUMENT']) do |n1|
n1.apply(styles['SUB_HEADING_FONT']) do |n2|
n2 << 'Välkomna!'
end
end
document.paragraph(styles['INTRODUCTION']) do |n1|
n1.apply(styles['DESCRIPTION']) do |n2|
n2 << welcome_text
end
end
CSV.foreach("list.tsv", :col_sep => "\t", :headers => true, :quote_char => '§') do |row|
p row
if table_starts.keys.include? row['Placering'].to_i
document.paragraph(styles['SUB_HEADING']) do |n1|
n1.apply(styles['SUB_HEADING_FONT']) do |n2|
puts row['Placering']
p table_starts
n2 << table_starts[row['Placering'].to_i]
end
end
end
document.paragraph(styles['PERSON']) do |n1|
n1.apply(styles['NAME']) do |n2|
n2 << row["Namn"]
n2 << "\u2002"
#n2 << " "
end
n1.apply(styles['DESCRIPTION']) do |n2|
n2 << row["Relation"].strip
n2 << "." unless row["Relation"].strip.end_with? '.'
n2 << " "
n2 << row["Fun facts"]
end
end
end
File.open('output.rtf', 'w') {|file| file.write(document.to_rtf)}
Namn Placering Relation Sysselsättning Fun facts
Arne Anka 1 Brudgummens kusin Statistiker Planerade som 8-åring hus på månen. Började sin yrkeskarriär med inköp av en Amiga 1000 som fortfarande står kvar på hedersplats i hemmet.
Sven Bromma 2 Brudens bror Lärare Utbildad förskolepedagog som övergick till tekniksektorn. Första kontakten med Sverige var Pippi Långstrump i tioårsåldern.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment