Merge lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes into lp:cordova-ubuntu/container
- container-update-to-3.4.0-plus-fixes
- Merge into container
Proposed by
David Barth
Status: | Needs review |
---|---|
Proposed branch: | lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes |
Merge into: | lp:cordova-ubuntu/container |
Diff against target: |
1370 lines (+491/-201) 40 files modified
apparmor.json (+1/-1) build/VERSION (+1/-1) build/bin/node_modules/colors/package.json (+2/-8) build/bin/node_modules/elementtree/CHANGES.md (+9/-4) build/bin/node_modules/elementtree/README.md (+114/-0) build/bin/node_modules/elementtree/lib/elementtree.js (+15/-2) build/bin/node_modules/elementtree/node_modules/sax/package.json (+1/-8) build/bin/node_modules/elementtree/package.json (+4/-7) build/bin/node_modules/elementtree/tests/test-simple.js (+40/-0) build/bin/node_modules/optimist/node_modules/minimist/index.js (+8/-14) build/bin/node_modules/optimist/node_modules/minimist/package.json (+2/-5) build/bin/node_modules/optimist/node_modules/minimist/test/parse.js (+21/-0) build/bin/node_modules/optimist/node_modules/minimist/test/short.js (+0/-18) build/bin/node_modules/optimist/node_modules/wordwrap/package.json (+0/-3) build/bin/node_modules/optimist/package.json (+1/-8) build/bin/node_modules/shelljs/package.json (+1/-8) build/src/coreplugins.cpp (+12/-10) build/src/plugins/org.apache.cordova.camera/camera.cpp (+3/-3) build/src/plugins/org.apache.cordova.camera/camera.h (+10/-0) build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp (+1/-1) build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp (+7/-7) build/www/cordova.js (+2/-2) config.xml (+3/-3) cordova/node_modules/colors/package.json (+2/-8) cordova/node_modules/elementtree/CHANGES.md (+9/-4) cordova/node_modules/elementtree/README.md (+114/-0) cordova/node_modules/elementtree/lib/elementtree.js (+15/-2) cordova/node_modules/elementtree/node_modules/sax/package.json (+1/-8) cordova/node_modules/elementtree/package.json (+4/-7) cordova/node_modules/elementtree/tests/test-simple.js (+40/-0) cordova/node_modules/optimist/node_modules/minimist/index.js (+8/-14) cordova/node_modules/optimist/node_modules/minimist/package.json (+2/-5) cordova/node_modules/optimist/node_modules/minimist/test/parse.js (+21/-0) cordova/node_modules/optimist/node_modules/minimist/test/short.js (+0/-18) cordova/node_modules/optimist/node_modules/wordwrap/package.json (+0/-3) cordova/node_modules/optimist/package.json (+1/-8) cordova/node_modules/shelljs/package.json (+1/-8) debian/changelog (+12/-0) platform_www/cordova.js (+2/-2) qml/CaptureWidget.qml (+1/-1) |
To merge this branch: | bzr merge lp:~dbarth/cordova-ubuntu/container-update-to-3.4.0-plus-fixes |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Cordova Ubuntu Team | Pending | ||
Review via email: mp+208032@code.launchpad.net |
Commit message
3.4.0 + maxim's fixes
Description of the change
3.4.0 + maxim's fixes
To post a comment you must log in.
Unmerged revisions
- 23. By David Barth
-
3.4.0 with ubuntu fixes
- 22. By David Barth
-
add Maxim's latest fixes for camera, file-transfer and device-motion plugins
- 21. By David Barth
-
Update to 3.4.0 release
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'apparmor.json' |
2 | --- apparmor.json 2014-02-19 13:49:25 +0000 |
3 | +++ apparmor.json 2014-02-24 22:54:06 +0000 |
4 | @@ -1,1 +1,1 @@ |
5 | -{"policy_groups":["networking","audio","camera","sensors","location","microphone","video","audio","camera","microphone"],"policy_version":1} |
6 | \ No newline at end of file |
7 | +{"policy_groups":["networking","audio","sensors","location","microphone","video","audio","camera","microphone","camera"],"policy_version":1} |
8 | \ No newline at end of file |
9 | |
10 | === modified file 'build/VERSION' |
11 | --- build/VERSION 2014-02-05 23:42:31 +0000 |
12 | +++ build/VERSION 2014-02-24 22:54:06 +0000 |
13 | @@ -1,1 +1,1 @@ |
14 | -3.4.0-rc1 |
15 | +3.4.0 |
16 | |
17 | === modified file 'build/bin/node_modules/colors/package.json' |
18 | --- build/bin/node_modules/colors/package.json 2014-02-05 23:42:31 +0000 |
19 | +++ build/bin/node_modules/colors/package.json 2014-02-24 22:54:06 +0000 |
20 | @@ -6,9 +6,7 @@ |
21 | "name": "Marak Squires" |
22 | }, |
23 | "homepage": "https://github.com/Marak/colors.js", |
24 | - "bugs": { |
25 | - "url": "https://github.com/Marak/colors.js/issues" |
26 | - }, |
27 | + "bugs": "https://github.com/Marak/colors.js/issues", |
28 | "keywords": [ |
29 | "ansi", |
30 | "terminal", |
31 | @@ -25,9 +23,5 @@ |
32 | "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n", |
33 | "readmeFilename": "ReadMe.md", |
34 | "_id": "colors@0.6.2", |
35 | - "dist": { |
36 | - "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746" |
37 | - }, |
38 | - "_from": "colors@0.6.2", |
39 | - "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" |
40 | + "_from": "colors@0.6.2" |
41 | } |
42 | |
43 | === modified file 'build/bin/node_modules/elementtree/CHANGES.md' |
44 | --- build/bin/node_modules/elementtree/CHANGES.md 2014-02-05 23:42:31 +0000 |
45 | +++ build/bin/node_modules/elementtree/CHANGES.md 2014-02-24 22:54:06 +0000 |
46 | @@ -1,22 +1,27 @@ |
47 | -elementtree v0.1.5 (in development) |
48 | +elementtree v0.1.6 (in development) |
49 | + |
50 | +* Add support for CData elements. (#14) |
51 | + [hermannpencole] |
52 | + |
53 | +elementtree v0.1.5 - 2012-11-14 |
54 | |
55 | * Fix a bug in the find() and findtext() method which could manifest itself |
56 | under some conditions. |
57 | [metagriffin] |
58 | |
59 | -elementtree v0.1.4 |
60 | +elementtree v0.1.4 - 2012-10-15 |
61 | |
62 | * Allow user to use namespaced attributes when using find* functions. |
63 | [Andrew Lunny] |
64 | |
65 | -elementtree v0.1.3 |
66 | +elementtree v0.1.3 - 2012-09-21 |
67 | |
68 | * Improve the output of text content in the tags (strip unnecessary line break |
69 | characters). |
70 | |
71 | [Darryl Pogue] |
72 | |
73 | -elementtree v0.1.2 |
74 | +elementtree v0.1.2 - 2012-09-04 |
75 | |
76 | * Allow user to pass 'indent' option to ElementTree.write method. If this |
77 | option is specified (e.g. {'indent': 4}). XML will be pretty printed. |
78 | |
79 | === modified file 'build/bin/node_modules/elementtree/README.md' |
80 | --- build/bin/node_modules/elementtree/README.md 2014-02-05 23:42:31 +0000 |
81 | +++ build/bin/node_modules/elementtree/README.md 2014-02-24 22:54:06 +0000 |
82 | @@ -15,6 +15,120 @@ |
83 | |
84 | Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm). |
85 | |
86 | +Example 1 – Creating An XML Document |
87 | +==================== |
88 | + |
89 | +This example shows how to build a valid XML document that can be published to |
90 | +Atom Hopper. Atom Hopper is used internally as a bridge from products all the |
91 | +way to collecting revenue, called “Usage.” MaaS and other products send similar |
92 | +events to it every time user performs an action on a resource |
93 | +(e.g. creates,updates or deletes). Below is an example of leveraging the API |
94 | +to create a new XML document. |
95 | + |
96 | +```javascript |
97 | +var et = require('elementtree'); |
98 | +var XML = et.XML; |
99 | +var ElementTree = et.ElementTree; |
100 | +var element = et.Element; |
101 | +var subElement = et.SubElement; |
102 | + |
103 | +var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region, |
104 | +checks, resourceId, category, startTime, resourceName, etree, xml; |
105 | + |
106 | +date = new Date(); |
107 | + |
108 | +root = element('entry'); |
109 | +root.set('xmlns', 'http://www.w3.org/2005/Atom'); |
110 | + |
111 | +tenantId = subElement(root, 'TenantId'); |
112 | +tenantId.text = '12345'; |
113 | + |
114 | +serviceName = subElement(root, 'ServiceName'); |
115 | +serviceName.text = 'MaaS'; |
116 | + |
117 | +resourceId = subElement(root, 'ResourceID'); |
118 | +resourceId.text = 'enAAAA'; |
119 | + |
120 | +usageId = subElement(root, 'UsageID'); |
121 | +usageId.text = '550e8400-e29b-41d4-a716-446655440000'; |
122 | + |
123 | +eventType = subElement(root, 'EventType'); |
124 | +eventType.text = 'create'; |
125 | + |
126 | +category = subElement(root, 'category'); |
127 | +category.set('term', 'monitoring.entity.create'); |
128 | + |
129 | +dataCenter = subElement(root, 'DataCenter'); |
130 | +dataCenter.text = 'global'; |
131 | + |
132 | +region = subElement(root, 'Region'); |
133 | +region.text = 'global'; |
134 | + |
135 | +startTime = subElement(root, 'StartTime'); |
136 | +startTime.text = date; |
137 | + |
138 | +resourceName = subElement(root, 'ResourceName'); |
139 | +resourceName.text = 'entity'; |
140 | + |
141 | +etree = new ElementTree(root); |
142 | +xml = etree.write({'xml_declaration': false}); |
143 | +console.log(xml); |
144 | +``` |
145 | + |
146 | +As you can see, both et.Element and et.SubElement are factory methods which |
147 | +return a new instance of Element and SubElement class, respectively. |
148 | +When you create a new element (tag) you can use set method to set an attribute. |
149 | +To set the tag value, assign a value to the .text attribute. |
150 | + |
151 | +This example would output a document that looks like this: |
152 | + |
153 | +```xml |
154 | +<entry xmlns="http://www.w3.org/2005/Atom"> |
155 | + <TenantId>12345</TenantId> |
156 | + <ServiceName>MaaS</ServiceName> |
157 | + <ResourceID>enAAAA</ResourceID> |
158 | + <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID> |
159 | + <EventType>create</EventType> |
160 | + <category term="monitoring.entity.create"/> |
161 | + <DataCenter>global</DataCenter> |
162 | + <Region>global</Region> |
163 | + <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime> |
164 | + <ResourceName>entity</ResourceName> |
165 | +</entry> |
166 | +``` |
167 | + |
168 | +Example 2 – Parsing An XML Document |
169 | +==================== |
170 | + |
171 | +This example shows how to parse an XML document and use simple XPath selectors. |
172 | +For demonstration purposes, we will use the XML document located at |
173 | +https://gist.github.com/2554343. |
174 | + |
175 | +Behind the scenes, node-elementtree uses Isaac’s sax library for parsing XML, |
176 | +but the library has a concept of “parsers,” which means it’s pretty simple to |
177 | +add support for a different parser. |
178 | + |
179 | +```javascript |
180 | +var fs = require('fs'); |
181 | + |
182 | +var et = require('elementtree'); |
183 | + |
184 | +var XML = et.XML; |
185 | +var ElementTree = et.ElementTree; |
186 | +var element = et.Element; |
187 | +var subElement = et.SubElement; |
188 | + |
189 | +var data, etree; |
190 | + |
191 | +data = fs.readFileSync('document.xml').toString(); |
192 | +etree = et.parse(data); |
193 | + |
194 | +console.log(etree.findall('./entry/TenantId').length); // 2 |
195 | +console.log(etree.findtext('./entry/ServiceName')); // MaaS |
196 | +console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create |
197 | +console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1 |
198 | +``` |
199 | + |
200 | Build status |
201 | ==================== |
202 | |
203 | |
204 | === modified file 'build/bin/node_modules/elementtree/lib/elementtree.js' |
205 | --- build/bin/node_modules/elementtree/lib/elementtree.js 2014-02-05 23:42:31 +0000 |
206 | +++ build/bin/node_modules/elementtree/lib/elementtree.js 2014-02-24 22:54:06 +0000 |
207 | @@ -103,7 +103,7 @@ |
208 | this._children[index] = element; |
209 | }; |
210 | |
211 | -Element.prototype.remove = function(index, element) |
212 | +Element.prototype.remove = function(element) |
213 | { |
214 | this._children = this._children.filter(function(e) { |
215 | /* TODO: is this the right way to do this? */ |
216 | @@ -219,6 +219,14 @@ |
217 | return element; |
218 | } |
219 | |
220 | +function CData(text) { |
221 | + var element = new Element(CData); |
222 | + if (text) { |
223 | + element.text = text; |
224 | + } |
225 | + return element; |
226 | +} |
227 | + |
228 | function ProcessingInstruction(target, text) |
229 | { |
230 | var element = new Element(ProcessingInstruction); |
231 | @@ -441,7 +449,7 @@ |
232 | else if (typeof(tag) === "string") { |
233 | add_qname(tag); |
234 | } |
235 | - else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) { |
236 | + else if (tag !== null && tag !== Comment && tag !== CData && tag !== ProcessingInstruction) { |
237 | throw new Error('Invalid tag type for serialization: '+ tag); |
238 | } |
239 | |
240 | @@ -483,6 +491,10 @@ |
241 | else if (tag === ProcessingInstruction) { |
242 | write(sprintf("<?%s?>", _escape_cdata(text, encoding))); |
243 | } |
244 | + else if (tag === CData) { |
245 | + text = text || ''; |
246 | + write(sprintf("<![CDATA[%s]]>", text)); |
247 | + } |
248 | else { |
249 | tag = qnames[tag]; |
250 | if (tag === undefined) { |
251 | @@ -579,6 +591,7 @@ |
252 | |
253 | exports.PI = ProcessingInstruction; |
254 | exports.Comment = Comment; |
255 | +exports.CData = CData; |
256 | exports.ProcessingInstruction = ProcessingInstruction; |
257 | exports.SubElement = SubElement; |
258 | exports.QName = QName; |
259 | |
260 | === modified file 'build/bin/node_modules/elementtree/node_modules/sax/package.json' |
261 | --- build/bin/node_modules/elementtree/node_modules/sax/package.json 2014-02-05 23:42:31 +0000 |
262 | +++ build/bin/node_modules/elementtree/node_modules/sax/package.json 2014-02-24 22:54:06 +0000 |
263 | @@ -55,13 +55,6 @@ |
264 | ], |
265 | "readme": "# sax js\n\nA sax-style parser for XML and HTML.\n\nDesigned with [node](http://nodejs.org/) in mind, but should work fine in\nthe browser or other CommonJS implementations.\n\n## What This Is\n\n* A very simple tool to parse through an XML string.\n* A stepping stone to a streaming HTML parser.\n* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML \n docs.\n\n## What This Is (probably) Not\n\n* An HTML Parser - That's a fine goal, but this isn't it. It's just\n XML.\n* A DOM Builder - You can use it to build an object model out of XML,\n but it doesn't do that out of the box.\n* XSLT - No DOM = no querying.\n* 100% Compliant with (some other SAX implementation) - Most SAX\n implementations are in Java and do a lot more than this does.\n* An XML Validator - It does a little validation when in strict mode, but\n not much.\n* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic \n masochism.\n* A DTD-aware Thing - Fetching DTDs is a much bigger job.\n\n## Regarding `<!DOCTYPE`s and `<!ENTITY`s\n\nThe parser will handle the basic XML entities in text nodes and attribute\nvalues: `& < > ' "`. It's possible to define additional\nentities in XML by putting them in the DTD. This parser doesn't do anything\nwith that. If you want to listen to the `ondoctype` event, and then fetch\nthe doctypes, and read the entities and add them to `parser.ENTITIES`, then\nbe my guest.\n\nUnknown entities will fail in strict mode, and in loose mode, will pass\nthrough unmolested.\n\n## Usage\n\n var sax = require(\"./lib/sax\"),\n strict = true, // set to false for html-mode\n parser = sax.parser(strict);\n\n parser.onerror = function (e) {\n // an error happened.\n };\n parser.ontext = function (t) {\n // got some text. t is the string of text.\n };\n parser.onopentag = function (node) {\n // opened a tag. node has \"name\" and \"attributes\"\n };\n parser.onattribute = function (attr) {\n // an attribute. attr has \"name\" and \"value\"\n };\n parser.onend = function () {\n // parser stream is done, and ready to have more stuff written to it.\n };\n\n parser.write('<xml>Hello, <who name=\"world\">world</who>!</xml>').close();\n\n // stream usage\n // takes the same options as the parser\n var saxStream = require(\"sax\").createStream(strict, options)\n saxStream.on(\"error\", function (e) {\n // unhandled errors will throw, since this is a proper node\n // event emitter.\n console.error(\"error!\", e)\n // clear the error\n this._parser.error = null\n this._parser.resume()\n })\n saxStream.on(\"opentag\", function (node) {\n // same object as above\n })\n // pipe is supported, and it's readable/writable\n // same chunks coming in also go out.\n fs.createReadStream(\"file.xml\")\n .pipe(saxStream)\n .pipe(fs.createReadStream(\"file-copy.xml\"))\n\n\n\n## Arguments\n\nPass the following arguments to the parser function. All are optional.\n\n`strict` - Boolean. Whether or not to be a jerk. Default: `false`.\n\n`opt` - Object bag of settings regarding string formatting. All default to `false`.\n\nSettings supported:\n\n* `trim` - Boolean. Whether or not to trim text and comment nodes.\n* `normalize` - Boolean. If true, then turn any whitespace into a single\n space.\n* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, \n rather than uppercasing them.\n* `xmlns` - Boolean. If true, then namespaces are supported.\n\n## Methods\n\n`write` - Write bytes onto the stream. You don't have to do this all at\nonce. You can keep writing as much as you want.\n\n`close` - Close the stream. Once closed, no more data may be written until\nit is done processing the buffer, which is signaled by the `end` event.\n\n`resume` - To gracefully handle errors, assign a listener to the `error`\nevent. Then, when the error is taken care of, you can call `resume` to\ncontinue parsing. Otherwise, the parser will not continue while in an error\nstate.\n\n## Members\n\nAt all times, the parser object will have the following members:\n\n`line`, `column`, `position` - Indications of the position in the XML\ndocument where the parser currently is looking.\n\n`startTagPosition` - Indicates the position where the current tag starts.\n\n`closed` - Boolean indicating whether or not the parser can be written to.\nIf it's `true`, then wait for the `ready` event to write again.\n\n`strict` - Boolean indicating whether or not the parser is a jerk.\n\n`opt` - Any options passed into the constructor.\n\n`tag` - The current tag being dealt with.\n\nAnd a bunch of other stuff that you probably shouldn't touch.\n\n## Events\n\nAll events emit with a single argument. To listen to an event, assign a\nfunction to `on<eventname>`. Functions get executed in the this-context of\nthe parser object. The list of supported events are also in the exported\n`EVENTS` array.\n\nWhen using the stream interface, assign handlers using the EventEmitter\n`on` function in the normal fashion.\n\n`error` - Indication that something bad happened. The error will be hanging\nout on `parser.error`, and must be deleted before parsing can continue. By\nlistening to this event, you can keep an eye on that kind of stuff. Note:\nthis happens *much* more in strict mode. Argument: instance of `Error`.\n\n`text` - Text node. Argument: string of text.\n\n`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.\n\n`processinginstruction` - Stuff like `<?xml foo=\"blerg\" ?>`. Argument:\nobject with `name` and `body` members. Attributes are not parsed, as\nprocessing instructions have implementation dependent semantics.\n\n`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`\nwould trigger this kind of event. This is a weird thing to support, so it\nmight go away at some point. SAX isn't intended to be used to parse SGML,\nafter all.\n\n`opentag` - An opening tag. Argument: object with `name` and `attributes`.\nIn non-strict mode, tag names are uppercased, unless the `lowercasetags`\noption is set. If the `xmlns` option is set, then it will contain\nnamespace binding information on the `ns` member, and will have a\n`local`, `prefix`, and `uri` member.\n\n`closetag` - A closing tag. In loose mode, tags are auto-closed if their\nparent closes. In strict mode, well-formedness is enforced. Note that\nself-closing tags will have `closeTag` emitted immediately after `openTag`.\nArgument: tag name.\n\n`attribute` - An attribute node. Argument: object with `name` and `value`,\nand also namespace information if the `xmlns` option flag is set.\n\n`comment` - A comment node. Argument: the string of the comment.\n\n`opencdata` - The opening tag of a `<![CDATA[` block.\n\n`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get\nquite large, this event may fire multiple times for a single block, if it\nis broken up into multiple `write()`s. Argument: the string of random\ncharacter data.\n\n`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.\n\n`opennamespace` - If the `xmlns` option is set, then this event will\nsignal the start of a new namespace binding.\n\n`closenamespace` - If the `xmlns` option is set, then this event will\nsignal the end of a namespace binding.\n\n`end` - Indication that the closed stream has ended.\n\n`ready` - Indication that the stream has reset, and is ready to be written\nto.\n\n`noscript` - In non-strict mode, `<script>` tags trigger a `\"script\"`\nevent, and their contents are not checked for special xml characters.\nIf you pass `noscript: true`, then this behavior is suppressed.\n\n## Reporting Problems\n\nIt's best to write a failing test if you find an issue. I will always\naccept pull requests with failing tests if they demonstrate intended\nbehavior, but it is very hard to figure out what issue you're describing\nwithout a test. Writing a test is also the best way for you yourself\nto figure out if you really understand the issue you think you have with\nsax-js.\n", |
266 | "readmeFilename": "README.md", |
267 | - "bugs": { |
268 | - "url": "https://github.com/isaacs/sax-js/issues" |
269 | - }, |
270 | "_id": "sax@0.3.5", |
271 | - "dist": { |
272 | - "shasum": "97a786cbbe404d7e24961b201f37be81b9249908" |
273 | - }, |
274 | - "_from": "sax@0.3.5", |
275 | - "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz" |
276 | + "_from": "sax@0.3.5" |
277 | } |
278 | |
279 | === modified file 'build/bin/node_modules/elementtree/package.json' |
280 | --- build/bin/node_modules/elementtree/package.json 2014-02-05 23:42:31 +0000 |
281 | +++ build/bin/node_modules/elementtree/package.json 2014-02-24 22:54:06 +0000 |
282 | @@ -14,7 +14,7 @@ |
283 | ], |
284 | "name": "elementtree", |
285 | "description": "XML Serialization and Parsing module based on Python's ElementTree.", |
286 | - "version": "0.1.5", |
287 | + "version": "0.1.6", |
288 | "keywords": [ |
289 | "xml", |
290 | "sax", |
291 | @@ -41,7 +41,7 @@ |
292 | "sax": "0.3.5" |
293 | }, |
294 | "devDependencies": { |
295 | - "whiskey": "0.6.8" |
296 | + "whiskey": "0.8.x" |
297 | }, |
298 | "licenses": [ |
299 | { |
300 | @@ -49,11 +49,8 @@ |
301 | "url": "http://www.apache.org/licenses/LICENSE-2.0.html" |
302 | } |
303 | ], |
304 | - "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n", |
305 | + "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nExample 1 – Creating An XML Document\n====================\n\nThis example shows how to build a valid XML document that can be published to\nAtom Hopper. Atom Hopper is used internally as a bridge from products all the\nway to collecting revenue, called “Usage.” MaaS and other products send similar\nevents to it every time user performs an action on a resource\n(e.g. creates,updates or deletes). Below is an example of leveraging the API\nto create a new XML document.\n\n```javascript\nvar et = require('elementtree');\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,\nchecks, resourceId, category, startTime, resourceName, etree, xml;\n\ndate = new Date();\n\nroot = element('entry');\nroot.set('xmlns', 'http://www.w3.org/2005/Atom');\n\ntenantId = subElement(root, 'TenantId');\ntenantId.text = '12345';\n\nserviceName = subElement(root, 'ServiceName');\nserviceName.text = 'MaaS';\n\nresourceId = subElement(root, 'ResourceID');\nresourceId.text = 'enAAAA';\n\nusageId = subElement(root, 'UsageID');\nusageId.text = '550e8400-e29b-41d4-a716-446655440000';\n\neventType = subElement(root, 'EventType');\neventType.text = 'create';\n\ncategory = subElement(root, 'category');\ncategory.set('term', 'monitoring.entity.create');\n\ndataCenter = subElement(root, 'DataCenter');\ndataCenter.text = 'global';\n\nregion = subElement(root, 'Region');\nregion.text = 'global';\n\nstartTime = subElement(root, 'StartTime');\nstartTime.text = date;\n\nresourceName = subElement(root, 'ResourceName');\nresourceName.text = 'entity';\n\netree = new ElementTree(root);\nxml = etree.write({'xml_declaration': false});\nconsole.log(xml);\n```\n\nAs you can see, both et.Element and et.SubElement are factory methods which\nreturn a new instance of Element and SubElement class, respectively.\nWhen you create a new element (tag) you can use set method to set an attribute.\nTo set the tag value, assign a value to the .text attribute.\n\nThis example would output a document that looks like this:\n\n```xml\n<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <TenantId>12345</TenantId>\n <ServiceName>MaaS</ServiceName>\n <ResourceID>enAAAA</ResourceID>\n <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>\n <EventType>create</EventType>\n <category term=\"monitoring.entity.create\"/>\n <DataCenter>global</DataCenter>\n <Region>global</Region>\n <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>\n <ResourceName>entity</ResourceName>\n</entry>\n```\n\nExample 2 – Parsing An XML Document\n====================\n\nThis example shows how to parse an XML document and use simple XPath selectors.\nFor demonstration purposes, we will use the XML document located at\nhttps://gist.github.com/2554343.\n\nBehind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,\nbut the library has a concept of “parsers,” which means it’s pretty simple to\nadd support for a different parser.\n\n```javascript\nvar fs = require('fs');\n\nvar et = require('elementtree');\n\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar data, etree;\n\ndata = fs.readFileSync('document.xml').toString();\netree = et.parse(data);\n\nconsole.log(etree.findall('./entry/TenantId').length); // 2\nconsole.log(etree.findtext('./entry/ServiceName')); // MaaS\nconsole.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create\nconsole.log(etree.findall('*/category/[@term=\"monitoring.entity.update\"]').length); // 1\n```\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n", |
306 | "readmeFilename": "README.md", |
307 | - "bugs": { |
308 | - "url": "https://github.com/racker/node-elementtree/issues" |
309 | - }, |
310 | - "_id": "elementtree@0.1.5", |
311 | + "_id": "elementtree@0.1.6", |
312 | "_from": "elementtree@*" |
313 | } |
314 | |
315 | === modified file 'build/bin/node_modules/elementtree/tests/test-simple.js' |
316 | --- build/bin/node_modules/elementtree/tests/test-simple.js 2014-02-05 23:42:31 +0000 |
317 | +++ build/bin/node_modules/elementtree/tests/test-simple.js 2014-02-24 22:54:06 +0000 |
318 | @@ -297,3 +297,43 @@ |
319 | assert.equal(root.findtext('no-such-node/leaf'), null); |
320 | test.finish(); |
321 | }; |
322 | + |
323 | +exports['test_remove'] = function(test, assert) { |
324 | + var root = Element('root'); |
325 | + var node1 = SubElement(root, 'node1'); |
326 | + var node2 = SubElement(root, 'node2'); |
327 | + var node3 = SubElement(root, 'node3'); |
328 | + |
329 | + assert.equal(root.len(), 3); |
330 | + |
331 | + root.remove(node2); |
332 | + |
333 | + assert.equal(root.len(), 2); |
334 | + assert.equal(root.getItem(0).tag, 'node1') |
335 | + assert.equal(root.getItem(1).tag, 'node3') |
336 | + |
337 | + test.finish(); |
338 | +}; |
339 | + |
340 | +exports['test_cdata_write'] = function(test, assert) { |
341 | + var root, etree, xml, values, value, i; |
342 | + |
343 | + values = [ |
344 | + 'if(0>1) then true;', |
345 | + '<test1>ponies hello</test1>', |
346 | + '' |
347 | + ]; |
348 | + |
349 | + for (i = 0; i < values.length; i++) { |
350 | + value = values[i]; |
351 | + |
352 | + root = Element('root'); |
353 | + root.append(et.CData(value)); |
354 | + etree = new ElementTree(root); |
355 | + xml = etree.write({'xml_declaration': false}); |
356 | + |
357 | + assert.equal(xml, sprintf('<root><![CDATA[%s]]></root>', value)); |
358 | + } |
359 | + |
360 | + test.finish(); |
361 | +}; |
362 | |
363 | === modified file 'build/bin/node_modules/optimist/node_modules/minimist/index.js' |
364 | --- build/bin/node_modules/optimist/node_modules/minimist/index.js 2014-02-05 23:42:31 +0000 |
365 | +++ build/bin/node_modules/optimist/node_modules/minimist/index.js 2014-02-24 22:54:06 +0000 |
366 | @@ -49,21 +49,21 @@ |
367 | for (var i = 0; i < args.length; i++) { |
368 | var arg = args[i]; |
369 | |
370 | - if (arg.match(/^--.+=/)) { |
371 | + if (/^--.+=/.test(arg)) { |
372 | // Using [\s\S] instead of . because js doesn't support the |
373 | // 'dotall' regex modifier. See: |
374 | // http://stackoverflow.com/a/1068308/13216 |
375 | var m = arg.match(/^--([^=]+)=([\s\S]*)$/); |
376 | setArg(m[1], m[2]); |
377 | } |
378 | - else if (arg.match(/^--no-.+/)) { |
379 | + else if (/^--no-.+/.test(arg)) { |
380 | var key = arg.match(/^--no-(.+)/)[1]; |
381 | setArg(key, false); |
382 | } |
383 | - else if (arg.match(/^--.+/)) { |
384 | + else if (/^--.+/.test(arg)) { |
385 | var key = arg.match(/^--(.+)/)[1]; |
386 | var next = args[i + 1]; |
387 | - if (next !== undefined && !next.match(/^-/) |
388 | + if (next !== undefined && !/^-/.test(next) |
389 | && !flags.bools[key] |
390 | && (aliases[key] ? !flags.bools[aliases[key]] : true)) { |
391 | setArg(key, next); |
392 | @@ -74,21 +74,15 @@ |
393 | i++; |
394 | } |
395 | else { |
396 | - setArg(key, true); |
397 | + setArg(key, flags.strings[key] ? '' : true); |
398 | } |
399 | } |
400 | - else if (arg.match(/^-[^-]+/)) { |
401 | + else if (/^-[^-]+/.test(arg)) { |
402 | var letters = arg.slice(1,-1).split(''); |
403 | |
404 | var broken = false; |
405 | for (var j = 0; j < letters.length; j++) { |
406 | var next = arg.slice(j+2); |
407 | - |
408 | - if (letters[j+1] && letters[j+1] === '=') { |
409 | - setArg(letters[j], arg.slice(j+3)); |
410 | - broken = true; |
411 | - break; |
412 | - } |
413 | |
414 | if (next === '-') { |
415 | setArg(letters[j], next) |
416 | @@ -108,7 +102,7 @@ |
417 | break; |
418 | } |
419 | else { |
420 | - setArg(letters[j], true); |
421 | + setArg(letters[j], flags.strings[letters[j]] ? '' : true); |
422 | } |
423 | } |
424 | |
425 | @@ -125,7 +119,7 @@ |
426 | i++; |
427 | } |
428 | else { |
429 | - setArg(key, true); |
430 | + setArg(key, flags.strings[key] ? '' : true); |
431 | } |
432 | } |
433 | } |
434 | |
435 | === modified file 'build/bin/node_modules/optimist/node_modules/minimist/package.json' |
436 | --- build/bin/node_modules/optimist/node_modules/minimist/package.json 2014-02-05 23:42:31 +0000 |
437 | +++ build/bin/node_modules/optimist/node_modules/minimist/package.json 2014-02-24 22:54:06 +0000 |
438 | @@ -1,6 +1,6 @@ |
439 | { |
440 | "name": "minimist", |
441 | - "version": "0.0.5", |
442 | + "version": "0.0.8", |
443 | "description": "parse argument options", |
444 | "main": "index.js", |
445 | "devDependencies": { |
446 | @@ -42,9 +42,6 @@ |
447 | "license": "MIT", |
448 | "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n", |
449 | "readmeFilename": "readme.markdown", |
450 | - "bugs": { |
451 | - "url": "https://github.com/substack/minimist/issues" |
452 | - }, |
453 | - "_id": "minimist@0.0.5", |
454 | + "_id": "minimist@0.0.8", |
455 | "_from": "minimist@~0.0.1" |
456 | } |
457 | |
458 | === modified file 'build/bin/node_modules/optimist/node_modules/minimist/test/parse.js' |
459 | --- build/bin/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-05 23:42:31 +0000 |
460 | +++ build/bin/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-24 22:54:06 +0000 |
461 | @@ -162,6 +162,27 @@ |
462 | t.end(); |
463 | }); |
464 | |
465 | +test('empty strings', function(t) { |
466 | + var s = parse([ '-s' ], { string: 's' }).s; |
467 | + t.equal(s, ''); |
468 | + t.equal(typeof s, 'string'); |
469 | + |
470 | + var str = parse([ '--str' ], { string: 'str' }).str; |
471 | + t.equal(str, ''); |
472 | + t.equal(typeof str, 'string'); |
473 | + |
474 | + var letters = parse([ '-art' ], { |
475 | + string: [ 'a', 't' ] |
476 | + }); |
477 | + |
478 | + t.equal(letters.a, ''); |
479 | + t.equal(letters.r, true); |
480 | + t.equal(letters.t, ''); |
481 | + |
482 | + t.end(); |
483 | +}); |
484 | + |
485 | + |
486 | test('slashBreak', function (t) { |
487 | t.same( |
488 | parse([ '-I/foo/bar/baz' ]), |
489 | |
490 | === modified file 'build/bin/node_modules/optimist/node_modules/minimist/test/short.js' |
491 | --- build/bin/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-05 23:42:31 +0000 |
492 | +++ build/bin/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-24 22:54:06 +0000 |
493 | @@ -65,21 +65,3 @@ |
494 | ); |
495 | t.end(); |
496 | }); |
497 | - |
498 | -test('-a=b', function (t) { |
499 | - t.plan(2); |
500 | - t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' }); |
501 | - t.deepEqual( |
502 | - parse([ '-abn=smth' ]), |
503 | - { _: [], a: true, b: true, n: 'smth' } |
504 | - ); |
505 | -}); |
506 | - |
507 | -test('-a =b', function (t) { |
508 | - t.plan(2); |
509 | - t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' }); |
510 | - t.deepEqual( |
511 | - parse([ '-abn', '=smth' ]), |
512 | - { _: [], a: true, b: true, n: '=smth' } |
513 | - ); |
514 | -}); |
515 | |
516 | === modified file 'build/bin/node_modules/optimist/node_modules/wordwrap/package.json' |
517 | --- build/bin/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-05 23:42:31 +0000 |
518 | +++ build/bin/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-24 22:54:06 +0000 |
519 | @@ -36,9 +36,6 @@ |
520 | }, |
521 | "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", |
522 | "readmeFilename": "README.markdown", |
523 | - "bugs": { |
524 | - "url": "https://github.com/substack/node-wordwrap/issues" |
525 | - }, |
526 | "_id": "wordwrap@0.0.2", |
527 | "_from": "wordwrap@~0.0.2" |
528 | } |
529 | |
530 | === modified file 'build/bin/node_modules/optimist/package.json' |
531 | --- build/bin/node_modules/optimist/package.json 2014-02-05 23:42:31 +0000 |
532 | +++ build/bin/node_modules/optimist/package.json 2014-02-24 22:54:06 +0000 |
533 | @@ -38,13 +38,6 @@ |
534 | }, |
535 | "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", |
536 | "readmeFilename": "readme.markdown", |
537 | - "bugs": { |
538 | - "url": "https://github.com/substack/node-optimist/issues" |
539 | - }, |
540 | "_id": "optimist@0.6.0", |
541 | - "dist": { |
542 | - "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200" |
543 | - }, |
544 | - "_from": "optimist@0.6.0", |
545 | - "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz" |
546 | + "_from": "optimist@0.6.0" |
547 | } |
548 | |
549 | === modified file 'build/bin/node_modules/shelljs/package.json' |
550 | --- build/bin/node_modules/shelljs/package.json 2014-02-05 23:42:31 +0000 |
551 | +++ build/bin/node_modules/shelljs/package.json 2014-02-24 22:54:06 +0000 |
552 | @@ -36,13 +36,6 @@ |
553 | }, |
554 | "readme": "# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and development tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project's directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire('shelljs/global');\n\nif (!which('git')) {\n echo('Sorry, this script requires git');\n exit(1);\n}\n\n// Copy files to release dir\nmkdir('-p', 'out/Release');\ncp('-R', 'stuff/*', 'out/Release');\n\n// Replace macros in each .js file\ncd('lib');\nls('*.js').forEach(function(file) {\n sed('-i', 'BUILD_VERSION', 'v0.1.2', file);\n sed('-i', /.*REMOVE_THIS_LINE.*\\n/, '', file);\n sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat('macro.js'), file);\n});\ncd('..');\n\n// Run external tool synchronously\nif (exec('git commit -am \"Auto-commit\"').code !== 0) {\n echo('Error: Git commit failed');\n exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire 'shelljs/global'\n\nif not which 'git'\n echo 'Sorry, this script requires git'\n exit 1\n\n# Copy files to release dir\nmkdir '-p', 'out/Release'\ncp '-R', 'stuff/*', 'out/Release'\n\n# Replace macros in each .js file\ncd 'lib'\nfor file in ls '*.js'\n sed '-i', 'BUILD_VERSION', 'v0.1.2', file\n sed '-i', /.*REMOVE_THIS_LINE.*\\n/, '', file\n sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat 'macro.js', file\ncd '..'\n\n# Run external tool synchronously\nif (exec 'git commit -am \"Auto-commit\"').code != 0\n echo 'Error: Git commit failed'\n exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require('shelljs');\nshell.echo('hello world');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire 'shelljs/make'\n\ntarget.all = ->\n target.bundle()\n target.docs()\n\ntarget.bundle = ->\n cd __dirname\n mkdir 'build'\n cd 'lib'\n (cat '*.js').to '../build/output.js'\n\ntarget.docs = ->\n cd __dirname\n mkdir 'docs'\n cd 'lib'\n for file in ls '*.js'\n text = grep '//@', file # extract special comments\n text.replace '//@', '' # remove comment tags\n text.to 'docs/my_docs.md'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n<!-- \n\n DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED\n\n-->\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd('dir')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls('projs/*.js');\nls('-R', '/users/me', '/tmp');\nls('-R', ['/users/me', '/tmp']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind('src', 'lib');\nfind(['src', 'lib']); // same as above\nfind('.').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls('-R', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp('file1', 'dir1');\ncp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');\ncp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm('-rf', '/tmp/*');\nrm('some_file.txt', 'another_file.txt');\nrm(['some_file.txt', 'another_file.txt']); // same as above\n```\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest')\n### mv(source_array, dest')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv('-f', 'file', 'dir/');\nmv('file1', 'file2', 'dir/');\nmv(['file1', 'file2'], 'dir/'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');\nmkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `'-b', 'path'`: true if path is a block device\n+ `'-c', 'path'`: true if path is a character device\n+ `'-d', 'path'`: true if path is a directory\n+ `'-e', 'path'`: true if path exists\n+ `'-f', 'path'`: true if path is a regular file\n+ `'-L', 'path'`: true if path is a symboilc link\n+ `'-p', 'path'`: true if path is a pipe (FIFO)\n+ `'-S', 'path'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test('-d', path)) { /* do something with dir */ };\nif (!test('-f', path)) continue; // skip if it's a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat('file*.txt');\nvar str = cat('file1', 'file2');\nvar str = cat(['file1', 'file2']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### 'string'.to(file)\n\nExamples:\n\n```javascript\ncat('input.txt').to('output.txt');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### 'string'.toEnd(file)\n\nExamples:\n\n```javascript\ncat('input.txt').toEnd('output.txt');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replace_str, file)\nAvailable options:\n\n+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');\nsed(/.*DELETE_THIS_LINE.*\\n/, '', 'source.js');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep('-v', 'GLOBAL_VARIABLE', '*.js');\ngrep('GLOBAL_VARIABLE', '*.js');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which('node');\n```\n\nSearches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho('hello world');\nvar str = echo('hello world');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | '-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === '/usr'\npushd('/etc'); // Returns /etc /usr\npushd('+1'); // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] ['-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // '/usr'\npushd('/etc'); // '/etc /usr'\necho(process.cwd()); // '/etc'\npopd(); // '/usr'\necho(process.cwd()); // '/usr'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | '+N' | '-N'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env['VAR_NAME']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec('node --version', {silent:true}).output;\n\nvar child = exec('some_long_running_process', {async:true});\nchild.stdout.on('data', function(data) {\n /* ... do something with data ... */\n});\n\nexec('some_long_running_process', function(code, output) {\n console.log('Exit code:', code);\n console.log('Program output:', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program's\n`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it's best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, '/Users/brandon');\nchmod('755', '/Users/brandon'); // same as above\nchmod('u+x', '/Users/brandon');\n```\n\nAlters the permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is\n given to the umask.\n+ There is no \"quiet\" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // \"/tmp\" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp('this_file_does_not_exist', '/dev/null'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n", |
555 | "readmeFilename": "README.md", |
556 | - "bugs": { |
557 | - "url": "https://github.com/arturadib/shelljs/issues" |
558 | - }, |
559 | "_id": "shelljs@0.2.6", |
560 | - "dist": { |
561 | - "shasum": "8caf15811675f764ac51d334b50ada4ee375b0b9" |
562 | - }, |
563 | - "_from": "shelljs@0.2.6", |
564 | - "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz" |
565 | + "_from": "shelljs@0.2.6" |
566 | } |
567 | |
568 | === modified file 'build/src/coreplugins.cpp' |
569 | --- build/src/coreplugins.cpp 2014-02-14 15:17:53 +0000 |
570 | +++ build/src/coreplugins.cpp 2014-02-24 22:54:06 +0000 |
571 | @@ -19,22 +19,24 @@ |
572 | #include <QtCore> |
573 | #include "cplugin.h" |
574 | #include "coreplugins.h" |
575 | -#include "plugins/org.apache.cordova.camera/camera.h" |
576 | +#include "plugins/org.apache.cordova.battery-status/battery.h" |
577 | + |
578 | #include "plugins/org.apache.cordova.console/console.h" |
579 | #include "plugins/org.apache.cordova.device/device.h" |
580 | -#include "plugins/org.apache.cordova.device-motion/accelerometer.h" |
581 | + |
582 | #include "plugins/org.apache.cordova.device-orientation/compass.h" |
583 | +#include "plugins/org.apache.cordova.dialogs/notification.h" |
584 | #include "plugins/org.apache.cordova.file/file.h" |
585 | + |
586 | +#include "plugins/org.apache.cordova.geolocation/geolocation.h" |
587 | +#include "plugins/org.apache.cordova.globalization/globalization.h" |
588 | +#include "plugins/org.apache.cordova.inappbrowser/inappbrowser.h" |
589 | +#include "plugins/org.apache.cordova.media/media.h" |
590 | #include "plugins/org.apache.cordova.media-capture/capture.h" |
591 | -#include "plugins/org.apache.cordova.media/media.h" |
592 | -#include "plugins/org.apache.cordova.inappbrowser/inappbrowser.h" |
593 | -#include "plugins/org.apache.cordova.splashscreen/splashscreen.h" |
594 | #include "plugins/org.apache.cordova.vibration/vibration.h" |
595 | -#include "plugins/org.apache.cordova.geolocation/geolocation.h" |
596 | -#include "plugins/org.apache.cordova.globalization/globalization.h" |
597 | -#include "plugins/org.apache.cordova.battery-status/battery.h" |
598 | +#include "plugins/org.apache.cordova.camera/camera.h" |
599 | #include "plugins/org.apache.cordova.file-transfer/file-transfer.h" |
600 | -#include "plugins/org.apache.cordova.dialogs/notification.h" |
601 | +#include "plugins/org.apache.cordova.device-motion/accelerometer.h" |
602 | INSERT_HEADER_HERE |
603 | |
604 | #define INIT_PLUGIN(class) \ |
605 | @@ -45,7 +47,7 @@ |
606 | Q_DECL_EXPORT QList<QSharedPointer<CPlugin>> cordovaGetPluginInstances(Cordova *cordova) { |
607 | QList<QSharedPointer<CPlugin>> res; |
608 | |
609 | - INIT_PLUGIN(Camera);INIT_PLUGIN(Console);INIT_PLUGIN(Device);INIT_PLUGIN(DeviceMotion);INIT_PLUGIN(DeviceOrientation);INIT_PLUGIN(File);INIT_PLUGIN(MediaCapture);INIT_PLUGIN(Media);INIT_PLUGIN(Inappbrowser);INIT_PLUGIN(Splashscreen);INIT_PLUGIN(Vibration);INIT_PLUGIN(Geolocation);INIT_PLUGIN(Globalization);INIT_PLUGIN(BatteryStatus);INIT_PLUGIN(FileTransfer);INIT_PLUGIN(Dialogs);INSERT_PLUGIN_HERE |
610 | + INIT_PLUGIN(BatteryStatus);INIT_PLUGIN(Console);INIT_PLUGIN(Device);INIT_PLUGIN(DeviceOrientation);INIT_PLUGIN(Dialogs);INIT_PLUGIN(File);INIT_PLUGIN(Geolocation);INIT_PLUGIN(Globalization);INIT_PLUGIN(Inappbrowser);INIT_PLUGIN(Media);INIT_PLUGIN(MediaCapture);INIT_PLUGIN(Vibration);INIT_PLUGIN(Camera);INIT_PLUGIN(FileTransfer);INIT_PLUGIN(DeviceMotion);INSERT_PLUGIN_HERE |
611 | |
612 | return res; |
613 | } |
614 | |
615 | === modified file 'build/src/plugins/org.apache.cordova.camera/camera.cpp' |
616 | --- build/src/plugins/org.apache.cordova.camera/camera.cpp 2014-02-14 15:17:53 +0000 |
617 | +++ build/src/plugins/org.apache.cordova.camera/camera.cpp 2014-02-24 22:54:06 +0000 |
618 | @@ -68,10 +68,10 @@ |
619 | |
620 | const char *type; |
621 | if (convertToPNG) { |
622 | - newImage.setFileTemplate("imgXXXXXX.png"); |
623 | + newImage.setFileTemplate(generateLocation("png")); |
624 | type = "png"; |
625 | } else { |
626 | - newImage.setFileTemplate("imgXXXXXX.jpg"); |
627 | + newImage.setFileTemplate(generateLocation("jpg")); |
628 | type = "jpg"; |
629 | } |
630 | |
631 | @@ -98,7 +98,7 @@ |
632 | cbParams = QString("\"%1\"").arg(content.data()); |
633 | image.remove(); |
634 | } else { |
635 | - cbParams = CordovaInternal::format(QUrl::fromLocalFile(absolutePath).toString()); |
636 | + cbParams = CordovaInternal::format(absolutePath); |
637 | } |
638 | } |
639 | |
640 | |
641 | === modified file 'build/src/plugins/org.apache.cordova.camera/camera.h' |
642 | --- build/src/plugins/org.apache.cordova.camera/camera.h 2014-02-14 15:17:53 +0000 |
643 | +++ build/src/plugins/org.apache.cordova.camera/camera.h 2014-02-24 22:54:06 +0000 |
644 | @@ -54,6 +54,16 @@ |
645 | |
646 | void onImageSaved(QString path); |
647 | |
648 | + QString generateLocation(const QString &extension) { |
649 | + int i = 1; |
650 | + for (;;++i) { |
651 | + QString path = QString("%1/.local/share/%2/persistent/%3.%4").arg(QDir::homePath()) |
652 | + .arg(QCoreApplication::applicationName()).arg(i).arg(extension); |
653 | + |
654 | + if (!QFileInfo(path).exists()) |
655 | + return path; |
656 | + } |
657 | + } |
658 | private: |
659 | bool preprocessImage(QString &path); |
660 | |
661 | |
662 | === modified file 'build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp' |
663 | --- build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp 2014-02-14 15:17:53 +0000 |
664 | +++ build/src/plugins/org.apache.cordova.device-motion/accelerometer.cpp 2014-02-24 22:54:06 +0000 |
665 | @@ -54,5 +54,5 @@ |
666 | obj.insert("timestamp", QDateTime::currentDateTime().toMSecsSinceEpoch()); |
667 | |
668 | if (_scId) |
669 | - this->cb(_scId, obj); |
670 | + this->callbackWithoutRemove(_scId, CordovaInternal::format(obj)); |
671 | } |
672 | |
673 | === modified file 'build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp' |
674 | --- build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp 2014-02-14 15:17:53 +0000 |
675 | +++ build/src/plugins/org.apache.cordova.file-transfer/file-transfer.cpp 2014-02-24 22:54:06 +0000 |
676 | @@ -20,6 +20,8 @@ |
677 | #include "file-transfer.h" |
678 | #include <cassert> |
679 | |
680 | +#define FILE_PREFIX "file://localhost" |
681 | + |
682 | void FileTransfer::download(int scId, int ecId, const QString& url, const QString &target, bool /*trustAllHost*/, int id, const QVariantMap &/*headers*/) { |
683 | QSharedPointer<FileTransferRequest> request(new FileTransferRequest(_manager, scId, ecId, id, this)); |
684 | |
685 | @@ -97,9 +99,8 @@ |
686 | if (!_scId || _reply->error() != QNetworkReply::NoError) |
687 | return; |
688 | |
689 | - QFile res(target); |
690 | - qCritical() << target; |
691 | - if (target[0] != '/' || !res.open(QIODevice::WriteOnly)) { |
692 | + QFile res(target.mid(QString(FILE_PREFIX).size())); |
693 | + if (target.indexOf(FILE_PREFIX) != 0 || !res.open(QIODevice::WriteOnly)) { |
694 | QVariantMap map; |
695 | map.insert("code", INVALID_URL_ERR); |
696 | map.insert("source", uri); |
697 | @@ -110,7 +111,7 @@ |
698 | } |
699 | res.write(_reply->readAll()); |
700 | |
701 | - QFileInfo info(target); |
702 | + QFileInfo info(target.mid(QString(FILE_PREFIX).size())); |
703 | QVariantMap map; |
704 | map.insert("isFile", true); |
705 | map.insert("isDirectory", false); |
706 | @@ -139,8 +140,8 @@ |
707 | return; |
708 | } |
709 | |
710 | - QFile file(filePath); |
711 | - if (filePath[0] != '/' || !file.open(QIODevice::ReadOnly)) { |
712 | + QFile file(filePath.mid(QString(FILE_PREFIX).size())); |
713 | + if (filePath.indexOf(FILE_PREFIX) != 0 || !file.open(QIODevice::ReadOnly)) { |
714 | QVariantMap map; |
715 | map.insert("code", FILE_NOT_FOUND_ERR); |
716 | map.insert("source", filePath); |
717 | @@ -223,7 +224,6 @@ |
718 | |
719 | int status = 404; |
720 | QVariant statusCode = _reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); |
721 | - |
722 | if (statusCode.isValid()) { |
723 | status = statusCode.toInt(); |
724 | } |
725 | |
726 | === modified file 'build/www/cordova.js' |
727 | --- build/www/cordova.js 2014-02-05 23:42:31 +0000 |
728 | +++ build/www/cordova.js 2014-02-24 22:54:06 +0000 |
729 | @@ -1,5 +1,5 @@ |
730 | // Platform: ubuntu |
731 | -// 3.4.0-rc1 |
732 | +// 3.4.0 |
733 | /* |
734 | Licensed to the Apache Software Foundation (ASF) under one |
735 | or more contributor license agreements. See the NOTICE file |
736 | @@ -19,7 +19,7 @@ |
737 | under the License. |
738 | */ |
739 | ;(function() { |
740 | -var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1'; |
741 | +var CORDOVA_JS_BUILD_LABEL = '3.4.0'; |
742 | // file: src/scripts/require.js |
743 | |
744 | /*jshint -W079 */ |
745 | |
746 | === modified file 'config.xml' |
747 | --- config.xml 2014-02-19 13:49:25 +0000 |
748 | +++ config.xml 2014-02-24 22:54:06 +0000 |
749 | @@ -1,9 +1,6 @@ |
750 | <?xml version='1.0' encoding='utf-8'?> |
751 | <widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> |
752 | <preference name="loglevel" value="DEBUG" /> |
753 | - <feature name="Camera"> |
754 | - <param policy_group="camera" policy_version="1" /> |
755 | - </feature> |
756 | <feature name="DeviceOrientation"> |
757 | <param policy_group="sensors" policy_version="1" /> |
758 | </feature> |
759 | @@ -28,4 +25,7 @@ |
760 | </author> |
761 | <content src="index.html" /> |
762 | <access origin="*" /> |
763 | + <feature name="Camera"> |
764 | + <param policy_group="camera" policy_version="1" /> |
765 | + </feature> |
766 | </widget> |
767 | |
768 | === modified file 'cordova/node_modules/colors/package.json' |
769 | --- cordova/node_modules/colors/package.json 2014-02-05 23:42:31 +0000 |
770 | +++ cordova/node_modules/colors/package.json 2014-02-24 22:54:06 +0000 |
771 | @@ -6,9 +6,7 @@ |
772 | "name": "Marak Squires" |
773 | }, |
774 | "homepage": "https://github.com/Marak/colors.js", |
775 | - "bugs": { |
776 | - "url": "https://github.com/Marak/colors.js/issues" |
777 | - }, |
778 | + "bugs": "https://github.com/Marak/colors.js/issues", |
779 | "keywords": [ |
780 | "ansi", |
781 | "terminal", |
782 | @@ -25,9 +23,5 @@ |
783 | "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n", |
784 | "readmeFilename": "ReadMe.md", |
785 | "_id": "colors@0.6.2", |
786 | - "dist": { |
787 | - "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746" |
788 | - }, |
789 | - "_from": "colors@0.6.2", |
790 | - "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" |
791 | + "_from": "colors@0.6.2" |
792 | } |
793 | |
794 | === modified file 'cordova/node_modules/elementtree/CHANGES.md' |
795 | --- cordova/node_modules/elementtree/CHANGES.md 2014-02-05 23:42:31 +0000 |
796 | +++ cordova/node_modules/elementtree/CHANGES.md 2014-02-24 22:54:06 +0000 |
797 | @@ -1,22 +1,27 @@ |
798 | -elementtree v0.1.5 (in development) |
799 | +elementtree v0.1.6 (in development) |
800 | + |
801 | +* Add support for CData elements. (#14) |
802 | + [hermannpencole] |
803 | + |
804 | +elementtree v0.1.5 - 2012-11-14 |
805 | |
806 | * Fix a bug in the find() and findtext() method which could manifest itself |
807 | under some conditions. |
808 | [metagriffin] |
809 | |
810 | -elementtree v0.1.4 |
811 | +elementtree v0.1.4 - 2012-10-15 |
812 | |
813 | * Allow user to use namespaced attributes when using find* functions. |
814 | [Andrew Lunny] |
815 | |
816 | -elementtree v0.1.3 |
817 | +elementtree v0.1.3 - 2012-09-21 |
818 | |
819 | * Improve the output of text content in the tags (strip unnecessary line break |
820 | characters). |
821 | |
822 | [Darryl Pogue] |
823 | |
824 | -elementtree v0.1.2 |
825 | +elementtree v0.1.2 - 2012-09-04 |
826 | |
827 | * Allow user to pass 'indent' option to ElementTree.write method. If this |
828 | option is specified (e.g. {'indent': 4}). XML will be pretty printed. |
829 | |
830 | === modified file 'cordova/node_modules/elementtree/README.md' |
831 | --- cordova/node_modules/elementtree/README.md 2014-02-05 23:42:31 +0000 |
832 | +++ cordova/node_modules/elementtree/README.md 2014-02-24 22:54:06 +0000 |
833 | @@ -15,6 +15,120 @@ |
834 | |
835 | Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm). |
836 | |
837 | +Example 1 – Creating An XML Document |
838 | +==================== |
839 | + |
840 | +This example shows how to build a valid XML document that can be published to |
841 | +Atom Hopper. Atom Hopper is used internally as a bridge from products all the |
842 | +way to collecting revenue, called “Usage.” MaaS and other products send similar |
843 | +events to it every time user performs an action on a resource |
844 | +(e.g. creates,updates or deletes). Below is an example of leveraging the API |
845 | +to create a new XML document. |
846 | + |
847 | +```javascript |
848 | +var et = require('elementtree'); |
849 | +var XML = et.XML; |
850 | +var ElementTree = et.ElementTree; |
851 | +var element = et.Element; |
852 | +var subElement = et.SubElement; |
853 | + |
854 | +var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region, |
855 | +checks, resourceId, category, startTime, resourceName, etree, xml; |
856 | + |
857 | +date = new Date(); |
858 | + |
859 | +root = element('entry'); |
860 | +root.set('xmlns', 'http://www.w3.org/2005/Atom'); |
861 | + |
862 | +tenantId = subElement(root, 'TenantId'); |
863 | +tenantId.text = '12345'; |
864 | + |
865 | +serviceName = subElement(root, 'ServiceName'); |
866 | +serviceName.text = 'MaaS'; |
867 | + |
868 | +resourceId = subElement(root, 'ResourceID'); |
869 | +resourceId.text = 'enAAAA'; |
870 | + |
871 | +usageId = subElement(root, 'UsageID'); |
872 | +usageId.text = '550e8400-e29b-41d4-a716-446655440000'; |
873 | + |
874 | +eventType = subElement(root, 'EventType'); |
875 | +eventType.text = 'create'; |
876 | + |
877 | +category = subElement(root, 'category'); |
878 | +category.set('term', 'monitoring.entity.create'); |
879 | + |
880 | +dataCenter = subElement(root, 'DataCenter'); |
881 | +dataCenter.text = 'global'; |
882 | + |
883 | +region = subElement(root, 'Region'); |
884 | +region.text = 'global'; |
885 | + |
886 | +startTime = subElement(root, 'StartTime'); |
887 | +startTime.text = date; |
888 | + |
889 | +resourceName = subElement(root, 'ResourceName'); |
890 | +resourceName.text = 'entity'; |
891 | + |
892 | +etree = new ElementTree(root); |
893 | +xml = etree.write({'xml_declaration': false}); |
894 | +console.log(xml); |
895 | +``` |
896 | + |
897 | +As you can see, both et.Element and et.SubElement are factory methods which |
898 | +return a new instance of Element and SubElement class, respectively. |
899 | +When you create a new element (tag) you can use set method to set an attribute. |
900 | +To set the tag value, assign a value to the .text attribute. |
901 | + |
902 | +This example would output a document that looks like this: |
903 | + |
904 | +```xml |
905 | +<entry xmlns="http://www.w3.org/2005/Atom"> |
906 | + <TenantId>12345</TenantId> |
907 | + <ServiceName>MaaS</ServiceName> |
908 | + <ResourceID>enAAAA</ResourceID> |
909 | + <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID> |
910 | + <EventType>create</EventType> |
911 | + <category term="monitoring.entity.create"/> |
912 | + <DataCenter>global</DataCenter> |
913 | + <Region>global</Region> |
914 | + <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime> |
915 | + <ResourceName>entity</ResourceName> |
916 | +</entry> |
917 | +``` |
918 | + |
919 | +Example 2 – Parsing An XML Document |
920 | +==================== |
921 | + |
922 | +This example shows how to parse an XML document and use simple XPath selectors. |
923 | +For demonstration purposes, we will use the XML document located at |
924 | +https://gist.github.com/2554343. |
925 | + |
926 | +Behind the scenes, node-elementtree uses Isaac’s sax library for parsing XML, |
927 | +but the library has a concept of “parsers,” which means it’s pretty simple to |
928 | +add support for a different parser. |
929 | + |
930 | +```javascript |
931 | +var fs = require('fs'); |
932 | + |
933 | +var et = require('elementtree'); |
934 | + |
935 | +var XML = et.XML; |
936 | +var ElementTree = et.ElementTree; |
937 | +var element = et.Element; |
938 | +var subElement = et.SubElement; |
939 | + |
940 | +var data, etree; |
941 | + |
942 | +data = fs.readFileSync('document.xml').toString(); |
943 | +etree = et.parse(data); |
944 | + |
945 | +console.log(etree.findall('./entry/TenantId').length); // 2 |
946 | +console.log(etree.findtext('./entry/ServiceName')); // MaaS |
947 | +console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create |
948 | +console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1 |
949 | +``` |
950 | + |
951 | Build status |
952 | ==================== |
953 | |
954 | |
955 | === modified file 'cordova/node_modules/elementtree/lib/elementtree.js' |
956 | --- cordova/node_modules/elementtree/lib/elementtree.js 2014-02-05 23:42:31 +0000 |
957 | +++ cordova/node_modules/elementtree/lib/elementtree.js 2014-02-24 22:54:06 +0000 |
958 | @@ -103,7 +103,7 @@ |
959 | this._children[index] = element; |
960 | }; |
961 | |
962 | -Element.prototype.remove = function(index, element) |
963 | +Element.prototype.remove = function(element) |
964 | { |
965 | this._children = this._children.filter(function(e) { |
966 | /* TODO: is this the right way to do this? */ |
967 | @@ -219,6 +219,14 @@ |
968 | return element; |
969 | } |
970 | |
971 | +function CData(text) { |
972 | + var element = new Element(CData); |
973 | + if (text) { |
974 | + element.text = text; |
975 | + } |
976 | + return element; |
977 | +} |
978 | + |
979 | function ProcessingInstruction(target, text) |
980 | { |
981 | var element = new Element(ProcessingInstruction); |
982 | @@ -441,7 +449,7 @@ |
983 | else if (typeof(tag) === "string") { |
984 | add_qname(tag); |
985 | } |
986 | - else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) { |
987 | + else if (tag !== null && tag !== Comment && tag !== CData && tag !== ProcessingInstruction) { |
988 | throw new Error('Invalid tag type for serialization: '+ tag); |
989 | } |
990 | |
991 | @@ -483,6 +491,10 @@ |
992 | else if (tag === ProcessingInstruction) { |
993 | write(sprintf("<?%s?>", _escape_cdata(text, encoding))); |
994 | } |
995 | + else if (tag === CData) { |
996 | + text = text || ''; |
997 | + write(sprintf("<![CDATA[%s]]>", text)); |
998 | + } |
999 | else { |
1000 | tag = qnames[tag]; |
1001 | if (tag === undefined) { |
1002 | @@ -579,6 +591,7 @@ |
1003 | |
1004 | exports.PI = ProcessingInstruction; |
1005 | exports.Comment = Comment; |
1006 | +exports.CData = CData; |
1007 | exports.ProcessingInstruction = ProcessingInstruction; |
1008 | exports.SubElement = SubElement; |
1009 | exports.QName = QName; |
1010 | |
1011 | === modified file 'cordova/node_modules/elementtree/node_modules/sax/package.json' |
1012 | --- cordova/node_modules/elementtree/node_modules/sax/package.json 2014-02-05 23:42:31 +0000 |
1013 | +++ cordova/node_modules/elementtree/node_modules/sax/package.json 2014-02-24 22:54:06 +0000 |
1014 | @@ -55,13 +55,6 @@ |
1015 | ], |
1016 | "readme": "# sax js\n\nA sax-style parser for XML and HTML.\n\nDesigned with [node](http://nodejs.org/) in mind, but should work fine in\nthe browser or other CommonJS implementations.\n\n## What This Is\n\n* A very simple tool to parse through an XML string.\n* A stepping stone to a streaming HTML parser.\n* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML \n docs.\n\n## What This Is (probably) Not\n\n* An HTML Parser - That's a fine goal, but this isn't it. It's just\n XML.\n* A DOM Builder - You can use it to build an object model out of XML,\n but it doesn't do that out of the box.\n* XSLT - No DOM = no querying.\n* 100% Compliant with (some other SAX implementation) - Most SAX\n implementations are in Java and do a lot more than this does.\n* An XML Validator - It does a little validation when in strict mode, but\n not much.\n* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic \n masochism.\n* A DTD-aware Thing - Fetching DTDs is a much bigger job.\n\n## Regarding `<!DOCTYPE`s and `<!ENTITY`s\n\nThe parser will handle the basic XML entities in text nodes and attribute\nvalues: `& < > ' "`. It's possible to define additional\nentities in XML by putting them in the DTD. This parser doesn't do anything\nwith that. If you want to listen to the `ondoctype` event, and then fetch\nthe doctypes, and read the entities and add them to `parser.ENTITIES`, then\nbe my guest.\n\nUnknown entities will fail in strict mode, and in loose mode, will pass\nthrough unmolested.\n\n## Usage\n\n var sax = require(\"./lib/sax\"),\n strict = true, // set to false for html-mode\n parser = sax.parser(strict);\n\n parser.onerror = function (e) {\n // an error happened.\n };\n parser.ontext = function (t) {\n // got some text. t is the string of text.\n };\n parser.onopentag = function (node) {\n // opened a tag. node has \"name\" and \"attributes\"\n };\n parser.onattribute = function (attr) {\n // an attribute. attr has \"name\" and \"value\"\n };\n parser.onend = function () {\n // parser stream is done, and ready to have more stuff written to it.\n };\n\n parser.write('<xml>Hello, <who name=\"world\">world</who>!</xml>').close();\n\n // stream usage\n // takes the same options as the parser\n var saxStream = require(\"sax\").createStream(strict, options)\n saxStream.on(\"error\", function (e) {\n // unhandled errors will throw, since this is a proper node\n // event emitter.\n console.error(\"error!\", e)\n // clear the error\n this._parser.error = null\n this._parser.resume()\n })\n saxStream.on(\"opentag\", function (node) {\n // same object as above\n })\n // pipe is supported, and it's readable/writable\n // same chunks coming in also go out.\n fs.createReadStream(\"file.xml\")\n .pipe(saxStream)\n .pipe(fs.createReadStream(\"file-copy.xml\"))\n\n\n\n## Arguments\n\nPass the following arguments to the parser function. All are optional.\n\n`strict` - Boolean. Whether or not to be a jerk. Default: `false`.\n\n`opt` - Object bag of settings regarding string formatting. All default to `false`.\n\nSettings supported:\n\n* `trim` - Boolean. Whether or not to trim text and comment nodes.\n* `normalize` - Boolean. If true, then turn any whitespace into a single\n space.\n* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, \n rather than uppercasing them.\n* `xmlns` - Boolean. If true, then namespaces are supported.\n\n## Methods\n\n`write` - Write bytes onto the stream. You don't have to do this all at\nonce. You can keep writing as much as you want.\n\n`close` - Close the stream. Once closed, no more data may be written until\nit is done processing the buffer, which is signaled by the `end` event.\n\n`resume` - To gracefully handle errors, assign a listener to the `error`\nevent. Then, when the error is taken care of, you can call `resume` to\ncontinue parsing. Otherwise, the parser will not continue while in an error\nstate.\n\n## Members\n\nAt all times, the parser object will have the following members:\n\n`line`, `column`, `position` - Indications of the position in the XML\ndocument where the parser currently is looking.\n\n`startTagPosition` - Indicates the position where the current tag starts.\n\n`closed` - Boolean indicating whether or not the parser can be written to.\nIf it's `true`, then wait for the `ready` event to write again.\n\n`strict` - Boolean indicating whether or not the parser is a jerk.\n\n`opt` - Any options passed into the constructor.\n\n`tag` - The current tag being dealt with.\n\nAnd a bunch of other stuff that you probably shouldn't touch.\n\n## Events\n\nAll events emit with a single argument. To listen to an event, assign a\nfunction to `on<eventname>`. Functions get executed in the this-context of\nthe parser object. The list of supported events are also in the exported\n`EVENTS` array.\n\nWhen using the stream interface, assign handlers using the EventEmitter\n`on` function in the normal fashion.\n\n`error` - Indication that something bad happened. The error will be hanging\nout on `parser.error`, and must be deleted before parsing can continue. By\nlistening to this event, you can keep an eye on that kind of stuff. Note:\nthis happens *much* more in strict mode. Argument: instance of `Error`.\n\n`text` - Text node. Argument: string of text.\n\n`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.\n\n`processinginstruction` - Stuff like `<?xml foo=\"blerg\" ?>`. Argument:\nobject with `name` and `body` members. Attributes are not parsed, as\nprocessing instructions have implementation dependent semantics.\n\n`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`\nwould trigger this kind of event. This is a weird thing to support, so it\nmight go away at some point. SAX isn't intended to be used to parse SGML,\nafter all.\n\n`opentag` - An opening tag. Argument: object with `name` and `attributes`.\nIn non-strict mode, tag names are uppercased, unless the `lowercasetags`\noption is set. If the `xmlns` option is set, then it will contain\nnamespace binding information on the `ns` member, and will have a\n`local`, `prefix`, and `uri` member.\n\n`closetag` - A closing tag. In loose mode, tags are auto-closed if their\nparent closes. In strict mode, well-formedness is enforced. Note that\nself-closing tags will have `closeTag` emitted immediately after `openTag`.\nArgument: tag name.\n\n`attribute` - An attribute node. Argument: object with `name` and `value`,\nand also namespace information if the `xmlns` option flag is set.\n\n`comment` - A comment node. Argument: the string of the comment.\n\n`opencdata` - The opening tag of a `<![CDATA[` block.\n\n`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get\nquite large, this event may fire multiple times for a single block, if it\nis broken up into multiple `write()`s. Argument: the string of random\ncharacter data.\n\n`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.\n\n`opennamespace` - If the `xmlns` option is set, then this event will\nsignal the start of a new namespace binding.\n\n`closenamespace` - If the `xmlns` option is set, then this event will\nsignal the end of a namespace binding.\n\n`end` - Indication that the closed stream has ended.\n\n`ready` - Indication that the stream has reset, and is ready to be written\nto.\n\n`noscript` - In non-strict mode, `<script>` tags trigger a `\"script\"`\nevent, and their contents are not checked for special xml characters.\nIf you pass `noscript: true`, then this behavior is suppressed.\n\n## Reporting Problems\n\nIt's best to write a failing test if you find an issue. I will always\naccept pull requests with failing tests if they demonstrate intended\nbehavior, but it is very hard to figure out what issue you're describing\nwithout a test. Writing a test is also the best way for you yourself\nto figure out if you really understand the issue you think you have with\nsax-js.\n", |
1017 | "readmeFilename": "README.md", |
1018 | - "bugs": { |
1019 | - "url": "https://github.com/isaacs/sax-js/issues" |
1020 | - }, |
1021 | "_id": "sax@0.3.5", |
1022 | - "dist": { |
1023 | - "shasum": "97a786cbbe404d7e24961b201f37be81b9249908" |
1024 | - }, |
1025 | - "_from": "sax@0.3.5", |
1026 | - "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz" |
1027 | + "_from": "sax@0.3.5" |
1028 | } |
1029 | |
1030 | === modified file 'cordova/node_modules/elementtree/package.json' |
1031 | --- cordova/node_modules/elementtree/package.json 2014-02-05 23:42:31 +0000 |
1032 | +++ cordova/node_modules/elementtree/package.json 2014-02-24 22:54:06 +0000 |
1033 | @@ -14,7 +14,7 @@ |
1034 | ], |
1035 | "name": "elementtree", |
1036 | "description": "XML Serialization and Parsing module based on Python's ElementTree.", |
1037 | - "version": "0.1.5", |
1038 | + "version": "0.1.6", |
1039 | "keywords": [ |
1040 | "xml", |
1041 | "sax", |
1042 | @@ -41,7 +41,7 @@ |
1043 | "sax": "0.3.5" |
1044 | }, |
1045 | "devDependencies": { |
1046 | - "whiskey": "0.6.8" |
1047 | + "whiskey": "0.8.x" |
1048 | }, |
1049 | "licenses": [ |
1050 | { |
1051 | @@ -49,11 +49,8 @@ |
1052 | "url": "http://www.apache.org/licenses/LICENSE-2.0.html" |
1053 | } |
1054 | ], |
1055 | - "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n", |
1056 | + "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nExample 1 – Creating An XML Document\n====================\n\nThis example shows how to build a valid XML document that can be published to\nAtom Hopper. Atom Hopper is used internally as a bridge from products all the\nway to collecting revenue, called “Usage.” MaaS and other products send similar\nevents to it every time user performs an action on a resource\n(e.g. creates,updates or deletes). Below is an example of leveraging the API\nto create a new XML document.\n\n```javascript\nvar et = require('elementtree');\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,\nchecks, resourceId, category, startTime, resourceName, etree, xml;\n\ndate = new Date();\n\nroot = element('entry');\nroot.set('xmlns', 'http://www.w3.org/2005/Atom');\n\ntenantId = subElement(root, 'TenantId');\ntenantId.text = '12345';\n\nserviceName = subElement(root, 'ServiceName');\nserviceName.text = 'MaaS';\n\nresourceId = subElement(root, 'ResourceID');\nresourceId.text = 'enAAAA';\n\nusageId = subElement(root, 'UsageID');\nusageId.text = '550e8400-e29b-41d4-a716-446655440000';\n\neventType = subElement(root, 'EventType');\neventType.text = 'create';\n\ncategory = subElement(root, 'category');\ncategory.set('term', 'monitoring.entity.create');\n\ndataCenter = subElement(root, 'DataCenter');\ndataCenter.text = 'global';\n\nregion = subElement(root, 'Region');\nregion.text = 'global';\n\nstartTime = subElement(root, 'StartTime');\nstartTime.text = date;\n\nresourceName = subElement(root, 'ResourceName');\nresourceName.text = 'entity';\n\netree = new ElementTree(root);\nxml = etree.write({'xml_declaration': false});\nconsole.log(xml);\n```\n\nAs you can see, both et.Element and et.SubElement are factory methods which\nreturn a new instance of Element and SubElement class, respectively.\nWhen you create a new element (tag) you can use set method to set an attribute.\nTo set the tag value, assign a value to the .text attribute.\n\nThis example would output a document that looks like this:\n\n```xml\n<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <TenantId>12345</TenantId>\n <ServiceName>MaaS</ServiceName>\n <ResourceID>enAAAA</ResourceID>\n <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>\n <EventType>create</EventType>\n <category term=\"monitoring.entity.create\"/>\n <DataCenter>global</DataCenter>\n <Region>global</Region>\n <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>\n <ResourceName>entity</ResourceName>\n</entry>\n```\n\nExample 2 – Parsing An XML Document\n====================\n\nThis example shows how to parse an XML document and use simple XPath selectors.\nFor demonstration purposes, we will use the XML document located at\nhttps://gist.github.com/2554343.\n\nBehind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,\nbut the library has a concept of “parsers,” which means it’s pretty simple to\nadd support for a different parser.\n\n```javascript\nvar fs = require('fs');\n\nvar et = require('elementtree');\n\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar data, etree;\n\ndata = fs.readFileSync('document.xml').toString();\netree = et.parse(data);\n\nconsole.log(etree.findall('./entry/TenantId').length); // 2\nconsole.log(etree.findtext('./entry/ServiceName')); // MaaS\nconsole.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create\nconsole.log(etree.findall('*/category/[@term=\"monitoring.entity.update\"]').length); // 1\n```\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n", |
1057 | "readmeFilename": "README.md", |
1058 | - "bugs": { |
1059 | - "url": "https://github.com/racker/node-elementtree/issues" |
1060 | - }, |
1061 | - "_id": "elementtree@0.1.5", |
1062 | + "_id": "elementtree@0.1.6", |
1063 | "_from": "elementtree@*" |
1064 | } |
1065 | |
1066 | === modified file 'cordova/node_modules/elementtree/tests/test-simple.js' |
1067 | --- cordova/node_modules/elementtree/tests/test-simple.js 2014-02-05 23:42:31 +0000 |
1068 | +++ cordova/node_modules/elementtree/tests/test-simple.js 2014-02-24 22:54:06 +0000 |
1069 | @@ -297,3 +297,43 @@ |
1070 | assert.equal(root.findtext('no-such-node/leaf'), null); |
1071 | test.finish(); |
1072 | }; |
1073 | + |
1074 | +exports['test_remove'] = function(test, assert) { |
1075 | + var root = Element('root'); |
1076 | + var node1 = SubElement(root, 'node1'); |
1077 | + var node2 = SubElement(root, 'node2'); |
1078 | + var node3 = SubElement(root, 'node3'); |
1079 | + |
1080 | + assert.equal(root.len(), 3); |
1081 | + |
1082 | + root.remove(node2); |
1083 | + |
1084 | + assert.equal(root.len(), 2); |
1085 | + assert.equal(root.getItem(0).tag, 'node1') |
1086 | + assert.equal(root.getItem(1).tag, 'node3') |
1087 | + |
1088 | + test.finish(); |
1089 | +}; |
1090 | + |
1091 | +exports['test_cdata_write'] = function(test, assert) { |
1092 | + var root, etree, xml, values, value, i; |
1093 | + |
1094 | + values = [ |
1095 | + 'if(0>1) then true;', |
1096 | + '<test1>ponies hello</test1>', |
1097 | + '' |
1098 | + ]; |
1099 | + |
1100 | + for (i = 0; i < values.length; i++) { |
1101 | + value = values[i]; |
1102 | + |
1103 | + root = Element('root'); |
1104 | + root.append(et.CData(value)); |
1105 | + etree = new ElementTree(root); |
1106 | + xml = etree.write({'xml_declaration': false}); |
1107 | + |
1108 | + assert.equal(xml, sprintf('<root><![CDATA[%s]]></root>', value)); |
1109 | + } |
1110 | + |
1111 | + test.finish(); |
1112 | +}; |
1113 | |
1114 | === modified file 'cordova/node_modules/optimist/node_modules/minimist/index.js' |
1115 | --- cordova/node_modules/optimist/node_modules/minimist/index.js 2014-02-05 23:42:31 +0000 |
1116 | +++ cordova/node_modules/optimist/node_modules/minimist/index.js 2014-02-24 22:54:06 +0000 |
1117 | @@ -49,21 +49,21 @@ |
1118 | for (var i = 0; i < args.length; i++) { |
1119 | var arg = args[i]; |
1120 | |
1121 | - if (arg.match(/^--.+=/)) { |
1122 | + if (/^--.+=/.test(arg)) { |
1123 | // Using [\s\S] instead of . because js doesn't support the |
1124 | // 'dotall' regex modifier. See: |
1125 | // http://stackoverflow.com/a/1068308/13216 |
1126 | var m = arg.match(/^--([^=]+)=([\s\S]*)$/); |
1127 | setArg(m[1], m[2]); |
1128 | } |
1129 | - else if (arg.match(/^--no-.+/)) { |
1130 | + else if (/^--no-.+/.test(arg)) { |
1131 | var key = arg.match(/^--no-(.+)/)[1]; |
1132 | setArg(key, false); |
1133 | } |
1134 | - else if (arg.match(/^--.+/)) { |
1135 | + else if (/^--.+/.test(arg)) { |
1136 | var key = arg.match(/^--(.+)/)[1]; |
1137 | var next = args[i + 1]; |
1138 | - if (next !== undefined && !next.match(/^-/) |
1139 | + if (next !== undefined && !/^-/.test(next) |
1140 | && !flags.bools[key] |
1141 | && (aliases[key] ? !flags.bools[aliases[key]] : true)) { |
1142 | setArg(key, next); |
1143 | @@ -74,21 +74,15 @@ |
1144 | i++; |
1145 | } |
1146 | else { |
1147 | - setArg(key, true); |
1148 | + setArg(key, flags.strings[key] ? '' : true); |
1149 | } |
1150 | } |
1151 | - else if (arg.match(/^-[^-]+/)) { |
1152 | + else if (/^-[^-]+/.test(arg)) { |
1153 | var letters = arg.slice(1,-1).split(''); |
1154 | |
1155 | var broken = false; |
1156 | for (var j = 0; j < letters.length; j++) { |
1157 | var next = arg.slice(j+2); |
1158 | - |
1159 | - if (letters[j+1] && letters[j+1] === '=') { |
1160 | - setArg(letters[j], arg.slice(j+3)); |
1161 | - broken = true; |
1162 | - break; |
1163 | - } |
1164 | |
1165 | if (next === '-') { |
1166 | setArg(letters[j], next) |
1167 | @@ -108,7 +102,7 @@ |
1168 | break; |
1169 | } |
1170 | else { |
1171 | - setArg(letters[j], true); |
1172 | + setArg(letters[j], flags.strings[letters[j]] ? '' : true); |
1173 | } |
1174 | } |
1175 | |
1176 | @@ -125,7 +119,7 @@ |
1177 | i++; |
1178 | } |
1179 | else { |
1180 | - setArg(key, true); |
1181 | + setArg(key, flags.strings[key] ? '' : true); |
1182 | } |
1183 | } |
1184 | } |
1185 | |
1186 | === modified file 'cordova/node_modules/optimist/node_modules/minimist/package.json' |
1187 | --- cordova/node_modules/optimist/node_modules/minimist/package.json 2014-02-05 23:42:31 +0000 |
1188 | +++ cordova/node_modules/optimist/node_modules/minimist/package.json 2014-02-24 22:54:06 +0000 |
1189 | @@ -1,6 +1,6 @@ |
1190 | { |
1191 | "name": "minimist", |
1192 | - "version": "0.0.5", |
1193 | + "version": "0.0.8", |
1194 | "description": "parse argument options", |
1195 | "main": "index.js", |
1196 | "devDependencies": { |
1197 | @@ -42,9 +42,6 @@ |
1198 | "license": "MIT", |
1199 | "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n", |
1200 | "readmeFilename": "readme.markdown", |
1201 | - "bugs": { |
1202 | - "url": "https://github.com/substack/minimist/issues" |
1203 | - }, |
1204 | - "_id": "minimist@0.0.5", |
1205 | + "_id": "minimist@0.0.8", |
1206 | "_from": "minimist@~0.0.1" |
1207 | } |
1208 | |
1209 | === modified file 'cordova/node_modules/optimist/node_modules/minimist/test/parse.js' |
1210 | --- cordova/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-05 23:42:31 +0000 |
1211 | +++ cordova/node_modules/optimist/node_modules/minimist/test/parse.js 2014-02-24 22:54:06 +0000 |
1212 | @@ -162,6 +162,27 @@ |
1213 | t.end(); |
1214 | }); |
1215 | |
1216 | +test('empty strings', function(t) { |
1217 | + var s = parse([ '-s' ], { string: 's' }).s; |
1218 | + t.equal(s, ''); |
1219 | + t.equal(typeof s, 'string'); |
1220 | + |
1221 | + var str = parse([ '--str' ], { string: 'str' }).str; |
1222 | + t.equal(str, ''); |
1223 | + t.equal(typeof str, 'string'); |
1224 | + |
1225 | + var letters = parse([ '-art' ], { |
1226 | + string: [ 'a', 't' ] |
1227 | + }); |
1228 | + |
1229 | + t.equal(letters.a, ''); |
1230 | + t.equal(letters.r, true); |
1231 | + t.equal(letters.t, ''); |
1232 | + |
1233 | + t.end(); |
1234 | +}); |
1235 | + |
1236 | + |
1237 | test('slashBreak', function (t) { |
1238 | t.same( |
1239 | parse([ '-I/foo/bar/baz' ]), |
1240 | |
1241 | === modified file 'cordova/node_modules/optimist/node_modules/minimist/test/short.js' |
1242 | --- cordova/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-05 23:42:31 +0000 |
1243 | +++ cordova/node_modules/optimist/node_modules/minimist/test/short.js 2014-02-24 22:54:06 +0000 |
1244 | @@ -65,21 +65,3 @@ |
1245 | ); |
1246 | t.end(); |
1247 | }); |
1248 | - |
1249 | -test('-a=b', function (t) { |
1250 | - t.plan(2); |
1251 | - t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' }); |
1252 | - t.deepEqual( |
1253 | - parse([ '-abn=smth' ]), |
1254 | - { _: [], a: true, b: true, n: 'smth' } |
1255 | - ); |
1256 | -}); |
1257 | - |
1258 | -test('-a =b', function (t) { |
1259 | - t.plan(2); |
1260 | - t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' }); |
1261 | - t.deepEqual( |
1262 | - parse([ '-abn', '=smth' ]), |
1263 | - { _: [], a: true, b: true, n: '=smth' } |
1264 | - ); |
1265 | -}); |
1266 | |
1267 | === modified file 'cordova/node_modules/optimist/node_modules/wordwrap/package.json' |
1268 | --- cordova/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-05 23:42:31 +0000 |
1269 | +++ cordova/node_modules/optimist/node_modules/wordwrap/package.json 2014-02-24 22:54:06 +0000 |
1270 | @@ -36,9 +36,6 @@ |
1271 | }, |
1272 | "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", |
1273 | "readmeFilename": "README.markdown", |
1274 | - "bugs": { |
1275 | - "url": "https://github.com/substack/node-wordwrap/issues" |
1276 | - }, |
1277 | "_id": "wordwrap@0.0.2", |
1278 | "_from": "wordwrap@~0.0.2" |
1279 | } |
1280 | |
1281 | === modified file 'cordova/node_modules/optimist/package.json' |
1282 | --- cordova/node_modules/optimist/package.json 2014-02-05 23:42:31 +0000 |
1283 | +++ cordova/node_modules/optimist/package.json 2014-02-24 22:54:06 +0000 |
1284 | @@ -38,13 +38,6 @@ |
1285 | }, |
1286 | "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", |
1287 | "readmeFilename": "readme.markdown", |
1288 | - "bugs": { |
1289 | - "url": "https://github.com/substack/node-optimist/issues" |
1290 | - }, |
1291 | "_id": "optimist@0.6.0", |
1292 | - "dist": { |
1293 | - "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200" |
1294 | - }, |
1295 | - "_from": "optimist@0.6.0", |
1296 | - "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz" |
1297 | + "_from": "optimist@0.6.0" |
1298 | } |
1299 | |
1300 | === modified file 'cordova/node_modules/shelljs/package.json' |
1301 | --- cordova/node_modules/shelljs/package.json 2014-02-05 23:42:31 +0000 |
1302 | +++ cordova/node_modules/shelljs/package.json 2014-02-24 22:54:06 +0000 |
1303 | @@ -36,13 +36,6 @@ |
1304 | }, |
1305 | "readme": "# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and development tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project's directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire('shelljs/global');\n\nif (!which('git')) {\n echo('Sorry, this script requires git');\n exit(1);\n}\n\n// Copy files to release dir\nmkdir('-p', 'out/Release');\ncp('-R', 'stuff/*', 'out/Release');\n\n// Replace macros in each .js file\ncd('lib');\nls('*.js').forEach(function(file) {\n sed('-i', 'BUILD_VERSION', 'v0.1.2', file);\n sed('-i', /.*REMOVE_THIS_LINE.*\\n/, '', file);\n sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat('macro.js'), file);\n});\ncd('..');\n\n// Run external tool synchronously\nif (exec('git commit -am \"Auto-commit\"').code !== 0) {\n echo('Error: Git commit failed');\n exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire 'shelljs/global'\n\nif not which 'git'\n echo 'Sorry, this script requires git'\n exit 1\n\n# Copy files to release dir\nmkdir '-p', 'out/Release'\ncp '-R', 'stuff/*', 'out/Release'\n\n# Replace macros in each .js file\ncd 'lib'\nfor file in ls '*.js'\n sed '-i', 'BUILD_VERSION', 'v0.1.2', file\n sed '-i', /.*REMOVE_THIS_LINE.*\\n/, '', file\n sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat 'macro.js', file\ncd '..'\n\n# Run external tool synchronously\nif (exec 'git commit -am \"Auto-commit\"').code != 0\n echo 'Error: Git commit failed'\n exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require('shelljs');\nshell.echo('hello world');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire 'shelljs/make'\n\ntarget.all = ->\n target.bundle()\n target.docs()\n\ntarget.bundle = ->\n cd __dirname\n mkdir 'build'\n cd 'lib'\n (cat '*.js').to '../build/output.js'\n\ntarget.docs = ->\n cd __dirname\n mkdir 'docs'\n cd 'lib'\n for file in ls '*.js'\n text = grep '//@', file # extract special comments\n text.replace '//@', '' # remove comment tags\n text.to 'docs/my_docs.md'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n<!-- \n\n DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED\n\n-->\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd('dir')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls('projs/*.js');\nls('-R', '/users/me', '/tmp');\nls('-R', ['/users/me', '/tmp']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind('src', 'lib');\nfind(['src', 'lib']); // same as above\nfind('.').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls('-R', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp('file1', 'dir1');\ncp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');\ncp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm('-rf', '/tmp/*');\nrm('some_file.txt', 'another_file.txt');\nrm(['some_file.txt', 'another_file.txt']); // same as above\n```\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest')\n### mv(source_array, dest')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv('-f', 'file', 'dir/');\nmv('file1', 'file2', 'dir/');\nmv(['file1', 'file2'], 'dir/'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');\nmkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `'-b', 'path'`: true if path is a block device\n+ `'-c', 'path'`: true if path is a character device\n+ `'-d', 'path'`: true if path is a directory\n+ `'-e', 'path'`: true if path exists\n+ `'-f', 'path'`: true if path is a regular file\n+ `'-L', 'path'`: true if path is a symboilc link\n+ `'-p', 'path'`: true if path is a pipe (FIFO)\n+ `'-S', 'path'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test('-d', path)) { /* do something with dir */ };\nif (!test('-f', path)) continue; // skip if it's a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat('file*.txt');\nvar str = cat('file1', 'file2');\nvar str = cat(['file1', 'file2']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### 'string'.to(file)\n\nExamples:\n\n```javascript\ncat('input.txt').to('output.txt');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### 'string'.toEnd(file)\n\nExamples:\n\n```javascript\ncat('input.txt').toEnd('output.txt');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replace_str, file)\nAvailable options:\n\n+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');\nsed(/.*DELETE_THIS_LINE.*\\n/, '', 'source.js');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep('-v', 'GLOBAL_VARIABLE', '*.js');\ngrep('GLOBAL_VARIABLE', '*.js');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which('node');\n```\n\nSearches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho('hello world');\nvar str = echo('hello world');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | '-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === '/usr'\npushd('/etc'); // Returns /etc /usr\npushd('+1'); // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] ['-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // '/usr'\npushd('/etc'); // '/etc /usr'\necho(process.cwd()); // '/etc'\npopd(); // '/usr'\necho(process.cwd()); // '/usr'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | '+N' | '-N'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env['VAR_NAME']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec('node --version', {silent:true}).output;\n\nvar child = exec('some_long_running_process', {async:true});\nchild.stdout.on('data', function(data) {\n /* ... do something with data ... */\n});\n\nexec('some_long_running_process', function(code, output) {\n console.log('Exit code:', code);\n console.log('Program output:', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program's\n`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it's best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, '/Users/brandon');\nchmod('755', '/Users/brandon'); // same as above\nchmod('u+x', '/Users/brandon');\n```\n\nAlters the permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is\n given to the umask.\n+ There is no \"quiet\" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // \"/tmp\" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp('this_file_does_not_exist', '/dev/null'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n", |
1306 | "readmeFilename": "README.md", |
1307 | - "bugs": { |
1308 | - "url": "https://github.com/arturadib/shelljs/issues" |
1309 | - }, |
1310 | "_id": "shelljs@0.2.6", |
1311 | - "dist": { |
1312 | - "shasum": "8caf15811675f764ac51d334b50ada4ee375b0b9" |
1313 | - }, |
1314 | - "_from": "shelljs@0.2.6", |
1315 | - "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz" |
1316 | + "_from": "shelljs@0.2.6" |
1317 | } |
1318 | |
1319 | === modified file 'debian/changelog' |
1320 | --- debian/changelog 2014-02-20 10:49:33 +0000 |
1321 | +++ debian/changelog 2014-02-24 22:54:06 +0000 |
1322 | @@ -1,3 +1,15 @@ |
1323 | +cordova-ubuntu-3.4 (3.4.0~ubuntu1) trusty; urgency=low |
1324 | + |
1325 | + * Fixes for camera, file-transfer and device-motion plugins |
1326 | + |
1327 | + -- David Barth <david.barth@canonical.com> Mon, 24 Feb 2014 23:46:55 +0100 |
1328 | + |
1329 | +cordova-ubuntu-3.4 (3.4.0) trusty; urgency=low |
1330 | + |
1331 | + * Releasing 3.4.0 |
1332 | + |
1333 | + -- David Barth <david.barth@canonical.com> Mon, 24 Feb 2014 23:30:45 +0100 |
1334 | + |
1335 | cordova-ubuntu-3.4 (3.4~pre3.r19) trusty; urgency=low |
1336 | |
1337 | * Releasing 3.4~pre3.r19 |
1338 | |
1339 | === modified file 'platform_www/cordova.js' |
1340 | --- platform_www/cordova.js 2014-02-05 23:42:31 +0000 |
1341 | +++ platform_www/cordova.js 2014-02-24 22:54:06 +0000 |
1342 | @@ -1,5 +1,5 @@ |
1343 | // Platform: ubuntu |
1344 | -// 3.4.0-rc1 |
1345 | +// 3.4.0 |
1346 | /* |
1347 | Licensed to the Apache Software Foundation (ASF) under one |
1348 | or more contributor license agreements. See the NOTICE file |
1349 | @@ -19,7 +19,7 @@ |
1350 | under the License. |
1351 | */ |
1352 | ;(function() { |
1353 | -var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1'; |
1354 | +var CORDOVA_JS_BUILD_LABEL = '3.4.0'; |
1355 | // file: src/scripts/require.js |
1356 | |
1357 | /*jshint -W079 */ |
1358 | |
1359 | === modified file 'qml/CaptureWidget.qml' |
1360 | --- qml/CaptureWidget.qml 2014-02-19 13:49:25 +0000 |
1361 | +++ qml/CaptureWidget.qml 2014-02-24 22:54:06 +0000 |
1362 | @@ -100,7 +100,7 @@ |
1363 | MouseArea { |
1364 | anchors.fill: parent |
1365 | onClicked: { |
1366 | - camera.imageCapture.capture(); |
1367 | + camera.imageCapture.captureToLocation(ui.parent.plugin('Camera').generateLocation("jpg")); |
1368 | } |
1369 | } |
1370 | } |