archetype 0.0.1.pre.12 → 0.0.1.pre.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/lib/archetype.rb +4 -0
  3. data/lib/archetype/actions/help.rb +16 -0
  4. data/lib/archetype/actions/theme.rb +73 -0
  5. data/lib/archetype/executor.rb +27 -0
  6. data/lib/archetype/functions/hash.rb +28 -12
  7. data/lib/archetype/functions/helpers.rb +46 -13
  8. data/lib/archetype/functions/styleguide_memoizer.rb +10 -2
  9. data/lib/archetype/sass_extensions/functions/lists.rb +36 -42
  10. data/lib/archetype/sass_extensions/functions/locale.rb +32 -16
  11. data/lib/archetype/sass_extensions/functions/styleguide.rb +127 -38
  12. data/lib/archetype/sass_extensions/functions/ui.rb +3 -2
  13. data/lib/archetype/sass_extensions/functions/version.rb +11 -6
  14. data/lib/archetype/sass_extensions/monkey_patches.rb +1 -1
  15. data/lib/archetype/version.rb +2 -2
  16. data/stylesheets/archetype/_base.scss +7 -2
  17. data/stylesheets/archetype/_config.scss +8 -1
  18. data/stylesheets/archetype/_hacks.scss +51 -17
  19. data/stylesheets/archetype/_ui.scss +16 -5
  20. data/stylesheets/archetype/base/_h5bp.scss +12 -12
  21. data/stylesheets/archetype/base/_normalize.scss +178 -139
  22. data/stylesheets/archetype/grid/_grid.scss +13 -13
  23. data/stylesheets/archetype/styleguide/components/_buttons.scss +1 -0
  24. data/stylesheets/archetype/util/_debug.scss +4 -4
  25. data/stylesheets/archetype/util/_lists.scss +1 -1
  26. data/stylesheets/archetype/util/_misc.scss +1 -1
  27. data/stylesheets/archetype/util/_rtl.scss +1 -1
  28. data/stylesheets/archetype/util/_spacing.scss +6 -6
  29. data/stylesheets/archetype/util/_styles.scss +21 -10
  30. data/stylesheets/archetype/util/_targeting.scss +1 -1
  31. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders-s7889ccc8c1.png +0 -0
  32. data/test/fixtures/stylesheets/archetype/config.rb +2 -0
  33. data/test/fixtures/stylesheets/archetype/source/base.scss +3 -0
  34. data/test/fixtures/stylesheets/archetype/source/hacks/transparent_focusable.scss +5 -0
  35. data/test/fixtures/stylesheets/archetype/source/locale.scss +43 -0
  36. data/test/fixtures/stylesheets/archetype/source/styleguide/alerts.scss +21 -0
  37. data/test/fixtures/stylesheets/archetype/source/styleguide/buttons.scss +5 -1
  38. data/test/fixtures/stylesheets/archetype/source/styleguide/drop.scss +101 -0
  39. data/test/fixtures/stylesheets/archetype/source/styleguide/extend.scss +24 -0
  40. data/test/fixtures/stylesheets/archetype/source/styleguide/invalid_structures.scss +85 -0
  41. data/test/fixtures/stylesheets/archetype/source/styleguide/multi_value.scss +18 -0
  42. data/test/fixtures/stylesheets/archetype/source/styleguide/nested_styleguides.scss +1 -1
  43. data/test/fixtures/stylesheets/archetype/source/styleguide/selective_state.scss +1 -1
  44. data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +30 -0
  45. data/test/fixtures/stylesheets/archetype/source/utilities/associative.scss +24 -0
  46. data/test/fixtures/stylesheets/archetype/source/utilities/custom_output_styler.scss +4 -3
  47. data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +8 -1
  48. data/test/fixtures/stylesheets/archetype/tmp/b.css +14 -0
  49. data/test/fixtures/stylesheets/archetype/tmp/base.css +349 -0
  50. data/test/fixtures/stylesheets/archetype/tmp/hacks/ie_pseudo.css +11 -0
  51. data/test/fixtures/stylesheets/archetype/tmp/hacks/transparent_focusable.css +4 -0
  52. data/test/fixtures/stylesheets/archetype/tmp/locale.css +23 -0
  53. data/test/fixtures/stylesheets/archetype/tmp/styleguide/alerts.css +711 -0
  54. data/test/fixtures/stylesheets/archetype/tmp/styleguide/buttons.css +2119 -0
  55. data/test/fixtures/stylesheets/archetype/tmp/styleguide/drop.css +63 -0
  56. data/test/fixtures/stylesheets/archetype/tmp/styleguide/extend.css +11 -0
  57. data/test/fixtures/stylesheets/archetype/tmp/styleguide/fallback_styles.css +10 -0
  58. data/test/fixtures/stylesheets/archetype/tmp/styleguide/invalid_structures.css +21 -0
  59. data/test/fixtures/stylesheets/archetype/tmp/styleguide/multi_value.css +13 -0
  60. data/test/fixtures/stylesheets/archetype/tmp/styleguide/nested_styleguides.css +28 -0
  61. data/test/fixtures/stylesheets/archetype/tmp/styleguide/selective_state.css +177 -0
  62. data/test/fixtures/stylesheets/archetype/tmp/ui/glyph_icon.css +127 -0
  63. data/test/fixtures/stylesheets/archetype/tmp/ui/hide_element.css +8 -0
  64. data/test/fixtures/stylesheets/archetype/tmp/ui/stroke.css +17 -0
  65. data/test/fixtures/stylesheets/archetype/tmp/ui/triangle.css +35 -0
  66. data/test/fixtures/stylesheets/archetype/tmp/utilities/associative.css +9 -0
  67. data/test/fixtures/stylesheets/archetype/tmp/utilities/custom_output_styler.css +8 -0
  68. data/test/fixtures/stylesheets/archetype/tmp/utilities/if-set.css +9 -0
  69. data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/horizontal-spacing.css +29 -0
  70. data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/vertical-spacing.css +29 -0
  71. data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/filter.css +11 -0
  72. data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/font-family.css +16 -0
  73. data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/z-index.css +15 -0
  74. data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-browser.css +105 -0
  75. data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-os.css +55 -0
  76. data/test/helpers/test_case.rb +2 -2
  77. data/test/integrations/archetype_test.rb +3 -1
  78. data/test/units/sass_extensions_test.rb +18 -25
  79. metadata +81 -3
