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,55 @@
1
+ @function _radial-gradient-parser($image) {
2
+ @if $output-bourbon-deprecation-warnings == true {
3
+ @warn "[Bourbon] [Deprecation] `_radial-gradient-parser` is " +
4
+ "deprecated and will be removed in 5.0.0.";
5
+ }
6
+
7
+ $image: unquote($image);
8
+ $gradients: ();
9
+ $start: str-index($image, "(");
10
+ $end: str-index($image, ",");
11
+ $first-val: str-slice($image, $start + 1, $end - 1);
12
+
13
+ $prefix: str-slice($image, 1, $start);
14
+ $suffix: str-slice($image, $end, str-length($image));
15
+
16
+ $is-spec-syntax: str-index($first-val, "at");
17
+
18
+ @if $is-spec-syntax and $is-spec-syntax > 1 {
19
+ $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);
20
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
21
+ $pos: append($pos, $keyword, comma);
22
+
23
+ $gradients: (
24
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
25
+ spec-image: $image
26
+ );
27
+ }
28
+
29
+ @else if $is-spec-syntax == 1 {
30
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
31
+
32
+ $gradients: (
33
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
34
+ spec-image: $image
35
+ );
36
+ }
37
+
38
+ @else if str-index($image, "cover") or str-index($image, "contain") {
39
+ @warn "Radial-gradient needs to be updated to conform to latest spec.";
40
+
41
+ $gradients: (
42
+ webkit-image: null,
43
+ spec-image: $image
44
+ );
45
+ }
46
+
47
+ @else {
48
+ $gradients: (
49
+ webkit-image: -webkit- + $image,
50
+ spec-image: $image
51
+ );
52
+ }
53
+
54
+ @return $gradients;
55
+ }
@@ -0,0 +1,28 @@
1
+ @function _radial-positions-parser($gradient-pos) {
2
+ @if $output-bourbon-deprecation-warnings == true {
3
+ @warn "[Bourbon] [Deprecation] `_radial-positions-parser` is " +
4
+ "deprecated and will be removed in 5.0.0.";
5
+ }
6
+
7
+ $user-deprecation-warnings-setting: $output-bourbon-deprecation-warnings;
8
+ $output-bourbon-deprecation-warnings: false !global;
9
+
10
+ $shape-size: nth($gradient-pos, 1);
11
+ $pos: nth($gradient-pos, 2);
12
+ $shape-size-spec: _shape-size-stripper($shape-size);
13
+
14
+ $pre-spec: unquote(if($pos, "#{$pos}, ", null))
15
+ unquote(if($shape-size, "#{$shape-size},", null));
16
+ $pos-spec: if($pos, "at #{$pos}", null);
17
+
18
+ $spec: "#{$shape-size-spec} #{$pos-spec}";
19
+
20
+ // Add comma
21
+ @if ($spec != " ") {
22
+ $spec: "#{$spec},";
23
+ }
24
+
25
+ $output-bourbon-deprecation-warnings: $user-deprecation-warnings-setting !global;
26
+
27
+ @return $pre-spec $spec;
28
+ }
@@ -0,0 +1,31 @@
1
+ // User for linear and radial gradients within background-image or border-image properties
2
+
3
+ @function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) {
4
+ @if $output-bourbon-deprecation-warnings == true {
5
+ @warn "[Bourbon] [Deprecation] `_render-gradients` is " +
6
+ "deprecated and will be removed in 5.0.0.";
7
+ }
8
+
9
+ $pre-spec: null;
10
+ $spec: null;
11
+ $vendor-gradients: null;
12
+ @if $gradient-type == linear {
13
+ @if $gradient-positions {
14
+ $pre-spec: nth($gradient-positions, 1);
15
+ $spec: nth($gradient-positions, 2);
16
+ }
17
+ }
18
+ @else if $gradient-type == radial {
19
+ $pre-spec: nth($gradient-positions, 1);
20
+ $spec: nth($gradient-positions, 2);
21
+ }
22
+
23
+ @if $vendor {
24
+ $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);
25
+ }
26
+ @else if $vendor == false {
27
+ $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})";
28
+ $vendor-gradients: unquote($vendor-gradients);
29
+ }
30
+ @return $vendor-gradients;
31
+ }
@@ -0,0 +1,15 @@
1
+ @function _shape-size-stripper($shape-size) {
2
+ @if $output-bourbon-deprecation-warnings == true {
3
+ @warn "[Bourbon] [Deprecation] `_shape-size-stripper` is " +
4
+ "deprecated and will be removed in 5.0.0.";
5
+ }
6
+
7
+ $shape-size-spec: null;
8
+ @each $value in $shape-size {
9
+ @if ($value == "cover") or ($value == "contain") {
10
+ $value: null;
11
+ }
12
+ $shape-size-spec: "#{$shape-size-spec} #{$value}";
13
+ }
14
+ @return $shape-size-spec;
15
+ }
@@ -0,0 +1,55 @@
1
+ //************************************************************************//
2
+ // Helper function for linear/radial-gradient-parsers.
3
+ // Source: http://sassmeister.com/gist/9647408
4
+ //************************************************************************//
5
+ @function _str-to-num($string) {
6
+ @if $output-bourbon-deprecation-warnings == true {
7
+ @warn "[Bourbon] [Deprecation] `_str-to-num` is " +
8
+ "deprecated and will be removed in 5.0.0.";
9
+ }
10
+
11
+ // Matrices
12
+ $strings: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9";
13
+ $numbers: 0 1 2 3 4 5 6 7 8 9;
14
+
15
+ // Result
16
+ $result: 0;
17
+ $divider: 0;
18
+ $minus: false;
19
+
20
+ // Looping through all characters
21
+ @for $i from 1 through str-length($string) {
22
+ $character: str-slice($string, $i, $i);
23
+ $index: index($strings, $character);
24
+
25
+ @if $character == "-" {
26
+ $minus: true;
27
+ }
28
+
29
+ @else if $character == "." {
30
+ $divider: 1;
31
+ }
32
+
33
+ @else {
34
+ @if not $index {
35
+ $result: if($minus, $result * -1, $result);
36
+ @return _convert-units($result, str-slice($string, $i));
37
+ }
38
+
39
+ $number: nth($numbers, $index);
40
+
41
+ @if $divider == 0 {
42
+ $result: $result * 10;
43
+ }
44
+
45
+ @else {
46
+ // Move the decimal dot to the left
47
+ $divider: $divider * 10;
48
+ $number: $number / $divider;
49
+ }
50
+
51
+ $result: $result + $number;
52
+ }
53
+ }
54
+ @return if($minus, $result * -1, $result);
55
+ }
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+
3
+ /// A global setting to enable or disable the `$asset-pipeline` variable for all functions that accept it.
4
+ ///
5
+ /// @type Bool
6
+
7
+ $asset-pipeline: false !default;
@@ -0,0 +1,8 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Enable or disable output of Bourbon’s deprecation-related Sass warnings.
4
+ /// This variable must be declared _before_ importing Bourbon.
5
+ ///
6
+ /// @type Bool
7
+
8
+ $output-bourbon-deprecation-warnings: true !default;
@@ -0,0 +1,9 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Global variables to enable or disable vendor prefixes
4
+
5
+ $prefix-for-webkit: true !default;
6
+ $prefix-for-mozilla: true !default;
7
+ $prefix-for-microsoft: true !default;
8
+ $prefix-for-opera: true !default;
9
+ $prefix-for-spec: true !default;
@@ -0,0 +1 @@
1
+ $em-base: 16px !default;
@@ -0,0 +1,11 @@
1
+ // Mixins
2
+ @import "mixins/clearfix";
3
+
4
+ // Functions
5
+ @import "functions/private";
6
+ @import "functions/new-breakpoint";
7
+
8
+ // Settings
9
+ @import "settings/grid";
10
+ @import "settings/visual-grid";
11
+ @import "settings/disable-warnings";
@@ -0,0 +1,23 @@
1
+ // Neat 1.8.0
2
+ // http://neat.bourbon.io
3
+ // Copyright 2012-2015 thoughtbot, inc.
4
+ // MIT License
5
+
6
+ // Helpers
7
+ @import "neat-helpers";
8
+
9
+ // Grid
10
+ @import "grid/private";
11
+ @import "grid/box-sizing";
12
+ @import "grid/omega";
13
+ @import "grid/outer-container";
14
+ @import "grid/span-columns";
15
+ @import "grid/row";
16
+ @import "grid/shift";
17
+ @import "grid/pad";
18
+ @import "grid/fill-parent";
19
+ @import "grid/media";
20
+ @import "grid/to-deprecate";
21
+ @import "grid/visual-grid";
22
+ @import "grid/display-context";
23
+ @import "grid/direction-context";
@@ -0,0 +1,49 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Returns a media context (media query / grid context) that can be stored in a variable and passed to `media()` as a single-keyword argument. Media contexts defined using `new-breakpoint` are used by the visual grid, as long as they are defined before importing Neat.
4
+ ///
5
+ /// @param {List} $query
6
+ /// A list of media query features and values. Each `$feature` should have a corresponding `$value`.
7
+ ///
8
+ /// If there is only a single `$value` in `$query`, `$default-feature` is going to be used.
9
+ ///
10
+ /// The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`). For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).
11
+ ///
12
+ /// @param {Number (unitless)} $total-columns [$grid-columns]
13
+ /// - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.
14
+ ///
15
+ /// @example scss - Usage
16
+ /// $mobile: new-breakpoint(max-width 480px 4);
17
+ ///
18
+ /// .element {
19
+ /// @include media($mobile) {
20
+ /// @include span-columns(4);
21
+ /// }
22
+ /// }
23
+ ///
24
+ /// @example css - CSS Output
25
+ /// @media screen and (max-width: 480px) {
26
+ /// .element {
27
+ /// display: block;
28
+ /// float: left;
29
+ /// margin-right: 7.42297%;
30
+ /// width: 100%;
31
+ /// }
32
+ /// .element:last-child {
33
+ /// margin-right: 0;
34
+ /// }
35
+ /// }
36
+
37
+ @function new-breakpoint($query: $feature $value $columns, $total-columns: $grid-columns) {
38
+ @if length($query) == 1 {
39
+ $query: $default-feature nth($query, 1) $total-columns;
40
+ } @else if is-even(length($query)) {
41
+ $query: append($query, $total-columns);
42
+ }
43
+
44
+ @if is-not(belongs-to($query, $visual-grid-breakpoints)) {
45
+ $visual-grid-breakpoints: append($visual-grid-breakpoints, $query, comma) !global;
46
+ }
47
+
48
+ @return $query;
49
+ }
@@ -0,0 +1,114 @@
1
+ // Not function for Libsass compatibility
2
+ // https://github.com/sass/libsass/issues/368
3
+ @function is-not($value) {
4
+ @return if($value, false, true);
5
+ }
6
+
7
+ // Checks if a number is even
8
+ @function is-even($int) {
9
+ @return $int % 2 == 0;
10
+ }
11
+
12
+ // Checks if an element belongs to a list or not
13
+ @function belongs-to($tested-item, $list) {
14
+ @return is-not(not-belongs-to($tested-item, $list));
15
+ }
16
+
17
+ @function not-belongs-to($tested-item, $list) {
18
+ @return is-not(index($list, $tested-item));
19
+ }
20
+
21
+ // Contains display value
22
+ @function contains-display-value($query) {
23
+ @return belongs-to(table, $query)
24
+ or belongs-to(block, $query)
25
+ or belongs-to(inline-block, $query)
26
+ or belongs-to(inline, $query);
27
+ }
28
+
29
+ // Parses the first argument of span-columns()
30
+ @function container-span($span: $span) {
31
+ @if length($span) == 3 {
32
+ $container-columns: nth($span, 3);
33
+ @return $container-columns;
34
+ } @else if length($span) == 2 {
35
+ $container-columns: nth($span, 2);
36
+ @return $container-columns;
37
+ }
38
+
39
+ @return $grid-columns;
40
+ }
41
+
42
+ @function container-shift($shift: $shift) {
43
+ $parent-columns: $grid-columns !default !global;
44
+
45
+ @if length($shift) == 3 {
46
+ $container-columns: nth($shift, 3);
47
+ @return $container-columns;
48
+ } @else if length($shift) == 2 {
49
+ $container-columns: nth($shift, 2);
50
+ @return $container-columns;
51
+ }
52
+
53
+ @return $parent-columns;
54
+ }
55
+
56
+ // Generates a striped background
57
+ @function gradient-stops($grid-columns, $color: $visual-grid-color) {
58
+ $transparent: transparent;
59
+
60
+ $column-width: flex-grid(1, $grid-columns);
61
+ $gutter-width: flex-gutter($grid-columns);
62
+ $column-offset: $column-width;
63
+
64
+ $values: ($transparent 0, $color 0);
65
+
66
+ @for $i from 1 to $grid-columns*2 {
67
+ @if is-even($i) {
68
+ $values: append($values, $transparent $column-offset, comma);
69
+ $values: append($values, $color $column-offset, comma);
70
+ $column-offset: $column-offset + $column-width;
71
+ } @else {
72
+ $values: append($values, $color $column-offset, comma);
73
+ $values: append($values, $transparent $column-offset, comma);
74
+ $column-offset: $column-offset + $gutter-width;
75
+ }
76
+ }
77
+
78
+ @return $values;
79
+ }
80
+
81
+ // Layout direction
82
+ @function get-direction($layout, $default) {
83
+ $direction: null;
84
+
85
+ @if to-upper-case($layout) == "LTR" or to-upper-case($layout) == "RTL" {
86
+ $direction: direction-from-layout($layout);
87
+ } @else {
88
+ $direction: direction-from-layout($default);
89
+ }
90
+
91
+ @return $direction;
92
+ }
93
+
94
+ @function direction-from-layout($layout) {
95
+ $direction: null;
96
+
97
+ @if to-upper-case($layout) == "LTR" {
98
+ $direction: right;
99
+ } @else {
100
+ $direction: left;
101
+ }
102
+
103
+ @return $direction;
104
+ }
105
+
106
+ @function get-opposite-direction($direction) {
107
+ $opposite-direction: left;
108
+
109
+ @if $direction == "left" {
110
+ $opposite-direction: right;
111
+ }
112
+
113
+ @return $opposite-direction;
114
+ }
@@ -0,0 +1,15 @@
1
+ @charset "UTF-8";
2
+
3
+ @if $border-box-sizing == true {
4
+ html { // http://bit.ly/1qk2tVR
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ * {
9
+ &,
10
+ &::after,
11
+ &::before {
12
+ box-sizing: inherit;
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,33 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Changes the direction property used by other mixins called in the code block argument.
4
+ ///
5
+ /// @param {String} $direction [left-to-right]
6
+ /// Layout direction to be used within the block. Can be `left-to-right` or `right-to-left`.
7
+ ///
8
+ /// @example scss - Usage
9
+ /// @include direction-context(right-to-left) {
10
+ /// .right-to-left-block {
11
+ /// @include span-columns(6);
12
+ /// }
13
+ /// }
14
+ ///
15
+ /// @example css - CSS Output
16
+ /// .right-to-left-block {
17
+ /// float: right;
18
+ /// ...
19
+ /// }
20
+
21
+ @mixin direction-context($direction: left-to-right) {
22
+ $scope-direction: $layout-direction;
23
+
24
+ @if to-lower-case($direction) == "left-to-right" {
25
+ $layout-direction: LTR !global;
26
+ } @else if to-lower-case($direction) == "right-to-left" {
27
+ $layout-direction: RTL !global;
28
+ }
29
+
30
+ @content;
31
+
32
+ $layout-direction: $scope-direction !global;
33
+ }
@@ -0,0 +1,28 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Changes the display property used by other mixins called in the code block argument.
4
+ ///
5
+ /// @param {String} $display [block]
6
+ /// Display value to be used within the block. Can be `table` or `block`.
7
+ ///
8
+ /// @example scss
9
+ /// @include display-context(table) {
10
+ /// .display-table {
11
+ /// @include span-columns(6);
12
+ /// }
13
+ /// }
14
+ ///
15
+ /// @example css
16
+ /// .display-table {
17
+ /// display: table-cell;
18
+ /// ...
19
+ /// }
20
+
21
+ @mixin display-context($display: block) {
22
+ $scope-display: $container-display-table;
23
+ $container-display-table: $display == table !global;
24
+
25
+ @content;
26
+
27
+ $container-display-table: $scope-display !global;
28
+ }
@@ -0,0 +1,22 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Forces the element to fill its parent container.
4
+ ///
5
+ /// @example scss - Usage
6
+ /// .element {
7
+ /// @include fill-parent;
8
+ /// }
9
+ ///
10
+ /// @example css - CSS Output
11
+ /// .element {
12
+ /// width: 100%;
13
+ /// box-sizing: border-box;
14
+ /// }
15
+
16
+ @mixin fill-parent() {
17
+ width: 100%;
18
+
19
+ @if $border-box-sizing == false {
20
+ box-sizing: border-box;
21
+ }
22
+ }
@@ -0,0 +1,92 @@
1
+ @charset "UTF-8";
2
+
3
+ /// Outputs a media-query block with an optional grid context (the total number of columns used in the grid).
4
+ ///
5
+ /// @param {List} $query
6
+ /// A list of media query features and values, where each `$feature` should have a corresponding `$value`.
7
+ /// For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).
8
+ ///
9
+ /// If there is only a single `$value` in `$query`, `$default-feature` is going to be used.
10
+ ///
11
+ /// The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`).
12
+ ///
13
+ ///
14
+ /// @param {Number (unitless)} $total-columns [$grid-columns]
15
+ /// - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.
16
+ ///
17
+ /// @example scss - Usage
18
+ /// .responsive-element {
19
+ /// @include media(769px) {
20
+ /// @include span-columns(6);
21
+ /// }
22
+ /// }
23
+ ///
24
+ /// .new-context-element {
25
+ /// @include media(min-width 320px max-width 480px, 6) {
26
+ /// @include span-columns(6);
27
+ /// }
28
+ /// }
29
+ ///
30
+ /// @example css - CSS Output
31
+ /// @media screen and (min-width: 769px) {
32
+ /// .responsive-element {
33
+ /// display: block;
34
+ /// float: left;
35
+ /// margin-right: 2.35765%;
36
+ /// width: 48.82117%;
37
+ /// }
38
+ ///
39
+ /// .responsive-element:last-child {
40
+ /// margin-right: 0;
41
+ /// }
42
+ /// }
43
+ ///
44
+ /// @media screen and (min-width: 320px) and (max-width: 480px) {
45
+ /// .new-context-element {
46
+ /// display: block;
47
+ /// float: left;
48
+ /// margin-right: 4.82916%;
49
+ /// width: 100%;
50
+ /// }
51
+ ///
52
+ /// .new-context-element:last-child {
53
+ /// margin-right: 0;
54
+ /// }
55
+ /// }
56
+
57
+ @mixin media($query: $feature $value $columns, $total-columns: $grid-columns) {
58
+ @if length($query) == 1 {
59
+ @media screen and ($default-feature: nth($query, 1)) {
60
+ $default-grid-columns: $grid-columns;
61
+ $grid-columns: $total-columns !global;
62
+ @content;
63
+ $grid-columns: $default-grid-columns !global;
64
+ }
65
+ } @else {
66
+ $loop-to: length($query);
67
+ $media-query: "screen and ";
68
+ $default-grid-columns: $grid-columns;
69
+ $grid-columns: $total-columns !global;
70
+
71
+ @if is-not(is-even(length($query))) {
72
+ $grid-columns: nth($query, $loop-to) !global;
73
+ $loop-to: $loop-to - 1;
74
+ }
75
+
76
+ $i: 1;
77
+ @while $i <= $loop-to {
78
+ $media-query: $media-query + "(" + nth($query, $i) + ": " + nth($query, $i + 1) + ") ";
79
+
80
+ @if ($i + 1) != $loop-to {
81
+ $media-query: $media-query + "and ";
82
+ }
83
+
84
+ $i: $i + 2;
85
+ }
86
+
87
+ @media #{$media-query} {
88
+ @content;
89
+ $grid-columns: $default-grid-columns !global;
90
+ }
91
+ }
92
+ }