full_time 1.0.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/example/cv.rb ADDED
@@ -0,0 +1,280 @@
1
+ require 'full_time'
2
+
3
+ @profile = FullTime.profile do
4
+ name 'Andrew Babichev'
5
+ email 'andrew.babichev@gmail.com'
6
+ homepage 'http://tensho.github.io'
7
+ github 'https://github.com/Tensho'
8
+ twitter 'https://twitter.com/Tensh0'
9
+ linkedin 'https://www.linkedin.com/in/andrewbabichev'
10
+ goodreads 'https://goodreads.com/tensho'
11
+ location 'Kiev, Ukraine, 08200 (open to relocate)'
12
+ extra 'Visa: Sponsorship required'
13
+
14
+ skills do
15
+ • 'Languages: Ruby, SQL, JavaScript/CoffeeScript, HTML/Slim/Haml, CSS/SASS, Elixir'
16
+ • 'Frameworks: Rails'
17
+ • 'Databases: MySQL, Postgres, DynamoDB, MongoDB, Neo4j'
18
+ • 'Queues/Message Brokers: Redis, RabbitMQ'
19
+ • 'Testing: RSpec, Capybara, FactoryBot, Jasmine'
20
+ • 'Web Standards: HTTP, JSON, XML/DTD, REST, JSON API, SOAP/WSDL, AMQP, DNS'
21
+ • 'Email Standards: SMTP, IMAP'
22
+ • 'Networking: TCP/IP'
23
+ • 'Web Servers: Nginx'
24
+ • 'IaaS: AWS (EC2, EBS, ASG, ECS, ELB, Route53, RDS, S3, VPC, IAM, CloudFront, CloudWatch, CloudTrail, DynamoDB, ElastiCache, CloudFormation, Lambda, SNS)'
25
+ • 'PaaS: Heroku'
26
+ • 'Configuration Management: Puppet, Packer'
27
+ • 'Infrastructure Management: Terraform'
28
+ • 'Task Management: Trello, JIRA, GitHub Projects'
29
+ • 'Version Source Control: Git'
30
+ • 'Collaboration: GitHub, Slack'
31
+ • 'Continuous Integration: CircleCI, TravisCI'
32
+ • 'OS/Execution Environment: MacOS, Linux, Docker'
33
+ • 'CMS: Refinery'
34
+ • 'IDE/Editor: RubyMine, Sublime Text, Vim'
35
+ • 'Methodology: Kanban, Scrum'
36
+ end
37
+
38
+ employment do
39
+ company 'Intetics' do
40
+ homepage 'http://intetics.com'
41
+
42
+ project 'Resolver', start_date: 'January 2016', end_date: 'Current' do
43
+ homepage 'https://resolver.co.uk'
44
+ description 'Free online tool for complaints and claims'
45
+ title 'Senior Software Engineer & Team Lead'
46
+
47
+ technologies do
48
+ • 'Primary Languages: Ruby, SQL'
49
+ • 'Secondary Languages: CoffeeScript/JavaScript, Slim/HAML/HTML5'
50
+ • 'Web Frontend Frameworks: AngularJS'
51
+ • 'Web Backend Frameworks: Rails, Sinatra, Grape, Rocket Pants'
52
+ • 'Background Processors: Sidekiq, Sneakers'
53
+ • 'Databases: MySQL, DynamoDB, MongoDB, Postgres, Redis, Memcached, Neo4j, AuroraDB'
54
+ • 'Queues/Message Brokers: Redis, RabbitMQ'
55
+ • 'AWS: EC2, EBS, ASG, ECS, ELB, Route53, RDS, S3, VPC, IAM, CloudFront, CloudWatch, CloudTrail, DynamoDB, ElastiCache, CloudFormation, Lambda, SNS'
56
+ • 'Configuration Management: Puppet, Packer'
57
+ • 'Infrastructure Management: Terraform'
58
+ • 'Web Servers: Nginx'
59
+ • 'OS/Execution Environment: Ubuntu, Alpine, MacOS, Docker'
60
+ • 'CMS: Refinery'
61
+ end
62
+
63
+ achievements do
64
+ • 'Setup test framework and covered with specs existing and new features'
65
+ • 'Deployment scripts support and enhancement'
66
+ • 'Setup backup model for MySQL to AWS S3 and Rackspace Cloud Files'
67
+ • 'Developed credit card number concealer'
68
+ • "Contributed filter parameters config fixes to 'rails' and 'dookeeper' gems in the sake of application"
69
+ • 'Setup and integrated web application with IBM Bluemix cognitive services AlchemyAPI, Watson and Tone Analyzer'
70
+ • 'Developed and implemented HTML email sanitizers (loofah scrubbers)'
71
+ • 'Consolidated MailChimp/Mandrill templates workflow, introduced dynamic content'
72
+ • 'Setup CDN (AWS CloudFront distributions)'
73
+ • 'Setup CI/CD (GitHub, CircleCI, Slack)'
74
+ • 'Integrated web application with secure (TLS) email server'
75
+ • 'Internationalized and localized web application'
76
+ • 'Adjusted Puppet manifests and node definitions for the existing and new services in the sake of the better reliability of infrastructure configuration'
77
+ • 'Adjusted custom Ruby scripts for AWS EC2 instances provisioning'
78
+ • "Contributed typecasted attributes to 'mongoid' gem in the sake of the application"
79
+ • 'Handled emoticons in MySQL'
80
+ • 'Introduced asynchronous event sourcing with RabbitMQ'
81
+ • 'Developed mailer microservice'
82
+ • 'Developed companies administration application'
83
+ • "Numerous contributions to 'mandrill_dm', 'capistrano', 'capistrano-sidekiq' and 'capistrano-sneakers' gems in the sake of the application"
84
+ • "Contributed URI query parameters parsing to 'amq-protocol', 'bunny', 'amqp' gems in the sake of the application"
85
+ • "Contributed unparsed mail field value to 'mail' gem in the sake of the application"
86
+ • 'Replaced Rails protected attributes with strong parameters'
87
+ • 'Introduced Docker and AWS ECS'
88
+ • 'Refactored and extended inbound emails receiving system to the multiple regions'
89
+ • 'Adopted Packer + Terraform for AutoScaling purposes and Blue/Green deployments in the multi-region environment'
90
+ • 'Interviewed and mentored other developers in the highly distributed team'
91
+ • 'Introduced new developers to the application'
92
+ • 'Spread out Agile principles and Kanban methodology to the team'
93
+ end
94
+ end
95
+ end
96
+
97
+ company 'GlobalLogic' do
98
+ homepage 'http://globallogic.com'
99
+
100
+ project 'Advanced creative platform for online advertising', start_date: 'November 2014', end_date: 'January 2016' do
101
+ description 'Advanced creative platform for online advertising, which allows you to automate the processes related to creative services. It supports both platforms – desktop and mobile.'
102
+ title 'Senior Software Engineer'
103
+
104
+ technologies do
105
+ • 'Primary Languages: Ruby, SQL'
106
+ • 'Secondary Languages: CoffeeScript/JavaScript, Slim/HAML/HTML5, SASS/CSS'
107
+ • 'Web Backend Frameworks: Rails, Sinatra, Grape, Rocket Pants'
108
+ • 'Databases: MySQL, Postgres'
109
+ • 'AWS: (EC2, EBS, RDS, S3, CloudFront, IAM, CloudFormation, SES)'
110
+ • 'Configuration Management: Ansible'
111
+ • 'OS/Execution Environment: Docker'
112
+ end
113
+
114
+ achievements do
115
+ • 'Setup test framework and covered with specs existing and new features'
116
+ • 'Performed development operations – infrastructure setup, configuration and application deployment'
117
+ • 'Developed bulk import/export of the records from/to excel spreadsheet'
118
+ • 'Interviewed and mentored other developers'
119
+ • 'Introduced new developers to the application'
120
+ • "Contributed to 'cocoon' gem in the sake of application"
121
+ • 'Performed major refactoring to advertisement showing mechanics'
122
+ • 'Developed application multitenancy'
123
+ • 'Migrated from MySQL to Postgres'
124
+ • 'Researched solutions for the cross-browser issues'
125
+ • 'Refactored event tracking system for the existing advertisements'
126
+ • 'Introduced video player to the advertisements'
127
+ • 'Delivered first and launched subsequent production releases intime'
128
+ • 'Spread out Agile principles and SCRUM methodology to the team'
129
+ end
130
+ end
131
+ end
132
+
133
+ company 'DataArt' do
134
+ homepage 'http://dataart.com'
135
+
136
+ project 'Online advertising aggregator', start_date: 'July 2014', end_date: 'November 2014' do
137
+ description 'Online advertising aggregator from different services, particularly Google Adwords and Bing Ads, which provides data to the end user in the target scope. The application was divided into several parts: Rails application for the user management purposes, Ember application (frontend) for the users with dashboard/charts/statistics, Rails API application (backend) to support frontend, MapReduce cluster for the data import and analysis from advertising services.'
138
+ title 'Software Engineer'
139
+
140
+ technologies do
141
+ • 'Ruby'
142
+ • 'Rails'
143
+ • 'Postgres'
144
+ • 'MongoDB'
145
+ • 'AWS (EMR, EC2, RDS, S3)'
146
+ • 'Google Analytics'
147
+ • 'Google DFP'
148
+ • 'Bing Ads'
149
+ • 'JSON'
150
+ end
151
+
152
+ achievements do
153
+ • 'Setup test framework and covered with specs existing and new features'
154
+ • 'Figured out detailed requirements'
155
+ • 'Developed Hadoop MapReduce streaming steps'
156
+ • 'Enhanced API according to frequently changing business logic'
157
+ • 'Implemented 3rd party integrations with Google Analytics & DFP, Bing Ads'
158
+ • 'Delivered the first production releases intime'
159
+ • 'Adopted Agile principles and Kanban methodology'
160
+ end
161
+ end
162
+ end
163
+
164
+ company 'Anadea Inc' do
165
+ homepage 'http://anadea.info'
166
+
167
+ project 'NowShop', start_date: 'October 2012', end_date: 'July 2014' do
168
+ homepage 'http://nowshop.com'
169
+ description 'Online e-commerce platform, that provides integrated web-shops for the news sites. The platform includes over 1.000.000 products in all categories, full payment solution as well as 3rd party delivery solution.'
170
+ title 'Software Engineer'
171
+
172
+ technologies do
173
+ • 'Ruby'
174
+ • 'Rails'
175
+ • 'Postgres'
176
+ • 'XML'
177
+ • 'XML Scheme'
178
+ • 'HTML'
179
+ end
180
+
181
+ achievements do
182
+ • 'Developed mechanism for obtaining XML data feeds from the retailers in different countries (Denmark, Norway, Sweden, United Kingdom), validation, parsing and multithread saving to the database'
183
+ • 'Implemented XML import optimizations to speed up the process x2 times like digesting, queries reduction, ActiveRecord refusal in favor of raw SQL'
184
+ • 'Supported the time task scheduler for the periodic tasks with logging and email notification'
185
+ • 'Developed HTML scrappers for the retailer sites to grab products info'
186
+ • 'Covered with specs existing and new features in TDD style'
187
+ • 'Maintained shop UI uptodate the backend side'
188
+ • 'Adopted Agile principles and XP methodology'
189
+ end
190
+ end
191
+ end
192
+
193
+ company 'Donetskoblgaz PLC' do
194
+ # description 'Donetskoblgaz is the regional gas transfer monopolist'
195
+
196
+ project 'Internal accounting system', start_date: 'July 2008', end_date: 'October 2012' do
197
+ homepage ''
198
+ description ''
199
+ title 'Software Engineer'
200
+
201
+ technologies do
202
+ • 'Perl'
203
+ • 'MS SQL Server'
204
+ • 'Oracle'
205
+ • 'XML'
206
+ • 'DTD'
207
+ • 'DBF'
208
+ • 'HTML'
209
+ • 'Excel'
210
+ end
211
+
212
+ achievements do
213
+ • 'Figured out detailed requirements, evaluated system program needs, wrote and maintained program code to meet system requirements, system designs and technical specifications'
214
+ • 'Maintained inner accounting software package (client-server model)'
215
+ • 'Developed web-services to provide the customers ability to view the balance, edit counter values, make payments'
216
+ • 'Improved software for the data exchange between organization and banks'
217
+ • 'Administrated ERP Parus 8.2 database, wrote technical and user documentation, enterprise standards'
218
+ • 'Assumed a leadership role in cooperative work, inspired and motivated other employees'
219
+ • 'Adopted Waterfall methodology'
220
+ end
221
+ end
222
+ end
223
+ end
224
+
225
+ education do
226
+ university 'Donetsk National Technical University', start_date: '2003', end_date: '2008' do
227
+ title 'Specialist System Programming'
228
+ end
229
+ end
230
+
231
+ certification do
232
+ course do
233
+ title 'AWS Certified Solutions Architect - Associate (SAA)'
234
+ company 'Amazon Web Services'
235
+ homepage 'https://www.certmetrics.com/amazon/public/badge.aspx?i=1&t=c&d=2018-04-02&ci=AWS00435488'
236
+ end
237
+
238
+ course do
239
+ title 'AWS Certified Developer - Associate (DVA)'
240
+ company 'Amazon Web Services'
241
+ homepage 'https://www.certmetrics.com/amazon/public/badge.aspx?i=2&t=c&d=2018-03-01&ci=AWS00435488'
242
+ end
243
+
244
+ course do
245
+ title 'Web Application Architectures'
246
+ company 'Coursera'
247
+ homepage 'https://www.coursera.org/course/webapplications'
248
+ end
249
+
250
+ course do
251
+ title 'Algorithms: Design and Analysis, Part 1'
252
+ company 'Coursera'
253
+ homepage 'https://www.coursera.org/course/algo'
254
+ end
255
+
256
+ course do
257
+ title 'Gamification'
258
+ company 'Coursera'
259
+ homepage 'https://www.coursera.org/course/Gamification'
260
+ end
261
+
262
+ course do
263
+ title 'Functional Programming Principles in Scala'
264
+ company 'Coursera'
265
+ homepage 'https://www.coursera.org/course/progfun'
266
+ end
267
+ end
268
+
269
+ interests do
270
+ • 'Software Architecture'
271
+ • 'Web Technologies'
272
+ • 'Reading'
273
+ • 'Arduino'
274
+ • 'Cooking'
275
+ • 'Tea'
276
+ • 'Chess'
277
+ • 'Go'
278
+ • 'Japan'
279
+ end
280
+ end
@@ -0,0 +1,250 @@
1
+ /**
2
+ *** SIMPLE GRID
3
+ *** (C) ZACH COLE 2016
4
+ **/
5
+
6
+ @import url(https://fonts.googleapis.com/css?family=Lato:400,300,300italic,400italic,700,700italic);
7
+
8
+ /* UNIVERSAL */
9
+
10
+ html,
11
+ body {
12
+ height: 100%;
13
+ width: 100%;
14
+ margin: 0;
15
+ padding: 0;
16
+ left: 0;
17
+ top: 0;
18
+ font-size: 100%;
19
+ }
20
+
21
+ /* ROOT FONT STYLES */
22
+
23
+ * {
24
+ font-family: 'Lato', Helvetica, sans-serif;
25
+ color: #333447;
26
+ line-height: 1.5;
27
+ }
28
+
29
+ /* TYPOGRAPHY */
30
+
31
+ h1 {
32
+ font-size: 2.5rem;
33
+ }
34
+
35
+ h2 {
36
+ font-size: 2rem;
37
+ }
38
+
39
+ h3 {
40
+ font-size: 1.375rem;
41
+ }
42
+
43
+ h4 {
44
+ font-size: 1.125rem;
45
+ }
46
+
47
+ h5 {
48
+ font-size: 1rem;
49
+ }
50
+
51
+ h6 {
52
+ font-size: 0.875rem;
53
+ }
54
+
55
+ p {
56
+ font-size: 1.125rem;
57
+ font-weight: 200;
58
+ line-height: 1.8;
59
+ }
60
+
61
+ .font-light {
62
+ font-weight: 300;
63
+ }
64
+
65
+ .font-regular {
66
+ font-weight: 400;
67
+ }
68
+
69
+ .font-heavy {
70
+ font-weight: 700;
71
+ }
72
+
73
+ /* POSITIONING */
74
+
75
+ .left {
76
+ text-align: left;
77
+ }
78
+
79
+ .right {
80
+ text-align: right;
81
+ }
82
+
83
+ .center {
84
+ text-align: center;
85
+ margin-left: auto;
86
+ margin-right: auto;
87
+ }
88
+
89
+ .justify {
90
+ text-align: justify;
91
+ }
92
+
93
+ /* ==== GRID SYSTEM ==== */
94
+
95
+ .container {
96
+ width: 90%;
97
+ margin-left: auto;
98
+ margin-right: auto;
99
+ }
100
+
101
+ .row {
102
+ position: relative;
103
+ width: 100%;
104
+ }
105
+
106
+ .row [class^="col"] {
107
+ float: left;
108
+ margin: 0.5rem 2%;
109
+ min-height: 0.125rem;
110
+ }
111
+
112
+ .col-1,
113
+ .col-2,
114
+ .col-3,
115
+ .col-4,
116
+ .col-5,
117
+ .col-6,
118
+ .col-7,
119
+ .col-8,
120
+ .col-9,
121
+ .col-10,
122
+ .col-11,
123
+ .col-12 {
124
+ width: 96%;
125
+ }
126
+
127
+ .col-1-sm {
128
+ width: 4.33%;
129
+ }
130
+
131
+ .col-2-sm {
132
+ width: 12.66%;
133
+ }
134
+
135
+ .col-3-sm {
136
+ width: 21%;
137
+ }
138
+
139
+ .col-4-sm {
140
+ width: 29.33%;
141
+ }
142
+
143
+ .col-5-sm {
144
+ width: 37.66%;
145
+ }
146
+
147
+ .col-6-sm {
148
+ width: 46%;
149
+ }
150
+
151
+ .col-7-sm {
152
+ width: 54.33%;
153
+ }
154
+
155
+ .col-8-sm {
156
+ width: 62.66%;
157
+ }
158
+
159
+ .col-9-sm {
160
+ width: 71%;
161
+ }
162
+
163
+ .col-10-sm {
164
+ width: 79.33%;
165
+ }
166
+
167
+ .col-11-sm {
168
+ width: 87.66%;
169
+ }
170
+
171
+ .col-12-sm {
172
+ width: 96%;
173
+ }
174
+
175
+ .row::after {
176
+ content: "";
177
+ display: table;
178
+ clear: both;
179
+ }
180
+
181
+ .hidden-sm {
182
+ display: none;
183
+ }
184
+
185
+ @media only screen and (min-width: 33.75em) { /* 540px */
186
+ .container {
187
+ width: 80%;
188
+ }
189
+ }
190
+
191
+ @media only screen and (min-width: 45em) { /* 720px */
192
+ .col-1 {
193
+ width: 4.33%;
194
+ }
195
+
196
+ .col-2 {
197
+ width: 12.66%;
198
+ }
199
+
200
+ .col-3 {
201
+ width: 21%;
202
+ }
203
+
204
+ .col-4 {
205
+ width: 29.33%;
206
+ }
207
+
208
+ .col-5 {
209
+ width: 37.66%;
210
+ }
211
+
212
+ .col-6 {
213
+ width: 46%;
214
+ }
215
+
216
+ .col-7 {
217
+ width: 54.33%;
218
+ }
219
+
220
+ .col-8 {
221
+ width: 62.66%;
222
+ }
223
+
224
+ .col-9 {
225
+ width: 71%;
226
+ }
227
+
228
+ .col-10 {
229
+ width: 79.33%;
230
+ }
231
+
232
+ .col-11 {
233
+ width: 87.66%;
234
+ }
235
+
236
+ .col-12 {
237
+ width: 96%;
238
+ }
239
+
240
+ .hidden-sm {
241
+ display: block;
242
+ }
243
+ }
244
+
245
+ @media only screen and (min-width: 60em) { /* 960px */
246
+ .container {
247
+ width: 75%;
248
+ max-width: 60rem;
249
+ }
250
+ }
@@ -0,0 +1,90 @@
1
+ <html>
2
+ <head>
3
+ <title>Andrew Babichev CV</title>
4
+ <meta charset="utf-8">
5
+ <link rel="stylesheet" href="simple-grid.css">
6
+ </head>
7
+ <body>
8
+ <div class="container">
9
+ <header class="row">
10
+ <div class="col-4">
11
+ <h2><%= name %></h2>
12
+ </div>
13
+ <div class="col-8">
14
+ <div>Email: <%= email %></div>
15
+ <div>Homepage: <a href="<%= homepage %>"><%= homepage %></a></div>
16
+ <div>GitHub: <a href="<%= github %>"><%= github %></a></div>
17
+ <div>LinkedIn: <a href="<%= linkedin %>"><%= linkedin %></a></div>
18
+ <div>Twitter: <a href="<%= twitter %>"><%= twitter %></a></div>
19
+ <div>GoodReads: <a href="<%= goodreads %>"><%= goodreads %></a></div>
20
+ <div>Location: <%= location %></div>
21
+ <div><%= extra %></div>
22
+ </div>
23
+ </header>
24
+
25
+ <section class="row">
26
+ <div class="col-12">
27
+ <h2>Skills</h2>
28
+ <ul>
29
+ <% skills.each do |skill| %>
30
+ <li><%= skill %></li>
31
+ <% end %>
32
+ </ul>
33
+ </div>
34
+ <div class="col-12">
35
+ <h2>Employment</h2>
36
+ <% employment.companies.each do |company| %>
37
+ <!-- companies should be presented as a list (<ul>) -->
38
+ <h3><%= company.name %></h3>
39
+ <div><a href="<%= company.homepage %>"><%= company.homepage %></a></div>
40
+
41
+ <% company.projects.each do |project| %>
42
+ <!-- projects should be presented as a list (<ul>) -->
43
+ <h4><%= project.name %> ( <%= project.start_date %> – <%= project.end_date %> )</h4>
44
+ <div><a href="<%= project.homepage %>"><%= project.homepage %></a></div>
45
+ <p><%= project.description %></p>
46
+ <div><%= project.title %></div>
47
+
48
+ <h5>Technologies</h5>
49
+ <ul>
50
+ <% project.technologies.each do |technology| %>
51
+ <li><%= technology %></li>
52
+ <% end %>
53
+ </ul>
54
+
55
+ <h4>Achievements</h4>
56
+ <ul>
57
+ <% project.achievements.each do |achievement| %>
58
+ <li><%= achievement %></li>
59
+ <% end %>
60
+ </ul>
61
+ <% end %>
62
+
63
+ <hr>
64
+ <% end %>
65
+ </div>
66
+ <div class="col-12">
67
+ <h2>Education</h2>
68
+ <h2><%= education.university.name %></h2>
69
+ <h3><%= education.university.title %> ( <%= education.university.start_date %> – <%= education.university.end_date %> )</h3>
70
+ </div>
71
+ <div class="col-12">
72
+ <h2>Certification</h2>
73
+ <% certification.courses.each do |course| %>
74
+ <!-- courses should be presented as a list (<ul>) -->
75
+ <h3><%= course.title %> ( <%= course.company %> )</h3>
76
+ <div><a href="<%= course.homepage %>"><%= course.homepage %></a></div>
77
+ <% end %>
78
+ </div>
79
+ <div class="col-12">
80
+ <h2>Interests</h2>
81
+ <ul>
82
+ <% interests.each do |interest| %>
83
+ <li><%= interest %></li>
84
+ <% end %>
85
+ </ul>
86
+ </div>
87
+ </section>
88
+ </div>
89
+ </body>
90
+ </html>
data/full_time.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'full_time/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'full_time'
8
+ spec.version = FullTime::VERSION
9
+ spec.author = 'Andrew Babichev'
10
+ spec.email = 'andrew.babichev@gmail.com'
11
+
12
+ spec.summary = 'Simple CV DSL'
13
+ spec.description = 'Handle your CV like a pro'
14
+ spec.homepage = 'https://github.com/Tensho/full_time'
15
+ spec.license = 'MIT'
16
+
17
+ spec.post_install_message = "Thanks for installing full_time!"
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|features)/}) }
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+
22
+ spec.required_ruby_version = '~> 2.0'
23
+
24
+ spec.add_dependency 'tilt'
25
+
26
+ spec.add_development_dependency 'bundler'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec'
29
+ end
@@ -0,0 +1,27 @@
1
+ module FullTime
2
+ class Certification
3
+ attr_accessor :courses
4
+
5
+ def initialize
6
+ @courses = List.new
7
+ end
8
+
9
+ def courses(&block)
10
+ if block_given?
11
+ @courses.instance_eval(&block)
12
+ end
13
+
14
+ @courses
15
+ end
16
+
17
+ def course(&block)
18
+ if block_given?
19
+ course = Course.new
20
+ course.instance_eval(&block)
21
+ @courses << course
22
+ course
23
+ end
24
+ end
25
+ # alias :course, :certification
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ module FullTime
2
+ class Company
3
+ extend FullTime::DSL
4
+
5
+ dsl_attr_accessor :homepage
6
+
7
+ attr_accessor :name, :projects
8
+
9
+ def initialize
10
+ @projects = []
11
+ end
12
+
13
+ def project(name = nil, start_date: nil, end_date: nil, &block)
14
+ if block_given?
15
+ project = Project.new
16
+ project.name = name
17
+ project.start_date = start_date
18
+ project.end_date = end_date
19
+ project.instance_eval(&block)
20
+ @projects << project
21
+ project
22
+ end
23
+ end
24
+ end
25
+ end