wayfarer 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rbenv-gemsets +1 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +21 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +5 -0
  8. data/.yardopts +3 -0
  9. data/Changelog.md +10 -0
  10. data/Gemfile +11 -0
  11. data/LICENSE +19 -0
  12. data/README.md +21 -0
  13. data/Rakefile +114 -0
  14. data/benchmark/frontiers.rb +143 -0
  15. data/bin/wayfarer +116 -0
  16. data/docs/.gitignore +2 -0
  17. data/docs/_config.yml +15 -0
  18. data/docs/_includes/base.html +7 -0
  19. data/docs/_includes/head.html +10 -0
  20. data/docs/_includes/navigation.html +187 -0
  21. data/docs/_layouts/default.html +42 -0
  22. data/docs/_sass/base.scss +439 -0
  23. data/docs/_sass/variables.scss +24 -0
  24. data/docs/_sass/vendor/bourbon/_bourbon-deprecate.scss +19 -0
  25. data/docs/_sass/vendor/bourbon/_bourbon-deprecated-upcoming.scss +425 -0
  26. data/docs/_sass/vendor/bourbon/_bourbon.scss +90 -0
  27. data/docs/_sass/vendor/bourbon/addons/_border-color.scss +29 -0
  28. data/docs/_sass/vendor/bourbon/addons/_border-radius.scss +48 -0
  29. data/docs/_sass/vendor/bourbon/addons/_border-style.scss +28 -0
  30. data/docs/_sass/vendor/bourbon/addons/_border-width.scss +28 -0
  31. data/docs/_sass/vendor/bourbon/addons/_buttons.scss +69 -0
  32. data/docs/_sass/vendor/bourbon/addons/_clearfix.scss +25 -0
  33. data/docs/_sass/vendor/bourbon/addons/_ellipsis.scss +30 -0
  34. data/docs/_sass/vendor/bourbon/addons/_font-stacks.scss +31 -0
  35. data/docs/_sass/vendor/bourbon/addons/_hide-text.scss +27 -0
  36. data/docs/_sass/vendor/bourbon/addons/_margin.scss +29 -0
  37. data/docs/_sass/vendor/bourbon/addons/_padding.scss +29 -0
  38. data/docs/_sass/vendor/bourbon/addons/_position.scss +51 -0
  39. data/docs/_sass/vendor/bourbon/addons/_prefixer.scss +66 -0
  40. data/docs/_sass/vendor/bourbon/addons/_retina-image.scss +27 -0
  41. data/docs/_sass/vendor/bourbon/addons/_size.scss +56 -0
  42. data/docs/_sass/vendor/bourbon/addons/_text-inputs.scss +118 -0
  43. data/docs/_sass/vendor/bourbon/addons/_timing-functions.scss +34 -0
  44. data/docs/_sass/vendor/bourbon/addons/_triangle.scss +63 -0
  45. data/docs/_sass/vendor/bourbon/addons/_word-wrap.scss +29 -0
  46. data/docs/_sass/vendor/bourbon/css3/_animation.scss +61 -0
  47. data/docs/_sass/vendor/bourbon/css3/_appearance.scss +5 -0
  48. data/docs/_sass/vendor/bourbon/css3/_backface-visibility.scss +5 -0
  49. data/docs/_sass/vendor/bourbon/css3/_background-image.scss +44 -0
  50. data/docs/_sass/vendor/bourbon/css3/_background.scss +57 -0
  51. data/docs/_sass/vendor/bourbon/css3/_border-image.scss +61 -0
  52. data/docs/_sass/vendor/bourbon/css3/_calc.scss +6 -0
  53. data/docs/_sass/vendor/bourbon/css3/_columns.scss +67 -0
  54. data/docs/_sass/vendor/bourbon/css3/_filter.scss +6 -0
  55. data/docs/_sass/vendor/bourbon/css3/_flex-box.scss +327 -0
  56. data/docs/_sass/vendor/bourbon/css3/_font-face.scss +29 -0
  57. data/docs/_sass/vendor/bourbon/css3/_font-feature-settings.scss +6 -0
  58. data/docs/_sass/vendor/bourbon/css3/_hidpi-media-query.scss +12 -0
  59. data/docs/_sass/vendor/bourbon/css3/_hyphens.scss +6 -0
  60. data/docs/_sass/vendor/bourbon/css3/_image-rendering.scss +15 -0
  61. data/docs/_sass/vendor/bourbon/css3/_keyframes.scss +38 -0
  62. data/docs/_sass/vendor/bourbon/css3/_linear-gradient.scss +40 -0
  63. data/docs/_sass/vendor/bourbon/css3/_perspective.scss +12 -0
  64. data/docs/_sass/vendor/bourbon/css3/_placeholder.scss +10 -0
  65. data/docs/_sass/vendor/bourbon/css3/_radial-gradient.scss +40 -0
  66. data/docs/_sass/vendor/bourbon/css3/_selection.scss +44 -0
  67. data/docs/_sass/vendor/bourbon/css3/_text-decoration.scss +27 -0
  68. data/docs/_sass/vendor/bourbon/css3/_transform.scss +21 -0
  69. data/docs/_sass/vendor/bourbon/css3/_transition.scss +81 -0
  70. data/docs/_sass/vendor/bourbon/css3/_user-select.scss +5 -0
  71. data/docs/_sass/vendor/bourbon/functions/_assign-inputs.scss +16 -0
  72. data/docs/_sass/vendor/bourbon/functions/_contains-falsy.scss +25 -0
  73. data/docs/_sass/vendor/bourbon/functions/_contains.scss +31 -0
  74. data/docs/_sass/vendor/bourbon/functions/_is-length.scss +16 -0
  75. data/docs/_sass/vendor/bourbon/functions/_is-light.scss +26 -0
  76. data/docs/_sass/vendor/bourbon/functions/_is-number.scss +16 -0
  77. data/docs/_sass/vendor/bourbon/functions/_is-size.scss +23 -0
  78. data/docs/_sass/vendor/bourbon/functions/_modular-scale.scss +74 -0
  79. data/docs/_sass/vendor/bourbon/functions/_px-to-em.scss +24 -0
  80. data/docs/_sass/vendor/bourbon/functions/_px-to-rem.scss +26 -0
  81. data/docs/_sass/vendor/bourbon/functions/_shade.scss +24 -0
  82. data/docs/_sass/vendor/bourbon/functions/_strip-units.scss +22 -0
  83. data/docs/_sass/vendor/bourbon/functions/_tint.scss +24 -0
  84. data/docs/_sass/vendor/bourbon/functions/_transition-property-name.scss +37 -0
  85. data/docs/_sass/vendor/bourbon/functions/_unpack.scss +32 -0
  86. data/docs/_sass/vendor/bourbon/helpers/_convert-units.scss +26 -0
  87. data/docs/_sass/vendor/bourbon/helpers/_directional-values.scss +108 -0
  88. data/docs/_sass/vendor/bourbon/helpers/_font-source-declaration.scss +53 -0
  89. data/docs/_sass/vendor/bourbon/helpers/_gradient-positions-parser.scss +24 -0
  90. data/docs/_sass/vendor/bourbon/helpers/_linear-angle-parser.scss +35 -0
  91. data/docs/_sass/vendor/bourbon/helpers/_linear-gradient-parser.scss +51 -0
  92. data/docs/_sass/vendor/bourbon/helpers/_linear-positions-parser.scss +77 -0
  93. data/docs/_sass/vendor/bourbon/helpers/_linear-side-corner-parser.scss +41 -0
  94. data/docs/_sass/vendor/bourbon/helpers/_radial-arg-parser.scss +74 -0
  95. data/docs/_sass/vendor/bourbon/helpers/_radial-gradient-parser.scss +55 -0
  96. data/docs/_sass/vendor/bourbon/helpers/_radial-positions-parser.scss +28 -0
  97. data/docs/_sass/vendor/bourbon/helpers/_render-gradients.scss +31 -0
  98. data/docs/_sass/vendor/bourbon/helpers/_shape-size-stripper.scss +15 -0
  99. data/docs/_sass/vendor/bourbon/helpers/_str-to-num.scss +55 -0
  100. data/docs/_sass/vendor/bourbon/settings/_asset-pipeline.scss +7 -0
  101. data/docs/_sass/vendor/bourbon/settings/_deprecation-warnings.scss +8 -0
  102. data/docs/_sass/vendor/bourbon/settings/_prefixer.scss +9 -0
  103. data/docs/_sass/vendor/bourbon/settings/_px-to-em.scss +1 -0
  104. data/docs/_sass/vendor/neat/_neat-helpers.scss +11 -0
  105. data/docs/_sass/vendor/neat/_neat.scss +23 -0
  106. data/docs/_sass/vendor/neat/functions/_new-breakpoint.scss +49 -0
  107. data/docs/_sass/vendor/neat/functions/_private.scss +114 -0
  108. data/docs/_sass/vendor/neat/grid/_box-sizing.scss +15 -0
  109. data/docs/_sass/vendor/neat/grid/_direction-context.scss +33 -0
  110. data/docs/_sass/vendor/neat/grid/_display-context.scss +28 -0
  111. data/docs/_sass/vendor/neat/grid/_fill-parent.scss +22 -0
  112. data/docs/_sass/vendor/neat/grid/_media.scss +92 -0
  113. data/docs/_sass/vendor/neat/grid/_omega.scss +87 -0
  114. data/docs/_sass/vendor/neat/grid/_outer-container.scss +34 -0
  115. data/docs/_sass/vendor/neat/grid/_pad.scss +25 -0
  116. data/docs/_sass/vendor/neat/grid/_private.scss +35 -0
  117. data/docs/_sass/vendor/neat/grid/_row.scss +52 -0
  118. data/docs/_sass/vendor/neat/grid/_shift.scss +50 -0
  119. data/docs/_sass/vendor/neat/grid/_span-columns.scss +94 -0
  120. data/docs/_sass/vendor/neat/grid/_to-deprecate.scss +97 -0
  121. data/docs/_sass/vendor/neat/grid/_visual-grid.scss +42 -0
  122. data/docs/_sass/vendor/neat/mixins/_clearfix.scss +25 -0
  123. data/docs/_sass/vendor/neat/settings/_disable-warnings.scss +13 -0
  124. data/docs/_sass/vendor/neat/settings/_grid.scss +51 -0
  125. data/docs/_sass/vendor/neat/settings/_visual-grid.scss +27 -0
  126. data/docs/_sass/vendor/normalize-3.0.2.scss +427 -0
  127. data/docs/_sass/vendor/pygments.scss +356 -0
  128. data/docs/automating_browsers/capybara.md +70 -0
  129. data/docs/css/screen.scss +7 -0
  130. data/docs/guides/callbacks.md +45 -0
  131. data/docs/guides/cli.md +52 -0
  132. data/docs/guides/configuration.md +184 -0
  133. data/docs/guides/error_handling.md +46 -0
  134. data/docs/guides/frontiers.md +93 -0
  135. data/docs/guides/halting.md +23 -0
  136. data/docs/guides/job_queues.md +26 -0
  137. data/docs/guides/locals.md +36 -0
  138. data/docs/guides/logging.md +22 -0
  139. data/docs/guides/page_objects.md +67 -0
  140. data/docs/guides/peeking.md +46 -0
  141. data/docs/guides/selenium_capybara.md +100 -0
  142. data/docs/guides/tutorial.md +452 -0
  143. data/docs/index.md +82 -0
  144. data/docs/js/navigation.js +11 -0
  145. data/docs/misc/contributing.md +20 -0
  146. data/docs/misc/testing.md +11 -0
  147. data/docs/recipes/authentication.md +23 -0
  148. data/docs/recipes/csv.md +29 -0
  149. data/docs/recipes/javascript.md +20 -0
  150. data/docs/recipes/multiple_uris.md +18 -0
  151. data/docs/recipes/screenshots.md +20 -0
  152. data/docs/routing/custom_rules.md +16 -0
  153. data/docs/routing/filetypes_rules.md +21 -0
  154. data/docs/routing/host_rules.md +24 -0
  155. data/docs/routing/path_rules.md +33 -0
  156. data/docs/routing/protocol_rules.md +17 -0
  157. data/docs/routing/query_rules.md +69 -0
  158. data/docs/routing/routes.md +96 -0
  159. data/docs/routing/uri_rules.md +18 -0
  160. data/examples/collect_github_issues.rb +65 -0
  161. data/examples/find_foobar_on_wikipedia.rb +23 -0
  162. data/lib/wayfarer/configuration.rb +86 -0
  163. data/lib/wayfarer/crawl.rb +79 -0
  164. data/lib/wayfarer/crawl_observer.rb +103 -0
  165. data/lib/wayfarer/dispatcher.rb +104 -0
  166. data/lib/wayfarer/finders.rb +61 -0
  167. data/lib/wayfarer/frontiers/frontier.rb +79 -0
  168. data/lib/wayfarer/frontiers/memory_bloomfilter.rb +32 -0
  169. data/lib/wayfarer/frontiers/memory_frontier.rb +76 -0
  170. data/lib/wayfarer/frontiers/memory_trie_frontier.rb +39 -0
  171. data/lib/wayfarer/frontiers/normalize_uris.rb +48 -0
  172. data/lib/wayfarer/frontiers/redis_bloomfilter.rb +34 -0
  173. data/lib/wayfarer/frontiers/redis_frontier.rb +83 -0
  174. data/lib/wayfarer/http_adapters/adapter_pool.rb +62 -0
  175. data/lib/wayfarer/http_adapters/net_http_adapter.rb +77 -0
  176. data/lib/wayfarer/http_adapters/selenium_adapter.rb +80 -0
  177. data/lib/wayfarer/job.rb +211 -0
  178. data/lib/wayfarer/locals.rb +40 -0
  179. data/lib/wayfarer/page.rb +94 -0
  180. data/lib/wayfarer/parsers/json_parser.rb +20 -0
  181. data/lib/wayfarer/parsers/xml_parser.rb +27 -0
  182. data/lib/wayfarer/processor.rb +103 -0
  183. data/lib/wayfarer/routing/custom_rule.rb +21 -0
  184. data/lib/wayfarer/routing/filetypes_rule.rb +20 -0
  185. data/lib/wayfarer/routing/host_rule.rb +19 -0
  186. data/lib/wayfarer/routing/path_rule.rb +54 -0
  187. data/lib/wayfarer/routing/protocol_rule.rb +21 -0
  188. data/lib/wayfarer/routing/query_rule.rb +59 -0
  189. data/lib/wayfarer/routing/router.rb +71 -0
  190. data/lib/wayfarer/routing/rule.rb +114 -0
  191. data/lib/wayfarer/routing/uri_rule.rb +21 -0
  192. data/lib/wayfarer.rb +68 -0
  193. data/spec/configuration_spec.rb +26 -0
  194. data/spec/crawl_spec.rb +48 -0
  195. data/spec/finders_spec.rb +49 -0
  196. data/spec/frontiers/memory_bloomfilter_spec.rb +6 -0
  197. data/spec/frontiers/memory_frontier_spec.rb +6 -0
  198. data/spec/frontiers/memory_trie_frontier_spec.rb +6 -0
  199. data/spec/frontiers/normalize_uris_spec.rb +59 -0
  200. data/spec/frontiers/redis_bloomfilter_spec.rb +6 -0
  201. data/spec/frontiers/redis_frontier_spec.rb +6 -0
  202. data/spec/http_adapters/adapter_pool_spec.rb +33 -0
  203. data/spec/http_adapters/net_http_adapter_spec.rb +83 -0
  204. data/spec/http_adapters/selenium_adapter_spec.rb +53 -0
  205. data/spec/integration/callbacks_spec.rb +42 -0
  206. data/spec/integration/locals_spec.rb +106 -0
  207. data/spec/integration/peeking_spec.rb +61 -0
  208. data/spec/job_spec.rb +122 -0
  209. data/spec/page_spec.rb +38 -0
  210. data/spec/parsers/json_parser_spec.rb +30 -0
  211. data/spec/parsers/xml_parser_spec.rb +24 -0
  212. data/spec/processor_spec.rb +31 -0
  213. data/spec/routing/custom_rule_spec.rb +26 -0
  214. data/spec/routing/filetypes_rule_spec.rb +40 -0
  215. data/spec/routing/host_rule_spec.rb +48 -0
  216. data/spec/routing/path_rule_spec.rb +66 -0
  217. data/spec/routing/protocol_rule_spec.rb +26 -0
  218. data/spec/routing/query_rule_spec.rb +124 -0
  219. data/spec/routing/router_spec.rb +67 -0
  220. data/spec/routing/rule_spec.rb +251 -0
  221. data/spec/routing/uri_rule_spec.rb +24 -0
  222. data/spec/shared/frontier.rb +96 -0
  223. data/spec/spec_helpers.rb +62 -0
  224. data/spec/wayfarer_spec.rb +24 -0
  225. data/support/static/finders.html +38 -0
  226. data/support/static/graph/details/a.html +10 -0
  227. data/support/static/graph/details/b.html +10 -0
  228. data/support/static/graph/index.html +20 -0
  229. data/support/static/json/dummy.json +13 -0
  230. data/support/static/links/links.html +28 -0
  231. data/support/static/xml/dummy.xml +120 -0
  232. data/support/test_app.rb +45 -0
  233. data/wayfarer-jruby.gemspec +49 -0
  234. data/wayfarer.gemspec +53 -0
  235. metadata +697 -0