@@ -3,17 +3,36 @@
3
3
  #
4
4
  module Archetype::SassExtensions::Locale
5
5
  #
6
- # get the current locale specified in config
6
+ # get the current locale specified in config or test a list of locales against the current locale
7
7
  #
8
+ # *Parameters*:
9
+ # - <tt>$locales</tt> {List} the list of locales to test
8
10
  # *Returns*:
9
- # - {String} the current locale
11
+ # - {String|Boolean} the current locale or whether or not the current locale is in the test set
10
12
  #
11
- def locale
12
- return Sass::Script::String.new(Compass.configuration.locale || 'en_US')
13
+ def locale(locales = nil)
14
+ locale = (Compass.configuration.locale || 'en_US').to_s
15
+ # if the locales are nil, just return the current locale
16
+ return Sass::Script::String.new(locale) if locales.nil?
17
+ locales = locales.to_a.collect{|i| i.to_s}
18
+ # add wild card support for language or territory
19
+ match = locale.match(LOCALE_PATTERN)
20
+ # language with wildcard territory
21
+ language = match[1] + '_'
22
+ # territory with wildcard language
23
+ territory = '_' + match[2]
24
+ # for each item, look it up in the alias list
25
+ locales.each do |key|
26
+ if a = locale_aliases[key]
27
+ locales.delete(key)
28
+ locales.concat(a)
29
+ end
30
+ end
31
+ return Sass::Script::Bool.new(locales.include?(locale) || locales.include?(language) || locales.include?(territory))
13
32
  end
14
33
 
15
34
  #
16
- # test a list of locales against the current locale (supports an alias map)
35
+ # test a list of locales against the current locale (this is now just an alias for locales(), for back-compat)
17
36
  #
18
37
  # *Parameters*:
19
38
  # - <tt>$locales</tt> {List} the list of locales to test
@@ -21,16 +40,9 @@ module Archetype::SassExtensions::Locale
21
40
  # - {Boolean} is the current locale in the list or not
22
41
  #
23
42
  def lang(locales)
