dugway 0.5.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.
Files changed (125) hide show
  1. data/.gitignore +7 -0
  2. data/.travis.yml +3 -0
  3. data/Gemfile +2 -0
  4. data/README.md +151 -0
  5. data/Rakefile +12 -0
  6. data/bin/dugway +7 -0
  7. data/dugway.gemspec +43 -0
  8. data/lib/dugway.rb +66 -0
  9. data/lib/dugway/application.rb +147 -0
  10. data/lib/dugway/cart.rb +144 -0
  11. data/lib/dugway/cli.rb +22 -0
  12. data/lib/dugway/cli/build.rb +56 -0
  13. data/lib/dugway/cli/create.rb +71 -0
  14. data/lib/dugway/cli/server.rb +37 -0
  15. data/lib/dugway/cli/templates/Gemfile.tt +2 -0
  16. data/lib/dugway/cli/templates/config.tt +24 -0
  17. data/lib/dugway/cli/templates/gitignore.tt +9 -0
  18. data/lib/dugway/cli/templates/source/cart.html +40 -0
  19. data/lib/dugway/cli/templates/source/checkout.html +33 -0
  20. data/lib/dugway/cli/templates/source/contact.html +37 -0
  21. data/lib/dugway/cli/templates/source/home.html +25 -0
  22. data/lib/dugway/cli/templates/source/images/badge.png +0 -0
  23. data/lib/dugway/cli/templates/source/javascripts/cart.js.coffee +7 -0
  24. data/lib/dugway/cli/templates/source/javascripts/product.js.coffee +7 -0
  25. data/lib/dugway/cli/templates/source/layout.html +101 -0
  26. data/lib/dugway/cli/templates/source/maintenance.html +20 -0
  27. data/lib/dugway/cli/templates/source/product.html +65 -0
  28. data/lib/dugway/cli/templates/source/products.html +25 -0
  29. data/lib/dugway/cli/templates/source/screenshot.jpg +0 -0
  30. data/lib/dugway/cli/templates/source/scripts.js +19 -0
  31. data/lib/dugway/cli/templates/source/settings.json +71 -0
  32. data/lib/dugway/cli/templates/source/styles.css +27 -0
  33. data/lib/dugway/cli/templates/source/stylesheets/cart.css.sass +38 -0
  34. data/lib/dugway/cli/templates/source/stylesheets/layout.css.sass +103 -0
  35. data/lib/dugway/cli/templates/source/stylesheets/product.css.sass +19 -0
  36. data/lib/dugway/cli/templates/source/stylesheets/products.css.sass +20 -0
  37. data/lib/dugway/cli/templates/source/stylesheets/vendor/normalize.css +396 -0
  38. data/lib/dugway/cli/templates/source/success.html +5 -0
  39. data/lib/dugway/controller.rb +148 -0
  40. data/lib/dugway/data/locales/cs.yml +26 -0
  41. data/lib/dugway/data/locales/da.yml +26 -0
  42. data/lib/dugway/data/locales/en-AU.yml +26 -0
  43. data/lib/dugway/data/locales/en-GB.yml +26 -0
  44. data/lib/dugway/data/locales/en-PH.yml +27 -0
  45. data/lib/dugway/data/locales/en-US.yml +26 -0
  46. data/lib/dugway/data/locales/es-MX.yml +26 -0
  47. data/lib/dugway/data/locales/eu.yml +26 -0
  48. data/lib/dugway/data/locales/gsw-CH.yml +26 -0
  49. data/lib/dugway/data/locales/hu.yml +26 -0
  50. data/lib/dugway/data/locales/il.yml +26 -0
  51. data/lib/dugway/data/locales/ja.yml +30 -0
  52. data/lib/dugway/data/locales/ms-MY.yml +26 -0
  53. data/lib/dugway/data/locales/nb.yml +22 -0
  54. data/lib/dugway/data/locales/pl.yml +27 -0
  55. data/lib/dugway/data/locales/pt-BR.yml +26 -0
  56. data/lib/dugway/data/locales/sv-SE.yml +26 -0
  57. data/lib/dugway/data/locales/th.yml +26 -0
  58. data/lib/dugway/data/locales/tr.yml +29 -0
  59. data/lib/dugway/data/locales/zh-TW.yml +30 -0
  60. data/lib/dugway/data/theme_fonts.yml +151 -0
  61. data/lib/dugway/extensions/time.rb +15 -0
  62. data/lib/dugway/liquid/drops/account_drop.rb +17 -0
  63. data/lib/dugway/liquid/drops/artist_drop.rb +9 -0
  64. data/lib/dugway/liquid/drops/artists_drop.rb +13 -0
  65. data/lib/dugway/liquid/drops/base_drop.rb +59 -0
  66. data/lib/dugway/liquid/drops/cart_drop.rb +13 -0
  67. data/lib/dugway/liquid/drops/cart_item_drop.rb +21 -0
  68. data/lib/dugway/liquid/drops/categories_drop.rb +13 -0
  69. data/lib/dugway/liquid/drops/category_drop.rb +9 -0
  70. data/lib/dugway/liquid/drops/contact_drop.rb +29 -0
  71. data/lib/dugway/liquid/drops/country_drop.rb +6 -0
  72. data/lib/dugway/liquid/drops/currency_drop.rb +6 -0
  73. data/lib/dugway/liquid/drops/image_drop.rb +6 -0
  74. data/lib/dugway/liquid/drops/page_drop.rb +13 -0
  75. data/lib/dugway/liquid/drops/pages_drop.rb +9 -0
  76. data/lib/dugway/liquid/drops/product_drop.rb +101 -0
  77. data/lib/dugway/liquid/drops/product_option_drop.rb +27 -0
  78. data/lib/dugway/liquid/drops/products_drop.rb +75 -0
  79. data/lib/dugway/liquid/drops/shipping_option_drop.rb +13 -0
  80. data/lib/dugway/liquid/drops/theme_drop.rb +23 -0
  81. data/lib/dugway/liquid/filters/comparison_filters.rb +48 -0
  82. data/lib/dugway/liquid/filters/core_filters.rb +138 -0
  83. data/lib/dugway/liquid/filters/default_pagination.rb +35 -0
  84. data/lib/dugway/liquid/filters/font_filters.rb +9 -0
  85. data/lib/dugway/liquid/filters/url_filters.rb +66 -0
  86. data/lib/dugway/liquid/filters/util_filters.rb +119 -0
  87. data/lib/dugway/liquid/tags/checkout_form.rb +9 -0
  88. data/lib/dugway/liquid/tags/get.rb +58 -0
  89. data/lib/dugway/liquid/tags/paginate.rb +129 -0
  90. data/lib/dugway/liquifier.rb +122 -0
  91. data/lib/dugway/logger.rb +16 -0
  92. data/lib/dugway/request.rb +36 -0
  93. data/lib/dugway/store.rb +166 -0
  94. data/lib/dugway/template.rb +44 -0
  95. data/lib/dugway/theme.rb +145 -0
  96. data/lib/dugway/theme_font.rb +68 -0
  97. data/lib/dugway/version.rb +3 -0
  98. data/spec/fixtures/store/page/about-us.js +1 -0
  99. data/spec/fixtures/store/products.js +1 -0
  100. data/spec/fixtures/store/store.js +1 -0
  101. data/spec/fixtures/theme/cart.html +33 -0
  102. data/spec/fixtures/theme/checkout.html +31 -0
  103. data/spec/fixtures/theme/contact.html +37 -0
  104. data/spec/fixtures/theme/home.html +38 -0
  105. data/spec/fixtures/theme/images/bc_badge.png +0 -0
  106. data/spec/fixtures/theme/javascripts/one.js +3 -0
  107. data/spec/fixtures/theme/javascripts/two.js.coffee +2 -0
  108. data/spec/fixtures/theme/layout.html +77 -0
  109. data/spec/fixtures/theme/maintenance.html +17 -0
  110. data/spec/fixtures/theme/product.html +73 -0
  111. data/spec/fixtures/theme/products.html +41 -0
  112. data/spec/fixtures/theme/screenshot.jpg +0 -0
  113. data/spec/fixtures/theme/scripts.js +2 -0
  114. data/spec/fixtures/theme/settings.json +55 -0
  115. data/spec/fixtures/theme/styles.css +4 -0
  116. data/spec/fixtures/theme/stylesheets/one.css +3 -0
  117. data/spec/fixtures/theme/stylesheets/two.css.sass +4 -0
  118. data/spec/fixtures/theme/success.html +5 -0
  119. data/spec/spec_helper.rb +24 -0
  120. data/spec/units/dugway/request_spec.rb +206 -0
  121. data/spec/units/dugway/store_spec.rb +194 -0
  122. data/spec/units/dugway/template_spec.rb +145 -0
  123. data/spec/units/dugway/theme_font_spec.rb +136 -0
  124. data/spec/units/dugway_spec.rb +9 -0
  125. metadata +549 -0
