ydl 0.2.06
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.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +83 -0
- data/README.org +208 -0
- data/Rakefile +6 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/examples/brief.tex +43 -0
- data/examples/cases.ydl +79 -0
- data/examples/header.rb +12 -0
- data/examples/lawyers.ydl +65 -0
- data/examples/mwe.tex +67 -0
- data/examples/persons.ydl +10 -0
- data/examples/simple.tex +23 -0
- data/examples/test_page.tex +76 -0
- data/lib/ydl/core_ext/array.rb +6 -0
- data/lib/ydl/core_ext/array_refine.rb +16 -0
- data/lib/ydl/core_ext/boolean.rb +13 -0
- data/lib/ydl/core_ext/date.rb +6 -0
- data/lib/ydl/core_ext/hash.rb +16 -0
- data/lib/ydl/core_ext/numeric.rb +6 -0
- data/lib/ydl/core_ext/string.rb +16 -0
- data/lib/ydl/core_ext.rb +7 -0
- data/lib/ydl/errors.rb +5 -0
- data/lib/ydl/node.rb +190 -0
- data/lib/ydl/top_queue.rb +40 -0
- data/lib/ydl/tree.rb +95 -0
- data/lib/ydl/version.rb +3 -0
- data/lib/ydl/ydl.rb +244 -0
- data/lib/ydl.rb +15 -0
- data/spec/array_spec.rb +14 -0
- data/spec/core_ext/array_spec.rb +23 -0
- data/spec/core_ext/boolean_spec.rb +10 -0
- data/spec/core_ext/date_spec.rb +9 -0
- data/spec/core_ext/hash_spec.rb +19 -0
- data/spec/core_ext/numeric_spec.rb +13 -0
- data/spec/core_ext/string_spec.rb +27 -0
- data/spec/example_files/err/person_err.ydl +6 -0
- data/spec/example_files/home/user/.ydl/config_template.yaml +40 -0
- data/spec/example_files/home/user/.ydl/courts/courts.ydl +28 -0
- data/spec/example_files/home/user/.ydl/lawyers.ydl +40 -0
- data/spec/example_files/home/user/.ydl/persons.ydl +9 -0
- data/spec/example_files/home/user/project/cases.ydl +59 -0
- data/spec/example_files/home/user/project/courts.ydl +7 -0
- data/spec/example_files/home/user/project/judges.ydl +27 -0
- data/spec/example_files/home/user/project/lawyers.ydl +52 -0
- data/spec/example_files/home/user/project/persons.ydl +5 -0
- data/spec/example_files/home/user/project/subproject/lawyers.ydl +85 -0
- data/spec/example_files/home/user/project/subproject/persons.ydl +55 -0
- data/spec/example_files/sys/ydl/constants.ydl +1 -0
- data/spec/example_files/sys/ydl/junk.ydl +1 -0
- data/spec/spec_helper.rb +55 -0
- data/spec/ydl_error_spec.rb +15 -0
- data/spec/ydl_spec.rb +184 -0
- data/yaml_v_psych.rb +15 -0
- data/ydl.gemspec +40 -0
- metadata +230 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65a1dba2219dd34c0d14ae1bd509e453b4b9f4edb2965320150bc9a40b612887
|
4
|
+
data.tar.gz: 938b868e021730cf50941ec0dc4af022911e550db5b814f32782bc52b079cb40
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 83500294f866584f4a2b0c0800104a2b961629e436239a5d61a11b19c3d55d3f950a4f3ac67ec70b2c357c437e45c94eb4128a9d57cd9a9e0233b36ec122089d
|
7
|
+
data.tar.gz: 9cd25bae84a0241f5f37a4c6bf3430f653d0140ee049c0354599dbd066626b503da4a0a34fd5615b1e568945691ff68bd400050656e43a2a9855c9e0c649d809
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/_yardoc/
|
4
|
+
/coverage/
|
5
|
+
/doc/
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/tmp/
|
9
|
+
|
10
|
+
# rspec failure tracking
|
11
|
+
.rspec_status
|
12
|
+
/GPATH
|
13
|
+
/GRTAGS
|
14
|
+
/GTAGS
|
15
|
+
*synctex.gz
|
16
|
+
examples/*.idx
|
17
|
+
examples/*.ilg
|
18
|
+
examples/*.ind
|
19
|
+
examples/*.pdf
|
20
|
+
examples/_region_*
|
21
|
+
/examples/brief.out
|
22
|
+
.local/
|
23
|
+
.lesshst
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ydl (0.2.06)
|
5
|
+
activesupport (~> 6.0)
|
6
|
+
fat_core
|
7
|
+
psych
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (6.1.4.4)
|
13
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
|
+
i18n (>= 1.6, < 2)
|
15
|
+
minitest (>= 5.1)
|
16
|
+
tzinfo (~> 2.0)
|
17
|
+
zeitwerk (~> 2.3)
|
18
|
+
coderay (1.1.3)
|
19
|
+
concurrent-ruby (1.1.9)
|
20
|
+
damerau-levenshtein (1.3.3)
|
21
|
+
debug (1.4.0)
|
22
|
+
irb (>= 1.3.6)
|
23
|
+
reline (>= 0.2.7)
|
24
|
+
diff-lcs (1.5.0)
|
25
|
+
fat_core (4.9.2)
|
26
|
+
activesupport
|
27
|
+
damerau-levenshtein
|
28
|
+
i18n (1.8.11)
|
29
|
+
concurrent-ruby (~> 1.0)
|
30
|
+
io-console (0.5.11)
|
31
|
+
irb (1.4.1)
|
32
|
+
reline (>= 0.3.0)
|
33
|
+
law_doc (0.1.15)
|
34
|
+
activesupport (~> 6.0)
|
35
|
+
fat_core
|
36
|
+
method_source (1.0.0)
|
37
|
+
minitest (5.15.0)
|
38
|
+
pry (0.14.1)
|
39
|
+
coderay (~> 1.1)
|
40
|
+
method_source (~> 1.0)
|
41
|
+
pry-doc (1.2.0)
|
42
|
+
pry (~> 0.11)
|
43
|
+
yard (~> 0.9.11)
|
44
|
+
psych (4.0.3)
|
45
|
+
stringio
|
46
|
+
rake (13.0.6)
|
47
|
+
reline (0.3.1)
|
48
|
+
io-console (~> 0.5)
|
49
|
+
rspec (3.10.0)
|
50
|
+
rspec-core (~> 3.10.0)
|
51
|
+
rspec-expectations (~> 3.10.0)
|
52
|
+
rspec-mocks (~> 3.10.0)
|
53
|
+
rspec-core (3.10.1)
|
54
|
+
rspec-support (~> 3.10.0)
|
55
|
+
rspec-expectations (3.10.1)
|
56
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
57
|
+
rspec-support (~> 3.10.0)
|
58
|
+
rspec-mocks (3.10.2)
|
59
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
+
rspec-support (~> 3.10.0)
|
61
|
+
rspec-support (3.10.3)
|
62
|
+
stringio (3.0.1)
|
63
|
+
tzinfo (2.0.4)
|
64
|
+
concurrent-ruby (~> 1.0)
|
65
|
+
webrick (1.7.0)
|
66
|
+
yard (0.9.27)
|
67
|
+
webrick (~> 1.7.0)
|
68
|
+
zeitwerk (2.5.3)
|
69
|
+
|
70
|
+
PLATFORMS
|
71
|
+
ruby
|
72
|
+
|
73
|
+
DEPENDENCIES
|
74
|
+
debug (>= 1.0.0)
|
75
|
+
law_doc (>= 0.1.15)
|
76
|
+
pry
|
77
|
+
pry-doc
|
78
|
+
rake
|
79
|
+
rspec (~> 3.0)
|
80
|
+
ydl!
|
81
|
+
|
82
|
+
BUNDLED WITH
|
83
|
+
2.3.4
|
data/README.org
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
* Ydl
|
2
|
+
|
3
|
+
Ydl provides a way to supply a ruby app with initialized objects by allowing
|
4
|
+
the user to supply the data about the objects in a hierarchical series of
|
5
|
+
"data definition files" with the extension ~.ydl~. In particular, the ~ydl~
|
6
|
+
command ~Ydl.load~ finds all files with the extension ~.ydl~ in the following
|
7
|
+
locations and uses the data in them to instantiate ~Ruby~ objects:
|
8
|
+
|
9
|
+
1. all ~.ydl~ files a configurable system-wide directory, by default ~/etc/ydl~
|
10
|
+
2. all ~.ydl~ files in the user's directory ~/home/user/.ydl~ and all
|
11
|
+
directories under that directory, recursively, and
|
12
|
+
3. all ~.ydl~ files in each directory starting at the user's home directory
|
13
|
+
(or the root directory if the current directory is not directly or
|
14
|
+
indirectly underneath the user's home directory) and continuing to the
|
15
|
+
current working directory,
|
16
|
+
|
17
|
+
After calling ~Ydl.load~, you can access all the objects described by the
|
18
|
+
~.ydl~ files from a hierarchical tree of nested hashes via the global hash
|
19
|
+
Ydl.data[<key] (or, more concisely, ~Ydl[<key]~).
|
20
|
+
|
21
|
+
The ~.ydl~ files are in YAML format, with a couple of twists. One twist is
|
22
|
+
that you can use cross-references of the form ~ydl:/path/to/other/node~ to set
|
23
|
+
the value of one node to its value at another place in the data hierarchy. The
|
24
|
+
second twist is that nodes having names of classes that you specify in your
|
25
|
+
config are automatically instantiated into Ruby objects of that class and made
|
26
|
+
available in the ~ydl~ data tree.
|
27
|
+
|
28
|
+
** Installation
|
29
|
+
|
30
|
+
Add this line to your application's Gemfile:
|
31
|
+
#+BEGIN_SRC ruby
|
32
|
+
gem 'ydl'
|
33
|
+
#+END_SRC
|
34
|
+
|
35
|
+
And then execute:
|
36
|
+
|
37
|
+
#+BEGIN_SRC shell
|
38
|
+
$ bundle
|
39
|
+
#+END_SRC
|
40
|
+
|
41
|
+
Or install it yourself as:
|
42
|
+
|
43
|
+
#+BEGIN_SRC shell
|
44
|
+
$ gem install ydl
|
45
|
+
#+END_SRC
|
46
|
+
|
47
|
+
** Usage
|
48
|
+
|
49
|
+
Ydl allows you to build a Hash, available as ~Ydl.data~, containing all the
|
50
|
+
items defined in the data definition files:
|
51
|
+
|
52
|
+
#+BEGIN_SRC ruby
|
53
|
+
require 'ydl'
|
54
|
+
|
55
|
+
Ydl.load
|
56
|
+
Ydl.data.class #=> Hash
|
57
|
+
Ydl.data[:persons] #=> { joe: {....}, mary: {....} }
|
58
|
+
Ydl.data[:lawyers] #=> { anne: {....}, will: {....} }
|
59
|
+
#+END_SRC
|
60
|
+
|
61
|
+
You can load only files with a given base name. ~Ydl.load~ then returns a Hash
|
62
|
+
just of the objects from files with the given base name, but also adds them to
|
63
|
+
the global ~Ydl.data~ variable as well.
|
64
|
+
|
65
|
+
#+BEGIN_SRC ruby
|
66
|
+
require 'ydl'
|
67
|
+
|
68
|
+
people = Ydl.load('persons')
|
69
|
+
people.class #=> Hash
|
70
|
+
people #=> { joe: {....}, mary: {....} }
|
71
|
+
people[:joe].class #=> Person
|
72
|
+
Ydl.data[:persons][:joe].class #=> Person
|
73
|
+
|
74
|
+
lawyers = Ydl.load('lawyers')
|
75
|
+
lawyers.class #=> Hash
|
76
|
+
lawyers #=> { will: {....}, anne: {....} }
|
77
|
+
lawyers[:will].class #=> Lawyer
|
78
|
+
Ydl.data[:lawyers][:will].class #=> Lawyer
|
79
|
+
#+END_SRC
|
80
|
+
|
81
|
+
*** Data Definition Files
|
82
|
+
|
83
|
+
The data definition files have the extension ~.ydl~ and are read from the
|
84
|
+
following places:
|
85
|
+
|
86
|
+
- from a system wide directory that is by default, ~/etc/ydl~, including all its
|
87
|
+
subdirectories,
|
88
|
+
- from a user-specific directory in the user's HOME directory that is by
|
89
|
+
default, =~/.ydl=, including all its subdirectories,
|
90
|
+
- in the current working directory and all directories above the current
|
91
|
+
directory up to the user's home directory or the root directory, whichever it
|
92
|
+
hits first.
|
93
|
+
|
94
|
+
The data definitions are read in the same order given above, except that the
|
95
|
+
third category reads files in the HOME directory first, then in each directory
|
96
|
+
from there to the current directory in order. In other words, directories closer
|
97
|
+
to the current directory take priority over those higher up in the directory
|
98
|
+
hierarchy.
|
99
|
+
|
100
|
+
In each case, all files with the extension '.ydl' are read and /only/ those
|
101
|
+
files. Definitions in files read later are merged into those read earlier,
|
102
|
+
overwriting any data having the same key or appending to array data having the
|
103
|
+
same key.
|
104
|
+
|
105
|
+
The base name of each file is used as an outer key for the contents of the file.
|
106
|
+
For example, a file ~'persons.ydl'~ in the current directory will be treated as
|
107
|
+
the value of a Hash with the key ~:persons~.
|
108
|
+
|
109
|
+
*** Automatic Instantiation of Classes
|
110
|
+
|
111
|
+
If, when the files are read in, there is a class whose name is the camelized and
|
112
|
+
singularized version of a hash key, and if the value of that key is itself a
|
113
|
+
hash, an instance of the class is initialized using the hash values as
|
114
|
+
initializers. So if there is a class defined whose last component is Person, the
|
115
|
+
contents of the file ~person.ydl~ will instantiate objects of that class. This
|
116
|
+
process is recursive, so values that are hashes with keys matching class names
|
117
|
+
are instantiated as well. If there is more than one such class, an exception is
|
118
|
+
raised.
|
119
|
+
|
120
|
+
You can restrict the classes searched for by setting the ~class_modules~ config
|
121
|
+
setting to a string or a list of strings of class prefixes to be consulted. If
|
122
|
+
~class_modules~ is set to 'Company::Engineers', only the class
|
123
|
+
~Company::Engineers::Person~ will be instantiated for objects under the
|
124
|
+
~:persons~ hierarchy. By default all modules will be consulted.
|
125
|
+
|
126
|
+
In order for this to work, the initialize method for the classes must be able to
|
127
|
+
take a Hash as an argument to ~.new~. A different initializer method can be
|
128
|
+
specified for each class with the ~class_init~ option in the configuration file.
|
129
|
+
|
130
|
+
If no class is found, the item is left as a Hash.
|
131
|
+
|
132
|
+
*** Cross References
|
133
|
+
|
134
|
+
String values can have the form ~ydl:/person/smith/address/city~ or
|
135
|
+
~ydl:person/smith/address/city~ (the presence of the leading '/' is optional
|
136
|
+
and has no meaning), that is, the 'ydl:' specifier followed by a "data path",
|
137
|
+
much like a file name path, will, upon resolution, look up the value of the
|
138
|
+
given item and return it as the value of that element. Resolution of ~ydl:~
|
139
|
+
elements is deferred until all files have been read in so that forward
|
140
|
+
references are possible. However, ~Ydl~ will not look outside the files being
|
141
|
+
loaded to find a cross-reference, so if you selectively load files, you may
|
142
|
+
not be able to resolve some cross-references. Circular cross-references raise
|
143
|
+
a ~Ydl::CircularReference~ error.
|
144
|
+
|
145
|
+
*** Configuration
|
146
|
+
|
147
|
+
Ydl looks for a configuration file in ~.ydl/config.yaml~ of your ~HOME~
|
148
|
+
directory. Here is the sample configuration that explains the options
|
149
|
+
available:
|
150
|
+
|
151
|
+
#+BEGIN_EXAMPLE
|
152
|
+
# You can set the system-wide ydl directory here; otherwise it defaults to
|
153
|
+
# /usr/local/share/ydl.
|
154
|
+
|
155
|
+
# system_ydl_dir: /usr/local/share/ydl
|
156
|
+
|
157
|
+
# For automatic instantiation, search for classes prefixed by the given modules
|
158
|
+
# in the order given. For example, if the key 'breed' is to be instantiated, you
|
159
|
+
# can restrict the search for classes named 'Breed' only in modules, 'Dog' and
|
160
|
+
# 'Cat' with this:
|
161
|
+
#
|
162
|
+
# class_modules:
|
163
|
+
# - Dog
|
164
|
+
# - Cat
|
165
|
+
#
|
166
|
+
# then, only Dog::Breed and Cat::Breed will be searched for an existing breed
|
167
|
+
# class. Otherwise, any class ending in Breed could be used, and they will be
|
168
|
+
# searched in alphabetical order, and the first found will be used.
|
169
|
+
#
|
170
|
+
# A blank value means to consider classes in the main, global module level. You
|
171
|
+
# can always disambiguate the class selected with the class_map option below.
|
172
|
+
|
173
|
+
class_modules:
|
174
|
+
-
|
175
|
+
- LawDoc
|
176
|
+
- Company::Employee
|
177
|
+
|
178
|
+
# By default, each key will be camelized and singularized to find the matching
|
179
|
+
# class. So, the key 'dogs' will look for a class named 'Dog', and 'dog_faces'
|
180
|
+
# will look for a class 'DogFace'. You can override this heuristic here by
|
181
|
+
# saying exactly which class a given key should map to.
|
182
|
+
class_map:
|
183
|
+
address: LawDoc::Address
|
184
|
+
persons: LawDoc::Person
|
185
|
+
fax: LawDoc::Phone
|
186
|
+
|
187
|
+
# Specify constructors for classes whose .new method will not take a Hash as an
|
188
|
+
# argument to initialize the class.
|
189
|
+
class_init:
|
190
|
+
LawDoc::Person: from_hash
|
191
|
+
#+END_EXAMPLE
|
192
|
+
|
193
|
+
** Development
|
194
|
+
|
195
|
+
After checking out the repo, run ~bin/setup~ to install dependencies. Then, run
|
196
|
+
~rake spec~ to run the tests. You can also run ~bin/console~ for an interactive
|
197
|
+
prompt that will allow you to experiment.
|
198
|
+
|
199
|
+
To install this gem onto your local machine, run ~bundle exec rake install~. To
|
200
|
+
release a new version, update the version number in ~version.rb~, and then run
|
201
|
+
~bundle exec rake release~, which will create a git tag for the version, push
|
202
|
+
git commits and tags, and push the ~.gem~ file to
|
203
|
+
[rubygems.org](https://rubygems.org).
|
204
|
+
|
205
|
+
** Contributing
|
206
|
+
|
207
|
+
Bug reports and pull requests are welcome on GitHub at
|
208
|
+
https://github.com/ddoherty03/ydl.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'ydl'
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require 'pry'
|
11
|
+
Pry.start
|
data/bin/setup
ADDED
data/examples/brief.tex
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
\documentclass[sign]{lawdoc}
|
2
|
+
|
3
|
+
{: require 'law_doc' :}
|
4
|
+
|
5
|
+
{:=
|
6
|
+
LawDoc.document do
|
7
|
+
title 'Brief in Support of Plaintiff\'s Motion for Summary Judgment'
|
8
|
+
kase Ydl[:cases][:erickson]
|
9
|
+
on_behalf_of 'plaintiffs'
|
10
|
+
signers Ydl[:lawyers][:ded], Ydl[:lawyers][:cjh]
|
11
|
+
sig_date '2015-11-20'
|
12
|
+
server signer
|
13
|
+
service_date sig_date
|
14
|
+
end
|
15
|
+
:}
|
16
|
+
|
17
|
+
% \overfullrule=10pt
|
18
|
+
% \geometry{showframe}
|
19
|
+
\begin{document}
|
20
|
+
\maketitlepage
|
21
|
+
|
22
|
+
\makefullcaption
|
23
|
+
|
24
|
+
\makecaption
|
25
|
+
|
26
|
+
\section{Our Lawyers}
|
27
|
+
|
28
|
+
\makeourlawyersblock
|
29
|
+
|
30
|
+
\section{Their Lawyers}
|
31
|
+
|
32
|
+
\maketheirlawyersblock
|
33
|
+
|
34
|
+
\section{Full Signature}
|
35
|
+
|
36
|
+
\makefullsignature
|
37
|
+
|
38
|
+
\section{Signature}
|
39
|
+
|
40
|
+
\makesignature
|
41
|
+
|
42
|
+
\makecertificateofservice
|
43
|
+
\end{document}
|
data/examples/cases.ydl
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
erickson:
|
2
|
+
court: ydl:/courts/sdny
|
3
|
+
judge: ydl:/judges/forrest
|
4
|
+
number: 14-CV-09061
|
5
|
+
parties:
|
6
|
+
-
|
7
|
+
person: ydl:/persons/lag
|
8
|
+
role: Plaintiff
|
9
|
+
lawyer:
|
10
|
+
- ydl:/lawyers/ded
|
11
|
+
- ydl:/lawyers/cjh
|
12
|
+
-
|
13
|
+
person: ydl:/persons/revive
|
14
|
+
role: Plaintiff
|
15
|
+
lawyer:
|
16
|
+
- ydl:/lawyers/ded
|
17
|
+
- ydl:/lawyers/cjh
|
18
|
+
-
|
19
|
+
person: ydl:/persons/erickson
|
20
|
+
role: Nominal Defendant
|
21
|
+
lawyers:
|
22
|
+
- ydl:/lawyers/dclarke
|
23
|
+
- ydl:/lawyers/jclarke
|
24
|
+
-
|
25
|
+
name: Quinn Morgan
|
26
|
+
role: Defendant
|
27
|
+
address:
|
28
|
+
street:
|
29
|
+
- 60 East 42nd Street
|
30
|
+
- Suite 1400
|
31
|
+
city: New York
|
32
|
+
state: NY
|
33
|
+
zip: 10165
|
34
|
+
lawyers:
|
35
|
+
- ydl:/lawyers/rjones
|
36
|
+
- ydl:/lawyers/mcrisp
|
37
|
+
- ydl:/lawyers/tfarrell
|
38
|
+
-
|
39
|
+
name: ZM Private Equity Fund I
|
40
|
+
role: Defendant
|
41
|
+
address:
|
42
|
+
street:
|
43
|
+
- c/o Corporation Service Company
|
44
|
+
- 2711 Centerville Rd, Suite 400
|
45
|
+
city: Wilmington
|
46
|
+
state: DE
|
47
|
+
zip: 19808
|
48
|
+
lawyers:
|
49
|
+
- ydl:/lawyers/rjones
|
50
|
+
- ydl:/lawyers/mcrisp
|
51
|
+
- ydl:/lawyers/tfarrell
|
52
|
+
-
|
53
|
+
name: ZM Private Equity Fund II
|
54
|
+
role: Defendant
|
55
|
+
address:
|
56
|
+
street:
|
57
|
+
- c/o Corporation Service Company
|
58
|
+
- 2711 Centerville Rd, Suite 400
|
59
|
+
city: Wilmington
|
60
|
+
state: DE
|
61
|
+
zip: 19808
|
62
|
+
lawyers:
|
63
|
+
- ydl:/lawyers/rjones
|
64
|
+
- ydl:/lawyers/mcrisp
|
65
|
+
- ydl:/lawyers/tfarrell
|
66
|
+
-
|
67
|
+
name: ZM EAC LLC
|
68
|
+
role: Defendant
|
69
|
+
address:
|
70
|
+
street:
|
71
|
+
- 60 East 42nd Street
|
72
|
+
- Suite 1400
|
73
|
+
city: New York
|
74
|
+
state: NY
|
75
|
+
zip: 10165
|
76
|
+
lawyers:
|
77
|
+
- ydl:/lawyers/rjones
|
78
|
+
- ydl:/lawyers/mcrisp
|
79
|
+
- ydl:/lawyers/tfarrell
|
data/examples/header.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'law_doc'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
LawDoc.document do
|
5
|
+
title 'Brief in Support of Plaintiff\'s Motion for Summary Judgment'
|
6
|
+
kase Ydl[:cases][:erickson]
|
7
|
+
on_behalf_of 'plaintiffs', 'nominal'
|
8
|
+
signer Ydl[:lawyers][:ded]
|
9
|
+
sig_date '2015-11-20'
|
10
|
+
server signer
|
11
|
+
service_date sig_date
|
12
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
dclarke:
|
2
|
+
name: David Clarke
|
3
|
+
sex: male
|
4
|
+
address:
|
5
|
+
street:
|
6
|
+
- DLA Piper LLP (US)
|
7
|
+
- 500 Eighth Street NW
|
8
|
+
city: Washington
|
9
|
+
state: DC
|
10
|
+
zip: 20004
|
11
|
+
email: david.clarke@dlapiper.com
|
12
|
+
|
13
|
+
jclarke:
|
14
|
+
name: John J. Clarke
|
15
|
+
sex: male
|
16
|
+
address:
|
17
|
+
street:
|
18
|
+
- DLA Piper LLP (US)
|
19
|
+
- 1251 Avenue of the Americas
|
20
|
+
city: New York
|
21
|
+
state: NY
|
22
|
+
zip: 10020
|
23
|
+
email: john.clarke@dlapiper.com
|
24
|
+
|
25
|
+
rjones:
|
26
|
+
sex: male
|
27
|
+
name: Robert G. Jones
|
28
|
+
address:
|
29
|
+
street:
|
30
|
+
- Ropes & Gray LLP
|
31
|
+
- 800 Boylston Street
|
32
|
+
city: Boston
|
33
|
+
state: MA
|
34
|
+
zip: 02199
|
35
|
+
phone: 617-951-7000
|
36
|
+
fax: 617-951-7050
|
37
|
+
email: robert.jones@ropesgray.com
|
38
|
+
|
39
|
+
mcrisp:
|
40
|
+
sex: male
|
41
|
+
name: Martin J. Crisp
|
42
|
+
address:
|
43
|
+
street:
|
44
|
+
- Ropes & Gray LLP
|
45
|
+
- 1211 Avenue of the Americas
|
46
|
+
city: New York
|
47
|
+
state: NY
|
48
|
+
zip: 10036-8704
|
49
|
+
phone: 212-596-9000
|
50
|
+
fax: 212-596-9090
|
51
|
+
email: martin.crisp@ropesgray.com
|
52
|
+
|
53
|
+
tfarrell:
|
54
|
+
sex: male
|
55
|
+
name: Timothy R. Farrell
|
56
|
+
address:
|
57
|
+
street:
|
58
|
+
- Ropes & Gray LLP
|
59
|
+
- 191 North Wacker Drive, 32nd Floor
|
60
|
+
city: Chicago
|
61
|
+
state: IL
|
62
|
+
zip: 60606
|
63
|
+
email: Timothy.Farrell@ropesgray.com
|
64
|
+
phone: 312-845-1209
|
65
|
+
fax: 312-845-5569
|
data/examples/mwe.tex
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
\documentclass{article}
|
2
|
+
|
3
|
+
\usepackage{array}
|
4
|
+
\usepackage{longtable}
|
5
|
+
\usepackage{calc}
|
6
|
+
|
7
|
+
\begin{document}
|
8
|
+
|
9
|
+
% A bit less than half the page width
|
10
|
+
\newlength{\halfwd}
|
11
|
+
\setlength{\halfwd}{((\textwidth) * \real{0.95} - \columnsep)/2}%
|
12
|
+
|
13
|
+
% A longtable that I want as one of the page components
|
14
|
+
\def\lt{%
|
15
|
+
\setlength\extrarowheight{12pt}%
|
16
|
+
\begin{longtable}{cc}%
|
17
|
+
\parbox[t]{\halfwd}{%
|
18
|
+
11111111111111111\\
|
19
|
+
11111111111111111111\\
|
20
|
+
11111111111111111111}&
|
21
|
+
\parbox[t]{\halfwd}{22222222222222222222\\
|
22
|
+
22222222222222222\\
|
23
|
+
22222222222222222222}\\
|
24
|
+
|
25
|
+
\parbox[t]{\halfwd}{33333333333333333333\\
|
26
|
+
33333333333333333333\\
|
27
|
+
33333333333333333333}&
|
28
|
+
\parbox[t]{\halfwd}{44444444444444444444\\
|
29
|
+
44444444444444444444\\
|
30
|
+
44444444444444444444}\\
|
31
|
+
|
32
|
+
\parbox[t]{\halfwd}{55555555555555555555\\
|
33
|
+
55555555555555555555\\
|
34
|
+
55555555555555555555}&
|
35
|
+
\parbox[t]{\halfwd}{66666666666666666666\\
|
36
|
+
66666666666666666666\\
|
37
|
+
66666666666666666666}\\
|
38
|
+
\end{longtable}
|
39
|
+
}
|
40
|
+
|
41
|
+
% I expect each part of the page to be equally spaced and all the parts together
|
42
|
+
% to fill up the whole page.
|
43
|
+
\begin{center}
|
44
|
+
\hrule
|
45
|
+
Part I
|
46
|
+
|
47
|
+
\vfill
|
48
|
+
\hrule
|
49
|
+
\vfill
|
50
|
+
Part II
|
51
|
+
|
52
|
+
\vfill
|
53
|
+
\hrule
|
54
|
+
\vfill
|
55
|
+
|
56
|
+
Part III
|
57
|
+
|
58
|
+
{\ttfamily \lt}
|
59
|
+
\vfill
|
60
|
+
\hrule
|
61
|
+
\vfill
|
62
|
+
Part IV
|
63
|
+
|
64
|
+
\vfill
|
65
|
+
\hrule
|
66
|
+
\end{center}
|
67
|
+
\end{document}
|
data/examples/simple.tex
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
\documentclass{lawdoc}
|
2
|
+
|
3
|
+
{:=
|
4
|
+
require 'law_doc'
|
5
|
+
LawDoc.document do
|
6
|
+
title 'Brief in Support of Plaintiff\'s Motion for Summary Judgment'
|
7
|
+
kase Ydl[:cases][:erickson]
|
8
|
+
on_behalf_of 'plaintiffs'
|
9
|
+
signers Ydl[:lawyers][:ded], Ydl[:lawyers][:cjh]
|
10
|
+
sig_date '2015-11-20'
|
11
|
+
server signer
|
12
|
+
service_date sig_date
|
13
|
+
end
|
14
|
+
:}
|
15
|
+
|
16
|
+
\begin{document}
|
17
|
+
\makecaption
|
18
|
+
|
19
|
+
\makesignature
|
20
|
+
|
21
|
+
\newpage
|
22
|
+
\makecertificateofservice
|
23
|
+
\end{document}
|