yellow-brick-road 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rst +42 -20
- data/lib/generators/templates/yellow_brick_road.rb.erb +19 -0
- data/lib/generators/yellow_brick_road/install_generator.rb +14 -0
- data/lib/yellow-brick-road/config.rb +41 -8
- data/lib/yellow-brick-road/directive_processor.rb +6 -5
- data/lib/yellow-brick-road/engine.rb +2 -3
- data/lib/yellow-brick-road/soy_processor.rb +1 -1
- data/lib/yellow-brick-road/version.rb +1 -1
- data/test/dummy/app/assets/javascripts/closure-deps.js +1 -1
- data/test/dummy/config/initializers/yellow_brick_road.rb +18 -1
- data/test/dummy/log/development.log +2208 -0
- data/test/dummy/tmp/cache/assets/C33/E00/sprockets%2F50c54266987e056bca666f8951752841 +2556 -0
- data/test/dummy/tmp/cache/assets/C48/990/sprockets%2F182c7921a46c3b8603c7f5595a111407 +823 -0
- data/test/dummy/tmp/cache/assets/C53/B40/sprockets%2F48cf0c035092dc945559526a279061c6 +204 -0
- data/test/dummy/tmp/cache/assets/C60/DB0/sprockets%2F3f00684578f2a3246581db667309ed89 +187 -0
- data/test/dummy/tmp/cache/assets/C60/E40/sprockets%2F3c5422f721521f492a5f02ca00b70009 +457 -0
- data/test/dummy/tmp/cache/assets/C73/DE0/sprockets%2F21f1f4574326846114a3c106873cebc3 +0 -0
- data/test/dummy/tmp/cache/assets/C7E/9F0/sprockets%2F89862076204c62c4593ac20de32da909 +4 -4
- data/test/dummy/tmp/cache/assets/C80/6F0/sprockets%2F56459a0713f8610d7d261f8be93073a2 +115 -0
- data/test/dummy/tmp/cache/assets/C8D/E10/sprockets%2F34b84bc4732937f885707002eda3896e +511 -0
- data/test/dummy/tmp/cache/assets/C93/CB0/sprockets%2F539b403b24833ca478a6f5877f37687c +239 -0
- data/test/dummy/tmp/cache/assets/C9A/C70/sprockets%2F10933dc6d342f604514713510b9ef0ab +806 -0
- data/test/dummy/tmp/cache/assets/CA0/7C0/sprockets%2Ff591bc0af8f085501241305c04907d3e +590 -0
- data/test/dummy/tmp/cache/assets/CA1/4A0/sprockets%2F5a9ad311e7d225b530b597041714b1e9 +2539 -0
- data/test/dummy/tmp/cache/assets/CA7/310/sprockets%2F45664cf816315200b574e029fde6f10a +0 -0
- data/test/dummy/tmp/cache/assets/CA7/A80/sprockets%2F1f32590957635a5a4f35442bc22f4ca4 +0 -0
- data/test/dummy/tmp/cache/assets/CAE/1D0/sprockets%2F2e62c7733d38a817a1532a744c6287bd +72 -0
- data/test/dummy/tmp/cache/assets/CB2/3C0/sprockets%2F9c35c290501a896b82c31448a39f3d5d +142 -0
- data/test/dummy/tmp/cache/assets/CB3/F20/sprockets%2F558b00e493fb501f7d95761e7eb40273 +2539 -0
- data/test/dummy/tmp/cache/assets/CBE/550/sprockets%2Fd680cac830e0b3408ba910f0b0421147 +2 -2
- data/test/dummy/tmp/cache/assets/CCD/480/sprockets%2Ffe7e11511634a2d03e1a20980b4593cf +0 -0
- data/test/dummy/tmp/cache/assets/CD0/080/sprockets%2Ffd5cbb87741244521d013d11c55573fa +204 -0
- data/test/dummy/tmp/cache/assets/CD2/020/sprockets%2Ff97740ba22118a2c91e992aac041843b +811 -0
- data/test/dummy/tmp/cache/assets/CD8/D90/sprockets%2F55dd841661d646f0024261a08ecf8ec0 +823 -0
- data/test/dummy/tmp/cache/assets/CE3/0D0/sprockets%2F301f97a178fd839a81bd663a6e22b616 +811 -0
- data/test/dummy/tmp/cache/assets/CE4/330/sprockets%2Fbd23466639af99164ab8e1c93721f14b +127 -0
- data/test/dummy/tmp/cache/assets/CE6/8A0/sprockets%2F3c0e7c5fa31563c8e820d6771e09918d +103 -0
- data/test/dummy/tmp/cache/assets/CEB/120/sprockets%2F857a0dde6829f7a27b93a840e1c60469 +522 -0
- data/test/dummy/tmp/cache/assets/CEE/CF0/sprockets%2F376f94b987d8156056c4e1d38ec06bf0 +0 -0
- data/test/dummy/tmp/cache/assets/CF2/C10/sprockets%2Fc64ef8a9dd0a1c3101d662750105c11a +806 -0
- data/test/dummy/tmp/cache/assets/CF3/CD0/sprockets%2F4bb42a5a6b504190f10d20b1c5f93d54 +1529 -0
- data/test/dummy/tmp/cache/assets/CF6/890/sprockets%2F36007a87f140155b5a04f2ca6b262dcc +494 -0
- data/test/dummy/tmp/cache/assets/CF6/9D0/sprockets%2F34b7199e9d33994c8ec7a442d60ca985 +173 -0
- data/test/dummy/tmp/cache/assets/CFA/A90/sprockets%2F901ba405a6d6747f6412ed4d0e0ac620 +256 -0
- data/test/dummy/tmp/cache/assets/CFC/E70/sprockets%2F8ee639668b5f0e629fbe0d62d1394689 +173 -0
- data/test/dummy/tmp/cache/assets/D04/1B0/sprockets%2F418f2b3b6b08b320f6db268a0991c54c +0 -0
- data/test/dummy/tmp/cache/assets/D05/920/sprockets%2F909507434dcc270db4853e4c147f0aac +5 -4
- data/test/dummy/tmp/cache/assets/D07/DB0/sprockets%2F0c17d7dac64290e385c91eb6f1570b31 +511 -0
- data/test/dummy/tmp/cache/assets/D07/EE0/sprockets%2F4999982b09e0b786894fce44f5d783cc +1371 -0
- data/test/dummy/tmp/cache/assets/D09/380/sprockets%2F14383e18fa2faac6b561a29d8e132863 +0 -0
- data/test/dummy/tmp/cache/assets/D0D/200/sprockets%2F545a7e34cce1d4272d83d58fd4215d42 +1277 -0
- data/test/dummy/tmp/cache/assets/D0E/870/sprockets%2F84996444f4f1f3fdc0248131cfb1a3b6 +794 -0
- data/test/dummy/tmp/cache/assets/D15/F60/sprockets%2Fa28394e3f80365b5bc86794dd46daa22 +0 -0
- data/test/dummy/tmp/cache/assets/D18/950/sprockets%2Fcf650d67c5d431ffdb38552e562299b2 +474 -0
- data/test/dummy/tmp/cache/assets/D18/E10/sprockets%2Fec7c58f640556b401fcd66528352dc9d +474 -0
- data/test/dummy/tmp/cache/assets/D20/660/sprockets%2F0d2875475ced01df962f3d758cda7792 +103 -0
- data/test/dummy/tmp/cache/assets/D22/AB0/sprockets%2F0b08e7f81651aaf739a93d61ae99779c +283 -0
- data/test/dummy/tmp/cache/assets/D2E/B20/sprockets%2Feed5412a17a52b1a335925e2af1f75d3 +0 -0
- data/test/dummy/tmp/cache/assets/D36/700/sprockets%2Fd219bf9db2eacc105bb294755093a437 +505 -0
- data/test/dummy/tmp/cache/assets/D3B/A10/sprockets%2Fcf38b51682d84a04da7b8a7313de52c6 +207 -0
- data/test/dummy/tmp/cache/assets/D3C/0E0/sprockets%2Fe9d7aba138d602c4a6ac701bc9615977 +505 -0
- data/test/dummy/tmp/cache/assets/D3E/FF0/sprockets%2F6bd8ccd3e02f397c20f349d5c0960e51 +0 -0
- data/test/dummy/tmp/cache/assets/D41/B30/sprockets%2Fba1b93913dd01d83ac9a96df334456f8 +0 -0
- data/test/dummy/tmp/cache/assets/D41/DA0/sprockets%2Fe8d00810698a9fcee032022fefd084f7 +0 -0
- data/test/dummy/tmp/cache/assets/D44/CF0/sprockets%2Ffa31a45f04884493c909c5a67fcbdf23 +1371 -0
- data/test/dummy/tmp/cache/assets/D47/BE0/sprockets%2F0b5ebdf6dec160a264698e7f745061e8 +142 -0
- data/test/dummy/tmp/cache/assets/D4C/F30/sprockets%2Ff90155c10f59a3fe44959ac09bf817fe +2556 -0
- data/test/dummy/tmp/cache/assets/D4E/7C0/sprockets%2Ff01b58512d01eda23fd5cb23a2b28b60 +1529 -0
- data/test/dummy/tmp/cache/assets/D4E/860/sprockets%2F86eed0c77c47d0970345bbabb58d8939 +1277 -0
- data/test/dummy/tmp/cache/assets/D4E/C30/sprockets%2F52420c10c73ca310d026565eafdadb4e +1545 -0
- data/test/dummy/tmp/cache/assets/D4E/F60/sprockets%2F9893a3c5aeb1a9e77469f4751b4d3c3f +115 -0
- data/test/dummy/tmp/cache/assets/D4F/E60/sprockets%2F17ee65de1f78c3dd5c165a9867e810b6 +165 -0
- data/test/dummy/tmp/cache/assets/D57/0D0/sprockets%2Fa29e6e8106d9d5ed1e2889126cfbf877 +300 -0
- data/test/dummy/tmp/cache/assets/D5C/650/sprockets%2Fe1c381da3cc213a639e956ae3315a2bd +607 -0
- data/test/dummy/tmp/cache/assets/D61/860/sprockets%2Fbf032a3b4aad2c2e25704e65c966cf45 +794 -0
- data/test/dummy/tmp/cache/assets/D63/B20/sprockets%2F31fc70ce66bb80fb9421be34eb3b0287 +0 -0
- data/test/dummy/tmp/cache/assets/D64/D60/sprockets%2Fa544ea03bf0a45948a053ba76ec2a79f +239 -0
- data/test/dummy/tmp/cache/assets/D6B/F90/sprockets%2F66636712ecb1fcc777dccf7643a0e1b1 +127 -0
- data/test/dummy/tmp/cache/assets/D6E/AD0/sprockets%2Fc91cdc6a72c729d7a64119198b3d2eab +0 -0
- data/test/dummy/tmp/cache/assets/D6F/140/sprockets%2F9ddc51f4388dd5243a28dba1ce47572b +53 -0
- data/test/dummy/tmp/cache/assets/D72/800/sprockets%2F92baa375d54e16fe0a5c7f079a1ce992 +165 -0
- data/test/dummy/tmp/cache/assets/D74/220/sprockets%2F3f888bda53179cb945eab35fbd31a708 +53 -0
- data/test/dummy/tmp/cache/assets/D78/5F0/sprockets%2F638ed6af667d4fc5147f72ff34aa2d33 +0 -0
- data/test/dummy/tmp/cache/assets/D7D/640/sprockets%2F95a7c5580f957c31e1ab9d0773ed5fde +607 -0
- data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +6 -5
- data/test/dummy/tmp/cache/assets/D89/020/sprockets%2Fa06df6166e70324e712e54b1cafca0ae +187 -0
- data/test/dummy/tmp/cache/assets/D8A/9F0/sprockets%2Fc06547ca33ee3d03be14ce045ae1c9e2 +207 -0
- data/test/dummy/tmp/cache/assets/D9E/B80/sprockets%2F9561df1d45c7ff4aa8ac3e2df0c99121 +0 -0
- data/test/dummy/tmp/cache/assets/DA3/F30/sprockets%2Fe015d6ccdfcf022e47c83d7906f728ae +457 -0
- data/test/dummy/tmp/cache/assets/DAE/190/sprockets%2F433c7b21968be8d1f9bfdbdf7a637c57 +0 -0
- data/test/dummy/tmp/cache/assets/DB3/600/sprockets%2F9b70ae73f15ba693886eeef4eb5d6c75 +0 -0
- data/test/dummy/tmp/cache/assets/DB4/510/sprockets%2F29cdae8e29c88fd9ddbd4831419560fe +1260 -0
- data/test/dummy/tmp/cache/assets/DC1/4A0/sprockets%2F0b63dfcf163f2faeb612724eb4545bcc +1354 -0
- data/test/dummy/tmp/cache/assets/DC4/C10/sprockets%2Fcf48f4cbad3db33146eab4c577c1d209 +300 -0
- data/test/dummy/tmp/cache/assets/DC4/CA0/sprockets%2Fd0da8a60ea4dc16b9fd3e2a50d88633c +0 -0
- data/test/dummy/tmp/cache/assets/DC7/8C0/sprockets%2F1ad68dcc9ef598d3811ba2ac5c0ea182 +1354 -0
- data/test/dummy/tmp/cache/assets/DC7/C00/sprockets%2Fba755ff3a81c3192f0e45a4f7c0c7dcb +0 -0
- data/test/dummy/tmp/cache/assets/DCA/760/sprockets%2F717c4cea10bf601090ffdfe4e668e4cb +283 -0
- data/test/dummy/tmp/cache/assets/DCA/DE0/sprockets%2F51dcced9ec2b3cd4b1cc2949f860c361 +590 -0
- data/test/dummy/tmp/cache/assets/DD7/E70/sprockets%2F2595d8c8d1d5f4deb096247fb3bfc7ab +256 -0
- data/test/dummy/tmp/cache/assets/DE1/9D0/sprockets%2F8befd77af580ee16ec42ec95b1766ff3 +1545 -0
- data/test/dummy/tmp/cache/assets/E00/D80/sprockets%2F9debc27161f7bccf2d84a36b8c36c4bf +522 -0
- data/test/dummy/tmp/cache/assets/E00/E60/sprockets%2Fac159b94b0a6d621e4f6cde9b4de87bb +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E1B/D00/sprockets%2F886dff4afe55f9d3f8abe434f2689add +72 -0
- data/test/dummy/tmp/cache/assets/E1B/F20/sprockets%2Fa4bbc04eb83ebf94fd8134c3abd220dd +494 -0
- data/test/dummy/tmp/cache/assets/E71/0C0/sprockets%2F5ffdc0daa0a1f9638c787897ceefcdee +1260 -0
- metadata +186 -10
- data/test/dummy/tmp/pids/server.pid +0 -1
Binary file
|
@@ -0,0 +1,239 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325538162.064002:@value{ I"length:EFi%I"digest;
|
2
|
+
F"%071954f0022261cc659d13add99e55d9I"source;
|
3
|
+
FI"%// Copyright 2006 The Closure Library Authors. All Rights Reserved.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS-IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview Utilities for adding, removing and setting classes.
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
goog.provide('goog.dom.classes');
|
25
|
+
|
26
|
+
goog.require('goog.array');
|
27
|
+
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Sets the entire class name of an element.
|
31
|
+
* @param {Node} element DOM node to set class of.
|
32
|
+
* @param {string} className Class name(s) to apply to element.
|
33
|
+
*/
|
34
|
+
goog.dom.classes.set = function(element, className) {
|
35
|
+
element.className = className;
|
36
|
+
};
|
37
|
+
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Gets an array of class names on an element
|
41
|
+
* @param {Node} element DOM node to get class of.
|
42
|
+
* @return {Array} Class names on {@code element}.
|
43
|
+
*/
|
44
|
+
goog.dom.classes.get = function(element) {
|
45
|
+
var className = element.className;
|
46
|
+
// Some types of elements don't have a className in IE (e.g. iframes).
|
47
|
+
// Furthermore, in Firefox, className is not a string when the element is
|
48
|
+
// an SVG element.
|
49
|
+
return className && typeof className.split == 'function' ?
|
50
|
+
className.split(/\s+/) : [];
|
51
|
+
};
|
52
|
+
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Adds a class or classes to an element. Does not add multiples of class names.
|
56
|
+
* @param {Node} element DOM node to add class to.
|
57
|
+
* @param {...string} var_args Class names to add.
|
58
|
+
* @return {boolean} Whether class was added (or all classes were added).
|
59
|
+
*/
|
60
|
+
goog.dom.classes.add = function(element, var_args) {
|
61
|
+
var classes = goog.dom.classes.get(element);
|
62
|
+
var args = goog.array.slice(arguments, 1);
|
63
|
+
|
64
|
+
var b = goog.dom.classes.add_(classes, args);
|
65
|
+
element.className = classes.join(' ');
|
66
|
+
|
67
|
+
return b;
|
68
|
+
};
|
69
|
+
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Removes a class or classes from an element.
|
73
|
+
* @param {Node} element DOM node to remove class from.
|
74
|
+
* @param {...string} var_args Class name(s) to remove.
|
75
|
+
* @return {boolean} Whether all classes in {@code var_args} were found and
|
76
|
+
* removed.
|
77
|
+
*/
|
78
|
+
goog.dom.classes.remove = function(element, var_args) {
|
79
|
+
var classes = goog.dom.classes.get(element);
|
80
|
+
var args = goog.array.slice(arguments, 1);
|
81
|
+
|
82
|
+
var b = goog.dom.classes.remove_(classes, args);
|
83
|
+
element.className = classes.join(' ');
|
84
|
+
|
85
|
+
return b;
|
86
|
+
};
|
87
|
+
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Helper method for {@link goog.dom.classes.add} and
|
91
|
+
* {@link goog.dom.classes.addRemove}. Adds one or more classes to the supplied
|
92
|
+
* classes array.
|
93
|
+
* @param {Array.<string>} classes All class names for the element, will be
|
94
|
+
* updated to have the classes supplied in {@code args} added.
|
95
|
+
* @param {Array.<string>} args Class names to add.
|
96
|
+
* @return {boolean} Whether all classes in were added.
|
97
|
+
* @private
|
98
|
+
*/
|
99
|
+
goog.dom.classes.add_ = function(classes, args) {
|
100
|
+
var rv = 0;
|
101
|
+
for (var i = 0; i < args.length; i++) {
|
102
|
+
if (!goog.array.contains(classes, args[i])) {
|
103
|
+
classes.push(args[i]);
|
104
|
+
rv++;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
return rv == args.length;
|
108
|
+
};
|
109
|
+
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Helper method for {@link goog.dom.classes.remove} and
|
113
|
+
* {@link goog.dom.classes.addRemove}. Removes one or more classes from the
|
114
|
+
* supplied classes array.
|
115
|
+
* @param {Array.<string>} classes All class names for the element, will be
|
116
|
+
* updated to have the classes supplied in {@code args} removed.
|
117
|
+
* @param {Array.<string>} args Class names to remove.
|
118
|
+
* @return {boolean} Whether all classes in were found and removed.
|
119
|
+
* @private
|
120
|
+
*/
|
121
|
+
goog.dom.classes.remove_ = function(classes, args) {
|
122
|
+
var rv = 0;
|
123
|
+
for (var i = 0; i < classes.length; i++) {
|
124
|
+
if (goog.array.contains(args, classes[i])) {
|
125
|
+
goog.array.splice(classes, i--, 1);
|
126
|
+
rv++;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
return rv == args.length;
|
130
|
+
};
|
131
|
+
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Switches a class on an element from one to another without disturbing other
|
135
|
+
* classes. If the fromClass isn't removed, the toClass won't be added.
|
136
|
+
* @param {Node} element DOM node to swap classes on.
|
137
|
+
* @param {string} fromClass Class to remove.
|
138
|
+
* @param {string} toClass Class to add.
|
139
|
+
* @return {boolean} Whether classes were switched.
|
140
|
+
*/
|
141
|
+
goog.dom.classes.swap = function(element, fromClass, toClass) {
|
142
|
+
var classes = goog.dom.classes.get(element);
|
143
|
+
|
144
|
+
var removed = false;
|
145
|
+
for (var i = 0; i < classes.length; i++) {
|
146
|
+
if (classes[i] == fromClass) {
|
147
|
+
goog.array.splice(classes, i--, 1);
|
148
|
+
removed = true;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
|
152
|
+
if (removed) {
|
153
|
+
classes.push(toClass);
|
154
|
+
element.className = classes.join(' ');
|
155
|
+
}
|
156
|
+
|
157
|
+
return removed;
|
158
|
+
};
|
159
|
+
|
160
|
+
|
161
|
+
/**
|
162
|
+
* Adds zero or more classes to an element and removes zero or more as a single
|
163
|
+
* operation. Unlike calling {@link goog.dom.classes.add} and
|
164
|
+
* {@link goog.dom.classes.remove} separately, this is more efficient as it only
|
165
|
+
* parses the class property once.
|
166
|
+
*
|
167
|
+
* If a class is in both the remove and add lists, it will be added. Thus,
|
168
|
+
* you can use this instead of {@link goog.dom.classes.swap} when you have
|
169
|
+
* more than two class names that you want to swap.
|
170
|
+
*
|
171
|
+
* @param {Node} element DOM node to swap classes on.
|
172
|
+
* @param {string|Array.<string>|null} classesToRemove Class or classes to
|
173
|
+
* remove, if null no classes are removed.
|
174
|
+
* @param {string|Array.<string>|null} classesToAdd Class or classes to add, if
|
175
|
+
* null no classes are added.
|
176
|
+
*/
|
177
|
+
goog.dom.classes.addRemove = function(element, classesToRemove, classesToAdd) {
|
178
|
+
var classes = goog.dom.classes.get(element);
|
179
|
+
if (goog.isString(classesToRemove)) {
|
180
|
+
goog.array.remove(classes, classesToRemove);
|
181
|
+
} else if (goog.isArray(classesToRemove)) {
|
182
|
+
goog.dom.classes.remove_(classes, classesToRemove);
|
183
|
+
}
|
184
|
+
|
185
|
+
if (goog.isString(classesToAdd) &&
|
186
|
+
!goog.array.contains(classes, classesToAdd)) {
|
187
|
+
classes.push(classesToAdd);
|
188
|
+
} else if (goog.isArray(classesToAdd)) {
|
189
|
+
goog.dom.classes.add_(classes, classesToAdd);
|
190
|
+
}
|
191
|
+
|
192
|
+
element.className = classes.join(' ');
|
193
|
+
};
|
194
|
+
|
195
|
+
|
196
|
+
/**
|
197
|
+
* Returns true if an element has a class.
|
198
|
+
* @param {Node} element DOM node to test.
|
199
|
+
* @param {string} className Class name to test for.
|
200
|
+
* @return {boolean} Whether element has the class.
|
201
|
+
*/
|
202
|
+
goog.dom.classes.has = function(element, className) {
|
203
|
+
return goog.array.contains(goog.dom.classes.get(element), className);
|
204
|
+
};
|
205
|
+
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Adds or removes a class depending on the enabled argument.
|
209
|
+
* @param {Node} element DOM node to add or remove the class on.
|
210
|
+
* @param {string} className Class name to add or remove.
|
211
|
+
* @param {boolean} enabled Whether to add or remove the class (true adds,
|
212
|
+
* false removes).
|
213
|
+
*/
|
214
|
+
goog.dom.classes.enable = function(element, className, enabled) {
|
215
|
+
if (enabled) {
|
216
|
+
goog.dom.classes.add(element, className);
|
217
|
+
} else {
|
218
|
+
goog.dom.classes.remove(element, className);
|
219
|
+
}
|
220
|
+
};
|
221
|
+
|
222
|
+
|
223
|
+
/**
|
224
|
+
* Removes a class if an element has it, and adds it the element doesn't have
|
225
|
+
* it. Won't affect other classes on the node.
|
226
|
+
* @param {Node} element DOM node to toggle class on.
|
227
|
+
* @param {string} className Class to toggle.
|
228
|
+
* @return {boolean} True if class was added, false if it was removed
|
229
|
+
* (in other words, whether element has the class after this function has
|
230
|
+
* been called).
|
231
|
+
*/
|
232
|
+
goog.dom.classes.toggle = function(element, className) {
|
233
|
+
var add = !goog.dom.classes.has(element, className);
|
234
|
+
goog.dom.classes.enable(element, className, add);
|
235
|
+
return add;
|
236
|
+
};
|
237
|
+
;
|
238
|
+
FI"
|
239
|
+
F"%b8b1adc964b09d1c4eaab9f271ff7e37
|
@@ -0,0 +1,127 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325549267.933938:@value{ I"length:EFi� I"digest;
|
2
|
+
F"%95793913811102f0d723f154411eb887I"source;
|
3
|
+
FI"� // Copyright 2007 The Closure Library Authors. All Rights Reserved.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS-IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview Defines the goog.dom.TagName enum. This enumerates
|
19
|
+
* all html tag names specified by the W3C HTML 4.01 Specification.
|
20
|
+
* Reference http://www.w3.org/TR/html401/index/elements.html.
|
21
|
+
*/
|
22
|
+
|
23
|
+
goog.provide('goog.dom.TagName');
|
24
|
+
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Enum of all html tag names specified by the W3C HTML 4.01 Specification.
|
28
|
+
* Reference http://www.w3.org/TR/html401/index/elements.html
|
29
|
+
* @enum {string}
|
30
|
+
*/
|
31
|
+
goog.dom.TagName = {
|
32
|
+
A: 'A',
|
33
|
+
ABBR: 'ABBR',
|
34
|
+
ACRONYM: 'ACRONYM',
|
35
|
+
ADDRESS: 'ADDRESS',
|
36
|
+
APPLET: 'APPLET',
|
37
|
+
AREA: 'AREA',
|
38
|
+
B: 'B',
|
39
|
+
BASE: 'BASE',
|
40
|
+
BASEFONT: 'BASEFONT',
|
41
|
+
BDO: 'BDO',
|
42
|
+
BIG: 'BIG',
|
43
|
+
BLOCKQUOTE: 'BLOCKQUOTE',
|
44
|
+
BODY: 'BODY',
|
45
|
+
BR: 'BR',
|
46
|
+
BUTTON: 'BUTTON',
|
47
|
+
CANVAS: 'CANVAS',
|
48
|
+
CAPTION: 'CAPTION',
|
49
|
+
CENTER: 'CENTER',
|
50
|
+
CITE: 'CITE',
|
51
|
+
CODE: 'CODE',
|
52
|
+
COL: 'COL',
|
53
|
+
COLGROUP: 'COLGROUP',
|
54
|
+
DD: 'DD',
|
55
|
+
DEL: 'DEL',
|
56
|
+
DFN: 'DFN',
|
57
|
+
DIR: 'DIR',
|
58
|
+
DIV: 'DIV',
|
59
|
+
DL: 'DL',
|
60
|
+
DT: 'DT',
|
61
|
+
EM: 'EM',
|
62
|
+
FIELDSET: 'FIELDSET',
|
63
|
+
FONT: 'FONT',
|
64
|
+
FORM: 'FORM',
|
65
|
+
FRAME: 'FRAME',
|
66
|
+
FRAMESET: 'FRAMESET',
|
67
|
+
H1: 'H1',
|
68
|
+
H2: 'H2',
|
69
|
+
H3: 'H3',
|
70
|
+
H4: 'H4',
|
71
|
+
H5: 'H5',
|
72
|
+
H6: 'H6',
|
73
|
+
HEAD: 'HEAD',
|
74
|
+
HR: 'HR',
|
75
|
+
HTML: 'HTML',
|
76
|
+
I: 'I',
|
77
|
+
IFRAME: 'IFRAME',
|
78
|
+
IMG: 'IMG',
|
79
|
+
INPUT: 'INPUT',
|
80
|
+
INS: 'INS',
|
81
|
+
ISINDEX: 'ISINDEX',
|
82
|
+
KBD: 'KBD',
|
83
|
+
LABEL: 'LABEL',
|
84
|
+
LEGEND: 'LEGEND',
|
85
|
+
LI: 'LI',
|
86
|
+
LINK: 'LINK',
|
87
|
+
MAP: 'MAP',
|
88
|
+
MENU: 'MENU',
|
89
|
+
META: 'META',
|
90
|
+
NOFRAMES: 'NOFRAMES',
|
91
|
+
NOSCRIPT: 'NOSCRIPT',
|
92
|
+
OBJECT: 'OBJECT',
|
93
|
+
OL: 'OL',
|
94
|
+
OPTGROUP: 'OPTGROUP',
|
95
|
+
OPTION: 'OPTION',
|
96
|
+
P: 'P',
|
97
|
+
PARAM: 'PARAM',
|
98
|
+
PRE: 'PRE',
|
99
|
+
Q: 'Q',
|
100
|
+
S: 'S',
|
101
|
+
SAMP: 'SAMP',
|
102
|
+
SCRIPT: 'SCRIPT',
|
103
|
+
SELECT: 'SELECT',
|
104
|
+
SMALL: 'SMALL',
|
105
|
+
SPAN: 'SPAN',
|
106
|
+
STRIKE: 'STRIKE',
|
107
|
+
STRONG: 'STRONG',
|
108
|
+
STYLE: 'STYLE',
|
109
|
+
SUB: 'SUB',
|
110
|
+
SUP: 'SUP',
|
111
|
+
TABLE: 'TABLE',
|
112
|
+
TBODY: 'TBODY',
|
113
|
+
TD: 'TD',
|
114
|
+
TEXTAREA: 'TEXTAREA',
|
115
|
+
TFOOT: 'TFOOT',
|
116
|
+
TH: 'TH',
|
117
|
+
THEAD: 'THEAD',
|
118
|
+
TITLE: 'TITLE',
|
119
|
+
TR: 'TR',
|
120
|
+
TT: 'TT',
|
121
|
+
U: 'U',
|
122
|
+
UL: 'UL',
|
123
|
+
VAR: 'VAR'
|
124
|
+
};
|
125
|
+
;
|
126
|
+
FI"
|
127
|
+
F"%8231307e795d58fa65338671bcd70662
|
Binary file
|
@@ -0,0 +1,53 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325538161.833707:@value{ I"length:EFi'I"digest;
|
2
|
+
F"%7a6497e7495bae188e28a192999ef59eI"source;
|
3
|
+
FI"'// Copyright 2009 The Closure Library Authors. All Rights Reserved.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS-IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview Provides a base class for custom Error objects such that the
|
19
|
+
* stack is correctly maintained.
|
20
|
+
*
|
21
|
+
* You should never need to throw goog.debug.Error(msg) directly, Error(msg) is
|
22
|
+
* sufficient.
|
23
|
+
*
|
24
|
+
*/
|
25
|
+
|
26
|
+
|
27
|
+
goog.provide('goog.debug.Error');
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Base class for custom error objects.
|
33
|
+
* @param {*=} opt_msg The message associated with the error.
|
34
|
+
* @constructor
|
35
|
+
* @extends {Error}
|
36
|
+
*/
|
37
|
+
goog.debug.Error = function(opt_msg) {
|
38
|
+
|
39
|
+
// Ensure there is a stack trace.
|
40
|
+
this.stack = new Error().stack || '';
|
41
|
+
|
42
|
+
if (opt_msg) {
|
43
|
+
this.message = String(opt_msg);
|
44
|
+
}
|
45
|
+
};
|
46
|
+
goog.inherits(goog.debug.Error, Error);
|
47
|
+
|
48
|
+
|
49
|
+
/** @override */
|
50
|
+
goog.debug.Error.prototype.name = 'CustomError';
|
51
|
+
;
|
52
|
+
FI"
|
53
|
+
F"%25a34f45cedf7d3147528ffa125b1289
|
@@ -0,0 +1,165 @@
|
|
1
|
+
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325549268.084127:@value{ I"length:EFi�I"digest;
|
2
|
+
F"%4677892072a8f5cb3a0f4b57b8396468I"source;
|
3
|
+
FI"�// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS-IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview Provides inversion and inversion map functionality for storing
|
19
|
+
* integer ranges and corresponding values.
|
20
|
+
*
|
21
|
+
*/
|
22
|
+
|
23
|
+
|
24
|
+
goog.provide('goog.structs.InversionMap');
|
25
|
+
|
26
|
+
goog.require('goog.array');
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Maps ranges to values using goog.structs.Inversion.
|
32
|
+
* @param {Array.<number>} rangeArray An array of monotonically
|
33
|
+
* increasing integer values, with at least one instance.
|
34
|
+
* @param {Array.<*>} valueArray An array of corresponding values.
|
35
|
+
* Length must be the same as rangeArray.
|
36
|
+
* @param {boolean=} opt_delta If true, saves only delta from previous value.
|
37
|
+
* @constructor
|
38
|
+
*/
|
39
|
+
goog.structs.InversionMap = function(rangeArray, valueArray, opt_delta) {
|
40
|
+
if (rangeArray.length != valueArray.length) {
|
41
|
+
// rangeArray and valueArray has to match in number of entries.
|
42
|
+
return null;
|
43
|
+
}
|
44
|
+
this.storeInversion_(rangeArray, opt_delta);
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @type {Array}
|
48
|
+
* @protected
|
49
|
+
*/
|
50
|
+
this.values = valueArray;
|
51
|
+
};
|
52
|
+
|
53
|
+
|
54
|
+
/**
|
55
|
+
* @type {Array}
|
56
|
+
* @protected
|
57
|
+
*/
|
58
|
+
goog.structs.InversionMap.prototype.rangeArray;
|
59
|
+
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Stores the integers as ranges (half-open).
|
63
|
+
* If delta is true, the integers are delta from the previous value and
|
64
|
+
* will be restored to the absolute value.
|
65
|
+
* When used as a set, even indices are IN, and odd are OUT.
|
66
|
+
* @param {Array.<number?>} rangeArray An array of monotonically
|
67
|
+
* increasing integer values, with at least one instance.
|
68
|
+
* @param {boolean=} opt_delta If true, saves only delta from previous value.
|
69
|
+
* @private
|
70
|
+
*/
|
71
|
+
goog.structs.InversionMap.prototype.storeInversion_ = function(rangeArray,
|
72
|
+
opt_delta) {
|
73
|
+
this.rangeArray = rangeArray;
|
74
|
+
|
75
|
+
for (var i = 1; i < rangeArray.length; i++) {
|
76
|
+
if (rangeArray[i] == null) {
|
77
|
+
rangeArray[i] = rangeArray[i - 1] + 1;
|
78
|
+
} else if (opt_delta) {
|
79
|
+
rangeArray[i] += rangeArray[i - 1];
|
80
|
+
}
|
81
|
+
}
|
82
|
+
};
|
83
|
+
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Splices a range -> value map into this inversion map.
|
87
|
+
* @param {Array.<number>} rangeArray An array of monotonically
|
88
|
+
* increasing integer values, with at least one instance.
|
89
|
+
* @param {Array.<*>} valueArray An array of corresponding values.
|
90
|
+
* Length must be the same as rangeArray.
|
91
|
+
* @param {boolean=} opt_delta If true, saves only delta from previous value.
|
92
|
+
*/
|
93
|
+
goog.structs.InversionMap.prototype.spliceInversion = function(
|
94
|
+
rangeArray, valueArray, opt_delta) {
|
95
|
+
// By building another inversion map, we build the arrays that we need
|
96
|
+
// to splice in.
|
97
|
+
var otherMap = new goog.structs.InversionMap(
|
98
|
+
rangeArray, valueArray, opt_delta);
|
99
|
+
|
100
|
+
// Figure out where to splice those arrays.
|
101
|
+
var startRange = otherMap.rangeArray[0];
|
102
|
+
var endRange =
|
103
|
+
(/** @type {number} */ goog.array.peek(otherMap.rangeArray));
|
104
|
+
var startSplice = this.getLeast(startRange);
|
105
|
+
var endSplice = this.getLeast(endRange);
|
106
|
+
|
107
|
+
// The inversion map works by storing the start points of ranges...
|
108
|
+
if (startRange != this.rangeArray[startSplice]) {
|
109
|
+
// ...if we're splicing in a start point that isn't already here,
|
110
|
+
// then we need to insert it after the insertion point.
|
111
|
+
startSplice++;
|
112
|
+
} // otherwise we overwrite the insertion point.
|
113
|
+
|
114
|
+
var spliceLength = endSplice - startSplice + 1;
|
115
|
+
goog.partial(goog.array.splice, this.rangeArray, startSplice,
|
116
|
+
spliceLength).apply(null, otherMap.rangeArray);
|
117
|
+
goog.partial(goog.array.splice, this.values, startSplice,
|
118
|
+
spliceLength).apply(null, otherMap.values);
|
119
|
+
};
|
120
|
+
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Gets the value corresponding to a number from the inversion map.
|
124
|
+
* @param {number} intKey The number for which value needs to be retrieved
|
125
|
+
* from inversion map.
|
126
|
+
* @return {*} Value retrieved from inversion map; null if not found.
|
127
|
+
*/
|
128
|
+
goog.structs.InversionMap.prototype.at = function(intKey) {
|
129
|
+
var index = this.getLeast(intKey);
|
130
|
+
if (index < 0) {
|
131
|
+
return null;
|
132
|
+
}
|
133
|
+
return this.values[index];
|
134
|
+
};
|
135
|
+
|
136
|
+
|
137
|
+
/**
|
138
|
+
* Gets the largest index such that rangeArray[index] <= intKey from the
|
139
|
+
* inversion map.
|
140
|
+
* @param {number} intKey The probe for which rangeArray is searched.
|
141
|
+
* @return {number} Largest index such that rangeArray[index] <= intKey.
|
142
|
+
* @protected
|
143
|
+
*/
|
144
|
+
goog.structs.InversionMap.prototype.getLeast = function(intKey) {
|
145
|
+
var arr = this.rangeArray;
|
146
|
+
var low = 0;
|
147
|
+
var high = arr.length;
|
148
|
+
while (high - low > 8) {
|
149
|
+
var mid = (high + low) >> 1;
|
150
|
+
if (arr[mid] <= intKey) {
|
151
|
+
low = mid;
|
152
|
+
} else {
|
153
|
+
high = mid;
|
154
|
+
}
|
155
|
+
}
|
156
|
+
for (; low < high; ++low) {
|
157
|
+
if (intKey < arr[low]) {
|
158
|
+
break;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
return low - 1;
|
162
|
+
};
|
163
|
+
;
|
164
|
+
FI"
|
165
|
+
F"%702f53ea6120b1d8a44a710a35832be5
|