dinbrief 0.0.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +32 -4
- data/dinbrief.gemspec +4 -4
- data/example/more_serious.rb +1 -0
- data/lib/dinbrief/letter/constants.rb +1 -0
- data/lib/dinbrief/letter/typeset_methods.rb +22 -10
- data/lib/dinbrief/letter.rb +22 -10
- data/lib/dinbrief/letter_builder.rb +4 -0
- data/lib/dinbrief/version.rb +1 -1
- metadata +9 -9
data/README.textile
CHANGED
@@ -2,7 +2,7 @@ h1. DIN Brief gem for prawn.
|
|
2
2
|
|
3
3
|
h2. Mission Objective
|
4
4
|
|
5
|
-
This gem tries to make producing letters from Ruby apps simpler. The resulting letter mostly meet the <a href="http://de.wikipedia.org/wiki/DIN_5008" target="_blank">DIN
|
5
|
+
This gem tries to make producing letters from Ruby apps simpler. The resulting letter mostly meet the <a href="http://de.wikipedia.org/wiki/DIN_5008" target="_blank">DIN 5008</a> standard.
|
6
6
|
|
7
7
|
It is (mainly) a semantic DSL on top of <a href="http://prawn.majesticseacreature.com/" target="_blank">Prawn 1.x</a>.
|
8
8
|
|
@@ -115,9 +115,37 @@ But, as always, things may be more complicated, and you may want to add fancy pd
|
|
115
115
|
|
116
116
|
The result then looks a little bit like this:
|
117
117
|
|
118
|
-
<img src="https://github.com/
|
118
|
+
<img src="https://github.com/metaminded/dinbrief/raw/master/example/example.png" />
|
119
119
|
|
120
|
-
|
120
|
+
If you're unhappy with the default info block, you may call <tt>info</tt> giving either a string:
|
121
|
+
|
122
|
+
<pre>
|
123
|
+
MyLetter.letter('more_serious.pdf') do |db|
|
124
|
+
db.return_address 'metaminded UG – Ulmer Straße 176 – 73233 Aalen'
|
125
|
+
db.subject "Thanks a lot for giving us Rails"
|
126
|
+
db.info "Thing: something\nStuff: somestuff"
|
127
|
+
...
|
128
|
+
</pre>
|
129
|
+
|
130
|
+
or – even more advanced – a block as with the <tt>body</tt> method:
|
131
|
+
|
132
|
+
<pre>
|
133
|
+
MyLetter.letter('more_serious.pdf') do |db|
|
134
|
+
db.return_address 'metaminded UG – Ulmer Straße 176 – 73233 Aalen'
|
135
|
+
db.subject "Thanks a lot for giving us Rails"
|
136
|
+
db.info do |box|
|
137
|
+
4.times do |i|
|
138
|
+
box.text "Line #{i}", size: 10.pt
|
139
|
+
end
|
140
|
+
end
|
141
|
+
...
|
142
|
+
</pre>
|
143
|
+
|
144
|
+
inside the block, you may use virtually every prawn method. If <tt>info</tt> is given, all other info-methods (as <tt>yourmessage</tt>, <tt>oursign</tt> and the like) are disabled.
|
145
|
+
|
146
|
+
h2.
|
147
|
+
|
148
|
+
Almost every property (positions, sizes, fontsizes, ...) of an element is defined in <tt>lib/dinbrief/letter/constants.rb</tt>, and can be overridden in your subclass.
|
121
149
|
|
122
150
|
h2. Disclaimer
|
123
151
|
|
@@ -128,7 +156,7 @@ Nevertheless, bug reports and improvements are highly appreciated:
|
|
128
156
|
h2. Contributing to dinbrief
|
129
157
|
|
130
158
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
131
|
-
* Check out the <a href="https://github.com/
|
159
|
+
* Check out the <a href="https://github.com/metaminded/dinbrief/issues">issue tracker</a> to make sure someone already hasn't requested it and/or contributed it
|
132
160
|
* Fork the project
|
133
161
|
* Start a feature/bugfix branch
|
134
162
|
* Commit and push until you are happy with your contribution
|
data/dinbrief.gemspec
CHANGED
@@ -5,11 +5,11 @@ require "dinbrief/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "dinbrief"
|
7
7
|
s.version = Dinbrief::VERSION
|
8
|
-
s.authors = ["Peter Horn"]
|
9
|
-
s.email = ["peter.horn@
|
10
|
-
s.homepage = ""
|
8
|
+
s.authors = ["Peter Horn, metaminded"]
|
9
|
+
s.email = ["peter.horn@metaminded.com"]
|
10
|
+
s.homepage = "http://github.com/metaminded/dinbrief"
|
11
11
|
s.summary = %q{DIN Letter gem for Prawn}
|
12
|
-
s.description = %q{DIN Brief gem for Prawn. Creating letters that confirm to the DIN specifications.
|
12
|
+
s.description = %q{DIN Brief gem for Prawn. Creating letters that confirm to the DIN 5008 specifications.}
|
13
13
|
|
14
14
|
s.rubyforge_project = "dinbrief"
|
15
15
|
|
data/example/more_serious.rb
CHANGED
@@ -55,6 +55,7 @@ MyLetter.letter('more_serious.pdf') do |db|
|
|
55
55
|
db.email "ph@metaminded.com"
|
56
56
|
db.address "David Heinemeier-Hansson\n37signals, LLC\n30 North Racine Avenue #200\nChicago, Illinois 60607\nUSA"
|
57
57
|
db.subject "Thanks a lot for giving us Rails"
|
58
|
+
# db.info do |box| 4.times do |i| box.text "Line #{i}", size: 10.pt end end
|
58
59
|
db.body do |letter|
|
59
60
|
letter.text %{Dear David and all you colleagues,
|
60
61
|
|
@@ -5,16 +5,28 @@ class Dinbrief::Letter
|
|
5
5
|
# typeset info block (sign, name, phone...)
|
6
6
|
#
|
7
7
|
def typeset_info
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
bounding_box([info_block_x, info_block_y],
|
9
|
+
:width => info_block_width,
|
10
|
+
:height => info_block_height
|
11
|
+
) do
|
12
|
+
#stroke_bounds
|
13
|
+
i = lb_get(:info)
|
14
|
+
case i
|
15
|
+
when String
|
16
|
+
text i, :size => info_block_fontsize
|
17
|
+
when Proc
|
18
|
+
i.(self)
|
19
|
+
else
|
20
|
+
info = [:yoursign, :yourmessage, :oursign, :ourmessage,
|
21
|
+
:name, :phone, :fax, :email].map do |nam|
|
22
|
+
iv = lb_get nam
|
23
|
+
iv ? "#{InfoTranslations[nam]}: #{iv}" : nil
|
24
|
+
end.compact.join("\n")
|
25
|
+
return unless info
|
26
|
+
text info,
|
27
|
+
:size => info_block_fontsize
|
28
|
+
end
|
29
|
+
end
|
18
30
|
date = lb_get(:date) || Time.now.strftime("%d.%m.%Y")
|
19
31
|
text_box("#{InfoTranslations[:date]}: #{date}",
|
20
32
|
:at => [date_x, date_y],
|
data/lib/dinbrief/letter.rb
CHANGED
@@ -4,20 +4,32 @@ module Dinbrief
|
|
4
4
|
|
5
5
|
class Letter < Prawn::Document
|
6
6
|
|
7
|
-
def self.letter(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
def self.letter(pdf_or_filename, options={}, &block)
|
8
|
+
case pdf_or_filename
|
9
|
+
when Dinbrief::Letter
|
10
|
+
make_letter(pdf_or_filename, &block)
|
11
|
+
pdf_or_filename
|
12
|
+
when Prawn::Document
|
13
|
+
raise "Give an instance of Dinbrief::Letter to letter method."
|
14
|
+
when String
|
15
|
+
self.generate(pdf_or_filename, DocumentDefaults.merge(options)) do |pdf|
|
16
|
+
make_letter(pdf, &block)
|
15
17
|
end
|
16
|
-
letter.typeset_body
|
17
|
-
letter.add_page_numbers
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
def self.make_letter(letter, &block)
|
22
|
+
yield(letter.letter_builder)
|
23
|
+
letter.meta_header()
|
24
|
+
letter.meta_footer()
|
25
|
+
letter.methods.map(&:to_s).select{|m|m.start_with?("typeset_")}.each do |m|
|
26
|
+
next if m=='typeset_body'
|
27
|
+
letter.send(m)
|
28
|
+
end
|
29
|
+
letter.typeset_body
|
30
|
+
letter.add_page_numbers
|
31
|
+
end
|
32
|
+
|
21
33
|
def add_page_numbers
|
22
34
|
if show_page_numbers?
|
23
35
|
number_pages page_numbering_string, {
|
data/lib/dinbrief/version.rb
CHANGED
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dinbrief
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
- Peter Horn
|
8
|
+
- Peter Horn, metaminded
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: prawn
|
16
|
-
requirement: &
|
16
|
+
requirement: &70351984540660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,11 +21,11 @@ dependencies:
|
|
21
21
|
version: 1.0.0.rc1
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
description: DIN Brief gem for Prawn. Creating letters that confirm to the DIN
|
26
|
-
|
24
|
+
version_requirements: *70351984540660
|
25
|
+
description: DIN Brief gem for Prawn. Creating letters that confirm to the DIN 5008
|
26
|
+
specifications.
|
27
27
|
email:
|
28
|
-
- peter.horn@
|
28
|
+
- peter.horn@metaminded.com
|
29
29
|
executables: []
|
30
30
|
extensions: []
|
31
31
|
extra_rdoc_files: []
|
@@ -47,7 +47,7 @@ files:
|
|
47
47
|
- lib/dinbrief/letter/typeset_methods.rb
|
48
48
|
- lib/dinbrief/letter_builder.rb
|
49
49
|
- lib/dinbrief/version.rb
|
50
|
-
homepage:
|
50
|
+
homepage: http://github.com/metaminded/dinbrief
|
51
51
|
licenses: []
|
52
52
|
post_install_message:
|
53
53
|
rdoc_options: []
|