archetype 0.0.1.pre.3.6ed259b → 0.0.1.pre.3.55c4182

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/CHANGELOG.md +0 -15
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/VERSION.yml +1 -1
  5. data/lib/archetype.rb +0 -4
  6. data/lib/archetype/functions/hash.rb +12 -28
  7. data/lib/archetype/functions/helpers.rb +2 -3
  8. data/lib/archetype/sass_extensions/functions/lists.rb +33 -27
  9. data/lib/archetype/sass_extensions/functions/locale.rb +16 -32
  10. data/lib/archetype/sass_extensions/functions/styleguide.rb +11 -12
  11. data/lib/archetype/sass_extensions/functions/ui.rb +1 -2
  12. data/lib/archetype/sass_extensions/functions/version.rb +2 -2
  13. data/lib/archetype/version.rb +2 -2
  14. data/stylesheets/archetype/_config.scss +5 -18
  15. data/stylesheets/archetype/_hacks.scss +18 -39
  16. data/stylesheets/archetype/_ui.scss +8 -23
  17. data/stylesheets/archetype/styleguide/components/_buttons.scss +0 -1
  18. data/stylesheets/archetype/util/_styles.scss +2 -25
  19. data/test/fixtures/stylesheets/archetype/config.rb +0 -2
  20. data/test/fixtures/stylesheets/archetype/expected/hacks/ie_pseudo.css +3 -3
  21. data/test/fixtures/stylesheets/archetype/expected/styleguide/buttons.css +0 -28
  22. data/test/fixtures/stylesheets/archetype/expected/styleguide/selective_state.css +0 -3
  23. data/test/fixtures/stylesheets/archetype/expected/ui/glyph_icon.css +5 -52
  24. data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-browser.css +0 -5
  25. data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +0 -12
  26. data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +1 -8
  27. data/test/helpers/test_case.rb +2 -2
  28. data/test/integrations/archetype_test.rb +1 -3
  29. data/test/units/sass_extensions_test.rb +25 -18
  30. metadata +21 -60
  31. checksums.yaml +0 -7
  32. data/bin/archetype +0 -3
  33. data/lib/archetype/actions/help.rb +0 -16
  34. data/lib/archetype/actions/theme.rb +0 -73
  35. data/lib/archetype/executor.rb +0 -27
  36. data/templates/_theme/_components.scss +0 -3
  37. data/templates/_theme/_config.scss +0 -1
  38. data/templates/_theme/_core.scss +0 -13
  39. data/templates/_theme/_helpers.scss +0 -1
  40. data/templates/_theme/_primitives.scss +0 -3
  41. data/templates/_theme/components/README +0 -1
  42. data/templates/_theme/primitives/README +0 -1
  43. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders-s7889ccc8c1.png +0 -0
  44. data/test/fixtures/stylesheets/archetype/expected/base.css +0 -349
  45. data/test/fixtures/stylesheets/archetype/expected/hacks/transparent_focusable.css +0 -4
  46. data/test/fixtures/stylesheets/archetype/expected/locale.css +0 -23
  47. data/test/fixtures/stylesheets/archetype/expected/styleguide/extend.css +0 -7
  48. data/test/fixtures/stylesheets/archetype/expected/utilities/custom_output_styler.css +0 -8
  49. data/test/fixtures/stylesheets/archetype/source/base.scss +0 -3
  50. data/test/fixtures/stylesheets/archetype/source/hacks/transparent_focusable.scss +0 -5
  51. data/test/fixtures/stylesheets/archetype/source/locale.scss +0 -43
  52. data/test/fixtures/stylesheets/archetype/source/styleguide/extend.scss +0 -23
  53. data/test/fixtures/stylesheets/archetype/source/utilities/custom_output_styler.scss +0 -21
data/CHANGELOG.md CHANGED
@@ -11,29 +11,14 @@
11
11
  - added `styleguide-component-exists()` method to check if a component/extension has already been registered in the theme
12
12
  - added `memoize` compiler configuration to allow enabling/disabling the internal styleguide memoizer
13
13
  - `glyph-icon()` can now take `false` as an icon name and not output anything
14
- - added `unstyled-button()` method to remove default styling from a `<button>` element
15
- - added `prefixed-tag()` method for consistency when generating tag names
16
- - added Chinese font stacks
17
- - added wildcard support to `locale()` function (e.g. `locale(en_ ja_JP _DE)`)
18
- - added `transparent-focusable()` mixin for transparent background support in older IE
19
- - added ability to customize `output-style()` with `custom-output-styler()` mixin and `has-custom-output-styler()` function (NEEDS DOCUMENTATION)
20
- - added better support for targeting IE6/7 glyphs and `ie-pseudo()` generated elements (NEEDS DOCUMENTATION)
21
- - making `unique()` generated IDs genuinely unique
22
- - adding support for a `testing` config flag
23
- - adding support for `@extend` from a styleguide component
24
14
 