24
- locales = locales.to_a.collect{|i| i.to_s}
25
- locales.each do |key|
26
- if a = locale_aliases[key]
27
- locales.delete(key)
28
- locales.concat(a)
29
- end
30
- end
31
- return Sass::Script::Bool.new(locales.include?(locale.to_s))
43
+ return locale(locales)
32
44
  end
33
-
45
+
34
46
  #
35
47
  # get the current reading direction
36
48
  #
@@ -43,6 +55,9 @@ module Archetype::SassExtensions::Locale
43
55
  end
44
56
 
45
57
  private
58
+
59
+ LOCALE_PATTERN = /([a-z]{2})[-_]?([a-z]{2}?)/i
60
+
46
61
  #
47
62
  # provides an alias mapping for locale names
48
63
  #
@@ -52,8 +67,9 @@ private
52
67
  # TODO - make this easily extensible
53
68
  def locale_aliases
54
69
  if @locale_aliases.nil?
55
- a = {}
56
- a['CJK'] = ['ja_JP', 'ko_KR', 'zh_TW', 'zh_CN']
70
+ a = {
71
+ 'CJK' => ['ja_JP', 'ko_KR', 'zh_TW', 'zh_CN']
72
+ }
57
73
  @locale_aliases = a
58
74
  end
59
75
  return @locale_aliases
@@ -15,10 +15,13 @@ module Archetype::SassExtensions::Styleguide
15
15
  DEFAULT = 'default'
16
16
  REGEX = 'regex'
17
17
  SPECIAL = %w(states selectors)
18
+ DROPALL = %w(all true)
18
19
  # these are unique CSS keys that can be exploited to provide fallback functionality by providing a second value
19
20
  # e.g color: red; color: rgba(255,0,0, 0.8);
20
- FALLBACKS = %w(background background-image background-color border border-bottom border-bottom-color border-color border-left border-left-color border-right border-right-color border-top border-top-color clip color layer-background-color outline outline-color white-space)
21
- ADDITIVES = FALLBACKS + [DROP, INHERIT, STYLEGUIDE]
21
+ FALLBACKS = %w(background background-image background-color border border-bottom border-bottom-color border-color border-left border-left-color border-right border-right-color border-top border-top-color clip color layer-background-color outline outline-color white-space extend)
22
+ # these are mixins that make sense to run multiple times within a block
23
+ MULTIMIXINS = %w(target-browser)
24
+ ADDITIVES = FALLBACKS + [DROP, INHERIT, STYLEGUIDE] + MULTIMIXINS
22
25
  @@archetype_styleguide_mutex = Mutex.new
23
26
  # :startdoc:
24
27
 
@@ -72,11 +75,11 @@ module Archetype::SassExtensions::Styleguide
72
75
  # if force was set, we'll create a random token for the name
73
76
  extension = rand(36**8).to_s(36) if force
74
77
  # convert the extension into a hash (if we don't have an extension, compose one out of its data)
75
- extension = helpers.to_str(extension || data).hash
78
+ extension = helpers.to_str(extension || data)
76
79
  extensions = theme[:extensions]
77
80
  return Sass::Script::Bool.new(false) if component_exists(id, theme, extension, force)
78
81
  extensions.push(extension)
79
- components[id] = (components[id] ||= {}).rmerge(helpers.list_to_hash(data, 1, SPECIAL, ADDITIVES))
82
+ components[id] = (components[id] ||= Archetype::Hash.new).rmerge(helpers.list_to_hash(data, 1, SPECIAL, ADDITIVES))
80
83
  return Sass::Script::Bool.new(true)
81
84
  end
82
85
  end
@@ -223,29 +226,34 @@ private
223
226
  #
224
227
  def extract_styles(id, modifiers, strict = false, theme = nil, context = nil)
225
228
  theme = get_theme(theme)
226
- context ||= theme[:components][id] || {}
229
+ context ||= theme[:components][id] || Archetype::Hash.new
227
230
  modifiers = helpers.to_str(modifiers)
228
- return {} if context.nil? or context.empty?
231
+ return Archetype::Hash.new if context.nil? or context.empty?
229
232
  # push on the defaults first
230
- out = (strict ? resolve_dependents(id, context[modifiers], theme[:name], context) : context[DEFAULT]) || {}
233
+ out = (strict ? resolve_dependents(id, context[modifiers], theme[:name], context) : context[DEFAULT]) || Archetype::Hash.new
231
234
  out = out.clone
