archetype 0.0.1.pre.13 → 1.0.0.alpha.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +97 -24
- data/README.md +11 -5
- data/VERSION +1 -0
- data/lib/archetype.rb +30 -18
- data/lib/archetype/actions/migrate.rb +152 -0
- data/lib/archetype/actions/theme.rb +6 -7
- data/lib/archetype/executor.rb +21 -7
- data/lib/archetype/extensions.rb +57 -0
- data/lib/archetype/functions.rb +2 -3
- data/lib/archetype/functions/css.rb +70 -0
- data/lib/archetype/functions/css/constants.rb +247 -0
- data/lib/archetype/functions/css/helpers.rb +265 -0
- data/lib/archetype/functions/css/routers.rb +28 -0
- data/lib/archetype/functions/css/routers/animation.rb +55 -0
- data/lib/archetype/functions/css/routers/background.rb +38 -0
- data/lib/archetype/functions/css/routers/border.rb +151 -0
- data/lib/archetype/functions/css/routers/list.rb +63 -0
- data/lib/archetype/functions/css/routers/margin_padding.rb +40 -0
- data/lib/archetype/functions/css/routers/outline.rb +56 -0
- data/lib/archetype/functions/css/routers/overflow.rb +11 -0
- data/lib/archetype/functions/css/routers/target.rb +38 -0
- data/lib/archetype/functions/css/routers/transition.rb +48 -0
- data/lib/archetype/functions/css/shorthands.rb +43 -0
- data/lib/archetype/functions/css/shorthands/animation.rb +18 -0
- data/lib/archetype/functions/css/shorthands/background.rb +68 -0
- data/lib/archetype/functions/css/shorthands/border.rb +102 -0
- data/lib/archetype/functions/hash.rb +3 -149
- data/lib/archetype/functions/hash/extend.rb +74 -0
- data/lib/archetype/functions/hash/shim.rb +48 -0
- data/lib/archetype/functions/helpers.rb +231 -22
- data/lib/archetype/functions/styleguide_memoizer.rb +18 -1
- data/lib/archetype/sass_extensions.rb +1 -3
- data/lib/archetype/sass_extensions/functions.rb +15 -1
- data/lib/archetype/sass_extensions/functions/environment.rb +152 -1
- data/lib/archetype/sass_extensions/functions/lists.rb +95 -45
- data/lib/archetype/sass_extensions/functions/locale.rb +107 -28
- data/lib/archetype/sass_extensions/functions/numbers.rb +118 -4
- data/lib/archetype/sass_extensions/functions/strings.rb +53 -0
- data/lib/archetype/sass_extensions/functions/styleguide.rb +43 -375
- data/lib/archetype/sass_extensions/functions/styleguide/components.rb +25 -0
- data/lib/archetype/sass_extensions/functions/styleguide/constants.rb +27 -0
- data/lib/archetype/sass_extensions/functions/styleguide/grammar.rb +80 -0
- data/lib/archetype/sass_extensions/functions/styleguide/helpers.rb +36 -0
- data/lib/archetype/sass_extensions/functions/styleguide/resolve.rb +159 -0
- data/lib/archetype/sass_extensions/functions/styleguide/styles.rb +146 -0
- data/lib/archetype/sass_extensions/functions/styleguide/themes.rb +40 -0
- data/lib/archetype/sass_extensions/functions/ui.rb +7 -57
- data/lib/archetype/sass_extensions/functions/ui/glyphs.rb +118 -0
- data/lib/archetype/sass_extensions/functions/ui/scopes.rb +96 -0
- data/lib/archetype/sass_extensions/functions/util.rb +14 -0
- data/lib/archetype/sass_extensions/functions/util/debug.rb +22 -0
- data/lib/archetype/sass_extensions/functions/util/hacks.rb +44 -0
- data/lib/archetype/sass_extensions/functions/util/images.rb +132 -0
- data/lib/archetype/sass_extensions/functions/util/misc.rb +220 -0
- data/lib/archetype/sass_extensions/functions/util/spacing.rb +83 -0
- data/lib/archetype/sass_extensions/functions/version.rb +12 -17
- data/lib/archetype/version.rb +1 -1
- data/stylesheets/archetype/_config.scss +1 -389
- data/stylesheets/archetype/_core.scss +15 -0
- data/stylesheets/archetype/_hacks.scss +4 -120
- data/stylesheets/archetype/_init.scss +4 -22
- data/stylesheets/archetype/_required.scss +3 -0
- data/stylesheets/archetype/_reset.scss +3 -0
- data/stylesheets/archetype/_styleguide.scss +2 -6
- data/stylesheets/archetype/_ui.scss +2 -358
- data/stylesheets/archetype/_util.scss +3 -10
- data/stylesheets/archetype/config/_core.scss +14 -0
- data/stylesheets/archetype/config/_environment.scss +19 -0
- data/stylesheets/archetype/config/_formatting.scss +63 -0
- data/stylesheets/archetype/config/_glyphs.scss +252 -0
- data/stylesheets/archetype/config/_resets.scss +7 -0
- data/stylesheets/archetype/config/_resolution.scss +3 -0
- data/stylesheets/archetype/config/_spacing.scss +5 -0
- data/stylesheets/archetype/config/_targeting.scss +18 -0
- data/stylesheets/archetype/config/_theme.scss +3 -0
- data/stylesheets/archetype/config/_typography.scss +56 -0
- data/stylesheets/archetype/config/_units.scss +2 -0
- data/stylesheets/archetype/config/_vars.scss +10 -0
- data/stylesheets/archetype/hacks/_core.scss +4 -0
- data/stylesheets/archetype/hacks/_hacks.scss +160 -0
- data/stylesheets/archetype/hacks/_init.scss +2 -0
- data/stylesheets/archetype/styleguide/_core.scss +4 -0
- data/stylesheets/archetype/styleguide/_init.scss +1 -0
- data/stylesheets/archetype/styleguide/_styleguide.scss +41 -18
- data/stylesheets/archetype/ui/_accessibility.scss +41 -0
- data/stylesheets/archetype/ui/_breakpoints.scss +19 -0
- data/stylesheets/archetype/ui/_core.scss +10 -0
- data/stylesheets/archetype/ui/_elements.scss +98 -0
- data/stylesheets/archetype/ui/_glyphs.scss +244 -0
- data/stylesheets/archetype/ui/_init.scss +5 -0
- data/stylesheets/archetype/ui/_layout.scss +37 -0
- data/stylesheets/archetype/ui/_locale.scss +12 -0
- data/stylesheets/archetype/ui/_scopes.scss +42 -0
- data/stylesheets/archetype/util/_core.scss +8 -0
- data/stylesheets/archetype/util/_debug.scss +9 -21
- data/stylesheets/archetype/util/_init.scss +1 -0
- data/stylesheets/archetype/util/_misc.scss +21 -86
- data/stylesheets/archetype/util/_spacing.scss +9 -40
- data/stylesheets/archetype/util/_styles.scss +189 -178
- data/stylesheets/archetype/util/_targeting.scss +51 -68
- data/templates/example/manifest.rb +2 -2
- data/templates/example/screen.scss +0 -1
- data/templates/project/manifest.rb +3 -8
- metadata +93 -263
- data/bin/archetype +0 -3
- data/lib/archetype/sass_extensions/monkey_patches.rb +0 -3
- data/lib/archetype/sass_extensions/monkey_patches/handle_include_loop.rb +0 -13
- data/stylesheets/archetype/_base.scss +0 -54
- data/stylesheets/archetype/_grid.scss +0 -3
- data/stylesheets/archetype/base/_h5bp.scss +0 -307
- data/stylesheets/archetype/base/_hybrid.scss +0 -25
- data/stylesheets/archetype/base/_normalize.scss +0 -634
- data/stylesheets/archetype/base/_reset.scss +0 -72
- data/stylesheets/archetype/grid/_config.scss +0 -14
- data/stylesheets/archetype/grid/_grid.scss +0 -391
- data/stylesheets/archetype/styleguide/_components.scss +0 -25
- data/stylesheets/archetype/styleguide/_helpers.scss +0 -215
- data/stylesheets/archetype/styleguide/_primitives.scss +0 -10
- data/stylesheets/archetype/styleguide/components/_alerts.scss +0 -59
- data/stylesheets/archetype/styleguide/components/_annotations.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_bristol.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_button_groups.scss +0 -47
- data/stylesheets/archetype/styleguide/components/_button_toolbars.scss +0 -17
- data/stylesheets/archetype/styleguide/components/_buttons.scss +0 -339
- data/stylesheets/archetype/styleguide/components/_canvas.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_carets.scss +0 -336
- data/stylesheets/archetype/styleguide/components/_closes.scss +0 -63
- data/stylesheets/archetype/styleguide/components/_container.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_copy.scss +0 -85
- data/stylesheets/archetype/styleguide/components/_flyouts.scss +0 -52
- data/stylesheets/archetype/styleguide/components/_headings.scss +0 -33
- data/stylesheets/archetype/styleguide/components/_headlines.scss +0 -64
- data/stylesheets/archetype/styleguide/components/_hovercards.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_icons.scss +0 -17
- data/stylesheets/archetype/styleguide/components/_identities.scss +0 -34
- data/stylesheets/archetype/styleguide/components/_links.scss +0 -68
- data/stylesheets/archetype/styleguide/components/_loaders.scss +0 -154
- data/stylesheets/archetype/styleguide/components/_menu_items.scss +0 -31
- data/stylesheets/archetype/styleguide/components/_module.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_pullquotes.scss +0 -29
- data/stylesheets/archetype/styleguide/components/_punchcut.scss +0 -18
- data/stylesheets/archetype/styleguide/components/_tooltips.scss +0 -28
- data/stylesheets/archetype/styleguide/primitives/_animations.scss +0 -17
- data/stylesheets/archetype/styleguide/primitives/_dimensions.scss +0 -50
- data/stylesheets/archetype/styleguide/primitives/_glyphs.scss +0 -11
- data/stylesheets/archetype/styleguide/primitives/_misc.scss +0 -8
- data/stylesheets/archetype/styleguide/primitives/_palettes.scss +0 -94
- data/stylesheets/archetype/styleguide/primitives/_shadows.scss +0 -23
- data/stylesheets/archetype/styleguide/primitives/_sprites.scss +0 -46
- data/stylesheets/archetype/styleguide/primitives/_textures.scss +0 -10
- data/stylesheets/archetype/styleguide/primitives/_typography.scss +0 -56
- data/stylesheets/archetype/util/_lists.scss +0 -57
- data/stylesheets/archetype/util/_rtl.scss +0 -279
- data/stylesheets/archetype/util/_units.scss +0 -18
- data/templates/project/screen.scss +0 -1
- data/templates/project/vendor/archetype/animations/loaders/large/large.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_static.png +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.eot +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.svg +0 -255
- data/templates/project/vendor/archetype/fontawesome-webfont.ttf +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.woff +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.eot +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.svg +0 -255
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.woff +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders-s7889ccc8c1.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/sprites/hovercard_tip.png +0 -0
- data/test/fixtures/stylesheets/archetype/config.rb +0 -21
- data/test/fixtures/stylesheets/archetype/source/b.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/base.scss +0 -3
- data/test/fixtures/stylesheets/archetype/source/hacks/ie_pseudo.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/hacks/transparent_focusable.scss +0 -5
- data/test/fixtures/stylesheets/archetype/source/locale.scss +0 -43
- data/test/fixtures/stylesheets/archetype/source/styleguide/alerts.scss +0 -21
- data/test/fixtures/stylesheets/archetype/source/styleguide/buttons.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/styleguide/drop.scss +0 -101
- data/test/fixtures/stylesheets/archetype/source/styleguide/extend.scss +0 -24
- data/test/fixtures/stylesheets/archetype/source/styleguide/fallback_styles.scss +0 -23
- data/test/fixtures/stylesheets/archetype/source/styleguide/invalid_structures.scss +0 -85
- data/test/fixtures/stylesheets/archetype/source/styleguide/multi_value.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/styleguide/nested_styleguides.scss +0 -40
- data/test/fixtures/stylesheets/archetype/source/styleguide/selective_state.scss +0 -22
- data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +0 -35
- data/test/fixtures/stylesheets/archetype/source/ui/hide_element.scss +0 -5
- data/test/fixtures/stylesheets/archetype/source/ui/stroke.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/ui/triangle.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/utilities/associative.scss +0 -24
- data/test/fixtures/stylesheets/archetype/source/utilities/custom_output_styler.scss +0 -22
- data/test/fixtures/stylesheets/archetype/source/utilities/if-set.scss +0 -16
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/horizontal-spacing.scss +0 -27
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/vertical-spacing.scss +0 -27
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/filter.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/font-family.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/z-index.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +0 -77
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-os.scss +0 -42
- data/test/fixtures/stylesheets/archetype/tmp/b.css +0 -14
- data/test/fixtures/stylesheets/archetype/tmp/base.css +0 -349
- data/test/fixtures/stylesheets/archetype/tmp/hacks/ie_pseudo.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/hacks/transparent_focusable.css +0 -4
- data/test/fixtures/stylesheets/archetype/tmp/locale.css +0 -23
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/alerts.css +0 -711
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/buttons.css +0 -2119
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/drop.css +0 -63
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/extend.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/fallback_styles.css +0 -10
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/invalid_structures.css +0 -21
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/multi_value.css +0 -13
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/nested_styleguides.css +0 -28
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/selective_state.css +0 -177
- data/test/fixtures/stylesheets/archetype/tmp/ui/glyph_icon.css +0 -127
- data/test/fixtures/stylesheets/archetype/tmp/ui/hide_element.css +0 -8
- data/test/fixtures/stylesheets/archetype/tmp/ui/stroke.css +0 -17
- data/test/fixtures/stylesheets/archetype/tmp/ui/triangle.css +0 -35
- data/test/fixtures/stylesheets/archetype/tmp/utilities/associative.css +0 -9
- data/test/fixtures/stylesheets/archetype/tmp/utilities/custom_output_styler.css +0 -8
- data/test/fixtures/stylesheets/archetype/tmp/utilities/if-set.css +0 -9
- data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/horizontal-spacing.css +0 -29
- data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/vertical-spacing.css +0 -29
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/filter.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/font-family.css +0 -16
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/z-index.css +0 -15
- data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-browser.css +0 -105
- data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-os.css +0 -55
- data/test/helpers/diff.rb +0 -49
- data/test/helpers/io.rb +0 -36
- data/test/helpers/test_case.rb +0 -62
- data/test/integrations/archetype_test.rb +0 -126
- data/test/test_helper.rb +0 -26
- data/test/units/sass_extensions_test.rb +0 -200
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Archetype::SassExtensions::Styleguide
|
|
2
|
+
|
|
3
|
+
private
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# keep a registry of styleguide themes
|
|
7
|
+
#
|
|
8
|
+
# *Parameters*:
|
|
9
|
+
# - <tt>theme</tt> {String} the theme to use
|
|
10
|
+
# *Returns*:
|
|
11
|
+
# - {Hash} the theme
|
|
12
|
+
#
|
|
13
|
+
def get_theme(theme)
|
|
14
|
+
if @@styleguide_themes.nil?
|
|
15
|
+
# bind a callback to file save to cleanup the cache if needed
|
|
16
|
+
Compass.configuration.on_stylesheet_saved do |filename|
|
|
17
|
+
::Archetype::SassExtensions::Styleguide.reset!(filename) unless Compass.configuration.memoize == :aggressive
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
@@styleguide_themes ||= {}
|
|
21
|
+
theme_name = helpers.to_str(theme || environment.var('CONFIG_THEME') || Archetype.name)
|
|
22
|
+
key = nil
|
|
23
|
+
begin
|
|
24
|
+
key = environment.options[:css_filename].hash
|
|
25
|
+
end
|
|
26
|
+
# if we're aggressively memoizing, store everything across the session
|
|
27
|
+
if Compass.configuration.memoize == :aggressive or not key
|
|
28
|
+
styleguide_store = @@styleguide_themes
|
|
29
|
+
#otherwise, just store it per this file instance
|
|
30
|
+
else
|
|
31
|
+
styleguide_store = @@styleguide_themes[key] ||= {}
|
|
32
|
+
end
|
|
33
|
+
theme = styleguide_store[theme_name] ||= {}
|
|
34
|
+
theme[:name] ||= theme_name
|
|
35
|
+
theme[:components] ||= {}
|
|
36
|
+
theme[:extensions] ||= []
|
|
37
|
+
return theme
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -1,60 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
require 'thread'
|
|
1
|
+
module Archetype::SassExtensions::UI; end
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
module Archetype::SassExtensions::UI
|
|
8
|
-
# :stopdoc:
|
|
9
|
-
@@archetype_ui_mutex = Mutex.new
|
|
10
|
-
# :startdoc:
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
# generate a unique token
|
|
14
|
-
#
|
|
15
|
-
# *Parameters*:
|
|
16
|
-
# - <tt>$prefix</tt> {String} a string to prefix the UID with, `class` and `id` will generate a unique selector
|
|
17
|
-
# *Returns*:
|
|
18
|
-
# - {String} the unique string
|
|
19
|
-
#
|
|
20
|
-
def unique(prefix = '')
|
|
21
|
-
prefix = helpers.to_str(prefix, ' ', :quotes)
|
|
22
|
-
prefix = '.' if prefix == 'class'
|
|
23
|
-
prefix = '#' if prefix == 'id'
|
|
24
|
-
suffix = Compass.configuration.testing ? "RANDOM_UID" : "#{Time.now.to_i}-#{rand(36**8).to_s(36)}-#{uid}"
|
|
25
|
-
return Sass::Script::String.new("#{prefix}archetype-uid-#{suffix}")
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# parse a CSS content string and format it for injection into innerHTML
|
|
30
|
-
#
|
|
31
|
-
# *Parameters*:
|
|
32
|
-
# - <tt>$content</tt> {String} the CSS content string
|
|
33
|
-
# *Returns*:
|
|
34
|
-
# - {String} the processed string
|
|
35
|
-
#
|
|
36
|
-
def _ie_pseudo_content(content)
|
|
37
|
-
content = helpers.to_str(content)
|
|
38
|
-
# escape &
|
|
39
|
-
content = content.gsub(/\&/, '&')
|
|
40
|
-
# convert char codes (and remove single trailing whitespace if present) (e.g. \2079 -> ⁹)
|
|
41
|
-
content = content.gsub(/\\([\da-zA-Z]{4})\s?/, '&#x\1;')
|
|
42
|
-
# escape tags and cleanup quotes
|
|
43
|
-
content = content.gsub(/\</, '<').gsub(/\>/, '>')
|
|
44
|
-
# cleanup quotes
|
|
45
|
-
content = content.gsub(/\A"|"\Z/, '').gsub(/\"/, '\\"')
|
|
46
|
-
return Sass::Script::String.new(content)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
def helpers
|
|
51
|
-
@helpers ||= Archetype::Functions::Helpers
|
|
52
|
-
end
|
|
3
|
+
%w(glyphs scopes).each do |func|
|
|
4
|
+
require "archetype/sass_extensions/functions/ui/#{func}"
|
|
5
|
+
end
|
|
53
6
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@@uid += 1
|
|
58
|
-
end
|
|
59
|
-
end
|
|
7
|
+
module Archetype::SassExtensions::UI
|
|
8
|
+
include Archetype::SassExtensions::UI::Glyphs
|
|
9
|
+
include Archetype::SassExtensions::UI::Scopes
|
|
60
10
|
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
module Archetype::SassExtensions::UI::Glyphs
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# given a set of grid sizes and an individual size, return the closest matching size
|
|
5
|
+
#
|
|
6
|
+
# *Parameters*:
|
|
7
|
+
# - <tt>$grids</tt> {List} the list of grid options
|
|
8
|
+
# - <tt>$size</tt> {Number} the size to find a match for
|
|
9
|
+
# *Returns*:
|
|
10
|
+
# - {Number} the closest matching grid size
|
|
11
|
+
#
|
|
12
|
+
def choose_best_glyph_grid(grids, size)
|
|
13
|
+
return grids if grids == null
|
|
14
|
+
|
|
15
|
+
grids = grids.to_a
|
|
16
|
+
|
|
17
|
+
# perfect match?
|
|
18
|
+
if grids.include?(size)
|
|
19
|
+
return size
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# otherwise let's find the best match
|
|
23
|
+
# start with assuming the first item is the best
|
|
24
|
+
best = {
|
|
25
|
+
:grid => grids.first,
|
|
26
|
+
:distance => (+1.0/0.0) # similuate Float::INFINITY, but for Ruby 1.8
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# for each grid option...
|
|
30
|
+
grids.each do |grid|
|
|
31
|
+
# if the units are comparable...
|
|
32
|
+
if unit(grid) == unit(size)
|
|
33
|
+
|
|
34
|
+
tmp_grid = strip_units(grid).value.to_f
|
|
35
|
+
tmp_size = strip_units(size).value.to_f
|
|
36
|
+
|
|
37
|
+
# simple algorithm to compute the distance between the size and grid
|
|
38
|
+
# choose the lesser of the (mod) or (grid - mod)
|
|
39
|
+
# then divide it by grid^(number_of_grid_choices)
|
|
40
|
+
mod = (tmp_size % tmp_grid)
|
|
41
|
+
distance = [mod, tmp_grid - mod].min / tmp_grid**(grids.length)
|
|
42
|
+
|
|
43
|
+
# if it's closer (smaller distance), use it...
|
|
44
|
+
if distance < best[:distance]
|
|
45
|
+
best = {
|
|
46
|
+
:grid => grid,
|
|
47
|
+
:distance => distance
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
# return the best match we found
|
|
53
|
+
return best[:grid]
|
|
54
|
+
end
|
|
55
|
+
Sass::Script::Functions.declare :choose_best_glyph_grid, [:grids, :size]
|
|
56
|
+
|
|
57
|
+
#
|
|
58
|
+
# checks if a string looks like it's just a composition of character codes
|
|
59
|
+
#
|
|
60
|
+
# *Parameters*:
|
|
61
|
+
# - <tt>$string</tt> {String} the string to check
|
|
62
|
+
# *Returns*:
|
|
63
|
+
# - {Boolean} whether or not the string looks like a sequence of character codes
|
|
64
|
+
#
|
|
65
|
+
def looks_like_character_code(string)
|
|
66
|
+
string = helpers.to_str(string, ' ', :quotes)
|
|
67
|
+
return bool(string =~ /^(\\([\da-fA-F]{4})\s*)+$/)
|
|
68
|
+
end
|
|
69
|
+
Sass::Script::Functions.declare :looks_like_character_code, [:string]
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
#
|
|
73
|
+
# registers a glyph library under a given key
|
|
74
|
+
#
|
|
75
|
+
def register_glyph_library(key, library)
|
|
76
|
+
registry = archetype_glyphs_registry
|
|
77
|
+
# if it's already in the registry, just return the current list
|
|
78
|
+
if is_null(registry[key])
|
|
79
|
+
registry = registry.dup
|
|
80
|
+
registry[key] = library
|
|
81
|
+
registry = Sass::Script::Value::Map.new(registry)
|
|
82
|
+
environment.global_env.set_var('CONFIG_GLYPHS_LIBRARIES', registry)
|
|
83
|
+
end
|
|
84
|
+
return key
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
#
|
|
88
|
+
# gets a glyph library as registered under the given key
|
|
89
|
+
#
|
|
90
|
+
def get_glyph_library(key)
|
|
91
|
+
default_key = identifier('default')
|
|
92
|
+
default = archetype_glyphs_registry[default_key] || null
|
|
93
|
+
return default if key == default_key
|
|
94
|
+
|
|
95
|
+
library = archetype_glyphs_registry[key]
|
|
96
|
+
# if the library doesn't exist...
|
|
97
|
+
if helpers.is_null(library)
|
|
98
|
+
# notify the user
|
|
99
|
+
helpers.warn("[archetype:glyph] could not find a glyph library for `#{library}`, using default")
|
|
100
|
+
# and return the default
|
|
101
|
+
return default
|
|
102
|
+
end
|
|
103
|
+
# merge the library with the default
|
|
104
|
+
return map_merge(default, library)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def get_all_glyph_libraries
|
|
109
|
+
return environment.var('CONFIG_GLYPHS_LIBRARIES') || Sass::Script::Value::Map.new
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
private
|
|
113
|
+
|
|
114
|
+
def archetype_glyphs_registry
|
|
115
|
+
registry = environment.var('CONFIG_GLYPHS_LIBRARIES')
|
|
116
|
+
return registry.respond_to?(:to_h) ? registry.to_h : {}
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
module Archetype::SassExtensions::UI::Scopes
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# registers a breakpoint
|
|
5
|
+
#
|
|
6
|
+
# *Parameters*:
|
|
7
|
+
# - <tt>$key</tt> {String} the key to register it under
|
|
8
|
+
# - <tt>$value</tt> {*} the value to register
|
|
9
|
+
# - <tt>$force</tt> {Boolean} if true, forces any new value into the registry
|
|
10
|
+
# *Returns*:
|
|
11
|
+
# - {Boolean} whether or not the value was registered
|
|
12
|
+
#
|
|
13
|
+
def register_breakpoint(key, value, force = nil)
|
|
14
|
+
# we need a dup as the Hash is frozen
|
|
15
|
+
breakpoints = registered_breakpoints.dup
|
|
16
|
+
force = force.nil? ? false : force.value
|
|
17
|
+
not_registered = breakpoints[key].nil? || is_null(breakpoints[key]).value
|
|
18
|
+
# if there's no key registered...
|
|
19
|
+
if force || not_registered
|
|
20
|
+
# just register the value
|
|
21
|
+
breakpoints[key] = value
|
|
22
|
+
# otherwise, if the current value is different...
|
|
23
|
+
elsif breakpoints[key] != value
|
|
24
|
+
# throw a warning
|
|
25
|
+
helpers.warn("[#{Archetype.name}:breakpoint] a breakpoint for `#{key}` is already set to `#{breakpoints[key]}`, ignoring `#{value}`")
|
|
26
|
+
return bool(false)
|
|
27
|
+
end
|
|
28
|
+
environment.global_env.set_var('CONFIG_BREAKPOINTS', Sass::Script::Value::Map.new(breakpoints))
|
|
29
|
+
return bool(true)
|
|
30
|
+
end
|
|
31
|
+
Sass::Script::Functions.declare :register_breakpoint, [:key, :value]
|
|
32
|
+
Sass::Script::Functions.declare :register_breakpoint, [:key, :value, :force]
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# retrieves a breakpoint
|
|
36
|
+
#
|
|
37
|
+
# *Parameters*:
|
|
38
|
+
# - <tt>$key</tt> {String} the key to lookup
|
|
39
|
+
# *Returns*:
|
|
40
|
+
# - {*} the registered breakpoint
|
|
41
|
+
#
|
|
42
|
+
def get_breakpoint(key)
|
|
43
|
+
return registered_breakpoints[key] || null
|
|
44
|
+
end
|
|
45
|
+
Sass::Script::Functions.declare :get_breakpoint, [:key]
|
|
46
|
+
|
|
47
|
+
#
|
|
48
|
+
# convert a modifier/element context to a BEM style selector
|
|
49
|
+
#
|
|
50
|
+
# *Parameters*:
|
|
51
|
+
# - <tt>$context</tt> {String} the root selector to scope to
|
|
52
|
+
# - <tt>$element</tt> {String} the element name
|
|
53
|
+
# - <tt>$modifier</tt> {String} the modifier
|
|
54
|
+
# *Returns*:
|
|
55
|
+
# - {String} the BEM formatted selector
|
|
56
|
+
#
|
|
57
|
+
def bem_selector(context = nil, element = nil, modifier = nil)
|
|
58
|
+
element_separator = environment.var('CONFIG_BEM_ELEMENT_SEPARATOR')
|
|
59
|
+
element_separator = element_separator.nil? ? '__' : element_separator.value
|
|
60
|
+
|
|
61
|
+
modifier_separator = environment.var('CONFIG_BEM_MODIFIER_SEPARATOR')
|
|
62
|
+
modifier_separator = modifier_separator.nil? ? '--' : modifier_separator.value
|
|
63
|
+
|
|
64
|
+
context = is_null(context).value ? '' : context.value
|
|
65
|
+
element = is_null(element).value ? nil : element.value
|
|
66
|
+
modifier = is_null(modifier).value ? nil : modifier.value
|
|
67
|
+
|
|
68
|
+
selector = context
|
|
69
|
+
|
|
70
|
+
warning = "[#{Archetype.name}:bem] the current context may produce a non-standard BEM selector for";
|
|
71
|
+
|
|
72
|
+
unless element.nil?
|
|
73
|
+
helpers.warn("#{warning} element `#{element}`: #{context}") if (context.include?(element_separator) || context.include?(modifier_separator))
|
|
74
|
+
selector = "#{selector}#{element_separator}#{element}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
unless modifier.nil?
|
|
78
|
+
helpers.warn("#{warning} modifier `#{modifier}`: #{context}") if context.include?(modifier_separator)
|
|
79
|
+
selector = "#{selector}#{modifier_separator}#{modifier}"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
return identifier(selector)
|
|
83
|
+
end
|
|
84
|
+
Sass::Script::Functions.declare :bem_selector, [:context]
|
|
85
|
+
Sass::Script::Functions.declare :bem_selector, [:context, :element]
|
|
86
|
+
Sass::Script::Functions.declare :bem_selector, [:context, :modifier]
|
|
87
|
+
Sass::Script::Functions.declare :bem_selector, [:context, :element, :modifier]
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
|
|
91
|
+
def registered_breakpoints
|
|
92
|
+
breakpoints = environment.var('CONFIG_BREAKPOINTS')
|
|
93
|
+
breakpoints.respond_to?(:to_h) ? breakpoints.to_h : {}
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# :stopdoc:
|
|
2
|
+
module Archetype::SassExtensions::Util; end
|
|
3
|
+
|
|
4
|
+
%w(debug misc images spacing hacks).each do |func|
|
|
5
|
+
require "archetype/sass_extensions/functions/util/#{func}"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
module Archetype::SassExtensions::Util
|
|
9
|
+
include Archetype::SassExtensions::Util::Misc
|
|
10
|
+
include Archetype::SassExtensions::Util::Images
|
|
11
|
+
include Archetype::SassExtensions::Util::Debug
|
|
12
|
+
include Archetype::SassExtensions::Util::Spacing
|
|
13
|
+
include Archetype::SassExtensions::Util::Hacks
|
|
14
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Archetype::SassExtensions::Util::Debug
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# check if debug is enabled
|
|
5
|
+
#
|
|
6
|
+
# *Parameters*:
|
|
7
|
+
# - <tt>$iff</tt> {Boolean} optional override for `$CONFIG_DEBUG`
|
|
8
|
+
# *Returns*:
|
|
9
|
+
# - {Boolean} whether or not debug is enabled
|
|
10
|
+
#
|
|
11
|
+
def is_debug_enabled(iff = nil)
|
|
12
|
+
# debug is only available in DEBUG environments, so check that first
|
|
13
|
+
return bool(false) unless (environment.var('CONFIG_DEBUG_ENVS') || []).to_a.include?(archetype_env)
|
|
14
|
+
# then check if the debug flag/override is truthy
|
|
15
|
+
# if the param is non-null, then use it
|
|
16
|
+
return iff unless is_null(iff).value
|
|
17
|
+
# otherwise, use `CONFIG_DEBUG`
|
|
18
|
+
return environment.var('CONFIG_DEBUG') || bool(false)
|
|
19
|
+
end
|
|
20
|
+
Sass::Script::Functions.declare :is_debug_enabled, [:iff]
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Archetype::SassExtensions::Util::Hacks
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# parse a CSS content string and format it for injection into innerHTML
|
|
5
|
+
#
|
|
6
|
+
# *Parameters*:
|
|
7
|
+
# - <tt>$content</tt> {String} the CSS content string
|
|
8
|
+
# *Returns*:
|
|
9
|
+
# - {String} the processed string
|
|
10
|
+
#
|
|
11
|
+
def _ie_pseudo_content(content)
|
|
12
|
+
content = helpers.to_str(content)
|
|
13
|
+
# escape &
|
|
14
|
+
content = content.gsub(/\&/, '&')
|
|
15
|
+
# convert char codes (and remove single trailing whitespace if present) (e.g. \2079 -> ⁹)
|
|
16
|
+
content = content.gsub(/\\([\da-fA-F]{4})\s?/, '&#x\1;')
|
|
17
|
+
# escape tags and cleanup quotes
|
|
18
|
+
content = content.gsub(/\</, '<').gsub(/\>/, '>')
|
|
19
|
+
# cleanup quotes
|
|
20
|
+
content = content.gsub(/\A"|"\Z/, '').gsub(/\"/, '\\"')
|
|
21
|
+
return identifier(content)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# given a string of styles, convert it into a map
|
|
26
|
+
#
|
|
27
|
+
# *Parameters*:
|
|
28
|
+
# - <tt>$string</tt> {String} the string to convert
|
|
29
|
+
# *Returns*:
|
|
30
|
+
# - {Map} the converted map of styles
|
|
31
|
+
#
|
|
32
|
+
def _style_string_to_map(string = '')
|
|
33
|
+
# convert to string and strip all comments
|
|
34
|
+
string = helpers.to_str(string, ' ').gsub(/\/\*(?!\*\/)*\*\//, '')
|
|
35
|
+
# then split it on each rule and for each rule break it into it's key-value pairs
|
|
36
|
+
styles = string.split(';').map do |rule|
|
|
37
|
+
k, v = rule.split(':')
|
|
38
|
+
[identifier(k), identifier(v)]
|
|
39
|
+
end
|
|
40
|
+
# then recompose the map
|
|
41
|
+
return Sass::Script::Value::Map.new(Sass::Util.to_hash(styles))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
module Archetype::SassExtensions::Util::Images
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# helper to determine if a sprite is already set or sprites are disabled
|
|
5
|
+
#
|
|
6
|
+
# *Parameters*:
|
|
7
|
+
# - <tt>$sprite</tt> {SpriteMap} the sprite map to check against
|
|
8
|
+
# *Returns*:
|
|
9
|
+
# - {Boolean} should the sprite be set
|
|
10
|
+
#
|
|
11
|
+
def _shouldSetSprite(sprite)
|
|
12
|
+
is_sprite = sprite.is_a?(Compass::SassExtensions::Sprites::SpriteMap)
|
|
13
|
+
should_set_sprite = !global_sprites_disabled? && !is_sprite
|
|
14
|
+
return bool(should_set_sprite)
|
|
15
|
+
end
|
|
16
|
+
Sass::Script::Functions.declare :get_collection, [:components, :min]
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# check that a sprite isn't null or false
|
|
20
|
+
#
|
|
21
|
+
# *Parameters*:
|
|
22
|
+
# - <tt>$map</tt> {SpriteMap} the sprite map to check against
|
|
23
|
+
# *Returns*:
|
|
24
|
+
# - {Boolean} is the sprite set
|
|
25
|
+
#
|
|
26
|
+
def _archetype_check_sprite(map)
|
|
27
|
+
status = !(global_sprites_disabled? && (is_null(map) || !map.value))
|
|
28
|
+
return bool(status)
|
|
29
|
+
end
|
|
30
|
+
Sass::Script::Functions.declare :_archetype_check_sprite, [:map]
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# wrapper for `sprite`
|
|
34
|
+
#
|
|
35
|
+
# *Parameters*:
|
|
36
|
+
# - <tt>$map</tt> {SpriteMap} the sprite map
|
|
37
|
+
# - <tt>$sprite</tt> {Sprite} the sprite name
|
|
38
|
+
# - <tt>$offset-x</tt> {Number} the horizontal offset of the sprite position
|
|
39
|
+
# - <tt>$offset-y</tt> {Number} the vertical offset of the sprite position
|
|
40
|
+
# *Returns*:
|
|
41
|
+
# - {Sprite} the sprite object or `null`
|
|
42
|
+
#
|
|
43
|
+
def _archetype_sprite(map, sprite, offset_x = number(0), offset_y = number(0))
|
|
44
|
+
return null unless _archetype_check_sprite(map)
|
|
45
|
+
return sprite(map, sprite, offset_x, offset_y)
|
|
46
|
+
end
|
|
47
|
+
Sass::Script::Functions.declare :_archetype_sprite, [:map, :sprite, :offset_x, :offset_y]
|
|
48
|
+
|
|
49
|
+
#
|
|
50
|
+
# wrapper for `sprite-position`
|
|
51
|
+
#
|
|
52
|
+
# *Parameters*:
|
|
53
|
+
# - <tt>$map</tt> {SpriteMap} the sprite map
|
|
54
|
+
# - <tt>$sprite</tt> {Sprite} the sprite name
|
|
55
|
+
# - <tt>$offset-x</tt> {Number} the horizontal offset of the sprite position
|
|
56
|
+
# - <tt>$offset-y</tt> {Number} the vertical offset of the sprite position
|
|
57
|
+
# *Returns*:
|
|
58
|
+
# - {List} the sprite position or `null`
|
|
59
|
+
#
|
|
60
|
+
def _archetype_sprite_position(map, sprite, offset_x = number(0), offset_y = number(0))
|
|
61
|
+
return null unless _archetype_check_sprite(map)
|
|
62
|
+
return sprite_position(map, sprite, offset_x, offset_y)
|
|
63
|
+
end
|
|
64
|
+
Sass::Script::Functions.declare :_archetype_sprite_position, [:map, :sprite, :offset_x, :offset_y]
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# wrapper for `sprite-url`
|
|
68
|
+
#
|
|
69
|
+
# *Parameters*:
|
|
70
|
+
# - <tt>$map</tt> {SpriteMap} the sprite map
|
|
71
|
+
# *Returns*:
|
|
72
|
+
# - {String} the sprite URL or `null`
|
|
73
|
+
#
|
|
74
|
+
def _archetype_sprite_url(map)
|
|
75
|
+
return null unless _archetype_check_sprite(map)
|
|
76
|
+
return sprite_url(map)
|
|
77
|
+
end
|
|
78
|
+
Sass::Script::Functions.declare :_archetype_sprite_url, [:map]
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
# wrapper for `sprite-file`
|
|
82
|
+
#
|
|
83
|
+
# *Parameters*:
|
|
84
|
+
# - <tt>$map</tt> {SpriteMap} the sprite map
|
|
85
|
+
# - <tt>$sprite</tt> {Sprite} the sprite name
|
|
86
|
+
# *Returns*:
|
|
87
|
+
# - {ImageFile} the image or `null`
|
|
88
|
+
#
|
|
89
|
+
def _archetype_sprite_file(map, sprite)
|
|
90
|
+
return null unless _archetype_check_sprite(map)
|
|
91
|
+
return sprite_file(map, sprite)
|
|
92
|
+
end
|
|
93
|
+
Sass::Script::Functions.declare :_archetype_sprite_file, [:map, :sprite]
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
# wrapper for `image-width`
|
|
97
|
+
#
|
|
98
|
+
# *Parameters*:
|
|
99
|
+
# - <tt>$image</tt> {ImageFile} the image
|
|
100
|
+
# - <tt>$sprite</tt> {Sprite} the sprite name
|
|
101
|
+
# *Returns*:
|
|
102
|
+
# - {Number} the width of the image or `null`
|
|
103
|
+
#
|
|
104
|
+
def _archetype_image_width(image)
|
|
105
|
+
return null if is_null(image).value
|
|
106
|
+
return image_width(image)
|
|
107
|
+
end
|
|
108
|
+
Sass::Script::Functions.declare :_archetype_image_width, [:image]
|
|
109
|
+
|
|
110
|
+
#
|
|
111
|
+
# wrapper for `image-height`
|
|
112
|
+
#
|
|
113
|
+
# *Parameters*:
|
|
114
|
+
# - <tt>$image</tt> {ImageFile} the image
|
|
115
|
+
# - <tt>$sprite</tt> {Sprite} the sprite name
|
|
116
|
+
# *Returns*:
|
|
117
|
+
# - {Number} the height of the image or `null`
|
|
118
|
+
#
|
|
119
|
+
def _archetype_image_height(image)
|
|
120
|
+
return null if is_null(image).value
|
|
121
|
+
return image_height(image)
|
|
122
|
+
end
|
|
123
|
+
Sass::Script::Functions.declare :_archetype_image_height, [:image]
|
|
124
|
+
|
|
125
|
+
private
|
|
126
|
+
|
|
127
|
+
def global_sprites_disabled?
|
|
128
|
+
sprites_disabled = environment.var('CONFIG_DISABLE_STYLEGUIDE_SPRITES')
|
|
129
|
+
return sprites_disabled.respond_to?(:value) ? sprites_disabled.value : false
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|