legal_beagle 0.0.1.a
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.md +0 -0
- data/lib/legal_beagle/converter.rb +28 -0
- data/lib/legal_beagle/info.rb +17 -0
- data/lib/legal_beagle/to_prawn.rb +104 -0
- data/lib/legal_beagle.rb +3 -0
- metadata +133 -0
data/README.md
ADDED
File without changes
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require 'pathname'
|
3
|
+
require 'legal_beagle/to_prawn'
|
4
|
+
|
5
|
+
module LegalBeagle
|
6
|
+
class Converter
|
7
|
+
include Jekyll::Convertible
|
8
|
+
|
9
|
+
attr_accessor :content, :data, :ext
|
10
|
+
|
11
|
+
def initialize(filename)
|
12
|
+
file = Pathname.new(filename)
|
13
|
+
self.ext = file.extname
|
14
|
+
self.content = file.read
|
15
|
+
read_yaml(file.dirname, file.basename)
|
16
|
+
end
|
17
|
+
|
18
|
+
def transform
|
19
|
+
Maruku.new(content).to_prawn(@pdf)
|
20
|
+
end
|
21
|
+
|
22
|
+
def render(pdf)
|
23
|
+
@pdf = pdf
|
24
|
+
self.content = Liquid::Template.parse(self.content).render(data, {})
|
25
|
+
self.transform
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module LegalBeagle
|
2
|
+
def self.name
|
3
|
+
"legal_beagle"
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.version
|
7
|
+
"0.0.1.a"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.summary
|
11
|
+
"A very primitive tool for doing legal documents by converting markdown to pdf."
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
"This tool was originally developed by Mashion.net for use in generating contracts and agreements. Hopefully it'll grow to somethign more useful eventually."
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'prawn'
|
2
|
+
|
3
|
+
module MaRuKu::Out::Prawn
|
4
|
+
def to_prawn(pdf)
|
5
|
+
@pdf = pdf
|
6
|
+
array_to_prawn(@children)
|
7
|
+
end
|
8
|
+
|
9
|
+
def array_to_prawn(children)
|
10
|
+
children.each do |c|
|
11
|
+
send("to_prawn_#{c.node_type}", c)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_prawn_ul(ul)
|
16
|
+
ul.children.each do |c|
|
17
|
+
to_prawn_li_span(c)
|
18
|
+
end
|
19
|
+
@pdf.text ' '
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_prawn_li_span(li)
|
23
|
+
if li.children.empty?
|
24
|
+
text = li.to_html
|
25
|
+
else
|
26
|
+
text = to_pdf_string(li.children)
|
27
|
+
end
|
28
|
+
|
29
|
+
@pdf.text " • " + text, :indent_paragraphs => 20
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_prawn_paragraph(para)
|
33
|
+
text = to_pdf_string(para.children)
|
34
|
+
@pdf.text text, :inline_format => true
|
35
|
+
@pdf.text ' '
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_pdf_string(children)
|
39
|
+
children.inject("") do |t, c|
|
40
|
+
if c.is_a? String
|
41
|
+
t + c
|
42
|
+
else
|
43
|
+
t + send("to_prawn_string_#{c.node_type}", c)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_prawn_string_emphasis(em)
|
49
|
+
"<em>#{to_pdf_string(em.children)}</em>"
|
50
|
+
end
|
51
|
+
|
52
|
+
def to_prawn_string_strong(strong)
|
53
|
+
"<strong>#{to_pdf_string(strong.children)}</strong>"
|
54
|
+
end
|
55
|
+
|
56
|
+
def entity_table
|
57
|
+
@table ||= {
|
58
|
+
"lsquo" => "‘",
|
59
|
+
"rsquo" => "’",
|
60
|
+
"ldquo" => "“",
|
61
|
+
"rdquo" => "”"
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def to_prawn_string_paragraph(para)
|
66
|
+
para.to_html
|
67
|
+
end
|
68
|
+
|
69
|
+
def to_prawn_string_entity(entity)
|
70
|
+
name = entity.entity_name
|
71
|
+
typographic = entity_table[name]
|
72
|
+
raise "I don't know how to make a typographic #{name}" unless typographic
|
73
|
+
typographic
|
74
|
+
end
|
75
|
+
|
76
|
+
# TODO find a less ghetto way to do leading-trailing margins
|
77
|
+
def to_prawn_header(header)
|
78
|
+
size = { 1 => 16, 2 => 12 }[header.level]
|
79
|
+
@pdf.text header.children.join("\n"), :size => size, :style => :bold
|
80
|
+
@pdf.text ' '
|
81
|
+
end
|
82
|
+
|
83
|
+
def to_prawn_div(div)
|
84
|
+
if div.attributes[:class] == "signature"
|
85
|
+
signature_name = div.children.map.join(" ")
|
86
|
+
@pdf.instance_eval do
|
87
|
+
text ' ', :size => 30
|
88
|
+
stroke_horizontal_line 0, 200
|
89
|
+
stroke_horizontal_line 250, 300
|
90
|
+
text ' ', :size => 4
|
91
|
+
text signature_name
|
92
|
+
draw_text "Date", :at => [250, y - bounds.absolute_bottom + 5]
|
93
|
+
text ' ', :size => 20
|
94
|
+
stroke_horizontal_line 0, 200
|
95
|
+
text ' ', :size => 4
|
96
|
+
text signature_name + " (Print)"
|
97
|
+
end
|
98
|
+
else
|
99
|
+
puts "Didn't write div to pdf: #{div.inspect}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
MaRuKu::MDElement.send(:include, MaRuKu::Out::Prawn)
|
data/lib/legal_beagle.rb
ADDED
metadata
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: legal_beagle
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 46
|
5
|
+
prerelease: true
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
- a
|
11
|
+
version: 0.0.1.a
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Mat Schaffer
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-10-14 00:00:00 -04:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: jekyll
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
- 7
|
34
|
+
- 0
|
35
|
+
version: 0.7.0
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: prawn
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 49
|
47
|
+
segments:
|
48
|
+
- 0
|
49
|
+
- 11
|
50
|
+
- 1
|
51
|
+
version: 0.11.1
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: rspec
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 3
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: mocha
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
version: "0"
|
80
|
+
type: :development
|
81
|
+
version_requirements: *id004
|
82
|
+
description: This tool was originally developed by Mashion.net for use in generating contracts and agreements. Hopefully it'll grow to somethign more useful eventually.
|
83
|
+
email: mat@mashion.net
|
84
|
+
executables: []
|
85
|
+
|
86
|
+
extensions: []
|
87
|
+
|
88
|
+
extra_rdoc_files: []
|
89
|
+
|
90
|
+
files:
|
91
|
+
- README.md
|
92
|
+
- lib/legal_beagle/converter.rb
|
93
|
+
- lib/legal_beagle/info.rb
|
94
|
+
- lib/legal_beagle/to_prawn.rb
|
95
|
+
- lib/legal_beagle.rb
|
96
|
+
has_rdoc: true
|
97
|
+
homepage: http://github.com/mashion/legal_beagle
|
98
|
+
licenses: []
|
99
|
+
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
|
103
|
+
require_paths:
|
104
|
+
- lib
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 25
|
120
|
+
segments:
|
121
|
+
- 1
|
122
|
+
- 3
|
123
|
+
- 1
|
124
|
+
version: 1.3.1
|
125
|
+
requirements: []
|
126
|
+
|
127
|
+
rubyforge_project: nowarning
|
128
|
+
rubygems_version: 1.3.7
|
129
|
+
signing_key:
|
130
|
+
specification_version: 3
|
131
|
+
summary: A very primitive tool for doing legal documents by converting markdown to pdf.
|
132
|
+
test_files: []
|
133
|
+
|