Merge lp:~knitzsche/ubuntu-html5-theme/ubuntu-html5-theme-yuidoc into lp:~ubuntu-html5-theme-devs/ubuntu-html5-theme/ambiance

Proposed by Kyle Nitzsche
Status: Merged
Approved by: Kyle Nitzsche
Approved revision: 94
Merged at revision: 91
Proposed branch: lp:~knitzsche/ubuntu-html5-theme/ubuntu-html5-theme-yuidoc
Merge into: lp:~ubuntu-html5-theme-devs/ubuntu-html5-theme/ambiance
Diff against target: 2601 lines (+2164/-50)
31 files modified
0.1/ambiance/js/buttons.js (+23/-1)
0.1/ambiance/js/core.js (+113/-2)
0.1/ambiance/js/dialogs.js (+35/-1)
0.1/ambiance/js/header.js (+65/-0)
0.1/ambiance/js/list.js (+64/-40)
0.1/ambiance/js/page.js (+62/-0)
0.1/ambiance/js/pagestacks.js (+72/-2)
0.1/ambiance/js/popovers.js (+46/-1)
0.1/ambiance/js/shape.js (+59/-0)
0.1/ambiance/js/tabs.js (+33/-2)
0.1/ambiance/js/toolbars.js (+47/-1)
0.1/ambiance/js/yuidoc-theme/assets/css/main.css (+429/-0)
0.1/ambiance/js/yuidoc-theme/assets/js/tabs.js (+67/-0)
0.1/ambiance/js/yuidoc-theme/assets/js/yui-prettify.js (+44/-0)
0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/CHANGES.html (+130/-0)
0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/COPYING (+202/-0)
0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/README.html (+203/-0)
0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.css (+1/-0)
0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.js (+28/-0)
0.1/ambiance/js/yuidoc-theme/layouts/main.handlebars (+38/-0)
0.1/ambiance/js/yuidoc-theme/partials/attrs.handlebars (+23/-0)
0.1/ambiance/js/yuidoc-theme/partials/classes.handlebars (+73/-0)
0.1/ambiance/js/yuidoc-theme/partials/events.handlebars (+35/-0)
0.1/ambiance/js/yuidoc-theme/partials/files.handlebars (+6/-0)
0.1/ambiance/js/yuidoc-theme/partials/index.handlebars (+54/-0)
0.1/ambiance/js/yuidoc-theme/partials/method.handlebars (+56/-0)
0.1/ambiance/js/yuidoc-theme/partials/module.handlebars (+28/-0)
0.1/ambiance/js/yuidoc-theme/partials/props.handlebars (+10/-0)
0.1/ambiance/js/yuidoc-theme/partials/sidebar.handlebars (+105/-0)
0.1/ambiance/js/yuidoc-theme/theme.json (+4/-0)
0.1/ambiance/js/yuidoc.json (+9/-0)
To merge this branch: bzr merge lp:~knitzsche/ubuntu-html5-theme/ubuntu-html5-theme-yuidoc
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
David Barth Approve
Adnane Belmadiaf Needs Fixing
Review via email: mp+192213@code.launchpad.net

Description of the change

This MR does three main things:
1) Implements yuidoc comments in all js files to support API doc generation, and provides yuidoc assets (theme dir and json file) needed to build the API docs. Bug LP: #1241029
3) Provides JS classes for shape and page with corresponding UbuntuUI prototype constructor functions. Bug LP: #1243248
4) Adds a getEl(UbuntuUIObject) to return the element for any Ubuntu class. Also LP: #1243248

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

I am uncertain whether I need to do something to address the ps-jenkins failure reported above...

Revision history for this message
Adnane Belmadiaf (daker) wrote :

The header part is a dup of tabs.js, tabs so we can match SDK name http://developer.ubuntu.com/api/qml/sdk-1.0/Ubuntu.Components.Tabs/

The tabs example :

<li class="active" data-role="tab">
    <a href="#item1" id="firstTab">First</a>
</li>

so here item1 is the ID of the page you want to display

review: Needs Fixing
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

Hi Adnane. It seems to me there are a few goals here:
1) Provide a place in the JS source for documenting how *every* Ubuntu HTML element is declared in HTML. (bug 1243248).
2) Provide an API landing page for each of the design.ubuntu.com Building Block pages. Design has pages for Header and Tabs: http://design.ubuntu.com/apps/building-blocks/header http://design.ubuntu.com/apps/building-blocks/tabs

So the MR adds the UbuntUI header proptotype, even though it doesn't currently give coders much. It DOES give the documentation a single view of all HTML declarations though (implementation is still incomplete).

Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

This discussion gives me a chance to clarify my intent with this: I think we need a class for every Ubuntu HTML "widget" usually, (but unfortunately not always) defined by existence of a data-role attribute. These classes then can form the framework for documenting the system (including HTML declarations) AND they provide a comprehensive framework for accessing every Ubuntu widget through JS. So these classes are useful even when there are no class specific functions, as is the case right now with both tabs and header classes.

Revision history for this message
Adnane Belmadiaf (daker) wrote :

I see your point, so +1 from me but please fix the tabs example :

<li class="active" data-role="tab">
    <a href="#item1" id="firstTab">First</a>
</li>

here item1 is the ID of the page you want to display

review: Needs Fixing
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

The reason I have not explained that the href is supposed to be the id attribute of the page you want to display when the user clicks the Tab is that I cannot make it work myself. So let's clarify the expectations and file a bug as needed.

Suppose there is html like this and no additional app javascript to handle tab/anchor click events:
    <header data-role="header">
        <nav data-role="navbar" class="tabs" >
          <div class="tabs-inner">
            <ul>
            <li class="active" role="tab">
              <a href="#" class="tab-item">My Header</a>
            </li>
            <li class="active" role="tab">
              <a href="page2" class="tab-item">Page 2</a>
            </li>
            </ul>
          </div>
        </nav>
      </header>

      <div data-role="content">

        <div data-role="pagestack">

          <div data-role="page" id="main">
[...]
          </div>

          <div data-role="page" id="page2">
          <h1>Hello from page2</h1>
          <section data-role="list" id="item-view-content">
          </section>

        </div>

When you click the second Header Tab ("Page 2"), it does *not* cause page2 to display. I assume the expectation is that page2 DOES display.

