golf 0.5.6 → 0.5.7

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.
@@ -1,3 +1,3 @@
1
1
  module Golf
2
- VERSION = "0.5.6"
2
+ VERSION = "0.5.7"
3
3
  end
@@ -1,30 +1,28 @@
1
1
  (function($) {
2
2
 
3
3
  function toJson(obj) {
4
- switch (typeof obj) {
5
- case 'object':
6
- if (obj) {
7
- var list = [];
8
- if (obj instanceof Array) {
9
- for (var i=0;i < obj.length;i++) {
10
- list.push(toJson(obj[i]));
11
- }
12
- return '[' + list.join(',') + ']';
13
- } else {
14
- for (var prop in obj) {
15
- list.push('"' + prop + '":' + toJson(obj[prop]));
16
- }
17
- return '{' + list.join(',') + '}';
18
- }
19
- } else {
20
- return 'null';
21
- }
22
- case 'string':
23
- return '"' + obj.replace(/(["'])/g, '\\$1') + '"';
24
- case 'number':
25
- case 'boolean':
26
- return new String(obj);
27
- }
4
+ switch (typeof obj) {
5
+ case 'object':
6
+ if (obj) {
7
+ var list = [];
8
+ if (obj instanceof Array) {
9
+ for (var i=0;i < obj.length;i++)
10
+ list.push(toJson(obj[i]));
11
+ return '[' + list.join(',') + ']';
12
+ } else {
13
+ for (var prop in obj)
14
+ list.push('"' + prop + '":' + toJson(obj[prop]));
15
+ return '{' + list.join(',') + '}';
16
+ }
17
+ } else {
18
+ return 'null';
19
+ }
20
+ case 'string':
21
+ return '"' + obj.replace(/(["'])/g, '\\$1') + '"';
22
+ case 'number':
23
+ case 'boolean':
24
+ return new String(obj);
25
+ }
28
26
  }
29
27
 
30
28
  function Component() {
@@ -36,6 +34,9 @@ function Component() {
36
34
  this.show = function() {
37
35
  this._dom.show(Array.prototype.slice.call(arguments));
38
36
  };
37
+ this.toggle = function() {
38
+ this._dom.toggle(Array.prototype.slice.call(arguments));
39
+ };
39
40
  }
40
41
 
41
42
  function Debug(prefix) {
@@ -400,6 +401,25 @@ function componentConstructor(name) {
400
401
  obj.require = $fake.require;
401
402
  obj.$ = $fake;
402
403
  checkForReservedClass(obj._dom.children().find("*"));
404
+
405
+ // find <component> elements and replace them w/components
406
+ obj._dom.find("component").each(function(i,v) {
407
+ var jself = $(v), type, ref, argv, c, i, attrs, attr;
408
+ for (i=0,attrs=v.attributes,argv={};i<attrs.length;i++) {
409
+ attr = attrs.item(i);
410
+ switch (attr.nodeName) {
411
+ case "new": type = attr.nodeValue; break;
412
+ case "ref": ref = attr.nodeValue; break;
413
+ default: argv[attr.nodeName]=attr.nodeValue;
414
+ }
415
+ }
416
+ eval("c = Component."+type);
417
+ c = new c(argv);
418
+ jself.replaceWith(c);
419
+ if (ref)
420
+ obj[ref] = c;
421
+ });
422
+
403
423
  doCall(obj, $fake, $fake, argv, cmp.js, Debug(name));
404
424
  obj._dom.removeData("_golf_constructing");
405
425
  jss.mark(obj._dom.children().eq(0));
@@ -444,6 +464,13 @@ window.Component = Component;
444
464
  };
445
465
  })($.fn.bind);
446
466
 
467
+ function doOnAppend(cmp) {
468
+ if (!cmp.didOnAppend) {
469
+ cmp.didOnAppend = true;
470
+ cmp.onAppend();
471
+ }
472
+ }
473
+
447
474
  $.each(
448
475
  [
449
476
  "append",
@@ -468,10 +495,14 @@ window.Component = Component;
468
495
  $("*", e).each(function(index, elem) {
469
496
  var cmp = $(elem).data("_golf_component");
470
497
  if (cmp instanceof Component && cmp.onAppend)
471
- cmp.onAppend();
498
+ doOnAppend(cmp);
472
499
  });
473
- if (a instanceof Component && a.onAppend)
474
- a.onAppend();
500
+ if (a instanceof Component) {
501
+ // run onAppend event handler if one is defined
502
+ if (a.onAppend)
503
+ doOnAppend(a);
504
+ }
505
+
475
506
  return $(this);
476
507
  };
477
508
  }
@@ -482,8 +513,12 @@ window.Component = Component;
482
513
  var cmps = [];
483
514
  $("*", this).add([this]).each(function(index, elem) {
484
515
  var cmp = $(elem).data("_golf_component");
485
- if (cmp)
516
+ // save component<->dom mapping and remove onAppend flag
517
+ if (cmp) {
486
518
  cmps.push({component: cmp, dom: elem});
519
+ // this will cause onAppend to run on next insertion into the dom
520
+ cmp.didOnAppend = false;
521
+ }
487
522
  if ($(this).attr("golfid"))
488
523
  $.golf.events[$(this).attr("golfid")] = [];
489
524
  });
@@ -616,18 +651,14 @@ $.golf = {
616
651
  return $.golf.location.hash;
617
652
  },
618
653
 
619
- htmlEncode: function(text) {
620
- return text.replace(/&/g, "&amp;")
621
- .replace(/</g, "&lt;")
622
- .replace(/>/g, "&gt;")
623
- .replace(/"/g, "&quot;");
624
- },
625
-
626
- addComponent: function(cmp) {
654
+ createComponent: function(cmp) {
655
+ // create dom elements from html source
627
656
  cmp.html = $("<div/>")._golf_append(
628
657
  $(cmp.html)._golf_addClass("component")
629
658
  ._golf_addClass(cmp.name.replace(".", "-"))
630
659
  );
660
+
661
+ // strip off the wrapper div and set component dom elements
631
662
  cmp.dom = $(cmp.html.html());
632
663
 
633
664
  var m, pkg;
@@ -658,7 +689,7 @@ $.golf = {
658
689
 
659
690
  d("Loading components/ directory...");
660
691
  for (name in $.golf.components)
661
- $.golf.addComponent($.golf.components[name]);
692
+ $.golf.createComponent($.golf.components[name]);
662
693
 
663
694
  if (!window.forcebot) {
664
695
  d("Loading styles/ directory...");
metadata CHANGED
@@ -1,8 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: golf
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.5.6
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 5
8
+ - 7
9
+ version: 0.5.7
6
10
  platform: ruby
7
11
  authors:
8
12
  - Micha Niskin, Alan Dipert, Julio Capote
@@ -10,7 +14,7 @@ autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
16
 
13
- date: 2011-04-14 00:00:00 -07:00
17
+ date: 2011-04-15 00:00:00 -04:00
14
18
  default_executable:
15
19
  dependencies:
16
20
  - !ruby/object:Gem::Dependency
@@ -21,6 +25,8 @@ dependencies:
21
25
  requirements:
22
26
  - - ">="
23
27
  - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
24
30
  version: "0"
25
31
  type: :runtime
26
32
  version_requirements: *id001
@@ -32,6 +38,8 @@ dependencies:
32
38
  requirements:
33
39
  - - ">="
34
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
35
43
  version: "0"
36
44
  type: :runtime
37
45
  version_requirements: *id002
@@ -43,6 +51,8 @@ dependencies:
43
51
  requirements:
44
52
  - - ">="
45
53
  - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
46
56
  version: "0"
47
57
  type: :runtime
48
58
  version_requirements: *id003
@@ -54,6 +64,8 @@ dependencies:
54
64
  requirements:
55
65
  - - ">="
56
66
  - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
57
69
  version: "0"
58
70
  type: :runtime
59
71
  version_requirements: *id004
@@ -216,19 +228,59 @@ required_ruby_version: !ruby/object:Gem::Requirement
216
228
  requirements:
217
229
  - - ">="
218
230
  - !ruby/object:Gem::Version
231
+ segments:
232
+ - 0
219
233
  version: "0"
220
234
  required_rubygems_version: !ruby/object:Gem::Requirement
221
235
  none: false
222
236
  requirements:
223
237
  - - ">="
224
238
  - !ruby/object:Gem::Version
239
+ segments:
240
+ - 0
225
241
  version: "0"
226
242
  requirements: []
227
243
 
228
244
  rubyforge_project: golf
229
- rubygems_version: 1.6.1
245
+ rubygems_version: 1.3.7
230
246
  signing_key:
231
247
  specification_version: 3
232
248
  summary: Component based front end JS Framework
233
- test_files: []
234
-
249
+ test_files:
250
+ - test/reference_app/golfapp/components.js
251
+ - test/reference_app/golfapp/components/HelloWorld/HelloWorld.css
252
+ - test/reference_app/golfapp/components/HelloWorld/HelloWorld.html
253
+ - test/reference_app/golfapp/components/HelloWorld/HelloWorld.js
254
+ - test/reference_app/golfapp/components/golf/cart/Admin/Admin.html
255
+ - test/reference_app/golfapp/components/golf/cart/Cart/Cart.html
256
+ - test/reference_app/golfapp/components/golf/cart/Product/Product.html
257
+ - test/reference_app/golfapp/components/golf/cart/ProductListing/ProductListing.html
258
+ - test/reference_app/golfapp/components/golf/cart/Store/Store.html
259
+ - test/reference_app/golfapp/controller.js
260
+ - test/reference_app/golfapp/img/ Timer & Non-Stick.jpeg
261
+ - test/reference_app/golfapp/img/134lines.jpeg
262
+ - test/reference_app/golfapp/img/Q33 Sail Plan.jpeg
263
+ - test/reference_app/golfapp/img/a/asdf
264
+ - test/reference_app/golfapp/img/a/b/c/zxcv
265
+ - test/reference_app/golfapp/img/a/b/qwer
266
+ - test/reference_app/golfapp/img/em> - Brushed Stainless Steel.jpeg
267
+ - test/reference_app/golfapp/img/em> - White.jpeg
268
+ - test/reference_app/golfapp/img/em> Broil CTO7100B.jpeg
269
+ - test/reference_app/golfapp/img/em> Broiler - Stainless.jpeg
270
+ - test/reference_app/golfapp/img/em> with Countdo.jpeg
271
+ - test/reference_app/golfapp/img/em> with Element IQ.jpeg
272
+ - test/reference_app/golfapp/img/em> with OneTouch ...jpeg
273
+ - test/reference_app/golfapp/img/em> with Pizza.jpeg
274
+ - test/reference_app/golfapp/img/em>-1.jpeg
275
+ - test/reference_app/golfapp/img/em>-2.jpeg
276
+ - test/reference_app/golfapp/img/em>-3.jpeg
277
+ - test/reference_app/golfapp/img/em>-Black.jpeg
278
+ - test/reference_app/golfapp/img/em>.jpeg
279
+ - test/reference_app/golfapp/img/unnamed.jpeg
280
+ - test/reference_app/golfapp/plugins/mylib.js
281
+ - test/reference_app/golfapp/scripts/00-myscript.js
282
+ - test/reference_app/golfapp/scripts/01-jquery.tmpl.js
283
+ - test/reference_app/golfapp/styles/main.css
284
+ - test/test_compiler.rb
285
+ - test/test_helper.rb
286
+ - test/test_rack.rb