Career Description Language (CDL) is a very simple language designed to describe the contents of your career. Using this information, resumes/CVs can be generated automatically without you having to think about formatting, allowing you to focus more on what actually matters (the content, not date abbreviations/margins/etc.).
An implementation of such a compiler (cdlc
) can be found here.
Schema
This is version 2 of the schema is implemented by
cdlc
versions 2.X.
The schema is composed of "directives" (instructions), signaled by the first character of each line (followed by a space). The rest of the line acts as the operand of the directive.
These directives are organized into "blocks" of directives grouped together to describe a section of data.
One special directive is # <text>
, which represents a comment (the rest of the line is ignored).
The first non-comment directive must be V <number>
, which declares the schema version.
This version of the schema must have <number>
be 2
(aka V 2
).
Head Block
The head block contains basic information (name/links). There is only one head block in a file. The head block must be the first block in a file.
The head block starts with a N <name>
directive, which sets your name to <name>
.
It then may be followed by zero or more H <display> <url>
directives, signaling you want to have a link with <display>
text that leads to <url>
.
<display>
may contain spaces, but <url>
may not.
Example head block:
N John Doe
H duck.com https://duckduckgo.com/
H google.com https://www.google.com/
Area Block
Area blocks represent sections. Examples of areas are "education" and "experience."
Area blocks start with a A <id>
directive, which declares an area with <id>
which must be unique (this is not the title).
The A
directive is then followed by some combination of the following directives:
T <text>
which sets the title of the area to<text>
. There should only be oneT
directive per area.C <count>
which declares that for resumes, only use<count>
entries from this area. Default count is 3. There should only be oneC
directive per area.I <include>
which sets that this area should be included inresume
orcv
. There may be more then oneI
directive per area.D <type>
set the format type of the area. Must be eithershort
ortall
. Default value istall
. There should only be oneD
directive per area.
Example area block:
A experience
T Experience
I cv
I resume
C 2
Job Block
Job blocks represent single entries.
Job blocks start with a J <id>
directive, which declares a new job in the area <id>
.
The J
directive is then followed by some combination of the following directives.
T <text>
which sets the title of the job to<text>
. There should only be oneT
directive per job.U <text>
which sets the subtitle of the job to<text>
. There should only be oneU
directive per job.H <display> <url>
which declares you want to have a link with<display>
that leads to<url>
.<display>
may contain spaces, but<url>
may not. There may be more than oneH
directive per job.B <date>
/E <date>
set the beginning/end date of the job respectively. Dates must be inYYYY-MM-DD
format. No end date with a beginning date signifies an end date of "present." There may only be one of eachB
andE
directives per job.S <text>
sets the short description of the job to<text>
. There should only be oneS
directive per job.L <text>
add a long-description bullet point of<text>
. There may be more than oneL
directive per job.D <type>
set the format type of the job. Must be eithershort
ortall
. Default value is the format type for the area declared in theJ
directive. There should only be oneD
directive per job.
Example job block:
J experience
T Professional Cool Guy
U Company
H example.com https://example.com/
B 2015-09-13
E 2017-12-13
S Did cool things.
L Did a cool thing.
L Did another cool guy.
Ideas/Open Questions
- Minimize non-information directives:
- In an ideal world we could remove the
D
/I
/C
directives. - This may mean that these three directives would be replaced by two completely different ones.
- In an ideal world we could remove the