25
15
  ### Resolved Issues:
26
16
 
27
17
  - quotes on strings passed to `associative()` weren't being stripped correctly
28
- - fixed some minor glyph issues
29
- - out-of-order CSS issues in Ruby 1.8.7 are fixed using `Hashery::OrderedHash`
30
- - fixed issue with `archetype-version()` incorrectly matching comparators
31
18
 
32
19
  ### Tests:
33
20
 
34
21
  - added test case for fallback CSS properties
35
- - added test case for generating loading spinner keyframe animations
36
- - updated test cases for minor changes
37
22
 
38
23
  ## 0.0.1.pre.2 (unreleased)
39
24
 
data/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  Archetype
2
- Copyright (c) 2013 LinkedIn Corp. All rights reserved.
2
+ Copyright (c) 2012 LinkedIn
3
3
  Apache Software License 2.0
4
4
 
5
5
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Archetype
2
2
 
3
- [![Build Status](https://travis-ci.org/linkedin/archetype.png)](https://travis-ci.org/linkedin/archetype) [![Gem Version](https://badge.fury.io/rb/archetype.png)](http://badge.fury.io/rb/archetype)
3
+ [![Build Status](https://travis-ci.org/eoneill/archetype.png)](https://travis-ci.org/eoneill/archetype)
4
4
 
5
5
  Archetype is a UI pattern and component library for quickly iterating on and maintaining scalable web interfaces.
6
6
 
data/VERSION.yml CHANGED
@@ -3,4 +3,4 @@
3
3
  :minor: 0
4
4
  :build: 1
5
5
  :state: pre
6
- :iteration: 3
6
+ :iteration: 3
data/lib/archetype.rb CHANGED
@@ -33,10 +33,6 @@ module Archetype
33
33
  Compass::Configuration.add_configuration_property(:memoize, "should the memoizer be used to improve compilation speed") do
34
34
  not (Compass.configuration.environment || :development).to_s.include?('dev')
35
35
  end
36
- # testing (for running unit tests)
37
- Compass::Configuration.add_configuration_property(:testing, "is this a testing environment") do
38
- ENV['CI']
39
- end
40
36
  end
41
37
  end
42
38
 
@@ -1,8 +1,6 @@
1
1
  # :stopdoc:
2
2
  # This module extends the native Ruby Hash class to support deep merging
3
3
  # and comparing the difference between hashes.
4
- # This functionality mimics that found in ActiveSupport
5
- # @see https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/hash/deep_merge.rb
6
4
  #
7
5
  module Archetype::Functions::Hash
8
6
  #
@@ -13,10 +11,13 @@ module Archetype::Functions::Hash
13
11
  # *Returns*:
14
12
  # - {Hash} a new hash containing the contents of other_hash and the contents of hsh, deep merged
15
13
  #
16
- def rmerge(other_hash, &block)
17
- dup.rmerge!(other_hash, &block)
14
+ def rmerge(other_hash)
15
+ new_hash = {}
16
+ merge(other_hash) do |key, oldval, newval|
17
+ new_hash[key] = oldval.class == self.class ? oldval.rmerge(newval) : newval
18
+ end
18
19
  end
19
-
20
+
20
21
  #
21
22
  # adds the contents of other_hash to hsh, deep merged
22
23
  #
@@ -25,16 +26,10 @@ module Archetype::Functions::Hash
25
26
  # *Returns*:
26
27
  # - {Hash} the original hash with the addition of the contents of other_hash
27
28
  #
28
- def rmerge!(other_hash, &block)
29
- other_hash.each_pair do |k,v|
30
- tv = self[k]
31
- if tv.is_a?(Hash) && v.is_a?(Hash)
32
- self[k] = tv.rmerge(v, &block)
33
- else
34
- self[k] = block && tv ? block.call(k, tv, v) : v
35
- end
29
+ def rmerge!(other_hash)
30
+ merge!(other_hash) do |key, oldval, newval|
31
+ oldval.class == self.class ? oldval.rmerge!(newval) : newval
36
32
  end
37
- return self
38
33
  end
39
34
 
40
35
  #
@@ -46,7 +41,7 @@ module Archetype::Functions::Hash
46
41
  # - {Hash} a representation of the difference between the two hashes
47
42
  #
48
43
  def diff(other_hash)
49
- (self.keys + other_hash.keys).uniq.inject(Archetype::Hash.new) do |tmp, key|
44
+ (self.keys + other_hash.keys).uniq.inject({}) do |tmp, key|
50
45
  # special comparison for gradients
51
46
  are_gradients = self[key].is_a?(Compass::SassExtensions::Functions::GradientSupport::LinearGradient) and other_hash[key].is_a?(Compass::SassExtensions::Functions::GradientSupport::LinearGradient)
52
47
  eq_gradients = are_gradients ? (self[key].to_s == other_hash[key].to_s) : true
@@ -133,17 +128,6 @@ private
133
128
  end
134
129
  end
135
130
 
136
- # this shims the Hash functionality to ensure we have an ordered hash guarantee
137
- module Archetype
138
- if RUBY_VERSION < '1.9'
139
- require 'hashery/ordered_hash'
140
- class Hash < Hashery::OrderedHash
141
- include Archetype::Functions::Hash
142
- end
143
- else
144
- class Hash < ::Hash
145
- include Archetype::Functions::Hash
146
- end
147
- end
131
+ class Hash
132
+ include Archetype::Functions::Hash
148
133
  end
149
-
@@ -24,8 +24,7 @@ private
24
24
  def self.hash_to_list(hsh, depth = 0, separator = :comma)
25
25
  if hsh.is_a? Hash
26
26
  list = []
27
- hsh.each do |key, item|
28
- item = [key, item]
27
+ hsh.each do |item|
29
28
  # if its a hash, convert it to a List
30
29
  if item.is_a? Hash or item.is_a? Array
31
30
  tmp = []
@@ -55,7 +54,7 @@ private
55
54
  #
56
55
  def self.list_to_hash(list, depth = 0, nest = [], additives = [])
57
56
  list = list.to_a
58
- hsh = Archetype::Hash.new
57
+ hsh = {}
59
58
  list.each do |item|
60
59
  item = item.to_a
61
60
  # convert the key to a string and strip off quotes
@@ -6,7 +6,7 @@ require 'archetype/functions/helpers'
6
6
  module Archetype::SassExtensions::Lists
7
7
  #
8
8
  # replace an index in a list
9
- #
9
+ #
10
10
  # *Parameters*:
11
11
  # - <tt>$list</tt> {List} the list to replace from
12
12
  # - <tt>$value</tt> {\*} the value to replace (if nil, it's a removal)
@@ -71,6 +71,38 @@ module Archetype::SassExtensions::Lists
71
71
  Sass::Script::Functions.declare :list_insert, [:list, :idx, :value]
72
72
  Sass::Script::Functions.declare :list_insert, [:list, :idx, :value, :separator]
73
73
 
74
+ #
75
+ # sort a list
76
+ #
77
+ # *Parameters*:
78
+ # - <tt>$list</tt> {List} the list to sort
79
+ # - <tt>$reverse</tt> {Boolean} sort the list in reverse order
80
+ # *Returns*:
81
+ # - {List} the sorted list
82
+ #
83
+ # TODO - this is failing, fix this
84
+ #def list_sort(list, reverse = false)
85
+ # separator = list.separator if list.is_a?(Sass::Script::List)
86
+ # list = list.to_a.sort
87
+ # list = list.reverse if (reverse == Sass::Script::Bool.new(true))
88
+ # return Sass::Script::List.new(list, separator)
89
+ #end
90
+
91
+ #
92
+ # reverse order a list
93
+ #
94
+ # *Parameters*:
95
+ # - <tt>$list</tt> {List} the list to reverse
96
+ # *Returns*:
97
+ # - {List} the reversed list
98
+ #
99
+ # TODO - this is failing, fix this
100
+ #def list_reverse(list)
101
+ # separator = list.separator if list.is_a?(Sass::Script::List)
102
+ # list = list.to_a.reverse
103
+ # return Sass::Script::List.new(list, separator)
104
+ #end
105
+
74
106
  #
75
107
  # add values(s) to a list
76
108
  #
@@ -213,32 +245,6 @@ module Archetype::SassExtensions::Lists
213
245
  end
214
246
  Sass::Script::Functions.declare :associative_merge, [:list, :extender]
215
247
 
216
- #
217
- # given a string of styles, convert it into a key-value pair list
218
- #
219
- # *Parameters*:
220
- # - <tt>$string</tt> {String} the string to convert
221
- # *Returns*:
222
- # - <tt>$list</tt> {List} the converted list of styles
223
- #
224
- def _style_string_to_list(string = '')
225
- # convert to string and strip all comments
226
- string = helpers.to_str(string, ' ').gsub(/\/\*[^\*\/]*\*\//, '')
227
- # then split it on each rule
228
- tmp = string.split(';')
229
- styles = []
230
- # and for each rule break it into it's key-value pairs
231
- tmp.each do |rule|
232
- kvp = []
233
- rule.split(':').each do |str|
234
- kvp.push Sass::Script::String.new(str)
235
- end
236
- styles.push Sass::Script::List.new(kvp, :comma)
237
- end
238
- # the recompose the list
239
- return Sass::Script::List.new(styles, :comma)
240
- end
241
-
242
248
  private
243
249
  def helpers
244
250
  @helpers ||= Archetype::Functions::Helpers
@@ -3,36 +3,17 @@
3
3
  #
4
4
  module Archetype::SassExtensions::Locale
5
5
  #
6
- # get the current locale specified in config or test a list of locales against the current locale
6
+ # get the current locale specified in config
7
7
  #
8
- # *Parameters*:
9
- # - <tt>$locales</tt> {List} the list of locales to test
10
8
  # *Returns*:
11
- # - {String|Boolean} the current locale or whether or not the current locale is in the test set
9
+ # - {String} the current locale
12
10
  #
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))
11
+ def locale
12
+ return Sass::Script::String.new(Compass.configuration.locale || 'en_US')
32
13
  end
33
14
 
34
15
  #
35
- # test a list of locales against the current locale (this is now just an alias for locales(), for back-compat)
16
+ # test a list of locales against the current locale (supports an alias map)
36
17
  #
37
18
  # *Parameters*:
38
19
  # - <tt>$locales</tt> {List} the list of locales to test
@@ -40,9 +21,16 @@ module Archetype::SassExtensions::Locale
40
21
  # - {Boolean} is the current locale in the list or not
41
22
  #
42
23
  def lang(locales)
43
- return locale(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))
44
32
  end
45
-
33
+
46
34
  #
47
35
  # get the current reading direction
48
36
  #
@@ -55,9 +43,6 @@ module Archetype::SassExtensions::Locale
55
43
  end
56
44
 
57
45
  private
58
-
59
- LOCALE_PATTERN = /([a-z]{2})[-_]?([a-z]{2}?)/i
60
-
61
46
  #
62
47
  # provides an alias mapping for locale names
63
48
  #
@@ -67,9 +52,8 @@ private
67
52
  # TODO - make this easily extensible
68
53
  def locale_aliases
69
54
  if @locale_aliases.nil?
70
- a = {
71
- 'CJK' => ['ja_JP', 'ko_KR', 'zh_TW', 'zh_CN']
72
- }
55
+ a = {}
56
+ a['CJK'] = ['ja_JP', 'ko_KR', 'zh_TW', 'zh_CN']
73
57
  @locale_aliases = a
74
58
  end
75
59
  return @locale_aliases
@@ -17,7 +17,7 @@ module Archetype::SassExtensions::Styleguide
17
17
  SPECIAL = %w(states selectors)
18
18
  # these are unique CSS keys that can be exploited to provide fallback functionality by providing a second value
19
19
  # 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 extend)
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
21
  ADDITIVES = FALLBACKS + [DROP, INHERIT, STYLEGUIDE]
22
22
  @@archetype_styleguide_mutex = Mutex.new
23
23
  # :startdoc:
@@ -76,7 +76,7 @@ module Archetype::SassExtensions::Styleguide
76
76
  extensions = theme[:extensions]
77
77
  return Sass::Script::Bool.new(false) if component_exists(id, theme, extension, force)
78
78
  extensions.push(extension)
79
- components[id] = (components[id] ||= Archetype::Hash.new).rmerge(helpers.list_to_hash(data, 1, SPECIAL, ADDITIVES))
79
+ components[id] = (components[id] ||= {}).rmerge(helpers.list_to_hash(data, 1, SPECIAL, ADDITIVES))
80
80
  return Sass::Script::Bool.new(true)
81
81
  end
82
82
  end
@@ -223,17 +223,16 @@ private
223
223
  #
224
224
  def extract_styles(id, modifiers, strict = false, theme = nil, context = nil)
225
225
  theme = get_theme(theme)
226
- context ||= theme[:components][id] || Archetype::Hash.new
226
+ context ||= theme[:components][id] || {}
227
227
  modifiers = helpers.to_str(modifiers)
228
- return Archetype::Hash.new if context.nil? or context.empty?
228
+ return {} if context.nil? or context.empty?
229
229
  # push on the defaults first
230
- out = (strict ? resolve_dependents(id, context[modifiers], theme[:name], context) : context[DEFAULT]) || Archetype::Hash.new
230
+ out = (strict ? resolve_dependents(id, context[modifiers], theme[:name], context) : context[DEFAULT]) || {}
231
231
  out = out.clone
232
232
  # if it's not strict, find anything that matched
233
233
  if not strict
234
234
  modifiers = modifiers.split
235
- context.each do |key, definition|
236
- definition = [key, definition]
235
+ context.each do |definition|
237
236
  modifier = definition[0]
238
237
  if modifier != DEFAULT
239
238
  match = true
@@ -255,8 +254,8 @@ private
255
254
  SPECIAL.each do |special_key|
256
255
  if out.is_a? Hash
257
256
  special = out[special_key]
258
- tmp = Archetype::Hash.new
259
- (special || Archetype::Hash.new).each { |key, value| tmp[key] = extract_styles(key, key, true, theme[:name], special) }
257
+ tmp = {}
258
+ (special || {}).each { |key, value| tmp[key] = extract_styles(key, key, true, theme[:name], special) }
260
259
  out[special_key] = tmp if not tmp.empty?
261
260
  end
262
261
  end
@@ -290,7 +289,7 @@ private
290
289
  # check for dropped styles
291
290
  drop = value[DROP]
292
291
  if not drop.nil?
293
- tmp = Archetype::Hash.new
292
+ tmp = {}
294
293
  if %w(all true).include?(helpers.to_str(drop)) and not keys.nil? and not keys.empty?
295
294
  keys.each do |key|
296
295
  tmp[key] = 'nil'
@@ -308,7 +307,7 @@ private
308
307
  inherit = value[INHERIT]
309
308
  if inherit and not inherit.empty?
310
309
  # create a temporary object and extract the nested styles
311
- tmp = Archetype::Hash.new
310
+ tmp = {}
312
311
  inherit.each { |related| tmp = tmp.rmerge(extract_styles(id, related, true, theme, context)) }
313
312
  # remove the inheritance key and update the styles
314
313
  value.delete(INHERIT)
@@ -350,7 +349,7 @@ private
350
349
  def get_styles(description, theme = nil, state = 'false')
351
350
  state = helpers.to_str(state)
352
351
  description = description.to_a
353
- styles = Archetype::Hash.new
352
+ styles = {}
354
353
  description.each do |sentence|
355
354
  # get the grammar from the sentence
356
355
  id, modifiers, token = grammar(sentence, theme, state)
@@ -21,8 +21,7 @@ module Archetype::SassExtensions::UI
21
21
  prefix = helpers.to_str(prefix, ' ', :quotes)
22
22
  prefix = '.' if prefix == 'class'
23
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}")
24
+ return Sass::Script::String.new("#{prefix}archetype-uid-#{uid}")
26
25
  end
27
26
 
28
27
  #
@@ -8,7 +8,7 @@ require 'sass/version'
8
8
  #
9
9
  module Archetype::SassExtensions::Version
10
10
  # :stopdoc:
11
- COMPARATOR_PATTERN = /(\s[neqglt]+\s|[><=!]+)/
11
+ COMPARATOR_PATTERN = /([neglt]+|[><=!]+)/
12
12
  VERSION_PATTERN = /\d+(\.\d+)*(\.[x|\*])?/
13
13
  # :startdoc:
14
14
 
@@ -60,7 +60,7 @@ private
60
60
  # check for wild cards
61
61
  wild = version.index('x')
62
62
  # check the comparison
63
- comparator = ((comparator || [])[0] || 'eq').strip
63
+ comparator = (comparator || [])[0] || 'eq'
64
64
  eq = comparator =~ /(e|=)/
65
65
  lt = comparator =~ /(l|<)/
66
66
  gt = comparator =~ /(g|>)/
@@ -10,7 +10,7 @@ module Archetype
10
10
  # Method borrowed from Compass. All credit goes to Chris Eppstein and other contributors
11
11
  # https://github.com/chriseppstein/compass/blob/stable/lib/compass/version.rb
12
12
  # \(This method swiped from Haml and then modified, some credit goes to Nathan Weizenbaum\)
13
- #
13
+ #
14
14
  # *Returns*:
15
15
  # - {String} the version of Archetype
16
16
  #
@@ -30,7 +30,7 @@ module Archetype
30
30
  def read_version
31
31
  require 'yaml'
32
32
  begin
33
- @version = YAML.load(File.read(scope('VERSION.yml')))
33
+ @version = YAML::load(File.read(scope('VERSION.yml')))
34
34
  @version[:teeny] = @version[:patch]
35
35
  @version[:string] = "#{@version[:major]}.#{@version[:minor]}"
36
36
  @version[:string] << ".#{@version[:patch]}" if @version[:patch]