232
235
  # if it's not strict, find anything that matched
233
236
  if not strict
234
237
  modifiers = modifiers.split
235
- context.each do |definition|
238
+ context.each do |key, definition|
239
+ definition = [key, definition]
236
240
  modifier = definition[0]
237
241
  if modifier != DEFAULT
238
242
  match = true
239
243
  modifier = modifier.split
240
244
  if modifier[0] == REGEX
241
245
  # if it's a regex pattern, test if it matches
242
- match = modifiers.join(' ') =~ /#{modifiers[1].gsub(/\A"|"\Z/, '')}/i
246
+ match = modifiers.join(' ') =~ /#{modifier[1].gsub(/\A"|"\Z/, '')}/i
243
247
  else
244
248
  # otherwise, if the modifier isn't in our list of modifiers, it's not valid and just move on
245
249
  modifier.each { |i| match = false if not modifiers.include?(i) }
246
250
  end
247
251
  # if it matched, process it
248
- out = out.rmerge(resolve_dependents(id, definition[1], theme[:name], nil, out.keys)) if match
252
+ if match
253
+ tmp = resolve_dependents(id, definition[1], theme[:name], nil, out)
254
+ out, tmp = post_resolve_drops(out, tmp)
255
+ out = out.rmerge(tmp)
256
+ end
249
257
  end
250
258
  end
251
259
  end
@@ -253,15 +261,19 @@ private
253
261
  # this lets us define special states and elements
254
262
  SPECIAL.each do |special_key|
255
263
  if out.is_a? Hash
256
- special = out[special_key]
257
- tmp = {}
258
- (special || {}).each { |key, value| tmp[key] = extract_styles(key, key, true, theme[:name], special) }
259
- out[special_key] = tmp if not tmp.empty?
264
+ special = out[special_key] || Archetype::Hash.new
265
+ if special == 'nil'
266
+ out[special_key] = Archetype::Hash.new
267
+ else
268
+ tmp = Archetype::Hash.new
269
+ special.each { |key, value| tmp[key] = extract_styles(key, key, true, theme[:name], special) }
270
+ out[special_key] = tmp if not tmp.empty?
271
+ end
260
272
  end
261
273
  end
262
274
  # check for nested styleguides
263
275
  styleguide = out[STYLEGUIDE]
264
- if styleguide and not styleguide.empty?
276
+ if not (styleguide.nil? or styleguide.empty?)
265
277
  styles = get_styles(styleguide, theme[:name])
266
278
  out.delete(STYLEGUIDE)
267
279
  out = styles.rmerge(out)
@@ -269,6 +281,87 @@ private
269
281
  return out
270
282
  end
271
283
 