@@ -0,0 +1,103 @@
1
+ $marginSize: 30px
2
+ $border: dashed 1px #ddd
3
+
4
+ body
5
+ background: {{ theme.background_color }}
6
+ color: {{ theme.text_color }}
7
+ font: 14px/1.4 normal {{ theme.text_font | font_family }}
8
+ margin: 100px
9
+
10
+ a
11
+ color: #72C29B
12
+ text-decoration: none
13
+
14
+ &:hover
15
+ color: #60AA85
16
+
17
+ ul, ol
18
+ list-style: none
19
+ padding: 0
20
+
21
+ header
22
+ border-bottom: $border
23
+ font-family: {{ theme.header_font | font_family }}
24
+ margin-bottom: $marginSize
25
+ padding-bottom: $marginSize
26
+ text-align: center
27
+
28
+ a
29
+ color: #666
30
+ font-size: 2.5em
31
+
32
+ &:hover
33
+ color: #333
34
+
35
+ h1, h2, h3, h4, h5
36
+ font-family: {{ theme.header_font | font_family }}
37
+
38
+ div.wrap
39
+ display: table
40
+ width: 100%
41
+
42
+ aside
43
+ border-right: $border
44
+ display: table-cell
45
+ padding-right: $marginSize
46
+ width: 20%
47
+
48
+ section
49
+ margin-bottom: 1.5em
50
+
51
+ ul
52
+ margin-bottom: 1.5em
53
+ margin-top: 0
54
+
55
+ li
56
+ margin-bottom: .3em
57
+
58
+ a
59
+ color: #999
60
+ font-size: .9em
61
+
62
+ &:hover
63
+ color: #333
64
+
65
+ cite a
66
+ background: url({{ 'badge.png' | theme_image_url }}) no-repeat
67
+ border: none
68
+ display: block
69
+ height: 23px
70
+ overflow: hidden
71
+ text-indent: 100%
72
+ width: 79px
73
+ white-space: nowrap
74
+
75
+ section.content
76
+ display: table-cell
77
+ padding-left: $marginSize
78
+ width: 80%
79
+
80
+ form
81
+ li
82
+ margin-bottom: 1.2em
83
+
84
+ label
85
+ display: block
86
+ margin-bottom: .2em
87
+
88
+ input,
89
+ textarea
90
+ border: 1px solid #ddd
91
+ padding: 5px
92
+ width: 350px
93
+
94
+
95
+ .errors
96
+ border-top: 1px soldi #A65A5A
97
+ margin-bottom: 3em
98
+
99
+ li
100
+ background: #D97576
101
+ border-bottom: 1px soldi #A65A5A
102
+ color: #fff
103
+ padding: 3px 10px
@@ -0,0 +1,19 @@
1
+ body#product
2
+ section.content
3
+ .product_images
4
+ overflow: hidden
5
+
6
+ li
7
+ float: left
8
+ margin-right: 18px
9
+ border: 3px solid #eee
10
+
11
+ li.selected
12
+ border-color: #72c29b
13
+
14
+ aside
15
+ float: right
16
+ border-left: dashed 1px #ddd
17
+ border-right: none
18
+ margin-left: 30px
19
+ padding-left: 30px
@@ -0,0 +1,20 @@
1
+ $marginSize: 30px
2
+ $border: dashed 1px #ddd
3
+
4
+ body#home, body#products
5
+ section.content
6
+ ul
7
+ overflow: hidden
8
+
9
+ li.product
10
+ float: left
11
+ margin-bottom: $marginSize
12
+ margin-right: $marginSize
13
+
14
+ img
15
+ display: block
16
+ margin-bottom: $marginSize / 2
17
+
18
+ div.pagination
19
+ clear: both
20
+
@@ -0,0 +1,396 @@
1
+ /*! normalize.css v2.1.0 | MIT License | git.io/normalize */
2
+
3
+ /* ==========================================================================
4
+ HTML5 display definitions
5
+ ========================================================================== */
6
+
7
+ /**
8
+ * Correct `block` display not defined in IE 8/9.
9
+ */
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ main,
20
+ nav,
21
+ section,
22
+ summary {
23
+ display: block;
24
+ }
25
+
26
+ /**
27
+ * Correct `inline-block` display not defined in IE 8/9.
28
+ */
29
+
30
+ audio,
31
+ canvas,
32
+ video {
33
+ display: inline-block;
34
+ }
35
+
36
+ /**
37
+ * Prevent modern browsers from displaying `audio` without controls.
38
+ * Remove excess height in iOS 5 devices.
39
+ */
40
+
41
+ audio:not([controls]) {
42
+ display: none;
43
+ height: 0;
44
+ }
45
+
46
+ /**
47
+ * Address styling not present in IE 8/9.
48
+ */
49
+
50
+ [hidden] {
51
+ display: none;
52
+ }
53
+
54
+ /* ==========================================================================
55
+ Base
56
+ ========================================================================== */
57
+
58
+ /**
59
+ * 1. Set default font family to sans-serif.
60
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
61
+ * user zoom.
62
+ */
63
+
64
+ html {
65
+ font-family: sans-serif; /* 1 */
66
+ -webkit-text-size-adjust: 100%; /* 2 */
67
+ -ms-text-size-adjust: 100%; /* 2 */
68
+ }
69
+
70
+ /**
71
+ * Remove default margin.
72
+ */
73
+
74
+ body {
75
+ margin: 0;
76
+ }
77
+
78
+ /* ==========================================================================
79
+ Links
80
+ ========================================================================== */
81
+
82
+ /**
83
+ * Address `outline` inconsistency between Chrome and other browsers.
84
+ */
85
+
86
+ a:focus {
87
+ outline: thin dotted;
88
+ }
89
+
90
+ /**
91
+ * Improve readability when focused and also mouse hovered in all browsers.
92
+ */
93
+
94
+ a:active,
95
+ a:hover {
96
+ outline: 0;
97
+ }
98
+
99
+ /* ==========================================================================
100
+ Typography
101
+ ========================================================================== */
102
+
103
+ /**
104
+ * Address variable `h1` font-size and margin within `section` and `article`
105
+ * contexts in Firefox 4+, Safari 5, and Chrome.
106
+ */
107
+
108
+ h1 {
109
+ font-size: 2em;
110
+ margin: 0.67em 0;
111
+ }
112
+
113
+ /**
114
+ * Address styling not present in IE 8/9, Safari 5, and Chrome.
115
+ */
116
+
117
+ abbr[title] {
118
+ border-bottom: 1px dotted;
119
+ }
120
+
121
+ /**
122
+ * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
123
+ */
124
+
125
+ b,
126
+ strong {
127
+ font-weight: bold;
128
+ }
129
+
130
+ /**
131
+ * Address styling not present in Safari 5 and Chrome.
132
+ */
133
+
134
+ dfn {
135
+ font-style: italic;
136
+ }
137
+
138
+ /**
139
+ * Address differences between Firefox and other browsers.
140
+ */
141
+
142
+ hr {
143
+ -moz-box-sizing: content-box;
144
+ box-sizing: content-box;
145
+ height: 0;
146
+ }
147
+
148
+ /**
149
+ * Address styling not present in IE 8/9.
150
+ */
151
+
152
+ mark {
153
+ background: #ff0;
154
+ color: #000;
155
+ }
156
+
157
+ /**
158
+ * Correct font family set oddly in Safari 5 and Chrome.
159
+ */
160
+
161
+ code,
162
+ kbd,
163
+ pre,
164
+ samp {
165
+ font-family: monospace, serif;
166
+ font-size: 1em;
167
+ }
168
+
169
+ /**
170
+ * Improve readability of pre-formatted text in all browsers.
171
+ */
172
+
173
+ pre {
174
+ white-space: pre-wrap;
175
+ }
176
+
177
+ /**
178
+ * Set consistent quote types.
179
+ */
180
+
181
+ q {
182
+ quotes: "\201C" "\201D" "\2018" "\2019";
183
+ }
184
+
185
+ /**
186
+ * Address inconsistent and variable font size in all browsers.
187
+ */
188
+
189
+ small {
190
+ font-size: 80%;
191
+ }
192
+
193
+ /**
194
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
195
+ */
196
+
197
+ sub,
198
+ sup {
199
+ font-size: 75%;
200
+ line-height: 0;
201
+ position: relative;
202
+ vertical-align: baseline;
203
+ }
204
+
205
+ sup {
206
+ top: -0.5em;
207
+ }
208
+
209
+ sub {
210
+ bottom: -0.25em;
211
+ }
212
+
213
+ /* ==========================================================================
214
+ Embedded content
215
+ ========================================================================== */
216
+
217
+ /**
218
+ * Remove border when inside `a` element in IE 8/9.
219
+ */
220
+
221
+ img {
222
+ border: 0;
223
+ }
224
+
225
+ /**
226
+ * Correct overflow displayed oddly in IE 9.
227
+ */
228
+
229
+ svg:not(:root) {
230
+ overflow: hidden;
231
+ }
232
+
233
+ /* ==========================================================================
234
+ Figures
235
+ ========================================================================== */
236
+
237
+ /**
238
+ * Address margin not present in IE 8/9 and Safari 5.
239
+ */
240
+
241
+ figure {
242
+ margin: 0;
243
+ }
244
+
245
+ /* ==========================================================================
246
+ Forms
247
+ ========================================================================== */
248
+
249
+ /**
250
+ * Define consistent border, margin, and padding.
251
+ */
252
+
253
+ fieldset {
254
+ border: 1px solid #c0c0c0;
255
+ margin: 0 2px;
256
+ padding: 0.35em 0.625em 0.75em;
257
+ }
258
+
259
+ /**
260
+ * 1. Correct `color` not being inherited in IE 8/9.
261
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
262
+ */
263
+
264
+ legend {
265
+ border: 0; /* 1 */
266
+ padding: 0; /* 2 */
267
+ }
268
+
269
+ /**
270
+ * 1. Correct font family not being inherited in all browsers.
271
+ * 2. Correct font size not being inherited in all browsers.
272
+ * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
273
+ */
274
+
275
+ button,
276
+ input,
277
+ select,
278
+ textarea {
279
+ font-family: inherit; /* 1 */
280
+ font-size: 100%; /* 2 */
281
+ margin: 0; /* 3 */
282
+ }
283
+
284
+ /**
285
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
286
+ * the UA stylesheet.
287
+ */
288
+
289
+ button,
290
+ input {
291
+ line-height: normal;
292
+ }
293
+
294
+ /**
295
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
296
+ * All other form control elements do not inherit `text-transform` values.
297
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
298
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
299
+ */
300
+
301
+ button,
302
+ select {
303
+ text-transform: none;
304
+ }
305
+
306
+ /**
307
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
308
+ * and `video` controls.
309
+ * 2. Correct inability to style clickable `input` types in iOS.
310
+ * 3. Improve usability and consistency of cursor style between image-type
311
+ * `input` and others.
312
+ */
313
+
314
+ button,
315
+ html input[type="button"], /* 1 */
316
+ input[type="reset"],
317
+ input[type="submit"] {
318
+ -webkit-appearance: button; /* 2 */
319
+ cursor: pointer; /* 3 */
320
+ }
321
+
322
+ /**
323
+ * Re-set default cursor for disabled elements.
324
+ */
325
+
326
+ button[disabled],
327
+ html input[disabled] {
328
+ cursor: default;
329
+ }
330
+
331
+ /**
332
+ * 1. Address box sizing set to `content-box` in IE 8/9.
333
+ * 2. Remove excess padding in IE 8/9.
334
+ */
335
+
336
+ input[type="checkbox"],
337
+ input[type="radio"] {
338
+ box-sizing: border-box; /* 1 */
339
+ padding: 0; /* 2 */
340
+ }
341
+
342
+ /**
343
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
344
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
345
+ * (include `-moz` to future-proof).
346
+ */
347
+
348
+ input[type="search"] {
349
+ -webkit-appearance: textfield; /* 1 */
350
+ -moz-box-sizing: content-box;
351
+ -webkit-box-sizing: content-box; /* 2 */
352
+ box-sizing: content-box;
353
+ }
354
+
355
+ /**
356
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
357
+ * on OS X.
358
+ */
359
+
360
+ input[type="search"]::-webkit-search-cancel-button,
361
+ input[type="search"]::-webkit-search-decoration {
362
+ -webkit-appearance: none;
363
+ }
364
+
365
+ /**
366
+ * Remove inner padding and border in Firefox 4+.
367
+ */
368
+
369
+ button::-moz-focus-inner,
370
+ input::-moz-focus-inner {
371
+ border: 0;
372
+ padding: 0;
373
+ }
374
+
375
+ /**
376
+ * 1. Remove default vertical scrollbar in IE 8/9.
377
+ * 2. Improve readability and alignment in all browsers.
378
+ */
379
+
380
+ textarea {
381
+ overflow: auto; /* 1 */
382
+ vertical-align: top; /* 2 */
383
+ }
384
+
385
+ /* ==========================================================================
386
+ Tables
387
+ ========================================================================== */
388
+
389
+ /**
390
+ * Remove most spacing between table cells.
391
+ */
392
+
393
+ table {
394
+ border-collapse: collapse;
395
+ border-spacing: 0;
396
+ }