Perhaps my expectation is incorrect? If so, am I doing wrong, or is this a bug (I don't see it).

If my understanding is correct, I certainly can document it here ASAP, but there should be a bug filed I suppose...

Revision history for this message
Adnane Belmadiaf (daker) wrote :
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

OK, pushed the built docs from this branch. Now using "latest" dir name:
http://people.canonical.com/~knitzsche/yuidoc-ubuntu-html5-theme/latest/

Revision history for this message
David Barth (dbarth) wrote :

The documentation is comprehensive and a very nice addition to the project. +1 for me.

I'll let you guys handle typos and updates in this MR, or as a set of bugs.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Kyle Nitzsche (knitzsche) wrote :

I am having trouble figuring out what the continuous integration failure just above means and what, if anything, I need to do to fix it.

Can someone please advise?

94. By Kyle Nitzsche

Continuous Integration failures were apparently caused by missing copyright
information in three files that I copied from the yudiuoc 'simple' theme
(which I have now customized a little form Ubuntu). The Yuidoc install root
dir has a LICENSE file that states copyright and redistribution terms.
I have copied that text into the three files in this version of the simple
theme directory.

Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '0.1/ambiance/js/buttons.js'
2--- 0.1/ambiance/js/buttons.js 2013-10-19 12:21:19 +0000
3+++ 0.1/ambiance/js/buttons.js 2013-11-01 20:18:13 +0000
4@@ -20,12 +20,34 @@
5 * <http://www.gnu.org/licenses/>.
6 */
7
8-/* Buttons */
9+/**
10+ * A Button.
11+
12+ Note the Ubuntu CSS style classes: <em>success</em>, <em>warning</em>, and <em>danger</em>
13+
14+ * @class Button
15+ * @constructor
16+ * @namespace UbuntuUI
17+ * @example
18+ <button data-role="button" id="buttonID">text</button>
19+
20+ Javascript access:
21+ var button = UI.button("buttonID");
22+ */
23 var Button = function (id) {
24 this.id = id;
25 };
26
27 Button.prototype = {
28+ /**
29+ * Associate a function with the button's Click event
30+ * @method click
31+ * @param {Function} callback - The function to execute on click
32+ * @example
33+ UI.button("buttonid").click(function(){
34+ console.log("clicked");
35+ });
36+ */
37 click: function (callback) {
38 if ( ! document.getElementById(this.id)) {
39 throw "Invalid button ID: " + String(this.id);
40
41=== modified file '0.1/ambiance/js/core.js'
42--- 0.1/ambiance/js/core.js 2013-09-12 21:32:09 +0000
43+++ 0.1/ambiance/js/core.js 2013-11-01 20:18:13 +0000
44@@ -20,6 +20,24 @@
45 * <http://www.gnu.org/licenses/>
46 */
47
48+/**
49+ * @module UbuntuUI
50+ */
51+
52+/**
53+ * UbuntuUI is the critical Ubuntu HTML5 framework class. You need to construct an UbuntuUI object and initialize it to have an Ubuntu HTML5 app. You then use this object to access Ubuntu HTML5 objects (and object methods) that correspond to the Ubuntu HTML5 DOM elements.
54+
55+Note: The UbuntuUI object is "UI" in all API doc examples.
56+ * @class UbuntuUI
57+ * @constructor
58+ * @example
59+ var UI = new UbuntuUI();
60+ window.onload = function () {
61+ UI.init();
62+ UI.pagestack.push('pageid');
63+ [...]
64+ };
65+ */
66 var UbuntuUI = (function () {
67
68 PAGESTACK_BACK_ID = 'ubuntu-pagestack-back';
69@@ -142,28 +160,93 @@
70 }
71 },
72
73+ /**
74+ * Required call that initializes the UbuntuUI object
75+ * @method {} init
76+ */
77 init: function () {
78 this.__setupPage(document);
79 },
80
81+ /**
82+ * Gets an Ubuntu Page object
83+ * @method page
84+ * @param {ID} id - The element's id attrubute
85+ * @return {Page} - The Page with the specified id
86+ */
87+ page: function (id) {
88+ if (typeof Page != 'undefined' && Page ) {
89+ return new Page(id);
90+ }
91+ },
92+
93+ /**
94+ * Gets an Ubuntu Shape object
95+ * @method shape
96+ * @param {ID} id - The element's id attrubute
97+ * @return {Shape} - The Shape with the specified id
98+ */
99+ shape: function (id) {
100+ if (typeof Shape != 'undefined' && Shape ) {
101+ return new Shape(id);
102+ }
103+ },
104+
105+ /**
106+ * Gets an Ubuntu Button object
107+ * @method button
108+ * @param {ID} id - The element's id attrubute
109+ * @return {Button} - The Button with the specified id
110+ */
111 button: function (id) {
112 if (typeof Button != 'undefined' && Button) {
113 return new Button(id);
114 }
115 },
116
117+ /**
118+ * Gets an Ubuntu Dialog object
119+ * @method dialog
120+ * @param {ID} id - The element's id attrubute
121+ * @return {Dialog} - The Dialog with the specified id
122+ */
123 dialog: function (id) {
124 if (typeof Dialog != 'undefined' && Dialog) {
125 return new Dialog(id);
126 }
127 },
128
129+ /**
130+ * Gets an Ubuntu Popover object
131+ * @method popover
132+ * @param {Element} el - The element to which the Popover's position is relative
133+ * @param {ID} id - The element's id attrubute
134+ * @return {Popover} - The Popover with the specified id
135+ */
136 popover: function (elem, id) {
137 if (typeof Popover != 'undefined' && Popover) {
138 return new Popover(elem, id);
139 }
140 },
141
142+ /**
143+ * Gets an Ubuntu Header object
144+ * @method header
145+ * @param {ID} id - The element's id attrubute
146+ * @return {Header} - The Header with the specified id
147+ */
148+ header: function (id) {
149+ if (typeof Header != 'undefined' && Header) {
150+ return new Header(id);
151+ }
152+ },
153+
154+ /**
155+ * Gets an Ubuntu Tabs object
156+ * @method tabs
157+ * @param {ID} id - The element's id attrubute
158+ * @return {Tabs} - The Tabs with the specified id
159+ */
160 tabs: function (selector) {
161 if (typeof Tabs != 'undefined' && Tabs) {
162 if (selector === undefined)
163@@ -174,23 +257,51 @@
164 }
165 },
166
167+ /**
168+ * Gets an Ubuntu Toolbar object
169+ * @method toolbar
170+ * @param {ID} id - The element's id attrubute
171+ * @return {Toolbar} - The Toolbar with the specified id
172+ */
173 toolbar: function (id) {
174 if (typeof Toolbar != 'undefined' && Toolbar) {
175 return new Toolbar(this, id);
176 }
177 },
178
179+ /**
180+ * Gets an Ubuntu List
181+ * @method list
182+ * @param {Selector} selector - A selector that JavaScript querySelector method understands
183+ * @return {List}
184+ */
185 list: function (selector) {
186 if (typeof List != 'undefined' && List) {
187 return new List(selector);
188 }
189 },
190
191+ /**
192+ * Gets this UbuntuUI's single Pagestack object
193+ * @method pagestack
194+ * @return {Pagestack} - The Pagestack
195+ */
196 get pagestack() {
197 return this._pageStack;
198- }
199+ },
200+
201+ /**
202+ * Gets the HTML element associated with an Ubuntu HTML5 JavaScript object
203+ * @method getEl
204+ * @param {UbuntuObject} object - An UbuntuUI widget object
205+ * @return {Element} - The HTML element
206+ */
207+ getEl: function(widget) {
208+ return document.getElementById(widget.id);
209+ },
210+
211 };
212
213 return UbuntuUI;
214
215-})();
216\ No newline at end of file
217+})();
218
219=== modified file '0.1/ambiance/js/dialogs.js'
220--- 0.1/ambiance/js/dialogs.js 2013-07-17 15:27:43 +0000
221+++ 0.1/ambiance/js/dialogs.js 2013-11-01 20:18:13 +0000
222@@ -20,18 +20,52 @@
223 * <http://www.gnu.org/licenses/>.
224 */
225
226-/* Dialogs */
227+/**
228+ * Dialogs are modal full-screen popups that prevent other GUI interactions with the application until dismissed.
229+
230+Dialogs wrap arbitrary markup.
231+
232+Dialogs are declared inside the <em>content</em> div as a sibling to the <em>pagestack</em> div.
233+ * @class Dialog
234+ * @constructor
235+ * @namespace UbuntuUI
236+ * @example
237+ <div data-role="content">
238+ <div data-role="pagestack">
239+ [...]
240+ </div>
241+ <div data-role="dialog" id="dialogID">
242+ [...]
243+ </div>
244+ </div>
245+
246+ JavaScript access:
247+ var dialog = UI.dialog("dialogID");
248+
249+ */
250 var Dialog = function (id) {
251 this.dialog = document.getElementById(id);
252 };
253
254 Dialog.prototype = {
255+ /**
256+ * Display a dialog by adding 'active' CSS class
257+ * @method show
258+ */
259 show: function () {
260 this.dialog.classList.add('active');
261 },
262+ /**
263+ * Hide a dialog by removing 'active' class
264+ * @method hide
265+ */
266 hide: function () {
267 this.dialog.classList.remove('active');
268 },
269+ /**
270+ * Toggle a dialog, which means removing its 'active' class if it has one, or adding the 'active' class if it does not have one
271+ * @method toggle
272+ */
273 toggle: function () {
274 this.dialog.classList.toggle('active');
275 }
276
277=== added file '0.1/ambiance/js/header.js'
278--- 0.1/ambiance/js/header.js 1970-01-01 00:00:00 +0000
279+++ 0.1/ambiance/js/header.js 2013-11-01 20:18:13 +0000
280@@ -0,0 +1,65 @@
281+/*
282+ * Copyright (C) 2013 Adnane Belmadiaf <daker@ubuntu.com>
283+ * License granted by Canonical Limited
284+ *
285+ * This file is part of ubuntu-html5-theme.
286+ *
287+ * This package is free software; you can redistribute it and/or modify
288+ * it under the terms of the GNU Lesser General Public License as
289+ * published by the Free Software Foundation; either version 3 of the
290+ * License, or
291+ * (at your option) any later version.
292+
293+ * This package is distributed in the hope that it will be useful,
294+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
295+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
296+ * GNU General Public License for more details.
297+
298+ * You should have received a copy of the GNU Lesser General Public
299+ * License along with this program. If not, see
300+ * <http://www.gnu.org/licenses/>.
301+ */
302+
303+/**
304+ * An Ubuntu Header wraps Tabs. Together they provide the main navigation widget at the top of an Ubuntu HTML5 app.
305+
306+Declare the Header and its Tabs in HTML as a direct child of the top level Page as a sibling to the <em>content</em> div.
307+######Contained list provides Page navigation
308+A contained unordered list has list items, each of which has an anchor (&lt;a&gt;) whose <em>href</em> attribute is a hash char ("#") followed by a Page ID. Clicking the Header/Tabs allows the user to navigate to the Pages identified by these IDs.
309+
310+ * @class Header
311+ * @constructor
312+ * @namespace UbuntuUI
313+ * @example
314+ <body>
315+ <div data-role="page">
316+ <header data-role="header" id="headerID">
317+ <div class="tabs-inner">
318+ <ul data-role="tabs">
319+ <li class="active" data-role="tab">
320+ <a href="#main">Main</a>
321+ </li>
322+ <li data-role="tab">
323+ <a href="#page2">Two</a>
324+ </li>
325+ </ul>
326+ </div>
327+ </header>
328+ <div data-role="content">
329+ [...]
330+ </div>
331+ </div>
332+ </body>
333+
334+ JavaScript access:
335+ var header = UI.header("headerID");
336+ */
337+var Header= function (id) {
338+ this.id = id;
339+};
340+
341+Header.prototype = {
342+ /**
343+ * Placeholder for future methods
344+ */
345+};
346
347=== modified file '0.1/ambiance/js/list.js'
348--- 0.1/ambiance/js/list.js 2013-10-30 20:51:51 +0000
349+++ 0.1/ambiance/js/list.js 2013-11-01 20:18:13 +0000
350@@ -20,7 +20,35 @@
351 * <http://www.gnu.org/licenses/>.
352 */
353
354-/* Lists */
355+/**
356+ * A List comes with various options, including: a <em>header</em>, main text (pushed left), an icon (pushed left), and a secondary label (pushed right).
357+ * @class List
358+ * @constructor
359+ * @namespace UbuntuUI
360+ * @example
361+ <section data-role="list" id="testlist">
362+ <header>My header text</header>
363+ <ul>
364+ <li>
365+ <a href="#">Main text, to the left</a>
366+ </li>
367+ <li>
368+ <a href="#">Main text</a>
369+ <label>Right text</label>
370+ </li>
371+ <li>
372+ <aside>
373+ <img src="someicon.png">
374+ </aside>
375+ <a href="#">Main text</a>
376+ <label>Right</label>
377+ </li>
378+ </ul>
379+ </section>
380+
381+ JavaScript access:
382+ var list = UI.list('[id="testlist"]');
383+ */
384 var List = (function () {
385 var LIST_DATA_ROLE = 'list';
386
387@@ -45,6 +73,11 @@
388 };
389
390 List.prototype = {
391+ /**
392+ * Add or Set the List Header
393+ * @method setHeader
394+ * @param {String} text - The header text
395+ */
396 setHeader: function (text) {
397 if (typeof (text) == 'string') {
398 var header = this._list.querySelectorAll('header');
399@@ -65,21 +98,16 @@
400 header.innerText = text;
401 }
402 },
403- /*
404- \brief Appends a item to the list
405-
406- Appends a given item to the current list.
407-
408- \param text A string of text (images & custom html not supported at the moment)
409- \param onclick (optional) A function callback that is to be called when the item is clicked.
410- It will be called with the clicked node as a parameter along with the value of
411- user_data (if any).
412- \param id (optional) An optional Id for the added node, the id will only be added if it does not already
413- conflict with another one.
414- \param user_data (optional) An javascript entity that will be passed to the onclick callback (if any)
415- when the event has been trigger.
416- \return added item node or null
417- */
418+ /**
419+ * Append an item to a list
420+ * @method append
421+ * @param {String} text - The main text, flushed left (no markup)
422+ * @param {[String]} label - Additional text, flushed right (no markup)
423+ * @param {[ID]} id - An id attribute value set for the new list item (must be unique in DOM)
424+ * @param {[Function]} onclick - The click callback function
425+ * @param {[Object*]} user_data - Additional data that is passed to the click callback
426+ * @return {Element} - The created list item, or null on failure ot create
427+ */
428 append: function (text, label, id, onclick, user_data) {
429 var li = document.createElement('li');
430 var a = document.createElement('a');
431@@ -110,45 +138,41 @@
432
433 return li;
434 },
435- /*
436- \brief returns the nth child item from a list
437-
438- \param index Index of the child to return (0 based number)
439- \return selected item node or null
440- */
441+ /**
442+ * Gets a list item &lt;li&gt; by its index, where index counting starts from 1
443+ * @method at
444+ * @param {Number} index
445+ * @return The list item, or null on failure
446+ */
447 at: function (index) {
448 if (typeof (index) != 'number')
449 return null;
450 return this._list.querySelector('ul').querySelector('li:nth-child(' + index + ')');
451 },
452- /*
453- \brief removes the nth child item from a list
454-
455- \param index Index of the child to remove (0 based number)
456- \return nothing
457- */
458+ /**
459+ * Removes a list item &lt;li&gt; by its index, where index counting starts from 1
460+ * @method remove
461+ * @param {Number} index
462+ */
463 remove: function (index) {
464 var item = this.at(index);
465 if (item) {
466 item.parentNode.removeChild(item);
467 }
468 },
469- /*
470- \brief removes all the child items from a list
471- \return nothing
472- */
473+ /**
474+ * Removes all items from a list
475+ * @method removeAllItems
476+ */
477 removeAllItems: function () {
478 if (this._list.querySelector('ul'))
479 this._list.querySelector('ul').innerHTML = '';
480 },
481- /*
482- \brief iterator over the list of list items and calls a function on each one
483-
484- \param func function to be called for each list item. The function
485- receives the DOM node associated with the current item along with its
486- index.
487- \return nothing
488- */
489+ /**
490+ * Iterates over all list items and runs a provided function on each
491+ * @method forEach
492+ * @param {Function} func - The function to run on each list item
493+ */
494 forEach: function (func) {
495 if (typeof (func) !== 'function')
496 return;
497
498=== added file '0.1/ambiance/js/page.js'
499--- 0.1/ambiance/js/page.js 1970-01-01 00:00:00 +0000
500+++ 0.1/ambiance/js/page.js 2013-11-01 20:18:13 +0000
501@@ -0,0 +1,62 @@
502+/*
503+ * Copyright (C) 2013 Adnane Belmadiaf <daker@ubuntu.com>
504+ * License granted by Canonical Limited
505+ *
506+ * This file is part of ubuntu-html5-theme.
507+ *
508+ * This package is free software; you can redistribute it and/or modify
509+ * it under the terms of the GNU Lesser General Public License as
510+ * published by the Free Software Foundation; either version 3 of the
511+ * License, or
512+ * (at your option) any later version.
513+
514+ * This package is distributed in the hope that it will be useful,
515+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
516+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
517+ * GNU General Public License for more details.
518+
519+ * You should have received a copy of the GNU Lesser General Public
520+ * License along with this program. If not, see
521+ * <http://www.gnu.org/licenses/>.
522+ */
523+
524+/**
525+ * An Ubuntu app consists of a Pagestack containing one or more Pages. Each page displays full-screen. See the Pagestack class.
526+
527+Each Page must have an <em>id</em> attriubute. This is used to push the Page to the top of the Pagestack (see the Pagestack class).
528+
529+Navigation between Pages is typically provided by the Header and its Tabs. See the Header class.
530+ * @class Page
531+ * @constructor
532+ * @namespace UbuntuUI
533+ * @example
534+ </body>
535+ <div data-role="page">
536+ <header data-role="header">
537+ [...]
538+ </header>
539+ <div data-role="content">
540+ <div data-role="pagestack">
541+ <div data-role="page" id="main">
542+ [...]
543+ </div>
544+ <div data-role="page" id="ID">
545+ [...]
546+ </div>
547+ </div>
548+ </div>
549+ </div>
550+ </body>
551+
552+ JavaScript access:
553+ var page = UI.page("pageID");
554+ */
555+var Page = function (id) {
556+ this.id = id;
557+};
558+
559+Page.prototype = {
560+ /*
561+ * placeholder for future methods
562+ */
563+};
564
565=== modified file '0.1/ambiance/js/pagestacks.js'
566--- 0.1/ambiance/js/pagestacks.js 2013-10-19 12:21:19 +0000
567+++ 0.1/ambiance/js/pagestacks.js 2013-11-01 20:18:13 +0000
568@@ -20,8 +20,52 @@
569 * <http://www.gnu.org/licenses/>.
570 */
571
572-/* Pagestack */
573-
574+/**
575+ * The Pagestack manages all Pages in a stack data structure. Initially, the Pagestack contains no Pages. The <em>push()</em> method is normally executed on load to display the app starting page.
576+
577+ UI.pagestack.push("pageID")
578+
579+The topmost Page on the Pagestack is always displayed.
580+
581+The Pagestack is declared as a direct child of the <em>content</em> div.
582+
583+#####Default application wide footer
584+The Pagestack contains a default <em>footer</em> (represented in JavaScript as a Toolbar), even if you do not declare one in HTML. The <em>footer</em> has a single Back button.
585+#####Customized application wide footer
586+This application-wide <em>footer</em> can be customized (for example, you can add Buttons) by declaring a <em>footer</em> as a direct child of the <em>pagestack</em> div (see example).
587+######Page specific footers
588+A <em>page</em> may declare a page-specific <em>footer</em> as a child element.
589+
590+ * @class Pagestack
591+ * @namespace UbuntuUI
592+ * @constructor
593+ * @example
594+
595+ <div data-role="page">
596+ <header data-role="header">
597+ [...]
598+ </header>
599+ <div data-role="content">
600+ <div data-role="pagestack">
601+ <div data-role="page" id="main">
602+ </div>
603+ <div data-role="page" id="page2">
604+ [...]
605+ <footer data-role="footer" class="revealed" id="footerPage2">
606+ [...]
607+ </footer>
608+ </div>
609+ <footer data-role="footer" class="revealed" id="footerAppWide">
610+ [...]
611+ </footer>
612+ </div> <!-- end of Pagestack div -->
613+ </div>
614+ </div>
615+
616+ JavaScript:
617+ UI.pagestack.METHOD();
618+
619+ */
620 var Pagestack = (function () {
621
622 function __safeCall(f, args, errorfunc) {
623@@ -81,6 +125,12 @@
624 footer.classList.add('revealed');
625 }
626 },
627+ /**
628+ * Push a page to the top of this pagestack
629+ * @method push
630+ * @param {String} id - The id attribute of the page element to be pushed
631+ * @param {Object} properties - This param is not currently used
632+ */
633 push: function (id, properties) {
634 try {
635 __safeCall(this.__setAllPagesVisibility.bind(this), [false]);
636@@ -89,21 +139,41 @@
637 this._pages.push(id);
638 } catch (e) {}
639 },
640+ /**
641+ * Checks for zero pages in this pagestack
642+ * @method isEmpty
643+ * @return {Boolean} - True when this pagestack has no pages, else false
644+ */
645 isEmpty: function () {
646 return this._pages.length === 0;
647 },
648+ /**
649+ * Gets the id attribute of the page element on top of this pagestack
650+ * @method currentPage
651+ * @return {PageID|Null} - The topmost page's id attribute, else null when there are no pages on this pagestack
652+ */
653 currentPage: function () {
654 return this.isEmpty() ? null : this._pages[this._pages.length - 1];
655 },
656+ /**
657+ * Gets the number of pages in this pagestack
658+ * @method depth
659+ * @return {Number} - The number of pages in this pagestack
660+ */
661 depth: function () {
662 return this._pages.length;
663 },
664+
665 clear: function () {
666 if (this.isEmpty())
667 return;
668 __safeCall(this.__deactivate.bind(this), [this.currentPage()]);
669 this._pages = [];
670 },
671+ /**
672+ * Pops the current page off this pagestack, which causes the next page to become the top page and to display
673+ * @method pop
674+ */
675 pop: function () {
676 if (this.isEmpty())
677 return;
678
679=== modified file '0.1/ambiance/js/popovers.js'
680--- 0.1/ambiance/js/popovers.js 2013-08-31 14:25:59 +0000
681+++ 0.1/ambiance/js/popovers.js 2013-11-01 20:18:13 +0000
682@@ -20,7 +20,40 @@
683 * <http://www.gnu.org/licenses/>.
684 */
685
686-/* Popover */
687+/**
688+ * A Popover is a div containng markup that can pop up and disappear. (Unlike a Dialog, Popovers are not full screen.)
689+
690+A Popoves often contain a List whose items are connected to useful JavaScript functions.
691+
692+
693+######Popover Position
694+The Popover's position is set relative to a specified base element with the <em>data-gravity="LETTER"</em> attribute. LETTER values:
695+
696+ - 'n': the base element is above the Popover
697+ - 's': the base element is below the Popover
698+ - 'e': the base element is to the east of (to the right of) the Popover (in right-to-left locales)
699+ - 'w': the base element is to the west of (to the left of) the Popover (in right-to-left locale)
700+
701+ * @class Popover
702+ * @constructor
703+ * @namespace UbuntuUI
704+ * @param {String} elem - The element to which the Popover's position is relative
705+ * @param {ID} id - The id attribute of the Popover in HTML
706+ * @example
707+
708+ <p id="popoverBase">Text</p>
709+ <div class="popover active" data-gravity="n" id="popover">
710+ <ul class="list">
711+ <li class="active"><a href="#">Item1</a></li>
712+ <li><a href="#">Item2</a></li>
713+ </ul>
714+ </div>
715+
716+ Javascript:
717+ var popBase = document.getElementByID("popoverBase");
718+ var popover = UI.popover(popBase, "popover");
719+ */
720+
721 var Popover = function (elem, id) {
722 this.id = id;
723 this.popover = document.getElementById(id);
724@@ -30,6 +63,10 @@
725 };
726
727 Popover.prototype = {
728+ /**
729+ * Display a Popover
730+ * @method show
731+ */
732 show: function () {
733 if (this.popover === null) {
734 console.error('The popover with the ID #' + this.id + ' doesn\'t exist');
735@@ -103,12 +140,20 @@
736
737 return this.popover;
738 },
739+ /**
740+ * Hide a Popover
741+ * @method hide
742+ */
743 hide: function () {
744 this.popover.classList.remove('active');
745 this.popover.style.top = '0px';
746 this.popover.style.left = '0px';
747 return this.popover;
748 },
749+ /**
750+ * Toggle show/hide status of a Popover
751+ * @method toggle
752+ */
753 toggle: function () {
754 if (this.popover === null) {
755 console.error('The popover with the ID #' + this.id + ' doesn\'t exist');
756
757=== added file '0.1/ambiance/js/shape.js'
758--- 0.1/ambiance/js/shape.js 1970-01-01 00:00:00 +0000
759+++ 0.1/ambiance/js/shape.js 2013-11-01 20:18:13 +0000
760@@ -0,0 +1,59 @@
761+/*
762+ * Copyright (C) 2013 Adnane Belmadiaf <daker@ubuntu.com>
763+ * License granted by Canonical Limited
764+ *
765+ * This file is part of ubuntu-html5-theme.
766+ *
767+ * This package is free software; you can redistribute it and/or modify
768+ * it under the terms of the GNU Lesser General Public License as
769+ * published by the Free Software Foundation; either version 3 of the
770+ * License, or
771+ * (at your option) any later version.
772+
773+ * This package is distributed in the hope that it will be useful,
774+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
775+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
776+ * GNU General Public License for more details.
777+
778+ * You should have received a copy of the GNU Lesser General Public
779+ * License along with this program. If not, see
780+ * <http://www.gnu.org/licenses/>.
781+ */
782+
783+/**
784+ * An Ubuntu Shape contains and decorates (with CSS styles) some markup, often an <em>img</em>.
785+ * @class Shape
786+ * @constructor
787+ * @namespace UbuntuUI
788+ * @example
789+ <div data-role="shape" id="shapeID">
790+ <img src="URI"/>
791+ </div>
792+
793+ JavaScript access:
794+ var shape = UI.shape("shapeID");
795+
796+ */
797+var Shape = function (id) {
798+ this.id = id;
799+};
800+
801+Shape.prototype = {
802+ /**
803+ * Associate a function with the Click event
804+ * @method click
805+ * @param {Function} - The function to execute on click
806+ * @example
807+ UI.shape("id").click(function(){
808+ console.log("Clicked");
809+ });
810+ */
811+ click: function (callback) {
812+ if ( ! document.getElementById(this.id)) {
813+ throw "Error. id attribute: " + String(this.id) + " is not present in DOM";
814+ } else {
815+ var el = document.getElementById(this.id);
816+ el.addEventListener('click', callback);
817+ }
818+ },
819+};
820
821=== modified file '0.1/ambiance/js/tabs.js'
822--- 0.1/ambiance/js/tabs.js 2013-09-12 21:32:09 +0000
823+++ 0.1/ambiance/js/tabs.js 2013-11-01 20:18:13 +0000
824@@ -20,7 +20,38 @@
825 * <http://www.gnu.org/licenses/>
826 */
827
828-/* Tabs */
829+/**
830+ * Tabs are the standard way to provide app navigation from your application Header. See the Header class for more information.
831+
832+Declare the Header and Tabs in HTML as a direct child of the top level Page as a sibling to the content div.
833+
834+ * @class Tabs
835+ * @constructor
836+ * @namespace UbuntuUI
837+ * @example
838+ <body>
839+ <div data-role="page">
840+ <header data-role="header" id="headerID">
841+ <div class="tabs-inner">
842+ <ul data-role="tabs">
843+ <li class="active" data-role="tab">
844+ <a href="#main">Main</a>
845+ </li>
846+ <li data-role="tab">
847+ <a href="#page2">Two</a>
848+ </li>
849+ </ul>
850+ </div>
851+ </header>
852+ <div data-role="content">
853+ [...]
854+ </div>
855+ </div>
856+ </body>
857+
858+ JavaScript:
859+ var tabs = UI.tabs();
860+*/
861 var Tabs = function (UbuntuUI, tabs) {
862 var pageX,
863 pageY,
864@@ -170,4 +201,4 @@
865 [].forEach.call(document.querySelectorAll('[data-role="tab"]'), function (el) {
866 el.addEventListener('click', onClicked, false);
867 });
868-};
869\ No newline at end of file
870+};
871
872=== modified file '0.1/ambiance/js/toolbars.js'
873--- 0.1/ambiance/js/toolbars.js 2013-09-12 21:32:09 +0000
874+++ 0.1/ambiance/js/toolbars.js 2013-11-01 20:18:13 +0000
875@@ -20,21 +20,67 @@
876 * <http://www.gnu.org/licenses/>.
877 */
878
879-/* Toolbars */
880+/**
881+ * A Toolbar is the JavaScript representation of an Ubuntu HTML5 app <em>footer</em>.
882+
883+######Contained List provides buttons
884+The Toolbar contains a List, where each list item is treated as a Button (see below). List items (Buttons) are pushed to the right. The default Back button always exists to the left and does not need to be declared.
885+
886+#####Default and custom footers
887+See the Pagestack class documentation for information about the default application-wide Footer, customizing it, and adding Page-specific Footers.
888+ * @class Toolbar
889+ * @constructor
890+ * @namespace UbuntuUI
891+ * @example
892+ <footer data-role="footer" class="revealed" id="footerID">
893+ <div data-role="list">
894+ <ul>
895+ <li>
896+ <a href="#" id="home">Home</a>
897+ </li>
898+ </ul>
899+ </div>
900+ </footer>
901+
902+ JavaScript access:
903+ var toolbar = UI.footer("footerID");
904+ UI.button('home').click(function () {
905+ UI.pagestack.push("main");
906+ });
907+
908+ */
909+
910 var Toolbar = function (UbuntuUI, id) {
911 this.toolbar = document.getElementById(id);
912 };
913
914 Toolbar.prototype = {
915+ /**-
916+ * Display a Toolbar
917+ * @method show
918+ */
919 show: function () {
920 this.toolbar.classList.add('revealed');
921 },
922+ /**-
923+ * Hide a Toolbar
924+ * @method hide
925+ */
926 hide: function () {
927 this.toolbar.classList.remove('revealed');
928 },
929+ /**
930+ * Toggle show/hide status of a Toolbar
931+ * @method toggle
932+ */
933 toggle: function () {
934 this.toolbar.classList.toggle('revealed');
935 },
936+ /**
937+ * Provide a callback function that's called with the Toolbar is touched
938+ * @method touch
939+ * @param {Function} function - The function that is called when the Toolbar is touched
940+ */
941 touch: function (callback) {
942 this.toolbar.addEventListener(UbuntuUI.touchEvents.touchEnd, callback);
943 }
944
945=== added directory '0.1/ambiance/js/yuidoc-theme'
946=== added directory '0.1/ambiance/js/yuidoc-theme/assets'
947=== added directory '0.1/ambiance/js/yuidoc-theme/assets/css'
948=== added file '0.1/ambiance/js/yuidoc-theme/assets/css/external-small.png'
949Binary files 0.1/ambiance/js/yuidoc-theme/assets/css/external-small.png 1970-01-01 00:00:00 +0000 and 0.1/ambiance/js/yuidoc-theme/assets/css/external-small.png 2013-11-01 20:18:13 +0000 differ
950=== added file '0.1/ambiance/js/yuidoc-theme/assets/css/logo.png'
951Binary files 0.1/ambiance/js/yuidoc-theme/assets/css/logo.png 1970-01-01 00:00:00 +0000 and 0.1/ambiance/js/yuidoc-theme/assets/css/logo.png 2013-11-01 20:18:13 +0000 differ
952=== added file '0.1/ambiance/js/yuidoc-theme/assets/css/main.css'
953--- 0.1/ambiance/js/yuidoc-theme/assets/css/main.css 1970-01-01 00:00:00 +0000
954+++ 0.1/ambiance/js/yuidoc-theme/assets/css/main.css 2013-11-01 20:18:13 +0000
955@@ -0,0 +1,429 @@
956+/*
957+Font sizes for all selectors other than the body are given in percentages,
958+with 100% equal to 13px. To calculate a font size percentage, multiply the
959+desired size in pixels by 7.6923076923.
960+
961+Here's a quick lookup table:
962+
963+10px - 76.923%
964+11px - 84.615%
965+12px - 92.308%
966+13px - 100%
967+14px - 107.692%
968+15px - 115.385%
969+16px - 123.077%
970+17px - 130.769%
971+18px - 138.462%
972+19px - 146.154%
973+20px - 153.846%
974+*/
975+
976+html {
977+ background: #fff;
978+ color: #333;
979+ overflow-y: scroll;
980+}
981+
982+body {
983+ font: 13px/1.4 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', 'Bitstream Vera Sans', 'Helvetica', 'Arial', sans-serif;
984+ margin: 0;
985+ padding: 0;
986+}
987+
988+/* -- Links ----------------------------------------------------------------- */
989+a {
990+ color: #DD4814;
991+ text-decoration: none;
992+}
993+
994+a:hover { text-decoration: underline; }
995+
996+/* "Jump to Table of Contents" link is shown to assistive tools, but hidden from
997+ sight until it's focused. */
998+.jump {
999+ position: absolute;
1000+ padding: 3px 6px;
1001+ left: -99999px;
1002+ top: 0;
1003+}
1004+
1005+.jump:focus { left: 40%; }
1006+
1007+/* -- Paragraphs ------------------------------------------------------------ */
1008+p { margin: 1.3em 0; }
1009+dd p, td p { margin-bottom: 0; }
1010+dd p:first-child, td p:first-child { margin-top: 0; }
1011+
1012+/* -- Headings -------------------------------------------------------------- */
1013+h1, h2, h3, h4, h5, h6 {
1014+ color: #DD4814
1015+ font-family: 'Ubuntu', sans-serif;
1016+ font-weight: bold;
1017+ line-height: 1.1;
1018+ margin: 1.1em 0 0.5em;
1019+}
1020+
1021+h1 {
1022+ font-size: 184.6%;
1023+ color: #30418C;
1024+ margin: 0.75em 0 0.5em;
1025+}
1026+
1027+h2 {
1028+ font-size: 153.846%;
1029+ color: #E48A2B;
1030+}
1031+
1032+h3 { font-size: 138.462%; }
1033+
1034+h4 {
1035+ border-bottom: 1px solid #DBDFEA;
1036+ color: #E48A2B;
1037+ font-size: 115.385%;
1038+ font-weight: normal;
1039+ padding-bottom: 2px;
1040+}
1041+
1042+h5, h6 { font-size: 107.692%; }
1043+
1044+/* -- Code and examples ----------------------------------------------------- */
1045+code, kbd, pre, samp {
1046+ font-family: Menlo, Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;
1047+ font-size: 92.308%;
1048+ line-height: 1.35;
1049+}
1050+
1051+p code, p kbd, p samp {
1052+ background: #FCFBFA;
1053+ border: 1px solid #EFEEED;
1054+ padding: 0 3px;
1055+}
1056+
1057+a code, a kbd, a samp,
1058+pre code, pre kbd, pre samp,
1059+table code, table kbd, table samp,
1060+.intro code, .intro kbd, .intro samp,
1061+.toc code, .toc kbd, .toc samp {
1062+ background: none;
1063+ border: none;
1064+ padding: 0;
1065+}
1066+
1067+pre.code, pre.terminal, pre.cmd {
1068+ overflow-x: auto;
1069+ *overflow-x: scroll;
1070+ padding: 0.3em 0.6em;
1071+}
1072+
1073+pre.code {
1074+ background: #FCFBFA;
1075+ border: 1px solid #EFEEED;
1076+ border-left-width: 5px;
1077+}
1078+
1079+pre.terminal, pre.cmd {
1080+ background: #F0EFFC;
1081+ border: 1px solid #D0CBFB;
1082+ border-left: 5px solid #D0CBFB;
1083+}
1084+
1085+/* Don't reduce the font size of <code>/<kbd>/<samp> elements inside <pre>
1086+ blocks. */
1087+pre code, pre kbd, pre samp { font-size: 100%; }
1088+
1089+/* Used to denote text that shouldn't be selectable, such as line numbers or
1090+ shell prompts. Guess which browser this doesn't work in. */
1091+.noselect {
1092+ -moz-user-select: -moz-none;
1093+ -khtml-user-select: none;
1094+ -webkit-user-select: none;
1095+ -o-user-select: none;
1096+ user-select: none;
1097+}
1098+
1099+/* -- Lists ----------------------------------------------------------------- */
1100+dd { margin: 0.2em 0 0.7em 1em; }
1101+dl { margin: 1em 0; }
1102+dt { font-weight: bold; }
1103+
1104+/* -- Tables ---------------------------------------------------------------- */
1105+caption, th { text-align: left; }
1106+
1107+table {
1108+ border-collapse: collapse;
1109+ width: 100%;
1110+}
1111+
1112+td, th {
1113+ border: 1px solid #fff;
1114+ padding: 5px 12px;
1115+ vertical-align: top;
1116+}
1117+
1118+td { background: #E6E9F5; }
1119+td dl { margin: 0; }
1120+td dl dl { margin: 1em 0; }
1121+td pre:first-child { margin-top: 0; }
1122+
1123+th {
1124+ background: #D2D7E6;/*#97A0BF*/
1125+ border-bottom: none;
1126+ border-top: none;
1127+ color: #000;/*#FFF1D5*/
1128+ font-family: 'Trebuchet MS', sans-serif;
1129+ font-weight: bold;
1130+ line-height: 1.3;
1131+ white-space: nowrap;
1132+}
1133+
1134+
1135+/* -- Layout and Content ---------------------------------------------------- */
1136+#doc {
1137+ margin: auto;
1138+ min-width: 1024px;
1139+}
1140+
1141+#main { width: 754px; }
1142+#sidebar { width: 270px; margin: 0 15px; }
1143+
1144+.content { padding: 0 20px 0 25px; }
1145+
1146+/* -- Sidebar --------------------------------------------------------------- */
1147+.sidebox {
1148+ background: #F9F9FC;/*E6E9F5*/
1149+ border: 1px solid #D4D8EB;
1150+
1151+ -moz-border-radius: 4px;
1152+ -webkit-border-radius: 4px;
1153+ border-radius: 4px;
1154+ -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
1155+ -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
1156+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
1157+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', 'Helvetica', 'Arial', sans-serif;
1158+ margin: 0 0 15px 0;
1159+ padding-bottom: 1px;
1160+}
1161+
1162+.sidebox h2 {
1163+ background: #E5E6F1;
1164+ -moz-border-radius: 4px 4px 0 0;
1165+ -webkit-border-radius: 4px 4px 0 0;
1166+ border-radius: 4px 4px 0 0;
1167+ color: #5E6BA4;
1168+ font-weight: bold;
1169+ font-size: 107.692%;
1170+ margin: 0;
1171+ padding: 4px 7px 5px;
1172+}
1173+
1174+.sidebox .bd {
1175+ font-size: 84.615%;
1176+ padding: 0 5px 0 8px;
1177+}
1178+
1179+.sidebox li { list-style-type: disc; color:#D4D5E3; }
1180+
1181+.sidebox ol, .sidebox ul {
1182+ margin-left: 0;
1183+ padding-left: 16px;
1184+}
1185+
1186+.sidebox ol ol, .sidebox ol ul,
1187+.sidebox ul ol, .sidebox ul ul {
1188+ margin: 0;
1189+ padding-left: 16px;
1190+}
1191+
1192+/* -- Table of Contents ----------------------------------------------------- */
1193+
1194+/* The #toc id refers to the single global table of contents, while the .toc
1195+ class refers to generic TOC lists that could be used throughout the page. */
1196+
1197+.toc code, .toc kbd, .toc samp { font-size: 100%; }
1198+.toc li { font-weight: bold; }
1199+.toc li li { font-weight: normal; }
1200+
1201+/* -- Intro and Example Boxes ----------------------------------------------- */
1202+.intro, .example { margin-bottom: 2em; }
1203+
1204+.example {
1205+ -moz-border-radius: 4px;
1206+ -webkit-border-radius: 4px;
1207+ border-radius: 4px;
1208+ -moz-box-shadow: 0 0 5px #bfbfbf;
1209+ -webkit-box-shadow: 0 0 5px #bfbfbf;
1210+ box-shadow: 0 0 5px #bfbfbf;
1211+ padding: 1em;
1212+}
1213+
1214+.intro {
1215+ background: none repeat scroll 0 0 #F0F1F8; border: 1px solid #D4D8EB; padding: 0 1em;
1216+}
1217+
1218+/* -- Other Styles ---------------------------------------------------------- */
1219+
1220+/* These are probably YUI-specific, and should be moved out of Selleck's default
1221+ theme. */
1222+
1223+.button {
1224+ border: 1px solid #dadada;
1225+ -moz-border-radius: 3px;
1226+ -webkit-border-radius: 3px;
1227+ border-radius: 3px;
1228+ color: #444;
1229+ display: inline-block;
1230+ font-family: Helvetica, Arial, sans-serif;
1231+ font-size: 92.308%;
1232+ font-weight: bold;
1233+ padding: 4px 13px 3px;
1234+ -moz-text-shadow: 1px 1px 0 #fff;
1235+ -webkit-text-shadow: 1px 1px 0 #fff;
1236+ text-shadow: 1px 1px 0 #fff;
1237+ white-space: nowrap;
1238+
1239+ background: #EFEFEF; /* old browsers */
1240+ background: -moz-linear-gradient(top, #f5f5f5 0%, #efefef 50%, #e5e5e5 51%, #dfdfdf 100%); /* firefox */
1241+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(50%,#efefef), color-stop(51%,#e5e5e5), color-stop(100%,#dfdfdf)); /* webkit */
1242+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#dfdfdf',GradientType=0 ); /* ie */
1243+}
1244+
1245+.button:hover {
1246+ border-color: #466899;
1247+ color: #fff;
1248+ text-decoration: none;
1249+ -moz-text-shadow: 1px 1px 0 #222;
1250+ -webkit-text-shadow: 1px 1px 0 #222;
1251+ text-shadow: 1px 1px 0 #222;
1252+
1253+ background: #6396D8; /* old browsers */
1254+ background: -moz-linear-gradient(top, #6396D8 0%, #5A83BC 50%, #547AB7 51%, #466899 100%); /* firefox */
1255+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6396D8), color-stop(50%,#5A83BC), color-stop(51%,#547AB7), color-stop(100%,#466899)); /* webkit */
1256+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#6396D8', endColorstr='#466899',GradientType=0 ); /* ie */
1257+}
1258+
1259+.newwindow { text-align: center; }
1260+
1261+.header .version em {
1262+ display: block;
1263+ text-align: right;
1264+}
1265+
1266+.yui3-skin-sam #classdocs .yui3-tabview-panel {
1267+ background-color: transparent;
1268+}
1269+
1270+.yui3-skin-sam #classdocs .yui3-tabview-panel {
1271+ border: none;
1272+}
1273+
1274+.yui3-skin-sam .yui3-tabview .yui3-tab,
1275+.yui3-skin-sam .yui3-tabview .yui3-tab-selected,
1276+.yui3-skin-sam .yui3-tabview .yui3-tab-hover {
1277+ background: -moz-linear-gradient(center top , #F4F0EC 0%, #D6D2CE 100%) repeat scroll 0 0 transparent;
1278+ border-bottom: 1px solid #DEDCD9;
1279+ border-right: 1px solid #CDCBC8;
1280+ border-left: 1px solid #CDCBC8;
1281+ border-top: 1px solid #DADADA;
1282+ color: #333333;
1283+ text-decoration: none;
1284+}
1285+.yui3-skin-sam .yui3-tabview .yui3-tab-label,
1286+.yui3-skin-sam .yui3-tabview .yui3-tab-selected .yui3-tab-label {
1287+ border: none;
1288+ background: none;
1289+ font-size: 100%;
1290+ color: #000;
1291+}
1292+
1293+.yui3-skin-sam .yui3-tabview .yui3-tab-selected,
1294+.yui3-skin-sam .yui3-tabview .yui3-tab-hover {
1295+ background: none;
1296+ background-color: #fff;
1297+ border-bottom-color: #FFFFFF;
1298+ border-top: 2px solid #8193C9;
1299+ font-weight: bold;
1300+ color: #000;
1301+
1302+}
1303+
1304+.yui3-skin-sam .yui3-tabview-list {
1305+ border-color: #DFDFDF;
1306+ border-width: 0 0 1px;
1307+}
1308+
1309+
1310+a.external {
1311+ background-image: url(external-small.png);
1312+ background-repeat: no-repeat;
1313+ background-position: 0 0;
1314+ padding-left: 16px;
1315+}
1316+
1317+#classdocs .item {
1318+ border-bottom: 1px solid #466899;
1319+ margin: 1em 0;
1320+ padding: 1.5em;
1321+}
1322+
1323+#classdocs .item .params p,
1324+ #classdocs .item .returns p,{
1325+ display: inline;
1326+}
1327+
1328+#classdocs .item em code, #classdocs .item em.comment {
1329+ color: green;
1330+}
1331+
1332+#classdocs .item em.comment a {
1333+ color: green;
1334+ text-decoration: underline;
1335+}
1336+
1337+#classdocs .foundat {
1338+ font-size: 11px;
1339+ font-style: normal;
1340+}
1341+
1342+.attrs .emits {
1343+ margin-left: 2em;
1344+ padding: .5em;
1345+ border-left: 1px dashed #ccc;
1346+}
1347+
1348+abbr {
1349+ border-bottom: 1px dashed #ccc;
1350+ font-size: 80%;
1351+ cursor: help;
1352+}
1353+
1354+.prettyprint li.L0,
1355+.prettyprint li.L1,
1356+.prettyprint li.L2,
1357+.prettyprint li.L3,
1358+.prettyprint li.L5,
1359+.prettyprint li.L6,
1360+.prettyprint li.L7,
1361+.prettyprint li.L8 {
1362+ list-style: decimal;
1363+}
1364+
1365+ul li p {
1366+ margin-top: 0;
1367+}
1368+
1369+.method .name {
1370+ font-size: 110%;
1371+}
1372+
1373+#hd {
1374+ background: -moz-linear-gradient(center top , #DCDBD9 0%, #F6F5F3 100%) repeat scroll 0 0 transparent;
1375+ border-bottom: 1px solid #DFDFDF;
1376+ padding: 0 15px 1px 20px;
1377+ margin-bottom: 15px;
1378+}
1379+
1380+#hd img {
1381+ margin-right: 10px;
1382+ vertical-align: middle;
1383+}
1384+
1385
1386=== added directory '0.1/ambiance/js/yuidoc-theme/assets/js'
1387=== added file '0.1/ambiance/js/yuidoc-theme/assets/js/tabs.js'
1388--- 0.1/ambiance/js/yuidoc-theme/assets/js/tabs.js 1970-01-01 00:00:00 +0000
1389+++ 0.1/ambiance/js/yuidoc-theme/assets/js/tabs.js 2013-11-01 20:18:13 +0000
1390@@ -0,0 +1,67 @@
1391+/*
1392+ * Copyright 2011 Yahoo! Inc.
1393+ * All rights reserved.
1394+ *
1395+ * Redistribution and use in source and binary forms, with or without
1396+ * modification, are permitted provided that the following conditions are met:
1397+ * * Redistributions of source code must retain the above copyright
1398+ * notice, this list of conditions and the following disclaimer.
1399+ * * Redistributions in binary form must reproduce the above copyright
1400+ * notice, this list of conditions and the following disclaimer in the
1401+ * documentation and/or other materials provided with the distribution.
1402+ * * Neither the name of the Yahoo! Inc. nor the
1403+ * names of its contributors may be used to endorse or promote products
1404+ * derived from this software without specific prior written permission.
1405+ *
1406+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1407+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1408+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1409+ * DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
1410+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1411+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1412+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1413+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1414+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1415+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1416+ */
1417+
1418+
1419+
1420+YUI({
1421+ insertBefore: 'site_styles'
1422+}).use('tabview', function(Y) {
1423+ var classdocs = Y.one('#classdocs'),
1424+ tabviewIndexTable = {};
1425+ if (classdocs) {
1426+ if (classdocs.all('li').size()) {
1427+ var tabview = new Y.TabView({ srcNode: classdocs });
1428+ tabview.render();
1429+ classdocs.all('li a').each(function (item, index) {
1430+ var hash = item.get(['hash']);
1431+ type = hash.substring(1);
1432+ if (!tabviewIndexTable[type]) {
1433+ tabviewIndexTable[type] = index;
1434+ }
1435+ })
1436+ Y.all('.sidebox.on-page').each(function (item, index) {
1437+ var children = item.all('li a');
1438+ children.each(function (cItem, cIndex) {
1439+ return function () {
1440+ var handleClick = function (e) {
1441+ var node = Y.one(this),
1442+ hash = node.get(['hash']),
1443+ hashValue = hash.substring(1).split('_'),
1444+ type = hashValue.shift(),
1445+ ogKey = hashValue.join('_'); // in case the hash had other underscores
1446+ if (tabviewIndexTable[type] > -1 && tabviewIndexTable[type] !== currentTab) {
1447+ currentTab = tabviewIndexTable[type];
1448+ tabview.selectChild(tabviewIndexTable[type]);
1449+ }
1450+ }
1451+ Y.on('click', handleClick, cItem)
1452+ }()
1453+ })
1454+ });
1455+ }
1456+ }
1457+});
1458
1459=== added file '0.1/ambiance/js/yuidoc-theme/assets/js/yui-prettify.js'
1460--- 0.1/ambiance/js/yuidoc-theme/assets/js/yui-prettify.js 1970-01-01 00:00:00 +0000
1461+++ 0.1/ambiance/js/yuidoc-theme/assets/js/yui-prettify.js 2013-11-01 20:18:13 +0000
1462@@ -0,0 +1,44 @@
1463+/*
1464+ * Copyright 2011 Yahoo! Inc.
1465+ * All rights reserved.
1466+ *-
1467+ * Redistribution and use in source and binary forms, with or without
1468+ * modification, are permitted provided that the following conditions are met:
1469+ * * Redistributions of source code must retain the above copyright
1470+ * notice, this list of conditions and the following disclaimer.
1471+ * * Redistributions in binary form must reproduce the above copyright
1472+ * notice, this list of conditions and the following disclaimer in the
1473+ * documentation and/or other materials provided with the distribution.
1474+ * * Neither the name of the Yahoo! Inc. nor the
1475+ * names of its contributors may be used to endorse or promote products
1476+ * derived from this software without specific prior written permission.
1477+ *-
1478+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1479+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1480+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1481+ * DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
1482+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1483+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1484+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1485+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1486+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1487+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1488+ */
1489+
1490+YUI().use('node', function(Y) {
1491+ var code = Y.all('.prettyprint.linenums');
1492+ if (code.size()) {
1493+ code.each(function(c) {
1494+ var lis = c.all('ol li'),
1495+ l = 1;
1496+ lis.each(function(n) {
1497+ n.prepend('<a name="LINENUM_' + l + '"></a>');
1498+ l++;
1499+ });
1500+ });
1501+ var h = location.hash;
1502+ location.hash = '';
1503+ h = h.replace('LINE_', 'LINENUM_');
1504+ location.hash = h;
1505+ }
1506+});
1507
1508=== added directory '0.1/ambiance/js/yuidoc-theme/assets/vendor'
1509=== added directory '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify'
1510=== added file '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/CHANGES.html'
1511--- 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/CHANGES.html 1970-01-01 00:00:00 +0000
1512+++ 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/CHANGES.html 2013-11-01 20:18:13 +0000
1513@@ -0,0 +1,130 @@
1514+<html>
1515+ <head>
1516+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
1517+ <title>Change Log</title>
1518+ </head>
1519+ <body bgcolor="white">
1520+ <a style="float:right" href="README.html">README</a>
1521+
1522+ <h1>Known Issues</h1>
1523+ <ul>
1524+ <li>Perl formatting is really crappy. Partly because the author is lazy and
1525+ partly because Perl is
1526+ <a href="http://www.perlmonks.org/?node_id=663393">hard</a> to parse.
1527+ <li>On some browsers, <code>&lt;code&gt;</code> elements with newlines in the text
1528+ which use CSS to specify <code>white-space:pre</code> will have the newlines
1529+ improperly stripped if the element is not attached to the document at the time
1530+ the stripping is done. Also, on IE 6, all newlines will be stripped from
1531+ <code>&lt;code&gt;</code> elements because of the way IE6 produces
1532+ <code>innerHTML</code>. Workaround: use <code>&lt;pre&gt;</code> for code with
1533+ newlines.
1534+ </ul>
1535+
1536+ <h1>Change Log</h1>
1537+ <h2>29 March 2007</h2>
1538+ <ul>
1539+ <li>Added <a href="tests/prettify_test.html#PHP">tests</a> for PHP support
1540+ to address
1541+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=3"
1542+ >issue 3</a>.
1543+ <li>Fixed
1544+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=6"
1545+ >bug</a>: <code>prettyPrintOne</code> was not halting. This was not
1546+ reachable through the normal entry point.
1547+ <li>Fixed
1548+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=4"
1549+ >bug</a>: recursing into a script block or PHP tag that was not properly
1550+ closed would not silently drop the content.
1551+ (<a href="tests/prettify_test.html#issue4">test</a>)
1552+ <li>Fixed
1553+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=8"
1554+ >bug</a>: was eating tabs
1555+ (<a href="tests/prettify_test.html#issue8">test</a>)
1556+ <li>Fixed entity handling so that the caveat
1557+ <blockquote>
1558+ <p>Caveats: please properly escape less-thans. <tt>x&amp;lt;y</tt>
1559+ instead of <tt>x&lt;y</tt>, and use <tt>&quot;</tt> instead of
1560+ <tt>&amp;quot;</tt> for string delimiters.</p>
1561+ </blockquote>
1562+ is no longer applicable.
1563+ <li>Added noisefree's C#
1564+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=4"
1565+ >patch</a>
1566+ <li>Added a <a href="http://google-code-prettify.googlecode.com/files/prettify-small.zip">distribution</a> that has comments and
1567+ whitespace removed to reduce download size from 45.5kB to 12.8kB.
1568+ </ul>
1569+ <h2>4 Jul 2008</h2>
1570+ <ul>
1571+ <li>Added <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=17">language specific formatters</a> that are triggered by the presence
1572+ of a <code>lang-&lt;language-file-extension&gt;</code></li>
1573+ <li>Fixed <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=29">bug</a>: python handling of <code>'''string'''</code>
1574+ <li>Fixed bug: <code>/</code> in regex <code>[charsets] should not end regex</code>
1575+ </ul>
1576+ <h2>5 Jul 2008</h2>
1577+ <ul>
1578+ <li>Defined language extensions for Lisp and Lua</code>
1579+ </ul>
1580+ <h2>14 Jul 2008</h2>
1581+ <ul>
1582+ <li>Language handlers for F#, OCAML, SQL</code>
1583+ <li>Support for <code>nocode</code> spans to allow embedding of line
1584+ numbers and code annotations which should not be styled or otherwise
1585+ affect the tokenization of prettified code.
1586+ See the issue 22
1587+ <a href="tests/prettify_test.html#issue22">testcase</a>.</code>
1588+ </ul>
1589+ <h2>6 Jan 2009</h2>
1590+ <ul>
1591+ <li>Language handlers for Visual Basic, Haskell, CSS, and WikiText</li>
1592+ <li>Added <tt>.mxml</tt> extension to the markup style handler for
1593+ Flex <a href="http://en.wikipedia.org/wiki/MXML">MXML files</a>. See
1594+ <a
1595+ href="http://code.google.com/p/google-code-prettify/issues/detail?id=37"
1596+ >issue 37</a>.
1597+ <li>Added <tt>.m</tt> extension to the C style handler so that Objective
1598+ C source files properly highlight. See
1599+ <a
1600+ href="http://code.google.com/p/google-code-prettify/issues/detail?id=58"
1601+ >issue 58</a>.
1602+ <li>Changed HTML lexer to use the same embedded source mechanism as the
1603+ wiki language handler, and changed to use the registered
1604+ CSS handler for STYLE element content.
1605+ </ul>
1606+ <h2>21 May 2009</h2>
1607+ <ul>
1608+ <li>Rewrote to improve performance on large files.
1609+ See <a href="http://mikesamuel.blogspot.com/2009/05/efficient-parsing-in-javascript.html">benchmarks</a>.</li>
1610+ <li>Fixed bugs with highlighting of Haskell line comments, Lisp
1611+ number literals, Lua strings, C preprocessor directives,
1612+ newlines in Wiki code on Windows, and newlines in IE6.</li>
1613+ </ul>
1614+ <h2>14 August 2009</h2>
1615+ <ul>
1616+ <li>Fixed prettifying of <code>&lt;code&gt;</code> blocks with embedded newlines.
1617+ </ul>
1618+ <h2>3 October 2009</h2>
1619+ <ul>
1620+ <li>Fixed prettifying of XML/HTML tags that contain uppercase letters.
1621+ </ul>
1622+ <h2>19 July 2010</h2>
1623+ <ul>
1624+ <li>Added support for line numbers. Bug
1625+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=22"
1626+ >22</a></li>
1627+ <li>Added YAML support. Bug
1628+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=123"
1629+ >123</a></li>
1630+ <li>Added VHDL support courtesy Le Poussin.</li>
1631+ <li>IE performance improvements. Bug
1632+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=102"
1633+ >102</a> courtesy jacobly.</li>
1634+ <li>A variety of markup formatting fixes courtesy smain and thezbyg.</li>
1635+ <li>Fixed copy and paste in IE[678].
1636+ <li>Changed output to use <code>&amp;#160;</code> instead of
1637+ <code>&amp;nbsp;</code> so that the output works when embedded in XML.
1638+ Bug
1639+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=108"
1640+ >108</a>.</li>
1641+ </ul>
1642+ </body>
1643+</html>
1644
1645=== added file '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/COPYING'
1646--- 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/COPYING 1970-01-01 00:00:00 +0000
1647+++ 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/COPYING 2013-11-01 20:18:13 +0000
1648@@ -0,0 +1,202 @@
1649+
1650+ Apache License
1651+ Version 2.0, January 2004
1652+ http://www.apache.org/licenses/
1653+
1654+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1655+
1656+ 1. Definitions.
1657+
1658+ "License" shall mean the terms and conditions for use, reproduction,
1659+ and distribution as defined by Sections 1 through 9 of this document.
1660+
1661+ "Licensor" shall mean the copyright owner or entity authorized by
1662+ the copyright owner that is granting the License.
1663+
1664+ "Legal Entity" shall mean the union of the acting entity and all
1665+ other entities that control, are controlled by, or are under common
1666+ control with that entity. For the purposes of this definition,
1667+ "control" means (i) the power, direct or indirect, to cause the
1668+ direction or management of such entity, whether by contract or
1669+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
1670+ outstanding shares, or (iii) beneficial ownership of such entity.
1671+
1672+ "You" (or "Your") shall mean an individual or Legal Entity
1673+ exercising permissions granted by this License.
1674+
1675+ "Source" form shall mean the preferred form for making modifications,
1676+ including but not limited to software source code, documentation
1677+ source, and configuration files.
1678+
1679+ "Object" form shall mean any form resulting from mechanical
1680+ transformation or translation of a Source form, including but
1681+ not limited to compiled object code, generated documentation,
1682+ and conversions to other media types.
1683+
1684+ "Work" shall mean the work of authorship, whether in Source or
1685+ Object form, made available under the License, as indicated by a
1686+ copyright notice that is included in or attached to the work
1687+ (an example is provided in the Appendix below).
1688+
1689+ "Derivative Works" shall mean any work, whether in Source or Object
1690+ form, that is based on (or derived from) the Work and for which the
1691+ editorial revisions, annotations, elaborations, or other modifications
1692+ represent, as a whole, an original work of authorship. For the purposes
1693+ of this License, Derivative Works shall not include works that remain
1694+ separable from, or merely link (or bind by name) to the interfaces of,
1695+ the Work and Derivative Works thereof.
1696+
1697+ "Contribution" shall mean any work of authorship, including
1698+ the original version of the Work and any modifications or additions
1699+ to that Work or Derivative Works thereof, that is intentionally
1700+ submitted to Licensor for inclusion in the Work by the copyright owner
1701+ or by an individual or Legal Entity authorized to submit on behalf of
1702+ the copyright owner. For the purposes of this definition, "submitted"
1703+ means any form of electronic, verbal, or written communication sent
1704+ to the Licensor or its representatives, including but not limited to
1705+ communication on electronic mailing lists, source code control systems,
1706+ and issue tracking systems that are managed by, or on behalf of, the
1707+ Licensor for the purpose of discussing and improving the Work, but
1708+ excluding communication that is conspicuously marked or otherwise
1709+ designated in writing by the copyright owner as "Not a Contribution."
1710+
1711+ "Contributor" shall mean Licensor and any individual or Legal Entity
1712+ on behalf of whom a Contribution has been received by Licensor and
1713+ subsequently incorporated within the Work.
1714+
1715+ 2. Grant of Copyright License. Subject to the terms and conditions of
1716+ this License, each Contributor hereby grants to You a perpetual,
1717+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
1718+ copyright license to reproduce, prepare Derivative Works of,
1719+ publicly display, publicly perform, sublicense, and distribute the
1720+ Work and such Derivative Works in Source or Object form.
1721+
1722+ 3. Grant of Patent License. Subject to the terms and conditions of
1723+ this License, each Contributor hereby grants to You a perpetual,
1724+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
1725+ (except as stated in this section) patent license to make, have made,
1726+ use, offer to sell, sell, import, and otherwise transfer the Work,
1727+ where such license applies only to those patent claims licensable
1728+ by such Contributor that are necessarily infringed by their
1729+ Contribution(s) alone or by combination of their Contribution(s)
1730+ with the Work to which such Contribution(s) was submitted. If You
1731+ institute patent litigation against any entity (including a
1732+ cross-claim or counterclaim in a lawsuit) alleging that the Work
1733+ or a Contribution incorporated within the Work constitutes direct
1734+ or contributory patent infringement, then any patent licenses
1735+ granted to You under this License for that Work shall terminate
1736+ as of the date such litigation is filed.
1737+
1738+ 4. Redistribution. You may reproduce and distribute copies of the
1739+ Work or Derivative Works thereof in any medium, with or without
1740+ modifications, and in Source or Object form, provided that You
1741+ meet the following conditions:
1742+
1743+ (a) You must give any other recipients of the Work or
1744+ Derivative Works a copy of this License; and
1745+
1746+ (b) You must cause any modified files to carry prominent notices
1747+ stating that You changed the files; and
1748+
1749+ (c) You must retain, in the Source form of any Derivative Works
1750+ that You distribute, all copyright, patent, trademark, and
1751+ attribution notices from the Source form of the Work,
1752+ excluding those notices that do not pertain to any part of
1753+ the Derivative Works; and
1754+
1755+ (d) If the Work includes a "NOTICE" text file as part of its
1756+ distribution, then any Derivative Works that You distribute must
1757+ include a readable copy of the attribution notices contained
1758+ within such NOTICE file, excluding those notices that do not
1759+ pertain to any part of the Derivative Works, in at least one
1760+ of the following places: within a NOTICE text file distributed
1761+ as part of the Derivative Works; within the Source form or
1762+ documentation, if provided along with the Derivative Works; or,
1763+ within a display generated by the Derivative Works, if and
1764+ wherever such third-party notices normally appear. The contents
1765+ of the NOTICE file are for informational purposes only and
1766+ do not modify the License. You may add Your own attribution
1767+ notices within Derivative Works that You distribute, alongside
1768+ or as an addendum to the NOTICE text from the Work, provided
1769+ that such additional attribution notices cannot be construed
1770+ as modifying the License.
1771+
1772+ You may add Your own copyright statement to Your modifications and
1773+ may provide additional or different license terms and conditions
1774+ for use, reproduction, or distribution of Your modifications, or
1775+ for any such Derivative Works as a whole, provided Your use,
1776+ reproduction, and distribution of the Work otherwise complies with
1777+ the conditions stated in this License.
1778+
1779+ 5. Submission of Contributions. Unless You explicitly state otherwise,
1780+ any Contribution intentionally submitted for inclusion in the Work
1781+ by You to the Licensor shall be under the terms and conditions of
1782+ this License, without any additional terms or conditions.
1783+ Notwithstanding the above, nothing herein shall supersede or modify
1784+ the terms of any separate license agreement you may have executed
1785+ with Licensor regarding such Contributions.
1786+
1787+ 6. Trademarks. This License does not grant permission to use the trade
1788+ names, trademarks, service marks, or product names of the Licensor,
1789+ except as required for reasonable and customary use in describing the
1790+ origin of the Work and reproducing the content of the NOTICE file.
1791+
1792+ 7. Disclaimer of Warranty. Unless required by applicable law or
1793+ agreed to in writing, Licensor provides the Work (and each
1794+ Contributor provides its Contributions) on an "AS IS" BASIS,
1795+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1796+ implied, including, without limitation, any warranties or conditions
1797+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
1798+ PARTICULAR PURPOSE. You are solely responsible for determining the
1799+ appropriateness of using or redistributing the Work and assume any
1800+ risks associated with Your exercise of permissions under this License.
1801+
1802+ 8. Limitation of Liability. In no event and under no legal theory,
1803+ whether in tort (including negligence), contract, or otherwise,
1804+ unless required by applicable law (such as deliberate and grossly
1805+ negligent acts) or agreed to in writing, shall any Contributor be
1806+ liable to You for damages, including any direct, indirect, special,
1807+ incidental, or consequential damages of any character arising as a
1808+ result of this License or out of the use or inability to use the
1809+ Work (including but not limited to damages for loss of goodwill,
1810+ work stoppage, computer failure or malfunction, or any and all
1811+ other commercial damages or losses), even if such Contributor
1812+ has been advised of the possibility of such damages.
1813+
1814+ 9. Accepting Warranty or Additional Liability. While redistributing
1815+ the Work or Derivative Works thereof, You may choose to offer,
1816+ and charge a fee for, acceptance of support, warranty, indemnity,
1817+ or other liability obligations and/or rights consistent with this
1818+ License. However, in accepting such obligations, You may act only
1819+ on Your own behalf and on Your sole responsibility, not on behalf
1820+ of any other Contributor, and only if You agree to indemnify,
1821+ defend, and hold each Contributor harmless for any liability
1822+ incurred by, or claims asserted against, such Contributor by reason
1823+ of your accepting any such warranty or additional liability.
1824+
1825+ END OF TERMS AND CONDITIONS
1826+
1827+ APPENDIX: How to apply the Apache License to your work.
1828+
1829+ To apply the Apache License to your work, attach the following
1830+ boilerplate notice, with the fields enclosed by brackets "[]"
1831+ replaced with your own identifying information. (Don't include
1832+ the brackets!) The text should be enclosed in the appropriate
1833+ comment syntax for the file format. We also recommend that a
1834+ file or class name and description of purpose be included on the
1835+ same "printed page" as the copyright notice for easier
1836+ identification within third-party archives.
1837+
1838+ Copyright [yyyy] [name of copyright owner]
1839+
1840+ Licensed under the Apache License, Version 2.0 (the "License");
1841+ you may not use this file except in compliance with the License.
1842+ You may obtain a copy of the License at
1843+
1844+ http://www.apache.org/licenses/LICENSE-2.0
1845+
1846+ Unless required by applicable law or agreed to in writing, software
1847+ distributed under the License is distributed on an "AS IS" BASIS,
1848+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1849+ See the License for the specific language governing permissions and
1850+ limitations under the License.
1851
1852=== added file '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/README.html'
1853--- 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/README.html 1970-01-01 00:00:00 +0000
1854+++ 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/README.html 2013-11-01 20:18:13 +0000
1855@@ -0,0 +1,203 @@
1856+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
1857+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1858+
1859+<html>
1860+ <head>
1861+ <title>Javascript code prettifier</title>
1862+
1863+ <link href="src/prettify.css" type="text/css" rel="stylesheet" />
1864+
1865+ <script src="src/prettify.js" type="text/javascript"></script>
1866+
1867+ <style type="text/css">
1868+ body { margin-left: .5in }
1869+ h1, h2, h3, h4, .footer { margin-left: -.4in; }
1870+ </style>
1871+ </head>
1872+
1873+ <body onload="prettyPrint()" bgcolor="white">
1874+ <small style="float: right">Languages : <a href="README-zh-Hans.html">CH</a></small>
1875+ <h1>Javascript code prettifier</h1>
1876+
1877+ <h2>Setup</h2>
1878+ <ol>
1879+ <li><a href="http://code.google.com/p/google-code-prettify/downloads/list">Download</a> a distribution
1880+ <li>Include the script and stylesheets in your document
1881+ (you will need to make sure the css and js file are on your server, and
1882+ adjust the paths in the <tt>script</tt> and <tt>link</tt> tag)
1883+ <pre class="prettyprint">
1884+&lt;link href="prettify.css" type="text/css" rel="stylesheet" />
1885+&lt;script type="text/javascript" src="prettify.js">&lt;/script></pre>
1886+ <li>Add <code class="prettyprint lang-html">onload="prettyPrint()"</code> to your
1887+ document's body tag.
1888+ <li>Modify the stylesheet to get the coloring you prefer</li>
1889+ </ol>
1890+
1891+ <h2>Usage</h2>
1892+ <p>Put code snippets in
1893+ <tt>&lt;pre class="prettyprint"&gt;...&lt;/pre&gt;</tt>
1894+ or <tt>&lt;code class="prettyprint"&gt;...&lt;/code&gt;</tt>
1895+ and it will automatically be pretty printed.
1896+
1897+ <table summary="code examples">
1898+ <tr>
1899+ <th>The original
1900+ <th>Prettier
1901+ <tr>
1902+ <td><pre style="border: 1px solid #888;padding: 2px"
1903+ ><a name="voila1"></a>class Voila {
1904+public:
1905+ // Voila
1906+ static const string VOILA = "Voila";
1907+
1908+ // will not interfere with embedded <a href="#voila1">tags</a>.
1909+}</pre>
1910+
1911+ <td><pre class="prettyprint"><a name="voila2"></a>class Voila {
1912+public:
1913+ // Voila
1914+ static const string VOILA = "Voila";
1915+
1916+ // will not interfere with embedded <a href="#voila2">tags</a>.
1917+}</pre>
1918+ </table>
1919+
1920+ <h2>FAQ</h2>
1921+ <h3 id="langs">Which languages does it work for?</h3>
1922+ <p>The comments in <tt>prettify.js</tt> are authoritative but the lexer
1923+ should work on a number of languages including C and friends,
1924+ Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, and Makefiles.
1925+ It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl
1926+ and Ruby, but, because of commenting conventions, doesn't work on
1927+ Smalltalk, or CAML-like languages.</p>
1928+
1929+ <p>LISPy languages are supported via an extension:
1930+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lisp.js"
1931+ ><code>lang-lisp.js</code></a>.</p>
1932+ <p>And similarly for
1933+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-css.js"
1934+ ><code>CSS</code></a>,
1935+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-hs.js"
1936+ ><code>Haskell</code></a>,
1937+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lua.js"
1938+ ><code>Lua</code></a>,
1939+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-ml.js"
1940+ ><code>OCAML, SML, F#</code></a>,
1941+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-vb.js"
1942+ ><code>Visual Basic</code></a>,
1943+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js"
1944+ ><code>SQL</code></a>,
1945+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-proto.js"
1946+ ><code>Protocol Buffers</code></a>, and
1947+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-wiki.js"
1948+ ><code>WikiText</code></a>..
1949+
1950+ <p>If you'd like to add an extension for your favorite language, please
1951+ look at <tt>src/lang-lisp.js</tt> and file an
1952+ <a href="http://code.google.com/p/google-code-prettify/issues/list"
1953+ >issue</a> including your language extension, and a testcase.</p>
1954+
1955+ <h3>How do I specify which language my code is in?</h3>
1956+ <p>You don't need to specify the language since <code>prettyprint()</code>
1957+ will guess. You can specify a language by specifying the language extension
1958+ along with the <code>prettyprint</code> class like so:</p>
1959+ <pre class="prettyprint lang-html"
1960+>&lt;pre class=&quot;prettyprint <b>lang-html</b>&quot;&gt;
1961+ The lang-* class specifies the language file extensions.
1962+ File extensions supported by default include
1963+ "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
1964+ "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
1965+ "xhtml", "xml", "xsl".
1966+&lt;/pre&gt;</pre>
1967+
1968+ <h3>It doesn't work on <tt>&lt;obfuscated code sample&gt;</tt>?</h3>
1969+ <p>Yes. Prettifying obfuscated code is like putting lipstick on a pig
1970+ &mdash; i.e. outside the scope of this tool.</p>
1971+
1972+ <h3>Which browsers does it work with?</h3>
1973+ <p>It's been tested with IE 6, Firefox 1.5 &amp; 2, and Safari 2.0.4.
1974+ Look at <a href="tests/prettify_test.html">the test page</a> to see if it
1975+ works in your browser.</p>
1976+
1977+ <h3>What's changed?</h3>
1978+ <p>See the <a href="CHANGES.html">change log</a></p>
1979+
1980+ <h3>Why doesn't Prettyprinting of strings work on WordPress?</h3>
1981+ <p>Apparently wordpress does "smart quoting" which changes close quotes.
1982+ This causes end quotes to not match up with open quotes.
1983+ <p>This breaks prettifying as well as copying and pasting of code samples.
1984+ See
1985+ <a href="http://wordpress.org/support/topic/125038"
1986+ >WordPress's help center</a> for info on how to stop smart quoting of code
1987+ snippets.</p>
1988+
1989+ <h3 id="linenums">How do I put line numbers in my code?</h3>
1990+ <p>You can use the <code>linenums</code> class to turn on line
1991+ numbering. If your code doesn't start at line number 1, you can
1992+ add a colon and a line number to the end of that class as in
1993+ <code>linenums:52</code>.
1994+
1995+ <p>For example
1996+<pre class="prettyprint">&lt;pre class="prettyprint linenums:<b>4</b>"
1997+&gt;// This is line 4.
1998+foo();
1999+bar();
2000+baz();
2001+boo();
2002+far();
2003+faz();
2004+&lt;pre&gt;</pre>
2005+ produces
2006+<pre class="prettyprint linenums:4"
2007+>// This is line 4.
2008+foo();
2009+bar();
2010+baz();
2011+boo();
2012+far();
2013+faz();
2014+</pre>
2015+
2016+ <h3>How do I prevent a portion of markup from being marked as code?</h3>
2017+ <p>You can use the <code>nocode</code> class to identify a span of markup
2018+ that is not code.
2019+<pre class="prettyprint">&lt;pre class=prettyprint&gt;
2020+int x = foo(); /* This is a comment &lt;span class="nocode"&gt;This is not code&lt;/span&gt;
2021+ Continuation of comment */
2022+int y = bar();
2023+&lt;/pre&gt;</pre>
2024+produces
2025+<pre class="prettyprint">
2026+int x = foo(); /* This is a comment <span class="nocode">This is not code</span>
2027+ Continuation of comment */
2028+int y = bar();
2029+</pre>
2030+
2031+ <p>For a more complete example see the issue22
2032+ <a href="tests/prettify_test.html#issue22">testcase</a>.</p>
2033+
2034+ <h3>I get an error message "a is not a function" or "opt_whenDone is not a function"</h3>
2035+ <p>If you are calling <code>prettyPrint</code> via an event handler, wrap it in a function.
2036+ Instead of doing
2037+ <blockquote>
2038+ <code class="prettyprint lang-js"
2039+ >addEventListener('load', prettyPrint, false);</code>
2040+ </blockquote>
2041+ wrap it in a closure like
2042+ <blockquote>
2043+ <code class="prettyprint lang-js"
2044+ >addEventListener('load', function (event) { prettyPrint() }, false);</code>
2045+ </blockquote>
2046+ so that the browser does not pass an event object to <code>prettyPrint</code> which
2047+ will confuse it.
2048+
2049+ <br><br><br>
2050+
2051+ <div class="footer">
2052+<!-- Created: Tue Oct 3 17:51:56 PDT 2006 -->
2053+<!-- hhmts start -->
2054+Last modified: Wed Jul 19 13:56:00 PST 2010
2055+<!-- hhmts end -->
2056+ </div>
2057+ </body>
2058+</html>
2059
2060=== added file '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.css'
2061--- 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.css 1970-01-01 00:00:00 +0000
2062+++ 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.css 2013-11-01 20:18:13 +0000
2063@@ -0,0 +1,1 @@
2064+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
2065\ No newline at end of file
2066
2067=== added file '0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.js'
2068--- 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.js 1970-01-01 00:00:00 +0000
2069+++ 0.1/ambiance/js/yuidoc-theme/assets/vendor/prettify/prettify-min.js 2013-11-01 20:18:13 +0000
2070@@ -0,0 +1,28 @@
2071+/*
2072+ * Copyright 2011 Yahoo! Inc.
2073+ * All rights reserved.
2074+ *-
2075+ * Redistribution and use in source and binary forms, with or without
2076+ * modification, are permitted provided that the following conditions are met:
2077+ * * Redistributions of source code must retain the above copyright
2078+ * notice, this list of conditions and the following disclaimer.
2079+ * * Redistributions in binary form must reproduce the above copyright
2080+ * notice, this list of conditions and the following disclaimer in the
2081+ * documentation and/or other materials provided with the distribution.
2082+ * * Neither the name of the Yahoo! Inc. nor the
2083+ * names of its contributors may be used to endorse or promote products
2084+ * derived from this software without specific prior written permission.
2085+ *-
2086+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
2087+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2088+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2089+ * DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
2090+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2091+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2092+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
2093+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2094+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2095+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2096+ */
2097+
2098+window.PR_SHOULD_USE_CONTINUATION=true;var prettyPrintOne;var prettyPrint;(function(){var O=window;var j=["break,continue,do,else,for,if,return,while"];var v=[j,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var q=[v,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var m=[q,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var y=[q,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var T=[y,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"];var s="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes";var x=[q,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var t="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var J=[j,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var g=[j,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var I=[j,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var B=[m,T,x,t+J,g,I];var f=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;var D="str";var A="kwd";var k="com";var Q="typ";var H="lit";var M="pun";var G="pln";var n="tag";var F="dec";var K="src";var R="atn";var o="atv";var P="nocode";var N="(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function l(ab){var af=0;var U=false;var ae=false;for(var X=0,W=ab.length;X<W;++X){var ag=ab[X];if(ag.ignoreCase){ae=true}else{if(/[a-z]/i.test(ag.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){U=true;ae=false;break}}}var aa={b:8,t:9,n:10,v:11,f:12,r:13};function ad(aj){var ai=aj.charCodeAt(0);if(ai!==92){return ai}var ah=aj.charAt(1);ai=aa[ah];if(ai){return ai}else{if("0"<=ah&&ah<="7"){return parseInt(aj.substring(1),8)}else{if(ah==="u"||ah==="x"){return parseInt(aj.substring(2),16)}else{return aj.charCodeAt(1)}}}}function V(ah){if(ah<32){return(ah<16?"\\x0":"\\x")+ah.toString(16)}var ai=String.fromCharCode(ah);return(ai==="\\"||ai==="-"||ai==="]"||ai==="^")?"\\"+ai:ai}function Z(an){var ar=an.substring(1,an.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ah=[];var ap=ar[0]==="^";var ao=["["];if(ap){ao.push("^")}for(var at=ap?1:0,al=ar.length;at<al;++at){var aj=ar[at];if(/\\[bdsw]/i.test(aj)){ao.push(aj)}else{var ai=ad(aj);var am;if(at+2<al&&"-"===ar[at+1]){am=ad(ar[at+2]);at+=2}else{am=ai}ah.push([ai,am]);if(!(am<65||ai>122)){if(!(am<65||ai>90)){ah.push([Math.max(65,ai)|32,Math.min(am,90)|32])}if(!(am<97||ai>122)){ah.push([Math.max(97,ai)&~32,Math.min(am,122)&~32])}}}}ah.sort(function(aw,av){return(aw[0]-av[0])||(av[1]-aw[1])});var ak=[];var aq=[];for(var at=0;at<ah.length;++at){var au=ah[at];if(au[0]<=aq[1]+1){aq[1]=Math.max(aq[1],au[1])}else{ak.push(aq=au)}}for(var at=0;at<ak.length;++at){var au=ak[at];ao.push(V(au[0]));if(au[1]>au[0]){if(au[1]+1>au[0]){ao.push("-")}ao.push(V(au[1]))}}ao.push("]");return ao.join("")}function Y(an){var al=an.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var aj=al.length;var ap=[];for(var am=0,ao=0;am<aj;++am){var ai=al[am];if(ai==="("){++ao}else{if("\\"===ai.charAt(0)){var ah=+ai.substring(1);if(ah){if(ah<=ao){ap[ah]=-1}else{al[am]=V(ah)}}}}}for(var am=1;am<ap.length;++am){if(-1===ap[am]){ap[am]=++af}}for(var am=0,ao=0;am<aj;++am){var ai=al[am];if(ai==="("){++ao;if(!ap[ao]){al[am]="(?:"}}else{if("\\"===ai.charAt(0)){var ah=+ai.substring(1);if(ah&&ah<=ao){al[am]="\\"+ap[ah]}}}}for(var am=0;am<aj;++am){if("^"===al[am]&&"^"!==al[am+1]){al[am]=""}}if(an.ignoreCase&&U){for(var am=0;am<aj;++am){var ai=al[am];var ak=ai.charAt(0);if(ai.length>=2&&ak==="["){al[am]=Z(ai)}else{if(ak!=="\\"){al[am]=ai.replace(/[a-zA-Z]/g,function(aq){var ar=aq.charCodeAt(0);return"["+String.fromCharCode(ar&~32,ar|32)+"]"})}}}}return al.join("")}var ac=[];for(var X=0,W=ab.length;X<W;++X){var ag=ab[X];if(ag.global||ag.multiline){throw new Error(""+ag)}ac.push("(?:"+Y(ag)+")")}return new RegExp(ac.join("|"),ae?"gi":"g")}function b(aa,Y){var W=/(?:^|\s)nocode(?:\s|$)/;var ab=[];var Z=0;var X=[];var V=0;function U(ac){switch(ac.nodeType){case 1:if(W.test(ac.className)){return}for(var af=ac.firstChild;af;af=af.nextSibling){U(af)}var ae=ac.nodeName.toLowerCase();if("br"===ae||"li"===ae){ab[V]="\n";X[V<<1]=Z++;X[(V++<<1)|1]=ac}break;case 3:case 4:var ad=ac.nodeValue;if(ad.length){if(!Y){ad=ad.replace(/[ \t\r\n]+/g," ")}else{ad=ad.replace(/\r\n?/g,"\n")}ab[V]=ad;X[V<<1]=Z;Z+=ad.length;X[(V++<<1)|1]=ac}break}}U(aa);return{sourceCode:ab.join("").replace(/\n$/,""),spans:X}}function C(U,W,Y,V){if(!W){return}var X={sourceCode:W,basePos:U};Y(X);V.push.apply(V,X.decorations)}var w=/\S/;function p(U){var X=undefined;for(var W=U.firstChild;W;W=W.nextSibling){var V=W.nodeType;X=(V===1)?(X?U:W):(V===3)?(w.test(W.nodeValue)?U:X):X}return X===U?undefined:X}function h(W,V){var U={};var X;(function(){var af=W.concat(V);var aj=[];var ai={};for(var ad=0,ab=af.length;ad<ab;++ad){var aa=af[ad];var ae=aa[3];if(ae){for(var ag=ae.length;--ag>=0;){U[ae.charAt(ag)]=aa}}var ah=aa[1];var ac=""+ah;if(!ai.hasOwnProperty(ac)){aj.push(ah);ai[ac]=null}}aj.push(/[\0-\uffff]/);X=l(aj)})();var Z=V.length;var Y=function(aj){var ab=aj.sourceCode,aa=aj.basePos;var af=[aa,G];var ah=0;var ap=ab.match(X)||[];var al={};for(var ag=0,at=ap.length;ag<at;++ag){var ai=ap[ag];var ar=al[ai];var ak=void 0;var ao;if(typeof ar==="string"){ao=false}else{var ac=U[ai.charAt(0)];if(ac){ak=ai.match(ac[1]);ar=ac[0]}else{for(var aq=0;aq<Z;++aq){ac=V[aq];ak=ai.match(ac[1]);if(ak){ar=ac[0];break}}if(!ak){ar=G}}ao=ar.length>=5&&"lang-"===ar.substring(0,5);if(ao&&!(ak&&typeof ak[1]==="string")){ao=false;ar=K}if(!ao){al[ai]=ar}}var ad=ah;ah+=ai.length;if(!ao){af.push(aa+ad,ar)}else{var an=ak[1];var am=ai.indexOf(an);var ae=am+an.length;if(ak[2]){ae=ai.length-ak[2].length;am=ae-an.length}var au=ar.substring(5);C(aa+ad,ai.substring(0,am),Y,af);C(aa+ad+am,an,r(au,an),af);C(aa+ad+ae,ai.substring(ae),Y,af)}}aj.decorations=af};return Y}function i(V){var Y=[],U=[];if(V.tripleQuotedStrings){Y.push([D,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(V.multiLineStrings){Y.push([D,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{Y.push([D,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(V.verbatimStrings){U.push([D,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var ab=V.hashComments;if(ab){if(V.cStyleComments){if(ab>1){Y.push([k,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{Y.push([k,/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}U.push([D,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])}else{Y.push([k,/^#[^\r\n]*/,null,"#"])}}if(V.cStyleComments){U.push([k,/^\/\/[^\r\n]*/,null]);U.push([k,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(V.regexLiterals){var aa=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");U.push(["lang-regex",new RegExp("^"+N+"("+aa+")")])}var X=V.types;if(X){U.push([Q,X])}var W=(""+V.keywords).replace(/^ | $/g,"");if(W.length){U.push([A,new RegExp("^(?:"+W.replace(/[\s,]+/g,"|")+")\\b"),null])}Y.push([G,/^\s+/,null," \r\n\t\xA0"]);var Z=/^.[^\s\w\.$@\'\"\`\/\\]*/;U.push([H,/^@[a-z_$][a-z_$@0-9]*/i,null],[Q,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[G,/^[a-z_$][a-z_$@0-9]*/i,null],[H,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[G,/^\\[\s\S]?/,null],[M,Z,null]);return h(Y,U)}var L=i({keywords:B,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function S(W,ah,aa){var V=/(?:^|\s)nocode(?:\s|$)/;var ac=/\r\n?|\n/;var ad=W.ownerDocument;var ag=ad.createElement("li");while(W.firstChild){ag.appendChild(W.firstChild)}var X=[ag];function af(am){switch(am.nodeType){case 1:if(V.test(am.className)){break}if("br"===am.nodeName){ae(am);if(am.parentNode){am.parentNode.removeChild(am)}}else{for(var ao=am.firstChild;ao;ao=ao.nextSibling){af(ao)}}break;case 3:case 4:if(aa){var an=am.nodeValue;var ak=an.match(ac);if(ak){var aj=an.substring(0,ak.index);am.nodeValue=aj;var ai=an.substring(ak.index+ak[0].length);if(ai){var al=am.parentNode;al.insertBefore(ad.createTextNode(ai),am.nextSibling)}ae(am);if(!aj){am.parentNode.removeChild(am)}}}break}}function ae(al){while(!al.nextSibling){al=al.parentNode;if(!al){return}}function aj(am,at){var ar=at?am.cloneNode(false):am;var ap=am.parentNode;if(ap){var aq=aj(ap,1);var ao=am.nextSibling;aq.appendChild(ar);for(var an=ao;an;an=ao){ao=an.nextSibling;aq.appendChild(an)}}return ar}var ai=aj(al.nextSibling,0);for(var ak;(ak=ai.parentNode)&&ak.nodeType===1;){ai=ak}X.push(ai)}for(var Z=0;Z<X.length;++Z){af(X[Z])}if(ah===(ah|0)){X[0].setAttribute("value",ah)}var ab=ad.createElement("ol");ab.className="linenums";var Y=Math.max(0,((ah-1))|0)||0;for(var Z=0,U=X.length;Z<U;++Z){ag=X[Z];ag.className="L"+((Z+Y)%10);if(!ag.firstChild){ag.appendChild(ad.createTextNode("\xA0"))}ab.appendChild(ag)}W.appendChild(ab)}function E(af){var X=/\bMSIE\s(\d+)/.exec(navigator.userAgent);X=X&&+X[1]<=8;var ao=/\n/g;var an=af.sourceCode;var ap=an.length;var Y=0;var ad=af.spans;var V=ad.length;var aj=0;var aa=af.decorations;var ab=aa.length;var ac=0;aa[ab]=ap;var av,at;for(at=av=0;at<ab;){if(aa[at]!==aa[at+2]){aa[av++]=aa[at++];aa[av++]=aa[at++]}else{at+=2}}ab=av;for(at=av=0;at<ab;){var aw=aa[at];var ae=aa[at+1];var Z=at+2;while(Z+2<=ab&&aa[Z+1]===ae){Z+=2}aa[av++]=aw;aa[av++]=ae;at=Z}ab=aa.length=av;var au=af.sourceNode;var ak;if(au){ak=au.style.display;au.style.display="none"}try{var ah=null;while(aj<V){var ai=ad[aj];var U=ad[aj+2]||ap;var ar=aa[ac+2]||ap;var Z=Math.min(U,ar);var am=ad[aj+1];var W;if(am.nodeType!==1&&(W=an.substring(Y,Z))){if(X){W=W.replace(ao,"\r")}am.nodeValue=W;var al=am.ownerDocument;var aq=al.createElement("span");aq.className=aa[ac+1];var ag=am.parentNode;ag.replaceChild(aq,am);aq.appendChild(am);if(Y<U){ad[aj+1]=am=al.createTextNode(an.substring(Z,U));ag.insertBefore(am,aq.nextSibling)}}Y=Z;if(Y>=U){aj+=2}if(Y>=ar){ac+=2}}}finally{if(au){au.style.display=ak}}}var u={};function d(W,X){for(var U=X.length;--U>=0;){var V=X[U];if(!u.hasOwnProperty(V)){u[V]=W}else{if(O.console){console.warn("cannot override language handler %s",V)}}}}function r(V,U){if(!(V&&u.hasOwnProperty(V))){V=/^\s*</.test(U)?"default-markup":"default-code"}return u[V]}d(L,["default-code"]);d(h([],[[G,/^[^<?]+/],[F,/^<!\w[^>]*(?:>|$)/],[k,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[M,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);d(h([[G,/^[\s]+/,null," \t\r\n"],[o,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[n,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[R,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[M,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);d(h([],[[o,/^[\s\S]+/]]),["uq.val"]);d(i({keywords:m,hashComments:true,cStyleComments:true,types:f}),["c","cc","cpp","cxx","cyc","m"]);d(i({keywords:"null,true,false"}),["json"]);d(i({keywords:T,hashComments:true,cStyleComments:true,verbatimStrings:true,types:f}),["cs"]);d(i({keywords:y,cStyleComments:true}),["java"]);d(i({keywords:I,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);d(i({keywords:J,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);d(i({keywords:t,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);d(i({keywords:g,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);d(i({keywords:x,cStyleComments:true,regexLiterals:true}),["js"]);d(i({keywords:s,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);d(h([],[[D,/^[\s\S]+/]]),["regex"]);function e(X){var W=X.langExtension;try{var U=b(X.sourceNode,X.pre);var V=U.sourceCode;X.sourceCode=V;X.spans=U.spans;X.basePos=0;r(W,V)(X);E(X)}catch(Y){if(O.console){console.log(Y&&Y.stack?Y.stack:Y)}}}function z(Y,X,W){var U=document.createElement("pre");U.innerHTML=Y;if(W){S(U,W,true)}var V={langExtension:X,numberLines:W,sourceNode:U,pre:1};e(V);return U.innerHTML}function c(aj){function ab(al){return document.getElementsByTagName(al)}var ah=[ab("pre"),ab("code"),ab("xmp")];var V=[];for(var ae=0;ae<ah.length;++ae){for(var ac=0,Y=ah[ae].length;ac<Y;++ac){V.push(ah[ae][ac])}}ah=null;var Z=Date;if(!Z.now){Z={now:function(){return +(new Date)}}}var aa=0;var U;var af=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ak=/\bprettyprint\b/;var W=/\bprettyprinted\b/;var ag=/pre|xmp/i;var ai=/^code$/i;var ad=/^(?:pre|code|xmp)$/i;function X(){var ar=(O.PR_SHOULD_USE_CONTINUATION?Z.now()+250:Infinity);for(;aa<V.length&&Z.now()<ar;aa++){var at=V[aa];var au=at.className;if(ak.test(au)&&!W.test(au)){var aw=false;for(var ao=at.parentNode;ao;ao=ao.parentNode){var ax=ao.tagName;if(ad.test(ax)&&ao.className&&ak.test(ao.className)){aw=true;break}}if(!aw){at.className+=" prettyprinted";var aq=au.match(af);var am;if(!aq&&(am=p(at))&&ai.test(am.tagName)){aq=am.className.match(af)}if(aq){aq=aq[1]}var ap;if(ag.test(at.tagName)){ap=1}else{var an=at.currentStyle;var al=(an?an.whiteSpace:(document.defaultView&&document.defaultView.getComputedStyle)?document.defaultView.getComputedStyle(at,null).getPropertyValue("white-space"):0);ap=al&&"pre"===al.substring(0,3)}var av=at.className.match(/\blinenums\b(?::(\d+))?/);av=av?av[1]&&av[1].length?+av[1]:true:false;if(av){S(at,av,ap)}U={langExtension:aq,sourceNode:at,numberLines:av,pre:ap};e(U)}}}if(aa<V.length){setTimeout(X,250)}else{if(aj){aj()}}}X()}var a=O.PR={createSimpleLexer:h,registerLangHandler:d,sourceDecorator:i,PR_ATTRIB_NAME:R,PR_ATTRIB_VALUE:o,PR_COMMENT:k,PR_DECLARATION:F,PR_KEYWORD:A,PR_LITERAL:H,PR_NOCODE:P,PR_PLAIN:G,PR_PUNCTUATION:M,PR_SOURCE:K,PR_STRING:D,PR_TAG:n,PR_TYPE:Q,prettyPrintOne:O.prettyPrintOne=z,prettyPrint:O.prettyPrint=c};if(typeof define==="function"&&define.amd){define("google-code-prettify",[],function(){return a})}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
2099
2100=== added directory '0.1/ambiance/js/yuidoc-theme/layouts'
2101=== added file '0.1/ambiance/js/yuidoc-theme/layouts/main.handlebars'
2102--- 0.1/ambiance/js/yuidoc-theme/layouts/main.handlebars 1970-01-01 00:00:00 +0000
2103+++ 0.1/ambiance/js/yuidoc-theme/layouts/main.handlebars 2013-11-01 20:18:13 +0000
2104@@ -0,0 +1,38 @@
2105+<!DOCTYPE html>
2106+<html lang="en">
2107+<head>
2108+ <meta charset="utf-8">
2109+ <title>{{htmlTitle}}</title>
2110+ <link rel="stylesheet" href="{{yuiGridsUrl}}">
2111+ <link rel="stylesheet" href="{{projectAssets}}/vendor/prettify/prettify-min.css">
2112+ <link rel="stylesheet" href="{{projectAssets}}/css/main.css" id="site_styles">
2113+ <script src="{{yuiSeedUrl}}"></script>
2114+</head>
2115+<body class="yui3-skin-sam">
2116+
2117+<div id="doc">
2118+ <div id="hd" class="yui3-g header">
2119+ <div class="yui3-u-3-4">
2120+ <h1><a href="{{projectRoot}}index.html"><img src="{{projectAssets}}/css/logo.png">{{title}}</a></h1>
2121+ </div>
2122+ <div class="yui3-u-1-4 version">
2123+ <em>API Docs for: {{projectVersion}}</em>
2124+ </div>
2125+ </div>
2126+ <div class="yui3-g">
2127+
2128+ <div id="sidebar" class="yui3-u">
2129+ {{>sidebar}}
2130+ </div>
2131+
2132+ <div id="main" class="yui3-u">
2133+ <div class="content">{{>layout_content}}</div>
2134+ </div>
2135+ </div>
2136+</div>
2137+<script src="{{projectAssets}}/vendor/prettify/prettify-min.js"></script>
2138+<script>prettyPrint();</script>
2139+<script src="{{projectAssets}}/js/yui-prettify.js"></script>
2140+<script src="{{projectAssets}}/js/tabs.js"></script>
2141+</body>
2142+</html>
2143
2144=== added directory '0.1/ambiance/js/yuidoc-theme/partials'
2145=== added file '0.1/ambiance/js/yuidoc-theme/partials/attrs.handlebars'
2146--- 0.1/ambiance/js/yuidoc-theme/partials/attrs.handlebars 1970-01-01 00:00:00 +0000
2147+++ 0.1/ambiance/js/yuidoc-theme/partials/attrs.handlebars 2013-11-01 20:18:13 +0000
2148@@ -0,0 +1,23 @@
2149+<a name="attrs_{{name}}"></a>
2150+<div class="attrs item">
2151+ `{{name}}` {{#if type}}<strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>{{/if}}
2152+ {{#if extended_from}}<em>`/* Extended from {{extended_from}} */`</em>{{/if}}
2153+ {{#if overwritten_from}}<em>`/* Overwritten from {{name}} */`</em>{{/if}}
2154+ <br>
2155+ <span class="foundat"><a href="../{{foundAt}}">`{{file}}:{{line}}`</a></span>
2156+ {{{attrDescription}}}
2157+ {{#if emit}}
2158+ <div class="emits">
2159+ Fires: <strong>`{{name}}Change(e)`</strong>
2160+ <p>Fires when the value for the configuration attribute `{{name}}` is changed. You can listen for the event using the `on` method if you wish to be notified before the attribute's value has changed, or using the `after` method if you wish to be notified after the attribute's value has changed.</p>
2161+ <strong>Parameters:</strong><br>
2162+ `e` <strong>&lt;EventFacade&gt;</strong> An Event Facade object with the following attribute specific properties added:
2163+ <ul>
2164+ <li>`prevVal` The value of the attribute, prior to it being set</li>
2165+ <li>`newVal` The value the attribute is to be set to</li>
2166+ <li>`attrName` The name of the attribute being set</li>
2167+ <li>`subAttrName` If setting a property within the attribute's value, the name of the sub-attribute property being set</li>
2168+ </ul>
2169+ </div>
2170+ {{/if}}
2171+</div>
2172
2173=== added file '0.1/ambiance/js/yuidoc-theme/partials/classes.handlebars'
2174--- 0.1/ambiance/js/yuidoc-theme/partials/classes.handlebars 1970-01-01 00:00:00 +0000
2175+++ 0.1/ambiance/js/yuidoc-theme/partials/classes.handlebars 2013-11-01 20:18:13 +0000
2176@@ -0,0 +1,73 @@
2177+<h4>Class {{moduleName}}</h4>
2178+{{#if uses}}
2179+ Uses:
2180+ {{#each uses}}
2181+ <a href="{{this}}.html">{{this}}</a>
2182+ {{/each}}
2183+ <br>
2184+{{/if}}
2185+{{#if extension_for}}
2186+ Extension For:
2187+ {{#each extension_for}}
2188+ <a href="{{this}}.html">{{this}}</a>
2189+ {{/each}}
2190+ <br>
2191+{{/if}}
2192+{{#if extends}}
2193+ Extends: {{#crossLink extends}}{{/crossLink}}<br>
2194+{{/if}}
2195+<span class="foundat">Class defined in: <a href="../{{foundAt}}">`{{file}}:{{line}}`</a></span>
2196+<div class="intro">{{{classDescription}}}</div>
2197+
2198+{{#if is_constructor}}
2199+ {{#is_constructor}}
2200+ {{>method}}
2201+ {{/is_constructor}}
2202+{{/if}}
2203+
2204+<div id="classdocs">
2205+ <ul>
2206+ {{#if methods}}
2207+ <li><a href="#methods">Methods</a></li>
2208+ {{/if}}
2209+ {{#if properties}}
2210+ <li><a href="#props">Properties</a></li>
2211+ {{/if}}
2212+ {{#if attrs}}
2213+ <li><a href="#attrs">Attributes</a></li>
2214+ {{/if}}
2215+ {{#if events}}
2216+ <li><a href="#events">Events</a></li>
2217+ {{/if}}
2218+ </ul>
2219+ <div>
2220+ {{#if methods}}
2221+ <div id="methods">
2222+ {{#methods}}
2223+ {{>method}}
2224+ {{/methods}}
2225+ </div>
2226+ {{/if}}
2227+ {{#if properties}}
2228+ <div id="props">
2229+ {{#properties}}
2230+ {{>props}}
2231+ {{/properties}}
2232+ </div>
2233+ {{/if}}
2234+ {{#if attrs}}
2235+ <div id="attrs">
2236+ {{#attrs}}
2237+ {{>attrs}}
2238+ {{/attrs}}
2239+ </div>
2240+ {{/if}}
2241+ {{#if events}}
2242+ <div id="events">
2243+ {{#events}}
2244+ {{>events}}
2245+ {{/events}}
2246+ </div>
2247+ {{/if}}
2248+ </div>
2249+</div>
2250
2251=== added file '0.1/ambiance/js/yuidoc-theme/partials/events.handlebars'
2252--- 0.1/ambiance/js/yuidoc-theme/partials/events.handlebars 1970-01-01 00:00:00 +0000
2253+++ 0.1/ambiance/js/yuidoc-theme/partials/events.handlebars 2013-11-01 20:18:13 +0000
2254@@ -0,0 +1,35 @@
2255+<a name="events_{{name}}"></a>
2256+<div class="events item">
2257+ `{{name}}` {{#if type}}<strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>{{/if}}
2258+ {{#if extended_from}}<em>`/* Extended from {{extended_from}} */</em>`{{/if}}
2259+ {{#if overwritten_from}}<em>`/* Overwritten from {{name}} */`</em>{{/if}}
2260+ <br>
2261+ <span class="foundat"><a href="../{{foundAt}}">`{{file}}:{{line}}`</a></span>
2262+ {{{eventDescription}}}
2263+ {{#if params}}
2264+ <strong>Extra event object properties:</strong>
2265+ <ul>
2266+ {{#params}}
2267+ <li>
2268+ {{#if optional}}
2269+ `[{{name}}{{#if optdefault}}={{optdefault}}{{/if}}]` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>
2270+ {{else}}
2271+ `{{name}}` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>
2272+ {{/if}}
2273+ {{#if multiple}}
2274+ <abbr title="Denotes that this argument can contain (n) number">(*..n)</abbr>
2275+ {{/if}}
2276+ {{{description}}}
2277+ {{#if props}}
2278+ <ul>
2279+ {{#props}}
2280+ <li>`{{name}}` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong> {{{description}}}
2281+ {{/props}}
2282+ </ul>
2283+ {{/if}}
2284+ </li>
2285+ {{/params}}
2286+ </ul>
2287+ {{/if}}
2288+</div>
2289+
2290
2291=== added file '0.1/ambiance/js/yuidoc-theme/partials/files.handlebars'
2292--- 0.1/ambiance/js/yuidoc-theme/partials/files.handlebars 1970-01-01 00:00:00 +0000
2293+++ 0.1/ambiance/js/yuidoc-theme/partials/files.handlebars 2013-11-01 20:18:13 +0000
2294@@ -0,0 +1,6 @@
2295+<h4>{{fileName}}</h4>
2296+
2297+<pre class="code prettyprint linenums">
2298+{{fileData}}
2299+</pre>
2300+
2301
2302=== added file '0.1/ambiance/js/yuidoc-theme/partials/index.handlebars'
2303--- 0.1/ambiance/js/yuidoc-theme/partials/index.handlebars 1970-01-01 00:00:00 +0000
2304+++ 0.1/ambiance/js/yuidoc-theme/partials/index.handlebars 2013-11-01 20:18:13 +0000
2305@@ -0,0 +1,54 @@
2306+<h4>Welcome to Ubuntu HTML5 API Docs version 0.1</h4>
2307+
2308+<p>These pages provide reference docs for the Ubunbtu HTML5 framework.</p>
2309+
2310+<p>See <a href="http://developer.ubuntu.com">developer.ubuntu.com</a> for more information on writing Ubuntu HTML5 apps, including: using the Ubuntu SDK, creating HTML5 app projects, importing Ubuntu HTML5 CSS and JavaScript into your app, and more. </p>
2311+
2312+<h4>Ubuntu HTML5 widgets</h4>
2313+
2314+<p>The Ubuntun HTML5 framework provides a set of "widgets" you use to build an application in the Ubuntu style (see <a href="design.ubuntu.com">design.ubuntu.com</a> for descriptions of Ubuntu app "building blocks" with links to APIs for each supported implementation toolkit). For example, an Ubuntu HTML5 app has a dynamic Header with Tabs that together provide navigation through the app's Pages. Pages may contain Lists, Popovers, Buttons, Shapes, and a lot more. The app has a Footer (also called a Toolbar) to which you can add Buttons. There are many options and the list keeps growing!<p>
2315+<p>Each widget has its HTML part, a corresponding JavaScript object (many of which provide additional methods), and CSS styles.</p>
2316+
2317+<h4>What you need to know</h4>
2318+
2319+<p>To write Ubuntu HTML5 apps, you need to know:</p>
2320+
2321+<ul>
2322+ <li>How to <em>declare</em> each widget type in HTML</li>
2323+ <li>How to acces the JavaScript widget objects and use their methods</li>
2324+ <li>How to initialize the Ubuntu HTML5 framework at app load time</li>
2325+</ul>
2326+
2327+<p>These topics are introduced here and explained in the class documentation.</p>
2328+
2329+<h4>Elements and special attributes</h4>
2330+
2331+<p>Ubuntu HTML5 apps use normal HTML/HTML5 elements (like &lt;div&gt;, &lt;section&gt;, &lt;ul&gt;, and so on). However, special attributes are added to some key elements to declare them as Ubuntu HTML5 elements. This connects them with the Ubuntu HTML5 JavaScript framework. The <em>data-role</em> attribute is often used. Its value indicates the type of Ubuntu HTML5 element. For example, here's a button: &lt;div data-role="button"&gt;.</p>
2332+
2333+</p>Making correct HTML declarations is necessary to connect your DOM elements to the Ubuntu HTML5 JavaScript framework and to Ubuntu HTML CSS styles. See the JavaScript class docs for sample HTML declarations.</p>
2334+
2335+<h4><em>id</em> attributes</h4>
2336+
2337+<p>You can declare most Ubuntu HTML5 elements without <em>id</em> attributes. They will pick up the CSS styles and look fine. But, you generally need an <em>id</em> attribute to access the corresponding JavaScript objects. So it's a good idea to add them.</p>
2338+
2339+<h4>JavaScript classes and methods</h4>
2340+
2341+<p>Almost every Ubuntu HTML5 DOM element has a corresponding Ubuntu HTML5 JavaScript object. These are created automatically when you create an UbuntuUI object and execute its init() method. (This is usually done at startup, for example in the <em>window.onload</em> function).</p>
2342+
2343+<p>Many of these classes/objects have additional methods. For example, the List class provides methods to add items to the list, remove an item, apply a function to all items, and more.</p>
2344+
2345+<h4>How these docs are organized</h4>
2346+
2347+<p>These pages or organized by the Ubuntu HTML5 JavaScript classes. Each class has an example showing how the corresponding HTML is declared (as needed). And of course each class has API documentation explaining usage of all (public) methods.</p>
2348+
2349+<p>The single most important class is UbuntuUI, so start there.</p>
2350+
2351+<p>Then, an Ubuntu HTML5 app is structured as a PageStack of Pages, so be sure to visit those classes.</p>
2352+
2353+<h4>Ubuntu HTML5 CSS</h4>
2354+
2355+<p>Be sure to check out the Ubuntu HTML5 CSS files you import into your app. They provide a set of styles that theme the HTML5 widgets to the Ubuntu app design and style.</p>
2356+
2357+<h4>Let's grow this!</h4>
2358+
2359+<p>Let's work together to keep HTML5 as a top-notch app development framework on Ubuntu. Everyone can help by filing bugs, triaging them, and of course, fixing them. So let's get to work writing apps!</p>
2360
2361=== added file '0.1/ambiance/js/yuidoc-theme/partials/method.handlebars'
2362--- 0.1/ambiance/js/yuidoc-theme/partials/method.handlebars 1970-01-01 00:00:00 +0000
2363+++ 0.1/ambiance/js/yuidoc-theme/partials/method.handlebars 2013-11-01 20:18:13 +0000
2364@@ -0,0 +1,56 @@
2365+<a name="methods_{{name}}"></a>
2366+<div class="method item{{#if access}} {{access}}{{/if}}">
2367+ {{#if final}}<code>final</code> {{/if}}{{#if returnType}}{{#crossLink returnType}}{{/crossLink}} {{/if}}<strong class="name">`{{name}}`</strong>( `{{paramsList}} ` ) {{#if access}}<em>`/* {{access}} method */`</em>{{/if}}
2368+ <br>
2369+ <span class="foundat">
2370+ {{#if overwritten_from}}
2371+ Defined in <a href="{{overwritten_from/class}}.html#method_{{overwritten_from/name}}">{{overwritten_from/class}}</a> but overwritten locally:
2372+ {{else}}
2373+ {{#if extended_from}} Defined in <a href="{{extended_from}}.html#method_{{name}}">{{extended_from}}</a>: {{/if}}
2374+ {{/if}}
2375+ <a href="../{{foundAt}}">`{{file}}:{{line}}`</a>
2376+ </span><br>
2377+ {{{methodDescription}}}
2378+ {{#if params}}
2379+ <strong>Parameters:</strong>
2380+ <ul class="params">
2381+ {{#params}}
2382+ <li>
2383+ {{#if optional}}
2384+ `[{{name}}{{#if optdefault}}={{optdefault}}{{/if}}]` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>
2385+ {{else}}
2386+ `{{name}}` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong>
2387+ {{/if}}
2388+ {{#if multiple}}
2389+ <abbr title="Denotes that this argument can contain (n) number">(*..n)</abbr>
2390+ {{/if}}
2391+ {{{description}}}
2392+ {{#if props}}
2393+ <ul>
2394+ {{#props}}
2395+ <li>`{{name}}` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong> {{{description}}}
2396+ {{#if props}}
2397+ <ul>
2398+ {{#props}}
2399+ <li>`{{name}}` <strong>&lt;{{#crossLink type}}{{/crossLink}}&gt;</strong> {{{description}}} </li>
2400+ {{/props}}
2401+ </ul>
2402+ {{/if}}
2403+ </li>
2404+ {{/props}}
2405+ </ul>
2406+ {{/if}}
2407+ </li>
2408+ {{/params}}
2409+ </ul>
2410+ {{/if}}
2411+ {{#if return}}
2412+ {{#return}}
2413+ <br><div class="returns"><strong>Returns:</strong> {{#if type}}&lt;{{#crossLink type}}{{/crossLink}}&gt; {{/if}}{{{description}}}</div>
2414+ {{/return}}
2415+ {{/if}}
2416+ {{#if example}}
2417+ <h5>Example</h5>
2418+ {{{example}}}
2419+ {{/if}}
2420+</div>
2421
2422=== added file '0.1/ambiance/js/yuidoc-theme/partials/module.handlebars'
2423--- 0.1/ambiance/js/yuidoc-theme/partials/module.handlebars 1970-01-01 00:00:00 +0000
2424+++ 0.1/ambiance/js/yuidoc-theme/partials/module.handlebars 2013-11-01 20:18:13 +0000
2425@@ -0,0 +1,28 @@
2426+
2427+<h2>{{moduleName}}</h2>
2428+<div class="intro">{{{moduleDescription}}}</div>
2429+
2430+<div class="yui3-g">
2431+ <div class="yui3-u-1-2">
2432+ {{#if moduleClasses}}
2433+ <p>This module has the following classes:</p>
2434+ <ul>
2435+ {{#moduleClasses}}
2436+ <li><a href="{{../projectRoot}}classes/{{name}}.html">{{displayName}}</a></li>
2437+ {{/moduleClasses}}
2438+ </ul>
2439+ {{/if}}
2440+ </div>
2441+ <div class="yui3-u-1-2">
2442+ {{#if subModules}}
2443+ <p>This module has the following submodules:</p>
2444+ <ul>
2445+ {{#subModules}}
2446+ <li id="{{name}}"><a href="{{../projectRoot}}modules/{{name}}.html">{{displayName}}</a><p>{{{description}}}</p></li>
2447+ {{/subModules}}
2448+ </ul>
2449+ {{/if}}
2450+ </div>
2451+</div>
2452+<br><br>
2453+<span class="foundat">Module description found: <a href="../{{foundAt}}">`{{file}}:{{line}}`</a></span>
2454
2455=== added file '0.1/ambiance/js/yuidoc-theme/partials/props.handlebars'
2456--- 0.1/ambiance/js/yuidoc-theme/partials/props.handlebars 1970-01-01 00:00:00 +0000
2457+++ 0.1/ambiance/js/yuidoc-theme/partials/props.handlebars 2013-11-01 20:18:13 +0000
2458@@ -0,0 +1,10 @@
2459+<a name="props_{{name}}"></a>
2460+<div class="props item">
2461+ `{{name}}` &lt;<strong>{{#crossLink type}}{{/crossLink}}</strong>&gt;{{#if final}} <em>(final)</em>{{/if}}{{#if static}} <em>(static)</em>{{/if}}<br>
2462+ <span class="foundat"><a href="../{{foundAt}}">`{{file}}:{{line}}`</a></span>
2463+ {{{propertyDescription}}}
2464+ {{#if example}}
2465+ <h5>Example</h5>
2466+ {{{example}}}
2467+ {{/if}}
2468+</div>
2469
2470=== added file '0.1/ambiance/js/yuidoc-theme/partials/sidebar.handlebars'
2471--- 0.1/ambiance/js/yuidoc-theme/partials/sidebar.handlebars 1970-01-01 00:00:00 +0000
2472+++ 0.1/ambiance/js/yuidoc-theme/partials/sidebar.handlebars 2013-11-01 20:18:13 +0000
2473@@ -0,0 +1,105 @@
2474+<div id="modules" class="sidebox">
2475+ <div class="hd">
2476+ <h2 class="no-toc">Modules</h2>
2477+ </div>
2478+ <div class="bd">
2479+ <ul>
2480+ {{#modules}}
2481+ <li><a href="{{../projectRoot}}modules/{{name}}.html">{{displayName}}</a>
2482+ {{#if submodules}}
2483+ <ul>
2484+ {{#submodules}}
2485+ <li><a href="{{../../../projectRoot}}modules/{{../name}}.html#{{displayName}}">{{displayName}}</a></li>
2486+ {{/submodules}}
2487+ </ul>
2488+ {{/if}}
2489+ </li>
2490+ {{/modules}}
2491+ </ul>
2492+ </div>
2493+</div>
2494+
2495+<div id="classes" class="sidebox">
2496+ <div class="hd">
2497+ <h2 class="no-toc">Classes</h2>
2498+ </div>
2499+ <div class="bd">
2500+ <ul>
2501+ {{#classes}}
2502+ <li><a href="{{../projectRoot}}classes/{{name}}.html">{{displayName}}</a></li>
2503+ {{/classes}}
2504+ </ul>
2505+ </div>
2506+</div>
2507+
2508+{{#if methods}}
2509+<div id="methods-on-page" class="sidebox on-page">
2510+ <div class="hd">
2511+ <h2 class="no-toc">Methods On Page</h2>
2512+ </div>
2513+ <div class="bd">
2514+ <ul>
2515+ {{#methods}}
2516+ <li><a href="#methods_{{name}}">{{name}}</a></li>
2517+ {{/methods}}
2518+ </ul>
2519+ </div>
2520+</div>
2521+{{/if}}
2522+
2523+{{#if events}}
2524+<div id="events-on-page" class="sidebox on-page">
2525+ <div class="hd">
2526+ <h2 class="no-toc">Events On Page</h2>
2527+ </div>
2528+ <div class="bd">
2529+ <ul>
2530+ {{#events}}
2531+ <li><a href="#events_{{name}}">{{name}}</a></li>
2532+ {{/events}}
2533+ </ul>
2534+ </div>
2535+</div>
2536+{{/if}}
2537+
2538+{{#if props}}
2539+<div id="props-on-page" class="sidebox">
2540+ <div class="hd">
2541+ <h2 class="no-toc">Props On Page</h2>
2542+ </div>
2543+ <div class="bd">
2544+ <ul>
2545+ {{#events}}
2546+ <li><a href="#props_{{name}}">{{name}}</a></li>
2547+ {{/events}}
2548+ </ul>
2549+ </div>
2550+</div>
2551+{{/if}}
2552+
2553+{{#if attributes}}
2554+<div id="attrs-on-page" class="sidebox on-page">
2555+ <div class="hd">
2556+ <h2 class="no-toc">Attributes On Page</h2>
2557+ </div>
2558+ <div class="bd">
2559+ <ul>
2560+ {{#events}}
2561+ <li><a href="#attrs_{{name}}">{{name}}</a></li>
2562+ {{/events}}
2563+ </ul>
2564+ </div>
2565+</div>
2566+{{/if}}
2567+
2568+{{#if fileTree}}
2569+<div id="fileTree" class="sidebox">
2570+ <div class="hd">
2571+ <h2 class="no-toc">Files</h2>
2572+ </div>
2573+ <div class="bd">
2574+ {{#buildFileTree fileTree}}{{/buildFileTree}}
2575+ </div>
2576+</div>
2577+{{/if}}
2578+
2579
2580=== added file '0.1/ambiance/js/yuidoc-theme/theme.json'
2581--- 0.1/ambiance/js/yuidoc-theme/theme.json 1970-01-01 00:00:00 +0000
2582+++ 0.1/ambiance/js/yuidoc-theme/theme.json 2013-11-01 20:18:13 +0000
2583@@ -0,0 +1,4 @@
2584+{
2585+ "yuiGridsUrl": "http://yui.yahooapis.com/3.8.0pr2/build/cssgrids/cssgrids-min.css",
2586+ "yuiSeedUrl": "http://yui.yahooapis.com/combo?3.8.0pr2/build/yui/yui-min.js"
2587+}
2588
2589=== added file '0.1/ambiance/js/yuidoc.json'
2590--- 0.1/ambiance/js/yuidoc.json 1970-01-01 00:00:00 +0000
2591+++ 0.1/ambiance/js/yuidoc.json 2013-11-01 20:18:13 +0000
2592@@ -0,0 +1,9 @@
2593+{
2594+ "name": "Ubuntu HTML5 API",
2595+ "description": "Ubuntu HTML5 API: JavaScript for HTML5 Ubuntu Apps",
2596+ "version": "0.1",
2597+ "options": {
2598+ "outdir": "./build",
2599+ "themedir": "yuidoc-theme"
2600+ }
2601+}

Subscribers

People subscribed via source and target branches