284
+ #
285
+ # given two objects, resolve the chain of dropped styles
286
+ # this runs after having already resolved the dropped styles and merged
287
+ #
288
+ # *Parameters*:
289
+ # - <tt>obj</tt> {Hash} the source object
290
+ # - <tt>merger</tt> {Hash} the object to be merged in
291
+ # *Returns*:
292
+ # - {Array.<Hash>} the resulting `obj` and `merger` objects
293
+ #
294
+ def post_resolve_drops(obj, merger)
295
+ return [obj, merger] if obj.nil? or merger.nil?
296
+ drop = merger[DROP]
297
+ keys = obj.keys
298
+ if not drop.nil?
299
+ drop.to_a.each do |key|
300
+ key = helpers.to_str(key)
301
+ obj.delete(key) if not SPECIAL.include?(key)
302
+ end
303
+ merger.delete(DROP)
304
+ else
305
+ end
306
+ SPECIAL.each do |special|
307
+ if obj[special].is_a?(Hash) and merger[special].is_a?(Hash)
308
+ obj[special], merger[special] = post_resolve_drops(obj[special], merger[special])
309
+ end
310
+ end
311
+ return [obj, merger]
312
+ end
313
+
314
+ #
315
+ # given two objects, resolve the chain of dropped styles
316
+ #
317
+ # *Parameters*:
318
+ # - <tt>value</tt> {Hash} the source object
319
+ # - <tt>obj</tt> {Hash} the object to be merged in
320
+ # - <tt>is_special</tt> {Boolean} whether this is from a SPECIAL branch of a Hash
321
+ # *Returns*:
322
+ # - {Array.<Hash>} the resulting value
323
+ #
324
+ def resolve_drops(value, obj, is_special = false)
325
+ return value if not (value.is_a?(Hash) and obj.is_a?(Hash))
326
+ keys = obj.keys
327
+ drop = value[DROP]
328
+ if not drop.nil?
329
+ tmp = Archetype::Hash.new
330
+ if DROPALL.include?(helpers.to_str(drop))
331
+ if not keys.nil?
332
+ keys.each do |key|
333
+ if SPECIAL.include?(key)
334
+ if not (obj[key].nil? or obj[key].empty?)
335
+ tmp[key] = Archetype::Hash.new
336
+ tmp[key][DROP] = obj[key].keys
337
+ end
338
+ else
339
+ tmp[key] = 'nil'
340
+ end
341
+ end
342
+ end
343
+ else
344
+ drop.to_a.each do |key|
345
+ key = helpers.to_str(key)
346
+ if SPECIAL.include?(key)
347
+ if not (obj[key].nil? or obj[key].empty?)
348
+ tmp[key] = Archetype::Hash.new
349
+ tmp[key][DROP] = obj[key].keys
350
+ end
351
+ else
352
+ tmp[key] = 'nil'
353
+ end
354
+ end
355
+ end
356
+ value.delete(DROP) if not is_special
357
+ value = tmp.rmerge(value)
358
+ end
359
+ value.each do |key|
360
+ value[key] = resolve_drops(value[key], obj[key], key, SPECIAL.include?(key)) if not value[key].nil?
361
+ end
362
+ return value
363
+ end
364
+
272
365
  #
273
366
  # resolve any dependent references from the component
274
367
  #
@@ -281,33 +374,19 @@ private
281
374
  # *Returns*:
282
375
  # - {Hash} a hash of the resolved styles
283
376
  #
284
- def resolve_dependents(id, value, theme = nil, context = nil, keys = nil)
377
+ def resolve_dependents(id, value, theme = nil, context = nil, obj = nil)
285
378
  # we have to create a clone here as the passed in value is volatile and we're performing destructive changes
286
379
  value = value.clone
287
380
  # check that we're dealing with a hash
288
381
  if value.is_a?(Hash)
289
382
  # check for dropped styles
290
- drop = value[DROP]
291
- if not drop.nil?
292
- tmp = {}
293
- if %w(all true).include?(helpers.to_str(drop)) and not keys.nil? and not keys.empty?
294
- keys.each do |key|
295
- tmp[key] = 'nil'
296
- end
297
- else
298
- drop = drop.to_a
299
- drop.each do |key|
300
- tmp[helpers.to_str(key)] = 'nil'
301
- end
302
- end
303
- value.delete(DROP)
304
- value = tmp.rmerge(value)
305
- end
383
+ value = resolve_drops(value, obj)
384
+
306
385
  # check for inheritance
307
386
  inherit = value[INHERIT]
308
- if inherit and not inherit.empty?
387
+ if not (inherit.nil? or inherit.empty?)
309
388
  # create a temporary object and extract the nested styles
310
- tmp = {}
389
+ tmp = Archetype::Hash.new
311
390
  inherit.each { |related| tmp = tmp.rmerge(extract_styles(id, related, true, theme, context)) }
312
391
  # remove the inheritance key and update the styles
313
392
  value.delete(INHERIT)
@@ -329,13 +408,24 @@ private
329
408
  def get_theme(theme)
330
409
  theme_name = helpers.to_str(theme || 'archetype')
331
410
  @@styleguide_themes ||= {}
332
- theme = @@styleguide_themes[theme_name] ||= {}
411
+ themes = @@styleguide_themes[theme_name] ||= {}
412
+ cleanup_old_themes!(themes, options[:css_filename]) if rand < 0.333 # cleanup 1/3 of the time.
413
+ theme = themes[options[:css_filename]] ||= {}
333
414
  theme[:name] ||= theme_name
334
415
  theme[:components] ||= {}
335
416
  theme[:extensions] ||= []
336
417
  return theme
337
418
  end
338
419
 
420
+ def cleanup_old_themes!(themes, css_filename)
421
+ themes.keys.each do |key|
422
+ if key != css_filename
423
+ themes.delete(key)
424
+ end
425
+ end
426
+ nil
427
+ end
428
+
339
429
  #
