dashy 0.0.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 +7 -0
- data/.gitignore +17 -0
- data/.npmignore +12 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +9 -0
- data/app/assets/stylesheets/_dashy.scss +14 -0
- data/app/assets/stylesheets/dashy/_color.scss +5 -0
- data/app/assets/stylesheets/dashy/_corner.scss +15 -0
- data/app/assets/stylesheets/dashy/_default.scss +14 -0
- data/app/assets/stylesheets/dashy/_define.scss +157 -0
- data/app/assets/stylesheets/dashy/_direction.scss +36 -0
- data/app/assets/stylesheets/dashy/_font-family.scss +36 -0
- data/app/assets/stylesheets/dashy/_is.scss +81 -0
- data/app/assets/stylesheets/dashy/_line-height.scss +10 -0
- data/app/assets/stylesheets/dashy/_list.scss +161 -0
- data/app/assets/stylesheets/dashy/_number.scss +79 -0
- data/app/assets/stylesheets/dashy/_opposite.scss +36 -0
- data/app/assets/stylesheets/dashy/_select.scss +124 -0
- data/app/assets/stylesheets/dashy/_set.scss +79 -0
- data/app/assets/stylesheets/dashy/_side.scss +23 -0
- data/bin/dashy +8 -0
- data/dashy.gemspec +30 -0
- data/dashy.json +34 -0
- data/lib/dashy/engine.rb +7 -0
- data/lib/dashy/generator.rb +82 -0
- data/lib/dashy/version.rb +5 -0
- data/lib/dashy.rb +30 -0
- data/lib/sass/script/functions.rb +275 -0
- data/lib/tasks/install.rake +22 -0
- data/package.json +28 -0
- data/sache.json +5 -0
- metadata +134 -0
@@ -0,0 +1,275 @@
|
|
1
|
+
require 'sass/script/functions'
|
2
|
+
|
3
|
+
Sass::Script::Value = Sass::Script unless Sass::Script.const_defined? :Value, false
|
4
|
+
|
5
|
+
class Sass::Script::Value::String
|
6
|
+
|
7
|
+
prepend Module.new {
|
8
|
+
|
9
|
+
def to_s opt = {}
|
10
|
+
return @value# if :selector == @type
|
11
|
+
end
|
12
|
+
|
13
|
+
}
|
14
|
+
|
15
|
+
end
|
16
|
+
module Sass::Script::Functions
|
17
|
+
|
18
|
+
def is_wildcard value
|
19
|
+
'*' == value.to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def select *selectors
|
23
|
+
this = select_identifier ""
|
24
|
+
select_as this, *selectors
|
25
|
+
end
|
26
|
+
declare :select, [], :var_args => true
|
27
|
+
|
28
|
+
def select_as separator, *selectors
|
29
|
+
unquote = method :unquote
|
30
|
+
separator = separator.value
|
31
|
+
selectors = selectors.first if 1 == selectors.length
|
32
|
+
selectors = selectors.to_a.map { |selector| selector.to_a.map &unquote }
|
33
|
+
selectors = selectors.shift.product *selectors
|
34
|
+
Sass::Script::Value::List.new selectors.map! { |selector|
|
35
|
+
# selector = selector.reject &method(:is_wildcard) unless 1 == selector.length && is_wildcard(selector.first)
|
36
|
+
selector = selector.join separator
|
37
|
+
selector.gsub! /(?<=[\w\-\]])\*/, '' # Remove any wildcards after any words or attributes.
|
38
|
+
selector.gsub! /\*(?=[\w\.\#\[])/, '' # Remove any wildcards before any tags, classes, ids or attributes.
|
39
|
+
select_identifier selector
|
40
|
+
}, :comma
|
41
|
+
end
|
42
|
+
declare :select_with, [:string], :var_args => true
|
43
|
+
|
44
|
+
def select_as_descendants *selectors
|
45
|
+
descendants = select_identifier " "
|
46
|
+
select_as descendants, *selectors
|
47
|
+
end
|
48
|
+
declare :select_as_descendants, [], :var_args => true
|
49
|
+
|
50
|
+
def select_as_children *selectors
|
51
|
+
children = select_identifier ">"
|
52
|
+
select_as children, *selectors
|
53
|
+
end
|
54
|
+
declare :select_as_children, [], :var_args => true
|
55
|
+
|
56
|
+
def select_as_adjacent_siblings *selectors
|
57
|
+
adjacent_siblings = select_identifier "+"
|
58
|
+
select_as adjacent_siblings, *selectors
|
59
|
+
end
|
60
|
+
declare :select_as_adjacent_siblings, [], :var_args => true
|
61
|
+
|
62
|
+
def select_as_general_siblings *selectors
|
63
|
+
general_siblings = select_identifier "~"
|
64
|
+
select_as general_siblings, *selectors
|
65
|
+
end
|
66
|
+
declare :select_as_general_siblings, [], :var_args => true
|
67
|
+
|
68
|
+
def select_descendants selector = select_any
|
69
|
+
descendants = select_identifier " "
|
70
|
+
select descendants, selector
|
71
|
+
end
|
72
|
+
declare :select_descendants, [:string], :var_args => true
|
73
|
+
|
74
|
+
def select_children selector = select_any
|
75
|
+
children = select_identifier ">"
|
76
|
+
select children, selector
|
77
|
+
end
|
78
|
+
declare :select_children, [:string], :var_args => true
|
79
|
+
|
80
|
+
def select_adjacent_siblings selector = select_any
|
81
|
+
adjacent_siblings = select_identifier "+"
|
82
|
+
select adjacent_siblings, selector
|
83
|
+
end
|
84
|
+
declare :select_adjacent_siblings, [:string], :var_args => true
|
85
|
+
|
86
|
+
def select_general_siblings selector = select_any
|
87
|
+
general_siblings = select_identifier "~"
|
88
|
+
select general_siblings, selector
|
89
|
+
end
|
90
|
+
declare :select_general_siblings, [:string], :var_args => true
|
91
|
+
|
92
|
+
def select_either *selectors
|
93
|
+
selectors = selectors.first if 1 == selectors.length
|
94
|
+
selectors = selectors.map &:to_a
|
95
|
+
Sass::Script::Value::List.new selectors.flatten, :comma
|
96
|
+
end
|
97
|
+
declare :select_either, [], :var_args => true
|
98
|
+
|
99
|
+
def select_attribute attribute, *selectors
|
100
|
+
selectors = selectors.first if 1 == selectors.length
|
101
|
+
selectors = selectors.to_a.map { |selector| select_string "[#{ attribute }=\"#{ select_escaped! selector }\"]" }
|
102
|
+
Sass::Script::Value::List.new selectors, :comma
|
103
|
+
end
|
104
|
+
|
105
|
+
def select_spaced_attribute
|
106
|
+
raise 'bwoon'
|
107
|
+
end
|
108
|
+
|
109
|
+
def select_attribute_prefix attribute, *selectors
|
110
|
+
selectors = selectors.first if 1 == selectors.length
|
111
|
+
selectors = selectors.to_a.map { |selector|
|
112
|
+
[
|
113
|
+
(select_string "[#{ attribute }^=\"#{ select_escaped! selector }\"]"),
|
114
|
+
(select_string "[#{ attribute }*=\" #{ select_escaped! selector }\"]")
|
115
|
+
]
|
116
|
+
}
|
117
|
+
Sass::Script::Value::List.new selectors.flatten, :comma
|
118
|
+
end
|
119
|
+
|
120
|
+
def select_attribute_suffix attribute, *selectors
|
121
|
+
selectors = selectors.first if 1 == selectors.length
|
122
|
+
selectors = selectors.to_a.map { |selector|
|
123
|
+
[
|
124
|
+
(select_string "[#{ attribute }$=\"#{ select_escaped! selector }\"]"),
|
125
|
+
(select_string "[#{ attribute }*=\"#{ select_escaped! selector } \"]")
|
126
|
+
]
|
127
|
+
}
|
128
|
+
Sass::Script::Value::List.new selectors.flatten, :comma
|
129
|
+
end
|
130
|
+
|
131
|
+
def select_class_prefix *selectors
|
132
|
+
attribute = select_identifier "class"
|
133
|
+
select_attribute_prefix attribute, *selectors
|
134
|
+
end
|
135
|
+
|
136
|
+
def select_class_suffix *selectors
|
137
|
+
attribute = select_identifier "class"
|
138
|
+
select_attribute_suffix attribute, *selectors
|
139
|
+
end
|
140
|
+
|
141
|
+
def select_class selector
|
142
|
+
selectors = selector.to_a.map &:to_a
|
143
|
+
selectors = selectors.shift.product *selectors
|
144
|
+
selectors.map! { |selector| select_identifier "." + select_escaped!(selector.to_a.join "-") }
|
145
|
+
Sass::Script::Value::List.new selectors, :comma
|
146
|
+
end
|
147
|
+
|
148
|
+
def select_classes *selectors
|
149
|
+
select_either *(selectors.map! &(method :select_class))
|
150
|
+
end
|
151
|
+
|
152
|
+
def select_pseudoclass selector
|
153
|
+
select_identifier ":" + (selector.to_a.join "-")
|
154
|
+
end
|
155
|
+
|
156
|
+
def select_pseudoclasses *selectors
|
157
|
+
select_either *(selectors.map! &(method :select_pseudoclass))
|
158
|
+
end
|
159
|
+
|
160
|
+
def select_quasiclass selector
|
161
|
+
select_either select_class(selector), select_pseudoclass(selector)
|
162
|
+
end
|
163
|
+
|
164
|
+
def select_quasiclasses *selectors
|
165
|
+
select_either *(selectors.map! &(method :select_quasiclass))
|
166
|
+
end
|
167
|
+
|
168
|
+
def select_adjacent_odd_siblings limit, *selectors
|
169
|
+
selectors.push select_identifier '*' if selectors.empty?
|
170
|
+
selectors = selectors.first if 1 == selectors.length
|
171
|
+
selectors = (0 .. limit.value).select { |i| 1 == i % 2 }.map { |i| select select_identifier(" + * " * i + " + "), *selectors }
|
172
|
+
select_either *selectors
|
173
|
+
end
|
174
|
+
|
175
|
+
def select_odd_siblings limit, *selectors
|
176
|
+
select_either select_first_sibling, select(select_first_sibling, select_adjacent_odd_siblings(limit, *selectors))
|
177
|
+
end
|
178
|
+
|
179
|
+
def select_odd_children limit, *selectors
|
180
|
+
select_children select_odd_siblings(limit, *selectors)
|
181
|
+
end
|
182
|
+
|
183
|
+
def select_adjacent_even_siblings limit, *selectors
|
184
|
+
selectors.push select_identifier '*' if selectors.empty?
|
185
|
+
selectors = selectors.first if 1 == selectors.length
|
186
|
+
selectors = (0 .. limit.value).select { |i| 0 == i % 2 }.map { |i| select select_identifier(" + * " * i + " + "), *selectors }
|
187
|
+
select_either *selectors
|
188
|
+
end
|
189
|
+
|
190
|
+
def select_even_siblings limit, *selectors
|
191
|
+
select select_first_sibling, select_adjacent_even_siblings(limit, *selectors)
|
192
|
+
end
|
193
|
+
|
194
|
+
def select_even_children limit, *selectors
|
195
|
+
select_children select_even_siblings(limit, *selectors)
|
196
|
+
end
|
197
|
+
|
198
|
+
def select_first_child
|
199
|
+
select_children select_first_sibling
|
200
|
+
end
|
201
|
+
|
202
|
+
def select_first_sibling
|
203
|
+
select_identifier ":first_child"
|
204
|
+
end
|
205
|
+
|
206
|
+
def select_any
|
207
|
+
select_identifier "*"
|
208
|
+
end
|
209
|
+
|
210
|
+
def select_string selector
|
211
|
+
Sass::Script::Value::String.new selector.to_s, :string
|
212
|
+
end
|
213
|
+
|
214
|
+
def select_identifier selector
|
215
|
+
Sass::Script::Value::String.new selector.to_s, :identifier
|
216
|
+
end
|
217
|
+
|
218
|
+
def select_escaped! thing
|
219
|
+
thing.tap { |t|
|
220
|
+
case thing
|
221
|
+
|
222
|
+
when String
|
223
|
+
t.gsub! /(?<!\\)(?=[\=\$\%\/\?\!\.])/, "\\"
|
224
|
+
|
225
|
+
when Sass::Script::Value::String
|
226
|
+
select_escaped! t.value
|
227
|
+
|
228
|
+
end
|
229
|
+
}
|
230
|
+
end
|
231
|
+
|
232
|
+
def select_escaped_string selector
|
233
|
+
select_escaped! select_string selector
|
234
|
+
end
|
235
|
+
|
236
|
+
def select_escaped_identifier selector
|
237
|
+
select_escaped! select_identifier selector
|
238
|
+
end
|
239
|
+
|
240
|
+
def select_arguments namespace, *name_value_pairs
|
241
|
+
inputs = name_value_pairs.map { |name_value_pair|
|
242
|
+
name, value = name_value_pair.to_a
|
243
|
+
select select_identifier('input:checked'), select_attribute('form', namespace),
|
244
|
+
select_attribute('name', name),
|
245
|
+
select_attribute('value', value)
|
246
|
+
}
|
247
|
+
select_as_general_siblings *inputs
|
248
|
+
|
249
|
+
# $form: select-class($form);
|
250
|
+
|
251
|
+
# $left: select($input select-general-siblings($form));
|
252
|
+
# $right: select($form select-class($name $value));
|
253
|
+
|
254
|
+
# @return select-either($left, $right);
|
255
|
+
end
|
256
|
+
|
257
|
+
def list_of *lists
|
258
|
+
Sass::Script::Value::List.new lists.map { |list|
|
259
|
+
list = list.to_a
|
260
|
+
number = list.first
|
261
|
+
first, second, operator, *rest, last = list.map &:value
|
262
|
+
this = first
|
263
|
+
delta = second - first
|
264
|
+
case operator
|
265
|
+
when "_" then [].tap { |list| while this <= last; list << this; this += delta; end }
|
266
|
+
when "__" then [].tap { |list| while this < last; list << this; this += delta; end }
|
267
|
+
else list
|
268
|
+
end.map { |value| Sass::Script::Value::Number.new value, number.numerator_units, number.denominator_units }
|
269
|
+
}.flatten, :comma
|
270
|
+
end
|
271
|
+
declare :select_children, [:list], :var_args => true
|
272
|
+
|
273
|
+
end
|
274
|
+
|
275
|
+
# Gem structure adapted from thoughtbot/bourbon...
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Needed for pre-3.1.
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "find"
|
5
|
+
|
6
|
+
namespace :dashy do
|
7
|
+
desc "Move files to the Rails assets directory."
|
8
|
+
task :install, [:sass_path] do |t, args|
|
9
|
+
args.with_defaults(:sass_path => 'public/stylesheets/sass')
|
10
|
+
source_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
11
|
+
FileUtils.mkdir_p("#{Rails.root}/#{args.sass_path}/dashy")
|
12
|
+
FileUtils.cp_r("#{source_root}/app/assets/stylesheets/.", "#{Rails.root}/#{args.sass_path}/dashy", { :preserve => true })
|
13
|
+
Find.find("#{Rails.root}/#{args.sass_path}/dashy") do |path|
|
14
|
+
if path.end_with?(".css.scss")
|
15
|
+
path_without_css_extension = path.gsub(/\.css\.scss$/, ".scss")
|
16
|
+
FileUtils.mv(path, path_without_css_extension)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Gem structure adapted from thoughtbot/bourbon...
|
data/package.json
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"name": "dashy",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "A simple and lightweight mixin library for Sass.",
|
5
|
+
"keywords": [
|
6
|
+
"css",
|
7
|
+
"mixins",
|
8
|
+
"sass",
|
9
|
+
"scss"
|
10
|
+
],
|
11
|
+
"homepage": "http://github.com/tosyx/dashy",
|
12
|
+
"bugs": {
|
13
|
+
"url": "https://github.com/tosyx/dashy/issues"
|
14
|
+
},
|
15
|
+
"license": "MIT",
|
16
|
+
"author": {
|
17
|
+
"name": "tosyx",
|
18
|
+
"url": "http://tosyx.com"
|
19
|
+
},
|
20
|
+
"main": "app/assets/stylesheets/_dashy.scss",
|
21
|
+
"repository": {
|
22
|
+
"type": "git",
|
23
|
+
"url": "https://github.com/tosyx/dashy.git"
|
24
|
+
},
|
25
|
+
"scripts": {
|
26
|
+
"test": "echo \"No test specified\""
|
27
|
+
}
|
28
|
+
}
|
data/sache.json
ADDED
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dashy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Goldsmith
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sass
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aruba
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: |
|
70
|
+
Dashy provides...
|
71
|
+
email:
|
72
|
+
- alex.tosyx@gmail.com
|
73
|
+
executables:
|
74
|
+
- dashy
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- ".gitignore"
|
79
|
+
- ".npmignore"
|
80
|
+
- Gemfile
|
81
|
+
- LICENSE.txt
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- app/assets/stylesheets/_dashy.scss
|
85
|
+
- app/assets/stylesheets/dashy/_color.scss
|
86
|
+
- app/assets/stylesheets/dashy/_corner.scss
|
87
|
+
- app/assets/stylesheets/dashy/_default.scss
|
88
|
+
- app/assets/stylesheets/dashy/_define.scss
|
89
|
+
- app/assets/stylesheets/dashy/_direction.scss
|
90
|
+
- app/assets/stylesheets/dashy/_font-family.scss
|
91
|
+
- app/assets/stylesheets/dashy/_is.scss
|
92
|
+
- app/assets/stylesheets/dashy/_line-height.scss
|
93
|
+
- app/assets/stylesheets/dashy/_list.scss
|
94
|
+
- app/assets/stylesheets/dashy/_number.scss
|
95
|
+
- app/assets/stylesheets/dashy/_opposite.scss
|
96
|
+
- app/assets/stylesheets/dashy/_select.scss
|
97
|
+
- app/assets/stylesheets/dashy/_set.scss
|
98
|
+
- app/assets/stylesheets/dashy/_side.scss
|
99
|
+
- bin/dashy
|
100
|
+
- dashy.gemspec
|
101
|
+
- dashy.json
|
102
|
+
- lib/dashy.rb
|
103
|
+
- lib/dashy/engine.rb
|
104
|
+
- lib/dashy/generator.rb
|
105
|
+
- lib/dashy/version.rb
|
106
|
+
- lib/sass/script/functions.rb
|
107
|
+
- lib/tasks/install.rake
|
108
|
+
- package.json
|
109
|
+
- sache.json
|
110
|
+
homepage: https://github.com/tosyx/dashy
|
111
|
+
licenses:
|
112
|
+
- MIT
|
113
|
+
metadata: {}
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
requirements: []
|
129
|
+
rubyforge_project:
|
130
|
+
rubygems_version: 2.4.4
|
131
|
+
signing_key:
|
132
|
+
specification_version: 4
|
133
|
+
summary: Selector combinators and other helpers for Sass.
|
134
|
+
test_files: []
|