@@ -0,0 +1,87 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Removes the element's gutter margin, regardless of its position in the grid hierarchy or display property. It can target a specific element, or every `nth-child` occurrence. Works only with `block` layouts.
4
+ ///
5
+ /// @param {List} $query [block]
6
+ /// List of arguments. Supported arguments are `nth-child` selectors (targets a specific pseudo element) and `auto` (targets `last-child`).
7
+ ///
8
+ /// When passed an `nth-child` argument of type `*n` with `block` display, the omega mixin automatically adds a clear to the `*n+1` th element. Note that composite arguments such as `2n+1` do not support this feature.
9
+ ///
10
+ /// **Deprecation warning**: The omega mixin will no longer take a `$direction` argument. To change the layout direction, use `row($direction)` or set `$default-layout-direction` instead.
11
+ ///
12
+ /// @example scss - Usage
13
+ /// .element {
14
+ /// @include omega;
15
+ /// }
16
+ ///
17
+ /// .nth-element {
18
+ /// @include omega(4n);
19
+ /// }
20
+ ///
21
+ /// @example css - CSS Output
22
+ /// .element {
23
+ /// margin-right: 0;
24
+ /// }
25
+ ///
26
+ /// .nth-element:nth-child(4n) {
27
+ /// margin-right: 0;
28
+ /// }
29
+ ///
30
+ /// .nth-element:nth-child(4n+1) {
31
+ /// clear: left;
32
+ /// }
33
+
34
+ @mixin omega($query: block, $direction: default) {
35
+ $table: belongs-to(table, $query);
36
+ $auto: belongs-to(auto, $query);
37
+
38
+ @if $direction != default {
39
+ @include -neat-warn("The omega mixin will no longer take a $direction argument. To change the layout direction, use the direction(){...} mixin.");
40
+ } @else {
41
+ $direction: get-direction($layout-direction, $default-layout-direction);
42
+ }
43
+
44
+ @if $table {
45
+ @include -neat-warn("The omega mixin no longer removes padding in table layouts.");
46
+ }
47
+
48
+ @if length($query) == 1 {
49
+ @if $auto {
50
+ &:last-child {
51
+ margin-#{$direction}: 0;
52
+ }
53
+ }
54
+
55
+ @else if contains-display-value($query) and $table == false {
56
+ margin-#{$direction}: 0;
57
+ }
58
+
59
+ @else {
60
+ @include nth-child($query, $direction);
61
+ }
62
+ } @else if length($query) == 2 {
63
+ @if $auto {
64
+ &:last-child {
65
+ margin-#{$direction}: 0;
66
+ }
67
+ } @else {
68
+ @include nth-child(nth($query, 1), $direction);
69
+ }
70
+ } @else {
71
+ @include -neat-warn("Too many arguments passed to the omega() mixin.");
72
+ }
73
+ }
74
+
75
+ @mixin nth-child($query, $direction) {
76
+ $opposite-direction: get-opposite-direction($direction);
77
+
78
+ &:nth-child(#{$query}) {
79
+ margin-#{$direction}: 0;
80
+ }
81
+
82
+ @if type-of($query) == number and unit($query) == "n" {
83
+ &:nth-child(#{$query}+1) {
84
+ clear: $opposite-direction;
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,34 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Makes an element a outer container by centering it in the viewport, clearing its floats, and setting its `max-width`.
4
+ /// Although optional, using `outer-container` is recommended. The mixin can be called on more than one element per page, as long as they are not nested.
5
+ ///
6
+ /// @param {Number [unit]} $local-max-width [$max-width]
7
+ /// Max width to be applied to the element. Can be a percentage or a measure.
8
+ ///
9
+ /// @example scss - Usage
10
+ /// .element {
11
+ /// @include outer-container(100%);
12
+ /// }
13
+ ///
14
+ /// @example css - CSS Output
15
+ /// .element {
16
+ /// max-width: 100%;
17
+ /// margin-left: auto;
18
+ /// margin-right: auto;
19
+ /// }
20
+ ///
21
+ /// .element::after {
22
+ /// clear: both;
23
+ /// content: "";
24
+ /// display: table;
25
+ /// }
26
+
27
+ @mixin outer-container($local-max-width: $max-width) {
28
+ @include clearfix;
29
+ max-width: $local-max-width;
30
+ margin: {
31
+ left: auto;
32
+ right: auto;
33
+ }
34
+ }
@@ -0,0 +1,25 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Adds padding to the element.
4
+ ///
5
+ /// @param {List} $padding [flex-gutter()]
6
+ /// A list of padding value(s) to use. Passing `default` in the list will result in using the gutter width as a padding value.
7
+ ///
8
+ /// @example scss - Usage
9
+ /// .element {
10
+ /// @include pad(30px -20px 10px default);
11
+ /// }
12
+ ///
13
+ /// @example css - CSS Output
14
+ /// .element {
15
+ /// padding: 30px -20px 10px 2.35765%;
16
+ /// }
17
+
18
+ @mixin pad($padding: flex-gutter()) {
19
+ $padding-list: null;
20
+ @each $value in $padding {
21
+ $value: if($value == 'default', flex-gutter(), $value);
22
+ $padding-list: join($padding-list, $value);
23
+ }
24
+ padding: $padding-list;
25
+ }
@@ -0,0 +1,35 @@
1
+ $parent-columns: $grid-columns !default;
2
+ $fg-column: $column;
3
+ $fg-gutter: $gutter;
4
+ $fg-max-columns: $grid-columns;
5
+ $container-display-table: false !default;
6
+ $layout-direction: LTR !default;
7
+
8
+ @function flex-grid($columns, $container-columns: $fg-max-columns) {
9
+ $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;
10
+ $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
11
+ @return percentage($width / $container-width);
12
+ }
13
+
14
+ @function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {
15
+ $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
16
+ @return percentage($gutter / $container-width);
17
+ }
18
+
19
+ @function grid-width($n) {
20
+ @return $n * $gw-column + ($n - 1) * $gw-gutter;
21
+ }
22
+
23
+ @function get-parent-columns($columns) {
24
+ @if $columns != $grid-columns {
25
+ $parent-columns: $columns !global;
26
+ } @else {
27
+ $parent-columns: $grid-columns !global;
28
+ }
29
+
30
+ @return $parent-columns;
31
+ }
32
+
33
+ @function is-display-table($container-is-display-table, $display) {
34
+ @return $container-is-display-table == true or $display == table;
35
+ }
@@ -0,0 +1,52 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Designates the element as a row of columns in the grid layout. It clears the floats on the element and sets its display property. Rows can't be nested, but there can be more than one row element—with different display properties—per layout.
4
+ ///
5
+ /// @param {String} $display [default]
6
+ /// Sets the display property of the element and the display context that will be used by its children. Can be `block` or `table`.
7
+ ///
8
+ /// @param {String} $direction [$default-layout-direction]
9
+ /// Sets the layout direction. Can be `LTR` (left-to-right) or `RTL` (right-to-left).
10
+ ///
11
+ /// @example scss - Usage
12
+ /// .element {
13
+ /// @include row();
14
+ /// }
15
+ ///
16
+ /// @example css - CSS Output
17
+ /// .element {
18
+ /// *zoom: 1;
19
+ /// display: block;
20
+ /// }
21
+ ///
22
+ /// .element:before, .element:after {
23
+ /// content: " ";
24
+ /// display: table;
25
+ /// }
26
+ ///
27
+ /// .element:after {
28
+ /// clear: both;
29
+ /// }
30
+
31
+ @mixin row($display: default, $direction: $default-layout-direction) {
32
+ @if $direction != $default-layout-direction {
33
+ @include -neat-warn("The $direction argument will be deprecated in future versions in favor of the direction(){...} mixin.");
34
+ }
35
+
36
+ $layout-direction: $direction !global;
37
+
38
+ @if $display != default {
39
+ @include -neat-warn("The $display argument will be deprecated in future versions in favor of the display(){...} mixin.");
40
+ }
41
+
42
+ @if $display == table {
43
+ display: table;
44
+ @include fill-parent;
45
+ table-layout: fixed;
46
+ $container-display-table: true !global;
47
+ } @else {
48
+ @include clearfix;
49
+ display: block;
50
+ $container-display-table: false !global;
51
+ }
52
+ }
@@ -0,0 +1,50 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Translates an element horizontally by a number of columns. Positive arguments shift the element to the active layout direction, while negative ones shift it to the opposite direction.
4
+ ///
5
+ /// @param {Number (unitless)} $n-columns [1]
6
+ /// Number of columns by which the element shifts.
7
+ ///
8
+ /// @example scss - Usage
9
+ /// .element {
10
+ /// @include shift(-3);
11
+ /// }
12
+ ///
13
+ /// @example css - CSS output
14
+ /// .element {
15
+ /// margin-left: -25.58941%;
16
+ /// }
17
+
18
+ @mixin shift($n-columns: 1) {
19
+ @include shift-in-context($n-columns);
20
+ }
21
+
22
+ /// Translates an element horizontally by a number of columns, in a specific nesting context.
23
+ ///
24
+ /// @param {List} $shift
25
+ /// A list containing the number of columns to shift (`$columns`) and the number of columns of the parent element (`$container-columns`).
26
+ ///
27
+ /// The two values can be separated with any string such as `of`, `/`, etc.
28
+ ///
29
+ /// @example scss - Usage
30
+ /// .element {
31
+ /// @include shift(-3 of 6);
32
+ /// }
33
+ ///
34
+ /// @example css - CSS output
35
+ /// .element {
36
+ /// margin-left: -52.41458%;
37
+ /// }
38
+
39
+ @mixin shift-in-context($shift: $columns of $container-columns) {
40
+ $n-columns: nth($shift, 1);
41
+ $parent-columns: container-shift($shift) !global;
42
+
43
+ $direction: get-direction($layout-direction, $default-layout-direction);
44
+ $opposite-direction: get-opposite-direction($direction);
45
+
46
+ margin-#{$opposite-direction}: $n-columns * flex-grid(1, $parent-columns) + $n-columns * flex-gutter($parent-columns);
47
+
48
+ // Reset nesting context
49
+ $parent-columns: $grid-columns !global;
50
+ }
@@ -0,0 +1,94 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Specifies the number of columns an element should span. If the selector is nested the number of columns of its parent element should be passed as an argument as well.
4
+ ///
5
+ /// @param {List} $span
6
+ /// A list containing `$columns`, the unitless number of columns the element spans (required), and `$container-columns`, the number of columns the parent element spans (optional).
7
+ ///
8
+ /// If only one value is passed, it is assumed that it's `$columns` and that that `$container-columns` is equal to `$grid-columns`, the total number of columns in the grid.
9
+ ///
10
+ /// The values can be separated with any string such as `of`, `/`, etc.
11
+ ///
12
+ /// `$columns` also accepts decimals for when it's necessary to break out of the standard grid. E.g. Passing `2.4` in a standard 12 column grid will divide the row into 5 columns.
13
+ ///
14
+ /// @param {String} $display [block]
15
+ /// Sets the display property of the element. By default it sets the display property of the element to `block`.
16
+ ///
17
+ /// If passed `block-collapse`, it also removes the margin gutter by adding it to the element width.
18
+ ///
19
+ /// If passed `table`, it sets the display property to `table-cell` and calculates the width of the element without taking gutters into consideration. The result does not align with the block-based grid.
20
+ ///
21
+ /// @example scss - Usage
22
+ /// .element {
23
+ /// @include span-columns(6);
24
+ ///
25
+ /// .nested-element {
26
+ /// @include span-columns(2 of 6);
27
+ /// }
28
+ /// }
29
+ ///
30
+ /// @example css - CSS Output
31
+ /// .element {
32
+ /// display: block;
33
+ /// float: left;
34
+ /// margin-right: 2.35765%;
35
+ /// width: 48.82117%;
36
+ /// }
37
+ ///
38
+ /// .element:last-child {
39
+ /// margin-right: 0;
40
+ /// }
41
+ ///
42
+ /// .element .nested-element {
43
+ /// display: block;
44
+ /// float: left;
45
+ /// margin-right: 4.82916%;
46
+ /// width: 30.11389%;
47
+ /// }
48
+ ///
49
+ /// .element .nested-element:last-child {
50
+ /// margin-right: 0;
51
+ /// }
52
+
53
+ @mixin span-columns($span: $columns of $container-columns, $display: block) {
54
+ $columns: nth($span, 1);
55
+ $container-columns: container-span($span);
56
+
57
+ $parent-columns: get-parent-columns($container-columns) !global;
58
+
59
+ $direction: get-direction($layout-direction, $default-layout-direction);
60
+ $opposite-direction: get-opposite-direction($direction);
61
+
62
+ $display-table: is-display-table($container-display-table, $display);
63
+
64
+ @if $display-table {
65
+ display: table-cell;
66
+ width: percentage($columns / $container-columns);
67
+ } @else {
68
+ float: #{$opposite-direction};
69
+
70
+ @if $display != no-display {
71
+ display: block;
72
+ }
73
+
74
+ @if $display == collapse {
75
+ @include -neat-warn("The 'collapse' argument will be deprecated. Use 'block-collapse' instead.");
76
+ }
77
+
78
+ @if $display == collapse or $display == block-collapse {
79
+ width: flex-grid($columns, $container-columns) + flex-gutter($container-columns);
80
+
81
+ &:last-child {
82
+ width: flex-grid($columns, $container-columns);
83
+ }
84
+
85
+ } @else {
86
+ margin-#{$direction}: flex-gutter($container-columns);
87
+ width: flex-grid($columns, $container-columns);
88
+
89
+ &:last-child {
90
+ margin-#{$direction}: 0;
91
+ }
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,97 @@
1
+ @charset "UTF-8";
2
+
3
+ @mixin breakpoint($query:$feature $value $columns, $total-columns: $grid-columns) {
4
+ @include -neat-warn("The breakpoint() mixin was renamed to media() in Neat 1.0. Please update your project with the new syntax before the next version bump.");
5
+
6
+ @if length($query) == 1 {
7
+ @media screen and ($default-feature: nth($query, 1)) {
8
+ $default-grid-columns: $grid-columns;
9
+ $grid-columns: $total-columns;
10
+ @content;
11
+ $grid-columns: $default-grid-columns;
12
+ }
13
+ } @else if length($query) == 2 {
14
+ @media screen and (nth($query, 1): nth($query, 2)) {
15
+ $default-grid-columns: $grid-columns;
16
+ $grid-columns: $total-columns;
17
+ @content;
18
+ $grid-columns: $default-grid-columns;
19
+ }
20
+ } @else if length($query) == 3 {
21
+ @media screen and (nth($query, 1): nth($query, 2)) {
22
+ $default-grid-columns: $grid-columns;
23
+ $grid-columns: nth($query, 3);
24
+ @content;
25
+ $grid-columns: $default-grid-columns;
26
+ }
27
+ } @else if length($query) == 4 {
28
+ @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {
29
+ $default-grid-columns: $grid-columns;
30
+ $grid-columns: $total-columns;
31
+ @content;
32
+ $grid-columns: $default-grid-columns;
33
+ }
34
+ } @else if length($query) == 5 {
35
+ @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {
36
+ $default-grid-columns: $grid-columns;
37
+ $grid-columns: nth($query, 5);
38
+ @content;
39
+ $grid-columns: $default-grid-columns;
40
+ }
41
+ } @else {
42
+ @include -neat-warn("Wrong number of arguments for breakpoint(). Read the documentation for more details.");
43
+ }
44
+ }
45
+
46
+ @mixin nth-omega($nth, $display: block, $direction: default) {
47
+ @include -neat-warn("The nth-omega() mixin is deprecated. Please use omega() instead.");
48
+ @include omega($nth $display, $direction);
49
+ }
50
+
51
+ /// Resets the active display property to `block`. Particularly useful when changing the display property in a single row.
52
+ ///
53
+ /// @example scss - Usage
54
+ /// .element {
55
+ /// @include row(table);
56
+ /// // Context changed to table display
57
+ /// }
58
+ ///
59
+ /// @include reset-display;
60
+ /// // Context is reset to block display
61
+
62
+ @mixin reset-display {
63
+ $container-display-table: false !global;
64
+ @include -neat-warn("Resetting $display will be deprecated in future versions in favor of the display(){...} mixin.");
65
+ }
66
+
67
+ /// Resets the active layout direction to the default value set in `$default-layout-direction`. Particularly useful when changing the layout direction in a single row.
68
+ ///
69
+ /// @example scss - Usage
70
+ /// .element {
71
+ /// @include row($direction: RTL);
72
+ /// // Context changed to right-to-left
73
+ /// }
74
+ ///
75
+ /// @include reset-layout-direction;
76
+ /// // Context is reset to left-to-right
77
+
78
+ @mixin reset-layout-direction {
79
+ $layout-direction: $default-layout-direction !global;
80
+ @include -neat-warn("Resetting $direction will be deprecated in future versions in favor of the direction(){...} mixin.");
81
+ }
82
+
83
+ /// Resets both the active layout direction and the active display property.
84
+ ///
85
+ /// @example scss - Usage
86
+ /// .element {
87
+ /// @include row(table, RTL);
88
+ /// // Context changed to table table and right-to-left
89
+ /// }
90
+ ///
91
+ /// @include reset-all;
92
+ /// // Context is reset to block display and left-to-right
93
+
94
+ @mixin reset-all {
95
+ @include reset-display;
96
+ @include reset-layout-direction;
97
+ }
@@ -0,0 +1,42 @@
1
+ @charset "UTF-8";
2
+
3
+ @mixin grid-column-gradient($values...) {
4
+ background-image: -webkit-linear-gradient(left, $values);
5
+ background-image: -moz-linear-gradient(left, $values);
6
+ background-image: -ms-linear-gradient(left, $values);
7
+ background-image: -o-linear-gradient(left, $values);
8
+ background-image: unquote("linear-gradient(to left, #{$values})");
9
+ }
10
+
11
+ @if $visual-grid == true or $visual-grid == yes {
12
+ body:before {
13
+ @include grid-column-gradient(gradient-stops($grid-columns));
14
+ content: "";
15
+ display: inline-block;
16
+ height: 100%;
17
+ left: 0;
18
+ margin: 0 auto;
19
+ max-width: $max-width;
20
+ opacity: $visual-grid-opacity;
21
+ pointer-events: none;
22
+ position: fixed;
23
+ right: 0;
24
+ width: 100%;
25
+
26
+ @if $visual-grid-index == back {
27
+ z-index: -1;
28
+ }
29
+
30
+ @else if $visual-grid-index == front {
31
+ z-index: 9999;
32
+ }
33
+
34
+ @each $breakpoint in $visual-grid-breakpoints {
35
+ @if $breakpoint {
36
+ @include media($breakpoint) {
37
+ @include grid-column-gradient(gradient-stops($grid-columns));
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,25 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Provides an easy way to include a clearfix for containing floats.
4
+ ///
5
+ /// @link http://goo.gl/yP5hiZ
6
+ ///
7
+ /// @example scss
8
+ /// .element {
9
+ /// @include clearfix;
10
+ /// }
11
+ ///
12
+ /// @example css
13
+ /// .element::after {
14
+ /// clear: both;
15
+ /// content: "";
16
+ /// display: block;
17
+ /// }
18
+
19
+ @mixin clearfix {
20
+ &::after {
21
+ clear: both;
22
+ content: "";
23
+ display: block;
24
+ }
25
+ }
@@ -0,0 +1,13 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Disable all deprecation warnings. Defaults to `false`. Set with a `!global` flag.
4
+ ///
5
+ /// @type Bool
6
+
7
+ $disable-warnings: false !default;
8
+
9
+ @mixin -neat-warn($message) {
10
+ @if $disable-warnings == false {
11
+ @warn "#{$message}";
12
+ }
13
+ }
@@ -0,0 +1,51 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Sets the relative width of a single grid column. The unit used should be the same one used to define `$gutter`. Set with a `!global` flag.
4
+ ///
5
+ /// @type Number (Unit)
6
+
7
+ $column: 4.2358em !default;
8
+
9
+ /// Sets the relative width of a single grid gutter. The unit used should be the same one used to define `$column`. Set with the `!global` flag.
10
+ ///
11
+ /// @type Number (Unit)
12
+
13
+ $gutter: 1.618em !default;
14
+
15
+ /// Sets the total number of columns in the grid. Its value can be overridden inside a media query using the `media()` mixin. Set with the `!global` flag.
16
+ ///
17
+ /// @type Number (Unitless)
18
+
19
+ $grid-columns: 12 !default;
20
+
21
+ /// Sets the max-width property of the element that includes `outer-container()`. Set with the `!global` flag.
22
+ ///
23
+ /// @type Number (Unit)
24
+ ///
25
+ $max-width: 1200px !default;
26
+
27
+ /// When set to true, it sets the box-sizing property of all elements to `border-box`. Set with a `!global` flag.
28
+ ///
29
+ /// @type Bool
30
+ ///
31
+ /// @example css - CSS Output
32
+ /// html {
33
+ /// box-sizing: border-box; }
34
+ ///
35
+ /// *, *::after, *::before {
36
+ /// box-sizing: inherit;
37
+ /// }
38
+
39
+ $border-box-sizing: true !default;
40
+
41
+ /// Sets the default [media feature](http://www.w3.org/TR/css3-mediaqueries/#media) that `media()` and `new-breakpoint()` revert to when only a breakpoint value is passed. Set with a `!global` flag.
42
+ ///
43
+ /// @type String
44
+
45
+ $default-feature: min-width; // Default @media feature for the breakpoint() mixin
46
+
47
+ ///Sets the default layout direction of the grid. Can be `LTR` or `RTL`. Set with a `!global` flag.
48
+ ///
49
+ ///@type String
50
+
51
+ $default-layout-direction: LTR !default;
@@ -0,0 +1,27 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Displays the visual grid when set to true. The overlaid grid may be few pixels off depending on the browser's rendering engine and pixel rounding algorithm. Set with the `!global` flag.
4
+ ///
5
+ /// @type Bool
6
+
7
+ $visual-grid: false !default;
8
+
9
+ /// Sets the visual grid color. Set with `!global` flag.
10
+ ///
11
+ /// @type Color
12
+
13
+ $visual-grid-color: #eee !default;
14
+
15
+ /// Sets the `z-index` property of the visual grid. Can be `back` (behind content) or `front` (in front of content). Set with `!global` flag.
16
+ ///
17
+ /// @type String
18
+
19
+ $visual-grid-index: back !default;
20
+
21
+ /// Sets the opacity property of the visual grid. Set with `!global` flag.
22
+ ///
23
+ /// @type Number (unitless)
24
+
25
+ $visual-grid-opacity: 0.4 !default;
26
+
27
+ $visual-grid-breakpoints: () !default;