340
430
  # driver method for converting a sentence into a list of styles
341
431
  #
@@ -348,9 +438,8 @@ private
348
438
  #
349
439
  def get_styles(description, theme = nil, state = 'false')
350
440
  state = helpers.to_str(state)
351
- description = description.to_a
352
- styles = {}
353
- description.each do |sentence|
441
+ styles = Archetype::Hash.new
442
+ description.to_a.each do |sentence|
354
443
  # get the grammar from the sentence
355
444
  id, modifiers, token = grammar(sentence, theme, state)
356
445
  if id
@@ -18,10 +18,11 @@ module Archetype::SassExtensions::UI
18
18
  # - {String} the unique string
19
19
  #
20
20
  def unique(prefix = '')
21
- prefix = helpers.to_str(prefix).gsub(/\A"|"\Z/, '')
21
+ prefix = helpers.to_str(prefix, ' ', :quotes)
22
22
  prefix = '.' if prefix == 'class'
23
23
  prefix = '#' if prefix == 'id'
24
- return Sass::Script::String.new("#{prefix}archetype-uid-#{uid}")
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}")
25
26
  end
26
27
 
27
28
  #
@@ -8,7 +8,7 @@ require 'sass/version'
8
8
  #
9
9
  module Archetype::SassExtensions::Version
10
10
  # :stopdoc:
11
- COMPARATOR_PATTERN = /([neglt]+|[><=!]+)/
11
+ COMPARATOR_PATTERN = /(\s[neqglt]+\s|[><=!]+)/
12
12
  VERSION_PATTERN = /\d+(\.\d+)*(\.[x|\*])?/
13
13
  # :startdoc:
14
14
 
@@ -21,10 +21,15 @@ module Archetype::SassExtensions::Version
21
21
  # - {String|Boolean} if no test or test is just a lookup of a framework, it returns the version of that framework, otherwise it returns the result of the test
22
22
  #
23
23
  def archetype_version(test = nil)
24
- test = test.nil? ? 'archetype' : helpers.to_str(test).gsub(/\A"|"\Z/, '').downcase
25
- lib = Archetype::VERSION
26
- lib = Compass::VERSION if test.include?('compass')
27
- lib = Sass::VERSION if test.include?('sass')
24
+ test = test.nil? ? 'archetype' : helpers.to_str(test, ' ', :quotes).downcase
25
+ lib = ''
26
+ if test.include?('compass')
27
+ lib = Compass::VERSION
28
+ elsif test.include?('sass')
29
+ lib = Sass::VERSION
30
+ else
31
+ lib = Archetype::VERSION
32
+ end
28
33
  # strip off any non-official versioning (e.g. pre/alpha/rc)
29
34
  lib = lib.match(VERSION_PATTERN)[0]
30
35
  result = compare_version(lib, test.match(VERSION_PATTERN), test.match(COMPARATOR_PATTERN))
@@ -55,7 +60,7 @@ private
55
60
  # check for wild cards
56
61
  wild = version.index('x')
57
62
  # check the comparison
58
- comparator = (comparator || [])[0] || 'eq'
63
+ comparator = ((comparator || [])[0] || 'eq').strip
59
64
  eq = comparator =~ /(e|=)/
60
65
  lt = comparator =~ /(l|<)/
61
66
  gt = comparator =~ /(g|>)/
@@ -1,3 +1,3 @@
1
1
  %w(handle_include_loop).each do |patch|
2
2
  require "archetype/sass_extensions/monkey_patches/#{patch}"
3
- end
3
+ end
@@ -1,3 +1,3 @@
1
1
  module Archetype
2
- VERSION = '0.0.1.pre.12'
3
- end
2
+ VERSION = '0.0.1.pre.13'
3
+ end
@@ -2,6 +2,7 @@
2
2
  @import "base/normalize";
3
3
  @import "base/reset";
4
4
  @import "base/hybrid";
5
+ @import "base/h5bp";
5
6
 
6
7
  // protect against multiple resets
7
8
  $RESET_INIT: false !default;
@@ -11,8 +12,8 @@ $RESET_INIT: false !default;
11
12
  // sets the base styles for the page (e.g. reset or normalize)
12
13
  // @mixin base
