1 | (function() {
|
2 | 'use strict';
|
3 |
|
4 | window.Ractive.bootstrap = function(callback) {
|
5 | function _inScope(element, rvRequireCount) {
|
6 | rvRequireCount = rvRequireCount || 0;
|
7 |
|
8 | if (!element.parentNode) {
|
9 | return true;
|
10 | }
|
11 |
|
12 | var tag = element.parentNode.tagName.toLowerCase();
|
13 |
|
14 | if (tag == 'rv-require') {
|
15 | rvRequireCount++;
|
16 |
|
17 | if (rvRequireCount > 1) {
|
18 | return false;
|
19 | }
|
20 | }
|
21 | else if (tag == 'rv-partial') {
|
22 | return false;
|
23 | }
|
24 |
|
25 | return _inScope(element.parentNode, rvRequireCount);
|
26 | }
|
27 |
|
28 | $(function() {
|
29 | var partials = {},
|
30 | $cleaner = $('<div />').append($('body').html());
|
31 |
|
32 | $cleaner.find('script[type="text/javascript"]').remove();
|
33 |
|
34 | var $rvPartials = $cleaner.find('rv-partial');
|
35 |
|
36 | $rvPartials.each(function(i, rvPartial) {
|
37 | var src = rvPartial.getAttribute('src') || false,
|
38 | target = rvPartial.getAttribute('target');
|
39 |
|
40 | if (!src && target && _inScope(rvPartial)) {
|
41 | partials[target] = $.trim(rvPartial.innerHTML);
|
42 | }
|
43 | });
|
44 |
|
45 | $rvPartials.remove();
|
46 |
|
47 | var page = new window.Ractive({
|
48 | plName: 'pl-page',
|
49 | el: 'body',
|
50 | data: {
|
51 | cls: []
|
52 | },
|
53 | template: $.trim($cleaner.html()),
|
54 | partials: partials
|
55 | });
|
56 |
|
57 | page.observe('cls', function(cls) {
|
58 | $(page.el).attr('class', cls ? cls.join(' ') : '');
|
59 | });
|
60 |
|
61 | if (callback) {
|
62 | callback(page);
|
63 | }
|
64 | });
|
65 | };
|
66 |
|
67 | })();
|