middleman 2.0.9.pre.2-x86-mingw32 → 2.0.9.pre.3-x86-mingw32
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.
- data/CHANGELOG +9 -0
- data/features/builder.feature +6 -0
- data/features/data.feature +16 -1
- data/features/fonts.feature +11 -0
- data/features/relative_assets.feature +8 -2
- data/features/step_definitions/middleman_steps.rb +9 -2
- data/fixtures/data-app/config.rb +3 -0
- data/fixtures/data-app/data/pages.yml +6 -0
- data/fixtures/data-app/source/index.html.haml +1 -0
- data/fixtures/data-app/source/layout.haml +3 -0
- data/fixtures/fonts-app/config.rb +0 -0
- data/fixtures/fonts-app/source/fonts/StMarie-Thin.otf +0 -0
- data/fixtures/fonts-app/source/stylesheets/fonts.css.sass +3 -0
- data/fixtures/glob-app/config.rb +1 -0
- data/fixtures/glob-app/source/index.html.haml +6 -0
- data/fixtures/glob-app/source/stylesheets/site.css.sass +1 -0
- data/fixtures/test-app/config.rb +1 -0
- data/fixtures/test-app/data/test2.json +4 -0
- data/fixtures/test-app/source/data3.html.erb +1 -0
- data/lib/middleman/base.rb +8 -3
- data/lib/middleman/builder.rb +61 -22
- data/lib/middleman/cli.rb +2 -1
- data/lib/middleman/core_extensions/assets.rb +1 -1
- data/lib/middleman/core_extensions/compass.rb +6 -2
- data/lib/middleman/core_extensions/data.rb +20 -3
- data/lib/middleman/templates/html5.rb +1 -0
- data/lib/middleman/templates/mobile.rb +17 -0
- data/lib/middleman/templates/mobile/source/404.html +38 -0
- data/lib/middleman/templates/mobile/source/README.markdown +64 -0
- data/lib/middleman/templates/mobile/source/crossdomain.xml +25 -0
- data/lib/middleman/templates/mobile/source/css/style.css +236 -0
- data/lib/middleman/templates/mobile/source/default.appcache +17 -0
- data/lib/middleman/templates/mobile/source/humans.txt +43 -0
- data/lib/middleman/templates/mobile/source/img/h/apple-touch-icon.png +0 -0
- data/lib/middleman/templates/mobile/source/img/h/splash.png +0 -0
- data/lib/middleman/templates/mobile/source/img/l/apple-touch-icon-precomposed.png +0 -0
- data/lib/middleman/templates/mobile/source/img/l/apple-touch-icon.png +0 -0
- data/lib/middleman/templates/mobile/source/img/l/splash.png +0 -0
- data/lib/middleman/templates/mobile/source/img/m/apple-touch-icon.png +0 -0
- data/lib/middleman/templates/mobile/source/index.html +95 -0
- data/lib/middleman/templates/mobile/source/js/libs/jquery-1.5.1.js +8316 -0
- data/lib/middleman/templates/mobile/source/js/libs/jquery-1.5.1.min.js +16 -0
- data/lib/middleman/templates/mobile/source/js/libs/modernizr-custom.js +14 -0
- data/lib/middleman/templates/mobile/source/js/libs/respond.min.js +7 -0
- data/lib/middleman/templates/mobile/source/js/mylibs/helper.js +147 -0
- data/lib/middleman/templates/mobile/source/js/script.js +0 -0
- data/lib/middleman/templates/mobile/source/robots.txt +5 -0
- data/lib/middleman/templates/mobile/source/sitemap.xml +10 -0
- data/lib/middleman/templates/mobile/source/test/index.html +31 -0
- data/lib/middleman/templates/mobile/source/test/qunit/qunit.css +148 -0
- data/lib/middleman/templates/mobile/source/test/qunit/qunit.js +1265 -0
- data/lib/middleman/templates/mobile/source/test/tests.js +26 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/Readme.PDF +0 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx1.snippet +31 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx2.snippet +2 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/aspx/ga.aspx +195 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/aspx/sample.aspx +44 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/jsp/ga.jsp +225 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp1.snippet +35 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp2.snippet +2 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/jsp/sample.jsp +51 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/php/ga.php +176 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/php/php1.snippet +30 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/php/php2.snippet +4 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/php/sample.php +44 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/pl/ga.pl +195 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/pl/perl1.snippet +27 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/pl/perl2.snippet +1 -0
- data/lib/middleman/templates/mobile/source/tools/googleanalyticsformobile/pl/sample.pl +38 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/COPYING +202 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/bookmark_bubble.js +559 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/example/example.html +43 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/example/example.js +57 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/images/arrow.png +0 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/images/close.png +0 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/images/generate_base64_images +33 -0
- data/lib/middleman/templates/mobile/source/tools/mobile-bookmark-bubble/images/icon_calendar.png +0 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/README +27 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/databasefactory.js +45 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbworker.js +324 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbworker_test.html +393 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbworkerstarter.js +32 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapper_gears.js +595 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapper_gears_test.html +404 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapper_html5.js +203 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapper_html5_test.html +468 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapperapi.js +202 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/dbwrapperapi_test.html +51 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gears_resultset.js +71 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gears_resultset_test.html +86 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gears_transaction.js +196 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gears_transaction_test.html +221 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gearsutils.js +94 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/gearsutils_test.html +84 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/global_functions.js +72 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/simplenotes/index.html +347 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/simplenotes/simplenotes.js +503 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/simplenotes/styles.css +66 -0
- data/lib/middleman/templates/mobile/source/tools/wspl/simplenotes/template.js +75 -0
- data/lib/middleman/version.rb +1 -1
- data/middleman-x86-mingw32.gemspec +0 -1
- data/middleman.gemspec +3 -2
- metadata +103 -6
- data/lib/middleman/config.ru +0 -2
- data/lib/middleman/features/tiny_src.rb +0 -11
@@ -0,0 +1,202 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2009 Google Inc.
|
3
|
+
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
you may not use this file except in compliance with the License.
|
6
|
+
You may obtain a copy of the License at
|
7
|
+
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
See the License for the specific language governing permissions and
|
14
|
+
limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview Generic Database API.
|
19
|
+
*
|
20
|
+
* A small set of classes to define how we interact with databases that can
|
21
|
+
* easily be implemented on top of HTML5 and Gears. The classes in this file
|
22
|
+
* should be extended to provide the missing method implementations and more
|
23
|
+
* sophisticated constructors where applicable.
|
24
|
+
*
|
25
|
+
*/
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Constructs a Statement object. A Statement is an SQL statement paired
|
29
|
+
* with the parameters needed to execute it.
|
30
|
+
*
|
31
|
+
* @constructor
|
32
|
+
* @param {!string} sql The SQL statement.
|
33
|
+
* @param {Array.<Object>?} opt_params The parameters for the SQL statement.
|
34
|
+
*/
|
35
|
+
google.wspl.Statement = function(sql, opt_params) {
|
36
|
+
|
37
|
+
/**
|
38
|
+
* The SQL statement with '?' in place of parameters.
|
39
|
+
* @type {string}
|
40
|
+
*/
|
41
|
+
this.sql = sql;
|
42
|
+
|
43
|
+
/**
|
44
|
+
* The parameters to use with the SQL statement.
|
45
|
+
* @type {!Array}
|
46
|
+
*/
|
47
|
+
this.params = opt_params || [];
|
48
|
+
};
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Returns a new statement object from the given statement with the parameters
|
52
|
+
* set as specified.
|
53
|
+
* @param {Array.<Object>} params The array of values for ? placeholders.
|
54
|
+
* @return {!google.wspl.Statement} The created Statement.
|
55
|
+
*/
|
56
|
+
google.wspl.Statement.prototype.createStatement = function(params) {
|
57
|
+
return new google.wspl.Statement(this.sql, params);
|
58
|
+
};
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Constructs a Transaction object. Transaction objects
|
62
|
+
* group together a series of statements into a single atomic
|
63
|
+
* action on the database.
|
64
|
+
*
|
65
|
+
* @constructor
|
66
|
+
*/
|
67
|
+
google.wspl.Transaction = function() {
|
68
|
+
};
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Takes a statement and an optional callback object and
|
72
|
+
* runs the statement on the database. The callback can be used to
|
73
|
+
* add more statements to the same transaction, or execute can be
|
74
|
+
* called repeatedly and the transactions will later execute in the
|
75
|
+
* order provided.
|
76
|
+
*
|
77
|
+
* @param {google.wspl.Statement} statement The statement to execute.
|
78
|
+
* @param {Object} opt_callback An object containing onSuccess and onFailure
|
79
|
+
* handlers.
|
80
|
+
*/
|
81
|
+
google.wspl.Transaction.prototype.execute = function(statement,
|
82
|
+
opt_callback) {
|
83
|
+
this.executeAll([statement], opt_callback);
|
84
|
+
};
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Runs an array of statements in a single database transaction.
|
88
|
+
* Invokes the onSuccess callback once for each successfully executed
|
89
|
+
* statement and once for the first failed statement. The callback can be
|
90
|
+
* used to add more statements to the same transaction, or executeAll can
|
91
|
+
* be called repeatedly and each block of statements given will execute
|
92
|
+
* in the same order as the sequence of calls to executeAll.
|
93
|
+
*
|
94
|
+
* @param {Array.<google.wspl.Statement>} statements The statements to
|
95
|
+
* execute.
|
96
|
+
* @param {Object?} opt_callback An object containing onSuccess and onFailure
|
97
|
+
* handlers.
|
98
|
+
*/
|
99
|
+
google.wspl.Transaction.prototype.executeAll = function(statements,
|
100
|
+
opt_callback) {
|
101
|
+
throw Error('executeAll not implemented');
|
102
|
+
};
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Constructs a Database object. Database objects are handles that allow
|
106
|
+
* access to a database (and create the corresponding database if it doesn't
|
107
|
+
* already exist). To open the database, pass the name of the needed
|
108
|
+
* database to the constructor, and then execute transactions on it using
|
109
|
+
* the execute method.
|
110
|
+
*
|
111
|
+
* @constructor
|
112
|
+
*/
|
113
|
+
google.wspl.Database = function() {
|
114
|
+
};
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Creates a transaction object that can execute a series of SQL statements
|
118
|
+
* atomically.
|
119
|
+
*
|
120
|
+
* @param {Function} populate A callback to run execute calls on the
|
121
|
+
* transaction.
|
122
|
+
* @param {Object?} opt_callback An optional success/failure callback that is
|
123
|
+
* called when the entire transaction is finished executing.
|
124
|
+
*/
|
125
|
+
google.wspl.Database.prototype.createTransaction = function(populate,
|
126
|
+
opt_callback) {
|
127
|
+
throw Error('createTransaction not implemented');
|
128
|
+
};
|
129
|
+
|
130
|
+
/**
|
131
|
+
* Executes an array of statements on the database, invoking the optional
|
132
|
+
* callback after statement execution and the optional transactionCallback upon
|
133
|
+
* completion of the transaction.
|
134
|
+
*
|
135
|
+
* @param {google.wspl.Statement} statement the statement to execute
|
136
|
+
* @param {Object?} opt_callback object that defines onSuccess and onFailure
|
137
|
+
* @param {Object?} opt_transactionCallback object that defines onSuccess and
|
138
|
+
* onFailure
|
139
|
+
*/
|
140
|
+
google.wspl.Database.prototype.execute = function(statement,
|
141
|
+
opt_callback,
|
142
|
+
opt_transactionCallback) {
|
143
|
+
this.createTransaction(function(tx) {
|
144
|
+
tx.execute(statement, opt_callback);
|
145
|
+
}, opt_transactionCallback);
|
146
|
+
};
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Executes an array of statements on the database, invoking the optional
|
150
|
+
* callback for each statement in the transaction. In the case of a statement
|
151
|
+
* failure, only the first failed statement will be reported and the transaction
|
152
|
+
* will be rolled back. This method invokes the optional transactionCallback
|
153
|
+
* upon completion of the transaction.
|
154
|
+
*
|
155
|
+
* @param {Array.<google.wspl.Statement>} statements the statements to execute
|
156
|
+
* @param {Object?} opt_callback object that defines onSuccess and onFailure
|
157
|
+
* @param {Object?} opt_transactionCallback object that defines onSuccess and
|
158
|
+
* onFailure
|
159
|
+
*/
|
160
|
+
google.wspl.Database.prototype.executeAll = function(statements,
|
161
|
+
opt_callback,
|
162
|
+
opt_transactionCallback) {
|
163
|
+
this.createTransaction(function(tx) {
|
164
|
+
tx.executeAll(statements, opt_callback);
|
165
|
+
}, opt_transactionCallback);
|
166
|
+
};
|
167
|
+
|
168
|
+
/**
|
169
|
+
* An immutable set of results that is returned from a single successful query
|
170
|
+
* on the database.
|
171
|
+
*
|
172
|
+
* @constructor
|
173
|
+
*/
|
174
|
+
google.wspl.ResultSet = function() {
|
175
|
+
};
|
176
|
+
|
177
|
+
/**
|
178
|
+
* Returns true if next() will advance to a valid row in the result set.
|
179
|
+
*
|
180
|
+
* @return {boolean} if next() will advance to a valid row in the result set
|
181
|
+
*/
|
182
|
+
google.wspl.ResultSet.prototype.isValidRow = function() {
|
183
|
+
throw Error('isValidRow not implemented');
|
184
|
+
};
|
185
|
+
|
186
|
+
/**
|
187
|
+
* Advances to the next row in the results.
|
188
|
+
*/
|
189
|
+
google.wspl.ResultSet.prototype.next = function() {
|
190
|
+
throw Error('next not implemented');
|
191
|
+
};
|
192
|
+
|
193
|
+
/**
|
194
|
+
* Returns the current row as an object with a property for each field returned
|
195
|
+
* by the database. The property will have the name of the column and the value
|
196
|
+
* of the cell.
|
197
|
+
*
|
198
|
+
* @return {Object} The current row
|
199
|
+
*/
|
200
|
+
google.wspl.ResultSet.prototype.getRow = function() {
|
201
|
+
throw Error('getRow not implemented');
|
202
|
+
};
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<!--
|
3
|
+
Copyright 2009 Google Inc.
|
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
|
+
<html>
|
19
|
+
<head>
|
20
|
+
<title>Database wrapper api</title>
|
21
|
+
<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
|
22
|
+
<script type="text/javascript" src="jsmock.js"></script>
|
23
|
+
<script type="text/javascript" src="global_functions.js"></script>
|
24
|
+
<script type="text/javascript" src="dbwrapperapi.js"></script>
|
25
|
+
</head>
|
26
|
+
<body>
|
27
|
+
<script type='text/javascript'>
|
28
|
+
|
29
|
+
function subStatementTest(stm) {
|
30
|
+
assertEquals('statement not set correctly', 'bar', stm.sql);
|
31
|
+
assertEquals('first param not set correctly', 1, stm.params[0]);
|
32
|
+
assertEquals('second param not set correctly', 2, stm.params[1]);
|
33
|
+
}
|
34
|
+
|
35
|
+
function testConstructStatement() {
|
36
|
+
var stm = new google.wspl.Statement('foo');
|
37
|
+
assertEquals('statement not set correctly', 'foo', stm.sql);
|
38
|
+
|
39
|
+
var stm = new google.wspl.Statement('bar', [1,2]);
|
40
|
+
subStatementTest(stm);
|
41
|
+
}
|
42
|
+
|
43
|
+
function testConstructStatementFromTemplate() {
|
44
|
+
var temp = new google.wspl.Statement('bar');
|
45
|
+
var stm = temp.createStatement([1,2]);
|
46
|
+
subStatementTest(stm);
|
47
|
+
}
|
48
|
+
|
49
|
+
</script>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2009 Google Inc.
|
3
|
+
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
you may not use this file except in compliance with the License.
|
6
|
+
You may obtain a copy of the License at
|
7
|
+
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
See the License for the specific language governing permissions and
|
14
|
+
limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview A Gears implementation of dbwrapperapi ResultSet.
|
19
|
+
*/
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Creates a Gears ResultSet object.
|
23
|
+
* @see google.wspl.ResultSet#ResultSet
|
24
|
+
*
|
25
|
+
* @constructor
|
26
|
+
* @extends google.wspl.ResultSet
|
27
|
+
* @param {!Array.<Object>} resultArray An array of hash objects where the
|
28
|
+
* column names in the query are used as members of the objects.
|
29
|
+
*/
|
30
|
+
google.wspl.gears.ResultSet = function(resultArray) {
|
31
|
+
google.wspl.ResultSet.call(this);
|
32
|
+
|
33
|
+
/**
|
34
|
+
* The result set as an array of hash objects.
|
35
|
+
* @type {!Array.<Object>}
|
36
|
+
* @private
|
37
|
+
*/
|
38
|
+
this.resultArray_ = resultArray;
|
39
|
+
};
|
40
|
+
google.inherits(google.wspl.gears.ResultSet, google.wspl.ResultSet);
|
41
|
+
|
42
|
+
/**
|
43
|
+
* The current record in the result set.
|
44
|
+
* @type {number}
|
45
|
+
* @private
|
46
|
+
*/
|
47
|
+
google.wspl.gears.ResultSet.prototype.current_ = 0;
|
48
|
+
|
49
|
+
/**
|
50
|
+
* @see google.wspl.ResultSet#isValidRow
|
51
|
+
* @inheritDoc
|
52
|
+
*/
|
53
|
+
google.wspl.gears.ResultSet.prototype.isValidRow = function() {
|
54
|
+
return this.current_ < this.resultArray_.length;
|
55
|
+
};
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @see google.wspl.ResultSet#next
|
59
|
+
* @inheritDoc
|
60
|
+
*/
|
61
|
+
google.wspl.gears.ResultSet.prototype.next = function() {
|
62
|
+
this.current_++;
|
63
|
+
};
|
64
|
+
|
65
|
+
/**
|
66
|
+
* @see google.wspl.ResultSet#getRow
|
67
|
+
* @inheritDoc
|
68
|
+
*/
|
69
|
+
google.wspl.gears.ResultSet.prototype.getRow = function() {
|
70
|
+
return this.resultArray_[this.current_];
|
71
|
+
};
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<!--
|
3
|
+
Copyright 2009 Google Inc.
|
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
|
+
<html>
|
19
|
+
<head>
|
20
|
+
<title>Gears resultset tests</title>
|
21
|
+
<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
|
22
|
+
<script type="text/javascript" src="jsmock.js"></script>
|
23
|
+
<script type="text/javascript" src="global_functions.js"></script>
|
24
|
+
<script type="text/javascript" src="dbwrapperapi.js"></script>
|
25
|
+
<script type="text/javascript" src="gears_resultset.js"></script>
|
26
|
+
</head>
|
27
|
+
<body>
|
28
|
+
<script type='text/javascript'>
|
29
|
+
|
30
|
+
var resultArray;
|
31
|
+
|
32
|
+
function setUp() {
|
33
|
+
var obj1 = {
|
34
|
+
field1: 'a',
|
35
|
+
field2: 2,
|
36
|
+
field3: 'c'
|
37
|
+
};
|
38
|
+
|
39
|
+
var obj2 = {
|
40
|
+
field1: 'd',
|
41
|
+
field2: 4,
|
42
|
+
field3: 'f'
|
43
|
+
};
|
44
|
+
|
45
|
+
var obj3 = {
|
46
|
+
field1: 'g',
|
47
|
+
field2: 6,
|
48
|
+
field3: 'i'
|
49
|
+
};
|
50
|
+
|
51
|
+
resultArray = [obj1, obj2, obj3];
|
52
|
+
}
|
53
|
+
|
54
|
+
function testResultSetNext() {
|
55
|
+
var result = new google.wspl.gears.ResultSet(resultArray);
|
56
|
+
assertEquals('incorrect value for current', 0, result.current_);
|
57
|
+
result.next();
|
58
|
+
assertEquals('incorrect value for current', 1, result.current_);
|
59
|
+
result.next();
|
60
|
+
assertEquals('incorrect value for current', 2, result.current_);
|
61
|
+
}
|
62
|
+
|
63
|
+
function testResultSetIsValidRow() {
|
64
|
+
var result = new google.wspl.gears.ResultSet(resultArray);
|
65
|
+
assertTrue('incorrect return from isValidRow', result.isValidRow());
|
66
|
+
result.next();
|
67
|
+
assertTrue('incorrect return from isValidRow', result.isValidRow());
|
68
|
+
result.next();
|
69
|
+
assertTrue('incorrect return from isValidRow', result.isValidRow());
|
70
|
+
result.next();
|
71
|
+
assertFalse('incorrect return from isValidRow', result.isValidRow());
|
72
|
+
}
|
73
|
+
|
74
|
+
function testResultSetGetRow() {
|
75
|
+
var result = new google.wspl.gears.ResultSet(resultArray);
|
76
|
+
result.next();
|
77
|
+
|
78
|
+
var row = result.getRow();
|
79
|
+
assertEquals('first field is not valid', 'd', row.field1);
|
80
|
+
assertEquals('first field is not valid', 4, row.field2);
|
81
|
+
assertEquals('first field is not valid', 'f', row.field3);
|
82
|
+
}
|
83
|
+
|
84
|
+
</script>
|
85
|
+
</body>
|
86
|
+
</html>
|
@@ -0,0 +1,196 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2009 Google Inc.
|
3
|
+
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
you may not use this file except in compliance with the License.
|
6
|
+
You may obtain a copy of the License at
|
7
|
+
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
See the License for the specific language governing permissions and
|
14
|
+
limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @fileoverview A Gears implementation of dbwrapperapi Transaction.
|
19
|
+
*/
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Creates a Gears Transaction object.
|
23
|
+
* @see google.wspl.ResultSet#ResultSet
|
24
|
+
*
|
25
|
+
* @constructor
|
26
|
+
* @extends google.wspl.Transaction
|
27
|
+
*
|
28
|
+
* @param {number} id The unique id for this transaction
|
29
|
+
* @param {google.wspl.gears.Database} db The Gears implementation of the
|
30
|
+
* dbwrapperapi database
|
31
|
+
*/
|
32
|
+
google.wspl.gears.Transaction = function(id, db) {
|
33
|
+
google.wspl.Transaction.call(this);
|
34
|
+
|
35
|
+
/**
|
36
|
+
* The unique id for this transaction.
|
37
|
+
* @type {number}
|
38
|
+
* @private
|
39
|
+
*/
|
40
|
+
this.id_ = id;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* The Gears implementation of the dbwrapperapi database.
|
44
|
+
* @type {google.wspl.gears.Database}
|
45
|
+
* @private
|
46
|
+
*/
|
47
|
+
this.db_ = db;
|
48
|
+
|
49
|
+
/**
|
50
|
+
* A map of statements, callback, and current statement.
|
51
|
+
* @type {Object}
|
52
|
+
* @private
|
53
|
+
*/
|
54
|
+
this.activeExecutes_ = {};
|
55
|
+
};
|
56
|
+
google.inherits(google.wspl.gears.Transaction, google.wspl.Transaction);
|
57
|
+
|
58
|
+
/**
|
59
|
+
* The number of active executes.
|
60
|
+
* @type {number}
|
61
|
+
* @private
|
62
|
+
*/
|
63
|
+
google.wspl.gears.Transaction.prototype.numActiveExecutes_ = 0;
|
64
|
+
|
65
|
+
/**
|
66
|
+
* The id for the next call to execute. Incremented after use.
|
67
|
+
* @type {number}
|
68
|
+
* @private
|
69
|
+
*/
|
70
|
+
google.wspl.gears.Transaction.prototype.nextCallbackId_ = 1;
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Whether the transaction should be rolled back or not. This property is set
|
74
|
+
* to true when a statement fails.
|
75
|
+
* @type {boolean}
|
76
|
+
* @private
|
77
|
+
*/
|
78
|
+
google.wspl.gears.Transaction.prototype.needsRollback_ = false;
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Begins a new transaction with the Gears database. Commits the transaction if
|
82
|
+
* all calls to executeAll for this transaction have finished receiving
|
83
|
+
* callbacks. Rolls the transaction back if a statement failed.
|
84
|
+
*
|
85
|
+
* @see google.wspl.Transaction#executeAll
|
86
|
+
* @inheritDoc
|
87
|
+
*/
|
88
|
+
google.wspl.gears.Transaction.prototype.executeAll = function(statements,
|
89
|
+
opt_callback) {
|
90
|
+
if (statements.length == 0) {
|
91
|
+
throw Error('Possibly silly attempt to execute empty statement list.');
|
92
|
+
}
|
93
|
+
if (this.numActiveExecutes_ == 0) {
|
94
|
+
this.db_.doBegin(this.id_);
|
95
|
+
}
|
96
|
+
|
97
|
+
this.numActiveExecutes_++;
|
98
|
+
var callbackId = this.nextCallbackId_++;
|
99
|
+
|
100
|
+
var callback = opt_callback || {
|
101
|
+
onSuccess : function() {},
|
102
|
+
onFailure : function() {}
|
103
|
+
};
|
104
|
+
|
105
|
+
this.activeExecutes_[callbackId] = {
|
106
|
+
statements: statements,
|
107
|
+
currentStatement: 0,
|
108
|
+
callback: callback
|
109
|
+
};
|
110
|
+
|
111
|
+
this.db_.doExecute(statements, callbackId, this.id_);
|
112
|
+
};
|
113
|
+
|
114
|
+
/**
|
115
|
+
* Invokes onSuccess on the specified callback.
|
116
|
+
*
|
117
|
+
* @param {google.wspl.ResultSet} result The result of a successful statement
|
118
|
+
* @param {number} callbackId The callback to invoke
|
119
|
+
*/
|
120
|
+
google.wspl.gears.Transaction.prototype.success = function(result,
|
121
|
+
callbackId) {
|
122
|
+
if (!this.needsRollback_) {
|
123
|
+
var activeExecute = this.activeExecutes_[callbackId];
|
124
|
+
activeExecute.callback.onSuccess(this, result);
|
125
|
+
}
|
126
|
+
this.endStatement_(callbackId);
|
127
|
+
};
|
128
|
+
|
129
|
+
/**
|
130
|
+
* Invokes onFailure on the specified callback.
|
131
|
+
*
|
132
|
+
* @param {Error} error The error of an unsuccessful statement
|
133
|
+
* @param {number} callbackId The callback to invoke
|
134
|
+
*/
|
135
|
+
google.wspl.gears.Transaction.prototype.failure = function(error,
|
136
|
+
callbackId) {
|
137
|
+
if (!this.needsRollback_) {
|
138
|
+
this.needsRollback_ = true;
|
139
|
+
var activeExecute = this.activeExecutes_[callbackId];
|
140
|
+
activeExecute.callback.onFailure(error);
|
141
|
+
}
|
142
|
+
this.endStatement_(callbackId);
|
143
|
+
};
|
144
|
+
|
145
|
+
/**
|
146
|
+
* Handles clean up for the end of a single execution.
|
147
|
+
*
|
148
|
+
* @param {number} callbackId The callback to clean up.
|
149
|
+
* @private
|
150
|
+
*/
|
151
|
+
google.wspl.gears.Transaction.prototype.endStatement_ = function(callbackId) {
|
152
|
+
var activeExecute = this.activeExecutes_[callbackId];
|
153
|
+
var statements = activeExecute.statements;
|
154
|
+
var currentStatement = ++activeExecute.currentStatement;
|
155
|
+
|
156
|
+
if (currentStatement == statements.length) {
|
157
|
+
this.endExecute_(callbackId);
|
158
|
+
}
|
159
|
+
};
|
160
|
+
|
161
|
+
/**
|
162
|
+
* Handles clean up for the end of a call to executeAll. Performs a commit or
|
163
|
+
* rollback if this is the last active execute to clean up.
|
164
|
+
*
|
165
|
+
* @param {number} callbackId The callback to clean up
|
166
|
+
* @private
|
167
|
+
*/
|
168
|
+
google.wspl.gears.Transaction.prototype.endExecute_ = function(callbackId) {
|
169
|
+
delete this.activeExecutes_[callbackId];
|
170
|
+
this.numActiveExecutes_--;
|
171
|
+
if (!this.isExecuting()) {
|
172
|
+
this.endTransaction_();
|
173
|
+
}
|
174
|
+
};
|
175
|
+
|
176
|
+
/**
|
177
|
+
* Instructs the worker to commit the transaction or roll it back if a failure
|
178
|
+
* occurred and a rollback is required.
|
179
|
+
*
|
180
|
+
* @private
|
181
|
+
*/
|
182
|
+
google.wspl.gears.Transaction.prototype.endTransaction_ = function() {
|
183
|
+
if (this.needsRollback_) {
|
184
|
+
this.db_.doRollback(this.id_);
|
185
|
+
} else {
|
186
|
+
this.db_.doCommit(this.id_);
|
187
|
+
}
|
188
|
+
};
|
189
|
+
|
190
|
+
/**
|
191
|
+
* @return {boolean} True if the transaction has statements executing, false
|
192
|
+
* otherwise.
|
193
|
+
*/
|
194
|
+
google.wspl.gears.Transaction.prototype.isExecuting = function() {
|
195
|
+
return this.numActiveExecutes_ > 0;
|
196
|
+
};
|