mako_rss 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +33 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +7 -0
  5. data/.rubocop_todo.yml +38 -0
  6. data/.travis.yml +7 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +124 -0
  10. data/Rakefile +13 -0
  11. data/bin/mako +6 -0
  12. data/lib/mako/article.rb +36 -0
  13. data/lib/mako/cli.rb +49 -0
  14. data/lib/mako/commands/build.rb +33 -0
  15. data/lib/mako/commands/new.rb +28 -0
  16. data/lib/mako/commands/schedule.rb +12 -0
  17. data/lib/mako/commands/version.rb +11 -0
  18. data/lib/mako/configuration.rb +44 -0
  19. data/lib/mako/core.rb +81 -0
  20. data/lib/mako/core_ext/numeric.rb +10 -0
  21. data/lib/mako/core_ext/time.rb +10 -0
  22. data/lib/mako/core_ext.rb +4 -0
  23. data/lib/mako/errors.rb +25 -0
  24. data/lib/mako/feed.rb +29 -0
  25. data/lib/mako/feed_constructor.rb +71 -0
  26. data/lib/mako/feed_requester.rb +43 -0
  27. data/lib/mako/file_open_util.rb +19 -0
  28. data/lib/mako/html_renderer.rb +30 -0
  29. data/lib/mako/layouts/_feed_container.html.erb +19 -0
  30. data/lib/mako/mako_logger.rb +12 -0
  31. data/lib/mako/sass_renderer.rb +30 -0
  32. data/lib/mako/subscription_list_parser.rb +28 -0
  33. data/lib/mako/version.rb +5 -0
  34. data/lib/mako/view_helpers.rb +28 -0
  35. data/lib/mako/writer.rb +18 -0
  36. data/lib/mako.rb +41 -0
  37. data/lib/templates/Gemfile +5 -0
  38. data/lib/templates/config.yaml +14 -0
  39. data/lib/templates/sample_subscriptions/subscriptions.json +1 -0
  40. data/lib/templates/sample_subscriptions/subscriptions.txt +5 -0
  41. data/lib/templates/sample_subscriptions/subscriptions.xml +12 -0
  42. data/lib/templates/themes/sass/_fonts.scss +38 -0
  43. data/lib/templates/themes/sass/_layout.scss +97 -0
  44. data/lib/templates/themes/sass/_reboot.scss +473 -0
  45. data/lib/templates/themes/sass/_utilities.scss +13 -0
  46. data/lib/templates/themes/sass/_variables.scss +57 -0
  47. data/lib/templates/themes/simple.html.erb +46 -0
  48. data/lib/templates/themes/simple.scss +6 -0
  49. data/mako_rss.gemspec +36 -0
  50. metadata +233 -0