13
14
  // @param $exclude {List} the list of styles to exclude @see _normalize.scss and _reset.scss
14
- // @param $method {String} reset method [reset|normalize|hybrid]
15
- // @param $force {Bool} force reset to invoke; by default base() can only be invoked once, to re-invoke must pass in $force: true
15
+ // @param $method {String} reset method [reset|normalize|h5bp|hybrid]
16
+ // @param $force {Boolean} force reset to invoke; by default base() can only be invoked once, to re-invoke must pass in $force: true
16
17
  @mixin base($exclude: $CONFIG_RESET_EXCLUDES, $method: $CONFIG_RESET_METHOD, $force: false) {
17
18
  @if not $RESET_INIT or $force {
18
19
  $RESET_INIT: true;
@@ -20,6 +21,10 @@ $RESET_INIT: false !default;
20
21
  @if $method == normalize {
21
22
  @include base-normalize($exclude: $exclude);
22
23
  }
24
+ // html5 boiler plate
25
+ @else if $method == h5bp {
26
+ @include base-h5bp($exclude: $exclude);
27
+ }
23
28
  // hyrbid reset (reset + some normalize)
24
29
  @else if $method == hybrid {
25
30
  @include base-hybrid($exclude: $exclude);
@@ -40,6 +40,7 @@ $CONTENT_PLACEHOLDER: '\0020' !default;
40
40
  $CONFIG_DISABLED_CSS: () !default; // a list of CSS3 features to always disable when using output-style()
41
41
  $CONFIG_GENERATED_TAG_PREFIX: x-archetype !default; // the prefix for the tag name to create when using ie-pseudo method
42
42
  $CONFIG_GENERATED_TAG_CSS: false !default; // styles to apply to the generated tag when using ie-pseudo method (use this as a way to reset styles on these tags)
43
+ $CONFIG_GENERATED_TAG_INLINE: true !default; // if `true` insert the styles inline on the generated tag, otherwise insert the styles in a unique css rule
43
44
 
44
45
  // z-layers
45
46
  $CONFIG_Z_INDEX_BASE: 0 !default; // the default starting layer for z-index calculations
@@ -60,7 +61,7 @@ $CONFIG_KEYFRAME_LOADERS: archetype-loader !default;
60
61
  $CONFIG_GLYPHS_NAME: FontAwesome !default; // name for the font-face
61
62
  $CONFIG_GLYPHS_VERSION: '0.0.1' !default; // the glyph library version number
62
63
  $CONFIG_GLYPHS_SVG_ID: $CONFIG_GLYPHS_NAME !default;
63
- $CONFIG_GLYPHS_BASE_PATH: 'vendor/archetype/fontawesome-webfont' !default; // generic path to all glpyh fonts (sans extensions)
64
+ $CONFIG_GLYPHS_BASE_PATH: 'vendor/archetype/fontawesome-webfont' !default; // generic path to all glyph fonts (sans extensions)
64
65
  $CONFIG_GLYPHS_EOT: '#{$CONFIG_GLYPHS_BASE_PATH}.eot' !default;
65
66
  $CONFIG_GLYPHS_FILES: font-files('#{$CONFIG_GLYPHS_BASE_PATH}.woff', '#{$CONFIG_GLYPHS_BASE_PATH}.ttf', '#{$CONFIG_GLYPHS_BASE_PATH}.svg##{$CONFIG_GLYPHS_SVG_ID}') !default;
66
67
  $CONFIG_GLYPHS_WEIGHT: normal !default; // font-weight for glyphs
@@ -380,3 +381,9 @@ $CORE_SAFE_FONTS: (
380
381
  ); // note that this declaration isn't a `default`, but rather is enforced everytime. this can be modified (via extending $CONFIG_SAFE_FONTS)
381
382
  $CONFIG_SAFE_FONTS: () !default;
382
383
  $CONFIG_SAFE_FONTS: associative-merge($CORE_SAFE_FONTS, $CONFIG_SAFE_FONTS);
384
+
385
+ $archetype-glyph-selector: false !default;
386
+ $archetype-pseudo-selector: false !default;
387
+
388
+ $CORE_GLYPH_SELECTOR_VAR: '$archetype-glyph-selector';
389
+ $CORE_GLYPH_SELECTOR_VAR: '$archetype-pseudo-selector';