@@ -0,0 +1,473 @@
1
+ // Reboot (from Boostrap v4-dev)
2
+ // Bootstrap is licensed MIT. https://github.com/twbs/bootstrap
3
+ //
4
+ // Normalization of HTML elements, manually forked from Normalize.css to remove
5
+ // styles targeting irrelevant browsers while applying new styles.
6
+ //
7
+ // Normalize is licensed MIT. https://github.com/necolas/normalize.css
8
+
9
+
10
+ // Document
11
+ //
12
+ // 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
13
+ // 2. Change the default font family in all browsers.
14
+ // 3. Correct the line height in all browsers.
15
+ // 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
16
+ // 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so
17
+ // we force a non-overlapping, non-auto-hiding scrollbar to counteract.
18
+ // 6. Change the default tap highlight to be completely transparent in iOS.
19
+
20
+ html {
21
+ box-sizing: border-box; // 1
22
+ font-family: sans-serif; // 2
23
+ line-height: 1.15; // 3
24
+ -ms-text-size-adjust: 100%; // 4
25
+ -webkit-text-size-adjust: 100%; // 4
26
+ -ms-overflow-style: scrollbar; // 5
27
+ -webkit-tap-highlight-color: rgba(0,0,0,0); // 6
28
+ }
29
+
30
+ *,
31
+ *::before,
32
+ *::after {
33
+ box-sizing: inherit; // 1
34
+ }
35
+
36
+ // IE10+ doesn't honor `<meta name="viewport">` in some cases.
37
+ @at-root {
38
+ @-ms-viewport { width: device-width; }
39
+ }
40
+
41
+
42
+ // Body
43
+ //
44
+ // 1. Remove the margin in all browsers.
45
+ // 2. As a best practice, apply a default `background-color`.
46
+
47
+ body {
48
+ margin: 0; // 1
49
+ font-family: $font-family-base;
50
+ font-size: $font-size-base;
51
+ font-weight: $font-weight-base;
52
+ line-height: $line-height-base;
53
+ color: $pd-black;
54
+ background-color: $pd-off-white; // 2
55
+ }
56
+
57
+ // Suppress the focus outline on elements that cannot be accessed via keyboard.
58
+ // This prevents an unwanted focus outline from appearing around elements that
59
+ // might still respond to pointer events.
60
+ //
61
+ // Credit: https://github.com/suitcss/base
62
+ [tabindex="-1"]:focus {
63
+ outline: none !important;
64
+ }
65
+
66
+
67
+ // Content grouping
68
+ //
69
+ // 1. Add the correct box sizing in Firefox.
70
+ // 2. Show the overflow in Edge and IE.
71
+
72
+ hr {
73
+ box-sizing: content-box; // 1
74
+ height: 0; // 1
75
+ overflow: visible; // 2
76
+ }
77
+
78
+
79
+ //
80
+ // Typography
81
+ //
82
+
83
+ // Remove top margins from headings
84
+ //
85
+ // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
86
+ // margin for easier control within type scales as it avoids margin collapsing.
87
+ h1, h2, h3, h4, h5, h6 {
88
+ margin-top: 0;
89
+ margin-bottom: .5rem;
90
+ }
91
+
92
+ // Reset margins on paragraphs
93
+ //
94
+ // Similarly, the top margin on `<p>`s get reset. However, we also reset the
95
+ // bottom margin to use `rem` units instead of `em`.
96
+ p {
97
+ margin-top: 0;
98
+ margin-bottom: 1rem;
99
+ }
100
+
101
+ // Abbreviations
102
+ //
103
+ // 1. Remove the bottom border in Firefox 39-.
104
+ // 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
105
+ // 3. Add explicit cursor to indicate changed behavior.
106
+ // 4. Duplicate behavior to the data-* attribute for our tooltip plugin
107
+
108
+ abbr[title],
109
+ abbr[data-original-title] { // 4
110
+ text-decoration: underline; // 2
111
+ text-decoration: underline dotted; // 2
112
+ cursor: help; // 3
113
+ border-bottom: 0; // 1
114
+ }
115
+
116
+ address {
117
+ margin-bottom: 1rem;
118
+ font-style: normal;
119
+ line-height: inherit;
120
+ }
121
+
122
+ ol,
123
+ ul,
124
+ dl {
125
+ margin-top: 0;
126
+ margin-bottom: 1rem;
127
+ }
128
+
129
+ ol ol,
130
+ ul ul,
131
+ ol ul,
132
+ ul ol {
133
+ margin-bottom: 0;
134
+ }
135
+
136
+ dt {
137
+ font-weight: $dt-font-weight;
138
+ }
139
+
140
+ dd {
141
+ margin-bottom: .5rem;
142
+ margin-left: 0; // Undo browser default
143
+ }
144
+
145
+ blockquote {
146
+ margin: 0 0 1rem;
147
+ }
148
+
149
+ dfn {
150
+ font-style: italic; // Add the correct font style in Android 4.3-
151
+ }
152
+
153
+ b,
154
+ strong {
155
+ font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari
156
+ }
157
+
158
+ small {
159
+ font-size: 80%; // Add the correct font size in all browsers
160
+ }
161
+
162
+ //
163
+ // Prevent `sub` and `sup` elements from affecting the line height in
164
+ // all browsers.
165
+ //
166
+
167
+ sub,
168
+ sup {
169
+ position: relative;
170
+ font-size: 75%;
171
+ line-height: 0;
172
+ vertical-align: baseline;
173
+ }
174
+
175
+ sub { bottom: -.25em; }
176
+ sup { top: -.5em; }
177
+
178
+
179
+ //
180
+ // Links
181
+ //
182
+
183
+ a {
184
+ color: $pd-dark-blue;
185
+ text-decoration: none;
186
+ background-color: transparent; // Remove the gray background on active links in IE 10.
187
+ -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.
188
+ }
189
+
190
+ // And undo these styles for placeholder links/named anchors (without href)
191
+ // which have not been made explicitly keyboard-focusable (without tabindex).
192
+ // It would be more straightforward to just use a[href] in previous block, but that
193
+ // causes specificity issues in many other styles that are too complex to fix.
194
+ // See https://github.com/twbs/bootstrap/issues/19402
195
+
196
+ a:not([href]):not([tabindex]) {
197
+ color: inherit;
198
+ text-decoration: none;
199
+
200
+ &:focus {
201
+ outline: 0;
202
+ }
203
+ }
204
+
205
+
206
+ //
207
+ // Code
208
+ //
209
+
210
+ pre,
211
+ code,
212
+ kbd,
213
+ samp {
214
+ font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.
215
+ font-size: 1em; // Correct the odd `em` font sizing in all browsers.
216
+ }
217
+
218
+ pre {
219
+ // Remove browser default top margin
220
+ margin-top: 0;
221
+ // Reset browser default of `1em` to use `rem`s
222
+ margin-bottom: 1rem;
223
+ // Don't allow content to break outside
224
+ overflow: auto;
225
+ }
226
+
227
+
228
+ //
229
+ // Figures
230
+ //
231
+
232
+ figure {
233
+ // Apply a consistent margin strategy (matches our type styles).
234
+ margin: 0 0 1rem;
235
+ }
236
+
237
+
238
+ //
239
+ // Images and content
240
+ //
241
+
242
+ img {
243
+ vertical-align: middle;
244
+ border-style: none; // Remove the border on images inside links in IE 10-.
245
+ }
246
+
247
+ svg:not(:root) {
248
+ overflow: hidden; // Hide the overflow in IE
249
+ }
250
+
251
+
252
+ // Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.
253
+ //
254
+ // In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11
255
+ // DON'T remove the click delay when `<meta name="viewport" content="width=device-width">` is present.
256
+ // However, they DO support removing the click delay via `touch-action: manipulation`.
257
+ // See:
258
+ // * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch
259
+ // * http://caniuse.com/#feat=css-touch-action
260
+ // * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay
261
+
262
+ a,
263
+ area,
264
+ button,
265
+ [role="button"],
266
+ input,
267
+ label,
268
+ select,
269
+ summary,
270
+ textarea {
271
+ touch-action: manipulation;
272
+ }
273
+
274
+
275
+ //
276
+ // Tables
277
+ //
278
+
279
+ table {
280
+ border-collapse: collapse; // Prevent double borders
281
+ }
282
+
283
+ caption {
284
+ padding-top: $table-cell-padding;
285
+ padding-bottom: $table-cell-padding;
286
+ color: $pd-light-gray;
287
+ text-align: left;
288
+ caption-side: bottom;
289
+ }
290
+
291
+ th {
292
+ // Matches default `<td>` alignment
293
+ text-align: left;
294
+ }
295
+
296
+
297
+ //
298
+ // Forms
299
+ //
300
+
301
+ label {
302
+ // Allow labels to use `margin` for spacing.
303
+ display: inline-block;
304
+ margin-bottom: .5rem;
305
+ }
306
+
307
+ // Work around a Firefox/IE bug where the transparent `button` background
308
+ // results in a loss of the default `button` focus styles.
309
+ //
310
+ // Credit: https://github.com/suitcss/base/
311
+ button:focus {
312
+ outline: 1px dotted;
313
+ outline: 5px auto -webkit-focus-ring-color;
314
+ }
315
+
316
+ input,
317
+ button,
318
+ select,
319
+ optgroup,
320
+ textarea {
321
+ margin: 0; // Remove the margin in Firefox and Safari
322
+ font-family: inherit;
323
+ font-size: inherit;
324
+ line-height: inherit;
325
+ }
326
+
327
+ button,
328
+ input {
329
+ overflow: visible; // Show the overflow in Edge
330
+ }
331
+
332
+ button,
333
+ select {
334
+ text-transform: none; // Remove the inheritance of text transform in Firefox
335
+ }
336
+
337
+ // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
338
+ // controls in Android 4.
339
+ // 2. Correct the inability to style clickable types in iOS and Safari.
340
+ button,
341
+ html [type="button"], // 1
342
+ [type="reset"],
343
+ [type="submit"] {
344
+ -webkit-appearance: button; // 2
345
+ }
346
+
347
+ // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
348
+ button::-moz-focus-inner,
349
+ [type="button"]::-moz-focus-inner,
350
+ [type="reset"]::-moz-focus-inner,
351
+ [type="submit"]::-moz-focus-inner {
352
+ padding: 0;
353
+ border-style: none;
354
+ }
355
+
356
+ input[type="radio"],
357
+ input[type="checkbox"] {
358
+ box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
359
+ padding: 0; // 2. Remove the padding in IE 10-
360
+
361
+ // Apply a disabled cursor for radios and checkboxes.
362
+ //
363
+ // Note: Neither radios nor checkboxes can be readonly.
364
+ &:disabled {
365
+ cursor: not-allowed;
366
+ }
367
+ }
368
+
369
+
370
+ input[type="date"],
371
+ input[type="time"],
372
+ input[type="datetime-local"],
373
+ input[type="month"] {
374
+ // Remove the default appearance of temporal inputs to avoid a Mobile Safari
375
+ // bug where setting a custom line-height prevents text from being vertically
376
+ // centered within the input.
377
+ // See https://bugs.webkit.org/show_bug.cgi?id=139848
378
+ // and https://github.com/twbs/bootstrap/issues/11266
379
+ -webkit-appearance: listbox;
380
+ }
381
+
382
+ textarea {
383
+ overflow: auto; // Remove the default vertical scrollbar in IE.
384
+ // Textareas should really only resize vertically so they don't break their (horizontal) containers.
385
+ resize: vertical;
386
+ }
387
+
388
+ fieldset {
389
+ // Browsers set a default `min-width: min-content;` on fieldsets,
390
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
391
+ // So we reset that to ensure fieldsets behave more like a standard block element.
392
+ // See https://github.com/twbs/bootstrap/issues/12359
393
+ // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
394
+ min-width: 0;
395
+ // Reset the default outline behavior of fieldsets so they don't affect page layout.
396
+ padding: 0;
397
+ margin: 0;
398
+ border: 0;
399
+ }
400
+
401
+ // 1. Correct the text wrapping in Edge and IE.
402
+ // 2. Correct the color inheritance from `fieldset` elements in IE.
403
+ legend {
404
+ display: block;
405
+ width: 100%;
406
+ max-width: 100%; // 1
407
+ padding: 0;
408
+ margin-bottom: .5rem;
409
+ font-size: 1.5rem;
410
+ line-height: inherit;
411
+ color: inherit; // 2
412
+ white-space: normal; // 1
413
+ }
414
+
415
+ progress {
416
+ vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
417
+ }
418
+
419
+ // Correct the cursor style of increment and decrement buttons in Chrome.
420
+ [type="number"]::-webkit-inner-spin-button,
421
+ [type="number"]::-webkit-outer-spin-button {
422
+ height: auto;
423
+ }
424
+
425
+ [type="search"] {
426
+ // This overrides the extra rounded corners on search inputs in iOS so that our
427
+ // `.form-control` class can properly style them. Note that this cannot simply
428
+ // be added to `.form-control` as it's not specific enough. For details, see
429
+ // https://github.com/twbs/bootstrap/issues/11586.
430
+ outline-offset: -2px; // 2. Correct the outline style in Safari.
431
+ -webkit-appearance: none;
432
+ }
433
+
434
+ //
435
+ // Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
436
+ //
437
+
438
+ [type="search"]::-webkit-search-cancel-button,
439
+ [type="search"]::-webkit-search-decoration {
440
+ -webkit-appearance: none;
441
+ }
442
+
443
+ //
444
+ // 1. Correct the inability to style clickable types in iOS and Safari.
445
+ // 2. Change font properties to `inherit` in Safari.
446
+ //
447
+
448
+ ::-webkit-file-upload-button {
449
+ font: inherit; // 2
450
+ -webkit-appearance: button; // 1
451
+ }
452
+
453
+ //
454
+ // Correct element displays
455
+ //
456
+
457
+ output {
458
+ display: inline-block;
459
+ }
460
+
461
+ summary {
462
+ display: list-item; // Add the correct display in all browsers
463
+ }
464
+
465
+ template {
466
+ display: none; // Add the correct display in IE
467
+ }
468
+
469
+ // Always hide an element with the `hidden` HTML attribute (from PureCSS).
470
+ // Needed for proper display in IE 10-.
471
+ [hidden] {
472
+ display: none !important;
473
+ }
@@ -0,0 +1,13 @@
1
+ .text-center {
2
+ text-align: center !important;
3
+ }
4
+
5
+ .center-image {
6
+ margin: 0 auto;
7
+ display: block;
8
+ }
9
+
10
+ .img-responsive {
11
+ max-width: 100%;
12
+ height: auto;
13
+ }
@@ -0,0 +1,57 @@
1
+ // Global Variables
2
+ // Colors
3
+ $pd-light-blue: #69C5FF;
4
+ $pd-dark-blue: #4BB7FC;
5
+ $pd-transparent-blue: rgba(125, 222, 255, 0.5);
6
+ $pd-orange: #EFAA4C;
7
+ $pd-yellow: #FDF6E3;
8
+ $pd-off-white: #FDFDFD;
9
+ $pd-black: #000000;
10
+ $pd-white: #FFFFFF;
11
+ $pd-light-gray: #636C72;
12
+ $pd-banner: #5C104F;
13
+ $pd-banner-light: #994F8E;
14
+ $pd-banner-dark: #400136;
15
+
16
+ // Fonts
17
+ $pd-font-family-sans-serif: Corbel, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans", "Liberation Sans", Verdana, "Verdana Ref", sans-serif;
18
+ $font-family-base: $pd-font-family-sans-serif !default;
19
+
20
+ $font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
21
+ $font-size-lg: 1.25rem !default;
22
+ $font-size-sm: .875rem !default;
23
+ $font-size-xs: .75rem !default;
24
+
25
+ $font-weight-normal: normal !default;
26
+ $font-weight-bold: bold !default;
27
+
28
+ $font-weight-base: $font-weight-normal !default;
29
+ $line-height-base: 1.5 !default;
30
+
31
+ $font-size-h1: 2.25rem !default;
32
+ $font-size-h2: 2rem !default;
33
+ $font-size-h3: 1.75rem !default;
34
+ $font-size-h4: 1.5rem !default;
35
+ $font-size-h5: 1.25rem !default;
36
+ $font-size-h6: 1rem !default;
37
+
38
+ $headings-margin-top: (1rem) !default;
39
+ $headings-margin-bottom: (1rem / 2) !default;
40
+ $headings-font-family: inherit !default;
41
+ $headings-font-weight: 500 !default;
42
+ $headings-line-height: 1.1 !default;
43
+ $headings-color: inherit !default;
44
+
45
+ $dt-font-weight: $font-weight-bold !default;
46
+
47
+ // Tables
48
+ $table-cell-padding: 0.75rem !default;
49
+
50
+ // Media Query Breakpoints
51
+ $screen-phone: 480px !default;
52
+
53
+ $screen-tablet: 768px !default;
54
+
55
+ $screen-desktop: 992px !default;
56
+
57
+ $screen-wide-desktop: 1200px !default;
@@ -0,0 +1,46 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="UTF-8">
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+
7
+ <link rel="stylesheet" href="main.css">
8
+
9
+ <title>Mako for <%= today %></title>
10
+ </head>
11
+ <body>
12
+ <header id="banner">
13
+ <h1 class="banner-text">Mako 🥛 </h1>
14
+ <h4 class="banner-text"><%= today %></h4>
15
+ </header>
16
+
17
+ <nav id="quick-nav">
18
+ <%= quick_nav(feeds) %>
19
+ </nav>
20
+
21
+ <section id="feed-container">
22
+ <% feeds.select { |f| f.articles.size.positive? }.each_with_index do |feed, index| %>
23
+ <section>
24
+ <header class="article-header">
25
+ <h1><a href="<%= feed.url %>" id=<%= "feed-#{index}" %>><%= h(feed.title) %></a></h1>
26
+ </header>
27
+ <% feed.articles_desc.each do |article| %>
28
+ <article>
29
+ <h3><a href="<%= article.url %>"><%= h(article.title) %></a></h3>
30
+ <p class="meta"><%= article.formatted_published %></p>
31
+ <%= article.summary %>
32
+ <p class="back-to-top"><a href="#banner">Back to Top</a></p>
33
+ </article>
34
+ <hr />
35
+ <% end %>
36
+ </section>
37
+ <% end %>
38
+ </section>
39
+
40
+ <footer id="footer">
41
+ <p class="meta">Last updated: <%= last_updated %></p>
42
+
43
+ <a class="meta" href="https://github.com/jonathanpike/mako">About</a>
44
+ </footer>
45
+ </body>
46
+ </html>
@@ -0,0 +1,6 @@
1
+ // Imports
2
+ @import "sass/variables";
3
+ @import "sass/reboot";
4
+ @import "sass/fonts";
5
+ @import "sass/layout";
6
+ @import "sass/utilities";
data/mako_rss.gemspec ADDED
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path('../lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'mako/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = 'mako_rss'
10
+ spec.version = Mako::VERSION
11
+ spec.authors = ['Jonathan Pike']
12
+ spec.email = ['jonathan.d.s.pike@gmail.com']
13
+
14
+ spec.summary = 'A static site feed reader'
15
+ spec.homepage = 'https://github.com/jonathanpike/mako'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
20
+ end
21
+ spec.bindir = 'bin'
22
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
24
+
25
+ spec.add_development_dependency 'bundler', '~> 1.14'
26
+ spec.add_development_dependency 'rake', '~> 12.0'
27
+ spec.add_development_dependency 'minitest', '~> 5.1'
28
+ spec.add_development_dependency 'vcr', '~> 3.0'
29
+ spec.add_development_dependency 'rubocop', '~> 0.49'
30
+ spec.add_development_dependency 'coveralls', '~> 0.8'
31
+
32
+ spec.add_runtime_dependency 'feedjira', '~> 2.0'
33
+ spec.add_runtime_dependency 'faraday', '~> 0.12'
34
+ spec.add_runtime_dependency 'nokogiri', '~> 1.8'
35
+ spec.add_runtime_dependency 'sass', '~> 3.4'
36
+ end