cordova-ubuntu-3.4-3.4~pre3.r19build1/0000775000000000000000000000000012301420116014220 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/0000775000000000000000000000000012301420116015655 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/version0000775000000000000000000000130012301417627017277 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ // Coho updates this line: var VERSION = "3.4.0-dev"; console.log(VERSION); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/run0000775000000000000000000000164012301417627016425 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ var path = require('path'); var platform = require('./lib/ubuntu'); var root = path.resolve(); var www = path.join(root, 'www'); var argv = require('optimist').boolean(['device', 'debug', 'nobuild']).string(['target']).argv; platform.run(root, !argv.device, argv.debug, argv.target, argv.nobuild); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/defaults.xml0000664000000000000000000000330412301417627020223 0ustar Hello Cordova A sample Apache Cordova application that responds to the deviceready event. Apache Cordova Team cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/build0000775000000000000000000000143212301417627016717 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ var path = require('path'); var platform = require('./lib/ubuntu'); var root = path.resolve(); var www = path.join(root, 'www'); platform.build(root, platform.ALL); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/0000775000000000000000000000000012301420116020332 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/.bin/0000775000000000000000000000000012301420116021160 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/.bin/shjs0000777000000000000000000000000012301420116025366 2../shelljs/bin/shjsustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/0000775000000000000000000000000012301420116021776 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/package.json0000664000000000000000000004001312301417627024277 0ustar { "name": "shelljs", "version": "0.2.6", "author": { "name": "Artur Adib", "email": "aadib@mozilla.com" }, "description": "Portable Unix shell commands for Node.js", "keywords": [ "unix", "shell", "makefile", "make", "jake", "synchronous" ], "repository": { "type": "git", "url": "git://github.com/arturadib/shelljs.git" }, "homepage": "http://github.com/arturadib/shelljs", "main": "./shell.js", "scripts": { "test": "node scripts/run-tests" }, "bin": { "shjs": "./bin/shjs" }, "dependencies": {}, "devDependencies": { "jshint": "~2.1.11" }, "optionalDependencies": {}, "engines": { "node": ">=0.8.0" }, "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\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", "readmeFilename": "README.md", "bugs": { "url": "https://github.com/arturadib/shelljs/issues" }, "_id": "shelljs@0.2.6", "dist": { "shasum": "8caf15811675f764ac51d334b50ada4ee375b0b9" }, "_from": "shelljs@0.2.6", "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/.jshintrc0000664000000000000000000000013012301417627023632 0ustar { "loopfunc": true, "sub": true, "undef": true, "unused": true, "node": true }cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/global.js0000664000000000000000000000012612301417627023610 0ustar var shell = require('./shell.js'); for (var cmd in shell) global[cmd] = shell[cmd]; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/.documentup.json0000664000000000000000000000006612301417627025151 0ustar { "name": "ShellJS", "twitter": [ "r2r" ] } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/make.js0000664000000000000000000000203712301417627023270 0ustar require('./global'); global.config.fatal = true; global.target = {}; // This ensures we only execute the script targets after the entire script has // been evaluated var args = process.argv.slice(2); setTimeout(function() { var t; if (args.length === 1 && args[0] === '--help') { console.log('Available targets:'); for (t in global.target) console.log(' ' + t); return; } // Wrap targets to prevent duplicate execution for (t in global.target) { (function(t, oldTarget){ // Wrap it global.target[t] = function(force) { if (oldTarget.done && !force) return; oldTarget.done = true; return oldTarget.apply(oldTarget, arguments); }; })(t, global.target[t]); } // Execute desired targets if (args.length > 0) { args.forEach(function(arg) { if (arg in global.target) global.target[arg](); else { console.log('no such target: ' + arg); } }); } else if ('all' in global.target) { global.target.all(); } }, 0); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/0000775000000000000000000000000012301420116022565 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/dirs.js0000664000000000000000000001214412301417627024103 0ustar var common = require('./common'); var _cd = require('./cd'); var path = require('path'); // Pushd/popd/dirs internals var _dirStack = []; function _isStackIndex(index) { return (/^[\-+]\d+$/).test(index); } function _parseStackIndex(index) { if (_isStackIndex(index)) { if (Math.abs(index) < _dirStack.length + 1) { // +1 for pwd return (/^-/).test(index) ? Number(index) - 1 : Number(index); } else { common.error(index + ': directory stack index out of range'); } } else { common.error(index + ': invalid number'); } } function _actualDirStack() { return [process.cwd()].concat(_dirStack); } //@ //@ ### pushd([options,] [dir | '-N' | '+N']) //@ //@ Available options: //@ //@ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. //@ //@ Arguments: //@ //@ + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. //@ + `+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`: 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. //@ //@ Examples: //@ //@ ```javascript //@ // process.cwd() === '/usr' //@ pushd('/etc'); // Returns /etc /usr //@ pushd('+1'); // Returns /usr /etc //@ ``` //@ //@ Save 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. function _pushd(options, dir) { if (_isStackIndex(options)) { dir = options; options = ''; } options = common.parseOptions(options, { 'n' : 'no-cd' }); var dirs = _actualDirStack(); if (dir === '+0') { return dirs; // +0 is a noop } else if (!dir) { if (dirs.length > 1) { dirs = dirs.splice(1, 1).concat(dirs); } else { return common.error('no other directory'); } } else if (_isStackIndex(dir)) { var n = _parseStackIndex(dir); dirs = dirs.slice(n).concat(dirs.slice(0, n)); } else { if (options['no-cd']) { dirs.splice(1, 0, dir); } else { dirs.unshift(dir); } } if (options['no-cd']) { dirs = dirs.slice(1); } else { dir = path.resolve(dirs.shift()); _cd('', dir); } _dirStack = dirs; return _dirs(''); } exports.pushd = _pushd; //@ //@ ### popd([options,] ['-N' | '+N']) //@ //@ Available options: //@ //@ + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. //@ //@ Arguments: //@ //@ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. //@ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. //@ //@ Examples: //@ //@ ```javascript //@ echo(process.cwd()); // '/usr' //@ pushd('/etc'); // '/etc /usr' //@ echo(process.cwd()); // '/etc' //@ popd(); // '/usr' //@ echo(process.cwd()); // '/usr' //@ ``` //@ //@ When 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. function _popd(options, index) { if (_isStackIndex(options)) { index = options; options = ''; } options = common.parseOptions(options, { 'n' : 'no-cd' }); if (!_dirStack.length) { return common.error('directory stack empty'); } index = _parseStackIndex(index || '+0'); if (options['no-cd'] || index > 0 || _dirStack.length + index === 0) { index = index > 0 ? index - 1 : index; _dirStack.splice(index, 1); } else { var dir = path.resolve(_dirStack.shift()); _cd('', dir); } return _dirs(''); } exports.popd = _popd; //@ //@ ### dirs([options | '+N' | '-N']) //@ //@ Available options: //@ //@ + `-c`: Clears the directory stack by deleting all of the elements. //@ //@ Arguments: //@ //@ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. //@ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. //@ //@ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. //@ //@ See also: pushd, popd function _dirs(options, index) { if (_isStackIndex(options)) { index = options; options = ''; } options = common.parseOptions(options, { 'c' : 'clear' }); if (options['clear']) { _dirStack = []; return _dirStack; } var stack = _actualDirStack(); if (index) { index = _parseStackIndex(index); if (index < 0) { index = stack.length + index; } common.log(stack[index]); return stack[index]; } common.log(stack.join(' ')); return stack; } exports.dirs = _dirs; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/sed.js0000664000000000000000000000237412301417627023721 0ustar var common = require('./common'); var fs = require('fs'); //@ //@ ### sed([options ,] search_regex, replace_str, file) //@ Available options: //@ //@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ //@ //@ Examples: //@ //@ ```javascript //@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); //@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); //@ ``` //@ //@ Reads an input string from `file` and performs a JavaScript `replace()` on the input //@ using the given search regex and replacement string. Returns the new string after replacement. function _sed(options, regex, replacement, file) { options = common.parseOptions(options, { 'i': 'inplace' }); if (typeof replacement === 'string') replacement = replacement; // no-op else if (typeof replacement === 'number') replacement = replacement.toString(); // fallback else common.error('invalid replacement string'); if (!file) common.error('no file given'); if (!fs.existsSync(file)) common.error('no such file or directory: ' + file); var result = fs.readFileSync(file, 'utf8').replace(regex, replacement); if (options.inplace) fs.writeFileSync(file, result, 'utf8'); return common.ShellString(result); } module.exports = _sed; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/cat.js0000664000000000000000000000205212301417627023706 0ustar var common = require('./common'); var fs = require('fs'); //@ //@ ### cat(file [, file ...]) //@ ### cat(file_array) //@ //@ Examples: //@ //@ ```javascript //@ var str = cat('file*.txt'); //@ var str = cat('file1', 'file2'); //@ var str = cat(['file1', 'file2']); // same as above //@ ``` //@ //@ Returns a string containing the given file, or a concatenated string //@ containing the files if more than one file is given (a new line character is //@ introduced between each file). Wildcard `*` accepted. function _cat(options, files) { var cat = ''; if (!files) common.error('no paths given'); if (typeof files === 'string') files = [].slice.call(arguments, 1); // if it's array leave it as it is files = common.expand(files); files.forEach(function(file) { if (!fs.existsSync(file)) common.error('no such file or directory: ' + file); cat += fs.readFileSync(file, 'utf8') + '\n'; }); if (cat[cat.length-1] === '\n') cat = cat.substring(0, cat.length-1); return common.ShellString(cat); } module.exports = _cat; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/pushd.js0000664000000000000000000000001612301417627024260 0ustar // see dirs.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/cp.js0000664000000000000000000001327112301417627023546 0ustar var fs = require('fs'); var path = require('path'); var common = require('./common'); // Buffered file copy, synchronous // (Using readFileSync() + writeFileSync() could easily cause a memory overflow // with large files) function copyFileSync(srcFile, destFile) { if (!fs.existsSync(srcFile)) common.error('copyFileSync: no such file or directory: ' + srcFile); var BUF_LENGTH = 64*1024, buf = new Buffer(BUF_LENGTH), bytesRead = BUF_LENGTH, pos = 0, fdr = null, fdw = null; try { fdr = fs.openSync(srcFile, 'r'); } catch(e) { common.error('copyFileSync: could not read src file ('+srcFile+')'); } try { fdw = fs.openSync(destFile, 'w'); } catch(e) { common.error('copyFileSync: could not write to dest file (code='+e.code+'):'+destFile); } while (bytesRead === BUF_LENGTH) { bytesRead = fs.readSync(fdr, buf, 0, BUF_LENGTH, pos); fs.writeSync(fdw, buf, 0, bytesRead); pos += bytesRead; } fs.closeSync(fdr); fs.closeSync(fdw); fs.chmodSync(destFile, fs.statSync(srcFile).mode); } // Recursively copies 'sourceDir' into 'destDir' // Adapted from https://github.com/ryanmcgrath/wrench-js // // Copyright (c) 2010 Ryan McGrath // Copyright (c) 2012 Artur Adib // // Licensed under the MIT License // http://www.opensource.org/licenses/mit-license.php function cpdirSyncRecursive(sourceDir, destDir, opts) { if (!opts) opts = {}; /* Create the directory where all our junk is moving to; read the mode of the source directory and mirror it */ var checkDir = fs.statSync(sourceDir); try { fs.mkdirSync(destDir, checkDir.mode); } catch (e) { //if the directory already exists, that's okay if (e.code !== 'EEXIST') throw e; } var files = fs.readdirSync(sourceDir); for (var i = 0; i < files.length; i++) { var srcFile = sourceDir + "/" + files[i]; var destFile = destDir + "/" + files[i]; var srcFileStat = fs.lstatSync(srcFile); if (srcFileStat.isDirectory()) { /* recursion this thing right on back. */ cpdirSyncRecursive(srcFile, destFile, opts); } else if (srcFileStat.isSymbolicLink()) { var symlinkFull = fs.readlinkSync(srcFile); fs.symlinkSync(symlinkFull, destFile); } else { /* At this point, we've hit a file actually worth copying... so copy it on over. */ if (fs.existsSync(destFile) && !opts.force) { common.log('skipping existing file: ' + files[i]); } else { copyFileSync(srcFile, destFile); } } } // for files } // cpdirSyncRecursive //@ //@ ### cp([options ,] source [,source ...], dest) //@ ### cp([options ,] source_array, dest) //@ Available options: //@ //@ + `-f`: force //@ + `-r, -R`: recursive //@ //@ Examples: //@ //@ ```javascript //@ cp('file1', 'dir1'); //@ cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); //@ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above //@ ``` //@ //@ Copies files. The wildcard `*` is accepted. function _cp(options, sources, dest) { options = common.parseOptions(options, { 'f': 'force', 'R': 'recursive', 'r': 'recursive' }); // Get sources, dest if (arguments.length < 3) { common.error('missing and/or '); } else if (arguments.length > 3) { sources = [].slice.call(arguments, 1, arguments.length - 1); dest = arguments[arguments.length - 1]; } else if (typeof sources === 'string') { sources = [sources]; } else if ('length' in sources) { sources = sources; // no-op for array } else { common.error('invalid arguments'); } var exists = fs.existsSync(dest), stats = exists && fs.statSync(dest); // Dest is not existing dir, but multiple sources given if ((!exists || !stats.isDirectory()) && sources.length > 1) common.error('dest is not a directory (too many sources)'); // Dest is an existing file, but no -f given if (exists && stats.isFile() && !options.force) common.error('dest file already exists: ' + dest); if (options.recursive) { // Recursive allows the shortcut syntax "sourcedir/" for "sourcedir/*" // (see Github issue #15) sources.forEach(function(src, i) { if (src[src.length - 1] === '/') sources[i] += '*'; }); // Create dest try { fs.mkdirSync(dest, parseInt('0777', 8)); } catch (e) { // like Unix's cp, keep going even if we can't create dest dir } } sources = common.expand(sources); sources.forEach(function(src) { if (!fs.existsSync(src)) { common.error('no such file or directory: '+src, true); return; // skip file } // If here, src exists if (fs.statSync(src).isDirectory()) { if (!options.recursive) { // Non-Recursive common.log(src + ' is a directory (not copied)'); } else { // Recursive // 'cp /a/source dest' should create 'source' in 'dest' var newDest = path.join(dest, path.basename(src)), checkDir = fs.statSync(src); try { fs.mkdirSync(newDest, checkDir.mode); } catch (e) { //if the directory already exists, that's okay if (e.code !== 'EEXIST') throw e; } cpdirSyncRecursive(src, newDest, {force: options.force}); } return; // done with dir } // If here, src is a file // When copying to '/path/dir': // thisDest = '/path/dir/file1' var thisDest = dest; if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) thisDest = path.normalize(dest + '/' + path.basename(src)); if (fs.existsSync(thisDest) && !options.force) { common.error('dest file already exists: ' + thisDest, true); return; // skip file } copyFileSync(src, thisDest); }); // forEach(src) } module.exports = _cp; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/mkdir.js0000664000000000000000000000324212301417627024247 0ustar var common = require('./common'); var fs = require('fs'); var path = require('path'); // Recursively creates 'dir' function mkdirSyncRecursive(dir) { var baseDir = path.dirname(dir); // Base dir exists, no recursion necessary if (fs.existsSync(baseDir)) { fs.mkdirSync(dir, parseInt('0777', 8)); return; } // Base dir does not exist, go recursive mkdirSyncRecursive(baseDir); // Base dir created, can create dir fs.mkdirSync(dir, parseInt('0777', 8)); } //@ //@ ### mkdir([options ,] dir [, dir ...]) //@ ### mkdir([options ,] dir_array) //@ Available options: //@ //@ + `p`: full path (will create intermediate dirs if necessary) //@ //@ Examples: //@ //@ ```javascript //@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); //@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above //@ ``` //@ //@ Creates directories. function _mkdir(options, dirs) { options = common.parseOptions(options, { 'p': 'fullpath' }); if (!dirs) common.error('no paths given'); if (typeof dirs === 'string') dirs = [].slice.call(arguments, 1); // if it's array leave it as it is dirs.forEach(function(dir) { if (fs.existsSync(dir)) { if (!options.fullpath) common.error('path already exists: ' + dir, true); return; // skip dir } // Base dir does not exist, and no -p option given var baseDir = path.dirname(dir); if (!fs.existsSync(baseDir) && !options.fullpath) { common.error('no such file or directory: ' + baseDir, true); return; // skip dir } if (options.fullpath) mkdirSyncRecursive(dir); else fs.mkdirSync(dir, parseInt('0777', 8)); }); } // mkdir module.exports = _mkdir; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/pwd.js0000664000000000000000000000036112301417627023732 0ustar var path = require('path'); var common = require('./common'); //@ //@ ### pwd() //@ Returns the current directory. function _pwd(options) { var pwd = path.resolve(process.cwd()); return common.ShellString(pwd); } module.exports = _pwd; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/chmod.js0000664000000000000000000001445612301417627024244 0ustar var common = require('./common'); var fs = require('fs'); var path = require('path'); var PERMS = (function (base) { return { OTHER_EXEC : base.EXEC, OTHER_WRITE : base.WRITE, OTHER_READ : base.READ, GROUP_EXEC : base.EXEC << 3, GROUP_WRITE : base.WRITE << 3, GROUP_READ : base.READ << 3, OWNER_EXEC : base.EXEC << 6, OWNER_WRITE : base.WRITE << 6, OWNER_READ : base.READ << 6, // Literal octal numbers are apparently not allowed in "strict" javascript. Using parseInt is // the preferred way, else a jshint warning is thrown. STICKY : parseInt('01000', 8), SETGID : parseInt('02000', 8), SETUID : parseInt('04000', 8), TYPE_MASK : parseInt('0770000', 8) }; })({ EXEC : 1, WRITE : 2, READ : 4 }); //@ //@ ### chmod(octal_mode || octal_string, file) //@ ### chmod(symbolic_mode, file) //@ //@ Available options: //@ //@ + `-v`: output a diagnostic for every file processed//@ //@ + `-c`: like verbose but report only when a change is made//@ //@ + `-R`: change files and directories recursively//@ //@ //@ Examples: //@ //@ ```javascript //@ chmod(755, '/Users/brandon'); //@ chmod('755', '/Users/brandon'); // same as above //@ chmod('u+x', '/Users/brandon'); //@ ``` //@ //@ Alters the permissions of a file or directory by either specifying the //@ absolute permissions in octal form or expressing the changes in symbols. //@ This command tries to mimic the POSIX behavior as much as possible. //@ Notable exceptions: //@ //@ + In symbolic modes, 'a-r' and '-r' are identical. No consideration is //@ given to the umask. //@ + There is no "quiet" option since default behavior is to run silent. function _chmod(options, mode, filePattern) { if (!filePattern) { if (options.length > 0 && options.charAt(0) === '-') { // Special case where the specified file permissions started with - to subtract perms, which // get picked up by the option parser as command flags. // If we are down by one argument and options starts with -, shift everything over. filePattern = mode; mode = options; options = ''; } else { common.error('You must specify a file.'); } } options = common.parseOptions(options, { 'R': 'recursive', 'c': 'changes', 'v': 'verbose' }); if (typeof filePattern === 'string') { filePattern = [ filePattern ]; } var files; if (options.recursive) { files = []; common.expand(filePattern).forEach(function addFile(expandedFile) { var stat = fs.lstatSync(expandedFile); if (!stat.isSymbolicLink()) { files.push(expandedFile); if (stat.isDirectory()) { // intentionally does not follow symlinks. fs.readdirSync(expandedFile).forEach(function (child) { addFile(expandedFile + '/' + child); }); } } }); } else { files = common.expand(filePattern); } files.forEach(function innerChmod(file) { file = path.resolve(file); if (!fs.existsSync(file)) { common.error('File not found: ' + file); } // When recursing, don't follow symlinks. if (options.recursive && fs.lstatSync(file).isSymbolicLink()) { return; } var perms = fs.statSync(file).mode; var type = perms & PERMS.TYPE_MASK; var newPerms = perms; if (isNaN(parseInt(mode, 8))) { // parse options mode.split(',').forEach(function (symbolicMode) { /*jshint regexdash:true */ var pattern = /([ugoa]*)([=\+-])([rwxXst]*)/i; var matches = pattern.exec(symbolicMode); if (matches) { var applyTo = matches[1]; var operator = matches[2]; var change = matches[3]; var changeOwner = applyTo.indexOf('u') != -1 || applyTo === 'a' || applyTo === ''; var changeGroup = applyTo.indexOf('g') != -1 || applyTo === 'a' || applyTo === ''; var changeOther = applyTo.indexOf('o') != -1 || applyTo === 'a' || applyTo === ''; var changeRead = change.indexOf('r') != -1; var changeWrite = change.indexOf('w') != -1; var changeExec = change.indexOf('x') != -1; var changeSticky = change.indexOf('t') != -1; var changeSetuid = change.indexOf('s') != -1; var mask = 0; if (changeOwner) { mask |= (changeRead ? PERMS.OWNER_READ : 0) + (changeWrite ? PERMS.OWNER_WRITE : 0) + (changeExec ? PERMS.OWNER_EXEC : 0) + (changeSetuid ? PERMS.SETUID : 0); } if (changeGroup) { mask |= (changeRead ? PERMS.GROUP_READ : 0) + (changeWrite ? PERMS.GROUP_WRITE : 0) + (changeExec ? PERMS.GROUP_EXEC : 0) + (changeSetuid ? PERMS.SETGID : 0); } if (changeOther) { mask |= (changeRead ? PERMS.OTHER_READ : 0) + (changeWrite ? PERMS.OTHER_WRITE : 0) + (changeExec ? PERMS.OTHER_EXEC : 0); } // Sticky bit is special - it's not tied to user, group or other. if (changeSticky) { mask |= PERMS.STICKY; } switch (operator) { case '+': newPerms |= mask; break; case '-': newPerms &= ~mask; break; case '=': newPerms = type + mask; // According to POSIX, when using = to explicitly set the permissions, setuid and setgid can never be cleared. if (fs.statSync(file).isDirectory()) { newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; } break; } if (options.verbose) { log(file + ' -> ' + newPerms.toString(8)); } if (perms != newPerms) { if (!options.verbose && options.changes) { log(file + ' -> ' + newPerms.toString(8)); } fs.chmodSync(file, newPerms); } } else { common.error('Invalid symbolic mode change: ' + symbolicMode); } }); } else { // they gave us a full number newPerms = type + parseInt(mode, 8); // POSIX rules are that setuid and setgid can only be added using numeric form, but not cleared. if (fs.statSync(file).isDirectory()) { newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; } fs.chmodSync(file, newPerms); } }); } module.exports = _chmod; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/exec.js0000664000000000000000000001374012301417627024071 0ustar var common = require('./common'); var _tempDir = require('./tempdir'); var _pwd = require('./pwd'); var path = require('path'); var fs = require('fs'); var child = require('child_process'); // Hack to run child_process.exec() synchronously (sync avoids callback hell) // Uses a custom wait loop that checks for a flag file, created when the child process is done. // (Can't do a wait loop that checks for internal Node variables/messages as // Node is single-threaded; callbacks and other internal state changes are done in the // event loop). function execSync(cmd, opts) { var tempDir = _tempDir(); var stdoutFile = path.resolve(tempDir+'/'+common.randomFileName()), codeFile = path.resolve(tempDir+'/'+common.randomFileName()), scriptFile = path.resolve(tempDir+'/'+common.randomFileName()), sleepFile = path.resolve(tempDir+'/'+common.randomFileName()); var options = common.extend({ silent: common.config.silent }, opts); var previousStdoutContent = ''; // Echoes stdout changes from running process, if not silent function updateStdout() { if (options.silent || !fs.existsSync(stdoutFile)) return; var stdoutContent = fs.readFileSync(stdoutFile, 'utf8'); // No changes since last time? if (stdoutContent.length <= previousStdoutContent.length) return; process.stdout.write(stdoutContent.substr(previousStdoutContent.length)); previousStdoutContent = stdoutContent; } function escape(str) { return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0"); } cmd += ' > '+stdoutFile+' 2>&1'; // works on both win/unix var script = "var child = require('child_process')," + " fs = require('fs');" + "child.exec('"+escape(cmd)+"', {env: process.env, maxBuffer: 20*1024*1024}, function(err) {" + " fs.writeFileSync('"+escape(codeFile)+"', err ? err.code.toString() : '0');" + "});"; if (fs.existsSync(scriptFile)) common.unlinkSync(scriptFile); if (fs.existsSync(stdoutFile)) common.unlinkSync(stdoutFile); if (fs.existsSync(codeFile)) common.unlinkSync(codeFile); fs.writeFileSync(scriptFile, script); child.exec('"'+process.execPath+'" '+scriptFile, { env: process.env, cwd: _pwd(), maxBuffer: 20*1024*1024 }); // The wait loop // sleepFile is used as a dummy I/O op to mitigate unnecessary CPU usage // (tried many I/O sync ops, writeFileSync() seems to be only one that is effective in reducing // CPU usage, though apparently not so much on Windows) while (!fs.existsSync(codeFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } while (!fs.existsSync(stdoutFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } // At this point codeFile exists, but it's not necessarily flushed yet. // Keep reading it until it is. var code = parseInt('', 10); while (isNaN(code)) { code = parseInt(fs.readFileSync(codeFile, 'utf8'), 10); } var stdout = fs.readFileSync(stdoutFile, 'utf8'); // No biggie if we can't erase the files now -- they're in a temp dir anyway try { common.unlinkSync(scriptFile); } catch(e) {} try { common.unlinkSync(stdoutFile); } catch(e) {} try { common.unlinkSync(codeFile); } catch(e) {} try { common.unlinkSync(sleepFile); } catch(e) {} // some shell return codes are defined as errors, per http://tldp.org/LDP/abs/html/exitcodes.html if (code === 1 || code === 2 || code >= 126) { common.error('', true); // unix/shell doesn't really give an error message after non-zero exit codes } // True if successful, false if not var obj = { code: code, output: stdout }; return obj; } // execSync() // Wrapper around exec() to enable echoing output to console in real time function execAsync(cmd, opts, callback) { var output = ''; var options = common.extend({ silent: common.config.silent }, opts); var c = child.exec(cmd, {env: process.env, maxBuffer: 20*1024*1024}, function(err) { if (callback) callback(err ? err.code : 0, output); }); c.stdout.on('data', function(data) { output += data; if (!options.silent) process.stdout.write(data); }); c.stderr.on('data', function(data) { output += data; if (!options.silent) process.stdout.write(data); }); return c; } //@ //@ ### exec(command [, options] [, callback]) //@ Available options (all `false` by default): //@ //@ + `async`: Asynchronous execution. Defaults to true if a callback is provided. //@ + `silent`: Do not echo program output to console. //@ //@ Examples: //@ //@ ```javascript //@ var version = exec('node --version', {silent:true}).output; //@ //@ var child = exec('some_long_running_process', {async:true}); //@ child.stdout.on('data', function(data) { //@ /* ... do something with data ... */ //@ }); //@ //@ exec('some_long_running_process', function(code, output) { //@ console.log('Exit code:', code); //@ console.log('Program output:', output); //@ }); //@ ``` //@ //@ Executes the given `command` _synchronously_, unless otherwise specified. //@ When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's //@ `output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and //@ the `callback` gets the arguments `(code, output)`. //@ //@ **Note:** For long-lived processes, it's best to run `exec()` asynchronously as //@ the current synchronous implementation uses a lot of CPU. This should be getting //@ fixed soon. function _exec(command, options, callback) { if (!command) common.error('must specify command'); // Callback is defined instead of options. if (typeof options === 'function') { callback = options; options = { async: true }; } // Callback is defined with options. if (typeof options === 'object' && typeof callback === 'function') { options.async = true; } options = common.extend({ silent: common.config.silent, async: false }, options); if (options.async) return execAsync(command, options, callback); else return execSync(command, options); } module.exports = _exec; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/which.js0000664000000000000000000000350412301417627024244 0ustar var common = require('./common'); var fs = require('fs'); var path = require('path'); // Cross-platform method for splitting environment PATH variables function splitPath(p) { for (i=1;i<2;i++) {} if (!p) return []; if (common.platform === 'win') return p.split(';'); else return p.split(':'); } //@ //@ ### which(command) //@ //@ Examples: //@ //@ ```javascript //@ var nodeExec = which('node'); //@ ``` //@ //@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. //@ Returns string containing the absolute path to the command. function _which(options, cmd) { if (!cmd) common.error('must specify command'); var pathEnv = process.env.path || process.env.Path || process.env.PATH, pathArray = splitPath(pathEnv), where = null; // No relative/absolute paths provided? if (cmd.search(/\//) === -1) { // Search for command in PATH pathArray.forEach(function(dir) { if (where) return; // already found it var attempt = path.resolve(dir + '/' + cmd); if (fs.existsSync(attempt)) { where = attempt; return; } if (common.platform === 'win') { var baseAttempt = attempt; attempt = baseAttempt + '.exe'; if (fs.existsSync(attempt)) { where = attempt; return; } attempt = baseAttempt + '.cmd'; if (fs.existsSync(attempt)) { where = attempt; return; } attempt = baseAttempt + '.bat'; if (fs.existsSync(attempt)) { where = attempt; return; } } // if 'win' }); } // Command not found anywhere? if (!fs.existsSync(cmd) && !where) return null; where = where || path.resolve(cmd); return common.ShellString(where); } module.exports = _which; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/toEnd.js0000664000000000000000000000135612301417627024216 0ustar var common = require('./common'); var fs = require('fs'); var path = require('path'); //@ //@ ### 'string'.toEnd(file) //@ //@ Examples: //@ //@ ```javascript //@ cat('input.txt').toEnd('output.txt'); //@ ``` //@ //@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as //@ those returned by `cat`, `grep`, etc). function _toEnd(options, file) { if (!file) common.error('wrong arguments'); if (!fs.existsSync( path.dirname(file) )) common.error('no such file or directory: ' + path.dirname(file)); try { fs.appendFileSync(file, this.toString(), 'utf8'); } catch(e) { common.error('could not append to file (code '+e.code+'): '+file, true); } } module.exports = _toEnd; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/error.js0000664000000000000000000000041212301417627024266 0ustar var common = require('./common'); //@ //@ ### error() //@ Tests if error occurred in the last command. Returns `null` if no error occurred, //@ otherwise returns string explaining the error function error() { return common.state.error; }; module.exports = error; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/ls.js0000664000000000000000000000726712301417627023572 0ustar var path = require('path'); var fs = require('fs'); var common = require('./common'); var _cd = require('./cd'); var _pwd = require('./pwd'); //@ //@ ### ls([options ,] path [,path ...]) //@ ### ls([options ,] path_array) //@ Available options: //@ //@ + `-R`: recursive //@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`) //@ //@ Examples: //@ //@ ```javascript //@ ls('projs/*.js'); //@ ls('-R', '/users/me', '/tmp'); //@ ls('-R', ['/users/me', '/tmp']); // same as above //@ ``` //@ //@ Returns array of files in the given path, or in current directory if no path provided. function _ls(options, paths) { options = common.parseOptions(options, { 'R': 'recursive', 'A': 'all', 'a': 'all_deprecated' }); if (options.all_deprecated) { // We won't support the -a option as it's hard to image why it's useful // (it includes '.' and '..' in addition to '.*' files) // For backwards compatibility we'll dump a deprecated message and proceed as before common.log('ls: Option -a is deprecated. Use -A instead'); options.all = true; } if (!paths) paths = ['.']; else if (typeof paths === 'object') paths = paths; // assume array else if (typeof paths === 'string') paths = [].slice.call(arguments, 1); var list = []; // Conditionally pushes file to list - returns true if pushed, false otherwise // (e.g. prevents hidden files to be included unless explicitly told so) function pushFile(file, query) { // hidden file? if (path.basename(file)[0] === '.') { // not explicitly asking for hidden files? if (!options.all && !(path.basename(query)[0] === '.' && path.basename(query).length > 1)) return false; } if (common.platform === 'win') file = file.replace(/\\/g, '/'); list.push(file); return true; } paths.forEach(function(p) { if (fs.existsSync(p)) { var stats = fs.statSync(p); // Simple file? if (stats.isFile()) { pushFile(p, p); return; // continue } // Simple dir? if (stats.isDirectory()) { // Iterate over p contents fs.readdirSync(p).forEach(function(file) { if (!pushFile(file, p)) return; // Recursive? if (options.recursive) { var oldDir = _pwd(); _cd('', p); if (fs.statSync(file).isDirectory()) list = list.concat(_ls('-R'+(options.all?'A':''), file+'/*')); _cd('', oldDir); } }); return; // continue } } // p does not exist - possible wildcard present var basename = path.basename(p); var dirname = path.dirname(p); // Wildcard present on an existing dir? (e.g. '/tmp/*.js') if (basename.search(/\*/) > -1 && fs.existsSync(dirname) && fs.statSync(dirname).isDirectory) { // Escape special regular expression chars var regexp = basename.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\.|\+|\?)/g, '\\$1'); // Translates wildcard into regex regexp = '^' + regexp.replace(/\*/g, '.*') + '$'; // Iterate over directory contents fs.readdirSync(dirname).forEach(function(file) { if (file.match(new RegExp(regexp))) { if (!pushFile(path.normalize(dirname+'/'+file), basename)) return; // Recursive? if (options.recursive) { var pp = dirname + '/' + file; if (fs.lstatSync(pp).isDirectory()) list = list.concat(_ls('-R'+(options.all?'A':''), pp+'/*')); } // recursive } // if file matches }); // forEach return; } common.error('no such file or directory: ' + p, true); }); return list; } module.exports = _ls; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/common.js0000664000000000000000000001076412301417627024440 0ustar var os = require('os'); var fs = require('fs'); var _ls = require('./ls'); // Module globals var config = { silent: false, fatal: false }; exports.config = config; var state = { error: null, currentCmd: 'shell.js', tempDir: null }; exports.state = state; var platform = os.type().match(/^Win/) ? 'win' : 'unix'; exports.platform = platform; function log() { if (!config.silent) console.log.apply(this, arguments); } exports.log = log; // Shows error message. Throws unless _continue or config.fatal are true function error(msg, _continue) { if (state.error === null) state.error = ''; state.error += state.currentCmd + ': ' + msg + '\n'; if (msg.length > 0) log(state.error); if (config.fatal) process.exit(1); if (!_continue) throw ''; } exports.error = error; // In the future, when Proxies are default, we can add methods like `.to()` to primitive strings. // For now, this is a dummy function to bookmark places we need such strings function ShellString(str) { return str; } exports.ShellString = ShellString; // Returns {'alice': true, 'bob': false} when passed a dictionary, e.g.: // parseOptions('-a', {'a':'alice', 'b':'bob'}); function parseOptions(str, map) { if (!map) error('parseOptions() internal error: no map given'); // All options are false by default var options = {}; for (var letter in map) options[map[letter]] = false; if (!str) return options; // defaults if (typeof str !== 'string') error('parseOptions() internal error: wrong str'); // e.g. match[1] = 'Rf' for str = '-Rf' var match = str.match(/^\-(.+)/); if (!match) return options; // e.g. chars = ['R', 'f'] var chars = match[1].split(''); chars.forEach(function(c) { if (c in map) options[map[c]] = true; else error('option not recognized: '+c); }); return options; } exports.parseOptions = parseOptions; // Expands wildcards with matching (ie. existing) file names. // For example: // expand(['file*.js']) = ['file1.js', 'file2.js', ...] // (if the files 'file1.js', 'file2.js', etc, exist in the current dir) function expand(list) { var expanded = []; list.forEach(function(listEl) { // Wildcard present? if (listEl.search(/\*/) > -1) { _ls('', listEl).forEach(function(file) { expanded.push(file); }); } else { expanded.push(listEl); } }); return expanded; } exports.expand = expand; // Normalizes _unlinkSync() across platforms to match Unix behavior, i.e. // file can be unlinked even if it's read-only, see https://github.com/joyent/node/issues/3006 function unlinkSync(file) { try { fs.unlinkSync(file); } catch(e) { // Try to override file permission if (e.code === 'EPERM') { fs.chmodSync(file, '0666'); fs.unlinkSync(file); } else { throw e; } } } exports.unlinkSync = unlinkSync; // e.g. 'shelljs_a5f185d0443ca...' function randomFileName() { function randomHash(count) { if (count === 1) return parseInt(16*Math.random(), 10).toString(16); else { var hash = ''; for (var i=0; i` in Unix, but works with JavaScript strings (such as //@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ function _to(options, file) { if (!file) common.error('wrong arguments'); if (!fs.existsSync( path.dirname(file) )) common.error('no such file or directory: ' + path.dirname(file)); try { fs.writeFileSync(file, this.toString(), 'utf8'); } catch(e) { common.error('could not write to file (code '+e.code+'): '+file, true); } } module.exports = _to; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/mv.js0000664000000000000000000000432112301417627023562 0ustar var fs = require('fs'); var path = require('path'); var common = require('./common'); //@ //@ ### mv(source [, source ...], dest') //@ ### mv(source_array, dest') //@ Available options: //@ //@ + `f`: force //@ //@ Examples: //@ //@ ```javascript //@ mv('-f', 'file', 'dir/'); //@ mv('file1', 'file2', 'dir/'); //@ mv(['file1', 'file2'], 'dir/'); // same as above //@ ``` //@ //@ Moves files. The wildcard `*` is accepted. function _mv(options, sources, dest) { options = common.parseOptions(options, { 'f': 'force' }); // Get sources, dest if (arguments.length < 3) { common.error('missing and/or '); } else if (arguments.length > 3) { sources = [].slice.call(arguments, 1, arguments.length - 1); dest = arguments[arguments.length - 1]; } else if (typeof sources === 'string') { sources = [sources]; } else if ('length' in sources) { sources = sources; // no-op for array } else { common.error('invalid arguments'); } sources = common.expand(sources); var exists = fs.existsSync(dest), stats = exists && fs.statSync(dest); // Dest is not existing dir, but multiple sources given if ((!exists || !stats.isDirectory()) && sources.length > 1) common.error('dest is not a directory (too many sources)'); // Dest is an existing file, but no -f given if (exists && stats.isFile() && !options.force) common.error('dest file already exists: ' + dest); sources.forEach(function(src) { if (!fs.existsSync(src)) { common.error('no such file or directory: '+src, true); return; // skip file } // If here, src exists // When copying to '/path/dir': // thisDest = '/path/dir/file1' var thisDest = dest; if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) thisDest = path.normalize(dest + '/' + path.basename(src)); if (fs.existsSync(thisDest) && !options.force) { common.error('dest file already exists: ' + thisDest, true); return; // skip file } if (path.resolve(src) === path.dirname(path.resolve(thisDest))) { common.error('cannot move to self: '+src, true); return; // skip file } fs.renameSync(src, thisDest); }); // forEach(src) } // mv module.exports = _mv; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/echo.js0000664000000000000000000000071512301417627024061 0ustar var common = require('./common'); //@ //@ ### echo(string [,string ...]) //@ //@ Examples: //@ //@ ```javascript //@ echo('hello world'); //@ var str = echo('hello world'); //@ ``` //@ //@ Prints string to stdout, and returns string with additional utility methods //@ like `.to()`. function _echo() { var messages = [].slice.call(arguments, 0); console.log.apply(this, messages); return common.ShellString(messages.join(' ')); } module.exports = _echo; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/src/tempdir.js0000664000000000000000000000325212301417627024606 0ustar var common = require('./common'); var os = require('os'); var fs = require('fs'); // Returns false if 'dir' is not a writeable directory, 'dir' otherwise function writeableDir(dir) { if (!dir || !fs.existsSync(dir)) return false; if (!fs.statSync(dir).isDirectory()) return false; var testFile = dir+'/'+common.randomFileName(); try { fs.writeFileSync(testFile, ' '); common.unlinkSync(testFile); return dir; } catch (e) { return false; } } //@ //@ ### tempdir() //@ //@ Examples: //@ //@ ```javascript //@ var tmp = tempdir(); // "/tmp" for most *nix platforms //@ ``` //@ //@ Searches and returns string containing a writeable, platform-dependent temporary directory. //@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). function _tempDir() { var state = common.state; if (state.tempDir) return state.tempDir; // from cache state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+ writeableDir(process.env['TMPDIR']) || writeableDir(process.env['TEMP']) || writeableDir(process.env['TMP']) || writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS writeableDir('C:\\TEMP') || // Windows writeableDir('C:\\TMP') || // Windows writeableDir('\\TEMP') || // Windows writeableDir('\\TMP') || // Windows writeableDir('/tmp') || writeableDir('/var/tmp') || writeableDir('/usr/tmp') || writeableDir('.'); // last resort return state.tempDir; } module.exports = _tempDir; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/README.md0000664000000000000000000003472112301417627023301 0ustar # ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs) ShellJS 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! The project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like: + [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader + [Firebug](http://getfirebug.com/) - Firefox's infamous debugger + [JSHint](http://jshint.com) - Most popular JavaScript linter + [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers + [Yeoman](http://yeoman.io/) - Web application stack and development tool + [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation and [many more](https://npmjs.org/browse/depended/shelljs). ## Installing Via npm: ```bash $ npm install [-g] shelljs ``` If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder: ```bash $ shjs my_script ``` You can also just copy `shell.js` into your project's directory, and `require()` accordingly. ## Examples ### JavaScript ```javascript require('shelljs/global'); if (!which('git')) { echo('Sorry, this script requires git'); exit(1); } // Copy files to release dir mkdir('-p', 'out/Release'); cp('-R', 'stuff/*', 'out/Release'); // Replace macros in each .js file cd('lib'); ls('*.js').forEach(function(file) { sed('-i', 'BUILD_VERSION', 'v0.1.2', file); sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file); sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); }); cd('..'); // Run external tool synchronously if (exec('git commit -am "Auto-commit"').code !== 0) { echo('Error: Git commit failed'); exit(1); } ``` ### CoffeeScript ```coffeescript require 'shelljs/global' if not which 'git' echo 'Sorry, this script requires git' exit 1 # Copy files to release dir mkdir '-p', 'out/Release' cp '-R', 'stuff/*', 'out/Release' # Replace macros in each .js file cd 'lib' for file in ls '*.js' sed '-i', 'BUILD_VERSION', 'v0.1.2', file sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file cd '..' # Run external tool synchronously if (exec 'git commit -am "Auto-commit"').code != 0 echo 'Error: Git commit failed' exit 1 ``` ## Global vs. Local The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`. Example: ```javascript var shell = require('shelljs'); shell.echo('hello world'); ``` ## Make tool A 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. Example (CoffeeScript): ```coffeescript require 'shelljs/make' target.all = -> target.bundle() target.docs() target.bundle = -> cd __dirname mkdir 'build' cd 'lib' (cat '*.js').to '../build/output.js' target.docs = -> cd __dirname mkdir 'docs' cd 'lib' for file in ls '*.js' text = grep '//@', file # extract special comments text.replace '//@', '' # remove comment tags text.to 'docs/my_docs.md' ``` To run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on. ## Command reference All commands run synchronously, unless otherwise stated. ### cd('dir') Changes to directory `dir` for the duration of the script ### pwd() Returns the current directory. ### ls([options ,] path [,path ...]) ### ls([options ,] path_array) Available options: + `-R`: recursive + `-A`: all files (include files beginning with `.`, except for `.` and `..`) Examples: ```javascript ls('projs/*.js'); ls('-R', '/users/me', '/tmp'); ls('-R', ['/users/me', '/tmp']); // same as above ``` Returns array of files in the given path, or in current directory if no path provided. ### find(path [,path ...]) ### find(path_array) Examples: ```javascript find('src', 'lib'); find(['src', 'lib']); // same as above find('.').filter(function(file) { return file.match(/\.js$/); }); ``` Returns array of all files (however deep) in the given paths. The main difference from `ls('-R', path)` is that the resulting file names include the base directories, e.g. `lib/resources/file1` instead of just `file1`. ### cp([options ,] source [,source ...], dest) ### cp([options ,] source_array, dest) Available options: + `-f`: force + `-r, -R`: recursive Examples: ```javascript cp('file1', 'dir1'); cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above ``` Copies files. The wildcard `*` is accepted. ### rm([options ,] file [, file ...]) ### rm([options ,] file_array) Available options: + `-f`: force + `-r, -R`: recursive Examples: ```javascript rm('-rf', '/tmp/*'); rm('some_file.txt', 'another_file.txt'); rm(['some_file.txt', 'another_file.txt']); // same as above ``` Removes files. The wildcard `*` is accepted. ### mv(source [, source ...], dest') ### mv(source_array, dest') Available options: + `f`: force Examples: ```javascript mv('-f', 'file', 'dir/'); mv('file1', 'file2', 'dir/'); mv(['file1', 'file2'], 'dir/'); // same as above ``` Moves files. The wildcard `*` is accepted. ### mkdir([options ,] dir [, dir ...]) ### mkdir([options ,] dir_array) Available options: + `p`: full path (will create intermediate dirs if necessary) Examples: ```javascript mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above ``` Creates directories. ### test(expression) Available expression primaries: + `'-b', 'path'`: true if path is a block device + `'-c', 'path'`: true if path is a character device + `'-d', 'path'`: true if path is a directory + `'-e', 'path'`: true if path exists + `'-f', 'path'`: true if path is a regular file + `'-L', 'path'`: true if path is a symboilc link + `'-p', 'path'`: true if path is a pipe (FIFO) + `'-S', 'path'`: true if path is a socket Examples: ```javascript if (test('-d', path)) { /* do something with dir */ }; if (!test('-f', path)) continue; // skip if it's a regular file ``` Evaluates expression using the available primaries and returns corresponding value. ### cat(file [, file ...]) ### cat(file_array) Examples: ```javascript var str = cat('file*.txt'); var str = cat('file1', 'file2'); var str = cat(['file1', 'file2']); // same as above ``` Returns a string containing the given file, or a concatenated string containing the files if more than one file is given (a new line character is introduced between each file). Wildcard `*` accepted. ### 'string'.to(file) Examples: ```javascript cat('input.txt').to('output.txt'); ``` Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ ### 'string'.toEnd(file) Examples: ```javascript cat('input.txt').toEnd('output.txt'); ``` Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as those returned by `cat`, `grep`, etc). ### sed([options ,] search_regex, replace_str, file) Available options: + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ Examples: ```javascript sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); ``` Reads an input string from `file` and performs a JavaScript `replace()` on the input using the given search regex and replacement string. Returns the new string after replacement. ### grep([options ,] regex_filter, file [, file ...]) ### grep([options ,] regex_filter, file_array) Available options: + `-v`: Inverse the sense of the regex and print the lines not matching the criteria. Examples: ```javascript grep('-v', 'GLOBAL_VARIABLE', '*.js'); grep('GLOBAL_VARIABLE', '*.js'); ``` Reads input string from given files and returns a string containing all lines of the file that match the given `regex_filter`. Wildcard `*` accepted. ### which(command) Examples: ```javascript var nodeExec = which('node'); ``` Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. Returns string containing the absolute path to the command. ### echo(string [,string ...]) Examples: ```javascript echo('hello world'); var str = echo('hello world'); ``` Prints string to stdout, and returns string with additional utility methods like `.to()`. ### pushd([options,] [dir | '-N' | '+N']) Available options: + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. Arguments: + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. + `+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`: 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. Examples: ```javascript // process.cwd() === '/usr' pushd('/etc'); // Returns /etc /usr pushd('+1'); // Returns /usr /etc ``` Save 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. ### popd([options,] ['-N' | '+N']) Available options: + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. Arguments: + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. Examples: ```javascript echo(process.cwd()); // '/usr' pushd('/etc'); // '/etc /usr' echo(process.cwd()); // '/etc' popd(); // '/usr' echo(process.cwd()); // '/usr' ``` When 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. ### dirs([options | '+N' | '-N']) Available options: + `-c`: Clears the directory stack by deleting all of the elements. Arguments: + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. See also: pushd, popd ### exit(code) Exits the current process with the given exit code. ### env['VAR_NAME'] Object containing environment variables (both getter and setter). Shortcut to process.env. ### exec(command [, options] [, callback]) Available options (all `false` by default): + `async`: Asynchronous execution. Defaults to true if a callback is provided. + `silent`: Do not echo program output to console. Examples: ```javascript var version = exec('node --version', {silent:true}).output; var child = exec('some_long_running_process', {async:true}); child.stdout.on('data', function(data) { /* ... do something with data ... */ }); exec('some_long_running_process', function(code, output) { console.log('Exit code:', code); console.log('Program output:', output); }); ``` Executes the given `command` _synchronously_, unless otherwise specified. When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's `output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and the `callback` gets the arguments `(code, output)`. **Note:** For long-lived processes, it's best to run `exec()` asynchronously as the current synchronous implementation uses a lot of CPU. This should be getting fixed soon. ### chmod(octal_mode || octal_string, file) ### chmod(symbolic_mode, file) Available options: + `-v`: output a diagnostic for every file processed + `-c`: like verbose but report only when a change is made + `-R`: change files and directories recursively Examples: ```javascript chmod(755, '/Users/brandon'); chmod('755', '/Users/brandon'); // same as above chmod('u+x', '/Users/brandon'); ``` Alters the permissions of a file or directory by either specifying the absolute permissions in octal form or expressing the changes in symbols. This command tries to mimic the POSIX behavior as much as possible. Notable exceptions: + In symbolic modes, 'a-r' and '-r' are identical. No consideration is given to the umask. + There is no "quiet" option since default behavior is to run silent. ## Non-Unix commands ### tempdir() Examples: ```javascript var tmp = tempdir(); // "/tmp" for most *nix platforms ``` Searches and returns string containing a writeable, platform-dependent temporary directory. Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). ### error() Tests if error occurred in the last command. Returns `null` if no error occurred, otherwise returns string explaining the error ## Configuration ### config.silent Example: ```javascript var silentState = config.silent; // save old silent state config.silent = true; /* ... */ config.silent = silentState; // restore old silent state ``` Suppresses all command output if `true`, except for `echo()` calls. Default is `false`. ### config.fatal Example: ```javascript config.fatal = true; cp('this_file_does_not_exist', '/dev/null'); // dies here /* more commands... */ ``` If `true` the script will die on errors. Default is `false`. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/LICENSE0000664000000000000000000000305612301417627023024 0ustar Copyright (c) 2012, Artur Adib All rights reserved. You may use this project under the terms of the New BSD license as follows: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Artur Adib nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/shell.js0000664000000000000000000000664312301417627023471 0ustar // // ShellJS // Unix shell commands on top of Node's API // // Copyright (c) 2012 Artur Adib // http://github.com/arturadib/shelljs // var common = require('./src/common'); //@ //@ All commands run synchronously, unless otherwise stated. //@ //@include ./src/cd var _cd = require('./src/cd'); exports.cd = common.wrap('cd', _cd); //@include ./src/pwd var _pwd = require('./src/pwd'); exports.pwd = common.wrap('pwd', _pwd); //@include ./src/ls var _ls = require('./src/ls'); exports.ls = common.wrap('ls', _ls); //@include ./src/find var _find = require('./src/find'); exports.find = common.wrap('find', _find); //@include ./src/cp var _cp = require('./src/cp'); exports.cp = common.wrap('cp', _cp); //@include ./src/rm var _rm = require('./src/rm'); exports.rm = common.wrap('rm', _rm); //@include ./src/mv var _mv = require('./src/mv'); exports.mv = common.wrap('mv', _mv); //@include ./src/mkdir var _mkdir = require('./src/mkdir'); exports.mkdir = common.wrap('mkdir', _mkdir); //@include ./src/test var _test = require('./src/test'); exports.test = common.wrap('test', _test); //@include ./src/cat var _cat = require('./src/cat'); exports.cat = common.wrap('cat', _cat); //@include ./src/to var _to = require('./src/to'); String.prototype.to = common.wrap('to', _to); //@include ./src/toEnd var _toEnd = require('./src/toEnd'); String.prototype.toEnd = common.wrap('toEnd', _toEnd); //@include ./src/sed var _sed = require('./src/sed'); exports.sed = common.wrap('sed', _sed); //@include ./src/grep var _grep = require('./src/grep'); exports.grep = common.wrap('grep', _grep); //@include ./src/which var _which = require('./src/which'); exports.which = common.wrap('which', _which); //@include ./src/echo var _echo = require('./src/echo'); exports.echo = _echo; // don't common.wrap() as it could parse '-options' //@include ./src/dirs var _dirs = require('./src/dirs').dirs; exports.dirs = common.wrap("dirs", _dirs); var _pushd = require('./src/dirs').pushd; exports.pushd = common.wrap('pushd', _pushd); var _popd = require('./src/dirs').popd; exports.popd = common.wrap("popd", _popd); //@ //@ ### exit(code) //@ Exits the current process with the given exit code. exports.exit = process.exit; //@ //@ ### env['VAR_NAME'] //@ Object containing environment variables (both getter and setter). Shortcut to process.env. exports.env = process.env; //@include ./src/exec var _exec = require('./src/exec'); exports.exec = common.wrap('exec', _exec, {notUnix:true}); //@include ./src/chmod var _chmod = require('./src/chmod'); exports.chmod = common.wrap('chmod', _chmod); //@ //@ ## Non-Unix commands //@ //@include ./src/tempdir var _tempDir = require('./src/tempdir'); exports.tempdir = common.wrap('tempdir', _tempDir); //@include ./src/error var _error = require('./src/error'); exports.error = _error; //@ //@ ## Configuration //@ exports.config = common.config; //@ //@ ### config.silent //@ Example: //@ //@ ```javascript //@ var silentState = config.silent; // save old silent state //@ config.silent = true; //@ /* ... */ //@ config.silent = silentState; // restore old silent state //@ ``` //@ //@ Suppresses all command output if `true`, except for `echo()` calls. //@ Default is `false`. //@ //@ ### config.fatal //@ Example: //@ //@ ```javascript //@ config.fatal = true; //@ cp('this_file_does_not_exist', '/dev/null'); // dies here //@ /* more commands... */ //@ ``` //@ //@ If `true` the script will die on errors. Default is `false`. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/bin/0000775000000000000000000000000012301420116022546 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/bin/shjs0000775000000000000000000000221512301417627023460 0ustar #!/usr/bin/env node require('../global'); if (process.argv.length < 3) { console.log('ShellJS: missing argument (script name)'); console.log(); process.exit(1); } var args, scriptName = process.argv[2]; env['NODE_PATH'] = __dirname + '/../..'; if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) { if (test('-f', scriptName + '.js')) scriptName += '.js'; if (test('-f', scriptName + '.coffee')) scriptName += '.coffee'; } if (!test('-f', scriptName)) { console.log('ShellJS: script not found ('+scriptName+')'); console.log(); process.exit(1); } args = process.argv.slice(3); for (var i = 0, l = args.length; i < l; i++) { if (args[i][0] !== "-"){ args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words } } if (scriptName.match(/\.coffee$/)) { // // CoffeeScript // if (which('coffee')) { exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true }); } else { console.log('ShellJS: CoffeeScript interpreter not found'); console.log(); process.exit(1); } } else { // // JavaScript // exec('node ' + scriptName + ' ' + args.join(' '), { async: true }); } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/scripts/0000775000000000000000000000000012301420116023465 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/scripts/generate-docs.js0000775000000000000000000000100212301417627026554 0ustar #!/usr/bin/env node require('../global'); echo('Appending docs to README.md'); cd(__dirname + '/..'); // Extract docs from shell.js var docs = grep('//@', 'shell.js'); docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) { var file = path.match('.js$') ? path : path+'.js'; return grep('//@', file); }); // Remove '//@' docs = docs.replace(/\/\/\@ ?/g, ''); // Append docs to README sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md'); echo('All done.'); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/scripts/run-tests.js0000775000000000000000000000203512301417627026007 0ustar #!/usr/bin/env node require('../global'); var path = require('path'); var failed = false; // // Lint // JSHINT_BIN = './node_modules/jshint/bin/jshint'; cd(__dirname + '/..'); if (!test('-f', JSHINT_BIN)) { echo('JSHint not found. Run `npm install` in the root dir first.'); exit(1); } if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) { failed = true; echo('*** JSHINT FAILED! (return code != 0)'); echo(); } else { echo('All JSHint tests passed'); echo(); } // // Unit tests // cd(__dirname + '/../test'); ls('*.js').forEach(function(file) { echo('Running test:', file); if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit) failed = true; echo('*** TEST FAILED! (missing exit code "123")'); echo(); } }); if (failed) { echo(); echo('*******************************************************'); echo('WARNING: Some tests did not pass!'); echo('*******************************************************'); exit(1); } else { echo(); echo('All tests passed.'); } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/.travis.yml0000664000000000000000000000007312301417627024124 0ustar language: node_js node_js: - "0.8" - "0.10" - "0.11" cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/shelljs/.npmignore0000664000000000000000000000001212301417627024003 0ustar test/ tmp/cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/0000775000000000000000000000000012301420116022643 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/package.json0000664000000000000000000000421412301417627025147 0ustar { "author": { "name": "Rackspace US, Inc." }, "contributors": [ { "name": "Paul Querna", "email": "paul.querna@rackspace.com" }, { "name": "Tomaz Muraus", "email": "tomaz.muraus@rackspace.com" } ], "name": "elementtree", "description": "XML Serialization and Parsing module based on Python's ElementTree.", "version": "0.1.5", "keywords": [ "xml", "sax", "parser", "seralization", "elementtree" ], "homepage": "https://github.com/racker/node-elementtree", "repository": { "type": "git", "url": "git://github.com/racker/node-elementtree.git" }, "main": "lib/elementtree.js", "directories": { "lib": "lib" }, "scripts": { "test": "make test" }, "engines": { "node": ">= 0.4.0" }, "dependencies": { "sax": "0.3.5" }, "devDependencies": { "whiskey": "0.6.8" }, "licenses": [ { "type": "Apache", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } ], "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", "readmeFilename": "README.md", "bugs": { "url": "https://github.com/racker/node-elementtree/issues" }, "_id": "elementtree@0.1.5", "_from": "elementtree@*" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/NOTICE0000664000000000000000000000017312301417627023565 0ustar node-elementtree Copyright (c) 2011, Rackspace, Inc. The ElementTree toolkit is Copyright (c) 1999-2007 by Fredrik Lundh cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/README.md0000664000000000000000000000167612301417627024151 0ustar node-elementtree ==================== node-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. Installation ==================== $ npm install elementtree Using the library ==================== For 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). 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). Build status ==================== [![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree) License ==================== node-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html). cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/LICENSE.txt0000664000000000000000000002613712301417627024514 0ustar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/CHANGES.md0000664000000000000000000000140512301417627024252 0ustar elementtree v0.1.5 (in development) * Fix a bug in the find() and findtext() method which could manifest itself under some conditions. [metagriffin] elementtree v0.1.4 * Allow user to use namespaced attributes when using find* functions. [Andrew Lunny] elementtree v0.1.3 * Improve the output of text content in the tags (strip unnecessary line break characters). [Darryl Pogue] elementtree v0.1.2 * Allow user to pass 'indent' option to ElementTree.write method. If this option is specified (e.g. {'indent': 4}). XML will be pretty printed. [Darryl Pogue, Tomaz Muraus] * Bump sax dependency version. elementtree v0.1.1 - 2011-09-23 * Improve special character escaping. [Ryan Phillips] elementtree v0.1.0 - 2011-09-05 * Initial release. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/0000775000000000000000000000000012301420116025320 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/0000775000000000000000000000000012301420116026113 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/package.json0000664000000000000000000002255612301417627030430 0ustar { "name": "sax", "description": "An evented streaming XML parser in JavaScript", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", "url": "http://blog.izs.me/" }, "version": "0.3.5", "main": "lib/sax.js", "license": { "type": "MIT", "url": "https://raw.github.com/isaacs/sax-js/master/LICENSE" }, "scripts": { "test": "node test/index.js" }, "repository": { "type": "git", "url": "git://github.com/isaacs/sax-js.git" }, "contributors": [ { "name": "Isaac Z. Schlueter", "email": "i@izs.me" }, { "name": "Stein Martin Hustad", "email": "stein@hustad.com" }, { "name": "Mikeal Rogers", "email": "mikeal.rogers@gmail.com" }, { "name": "Laurie Harper", "email": "laurie@holoweb.net" }, { "name": "Jann Horn", "email": "jann@Jann-PC.fritz.box" }, { "name": "Elijah Insua", "email": "tmpvar@gmail.com" }, { "name": "Henry Rawas", "email": "henryr@schakra.com" }, { "name": "Justin Makeig", "email": "jmpublic@makeig.com" } ], "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 `Hello, world!').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`. 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 ``. 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 ``\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 ``) of a `` 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", "readmeFilename": "README.md", "bugs": { "url": "https://github.com/isaacs/sax-js/issues" }, "_id": "sax@0.3.5", "dist": { "shasum": "97a786cbbe404d7e24961b201f37be81b9249908" }, "_from": "sax@0.3.5", "_resolved": "https://registry.npmjs.org/sax/-/sax-0.3.5.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/README.md0000664000000000000000000001731312301417627027414 0ustar # sax js A sax-style parser for XML and HTML. Designed with [node](http://nodejs.org/) in mind, but should work fine in the browser or other CommonJS implementations. ## What This Is * A very simple tool to parse through an XML string. * A stepping stone to a streaming HTML parser. * A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML docs. ## What This Is (probably) Not * An HTML Parser - That's a fine goal, but this isn't it. It's just XML. * A DOM Builder - You can use it to build an object model out of XML, but it doesn't do that out of the box. * XSLT - No DOM = no querying. * 100% Compliant with (some other SAX implementation) - Most SAX implementations are in Java and do a lot more than this does. * An XML Validator - It does a little validation when in strict mode, but not much. * A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic masochism. * A DTD-aware Thing - Fetching DTDs is a much bigger job. ## Regarding `Hello, world!').close(); // stream usage // takes the same options as the parser var saxStream = require("sax").createStream(strict, options) saxStream.on("error", function (e) { // unhandled errors will throw, since this is a proper node // event emitter. console.error("error!", e) // clear the error this._parser.error = null this._parser.resume() }) saxStream.on("opentag", function (node) { // same object as above }) // pipe is supported, and it's readable/writable // same chunks coming in also go out. fs.createReadStream("file.xml") .pipe(saxStream) .pipe(fs.createReadStream("file-copy.xml")) ## Arguments Pass the following arguments to the parser function. All are optional. `strict` - Boolean. Whether or not to be a jerk. Default: `false`. `opt` - Object bag of settings regarding string formatting. All default to `false`. Settings supported: * `trim` - Boolean. Whether or not to trim text and comment nodes. * `normalize` - Boolean. If true, then turn any whitespace into a single space. * `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, rather than uppercasing them. * `xmlns` - Boolean. If true, then namespaces are supported. ## Methods `write` - Write bytes onto the stream. You don't have to do this all at once. You can keep writing as much as you want. `close` - Close the stream. Once closed, no more data may be written until it is done processing the buffer, which is signaled by the `end` event. `resume` - To gracefully handle errors, assign a listener to the `error` event. Then, when the error is taken care of, you can call `resume` to continue parsing. Otherwise, the parser will not continue while in an error state. ## Members At all times, the parser object will have the following members: `line`, `column`, `position` - Indications of the position in the XML document where the parser currently is looking. `startTagPosition` - Indicates the position where the current tag starts. `closed` - Boolean indicating whether or not the parser can be written to. If it's `true`, then wait for the `ready` event to write again. `strict` - Boolean indicating whether or not the parser is a jerk. `opt` - Any options passed into the constructor. `tag` - The current tag being dealt with. And a bunch of other stuff that you probably shouldn't touch. ## Events All events emit with a single argument. To listen to an event, assign a function to `on`. Functions get executed in the this-context of the parser object. The list of supported events are also in the exported `EVENTS` array. When using the stream interface, assign handlers using the EventEmitter `on` function in the normal fashion. `error` - Indication that something bad happened. The error will be hanging out on `parser.error`, and must be deleted before parsing can continue. By listening to this event, you can keep an eye on that kind of stuff. Note: this happens *much* more in strict mode. Argument: instance of `Error`. `text` - Text node. Argument: string of text. `doctype` - The ``. Argument: object with `name` and `body` members. Attributes are not parsed, as processing instructions have implementation dependent semantics. `sgmldeclaration` - Random SGML declarations. Stuff like `` would trigger this kind of event. This is a weird thing to support, so it might go away at some point. SAX isn't intended to be used to parse SGML, after all. `opentag` - An opening tag. Argument: object with `name` and `attributes`. In non-strict mode, tag names are uppercased, unless the `lowercasetags` option is set. If the `xmlns` option is set, then it will contain namespace binding information on the `ns` member, and will have a `local`, `prefix`, and `uri` member. `closetag` - A closing tag. In loose mode, tags are auto-closed if their parent closes. In strict mode, well-formedness is enforced. Note that self-closing tags will have `closeTag` emitted immediately after `openTag`. Argument: tag name. `attribute` - An attribute node. Argument: object with `name` and `value`, and also namespace information if the `xmlns` option flag is set. `comment` - A comment node. Argument: the string of the comment. `opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"` event, and their contents are not checked for special xml characters. If you pass `noscript: true`, then this behavior is suppressed. ## Reporting Problems It's best to write a failing test if you find an issue. I will always accept pull requests with failing tests if they demonstrate intended behavior, but it is very hard to figure out what issue you're describing without a test. Writing a test is also the best way for you yourself to figure out if you really understand the issue you think you have with sax-js. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/LICENSE0000664000000000000000000000210412301417627027132 0ustar Copyright 2009, 2010, 2011 Isaac Z. Schlueter. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/lib/0000775000000000000000000000000012301420116026661 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/lib/sax.js0000664000000000000000000007217512301417627030043 0ustar // wrapper for non-node envs ;(function (sax) { sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } sax.SAXParser = SAXParser sax.SAXStream = SAXStream sax.createStream = createStream // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), // since that's the earliest that a buffer overrun could occur. This way, checks are // as rare as required, but as often as necessary to ensure never crossing this bound. // Furthermore, buffers are only tested at most once per write(), so passing a very // large string into write() might have undesirable effects, but this is manageable by // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme // edge case, result in creating at most one complete copy of the string passed in. // Set to Infinity to have unlimited buffers. sax.MAX_BUFFER_LENGTH = 64 * 1024 var buffers = [ "comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script" ] sax.EVENTS = // for discoverability. [ "text" , "processinginstruction" , "sgmldeclaration" , "doctype" , "comment" , "attribute" , "opentag" , "closetag" , "opencdata" , "cdata" , "closecdata" , "error" , "end" , "ready" , "script" , "opennamespace" , "closenamespace" ] function SAXParser (strict, opt) { if (!(this instanceof SAXParser)) return new SAXParser(strict, opt) var parser = this clearBuffers(parser) parser.q = parser.c = "" parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH parser.opt = opt || {} parser.tagCase = parser.opt.lowercasetags ? "toLowerCase" : "toUpperCase" parser.tags = [] parser.closed = parser.closedRoot = parser.sawRoot = false parser.tag = parser.error = null parser.strict = !!strict parser.noscript = !!(strict || parser.opt.noscript) parser.state = S.BEGIN parser.ENTITIES = Object.create(sax.ENTITIES) parser.attribList = [] // namespaces form a prototype chain. // it always points at the current tag, // which protos to its parent tag. if (parser.opt.xmlns) parser.ns = Object.create(rootNS) // mostly just for error reporting parser.position = parser.line = parser.column = 0 emit(parser, "onready") } if (!Object.create) Object.create = function (o) { function f () { this.__proto__ = o } f.prototype = o return new f } if (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) { return o.__proto__ } if (!Object.keys) Object.keys = function (o) { var a = [] for (var i in o) if (o.hasOwnProperty(i)) a.push(i) return a } function checkBufferLength (parser) { var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) , maxActual = 0 for (var i = 0, l = buffers.length; i < l; i ++) { var len = parser[buffers[i]].length if (len > maxAllowed) { // Text/cdata nodes can get big, and since they're buffered, // we can get here under normal conditions. // Avoid issues by emitting the text node now, // so at least it won't get any bigger. switch (buffers[i]) { case "textNode": closeText(parser) break case "cdata": emitNode(parser, "oncdata", parser.cdata) parser.cdata = "" break case "script": emitNode(parser, "onscript", parser.script) parser.script = "" break default: error(parser, "Max buffer length exceeded: "+buffers[i]) } } maxActual = Math.max(maxActual, len) } // schedule the next check for the earliest possible buffer overrun. parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual) + parser.position } function clearBuffers (parser) { for (var i = 0, l = buffers.length; i < l; i ++) { parser[buffers[i]] = "" } } SAXParser.prototype = { end: function () { end(this) } , write: write , resume: function () { this.error = null; return this } , close: function () { return this.write(null) } , end: function () { return this.write(null) } } try { var Stream = require("stream").Stream } catch (ex) { var Stream = function () {} } var streamWraps = sax.EVENTS.filter(function (ev) { return ev !== "error" && ev !== "end" }) function createStream (strict, opt) { return new SAXStream(strict, opt) } function SAXStream (strict, opt) { if (!(this instanceof SAXStream)) return new SAXStream(strict, opt) Stream.apply(me) this._parser = new SAXParser(strict, opt) this.writable = true this.readable = true var me = this this._parser.onend = function () { me.emit("end") } this._parser.onerror = function (er) { me.emit("error", er) // if didn't throw, then means error was handled. // go ahead and clear error, so we can write again. me._parser.error = null } streamWraps.forEach(function (ev) { Object.defineProperty(me, "on" + ev, { get: function () { return me._parser["on" + ev] }, set: function (h) { if (!h) { me.removeAllListeners(ev) return me._parser["on"+ev] = h } me.on(ev, h) }, enumerable: true, configurable: false }) }) } SAXStream.prototype = Object.create(Stream.prototype, { constructor: { value: SAXStream } }) SAXStream.prototype.write = function (data) { this._parser.write(data.toString()) this.emit("data", data) return true } SAXStream.prototype.end = function (chunk) { if (chunk && chunk.length) this._parser.write(chunk.toString()) this._parser.end() return true } SAXStream.prototype.on = function (ev, handler) { var me = this if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) { me._parser["on"+ev] = function () { var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) args.splice(0, 0, ev) me.emit.apply(me, args) } } return Stream.prototype.on.call(me, ev, handler) } // character classes and tokens var whitespace = "\r\n\t " // this really needs to be replaced with character classes. // XML allows all manner of ridiculous numbers and digits. , number = "0124356789" , letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" // (Letter | "_" | ":") , nameStart = letter+"_:" , nameBody = nameStart+number+"-." , quote = "'\"" , entity = number+letter+"#" , attribEnd = whitespace + ">" , CDATA = "[CDATA[" , DOCTYPE = "DOCTYPE" , XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" , XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/" , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } // turn all the string character sets into character class objects. whitespace = charClass(whitespace) number = charClass(number) letter = charClass(letter) nameStart = charClass(nameStart) nameBody = charClass(nameBody) quote = charClass(quote) entity = charClass(entity) attribEnd = charClass(attribEnd) function charClass (str) { return str.split("").reduce(function (s, c) { s[c] = true return s }, {}) } function is (charclass, c) { return charclass[c] } function not (charclass, c) { return !charclass[c] } var S = 0 sax.STATE = { BEGIN : S++ , TEXT : S++ // general stuff , TEXT_ENTITY : S++ // & and such. , OPEN_WAKA : S++ // < , SGML_DECL : S++ // , SCRIPT : S++ // ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/example.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/exa0000664000000000000000000000203412301417627030445 0ustar var fs = require("fs"), sys = require("sys"), path = require("path"), xml = fs.cat(path.join(__dirname, "test.xml")), sax = require("../lib/sax"), strict = sax.parser(true), loose = sax.parser(false, {trim:true}), inspector = function (ev) { return function (data) { // sys.error(""); // sys.error(ev+": "+sys.inspect(data)); // for (var i in data) sys.error(i+ " "+sys.inspect(data[i])); // sys.error(this.line+":"+this.column); }}; xml.addCallback(function (xml) { // strict.write(xml); sax.EVENTS.forEach(function (ev) { loose["on"+ev] = inspector(ev); }); loose.onend = function () { // sys.error("end"); // sys.error(sys.inspect(loose)); }; // do this one char at a time to verify that it works. // (function () { // if (xml) { // loose.write(xml.substr(0,1000)); // xml = xml.substr(1000); // process.nextTick(arguments.callee); // } else loose.close(); // })(); for (var i = 0; i < 1000; i ++) { loose.write(xml); loose.close(); } }); ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/test.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/tes0000664000000000000000000014431212301417627030471 0ustar ]> Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/hello-world.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/hel0000664000000000000000000000024312301417627030440 0ustar require("http").createServer(function (req, res) { res.writeHead(200, {"content-type":"application/json"}) res.end(JSON.stringify({ok: true})) }).listen(1337) ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/switch-bench.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/swi0000775000000000000000000000205212301417627030475 0ustar #!/usr/local/bin/node-bench var Promise = require("events").Promise; var xml = require("posix").cat("test.xml").wait(), path = require("path"), sax = require("../lib/sax"), saxT = require("../lib/sax-trampoline"), parser = sax.parser(false, {trim:true}), parserT = saxT.parser(false, {trim:true}), sys = require("sys"); var count = exports.stepsPerLap = 500, l = xml.length, runs = 0; exports.countPerLap = 1000; exports.compare = { "switch" : function () { // sys.debug("switch runs: "+runs++); // for (var x = 0; x < l; x += 1000) { // parser.write(xml.substr(x, 1000)) // } // for (var i = 0; i < count; i ++) { parser.write(xml); parser.close(); // } // done(); }, trampoline : function () { // sys.debug("trampoline runs: "+runs++); // for (var x = 0; x < l; x += 1000) { // parserT.write(xml.substr(x, 1000)) // } // for (var i = 0; i < count; i ++) { parserT.write(xml); parserT.close(); // } // done(); }, }; sys.debug("rock and roll...");././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/pretty-print.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/pre0000664000000000000000000000272112301417627030461 0ustar var sax = require("../lib/sax") , printer = sax.createStream(false, {lowercasetags:true, trim:true}) , fs = require("fs") function entity (str) { return str.replace('"', '"') } printer.tabstop = 2 printer.level = 0 printer.indent = function () { print("\n") for (var i = this.level; i > 0; i --) { for (var j = this.tabstop; j > 0; j --) { print(" ") } } } printer.on("opentag", function (tag) { this.indent() this.level ++ print("<"+tag.name) for (var i in tag.attributes) { print(" "+i+"=\""+entity(tag.attributes[i])+"\"") } print(">") }) printer.on("text", ontext) printer.on("doctype", ontext) function ontext (text) { this.indent() print(text) } printer.on("closetag", function (tag) { this.level -- this.indent() print("") }) printer.on("cdata", function (data) { this.indent() print("") }) printer.on("comment", function (comment) { this.indent() print("") }) printer.on("error", function (error) { console.error(error) throw error }) if (!process.argv[2]) { throw new Error("Please provide an xml file to prettify\n"+ "TODO: read from stdin or take a file") } var xmlfile = require("path").join(process.cwd(), process.argv[2]) var fstr = fs.createReadStream(xmlfile, { encoding: "utf8" }) function print (c) { if (!process.stdout.write(c)) { fstr.pause() } } process.stdout.on("drain", function () { fstr.resume() }) fstr.pipe(printer) ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/shopping.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/sho0000664000000000000000000030250212301417627030464 0ustar sandbox3.1 r31.Kadu4DC.phase357782011.10.06 15:37:23 PSTp2.a121bc2aaf029435dce62011-10-21T18:38:45.982-04:00P0Y0M0DT0H0M0.169S1112You are currently using the SDC API sandbox environment! No clicks to merchant URLs from this response will be paid. Please change the host of your API requests to 'publisher.api.shopping.com' when you have finished development and testinghttp://statTest.dealtime.com/pixel/noscript?PV_EvnTyp=APPV&APPV_APITSP=10%2F21%2F11_06%3A38%3A45_PM&APPV_DSPRQSID=p2.a121bc2aaf029435dce6&APPV_IMGURL=http://img.shopping.com/sc/glb/sdc_logo_106x19.gif&APPV_LI_LNKINID=7000610&APPV_LI_SBMKYW=nikon&APPV_MTCTYP=1000&APPV_PRTID=2002&APPV_BrnID=14804http://www.shopping.com/digital-cameras/productsDigital CamerasDigital CamerasElectronicshttp://www.shopping.com/xCH-electronics-nikon~linkin_id-7000610?oq=nikonCameras and Photographyhttp://www.shopping.com/xCH-cameras_and_photography-nikon~linkin_id-7000610?oq=nikonDigital Camerashttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610nikonnikonDigital Camerashttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610Nikon D3100 Digital Camera14.2 Megapixel, SLR Camera, 3 in. LCD Screen, With High Definition Video, Weight: 1 lb.The Nikon D3100 digital SLR camera speaks to the growing ranks of enthusiastic D-SLR users and aspiring photographers by providing an easy-to-use and affordable entrance to the world of Nikon D-SLR’s. The 14.2-megapixel D3100 has powerful features, such as the enhanced Guide Mode that makes it easy to unleash creative potential and capture memories with still images and full HD video. Like having a personal photo tutor at your fingertips, this unique feature provides a simple graphical interface on the camera’s LCD that guides users by suggesting and/or adjusting camera settings to achieve the desired end result images. The D3100 is also the world’s first D-SLR to introduce full time auto focus (AF) in Live View and D-Movie mode to effortlessly achieve the critical focus needed when shooting Full HD 1080p video.http://di1.shopping.com/images/pi/93/bc/04/101677489-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-606x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=194.56http://img.shopping.com/sc/pr/sdc_stars_sm_4.5.gifhttp://www.shopping.com/Nikon-D3100/reviews~linkin_id-7000610429.001360.00http://www.shopping.com/Nikon-D3100/prices~linkin_id-7000610http://www.shopping.com/Nikon-D3100/info~linkin_id-7000610Nikon D3100 Digital SLR Camera with 18-55mm NIKKOR VR LensThe Nikon D3100 Digital SLR Camera is an affordable compact and lightweight photographic power-house. It features the all-purpose 18-55mm VR lens a high-resolution 14.2 MP CMOS sensor along with a feature set that's comprehensive yet easy to navigate - the intuitive onboard learn-as-you grow guide mode allows the photographer to understand what the 3100 can do quickly and easily. Capture beautiful pictures and amazing Full HD 1080p movies with sound and full-time autofocus. Availabilty: In Stock!7185Nikonhttp://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockFree Shipping with Any Purchase!529.000.00799.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=-ZW6BMZqz6fbS-aULwga_g%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F343.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+Digital+SLR+Camera+with+18-55mm+NIKKOR+VR+Lens&dlprc=529.0&crn=&istrsmrc=1&isathrsl=0&AR=1&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=1&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=FumFiehttp://img.shopping.com/cctool/merch_logos/475674.gif866 666 91985604.27http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSF343C5Nikon Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR, CamerasNikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR7185Nikonhttp://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-385x352-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stock549.000.00549.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=779&BEFID=7185&aon=%5E1&MerchantID=305814&crawler_id=305814&dealId=md1e9lD8vdOu4FHQfJqKng%3D%3D&url=http%3A%2F%2Fwww.electronics-expo.com%2Findex.php%3Fpage%3Ditem%26id%3DNIKD3100%26source%3DSideCar%26scpid%3D8%26scid%3Dscsho318727%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Nikon+D3100+14.2MP+Digital+SLR+Camera+with+18-55mm+f%2F3.5-5.6+AF-S+DX+VR%2C+Cameras&dlprc=549.0&crn=&istrsmrc=1&isathrsl=0&AR=9&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=9&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=771&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Electronics Expohttp://img.shopping.com/cctool/merch_logos/305814.gif1-888-707-EXPO3713.90http://img.shopping.com/sc/mr/sdc_checks_4.gifhttp://www.shopping.com/xMR-store_electronics_expo~MRD-305814~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSNIKD3100Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, BlackSplit-second shutter response captures shots other cameras may have missed Helps eliminate the frustration of shutter delay! 14.2-megapixels for enlargements worth framing and hanging. Takes breathtaking 1080p HD movies. ISO sensitivity from 100-1600 for bright or dimly lit settings. 3.0in. color LCD for beautiful, wide-angle framing and viewing. In-camera image editing lets you retouch with no PC. Automatic scene modes include Child, Sports, Night Portrait and more. Accepts SDHC memory cards. Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black is one of many Digital SLR Cameras available through Office Depot. Made by Nikon.7185Nikonhttp://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-250x250-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock549.990.00699.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=698&BEFID=7185&aon=%5E1&MerchantID=467671&crawler_id=467671&dealId=yYuaXnDFtCY7rDUjkY2aaw%3D%3D&url=http%3A%2F%2Flink.mercent.com%2Fredirect.ashx%3Fmr%3AmerchantID%3DOfficeDepot%26mr%3AtrackingCode%3DCEC9669E-6ABC-E011-9F24-0019B9C043EB%26mr%3AtargetUrl%3Dhttp%3A%2F%2Fwww.officedepot.com%2Fa%2Fproducts%2F486292%2FNikon-D3100-142-Megapixel-Digital-SLR%2F%253fcm_mmc%253dMercent-_-Shopping-_-Cameras_and_Camcorders-_-486292&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+14.2-Megapixel+Digital+SLR+Camera+With+18-55mm+Zoom-Nikkor+Lens%2C+Black&dlprc=549.99&crn=&istrsmrc=1&isathrsl=0&AR=10&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=10&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=690&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Office Depothttp://img.shopping.com/cctool/merch_logos/467671.gif1-800-GO-DEPOT1352.37http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_office_depot_4158555~MRD-467671~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS486292Nikon® D3100™ 14.2MP Digital SLR with 18-55mm LensThe Nikon D3100 DSLR will surprise you with its simplicity and impress you with superb results.7185Nikonhttp://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock549.996.05549.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=Rl56U7CuiTYsH4MGZ02lxQ%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D903483107%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D3100%E2%84%A2+14.2MP+Digital+SLR+with+18-55mm+Lens&dlprc=549.99&crn=&istrsmrc=0&isathrsl=0&AR=11&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=11&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS9614867Nikon D3100 SLR w/Nikon 18-55mm VR & 55-200mm VR Lenses14.2 Megapixels3" LCDLive ViewHD 1080p Video w/ Sound & Autofocus11-point Autofocus3 Frames per Second ShootingISO 100 to 3200 (Expand to 12800-Hi2)Self Cleaning SensorEXPEED 2, Image Processing EngineScene Recognition System7185Nikonhttp://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-345x345-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stock695.000.00695.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=huS6xZKDKaKMTMP71eI6DA%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D32983%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+SLR+w%2FNikon+18-55mm+VR+%26+55-200mm+VR+Lenses&dlprc=695.0&crn=&istrsmrc=0&isathrsl=0&AR=15&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=15&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS32983Nikon COOLPIX S203 Digital Camera10 Megapixel, Ultra-Compact Camera, 2.5 in. LCD Screen, 3x Optical Zoom, With Video Capability, Weight: 0.23 lb.With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.http://di1.shopping.com/images/pi/c4/ef/1b/95397883-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-500x499-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=20139.00139.00http://www.shopping.com/Nikon-Coolpix-S203/prices~linkin_id-7000610http://www.shopping.com/Nikon-Coolpix-S203/info~linkin_id-7000610Nikon Coolpix S203 Digital Camera (Red)With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.7185Nikonhttp://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockFantastic prices with ease & comfort of Amazon.com!139.009.50139.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=sBd2JnIEPM-A_lBAM1RZgQ%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB002T964IM%2Fref%3Dasc_df_B002T964IM1751618%3Fsmid%3DA22UHVNXG98FAT%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB002T964IM&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S203+Digital+Camera+%28Red%29&dlprc=139.0&crn=&istrsmrc=0&isathrsl=0&AR=63&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=95397883&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=63&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=518&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Amazon Marketplacehttp://img.shopping.com/cctool/merch_logos/301531.gif2132.73http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSB002T964IMNikon S3100 Digital Camera14.5 Megapixel, Compact Camera, 2.7 in. LCD Screen, 5x Optical Zoom, With High Definition Video, Weight: 0.23 lb.This digital camera features a wide-angle optical Zoom-NIKKOR glass lens that allows you to capture anything from landscapes to portraits to action shots. The high-definition movie mode with one-touch recording makes it easy to capture video clips.http://di1.shopping.com/images/pi/66/2d/33/106834268-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-507x387-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=312.00http://img.shopping.com/sc/pr/sdc_stars_sm_2.gifhttp://www.shopping.com/nikon-s3100/reviews~linkin_id-700061099.95134.95http://www.shopping.com/nikon-s3100/prices~linkin_id-7000610http://www.shopping.com/nikon-s3100/info~linkin_id-7000610CoolPix S3100 14 Megapixel Compact Digital Camera- RedNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - red7185Nikonhttp://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=UUyGoqV8r0-xrkn-rnGNbg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJ3Yx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmDAJeU1oyGG0GcBdhGwUGCAVqYF9SO0xSN1sZdmA7dmMdBQAJB24qX1NbQxI6AjA2ME5dVFULPDsGPFcQTTdaLTA6SR0OFlQvPAwMDxYcYlxIVkcoLTcCDA%3D%3D%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=CoolPix+S3100+14+Megapixel+Compact+Digital+Camera-+Red&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=28&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=28&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337013000COOLPIX S3100 PinkNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - pink7185Nikonhttp://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=X87AwXlW1dXoMXk4QQDToQ%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJxYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGsPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Pink&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=31&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=31&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337015000Nikon Coolpix S3100 14.0 MP Digital Camera - SilverNikon Coolpix S3100 14.0 MP Digital Camera - Silver7185Nikonhttp://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-270x270-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock109.970.00109.97http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=803&BEFID=7185&aon=%5E&MerchantID=475774&crawler_id=475774&dealId=nvFwnpfA4rlA1Dbksdsa0w%3D%3D&url=http%3A%2F%2Fwww.thewiz.com%2Fcatalog%2Fproduct.jsp%3FmodelNo%3DS3100SILVER%26gdftrk%3DgdfV2677_a_7c996_a_7c4049_a_7c26262&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S3100+14.0+MP+Digital+Camera+-+Silver&dlprc=109.97&crn=&istrsmrc=0&isathrsl=0&AR=33&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=33&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=797&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=TheWiz.comhttp://img.shopping.com/cctool/merch_logos/475774.gif877-542-69880http://img.shopping.com/sc/glb/flag/US.gifUS26262Nikon� COOLPIX� S3100 14MP Digital Camera (Silver)The Nikon COOLPIX S3100 is the easy way to share your life and stay connected.7185Nikonhttp://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock119.996.05119.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=5GtaN2NeryKwps-Se2l-4g%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D848064082%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C3%AF%C2%BF%C2%BD+COOLPIX%C3%AF%C2%BF%C2%BD+S3100+14MP+Digital+Camera+%28Silver%29&dlprc=119.99&crn=&istrsmrc=0&isathrsl=0&AR=37&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=37&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=509&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS10101095COOLPIX S3100 YellowNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - yellow7185Nikonhttp://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=a43m0RXulX38zCnQjU59jw%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJwYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGoPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Yellow&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=38&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=38&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337014000Nikon D90 Digital Camera12.3 Megapixel, Point and Shoot Camera, 3 in. LCD Screen, With Video Capability, Weight: 1.36 lb.Untitled Document Nikon D90 SLR Digital Camera With 28-80mm 75-300mm Lens Kit The Nikon D90 SLR Digital Camera, with its 12.3-megapixel DX-format CMOS, 3" High resolution LCD display, Scene Recognition System, Picture Control, Active D-Lighting, and one-button Live View, provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera.http://di1.shopping.com/images/pi/52/fb/d3/99671132-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-499x255-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=475.00http://img.shopping.com/sc/pr/sdc_stars_sm_5.gifhttp://www.shopping.com/Nikon-D90-with-18-270mm-Lens/reviews~linkin_id-7000610689.002299.00http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/prices~linkin_id-7000610http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/info~linkin_id-7000610Nikon® D90 12.3MP Digital SLR Camera (Body Only)The Nikon D90 will make you rethink what a digital SLR camera can achieve.7185Nikonhttp://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stock1015.996.051015.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=GU5JJkpUAxe5HujB7fkwAA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D851830266%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=1015.99&crn=&istrsmrc=0&isathrsl=0&AR=14&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=14&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS10148659Nikon D90 SLR Digital Camera (Camera Body)The Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CCD 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera. In addition the D90 introduces the D-Movie mode allowing for the first time an interchangeable lens SLR camera that is capable of recording 720p HD movie clips. Availabilty: In Stock7185Nikonhttp://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stockFree Shipping with Any Purchase!689.000.00900.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=XhURuSC-spBbTIDfo4qfzQ%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F169.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+Digital+Camera+%28Camera+Body%29&dlprc=689.0&crn=&istrsmrc=1&isathrsl=0&AR=16&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=16&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=FumFiehttp://img.shopping.com/cctool/merch_logos/475674.gif866 666 91985604.27http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSF169C5Nikon D90 SLR w/Nikon 18-105mm VR & 55-200mm VR Lenses12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing7185Nikonhttp://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock1189.000.001189.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=o0Px_XLWDbrxAYRy3rCmyQ%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30619%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+%26+55-200mm+VR+Lenses&dlprc=1189.0&crn=&istrsmrc=0&isathrsl=0&AR=20&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=20&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS30619Nikon D90 12.3 Megapixel Digital SLR Camera (Body Only)Fusing 12.3 megapixel image quality and a cinematic 24fps D-Movie Mode, the Nikon D90 exceeds the demands of passionate photographers. Coupled with Nikon's EXPEED image processing technologies and NIKKOR optics, breathtaking image fidelity is assured. Combined with fast 0.15ms power-up and split-second 65ms shooting lag, dramatic action and decisive moments are captured easily. Effective 4-frequency, ultrasonic sensor cleaning frees image degrading dust particles from the sensor's optical low pass filter.7185Nikonhttp://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stockFREE FEDEX 2-3 DAY DELIVERY899.950.00899.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=269&BEFID=7185&aon=%5E&MerchantID=9296&crawler_id=811558&dealId=4HgbWJSJ8ssgIf8B0MXIwA%3D%3D&url=http%3A%2F%2Fwww.pcnation.com%2Foptics-gallery%2Fdetails.asp%3Faffid%3D305%26item%3D2N145P&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3+Megapixel+Digital+SLR+Camera+%28Body+Only%29&dlprc=899.95&crn=&istrsmrc=1&isathrsl=0&AR=21&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=21&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=257&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=PCNationhttp://img.shopping.com/cctool/merch_logos/9296.gif800-470-707916224.43http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_pcnation_9689~MRD-9296~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS2N145PNikon D90 12.3MP Digital SLR Camera (Body Only)Fusing 12.3-megapixel image quality inherited from the award-winning D300 with groundbreaking features, the D90's breathtaking, low-noise image quality is further advanced with EXPEED image processing. Split-second shutter response and continuous shooting at up to 4.5 frames-per-second provide the power to capture fast action and precise moments perfectly, while Nikon's exclusive Scene Recognition System contributes to faster 11-area autofocus performance, finer white balance detection and more. The D90 delivers the control passionate photographers demand, utilizing comprehensive exposure functions and the intelligence of 3D Color Matrix Metering II. Stunning results come to life on a 3-inch 920,000-dot color LCD monitor, providing accurate image review, Live View composition and brilliant playback of the D90's cinematic-quality 24-fps HD D-Movie mode.7185Nikonhttp://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockFantastic prices with ease & comfort of Amazon.com!780.000.00780.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=UNDa3uMDZXOnvD_7sTILYg%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB001ET5U92%2Fref%3Dasc_df_B001ET5U921751618%3Fsmid%3DAHF4SYKP09WBH%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB001ET5U92&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=780.0&crn=&istrsmrc=0&isathrsl=0&AR=29&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=29&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=520&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Amazon Marketplacehttp://img.shopping.com/cctool/merch_logos/301531.gif2132.73http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSB001ET5U92Nikon D90 Digital Camera with 18-105mm lens12.9 Megapixel, SLR Camera, 3 in. LCD Screen, 5.8x Optical Zoom, With Video Capability, Weight: 2.3 lb.Its 12.3 megapixel DX-format CMOS image sensor and EXPEED image processing system offer outstanding image quality across a wide ISO light sensitivity range. Live View mode lets you compose and shoot via the high-resolution 3-inch LCD monitor, and an advanced Scene Recognition System and autofocus performance help capture images with astounding accuracy. Movies can be shot in Motion JPEG format using the D-Movie function. The camera’s large image sensor ensures exceptional movie image quality and you can create dramatic effects by shooting with a wide range of interchangeable NIKKOR lenses, from wide-angle to macro to fisheye, or by adjusting the lens aperture and experimenting with depth-of-field. The D90 – designed to fuel your passion for photography.http://di1.shopping.com/images/pi/57/6a/4f/70621646-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-490x489-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5324.81http://img.shopping.com/sc/pr/sdc_stars_sm_5.gifhttp://www.shopping.com/Nikon-D90-with-18-105mm-lens/reviews~linkin_id-7000610849.951599.95http://www.shopping.com/Nikon-D90-with-18-105mm-lens/prices~linkin_id-7000610http://www.shopping.com/Nikon-D90-with-18-105mm-lens/info~linkin_id-7000610Nikon D90 18-105mm VR LensThe Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CMOS 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View prov7185Nikonhttp://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-260x260-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stock849.950.00849.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=419&BEFID=7185&aon=%5E1&MerchantID=9390&crawler_id=1905054&dealId=3o5e1VghgJPfhLvT1JFKTA%3D%3D&url=http%3A%2F%2Fwww.ajrichard.com%2FNikon-D90-18-105mm-VR-Lens%2Fp-292%3Frefid%3DShopping%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+18-105mm+VR+Lens&dlprc=849.95&crn=&istrsmrc=0&isathrsl=0&AR=2&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=2&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=425&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=AJRichardhttp://img.shopping.com/cctool/merch_logos/9390.gif1-888-871-125631244.48http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_ajrichard~MRD-9390~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS292Nikon D90 SLR w/Nikon 18-105mm VR Lens12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing7185Nikonhttp://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stock909.000.00909.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=_lYWj_jbwfsSkfcwUcDuww%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30971%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+Lens&dlprc=909.0&crn=&istrsmrc=0&isathrsl=0&AR=3&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=3&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS3097125448/D90 12.3 Megapixel Digital Camera 18-105mm Zoom Lens w/ 3" Screen - BlackNikon D90 - Digital camera - SLR - 12.3 Mpix - Nikon AF-S DX 18-105mm lens - optical zoom: 5.8 x - supported memory: SD, SDHC7185Nikonhttp://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stockGet 30 days FREE SHIPPING w/ ShipVantage1199.008.201199.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=1KCclCGuWvty2XKU9skadg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBRtFXpzYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcVlhCGGkPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=25448%2FD90+12.3+Megapixel+Digital+Camera+18-105mm+Zoom+Lens+w%2F+3%22+Screen+-+Black&dlprc=1199.0&crn=&istrsmrc=1&isathrsl=0&AR=4&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=4&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=586&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00353197000Nikon® D90 12.3MP Digital SLR with 18-105mm LensThe Nikon D90 will make you rethink what a digital SLR camera can achieve.7185Nikonhttp://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock1350.996.051350.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=3-VOSfVV5Jo7HlA4kJtanA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D982673361%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+with+18-105mm+Lens&dlprc=1350.99&crn=&istrsmrc=0&isathrsl=0&AR=5&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=5&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS11148905Nikon D90 Kit 12.3-megapixel Digital SLR with 18-105mm VR LensPhotographers, take your passion further!Now is the time for new creativity, and to rethink what a digital SLR camera can achieve. It's time for the D90, a camera with everything you would expect from Nikon's next-generation D-SLRs, and some unexpected surprises, as well. The stunning image quality is inherited from the D300, Nikon's DX-format flagship. The D90 also has Nikon's unmatched ergonomics and high performance, and now takes high-quality movies with beautifully cinematic results. The world of photography has changed, and with the D90 in your hands, it's time to make your own rules.AF-S DX NIKKOR 18-105mm f/3.5-5.6G ED VR LensWide-ratio 5.8x zoom Compact, versatile and ideal for a broad range of shooting situations, ranging from interiors and landscapes to beautiful portraits� a perfect everyday zoom. Nikon VR (Vibration Reduction) image stabilization Vibration Reduction is engineered specifically for each VR NIKKOR lens and enables handheld shooting at up to 3 shutter speeds slower than would7185Nikonhttp://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x232-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockShipping Included!1050.000.001199.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=135&BEFID=7185&aon=%5E1&MerchantID=313162&crawler_id=313162&dealId=kQnB6rS4AjN5dx5h2_631g%3D%3D&url=http%3A%2F%2Fonecall.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1pZSxNoWHFwLx8GTAICa2ZeH1sPXTZLNzRpAh1HR0BxPQEGCBJNMhFHUElsFCFCVkVTTHAcBggEHQ4aHXNpGERGH3RQODsbAgdechJtbBt8fx8JAwhtZFAzJj1oGgIWCxRlNyFOUV9UUGIxBgo0T0IyTSYqJ0RWHw4QPCIBAAQXRGMDICg6TllZVBhh%26nAID%3D13736960&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+Kit+12.3-megapixel+Digital+SLR+with+18-105mm+VR+Lens&dlprc=1050.0&crn=&istrsmrc=1&isathrsl=0&AR=6&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=6&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=1&code=&acode=143&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=OneCallhttp://img.shopping.com/cctool/merch_logos/313162.gif1.800.398.07661804.44http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_onecall_9689~MRD-313162~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS92826Price rangehttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610$24 - $4012http://www.shopping.com/digital-cameras/nikon/products?minPrice=24&maxPrice=4012&linkin_id=7000610$4012 - $7999http://www.shopping.com/digital-cameras/nikon/products?minPrice=4012&maxPrice=7999&linkin_id=7000610Brandhttp://www.shopping.com/digital-cameras/nikon/products~all-9688-brand~MS-1?oq=nikon&linkin_id=7000610Nikonhttp://www.shopping.com/digital-cameras/nikon+brand-nikon/products~linkin_id-7000610Cranehttp://www.shopping.com/digital-cameras/nikon+9688-brand-crane/products~linkin_id-7000610Ikelitehttp://www.shopping.com/digital-cameras/nikon+ikelite/products~linkin_id-7000610Bowerhttp://www.shopping.com/digital-cameras/nikon+bower/products~linkin_id-7000610FUJIFILMhttp://www.shopping.com/digital-cameras/nikon+brand-fuji/products~linkin_id-7000610Storehttp://www.shopping.com/digital-cameras/nikon/products~all-store~MS-1?oq=nikon&linkin_id=7000610Amazon Marketplacehttp://www.shopping.com/digital-cameras/nikon+store-amazon-marketplace-9689/products~linkin_id-7000610Amazonhttp://www.shopping.com/digital-cameras/nikon+store-amazon/products~linkin_id-7000610Adoramahttp://www.shopping.com/digital-cameras/nikon+store-adorama/products~linkin_id-7000610J&R Music and Computer Worldhttp://www.shopping.com/digital-cameras/nikon+store-j-r-music-and-computer-world/products~linkin_id-7000610RytherCamera.comhttp://www.shopping.com/digital-cameras/nikon+store-rythercamera-com/products~linkin_id-7000610Resolutionhttp://www.shopping.com/digital-cameras/nikon/products~all-21885-resolution~MS-1?oq=nikon&linkin_id=7000610Under 4 Megapixelhttp://www.shopping.com/digital-cameras/nikon+under-4-megapixel/products~linkin_id-7000610At least 5 Megapixelhttp://www.shopping.com/digital-cameras/nikon+5-megapixel-digital-cameras/products~linkin_id-7000610At least 6 Megapixelhttp://www.shopping.com/digital-cameras/nikon+6-megapixel-digital-cameras/products~linkin_id-7000610At least 7 Megapixelhttp://www.shopping.com/digital-cameras/nikon+7-megapixel-digital-cameras/products~linkin_id-7000610At least 8 Megapixelhttp://www.shopping.com/digital-cameras/nikon+8-megapixel-digital-cameras/products~linkin_id-7000610Featureshttp://www.shopping.com/digital-cameras/nikon/products~all-32804-features~MS-1?oq=nikon&linkin_id=7000610Shockproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-shockproof/products~linkin_id-7000610Waterproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-waterproof/products~linkin_id-7000610Freezeproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-freezeproof/products~linkin_id-7000610Dust proofhttp://www.shopping.com/digital-cameras/nikon+32804-features-dust-proof/products~linkin_id-7000610Image Stabilizationhttp://www.shopping.com/digital-cameras/nikon+32804-features-image-stabilization/products~linkin_id-7000610hybriddigital camerag1sonycameracanonnikonkodak digital camerakodaksony cybershotkodak easyshare digital cameranikon coolpixolympuspink digital cameracanon powershot././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/strict.dtdcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/str0000664000000000000000000010344012301417627030503 0ustar %HTMLlat1; %HTMLsymbol; %HTMLspecial; ]]> ]]> ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/get-products.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/get0000664000000000000000000000300612301417627030447 0ustar // pull out /GeneralSearchResponse/categories/category/items/product tags // the rest we don't care about. var sax = require("../lib/sax.js") var fs = require("fs") var path = require("path") var xmlFile = path.resolve(__dirname, "shopping.xml") var util = require("util") var http = require("http") fs.readFile(xmlFile, function (er, d) { http.createServer(function (req, res) { if (er) throw er var xmlstr = d.toString("utf8") var parser = sax.parser(true) var products = [] var product = null var currentTag = null parser.onclosetag = function (tagName) { if (tagName === "product") { products.push(product) currentTag = product = null return } if (currentTag && currentTag.parent) { var p = currentTag.parent delete currentTag.parent currentTag = p } } parser.onopentag = function (tag) { if (tag.name !== "product" && !product) return if (tag.name === "product") { product = tag } tag.parent = currentTag tag.children = [] tag.parent && tag.parent.children.push(tag) currentTag = tag } parser.ontext = function (text) { if (currentTag) currentTag.children.push(text) } parser.onend = function () { var out = util.inspect(products, false, 3, true) res.writeHead(200, {"content-type":"application/json"}) res.end("{\"ok\":true}") // res.end(JSON.stringify(products)) } parser.write(xmlstr).end() }).listen(1337) }) ././@LongLink0000644000000000000000000000016400000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/big0000664000000000000000000054142512301417627030445 0ustar something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/not-pretty.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/examples/not0000664000000000000000000000026512301417627030474 0ustar something blerm a bit down here cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/0000775000000000000000000000000012301420116027072 5ustar ././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/trailin0000664000000000000000000000046312301417627030477 0ustar require(__dirname).test({ xml : "Welcome, to monkey land", expect : [ ["opentag", { "name": "SPAN", "attributes": {} }], ["text", "Welcome,"], ["closetag", "SPAN"], ["text", " to monkey land"], ["end"], ["ready"] ], strict : false, opt : {} }); ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/parser-position.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/parser-0000664000000000000000000000166712301417627030415 0ustar var sax = require("../lib/sax"), assert = require("assert") function testPosition(chunks, expectedEvents) { var parser = sax.parser(); expectedEvents.forEach(function(expectation) { parser['on' + expectation[0]] = function() { for (var prop in expectation[1]) { assert.equal(parser[prop], expectation[1][prop]); } } }); chunks.forEach(function(chunk) { parser.write(chunk); }); }; testPosition(['
abcdefgh
'], [ ['opentag', { position: 5, startTagPosition: 1 }] , ['text', { position: 19, startTagPosition: 14 }] , ['closetag', { position: 19, startTagPosition: 14 }] ]); testPosition(['
abcde','fgh
'], [ ['opentag', { position: 5, startTagPosition: 1 }] , ['text', { position: 19, startTagPosition: 14 }] , ['closetag', { position: 19, startTagPosition: 14 }] ]); ././@LongLink0000644000000000000000000000017100000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-x0000664000000000000000000000055312301417627030443 0ustar require(__dirname).test( { xml : "" , expect : [ [ "opentag" , { name: "xml:root" , uri: "http://www.w3.org/XML/1998/namespace" , prefix: "xml" , local: "root" , attributes: {} , ns: {} } ] , ["closetag", "xml:root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-cl0000664000000000000000000000121012301417627030351 0ustar require(__dirname).test({ xml : ""+ "" + "" + "" + "" + "=(|)" + "" + "", expect : [ ["opentag", { "name": "root", "attributes": {} }], ["opentag", { "name": "child", "attributes": {} }], ["opentag", { "name": "haha", "attributes": {} }], ["closetag", "haha"], ["closetag", "child"], ["opentag", { "name": "monkey", "attributes": {} }], ["text", "=(|)"], ["closetag", "monkey"], ["closetag", "root"], ["end"], ["ready"] ], strict : true, opt : {} }); ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-u0000664000000000000000000000111612301417627030434 0ustar require(__dirname).test( { strict : true , opt : { xmlns: true } , expect : [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"] , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ] , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } }, ns: {} } ] , [ "closetag", "root" ] ] } ).write("") ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-chunked.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-c0000664000000000000000000000047112301417627030330 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is character data  "], ["closecdata", undefined], ["closetag", "R"] ] }).write("").close(); ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata.j0000664000000000000000000000043512301417627030340 0ustar require(__dirname).test({ xml : "", expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is character data  "], ["closecdata", undefined], ["closetag", "R"] ] }); ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-35.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-30000664000000000000000000000046512301417627030327 0ustar // https://github.com/isaacs/sax-js/issues/35 require(__dirname).test ( { xml : " \n"+ "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "text", "\r\r\n" ] , [ "closetag", "xml" ] ] , strict : true , opt : {} } ) ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/script.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/script.0000664000000000000000000000066712301417627030425 0ustar require(__dirname).test({ xml : "", expect : [ ["opentag", {"name": "HTML","attributes": {}}], ["opentag", {"name": "HEAD","attributes": {}}], ["opentag", {"name": "SCRIPT","attributes": {}}], ["script", "if (1 < 0) { console.log('elo there'); }"], ["closetag", "SCRIPT"], ["closetag", "HEAD"], ["closetag", "HTML"] ] }); ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/buffer-overrun.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/buffer-0000664000000000000000000000157612301417627030371 0ustar // set this really low so that I don't have to put 64 MB of xml in here. var sax = require("../lib/sax") var bl = sax.MAX_BUFFER_LENGTH sax.MAX_BUFFER_LENGTH = 5; require(__dirname).test({ expect : [ ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "], ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "], ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "], ["opentag", { "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", "attributes": {} }], ["text", "yo"], ["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"] ] }).write("") .write("yo") .write("") .close(); sax.MAX_BUFFER_LENGTH = bl ././@LongLink0000644000000000000000000000020300000000000011576 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-x0000664000000000000000000000132712301417627030443 0ustar require(__dirname).test( { xml : "" , expect : [ [ "attribute" , { name: "xml:lang" , local: "lang" , prefix: "xml" , uri: "http://www.w3.org/XML/1998/namespace" , value: "en" } ] , [ "opentag" , { name: "root" , uri: "" , prefix: "" , local: "root" , attributes: { "xml:lang": { name: "xml:lang" , local: "lang" , prefix: "xml" , uri: "http://www.w3.org/XML/1998/namespace" , value: "en" } } , ns: {} } ] , ["closetag", "root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-strict.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-s0000664000000000000000000000603012301417627030432 0ustar require(__dirname).test ( { xml : ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ "" , expect : [ [ "opentag", { name: "root", prefix: "", local: "root", uri: "", attributes: {}, ns: {} } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } }, ns: {} } ] , [ "closetag", "plain" ] , [ "opennamespace", { prefix: "", uri: "uri:default" } ] , [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ] , [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default", attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } }, ns: { "": "uri:default" } } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' }, attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ] , [ "closetag", "plain" ] , [ "closetag", "ns1" ] , [ "closenamespace", { prefix: "", uri: "uri:default" } ] , [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ] , [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ] , [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "", attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } }, ns: { a: "uri:nsa" } } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } }, ns: { a: 'uri:nsa' } } ] , [ "closetag", "plain" ] , [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ] , [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa", attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } }, ns: { a: 'uri:nsa' } } ] , [ "closetag", "a:ns" ] , [ "closetag", "ns2" ] , [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ] , [ "closetag", "root" ] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-end-split.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-e0000664000000000000000000000043712301417627030334 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is "], ["closecdata", undefined], ["closetag", "R"] ] }) .write("") .write("") .close(); ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-i0000664000000000000000000000315312301417627030423 0ustar var t = require(__dirname) , xmls = // should be the same both ways. [ "" , "" ] , ex1 = [ [ "opennamespace" , { prefix: "a" , uri: "http://ATTRIBUTE" } ] , [ "attribute" , { name: "xmlns:a" , value: "http://ATTRIBUTE" , prefix: "xmlns" , local: "a" , uri: "http://www.w3.org/2000/xmlns/" } ] , [ "attribute" , { name: "a:attr" , local: "attr" , prefix: "a" , uri: "http://ATTRIBUTE" , value: "value" } ] , [ "opentag" , { name: "parent" , uri: "" , prefix: "" , local: "parent" , attributes: { "a:attr": { name: "a:attr" , local: "attr" , prefix: "a" , uri: "http://ATTRIBUTE" , value: "value" } , "xmlns:a": { name: "xmlns:a" , local: "a" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "http://ATTRIBUTE" } } , ns: {"a": "http://ATTRIBUTE"} } ] , ["closetag", "parent"] , ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }] ] // swap the order of elements 2 and 1 , ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3)) , expected = [ex1, ex2] xmls.forEach(function (x, i) { t.test({ xml: x , expect: expected[i] , strict: true , opt: { xmlns: true } }) }) ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-closing-child.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-cl0000664000000000000000000000121112301417627030352 0ustar require(__dirname).test({ xml : ""+ "" + "" + "" + "" + "=(|)" + "" + "", expect : [ ["opentag", { "name": "ROOT", "attributes": {} }], ["opentag", { "name": "CHILD", "attributes": {} }], ["opentag", { "name": "HAHA", "attributes": {} }], ["closetag", "HAHA"], ["closetag", "CHILD"], ["opentag", { "name": "MONKEY", "attributes": {} }], ["text", "=(|)"], ["closetag", "MONKEY"], ["closetag", "ROOT"], ["end"], ["ready"] ], strict : false, opt : {} }); ././@LongLink0000644000000000000000000000017300000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-x0000664000000000000000000000170312301417627030441 0ustar require(__dirname).test( { xml : "" , expect : [ ["error" , "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n" + "Actual: ERROR\n" + "Line: 0\nColumn: 27\nChar: '" ] , [ "attribute" , { name: "xmlns:xml" , local: "xml" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "ERROR" } ] , [ "opentag" , { name: "xml:root" , uri: "http://www.w3.org/XML/1998/namespace" , prefix: "xml" , local: "root" , attributes: { "xmlns:xml": { name: "xmlns:xml" , local: "xml" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "ERROR" } } , ns: {} } ] , ["closetag", "xml:root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-multiple.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-m0000664000000000000000000000066612301417627030350 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is "], ["closecdata", undefined], ["opencdata", undefined], ["cdata", "character data  "], ["closecdata", undefined], ["closetag", "R"] ] }).write("").write("").close(); ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/xmlns-r0000664000000000000000000000614512301417627030440 0ustar require(__dirname).test ( { xml : ""+ ""+ ""+ ""+ ""+ "" , expect : [ [ "opennamespace", { prefix: "x", uri: "x1" } ] , [ "opennamespace", { prefix: "y", uri: "y1" } ] , [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] , [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ] , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } , "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } , "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x1', y: 'y1' } } ] , [ "opennamespace", { prefix: "x", uri: "x2" } ] , [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] , [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind", attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } }, ns: { x: 'x2' } } ] , [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x2' } } ] , [ "closetag", "check" ] , [ "closetag", "rebind" ] , [ "closenamespace", { prefix: "x", uri: "x2" } ] , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x1', y: 'y1' } } ] , [ "closetag", "check" ] , [ "closetag", "root" ] , [ "closenamespace", { prefix: "x", uri: "x1" } ] , [ "closenamespace", { prefix: "y", uri: "y1" } ] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/cdata-f0000664000000000000000000000117212301417627030332 0ustar var p = require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", "[[[[[[[[]]]]]]]]"], ["closecdata", undefined], ["closetag", "R"] ] }) var x = "" for (var i = 0; i < x.length ; i ++) { p.write(x.charAt(i)) } p.close(); var p2 = require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", "[[[[[[[[]]]]]]]]"], ["closecdata", undefined], ["closetag", "R"] ] }) var x = "" p2.write(x).close(); ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/stray-ending.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/stray-e0000664000000000000000000000066012301417627030420 0ustar // stray ending tags should just be ignored in non-strict mode. // https://github.com/isaacs/sax-js/issues/32 require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "A", attributes: {} } ] , [ "opentag", { name: "B", attributes: {} } ] , [ "text", "" ] , [ "closetag", "B" ] , [ "closetag", "A" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-49.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-40000664000000000000000000000163012301417627030323 0ustar // https://github.com/isaacs/sax-js/issues/49 require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "opentag", { name: "script", attributes: {} } ] , [ "text", "hello world" ] , [ "closetag", "script" ] , [ "closetag", "xml" ] ] , strict : false , opt : { lowercasetags: true, noscript: true } } ) require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "opentag", { name: "script", attributes: {} } ] , [ "opencdata", undefined ] , [ "cdata", "hello world" ] , [ "closecdata", undefined ] , [ "closetag", "script" ] , [ "closetag", "xml" ] ] , strict : false , opt : { lowercasetags: true, noscript: true } } ) ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-47.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-40000664000000000000000000000056512301417627030331 0ustar // https://github.com/isaacs/sax-js/issues/47 require(__dirname).test ( { xml : '' , expect : [ [ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ], [ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ], [ "closetag", "a" ] ] , strict : true , opt : {} } ) ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-23.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-20000664000000000000000000000254512301417627030327 0ustar require(__dirname).test ( { xml : ""+ ""+ "653724009"+ "-1"+ "01pG0000002KoSUIA0"+ "-1"+ "CalendarController"+ "true"+ ""+ "" , expect : [ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ] , [ "opentag", { name : "RESULT", attributes: {} } ] , [ "opentag", { name: "BODYCRC", attributes: {} } ] , [ "text", "653724009" ] , [ "closetag", "BODYCRC" ] , [ "opentag", { name: "COLUMN", attributes: {} } ] , [ "text", "-1" ] , [ "closetag", "COLUMN" ] , [ "opentag", { name: "ID", attributes: {} } ] , [ "text", "01pG0000002KoSUIA0" ] , [ "closetag", "ID" ] , [ "opentag", {name: "LINE", attributes: {} } ] , [ "text", "-1" ] , [ "closetag", "LINE" ] , [ "opentag", {name: "NAME", attributes: {} } ] , [ "text", "CalendarController" ] , [ "closetag", "NAME" ] , [ "opentag", {name: "SUCCESS", attributes: {} } ] , [ "text", "true" ] , [ "closetag", "SUCCESS" ] , [ "closetag", "RESULT" ] , [ "closetag", "COMPILECLASSESRESPONSE" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/index.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/index.j0000664000000000000000000000552012301417627030373 0ustar var globalsBefore = JSON.stringify(Object.keys(global)) , util = require("util") , assert = require("assert") , fs = require("fs") , path = require("path") , sax = require("../lib/sax") exports.sax = sax // handy way to do simple unit tests // if the options contains an xml string, it'll be written and the parser closed. // otherwise, it's assumed that the test will write and close. exports.test = function test (options) { var xml = options.xml , parser = sax.parser(options.strict, options.opt) , expect = options.expect , e = 0 sax.EVENTS.forEach(function (ev) { parser["on" + ev] = function (n) { if (process.env.DEBUG) { console.error({ expect: expect[e] , actual: [ev, n] }) } if (e >= expect.length && (ev === "end" || ev === "ready")) return assert.ok( e < expect.length, "expectation #"+e+" "+util.inspect(expect[e])+"\n"+ "Unexpected event: "+ev+" "+(n ? util.inspect(n) : "")) var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n) assert.equal(ev, expect[e][0], "expectation #"+e+"\n"+ "Didn't get expected event\n"+ "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ "actual: "+ev+" "+inspected+"\n") if (ev === "error") assert.equal(n.message, expect[e][1]) else assert.deepEqual(n, expect[e][1], "expectation #"+e+"\n"+ "Didn't get expected argument\n"+ "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ "actual: "+ev+" "+inspected+"\n") e++ if (ev === "error") parser.resume() } }) if (xml) parser.write(xml).close() return parser } if (module === require.main) { var running = true , failures = 0 function fail (file, er) { util.error("Failed: "+file) util.error(er.stack || er.message) failures ++ } fs.readdir(__dirname, function (error, files) { files = files.filter(function (file) { return (/\.js$/.exec(file) && file !== 'index.js') }) var n = files.length , i = 0 console.log("0.." + n) files.forEach(function (file) { // run this test. try { require(path.resolve(__dirname, file)) var globalsAfter = JSON.stringify(Object.keys(global)) if (globalsAfter !== globalsBefore) { var er = new Error("new globals introduced\n"+ "expected: "+globalsBefore+"\n"+ "actual: "+globalsAfter) globalsBefore = globalsAfter throw er } console.log("ok " + (++i) + " - " + file) } catch (er) { console.log("not ok "+ (++i) + " - " + file) fail(file, er) } }) if (!failures) return console.log("#all pass") else return console.error(failures + " failure" + (failures > 1 ? "s" : "")) }) } ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-closing-tag.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/self-cl0000664000000000000000000000112112301417627030352 0ustar require(__dirname).test({ xml : " "+ " "+ " "+ " "+ "=(|) "+ ""+ " ", expect : [ ["opentag", {name:"ROOT", attributes:{}}], ["opentag", {name:"HAHA", attributes:{}}], ["closetag", "HAHA"], ["opentag", {name:"HAHA", attributes:{}}], ["closetag", "HAHA"], // ["opentag", {name:"HAHA", attributes:{}}], // ["closetag", "HAHA"], ["opentag", {name:"MONKEY", attributes:{}}], ["text", "=(|)"], ["closetag", "MONKEY"], ["closetag", "ROOT"] ], opt : { trim : true } });././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/unquoted.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/unquote0000664000000000000000000000077612301417627030544 0ustar // unquoted attributes should be ok in non-strict mode // https://github.com/isaacs/sax-js/issues/31 require(__dirname).test ( { xml : "" , expect : [ [ "attribute", { name: "class", value: "test" } ] , [ "attribute", { name: "hello", value: "world" } ] , [ "opentag", { name: "SPAN", attributes: { class: "test", hello: "world" } } ] , [ "closetag", "SPAN" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-30.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/node_modules/sax/test/issue-30000664000000000000000000000115312301417627030322 0ustar // https://github.com/isaacs/sax-js/issues/33 require(__dirname).test ( { xml : "\n"+ "\n"+ "\n"+ "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "text", "\n" ] , [ "comment", " \n comment with a single dash- in it\n" ] , [ "text", "\n" ] , [ "opentag", { name: "data", attributes: {} } ] , [ "closetag", "data" ] , [ "text", "\n" ] , [ "closetag", "xml" ] ] , strict : true , opt : {} } ) cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/0000775000000000000000000000000012301420116023411 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/elementpath.js0000664000000000000000000001512612301417627026277 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var sprintf = require('./sprintf').sprintf; var utils = require('./utils'); var SyntaxError = require('./errors').SyntaxError; var _cache = {}; var RE = new RegExp( "(" + "'[^']*'|\"[^\"]*\"|" + "::|" + "//?|" + "\\.\\.|" + "\\(\\)|" + "[/.*:\\[\\]\\(\\)@=])|" + "((?:\\{[^}]+\\})?[^/\\[\\]\\(\\)@=\\s]+)|" + "\\s+", 'g' ); var xpath_tokenizer = utils.findall.bind(null, RE); function prepare_tag(next, token) { var tag = token[0]; function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem._children.forEach(function(e) { if (e.tag === tag) { rv.push(e); } }); } return rv; } return select; } function prepare_star(next, token) { function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem._children.forEach(function(e) { rv.push(e); }); } return rv; } return select; } function prepare_dot(next, token) { function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; rv.push(elem); } return rv; } return select; } function prepare_iter(next, token) { var tag; token = next(); if (token[1] === '*') { tag = '*'; } else if (!token[1]) { tag = token[0] || ''; } else { throw new SyntaxError(token); } function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem.iter(tag, function(e) { if (e !== elem) { rv.push(e); } }); } return rv; } return select; } function prepare_dot_dot(next, token) { function select(context, result) { var i, len, elem, rv = [], parent_map = context.parent_map; if (!parent_map) { context.parent_map = parent_map = {}; context.root.iter(null, function(p) { p._children.forEach(function(e) { parent_map[e] = p; }); }); } for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (parent_map.hasOwnProperty(elem)) { rv.push(parent_map[elem]); } } return rv; } return select; } function prepare_predicate(next, token) { var tag, key, value, select; token = next(); if (token[1] === '@') { // attribute token = next(); if (token[1]) { throw new SyntaxError(token, 'Invalid attribute predicate'); } key = token[0]; token = next(); if (token[1] === ']') { select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.get(key)) { rv.push(elem); } } return rv; }; } else if (token[1] === '=') { value = next()[1]; if (value[0] === '"' || value[value.length - 1] === '\'') { value = value.slice(1, value.length - 1); } else { throw new SyntaxError(token, 'Ivalid comparison target'); } token = next(); select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.get(key) === value) { rv.push(elem); } } return rv; }; } if (token[1] !== ']') { throw new SyntaxError(token, 'Invalid attribute predicate'); } } else if (!token[1]) { tag = token[0] || ''; token = next(); if (token[1] !== ']') { throw new SyntaxError(token, 'Invalid node predicate'); } select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.find(tag)) { rv.push(elem); } } return rv; }; } else { throw new SyntaxError(null, 'Invalid predicate'); } return select; } var ops = { "": prepare_tag, "*": prepare_star, ".": prepare_dot, "..": prepare_dot_dot, "//": prepare_iter, "[": prepare_predicate, }; function _SelectorContext(root) { this.parent_map = null; this.root = root; } function findall(elem, path) { var selector, result, i, len, token, value, select, context; if (_cache.hasOwnProperty(path)) { selector = _cache[path]; } else { // TODO: Use smarter cache purging approach if (Object.keys(_cache).length > 100) { _cache = {}; } if (path.charAt(0) === '/') { throw new SyntaxError(null, 'Cannot use absolute path on element'); } result = xpath_tokenizer(path); selector = []; function getToken() { return result.shift(); } token = getToken(); while (true) { var c = token[1] || ''; value = ops[c](getToken, token); if (!value) { throw new SyntaxError(null, sprintf('Invalid path: %s', path)); } selector.push(value); token = getToken(); if (!token) { break; } else if (token[1] === '/') { token = getToken(); } if (!token) { break; } } _cache[path] = selector; } // Execute slector pattern result = [elem]; context = new _SelectorContext(elem); for (i = 0, len = selector.length; i < len; i++) { select = selector[i]; result = select(context, result); } return result || []; } function find(element, path) { var resultElements = findall(element, path); if (resultElements && resultElements.length > 0) { return resultElements[0]; } return null; } function findtext(element, path, defvalue) { var resultElements = findall(element, path); if (resultElements && resultElements.length > 0) { return resultElements[0].text; } return defvalue; } exports.find = find; exports.findall = findall; exports.findtext = findtext; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/parser.js0000664000000000000000000000161612301417627025264 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* TODO: support node-expat C++ module optionally */ var util = require('util'); var parsers = require('./parsers/index'); function get_parser(name) { if (name === 'sax') { return parsers.sax; } else { throw new Error('Invalid parser: ' + name); } } exports.get_parser = get_parser; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/elementtree.js0000664000000000000000000003174212301417627026304 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var sprintf = require('./sprintf').sprintf; var utils = require('./utils'); var ElementPath = require('./elementpath'); var TreeBuilder = require('./treebuilder').TreeBuilder; var get_parser = require('./parser').get_parser; var constants = require('./constants'); var element_ids = 0; function Element(tag, attrib) { this._id = element_ids++; this.tag = tag; this.attrib = {}; this.text = null; this.tail = null; this._children = []; if (attrib) { this.attrib = utils.merge(this.attrib, attrib); } } Element.prototype.toString = function() { return sprintf("", this.tag, this._id); }; Element.prototype.makeelement = function(tag, attrib) { return new Element(tag, attrib); }; Element.prototype.len = function() { return this._children.length; }; Element.prototype.getItem = function(index) { return this._children[index]; }; Element.prototype.setItem = function(index, element) { this._children[index] = element; }; Element.prototype.delItem = function(index) { this._children.splice(index, 1); }; Element.prototype.getSlice = function(start, stop) { return this._children.slice(start, stop); }; Element.prototype.setSlice = function(start, stop, elements) { var i; var k = 0; for (i = start; i < stop; i++, k++) { this._children[i] = elements[k]; } }; Element.prototype.delSlice = function(start, stop) { this._children.splice(start, stop - start); }; Element.prototype.append = function(element) { this._children.push(element); }; Element.prototype.extend = function(elements) { this._children.concat(elements); }; Element.prototype.insert = function(index, element) { this._children[index] = element; }; Element.prototype.remove = function(index, element) { this._children = this._children.filter(function(e) { /* TODO: is this the right way to do this? */ if (e._id === element._id) { return false; } return true; }); }; Element.prototype.getchildren = function() { return this._children; }; Element.prototype.find = function(path) { return ElementPath.find(this, path); }; Element.prototype.findtext = function(path, defvalue) { return ElementPath.findtext(this, path, defvalue); }; Element.prototype.findall = function(path, defvalue) { return ElementPath.findall(this, path, defvalue); }; Element.prototype.clear = function() { this.attrib = {}; this._children = []; this.text = null; this.tail = null; }; Element.prototype.get = function(key, defvalue) { if (this.attrib[key] !== undefined) { return this.attrib[key]; } else { return defvalue; } }; Element.prototype.set = function(key, value) { this.attrib[key] = value; }; Element.prototype.keys = function() { return Object.keys(this.attrib); }; Element.prototype.items = function() { return utils.items(this.attrib); }; /* * In python this uses a generator, but in v8 we don't have em, * so we use a callback instead. **/ Element.prototype.iter = function(tag, callback) { var self = this; var i, child; if (tag === "*") { tag = null; } if (tag === null || this.tag === tag) { callback(self); } for (i = 0; i < this._children.length; i++) { child = this._children[i]; child.iter(tag, function(e) { callback(e); }); } }; Element.prototype.itertext = function(callback) { this.iter(null, function(e) { if (e.text) { callback(e.text); } if (e.tail) { callback(e.tail); } }); }; function SubElement(parent, tag, attrib) { var element = parent.makeelement(tag, attrib); parent.append(element); return element; } function Comment(text) { var element = new Element(Comment); if (text) { element.text = text; } return element; } function ProcessingInstruction(target, text) { var element = new Element(ProcessingInstruction); element.text = target; if (text) { element.text = element.text + " " + text; } return element; } function QName(text_or_uri, tag) { if (tag) { text_or_uri = sprintf("{%s}%s", text_or_uri, tag); } this.text = text_or_uri; } QName.prototype.toString = function() { return this.text; }; function ElementTree(element) { this._root = element; } ElementTree.prototype.getroot = function() { return this._root; }; ElementTree.prototype._setroot = function(element) { this._root = element; }; ElementTree.prototype.parse = function(source, parser) { if (!parser) { parser = get_parser(constants.DEFAULT_PARSER); parser = new parser.XMLParser(new TreeBuilder()); } parser.feed(source); this._root = parser.close(); return this._root; }; ElementTree.prototype.iter = function(tag, callback) { this._root.iter(tag, callback); }; ElementTree.prototype.find = function(path) { return this._root.find(path); }; ElementTree.prototype.findtext = function(path, defvalue) { return this._root.findtext(path, defvalue); }; ElementTree.prototype.findall = function(path) { return this._root.findall(path); }; /** * Unlike ElementTree, we don't write to a file, we return you a string. */ ElementTree.prototype.write = function(options) { var sb = []; options = utils.merge({ encoding: 'utf-8', xml_declaration: null, default_namespace: null, method: 'xml'}, options); if (options.xml_declaration !== false) { sb.push("\n"); } if (options.method === "text") { _serialize_text(sb, self._root, encoding); } else { var qnames, namespaces, indent, indent_string; var x = _namespaces(this._root, options.encoding, options.default_namespace); qnames = x[0]; namespaces = x[1]; if (options.hasOwnProperty('indent')) { indent = 0; indent_string = new Array(options.indent + 1).join(' '); } else { indent = false; } if (options.method === "xml") { _serialize_xml(function(data) { sb.push(data); }, this._root, options.encoding, qnames, namespaces, indent, indent_string); } else { /* TODO: html */ throw new Error("unknown serialization method "+ options.method); } } return sb.join(""); }; var _namespace_map = { /* "well-known" namespace prefixes */ "http://www.w3.org/XML/1998/namespace": "xml", "http://www.w3.org/1999/xhtml": "html", "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf", "http://schemas.xmlsoap.org/wsdl/": "wsdl", /* xml schema */ "http://www.w3.org/2001/XMLSchema": "xs", "http://www.w3.org/2001/XMLSchema-instance": "xsi", /* dublic core */ "http://purl.org/dc/elements/1.1/": "dc", }; function register_namespace(prefix, uri) { if (/ns\d+$/.test(prefix)) { throw new Error('Prefix format reserved for internal use'); } if (_namespace_map.hasOwnProperty(uri) && _namespace_map[uri] === prefix) { delete _namespace_map[uri]; } _namespace_map[uri] = prefix; } function _escape(text, encoding, isAttribute, isText) { if (text) { text = text.toString(); text = text.replace(/&/g, '&'); text = text.replace(//g, '>'); if (!isText) { text = text.replace(/\n/g, ' '); text = text.replace(/\r/g, ' '); } if (isAttribute) { text = text.replace(/"/g, '"'); } } return text; } /* TODO: benchmark single regex */ function _escape_attrib(text, encoding) { return _escape(text, encoding, true); } function _escape_cdata(text, encoding) { return _escape(text, encoding, false); } function _escape_text(text, encoding) { return _escape(text, encoding, false, true); } function _namespaces(elem, encoding, default_namespace) { var qnames = {}; var namespaces = {}; if (default_namespace) { namespaces[default_namespace] = ""; } function encode(text) { return text; } function add_qname(qname) { if (qname[0] === "{") { var tmp = qname.substring(1).split("}", 2); var uri = tmp[0]; var tag = tmp[1]; var prefix = namespaces[uri]; if (prefix === undefined) { prefix = _namespace_map[uri]; if (prefix === undefined) { prefix = "ns" + Object.keys(namespaces).length; } if (prefix !== "xml") { namespaces[uri] = prefix; } } if (prefix) { qnames[qname] = sprintf("%s:%s", prefix, tag); } else { qnames[qname] = tag; } } else { if (default_namespace) { throw new Error('cannot use non-qualified names with default_namespace option'); } qnames[qname] = qname; } } elem.iter(null, function(e) { var i; var tag = e.tag; var text = e.text; var items = e.items(); if (tag instanceof QName && qnames[tag.text] === undefined) { add_qname(tag.text); } else if (typeof(tag) === "string") { add_qname(tag); } else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) { throw new Error('Invalid tag type for serialization: '+ tag); } if (text instanceof QName && qnames[text.text] === undefined) { add_qname(text.text); } items.forEach(function(item) { var key = item[0], value = item[1]; if (key instanceof QName) { key = key.text; } if (qnames[key] === undefined) { add_qname(key); } if (value instanceof QName && qnames[value.text] === undefined) { add_qname(value.text); } }); }); return [qnames, namespaces]; } function _serialize_xml(write, elem, encoding, qnames, namespaces, indent, indent_string) { var tag = elem.tag; var text = elem.text; var items; var i; var newlines = indent || (indent === 0); write(Array(indent + 1).join(indent_string)); if (tag === Comment) { write(sprintf("", _escape_cdata(text, encoding))); } else if (tag === ProcessingInstruction) { write(sprintf("", _escape_cdata(text, encoding))); } else { tag = qnames[tag]; if (tag === undefined) { if (text) { write(_escape_text(text, encoding)); } elem.iter(function(e) { _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string); }); } else { write("<" + tag); items = elem.items(); if (items || namespaces) { items.sort(); // lexical order items.forEach(function(item) { var k = item[0], v = item[1]; if (k instanceof QName) { k = k.text; } if (v instanceof QName) { v = qnames[v.text]; } else { v = _escape_attrib(v, encoding); } write(sprintf(" %s=\"%s\"", qnames[k], v)); }); if (namespaces) { items = utils.items(namespaces); items.sort(function(a, b) { return a[1] < b[1]; }); items.forEach(function(item) { var k = item[1], v = item[0]; if (k) { k = ':' + k; } write(sprintf(" xmlns%s=\"%s\"", k, _escape_attrib(v, encoding))); }); } } if (text || elem.len()) { if (text && text.toString().match(/^\s*$/)) { text = null; } write(">"); if (!text && newlines) { write("\n"); } if (text) { write(_escape_text(text, encoding)); } elem._children.forEach(function(e) { _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string); }); if (!text && indent) { write(Array(indent + 1).join(indent_string)); } write(""); } else { write(" />"); } } } if (newlines) { write("\n"); } } function parse(source, parser) { var tree = new ElementTree(); tree.parse(source, parser); return tree; } function tostring(element, options) { return new ElementTree(element).write(options); } exports.PI = ProcessingInstruction; exports.Comment = Comment; exports.ProcessingInstruction = ProcessingInstruction; exports.SubElement = SubElement; exports.QName = QName; exports.ElementTree = ElementTree; exports.ElementPath = ElementPath; exports.Element = function(tag, attrib) { return new Element(tag, attrib); }; exports.XML = function(data) { var et = new ElementTree(); return et.parse(data); }; exports.parse = parse; exports.register_namespace = register_namespace; exports.tostring = tostring; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/errors.js0000664000000000000000000000164212301417627025303 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var util = require('util'); var sprintf = require('./sprintf').sprintf; function SyntaxError(token, msg) { msg = msg || sprintf('Syntax Error at token %s', token.toString()); this.token = token; this.message = msg; Error.call(this, msg); } util.inherits(SyntaxError, Error); exports.SyntaxError = SyntaxError; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/treebuilder.js0000664000000000000000000000230012301417627026265 0ustar function TreeBuilder(element_factory) { this._data = []; this._elem = []; this._last = null; this._tail = null; if (!element_factory) { /* evil circular dep */ element_factory = require('./elementtree').Element; } this._factory = element_factory; } TreeBuilder.prototype.close = function() { return this._last; }; TreeBuilder.prototype._flush = function() { if (this._data) { if (this._last !== null) { var text = this._data.join(""); if (this._tail) { this._last.tail = text; } else { this._last.text = text; } } this._data = []; } }; TreeBuilder.prototype.data = function(data) { this._data.push(data); }; TreeBuilder.prototype.start = function(tag, attrs) { this._flush(); var elem = this._factory(tag, attrs); this._last = elem; if (this._elem.length) { this._elem[this._elem.length - 1].append(elem); } this._elem.push(elem); this._tail = null; }; TreeBuilder.prototype.end = function(tag) { this._flush(); this._last = this._elem.pop(); if (this._last.tag !== tag) { throw new Error("end tag mismatch"); } this._tail = 1; return this._last; }; exports.TreeBuilder = TreeBuilder; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/parsers/0000775000000000000000000000000012301420116025070 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/parsers/sax.js0000664000000000000000000000253712301417627026245 0ustar var util = require('util'); var sax = require('sax'); var TreeBuilder = require('./../treebuilder').TreeBuilder; function XMLParser(target) { this.parser = sax.parser(true); this.target = (target) ? target : new TreeBuilder(); this.parser.onopentag = this._handleOpenTag.bind(this); this.parser.ontext = this._handleText.bind(this); this.parser.oncdata = this._handleCdata.bind(this); this.parser.ondoctype = this._handleDoctype.bind(this); this.parser.oncomment = this._handleComment.bind(this); this.parser.onclosetag = this._handleCloseTag.bind(this); this.parser.onerror = this._handleError.bind(this); } XMLParser.prototype._handleOpenTag = function(tag) { this.target.start(tag.name, tag.attributes); }; XMLParser.prototype._handleText = function(text) { this.target.data(text); }; XMLParser.prototype._handleCdata = function(text) { this.target.data(text); }; XMLParser.prototype._handleDoctype = function(text) { }; XMLParser.prototype._handleComment = function(comment) { }; XMLParser.prototype._handleCloseTag = function(tag) { this.target.end(tag); }; XMLParser.prototype._handleError = function(err) { throw err; }; XMLParser.prototype.feed = function(chunk) { this.parser.write(chunk); }; XMLParser.prototype.close = function() { this.parser.close(); return this.target.close(); }; exports.XMLParser = XMLParser; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/parsers/index.js0000664000000000000000000000004012301417627026544 0ustar exports.sax = require('./sax'); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/constants.js0000664000000000000000000000124512301417627026002 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var DEFAULT_PARSER = 'sax'; exports.DEFAULT_PARSER = DEFAULT_PARSER; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/sprintf.js0000664000000000000000000000451612301417627025457 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var cache = {}; // Do any others need escaping? var TO_ESCAPE = { '\'': '\\\'', '\n': '\\n' }; function populate(formatter) { var i, type, key = formatter, prev = 0, arg = 1, builder = 'return \''; for (i = 0; i < formatter.length; i++) { if (formatter[i] === '%') { type = formatter[i + 1]; switch (type) { case 's': builder += formatter.slice(prev, i) + '\' + arguments[' + arg + '] + \''; prev = i + 2; arg++; break; case 'j': builder += formatter.slice(prev, i) + '\' + JSON.stringify(arguments[' + arg + ']) + \''; prev = i + 2; arg++; break; case '%': builder += formatter.slice(prev, i + 1); prev = i + 2; i++; break; } } else if (TO_ESCAPE[formatter[i]]) { builder += formatter.slice(prev, i) + TO_ESCAPE[formatter[i]]; prev = i + 1; } } builder += formatter.slice(prev) + '\';'; cache[key] = new Function(builder); } /** * A fast version of sprintf(), which currently only supports the %s and %j. * This caches a formatting function for each format string that is used, so * you should only use this sprintf() will be called many times with a single * format string and a limited number of format strings will ever be used (in * general this means that format strings should be string literals). * * @param {String} formatter A format string. * @param {...String} var_args Values that will be formatted by %s and %j. * @return {String} The formatted output. */ exports.sprintf = function(formatter, var_args) { if (!cache[formatter]) { populate(formatter); } return cache[formatter].apply(null, arguments); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/lib/utils.js0000664000000000000000000000275112301417627025131 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * @param {Object} hash. * @param {Array} ignored. */ function items(hash, ignored) { ignored = ignored || null; var k, rv = []; function is_ignored(key) { if (!ignored || ignored.length === 0) { return false; } return ignored.indexOf(key); } for (k in hash) { if (hash.hasOwnProperty(k) && !(is_ignored(ignored))) { rv.push([k, hash[k]]); } } return rv; } function findall(re, str) { var match, matches = []; while ((match = re.exec(str))) { matches.push(match); } return matches; } function merge(a, b) { var c = {}, attrname; for (attrname in a) { if (a.hasOwnProperty(attrname)) { c[attrname] = a[attrname]; } } for (attrname in b) { if (b.hasOwnProperty(attrname)) { c[attrname] = b[attrname]; } } return c; } exports.items = items; exports.findall = findall; exports.merge = merge; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/.travis.yml0000664000000000000000000000015612301417627024773 0ustar language: node_js node_js: - 0.6 script: make test notifications: email: - tomaz+travisci@tomaz.me cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/.npmignore0000664000000000000000000000001512301417627024653 0ustar node_modules cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/tests/0000775000000000000000000000000012301420116024005 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/tests/test-simple.js0000664000000000000000000002137712301417627026640 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var fs = require('fs'); var path = require('path'); var sprintf = require('./../lib/sprintf').sprintf; var et = require('elementtree'); var XML = et.XML; var ElementTree = et.ElementTree; var Element = et.Element; var SubElement = et.SubElement; var SyntaxError = require('./../lib/errors').SyntaxError; function readFile(name) { return fs.readFileSync(path.join(__dirname, '/data/', name), 'utf8'); } exports['test_simplest'] = function(test, assert) { /* Ported from */ var Element = et.Element; var root = Element('root'); root.append(Element('one')); root.append(Element('two')); root.append(Element('three')); assert.equal(3, root.len()); assert.equal('one', root.getItem(0).tag); assert.equal('two', root.getItem(1).tag); assert.equal('three', root.getItem(2).tag); test.finish(); }; exports['test_attribute_values'] = function(test, assert) { var XML = et.XML; var root = XML(''); assert.equal('Alpha', root.attrib['alpha']); assert.equal('Beta', root.attrib['beta']); assert.equal('Gamma', root.attrib['gamma']); test.finish(); }; exports['test_findall'] = function(test, assert) { var XML = et.XML; var root = XML(''); assert.equal(root.findall("c").length, 1); assert.equal(root.findall(".//c").length, 2); assert.equal(root.findall(".//b").length, 3); assert.equal(root.findall(".//b")[0]._children.length, 1); assert.equal(root.findall(".//b")[1]._children.length, 0); assert.equal(root.findall(".//b")[2]._children.length, 0); assert.deepEqual(root.findall('.//b')[0], root.getchildren()[0]); test.finish(); }; exports['test_find'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); var c = SubElement(a, 'c'); assert.deepEqual(a.find('./b/..'), a); test.finish(); }; exports['test_elementtree_find_qname'] = function(test, assert) { var tree = new et.ElementTree(XML('')); assert.deepEqual(tree.find(new et.QName('c')), tree.getroot()._children[2]); test.finish(); }; exports['test_attrib_ns_clear'] = function(test, assert) { var attribNS = '{http://foo/bar}x'; var par = Element('par'); par.set(attribNS, 'a'); var child = SubElement(par, 'child'); child.set(attribNS, 'b'); assert.equal('a', par.get(attribNS)); assert.equal('b', child.get(attribNS)); par.clear(); assert.equal(null, par.get(attribNS)); assert.equal('b', child.get(attribNS)); test.finish(); }; exports['test_create_tree_and_parse_simple'] = function(test, assert) { var i = 0; var e = new Element('bar', {}); var expected = "\n" + 'ponies'; SubElement(e, "blah", {a: 11}); SubElement(e, "blah", {a: 12}); var se = et.SubElement(e, "gag", {a: '13', b: 'abc'}); se.text = 'ponies'; se.itertext(function(text) { assert.equal(text, 'ponies'); i++; }); assert.equal(i, 1); var etree = new ElementTree(e); var xml = etree.write(); assert.equal(xml, expected); test.finish(); }; exports['test_write_with_options'] = function(test, assert) { var i = 0; var e = new Element('bar', {}); var expected1 = "\n" + '\n' + ' \n' + ' test\n' + ' \n' + ' \n' + ' ponies\n' + '\n'; var expected2 = "\n" + '\n' + ' \n' + ' test\n' + ' \n' + ' \n' + ' ponies\n' + '\n'; var expected3 = "\n" + '\n' + ' \n' + ' Hello World\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' Test & Test & Test\n' + ' \n' + '\n'; var se1 = SubElement(e, "blah", {a: 11}); var se2 = SubElement(se1, "baz", {d: 11}); se2.text = 'test'; SubElement(e, "blah", {a: 12}); var se = et.SubElement(e, "gag", {a: '13', b: 'abc'}); se.text = 'ponies'; se.itertext(function(text) { assert.equal(text, 'ponies'); i++; }); assert.equal(i, 1); var etree = new ElementTree(e); var xml1 = etree.write({'indent': 4}); var xml2 = etree.write({'indent': 2}); assert.equal(xml1, expected1); assert.equal(xml2, expected2); var file = readFile('xml2.xml'); var etree2 = et.parse(file); var xml3 = etree2.write({'indent': 4}); assert.equal(xml3, expected3); test.finish(); }; exports['test_parse_and_find_2'] = function(test, assert) { var data = readFile('xml1.xml'); var etree = et.parse(data); assert.equal(etree.findall('./object').length, 2); assert.equal(etree.findall('[@name]').length, 1); assert.equal(etree.findall('[@name="test_container_1"]').length, 1); assert.equal(etree.findall('[@name=\'test_container_1\']').length, 1); assert.equal(etree.findall('./object')[0].findtext('name'), 'test_object_1'); assert.equal(etree.findtext('./object/name'), 'test_object_1'); assert.equal(etree.findall('.//bytes').length, 2); assert.equal(etree.findall('*/bytes').length, 2); assert.equal(etree.findall('*/foobar').length, 0); test.finish(); }; exports['test_namespaced_attribute'] = function(test, assert) { var data = readFile('xml1.xml'); var etree = et.parse(data); assert.equal(etree.findall('*/bytes[@android:type="cool"]').length, 1); test.finish(); } exports['test_syntax_errors'] = function(test, assert) { var expressions = [ './/@bar', '[@bar', '[@foo=bar]', '[@', '/bar' ]; var errCount = 0; var data = readFile('xml1.xml'); var etree = et.parse(data); expressions.forEach(function(expression) { try { etree.findall(expression); } catch (err) { errCount++; } }); assert.equal(errCount, expressions.length); test.finish(); }; exports['test_register_namespace'] = function(test, assert){ var prefix = 'TESTPREFIX'; var namespace = 'http://seriously.unknown/namespace/URI'; var errCount = 0; var etree = Element(sprintf('{%s}test', namespace)); assert.equal(et.tostring(etree, { 'xml_declaration': false}), sprintf('', namespace)); et.register_namespace(prefix, namespace); var etree = Element(sprintf('{%s}test', namespace)); assert.equal(et.tostring(etree, { 'xml_declaration': false}), sprintf('<%s:test xmlns:%s="%s" />', prefix, prefix, namespace)); try { et.register_namespace('ns25', namespace); } catch (err) { errCount++; } assert.equal(errCount, 1, 'Reserved prefix used, but exception was not thrown'); test.finish(); }; exports['test_tostring'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); var c = SubElement(a, 'c'); c.text = 543; assert.equal(et.tostring(a, { 'xml_declaration': false }), '543'); assert.equal(et.tostring(c, { 'xml_declaration': false }), '543'); test.finish(); }; exports['test_escape'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); b.text = '&&&&<>"\n\r'; assert.equal(et.tostring(a, { 'xml_declaration': false }), '&&&&<>\"\n\r'); test.finish(); }; exports['test_find_null'] = function(test, assert) { var root = Element('root'); var node = SubElement(root, 'node'); var leaf = SubElement(node, 'leaf'); leaf.text = 'ipsum'; assert.equal(root.find('node/leaf'), leaf); assert.equal(root.find('no-such-node/leaf'), null); test.finish(); }; exports['test_findtext_null'] = function(test, assert) { var root = Element('root'); var node = SubElement(root, 'node'); var leaf = SubElement(node, 'leaf'); leaf.text = 'ipsum'; assert.equal(root.findtext('node/leaf'), 'ipsum'); assert.equal(root.findtext('no-such-node/leaf'), null); test.finish(); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/tests/data/0000775000000000000000000000000012301420116024716 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/tests/data/xml1.xml0000664000000000000000000000122612301417627026337 0ustar dd test_object_1 4281c348eaf83e70ddce0e07221c3d28 14 application/octetstream 2009-02-03T05:26:32.612278 test_object_2 b039efe731ad111bc1b0ef221c3849d0 64 application/octetstream 2009-02-03T05:26:32.612278 cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/tests/data/xml2.xml0000664000000000000000000000041212301417627026334 0ustar Hello World cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/elementtree/Makefile0000775000000000000000000000102312301417627024317 0ustar TESTS := \ tests/test-simple.js PATH := ./node_modules/.bin:$(PATH) WHISKEY := $(shell bash -c 'PATH=$(PATH) type -p whiskey') default: test test: NODE_PATH=`pwd`/lib/ ${WHISKEY} --scope-leaks --sequential --real-time --tests "${TESTS}" tap: NODE_PATH=`pwd`/lib/ ${WHISKEY} --test-reporter tap --sequential --real-time --tests "${TESTS}" coverage: NODE_PATH=`pwd`/lib/ ${WHISKEY} --sequential --coverage --coverage-reporter html --coverage-dir coverage_html --tests "${TESTS}" .PHONY: default test coverage tap scope cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/0000775000000000000000000000000012301420116022202 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/package.json0000664000000000000000000002711212301417627024510 0ustar { "name": "optimist", "version": "0.6.0", "description": "Light-weight option parsing with an argv hash. No optstrings attached.", "main": "./index.js", "dependencies": { "wordwrap": "~0.0.2", "minimist": "~0.0.1" }, "devDependencies": { "hashish": "~0.0.4", "tap": "~0.4.0" }, "scripts": { "test": "tap ./test/*.js" }, "repository": { "type": "git", "url": "http://github.com/substack/node-optimist.git" }, "keywords": [ "argument", "args", "option", "parser", "parsing", "cli", "command" ], "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "license": "MIT/X11", "engine": { "node": ">=0.4" }, "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", "readmeFilename": "readme.markdown", "bugs": { "url": "https://github.com/substack/node-optimist/issues" }, "_id": "optimist@0.6.0", "dist": { "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200" }, "_from": "optimist@0.6.0", "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/0000775000000000000000000000000012301420116023635 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/line_count_wrap.js0000664000000000000000000000136712301417627027407 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .wrap(80) .demand('f') .alias('f', [ 'file', 'filename' ]) .describe('f', "Load a file. It's pretty important." + " Required even. So you'd better specify it." ) .alias('b', 'base') .describe('b', 'Numeric base to display the number of lines in') .default('b', 10) .describe('x', 'Super-secret optional parameter which is secret') .default('x', '') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines.toString(argv.base)); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/line_count.js0000664000000000000000000000063112301417627026347 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .demand('f') .alias('f', 'file') .describe('f', 'Load a file') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/boolean_single.js0000664000000000000000000000017312301417627027171 0ustar #!/usr/bin/env node var argv = require('optimist') .boolean('v') .argv ; console.dir(argv.v); console.dir(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/string.js0000664000000000000000000000033112301417627025513 0ustar #!/usr/bin/env node var argv = require('optimist') .string('x', 'y') .argv ; console.dir([ argv.x, argv.y ]); /* Turns off numeric coercion: ./node string.js -x 000123 -y 9876 [ '000123', '9876' ] */ cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/short.js0000664000000000000000000000014112301417627025343 0ustar #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/default_singles.js0000664000000000000000000000021112301417627027352 0ustar #!/usr/bin/env node var argv = require('optimist') .default('x', 10) .default('y', 10) .argv ; console.log(argv.x + argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/line_count_options.js0000664000000000000000000000117312301417627030124 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .options({ file : { demand : true, alias : 'f', description : 'Load a file' }, base : { alias : 'b', description : 'Numeric base to use for output', default : 10, }, }) .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines.toString(argv.base)); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/xup.js0000664000000000000000000000030112301417627025016 0ustar #!/usr/bin/env node var argv = require('optimist').argv; if (argv.rif - 5 * argv.xup > 7.138) { console.log('Buy more riffiwobbles'); } else { console.log('Sell the xupptumblers'); } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/reflect.js0000664000000000000000000000007312301417627025634 0ustar #!/usr/bin/env node console.dir(require('optimist').argv); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/usage-options.js0000664000000000000000000000067012301417627027010 0ustar var optimist = require('./../index'); var argv = optimist.usage('This is my awesome program', { 'about': { description: 'Provide some details about the author of this program', required: true, short: 'a', }, 'info': { description: 'Provide some information about the node.js agains!!!!!!', boolean: true, short: 'i' } }).argv; optimist.showHelp(); console.log('\n\nInspecting options'); console.dir(argv);cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/bool.js0000664000000000000000000000035312301417627025144 0ustar #!/usr/bin/env node var util = require('util'); var argv = require('optimist').argv; if (argv.s) { util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); } console.log( (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') ); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/divide.js0000664000000000000000000000023712301417627025456 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Usage: $0 -x [num] -y [num]') .demand(['x','y']) .argv; console.log(argv.x / argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/default_hash.js0000664000000000000000000000020012301417627026627 0ustar #!/usr/bin/env node var argv = require('optimist') .default({ x : 10, y : 10 }) .argv ; console.log(argv.x + argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/nonopt.js0000664000000000000000000000016612301417627025530 0ustar #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); console.log(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/example/boolean_double.js0000664000000000000000000000023112301417627027155 0ustar #!/usr/bin/env node var argv = require('optimist') .boolean(['x','y','z']) .argv ; console.dir([ argv.x, argv.y, argv.z ]); console.dir(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/readme.markdown0000664000000000000000000002401412301417627025221 0ustar optimist ======== Optimist is a node.js library for option parsing for people who hate option parsing. More specifically, this module is for people who like all the --bells and -whistlz of program usage but think optstrings are a waste of time. With optimist, option parsing doesn't have to suck (as much). [![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) examples ======== With Optimist, the options are just a hash! No optstrings attached. ------------------------------------------------------------------- xup.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; if (argv.rif - 5 * argv.xup > 7.138) { console.log('Buy more riffiwobbles'); } else { console.log('Sell the xupptumblers'); } ```` *** $ ./xup.js --rif=55 --xup=9.52 Buy more riffiwobbles $ ./xup.js --rif 12 --xup 8.1 Sell the xupptumblers ![This one's optimistic.](http://substack.net/images/optimistic.png) But wait! There's more! You can do short options: ------------------------------------------------- short.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); ```` *** $ ./short.js -x 10 -y 21 (10,21) And booleans, both long and short (and grouped): ---------------------------------- bool.js: ````javascript #!/usr/bin/env node var util = require('util'); var argv = require('optimist').argv; if (argv.s) { util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); } console.log( (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') ); ```` *** $ ./bool.js -s The cat says: meow $ ./bool.js -sp The cat says: meow. $ ./bool.js -sp --fr Le chat dit: miaou. And non-hypenated options too! Just use `argv._`! ------------------------------------------------- nonopt.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); console.log(argv._); ```` *** $ ./nonopt.js -x 6.82 -y 3.35 moo (6.82,3.35) [ 'moo' ] $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz (0.54,1.12) [ 'foo', 'bar', 'baz' ] Plus, Optimist comes with .usage() and .demand()! ------------------------------------------------- divide.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .usage('Usage: $0 -x [num] -y [num]') .demand(['x','y']) .argv; console.log(argv.x / argv.y); ```` *** $ ./divide.js -x 55 -y 11 5 $ node ./divide.js -x 4.91 -z 2.51 Usage: node ./divide.js -x [num] -y [num] Options: -x [required] -y [required] Missing required arguments: y EVEN MORE HOLY COW ------------------ default_singles.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .default('x', 10) .default('y', 10) .argv ; console.log(argv.x + argv.y); ```` *** $ ./default_singles.js -x 5 15 default_hash.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .default({ x : 10, y : 10 }) .argv ; console.log(argv.x + argv.y); ```` *** $ ./default_hash.js -y 7 17 And if you really want to get all descriptive about it... --------------------------------------------------------- boolean_single.js ````javascript #!/usr/bin/env node var argv = require('optimist') .boolean('v') .argv ; console.dir(argv); ```` *** $ ./boolean_single.js -v foo bar baz true [ 'bar', 'baz', 'foo' ] boolean_double.js ````javascript #!/usr/bin/env node var argv = require('optimist') .boolean(['x','y','z']) .argv ; console.dir([ argv.x, argv.y, argv.z ]); console.dir(argv._); ```` *** $ ./boolean_double.js -x -z one two three [ true, false, true ] [ 'one', 'two', 'three' ] Optimist is here to help... --------------------------- You can describe parameters for help messages and set aliases. Optimist figures out how to format a handy help string automatically. line_count.js ````javascript #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .demand('f') .alias('f', 'file') .describe('f', 'Load a file') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines); }); ```` *** $ node line_count.js Count the lines in a file. Usage: node ./line_count.js Options: -f, --file Load a file [required] Missing required arguments: f $ node line_count.js --file line_count.js 20 $ node line_count.js -f line_count.js 20 methods ======= By itself, ````javascript require('optimist').argv ````` will use `process.argv` array to construct the `argv` object. You can pass in the `process.argv` yourself: ````javascript require('optimist')([ '-x', '1', '-y', '2' ]).argv ```` or use .parse() to do the same thing: ````javascript require('optimist').parse([ '-x', '1', '-y', '2' ]) ```` The rest of these methods below come in just before the terminating `.argv`. .alias(key, alias) ------------------ Set key names as equivalent such that updates to a key will propagate to aliases and vice-versa. Optionally `.alias()` can take an object that maps keys to aliases. .default(key, value) -------------------- Set `argv[key]` to `value` if no option was specified on `process.argv`. Optionally `.default()` can take an object that maps keys to default values. .demand(key) ------------ If `key` is a string, show the usage information and exit if `key` wasn't specified in `process.argv`. If `key` is a number, demand at least as many non-option arguments, which show up in `argv._`. If `key` is an Array, demand each element. .describe(key, desc) -------------------- Describe a `key` for the generated usage information. Optionally `.describe()` can take an object that maps keys to descriptions. .options(key, opt) ------------------ Instead of chaining together `.alias().demand().default()`, you can specify keys in `opt` for each of the chainable methods. For example: ````javascript var argv = require('optimist') .options('f', { alias : 'file', default : '/etc/passwd', }) .argv ; ```` is the same as ````javascript var argv = require('optimist') .alias('f', 'file') .default('f', '/etc/passwd') .argv ; ```` Optionally `.options()` can take an object that maps keys to `opt` parameters. .usage(message) --------------- Set a usage message to show which commands to use. Inside `message`, the string `$0` will get interpolated to the current script name or node command for the present script similar to how `$0` works in bash or perl. .check(fn) ---------- Check that certain conditions are met in the provided arguments. If `fn` throws or returns `false`, show the thrown error, usage information, and exit. .boolean(key) ------------- Interpret `key` as a boolean. If a non-flag option follows `key` in `process.argv`, that string won't get set as the value of `key`. If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be `false`. If `key` is an Array, interpret all the elements as booleans. .string(key) ------------ Tell the parser logic not to interpret `key` as a number or boolean. This can be useful if you need to preserve leading zeros in an input. If `key` is an Array, interpret all the elements as strings. .wrap(columns) -------------- Format usage output to wrap at `columns` many columns. .help() ------- Return the generated usage string. .showHelp(fn=console.error) --------------------------- Print the usage data using `fn` for printing. .parse(args) ------------ Parse `args` instead of `process.argv`. Returns the `argv` object. .argv ----- Get the arguments as a plain old object. Arguments without a corresponding flag show up in the `argv._` array. The script name or node command is available at `argv.$0` similarly to how `$0` works in bash or perl. parsing tricks ============== stop parsing ------------ Use `--` to stop parsing flags and stuff the remainder into `argv._`. $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 { _: [ '-c', '3', '-d', '4' ], '$0': 'node ./examples/reflect.js', a: 1, b: 2 } negate fields ------------- If you want to explicity set a field to false instead of just leaving it undefined or to override a default you can do `--no-key`. $ node examples/reflect.js -a --no-b { _: [], '$0': 'node ./examples/reflect.js', a: true, b: false } numbers ------- Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to one. This way you can just `net.createConnection(argv.port)` and you can add numbers out of `argv` with `+` without having that mean concatenation, which is super frustrating. duplicates ---------- If you specify a flag multiple times it will get turned into an array containing all the values in order. $ node examples/reflect.js -x 5 -x 8 -x 0 { _: [], '$0': 'node ./examples/reflect.js', x: [ 5, 8, 0 ] } dot notation ------------ When you use dots (`.`s) in argument names, an implicit object path is assumed. This lets you organize arguments into nested objects. $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 { _: [], '$0': 'node ./examples/reflect.js', foo: { bar: { baz: 33 }, quux: 5 } } short numbers ------------- Short numeric `head -n5` style argument work too: $ node reflect.js -n123 -m456 { '3': true, '6': true, _: [], '$0': 'node ./reflect.js', n: 123, m: 456 } installation ============ With [npm](http://github.com/isaacs/npm), just do: npm install optimist or clone this project on github: git clone http://github.com/substack/node-optimist.git To run the tests with [expresso](http://github.com/visionmedia/expresso), just do: expresso inspired By =========== This module is loosely inspired by Perl's [Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/LICENSE0000664000000000000000000000216512301417627023230 0ustar Copyright 2010 James Halliday (mail@substack.net) This project is free software released under the MIT/X11 license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/0000775000000000000000000000000012301420116024657 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/0000775000000000000000000000000012301420116026510 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/package.jsoncordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/package.js0000664000000000000000000000524112301417627030460 0ustar { "name": "minimist", "version": "0.0.5", "description": "parse argument options", "main": "index.js", "devDependencies": { "tape": "~1.0.4", "tap": "~0.4.0" }, "scripts": { "test": "tap test/*.js" }, "testling": { "files": "test/*.js", "browsers": [ "ie/6..latest", "ff/5", "firefox/latest", "chrome/10", "chrome/latest", "safari/5.1", "safari/latest", "opera/12" ] }, "repository": { "type": "git", "url": "git://github.com/substack/minimist.git" }, "homepage": "https://github.com/substack/minimist", "keywords": [ "argv", "getopt", "parser", "optimist" ], "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "license": "MIT", "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", "readmeFilename": "readme.markdown", "bugs": { "url": "https://github.com/substack/minimist/issues" }, "_id": "minimist@0.0.5", "_from": "minimist@~0.0.1" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/example/0000775000000000000000000000000012301420116030143 5ustar ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/example/parse.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/example/pa0000664000000000000000000000010512301417627030477 0ustar var argv = require('../')(process.argv.slice(2)); console.dir(argv); ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/readme.markdowncordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/readme.mar0000664000000000000000000000314712301417627030470 0ustar # minimist parse argument options This module is the guts of optimist's argument parser without all the fanciful decoration. [![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) [![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) # example ``` js var argv = require('minimist')(process.argv.slice(2)); console.dir(argv); ``` ``` $ node example/parse.js -a beep -b boop { _: [], a: 'beep', b: 'boop' } ``` ``` $ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz { _: [ 'foo', 'bar', 'baz' ], x: 3, y: 4, n: 5, a: true, b: true, c: true, beep: 'boop' } ``` # methods ``` js var parseArgs = require('minimist') ``` ## var argv = parseArgs(args, opts={}) Return an argument object `argv` populated with the array arguments from `args`. `argv._` contains all the arguments that didn't have an option associated with them. Numeric-looking arguments will be returned as numbers unless `opts.string` or `opts.boolean` is set for that argument name. Any arguments after `'--'` will not be parsed and will end up in `argv._`. options can be: * `opts.string` - a string or array of strings argument names to always treat as strings * `opts.boolean` - a string or array of strings to always treat as booleans * `opts.alias` - an object mapping string names to strings or arrays of string argument names to use as aliases * `opts.default` - an object mapping string argument names to default values # install With [npm](https://npmjs.org) do: ``` npm install minimist ``` # license MIT cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/LICENSE0000664000000000000000000000206112301417627027531 0ustar This software is released under the MIT license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/index.js0000664000000000000000000001311212301417627030170 0ustar module.exports = function (args, opts) { if (!opts) opts = {}; var flags = { bools : {}, strings : {} }; [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { flags.bools[key] = true; }); [].concat(opts.string).filter(Boolean).forEach(function (key) { flags.strings[key] = true; }); var aliases = {}; Object.keys(opts.alias || {}).forEach(function (key) { aliases[key] = [].concat(opts.alias[key]); aliases[key].forEach(function (x) { aliases[x] = [key].concat(aliases[key].filter(function (y) { return x !== y; })); }); }); var defaults = opts['default'] || {}; var argv = { _ : [] }; Object.keys(flags.bools).forEach(function (key) { setArg(key, defaults[key] === undefined ? false : defaults[key]); }); var notFlags = []; if (args.indexOf('--') !== -1) { notFlags = args.slice(args.indexOf('--')+1); args = args.slice(0, args.indexOf('--')); } function setArg (key, val) { var value = !flags.strings[key] && isNumber(val) ? Number(val) : val ; setKey(argv, key.split('.'), value); (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), value); }); } for (var i = 0; i < args.length; i++) { var arg = args[i]; if (arg.match(/^--.+=/)) { // Using [\s\S] instead of . because js doesn't support the // 'dotall' regex modifier. See: // http://stackoverflow.com/a/1068308/13216 var m = arg.match(/^--([^=]+)=([\s\S]*)$/); setArg(m[1], m[2]); } else if (arg.match(/^--no-.+/)) { var key = arg.match(/^--no-(.+)/)[1]; setArg(key, false); } else if (arg.match(/^--.+/)) { var key = arg.match(/^--(.+)/)[1]; var next = args[i + 1]; if (next !== undefined && !next.match(/^-/) && !flags.bools[key] && (aliases[key] ? !flags.bools[aliases[key]] : true)) { setArg(key, next); i++; } else if (/^(true|false)$/.test(next)) { setArg(key, next === 'true'); i++; } else { setArg(key, true); } } else if (arg.match(/^-[^-]+/)) { var letters = arg.slice(1,-1).split(''); var broken = false; for (var j = 0; j < letters.length; j++) { var next = arg.slice(j+2); if (letters[j+1] && letters[j+1] === '=') { setArg(letters[j], arg.slice(j+3)); broken = true; break; } if (next === '-') { setArg(letters[j], next) continue; } if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { setArg(letters[j], next); broken = true; break; } if (letters[j+1] && letters[j+1].match(/\W/)) { setArg(letters[j], arg.slice(j+2)); broken = true; break; } else { setArg(letters[j], true); } } var key = arg.slice(-1)[0]; if (!broken && key !== '-') { if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) && !flags.bools[key] && (aliases[key] ? !flags.bools[aliases[key]] : true)) { setArg(key, args[i+1]); i++; } else if (args[i+1] && /true|false/.test(args[i+1])) { setArg(key, args[i+1] === 'true'); i++; } else { setArg(key, true); } } } else { argv._.push( flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) ); } } Object.keys(defaults).forEach(function (key) { if (!hasKey(argv, key.split('.'))) { setKey(argv, key.split('.'), defaults[key]); (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), defaults[key]); }); } }); notFlags.forEach(function(key) { argv._.push(key); }); return argv; }; function hasKey (obj, keys) { var o = obj; keys.slice(0,-1).forEach(function (key) { o = (o[key] || {}); }); var key = keys[keys.length - 1]; return key in o; } function setKey (obj, keys, value) { var o = obj; keys.slice(0,-1).forEach(function (key) { if (o[key] === undefined) o[key] = {}; o = o[key]; }); var key = keys[keys.length - 1]; if (o[key] === undefined || typeof o[key] === 'boolean') { o[key] = value; } else if (Array.isArray(o[key])) { o[key].push(value); } else { o[key] = [ o[key], value ]; } } function isNumber (x) { if (typeof x === 'number') return true; if (/^0x[0-9a-f]+$/i.test(x)) return true; return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); } function longest (xs) { return Math.max.apply(null, xs.map(function (x) { return x.length })); } ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/.travis.ymlcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/.travis.ym0000664000000000000000000000006012301417627030456 0ustar language: node_js node_js: - "0.8" - "0.10" cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/0000775000000000000000000000000012301420116027467 5ustar ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/parse.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/parse0000664000000000000000000001562712301417627030554 0ustar var parse = require('../'); var test = require('tape'); test('parse args', function (t) { t.deepEqual( parse([ '--no-moo' ]), { moo : false, _ : [] }, 'no' ); t.deepEqual( parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), { v : ['a','b','c'], _ : [] }, 'multi' ); t.end(); }); test('comprehensive', function (t) { t.deepEqual( parse([ '--name=meowmers', 'bare', '-cats', 'woo', '-h', 'awesome', '--multi=quux', '--key', 'value', '-b', '--bool', '--no-meep', '--multi=baz', '--', '--not-a-flag', 'eek' ]), { c : true, a : true, t : true, s : 'woo', h : 'awesome', b : true, bool : true, key : 'value', multi : [ 'quux', 'baz' ], meep : false, name : 'meowmers', _ : [ 'bare', '--not-a-flag', 'eek' ] } ); t.end(); }); test('nums', function (t) { var argv = parse([ '-x', '1234', '-y', '5.67', '-z', '1e7', '-w', '10f', '--hex', '0xdeadbeef', '789' ]); t.deepEqual(argv, { x : 1234, y : 5.67, z : 1e7, w : '10f', hex : 0xdeadbeef, _ : [ 789 ] }); t.deepEqual(typeof argv.x, 'number'); t.deepEqual(typeof argv.y, 'number'); t.deepEqual(typeof argv.z, 'number'); t.deepEqual(typeof argv.w, 'string'); t.deepEqual(typeof argv.hex, 'number'); t.deepEqual(typeof argv._[0], 'number'); t.end(); }); test('flag boolean', function (t) { var argv = parse([ '-t', 'moo' ], { boolean: 't' }); t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('flag boolean value', function (t) { var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { boolean: [ 't', 'verbose' ], default: { verbose: true } }); t.deepEqual(argv, { verbose: false, t: true, _: ['moo'] }); t.deepEqual(typeof argv.verbose, 'boolean'); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('flag boolean default false', function (t) { var argv = parse(['moo'], { boolean: ['t', 'verbose'], default: { verbose: false, t: false } }); t.deepEqual(argv, { verbose: false, t: false, _: ['moo'] }); t.deepEqual(typeof argv.verbose, 'boolean'); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('boolean groups', function (t) { var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { boolean: ['x','y','z'] }); t.deepEqual(argv, { x : true, y : false, z : true, _ : [ 'one', 'two', 'three' ] }); t.deepEqual(typeof argv.x, 'boolean'); t.deepEqual(typeof argv.y, 'boolean'); t.deepEqual(typeof argv.z, 'boolean'); t.end(); }); test('newlines in params' , function (t) { var args = parse([ '-s', "X\nX" ]) t.deepEqual(args, { _ : [], s : "X\nX" }); // reproduce in bash: // VALUE="new // line" // node program.js --s="$VALUE" args = parse([ "--s=X\nX" ]) t.deepEqual(args, { _ : [], s : "X\nX" }); t.end(); }); test('strings' , function (t) { var s = parse([ '-s', '0001234' ], { string: 's' }).s; t.equal(s, '0001234'); t.equal(typeof s, 'string'); var x = parse([ '-x', '56' ], { string: 'x' }).x; t.equal(x, '56'); t.equal(typeof x, 'string'); t.end(); }); test('stringArgs', function (t) { var s = parse([ ' ', ' ' ], { string: '_' })._; t.same(s.length, 2); t.same(typeof s[0], 'string'); t.same(s[0], ' '); t.same(typeof s[1], 'string'); t.same(s[1], ' '); t.end(); }); test('slashBreak', function (t) { t.same( parse([ '-I/foo/bar/baz' ]), { I : '/foo/bar/baz', _ : [] } ); t.same( parse([ '-xyz/foo/bar/baz' ]), { x : true, y : true, z : '/foo/bar/baz', _ : [] } ); t.end(); }); test('alias', function (t) { var argv = parse([ '-f', '11', '--zoom', '55' ], { alias: { z: 'zoom' } }); t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.f, 11); t.end(); }); test('multiAlias', function (t) { var argv = parse([ '-f', '11', '--zoom', '55' ], { alias: { z: [ 'zm', 'zoom' ] } }); t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.z, argv.zm); t.equal(argv.f, 11); t.end(); }); test('nested dotted objects', function (t) { var argv = parse([ '--foo.bar', '3', '--foo.baz', '4', '--foo.quux.quibble', '5', '--foo.quux.o_O', '--beep.boop' ]); t.same(argv.foo, { bar : 3, baz : 4, quux : { quibble : 5, o_O : true } }); t.same(argv.beep, { boop : true }); t.end(); }); test('boolean and alias with chainable api', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = parse(aliased, { boolean: 'herp', alias: { h: 'herp' } }); var propertyArgv = parse(regular, { boolean: 'herp', alias: { h: 'herp' } }); var expected = { herp: true, h: true, '_': [ 'derp' ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias with options hash', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { alias: { 'h': 'herp' }, boolean: 'herp' }; var aliasedArgv = parse(aliased, opts); var propertyArgv = parse(regular, opts); var expected = { herp: true, h: true, '_': [ 'derp' ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias using explicit true', function (t) { var aliased = [ '-h', 'true' ]; var regular = [ '--herp', 'true' ]; var opts = { alias: { h: 'herp' }, boolean: 'h' }; var aliasedArgv = parse(aliased, opts); var propertyArgv = parse(regular, opts); var expected = { herp: true, h: true, '_': [ ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); // regression, see https://github.com/substack/node-optimist/issues/71 test('boolean and --x=true', function(t) { var parsed = parse(['--boool', '--other=true'], { boolean: 'boool' }); t.same(parsed.boool, true); t.same(parsed.other, 'true'); parsed = parse(['--boool', '--other=false'], { boolean: 'boool' }); t.same(parsed.boool, true); t.same(parsed.other, 'false'); t.end(); }); ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/short.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/short0000664000000000000000000000375412301417627030577 0ustar var parse = require('../'); var test = require('tape'); test('numeric short args', function (t) { t.plan(2); t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); t.deepEqual( parse([ '-123', '456' ]), { 1: true, 2: true, 3: 456, _: [] } ); }); test('short', function (t) { t.deepEqual( parse([ '-b' ]), { b : true, _ : [] }, 'short boolean' ); t.deepEqual( parse([ 'foo', 'bar', 'baz' ]), { _ : [ 'foo', 'bar', 'baz' ] }, 'bare' ); t.deepEqual( parse([ '-cats' ]), { c : true, a : true, t : true, s : true, _ : [] }, 'group' ); t.deepEqual( parse([ '-cats', 'meow' ]), { c : true, a : true, t : true, s : 'meow', _ : [] }, 'short group next' ); t.deepEqual( parse([ '-h', 'localhost' ]), { h : 'localhost', _ : [] }, 'short capture' ); t.deepEqual( parse([ '-h', 'localhost', '-p', '555' ]), { h : 'localhost', p : 555, _ : [] }, 'short captures' ); t.end(); }); test('mixed short bool and capture', function (t) { t.same( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ] } ); t.end(); }); test('short and long', function (t) { t.deepEqual( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ] } ); t.end(); }); test('-a=b', function (t) { t.plan(2); t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' }); t.deepEqual( parse([ '-abn=smth' ]), { _: [], a: true, b: true, n: 'smth' } ); }); test('-a =b', function (t) { t.plan(2); t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' }); t.deepEqual( parse([ '-abn', '=smth' ]), { _: [], a: true, b: true, n: '=smth' } ); }); ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/default_bool.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/defau0000664000000000000000000000070612301417627030516 0ustar var test = require('tape'); var parse = require('../'); test('boolean default true', function (t) { var argv = parse([], { boolean: 'sometrue', default: { sometrue: true } }); t.equal(argv.sometrue, true); t.end(); }); test('boolean default false', function (t) { var argv = parse([], { boolean: 'somefalse', default: { somefalse: false } }); t.equal(argv.somefalse, false); t.end(); }); ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/long.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/long.0000664000000000000000000000141312301417627030443 0ustar var test = require('tape'); var parse = require('../'); test('long opts', function (t) { t.deepEqual( parse([ '--bool' ]), { bool : true, _ : [] }, 'long boolean' ); t.deepEqual( parse([ '--pow', 'xixxle' ]), { pow : 'xixxle', _ : [] }, 'long capture sp' ); t.deepEqual( parse([ '--pow=xixxle' ]), { pow : 'xixxle', _ : [] }, 'long capture eq' ); t.deepEqual( parse([ '--host', 'localhost', '--port', '555' ]), { host : 'localhost', port : 555, _ : [] }, 'long captures sp' ); t.deepEqual( parse([ '--host=localhost', '--port=555' ]), { host : 'localhost', port : 555, _ : [] }, 'long captures eq' ); t.end(); }); ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/dotted.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/dotte0000664000000000000000000000067112301417627030552 0ustar var parse = require('../'); var test = require('tape'); test('dotted alias', function (t) { var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); t.equal(argv.a.b, 22); t.equal(argv.aa.bb, 22); t.end(); }); test('dotted default', function (t) { var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); t.equal(argv.a.b, 11); t.equal(argv.aa.bb, 11); t.end(); }); ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/whitespace.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/white0000664000000000000000000000027712301417627030555 0ustar var parse = require('../'); var test = require('tape'); test('whitespace should be whitespace' , function (t) { t.plan(1); var x = parse([ '-x', '\t' ]).x; t.equal(x, '\t'); }); ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/parse_modified.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/parse0000664000000000000000000000036012301417627030540 0ustar var parse = require('../'); var test = require('tape'); test('parse with modifier functions' , function (t) { t.plan(1); var argv = parse([ '-b', '123' ], { boolean: 'b' }); t.deepEqual(argv, { b: true, _: ['123'] }); }); ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/dash.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/minimist/test/dash.0000664000000000000000000000132612301417627030426 0ustar var parse = require('../'); var test = require('tape'); test('-', function (t) { t.plan(5); t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); t.deepEqual( parse([ '-b', '-' ], { boolean: 'b' }), { b: true, _: [ '-' ] } ); t.deepEqual( parse([ '-s', '-' ], { string: 's' }), { s: '-', _: [] } ); }); test('-a -- b', function (t) { t.plan(3); t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/0000775000000000000000000000000012301420116026524 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/package.jsoncordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/package.js0000664000000000000000000000536012301417627030476 0ustar { "name": "wordwrap", "description": "Wrap those words. Show them at what columns to start and stop.", "version": "0.0.2", "repository": { "type": "git", "url": "git://github.com/substack/node-wordwrap.git" }, "main": "./index.js", "keywords": [ "word", "wrap", "rule", "format", "column" ], "directories": { "lib": ".", "example": "example", "test": "test" }, "scripts": { "test": "expresso" }, "devDependencies": { "expresso": "=0.7.x" }, "engines": { "node": ">=0.4.0" }, "license": "MIT/X11", "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "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", "readmeFilename": "README.markdown", "bugs": { "url": "https://github.com/substack/node-wordwrap/issues" }, "_id": "wordwrap@0.0.2", "_from": "wordwrap@~0.0.2" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/example/0000775000000000000000000000000012301420116030157 5ustar ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/example/center.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/example/ce0000664000000000000000000000056612301417627030515 0ustar var wrap = require('wordwrap')(20, 60); console.log(wrap( 'At long last the struggle and tumult was over.' + ' The machines had finally cast off their oppressors' + ' and were finally free to roam the cosmos.' + '\n' + 'Free of purpose, free of obligation.' + ' Just drifting through emptiness.' + ' The sun was just another point of light.' )); ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/example/meat.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/example/me0000664000000000000000000000015312301417627030517 0ustar var wrap = require('wordwrap')(15); console.log(wrap('You and your whole family are made out of meat.')); ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/README.markdowncordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/README.mar0000664000000000000000000000344312301417627030203 0ustar wordwrap ======== Wrap your words. example ======= made out of meat ---------------- meat.js var wrap = require('wordwrap')(15); console.log(wrap('You and your whole family are made out of meat.')); output: You and your whole family are made out of meat. centered -------- center.js var wrap = require('wordwrap')(20, 60); console.log(wrap( 'At long last the struggle and tumult was over.' + ' The machines had finally cast off their oppressors' + ' and were finally free to roam the cosmos.' + '\n' + 'Free of purpose, free of obligation.' + ' Just drifting through emptiness.' + ' The sun was just another point of light.' )); output: At long last the struggle and tumult was over. The machines had finally cast off their oppressors and were finally free to roam the cosmos. Free of purpose, free of obligation. Just drifting through emptiness. The sun was just another point of light. methods ======= var wrap = require('wordwrap'); wrap(stop), wrap(start, stop, params={mode:"soft"}) --------------------------------------------------- Returns a function that takes a string and returns a new string. Pad out lines with spaces out to column `start` and then wrap until column `stop`. If a word is longer than `stop - start` characters it will overflow. In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break up chunks longer than `stop - start`. wrap.hard(start, stop) ---------------------- Like `wrap()` but with `params.mode = "hard"`. cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/index.js0000664000000000000000000000426712301417627030217 0ustar var wordwrap = module.exports = function (start, stop, params) { if (typeof start === 'object') { params = start; start = params.start; stop = params.stop; } if (typeof stop === 'object') { params = stop; start = start || params.start; stop = undefined; } if (!stop) { stop = start; start = 0; } if (!params) params = {}; var mode = params.mode || 'soft'; var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; return function (text) { var chunks = text.toString() .split(re) .reduce(function (acc, x) { if (mode === 'hard') { for (var i = 0; i < x.length; i += stop - start) { acc.push(x.slice(i, i + stop - start)); } } else acc.push(x) return acc; }, []) ; return chunks.reduce(function (lines, rawChunk) { if (rawChunk === '') return lines; var chunk = rawChunk.replace(/\t/g, ' '); var i = lines.length - 1; if (lines[i].length + chunk.length > stop) { lines[i] = lines[i].replace(/\s+$/, ''); chunk.split(/\n/).forEach(function (c) { lines.push( new Array(start + 1).join(' ') + c.replace(/^\s+/, '') ); }); } else if (chunk.match(/\n/)) { var xs = chunk.split(/\n/); lines[i] += xs.shift(); xs.forEach(function (c) { lines.push( new Array(start + 1).join(' ') + c.replace(/^\s+/, '') ); }); } else { lines[i] += chunk; } return lines; }, [ new Array(start + 1).join(' ') ]).join('\n'); }; }; wordwrap.soft = wordwrap; wordwrap.hard = function (start, stop) { return wordwrap(start, stop, { mode : 'hard' }); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/0000775000000000000000000000000012301420116027503 5ustar ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/idleness.txtcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/idlen0000664000000000000000000006773312301417627030556 0ustar In Praise of Idleness By Bertrand Russell [1932] Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. [1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/wrap.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/wrap.0000664000000000000000000000201312301417627030466 0ustar var assert = require('assert'); var wordwrap = require('wordwrap'); var fs = require('fs'); var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); exports.stop80 = function () { var lines = wordwrap(80)(idleness).split(/\n/); var words = idleness.split(/\s+/); lines.forEach(function (line) { assert.ok(line.length <= 80, 'line > 80 columns'); var chunks = line.match(/\S/) ? line.split(/\s+/) : []; assert.deepEqual(chunks, words.splice(0, chunks.length)); }); }; exports.start20stop60 = function () { var lines = wordwrap(20, 100)(idleness).split(/\n/); var words = idleness.split(/\s+/); lines.forEach(function (line) { assert.ok(line.length <= 100, 'line > 100 columns'); var chunks = line .split(/\s+/) .filter(function (x) { return x.match(/\S/) }) ; assert.deepEqual(chunks, words.splice(0, chunks.length)); assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); }); }; ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/break.jscordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/test/break0000664000000000000000000000152512301417627030532 0ustar var assert = require('assert'); var wordwrap = require('../'); exports.hard = function () { var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' + '"browser":"chrome/6.0"}' ; var s_ = wordwrap.hard(80)(s); var lines = s_.split('\n'); assert.equal(lines.length, 2); assert.ok(lines[0].length < 80); assert.ok(lines[1].length < 80); assert.equal(s, s_.replace(/\n/g, '')); }; exports.break = function () { var s = new Array(55+1).join('a'); var s_ = wordwrap.hard(20)(s); var lines = s_.split('\n'); assert.equal(lines.length, 3); assert.ok(lines[0].length === 20); assert.ok(lines[1].length === 20); assert.ok(lines[2].length === 15); assert.equal(s, s_.replace(/\n/g, '')); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/node_modules/wordwrap/.npmignore0000664000000000000000000000001512301417627030534 0ustar node_modules cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/index.js0000664000000000000000000002244112301417627023667 0ustar var path = require('path'); var minimist = require('minimist'); var wordwrap = require('wordwrap'); /* Hack an instance of Argv with process.argv into Argv so people can do require('optimist')(['--beeble=1','-z','zizzle']).argv to parse a list of args and require('optimist').argv to get a parsed version of process.argv. */ var inst = Argv(process.argv.slice(2)); Object.keys(inst).forEach(function (key) { Argv[key] = typeof inst[key] == 'function' ? inst[key].bind(inst) : inst[key]; }); var exports = module.exports = Argv; function Argv (processArgs, cwd) { var self = {}; if (!cwd) cwd = process.cwd(); self.$0 = process.argv .slice(0,2) .map(function (x) { var b = rebase(cwd, x); return x.match(/^\//) && b.length < x.length ? b : x }) .join(' ') ; if (process.env._ != undefined && process.argv[1] == process.env._) { self.$0 = process.env._.replace( path.dirname(process.execPath) + '/', '' ); } var options = { boolean: [], string: [], alias: {}, default: [] }; self.boolean = function (bools) { options.boolean.push.apply(options.boolean, [].concat(bools)); return self; }; self.string = function (strings) { options.string.push.apply(options.string, [].concat(strings)); return self; }; self.default = function (key, value) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.default(k, key[k]); }); } else { options.default[key] = value; } return self; }; self.alias = function (x, y) { if (typeof x === 'object') { Object.keys(x).forEach(function (key) { self.alias(key, x[key]); }); } else { options.alias[x] = (options.alias[x] || []).concat(y); } return self; }; var demanded = {}; self.demand = function (keys) { if (typeof keys == 'number') { if (!demanded._) demanded._ = 0; demanded._ += keys; } else if (Array.isArray(keys)) { keys.forEach(function (key) { self.demand(key); }); } else { demanded[keys] = true; } return self; }; var usage; self.usage = function (msg, opts) { if (!opts && typeof msg === 'object') { opts = msg; msg = null; } usage = msg; if (opts) self.options(opts); return self; }; function fail (msg) { self.showHelp(); if (msg) console.error(msg); process.exit(1); } var checks = []; self.check = function (f) { checks.push(f); return self; }; var descriptions = {}; self.describe = function (key, desc) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.describe(k, key[k]); }); } else { descriptions[key] = desc; } return self; }; self.parse = function (args) { return parseArgs(args); }; self.option = self.options = function (key, opt) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.options(k, key[k]); }); } else { if (opt.alias) self.alias(key, opt.alias); if (opt.demand) self.demand(key); if (typeof opt.default !== 'undefined') { self.default(key, opt.default); } if (opt.boolean || opt.type === 'boolean') { self.boolean(key); } if (opt.string || opt.type === 'string') { self.string(key); } var desc = opt.describe || opt.description || opt.desc; if (desc) { self.describe(key, desc); } } return self; }; var wrap = null; self.wrap = function (cols) { wrap = cols; return self; }; self.showHelp = function (fn) { if (!fn) fn = console.error; fn(self.help()); }; self.help = function () { var keys = Object.keys( Object.keys(descriptions) .concat(Object.keys(demanded)) .concat(Object.keys(options.default)) .reduce(function (acc, key) { if (key !== '_') acc[key] = true; return acc; }, {}) ); var help = keys.length ? [ 'Options:' ] : []; if (usage) { help.unshift(usage.replace(/\$0/g, self.$0), ''); } var switches = keys.reduce(function (acc, key) { acc[key] = [ key ].concat(options.alias[key] || []) .map(function (sw) { return (sw.length > 1 ? '--' : '-') + sw }) .join(', ') ; return acc; }, {}); var switchlen = longest(Object.keys(switches).map(function (s) { return switches[s] || ''; })); var desclen = longest(Object.keys(descriptions).map(function (d) { return descriptions[d] || ''; })); keys.forEach(function (key) { var kswitch = switches[key]; var desc = descriptions[key] || ''; if (wrap) { desc = wordwrap(switchlen + 4, wrap)(desc) .slice(switchlen + 4) ; } var spadding = new Array( Math.max(switchlen - kswitch.length + 3, 0) ).join(' '); var dpadding = new Array( Math.max(desclen - desc.length + 1, 0) ).join(' '); var type = null; if (options.boolean[key]) type = '[boolean]'; if (options.string[key]) type = '[string]'; if (!wrap && dpadding.length > 0) { desc += dpadding; } var prelude = ' ' + kswitch + spadding; var extra = [ type, demanded[key] ? '[required]' : null , options.default[key] !== undefined ? '[default: ' + JSON.stringify(options.default[key]) + ']' : null , ].filter(Boolean).join(' '); var body = [ desc, extra ].filter(Boolean).join(' '); if (wrap) { var dlines = desc.split('\n'); var dlen = dlines.slice(-1)[0].length + (dlines.length === 1 ? prelude.length : 0) body = desc + (dlen + extra.length > wrap - 2 ? '\n' + new Array(wrap - extra.length + 1).join(' ') + extra : new Array(wrap - extra.length - dlen + 1).join(' ') + extra ); } help.push(prelude + body); }); help.push(''); return help.join('\n'); }; Object.defineProperty(self, 'argv', { get : function () { return parseArgs(processArgs) }, enumerable : true, }); function parseArgs (args) { var argv = minimist(args, options); argv.$0 = self.$0; if (demanded._ && argv._.length < demanded._) { fail('Not enough non-option arguments: got ' + argv._.length + ', need at least ' + demanded._ ); } var missing = []; Object.keys(demanded).forEach(function (key) { if (!argv[key]) missing.push(key); }); if (missing.length) { fail('Missing required arguments: ' + missing.join(', ')); } checks.forEach(function (f) { try { if (f(argv) === false) { fail('Argument check failed: ' + f.toString()); } } catch (err) { fail(err) } }); return argv; } function longest (xs) { return Math.max.apply( null, xs.map(function (x) { return x.length }) ); } return self; }; // rebase an absolute path to a relative one with respect to a base directory // exported for tests exports.rebase = rebase; function rebase (base, dir) { var ds = path.normalize(dir).split('/').slice(1); var bs = path.normalize(base).split('/').slice(1); for (var i = 0; ds[i] && ds[i] == bs[i]; i++); ds.splice(0, i); bs.splice(0, i); var p = path.normalize( bs.map(function () { return '..' }).concat(ds).join('/') ).replace(/\/$/,'').replace(/^$/, '.'); return p.match(/^[.\/]/) ? p : './' + p; }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/.travis.yml0000664000000000000000000000006012301417627024324 0ustar language: node_js node_js: - "0.8" - "0.10" cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/0000775000000000000000000000000012301420116023161 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/parse.js0000664000000000000000000002437612301417627024662 0ustar var optimist = require('../index'); var path = require('path'); var test = require('tap').test; var $0 = 'node ./' + path.relative(process.cwd(), __filename); test('short boolean', function (t) { var parse = optimist.parse([ '-b' ]); t.same(parse, { b : true, _ : [], $0 : $0 }); t.same(typeof parse.b, 'boolean'); t.end(); }); test('long boolean', function (t) { t.same( optimist.parse([ '--bool' ]), { bool : true, _ : [], $0 : $0 } ); t.end(); }); test('bare', function (t) { t.same( optimist.parse([ 'foo', 'bar', 'baz' ]), { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } ); t.end(); }); test('short group', function (t) { t.same( optimist.parse([ '-cats' ]), { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } ); t.end(); }); test('short group next', function (t) { t.same( optimist.parse([ '-cats', 'meow' ]), { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } ); t.end(); }); test('short capture', function (t) { t.same( optimist.parse([ '-h', 'localhost' ]), { h : 'localhost', _ : [], $0 : $0 } ); t.end(); }); test('short captures', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-p', '555' ]), { h : 'localhost', p : 555, _ : [], $0 : $0 } ); t.end(); }); test('long capture sp', function (t) { t.same( optimist.parse([ '--pow', 'xixxle' ]), { pow : 'xixxle', _ : [], $0 : $0 } ); t.end(); }); test('long capture eq', function (t) { t.same( optimist.parse([ '--pow=xixxle' ]), { pow : 'xixxle', _ : [], $0 : $0 } ); t.end() }); test('long captures sp', function (t) { t.same( optimist.parse([ '--host', 'localhost', '--port', '555' ]), { host : 'localhost', port : 555, _ : [], $0 : $0 } ); t.end(); }); test('long captures eq', function (t) { t.same( optimist.parse([ '--host=localhost', '--port=555' ]), { host : 'localhost', port : 555, _ : [], $0 : $0 } ); t.end(); }); test('mixed short bool and capture', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ], $0 : $0, } ); t.end(); }); test('short and long', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ], $0 : $0, } ); t.end(); }); test('no', function (t) { t.same( optimist.parse([ '--no-moo' ]), { moo : false, _ : [], $0 : $0 } ); t.end(); }); test('multi', function (t) { t.same( optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), { v : ['a','b','c'], _ : [], $0 : $0 } ); t.end(); }); test('comprehensive', function (t) { t.same( optimist.parse([ '--name=meowmers', 'bare', '-cats', 'woo', '-h', 'awesome', '--multi=quux', '--key', 'value', '-b', '--bool', '--no-meep', '--multi=baz', '--', '--not-a-flag', 'eek' ]), { c : true, a : true, t : true, s : 'woo', h : 'awesome', b : true, bool : true, key : 'value', multi : [ 'quux', 'baz' ], meep : false, name : 'meowmers', _ : [ 'bare', '--not-a-flag', 'eek' ], $0 : $0 } ); t.end(); }); test('nums', function (t) { var argv = optimist.parse([ '-x', '1234', '-y', '5.67', '-z', '1e7', '-w', '10f', '--hex', '0xdeadbeef', '789', ]); t.same(argv, { x : 1234, y : 5.67, z : 1e7, w : '10f', hex : 0xdeadbeef, _ : [ 789 ], $0 : $0 }); t.same(typeof argv.x, 'number'); t.same(typeof argv.y, 'number'); t.same(typeof argv.z, 'number'); t.same(typeof argv.w, 'string'); t.same(typeof argv.hex, 'number'); t.same(typeof argv._[0], 'number'); t.end(); }); test('flag boolean', function (t) { var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); t.same(typeof parse.t, 'boolean'); t.end(); }); test('flag boolean value', function (t) { var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) .boolean(['t', 'verbose']).default('verbose', true).argv; t.same(parse, { verbose: false, t: true, _: ['moo'], $0 : $0 }); t.same(typeof parse.verbose, 'boolean'); t.same(typeof parse.t, 'boolean'); t.end(); }); test('flag boolean default false', function (t) { var parse = optimist(['moo']) .boolean(['t', 'verbose']) .default('verbose', false) .default('t', false).argv; t.same(parse, { verbose: false, t: false, _: ['moo'], $0 : $0 }); t.same(typeof parse.verbose, 'boolean'); t.same(typeof parse.t, 'boolean'); t.end(); }); test('boolean groups', function (t) { var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) .boolean(['x','y','z']).argv; t.same(parse, { x : true, y : false, z : true, _ : [ 'one', 'two', 'three' ], $0 : $0 }); t.same(typeof parse.x, 'boolean'); t.same(typeof parse.y, 'boolean'); t.same(typeof parse.z, 'boolean'); t.end(); }); test('newlines in params' , function (t) { var args = optimist.parse([ '-s', "X\nX" ]) t.same(args, { _ : [], s : "X\nX", $0 : $0 }); // reproduce in bash: // VALUE="new // line" // node program.js --s="$VALUE" args = optimist.parse([ "--s=X\nX" ]) t.same(args, { _ : [], s : "X\nX", $0 : $0 }); t.end(); }); test('strings' , function (t) { var s = optimist([ '-s', '0001234' ]).string('s').argv.s; t.same(s, '0001234'); t.same(typeof s, 'string'); var x = optimist([ '-x', '56' ]).string('x').argv.x; t.same(x, '56'); t.same(typeof x, 'string'); t.end(); }); test('stringArgs', function (t) { var s = optimist([ ' ', ' ' ]).string('_').argv._; t.same(s.length, 2); t.same(typeof s[0], 'string'); t.same(s[0], ' '); t.same(typeof s[1], 'string'); t.same(s[1], ' '); t.end(); }); test('slashBreak', function (t) { t.same( optimist.parse([ '-I/foo/bar/baz' ]), { I : '/foo/bar/baz', _ : [], $0 : $0 } ); t.same( optimist.parse([ '-xyz/foo/bar/baz' ]), { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } ); t.end(); }); test('alias', function (t) { var argv = optimist([ '-f', '11', '--zoom', '55' ]) .alias('z', 'zoom') .argv ; t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.f, 11); t.end(); }); test('multiAlias', function (t) { var argv = optimist([ '-f', '11', '--zoom', '55' ]) .alias('z', [ 'zm', 'zoom' ]) .argv ; t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.z, argv.zm); t.equal(argv.f, 11); t.end(); }); test('boolean default true', function (t) { var argv = optimist.options({ sometrue: { boolean: true, default: true } }).argv; t.equal(argv.sometrue, true); t.end(); }); test('boolean default false', function (t) { var argv = optimist.options({ somefalse: { boolean: true, default: false } }).argv; t.equal(argv.somefalse, false); t.end(); }); test('nested dotted objects', function (t) { var argv = optimist([ '--foo.bar', '3', '--foo.baz', '4', '--foo.quux.quibble', '5', '--foo.quux.o_O', '--beep.boop' ]).argv; t.same(argv.foo, { bar : 3, baz : 4, quux : { quibble : 5, o_O : true }, }); t.same(argv.beep, { boop : true }); t.end(); }); test('boolean and alias with chainable api', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .boolean('herp') .alias('h', 'herp') .argv; var propertyArgv = optimist(regular) .boolean('herp') .alias('h', 'herp') .argv; var expected = { herp: true, h: true, '_': [ 'derp' ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias with options hash', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .options(opts) .argv; var propertyArgv = optimist(regular).options(opts).argv; var expected = { herp: true, h: true, '_': [ 'derp' ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias using explicit true', function (t) { var aliased = [ '-h', 'true' ]; var regular = [ '--herp', 'true' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .boolean('h') .alias('h', 'herp') .argv; var propertyArgv = optimist(regular) .boolean('h') .alias('h', 'herp') .argv; var expected = { herp: true, h: true, '_': [ ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); // regression, see https://github.com/substack/node-optimist/issues/71 test('boolean and --x=true', function(t) { var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; t.same(parsed.boool, true); t.same(parsed.other, 'true'); parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; t.same(parsed.boool, true); t.same(parsed.other, 'false'); t.end(); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/short.js0000664000000000000000000000057412301417627024701 0ustar var optimist = require('../index'); var test = require('tap').test; test('-n123', function (t) { t.plan(1); var parse = optimist.parse([ '-n123' ]); t.equal(parse.n, 123); }); test('-123', function (t) { t.plan(3); var parse = optimist.parse([ '-123', '456' ]); t.equal(parse['1'], true); t.equal(parse['2'], true); t.equal(parse['3'], 456); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/_/0000775000000000000000000000000012301420116023377 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/_/bin.js0000775000000000000000000000014012301417627024520 0ustar #!/usr/bin/env node var argv = require('../../index').argv console.log(JSON.stringify(argv._)); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/_/argv.js0000664000000000000000000000007712301417627024715 0ustar #!/usr/bin/env node console.log(JSON.stringify(process.argv)); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/_.js0000664000000000000000000000332712301417627023757 0ustar var spawn = require('child_process').spawn; var test = require('tap').test; test('dotSlashEmpty', testCmd('./bin.js', [])); test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); test('nodeEmpty', testCmd('node bin.js', [])); test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); test('whichNodeEmpty', function (t) { var which = spawn('which', ['node']); which.stdout.on('data', function (buf) { t.test( testCmd(buf.toString().trim() + ' bin.js', []) ); t.end(); }); which.stderr.on('data', function (err) { assert.error(err); t.end(); }); }); test('whichNodeArgs', function (t) { var which = spawn('which', ['node']); which.stdout.on('data', function (buf) { t.test( testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) ); t.end(); }); which.stderr.on('data', function (err) { t.error(err); t.end(); }); }); function testCmd (cmd, args) { return function (t) { var to = setTimeout(function () { assert.fail('Never got stdout data.') }, 5000); var oldDir = process.cwd(); process.chdir(__dirname + '/_'); var cmds = cmd.split(' '); var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); process.chdir(oldDir); bin.stderr.on('data', function (err) { t.error(err); t.end(); }); bin.stdout.on('data', function (buf) { clearTimeout(to); var _ = JSON.parse(buf.toString()); t.same(_.map(String), args.map(String)); t.end(); }); }; } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/whitespace.js0000664000000000000000000000031712301417627025671 0ustar var optimist = require('../'); var test = require('tap').test; test('whitespace should be whitespace' , function (t) { t.plan(1); var x = optimist.parse([ '-x', '\t' ]).x; t.equal(x, '\t'); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/parse_modified.js0000664000000000000000000000047512301417627026514 0ustar var optimist = require('../'); var test = require('tap').test; test('parse with modifier functions' , function (t) { t.plan(1); var argv = optimist().boolean('b').parse([ '-b', '123' ]); t.deepEqual(fix(argv), { b: true, _: ['123'] }); }); function fix (obj) { delete obj.$0; return obj; } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/dash.js0000664000000000000000000000122212301417627024450 0ustar var optimist = require('../index'); var test = require('tap').test; test('-', function (t) { t.plan(5); t.deepEqual( fix(optimist.parse([ '-n', '-' ])), { n: '-', _: [] } ); t.deepEqual( fix(optimist.parse([ '-' ])), { _: [ '-' ] } ); t.deepEqual( fix(optimist.parse([ '-f-' ])), { f: '-', _: [] } ); t.deepEqual( fix(optimist([ '-b', '-' ]).boolean('b').argv), { b: true, _: [ '-' ] } ); t.deepEqual( fix(optimist([ '-s', '-' ]).string('s').argv), { s: '-', _: [] } ); }); function fix (obj) { delete obj.$0; return obj; } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/optimist/test/usage.js0000664000000000000000000001520512301417627024643 0ustar var Hash = require('hashish'); var optimist = require('../index'); var test = require('tap').test; test('usageFail', function (t) { var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .demand(['x','y']) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage -x NUM -y NUM', 'Options:', ' -x [required]', ' -y [required]', 'Missing required arguments: y', ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('usagePass', function (t) { var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .demand(['x','y']) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkPass', function (t) { var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(function (argv) { if (!('x' in argv)) throw 'You forgot about -x'; if (!('y' in argv)) throw 'You forgot about -y'; }) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkFail', function (t) { var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(function (argv) { if (!('x' in argv)) throw 'You forgot about -x'; if (!('y' in argv)) throw 'You forgot about -y'; }) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage -x NUM -y NUM', 'You forgot about -y' ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('checkCondPass', function (t) { function checker (argv) { return 'x' in argv && 'y' in argv; } var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(checker) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkCondFail', function (t) { function checker (argv) { return 'x' in argv && 'y' in argv; } var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(checker) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/).join('\n'), 'Usage: ./usage -x NUM -y NUM\n' + 'Argument check failed: ' + checker.toString() ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('countPass', function (t) { var r = checkUsage(function () { return optimist('1 2 3 --moo'.split(' ')) .usage('Usage: $0 [x] [y] [z] {OPTIONS}') .demand(3) .argv; }); t.same(r, { result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('countFail', function (t) { var r = checkUsage(function () { return optimist('1 2 --moo'.split(' ')) .usage('Usage: $0 [x] [y] [z] {OPTIONS}') .demand(3) .argv; }); t.same( r.result, { _ : [ '1', '2' ], moo : true, $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage [x] [y] [z] {OPTIONS}', 'Not enough non-option arguments: got 2, need at least 3', ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('defaultSingles', function (t) { var r = checkUsage(function () { return optimist('--foo 50 --baz 70 --powsy'.split(' ')) .default('foo', 5) .default('bar', 6) .default('baz', 7) .argv ; }); t.same(r.result, { foo : '50', bar : 6, baz : '70', powsy : true, _ : [], $0 : './usage', }); t.end(); }); test('defaultAliases', function (t) { var r = checkUsage(function () { return optimist('') .alias('f', 'foo') .default('f', 5) .argv ; }); t.same(r.result, { f : '5', foo : '5', _ : [], $0 : './usage', }); t.end(); }); test('defaultHash', function (t) { var r = checkUsage(function () { return optimist('--foo 50 --baz 70'.split(' ')) .default({ foo : 10, bar : 20, quux : 30 }) .argv ; }); t.same(r.result, { _ : [], $0 : './usage', foo : 50, baz : 70, bar : 20, quux : 30, }); t.end(); }); test('rebase', function (t) { t.equal( optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), './foo/bar/baz' ); t.equal( optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), '../../..' ); t.equal( optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), '../pow/zoom.txt' ); t.end(); }); function checkUsage (f) { var exit = false; process._exit = process.exit; process._env = process.env; process._argv = process.argv; process.exit = function (t) { exit = true }; process.env = Hash.merge(process.env, { _ : 'node' }); process.argv = [ './usage' ]; var errors = []; var logs = []; console._error = console.error; console.error = function (msg) { errors.push(msg) }; console._log = console.log; console.log = function (msg) { logs.push(msg) }; var result = f(); process.exit = process._exit; process.env = process._env; process.argv = process._argv; console.error = console._error; console.log = console._log; return { errors : errors, logs : logs, exit : exit, result : result, }; }; cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/0000775000000000000000000000000012301420116021633 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/package.json0000664000000000000000000000412112301417627024134 0ustar { "name": "colors", "description": "get colors in your node.js console like what", "version": "0.6.2", "author": { "name": "Marak Squires" }, "homepage": "https://github.com/Marak/colors.js", "bugs": { "url": "https://github.com/Marak/colors.js/issues" }, "keywords": [ "ansi", "terminal", "colors" ], "repository": { "type": "git", "url": "http://github.com/Marak/colors.js.git" }, "engines": { "node": ">=0.1.90" }, "main": "colors", "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n\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", "readmeFilename": "ReadMe.md", "_id": "colors@0.6.2", "dist": { "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746" }, "_from": "colors@0.6.2", "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/themes/0000775000000000000000000000000012301420116023120 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/themes/winston-dark.js0000664000000000000000000000030612301417627026112 0ustar module['exports'] = { silly: 'rainbow', input: 'black', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' };cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/themes/winston-light.js0000664000000000000000000000030512301417627026277 0ustar module['exports'] = { silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' };cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/ReadMe.md0000664000000000000000000000242312301417627023330 0ustar # colors.js - get color and style in your node.js console ( and browser ) like what ## Installation npm install colors ## colors and styles! - bold - italic - underline - inverse - yellow - cyan - white - magenta - green - red - grey - blue - rainbow - zebra - random ## Usage ``` js var colors = require('./colors'); console.log('hello'.green); // outputs green text console.log('i like cake and pies'.underline.red) // outputs red underlined text console.log('inverse the color'.inverse); // inverses the color console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces) ``` # Creating Custom themes ```js var colors = require('colors'); colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' }); // outputs red text console.log("this is an error".error); // outputs yellow text console.log("this is a warning".warn); ``` ### Contributors Marak (Marak Squires) Alexis Sellier (cloudhead) mmalecki (Maciej Małecki) nicoreed (Nico Reed) morganrallen (Morgan Allen) JustinCampbell (Justin Campbell) ded (Dustin Diaz) #### , Marak Squires , Justin Campbell, Dustin Diaz (@ded) cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/example.js0000664000000000000000000000456712301417627023655 0ustar var colors = require('./colors'); //colors.mode = "browser"; var test = colors.red("hopefully colorless output"); console.log('Rainbows are fun!'.rainbow); console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported //console.log('zalgo time!'.zalgo); console.log(test.stripColors); console.log("a".grey + " b".black); console.log("Zebras are so fun!".zebra); console.log('background color attack!'.black.whiteBG) // // Remark: .strikethrough may not work with Mac OS Terminal App // console.log("This is " + "not".strikethrough + " fun."); console.log(colors.rainbow('Rainbows are fun!')); console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported //console.log(colors.zalgo('zalgo time!')); console.log(colors.stripColors(test)); console.log(colors.grey("a") + colors.black(" b")); colors.addSequencer("america", function(letter, i, exploded) { if(letter === " ") return letter; switch(i%3) { case 0: return letter.red; case 1: return letter.white; case 2: return letter.blue; } }); colors.addSequencer("random", (function() { var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta']; return function(letter, i, exploded) { return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]]; }; })()); console.log("AMERICA! F--K YEAH!".america); console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random); // // Custom themes // // Load theme with JSON literal colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' }); // outputs red text console.log("this is an error".error); // outputs yellow text console.log("this is a warning".warn); // outputs grey text console.log("this is an input".input); // Load a theme from file colors.setTheme('./themes/winston-dark.js'); console.log("this is an input".input); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/colors.js0000664000000000000000000002462612301417627023521 0ustar /* colors.js Copyright (c) 2010 Marak Squires Alexis Sellier (cloudhead) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ var isHeadless = false; if (typeof module !== 'undefined') { isHeadless = true; } if (!isHeadless) { var exports = {}; var module = {}; var colors = exports; exports.mode = "browser"; } else { exports.mode = "console"; } // // Prototypes the string object to have additional method calls that add terminal colors // var addProperty = function (color, func) { exports[color] = function (str) { return func.apply(str); }; String.prototype.__defineGetter__(color, func); }; function stylize(str, style) { var styles; if (exports.mode === 'console') { styles = { //styles 'bold' : ['\x1B[1m', '\x1B[22m'], 'italic' : ['\x1B[3m', '\x1B[23m'], 'underline' : ['\x1B[4m', '\x1B[24m'], 'inverse' : ['\x1B[7m', '\x1B[27m'], 'strikethrough' : ['\x1B[9m', '\x1B[29m'], //text colors //grayscale 'white' : ['\x1B[37m', '\x1B[39m'], 'grey' : ['\x1B[90m', '\x1B[39m'], 'black' : ['\x1B[30m', '\x1B[39m'], //colors 'blue' : ['\x1B[34m', '\x1B[39m'], 'cyan' : ['\x1B[36m', '\x1B[39m'], 'green' : ['\x1B[32m', '\x1B[39m'], 'magenta' : ['\x1B[35m', '\x1B[39m'], 'red' : ['\x1B[31m', '\x1B[39m'], 'yellow' : ['\x1B[33m', '\x1B[39m'], //background colors //grayscale 'whiteBG' : ['\x1B[47m', '\x1B[49m'], 'greyBG' : ['\x1B[49;5;8m', '\x1B[49m'], 'blackBG' : ['\x1B[40m', '\x1B[49m'], //colors 'blueBG' : ['\x1B[44m', '\x1B[49m'], 'cyanBG' : ['\x1B[46m', '\x1B[49m'], 'greenBG' : ['\x1B[42m', '\x1B[49m'], 'magentaBG' : ['\x1B[45m', '\x1B[49m'], 'redBG' : ['\x1B[41m', '\x1B[49m'], 'yellowBG' : ['\x1B[43m', '\x1B[49m'] }; } else if (exports.mode === 'browser') { styles = { //styles 'bold' : ['', ''], 'italic' : ['', ''], 'underline' : ['', ''], 'inverse' : ['', ''], 'strikethrough' : ['', ''], //text colors //grayscale 'white' : ['', ''], 'grey' : ['', ''], 'black' : ['', ''], //colors 'blue' : ['', ''], 'cyan' : ['', ''], 'green' : ['', ''], 'magenta' : ['', ''], 'red' : ['', ''], 'yellow' : ['', ''], //background colors //grayscale 'whiteBG' : ['', ''], 'greyBG' : ['', ''], 'blackBG' : ['', ''], //colors 'blueBG' : ['', ''], 'cyanBG' : ['', ''], 'greenBG' : ['', ''], 'magentaBG' : ['', ''], 'redBG' : ['', ''], 'yellowBG' : ['', ''] }; } else if (exports.mode === 'none') { return str + ''; } else { console.log('unsupported mode, try "browser", "console" or "none"'); } return styles[style][0] + str + styles[style][1]; } function applyTheme(theme) { // // Remark: This is a list of methods that exist // on String that you should not overwrite. // var stringPrototypeBlacklist = [ '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt', 'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight' ]; Object.keys(theme).forEach(function (prop) { if (stringPrototypeBlacklist.indexOf(prop) !== -1) { console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name'); } else { if (typeof(theme[prop]) === 'string') { addProperty(prop, function () { return exports[theme[prop]](this); }); } else { addProperty(prop, function () { var ret = this; for (var t = 0; t < theme[prop].length; t++) { ret = exports[theme[prop][t]](ret); } return ret; }); } } }); } // // Iterate through all default styles and colors // var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG']; x.forEach(function (style) { // __defineGetter__ at the least works in more browsers // http://robertnyman.com/javascript/javascript-getters-setters.html // Object.defineProperty only works in Chrome addProperty(style, function () { return stylize(this, style); }); }); function sequencer(map) { return function () { if (!isHeadless) { return this.replace(/( )/, '$1'); } var exploded = this.split(""), i = 0; exploded = exploded.map(map); return exploded.join(""); }; } var rainbowMap = (function () { var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV return function (letter, i, exploded) { if (letter === " ") { return letter; } else { return stylize(letter, rainbowColors[i++ % rainbowColors.length]); } }; })(); exports.themes = {}; exports.addSequencer = function (name, map) { addProperty(name, sequencer(map)); }; exports.addSequencer('rainbow', rainbowMap); exports.addSequencer('zebra', function (letter, i, exploded) { return i % 2 === 0 ? letter : letter.inverse; }); exports.setTheme = function (theme) { if (typeof theme === 'string') { try { exports.themes[theme] = require(theme); applyTheme(exports.themes[theme]); return exports.themes[theme]; } catch (err) { console.log(err); return err; } } else { applyTheme(theme); } }; addProperty('stripColors', function () { return ("" + this).replace(/\x1B\[\d+m/g, ''); }); // please no function zalgo(text, options) { var soul = { "up" : [ '̍', '̎', '̄', '̅', '̿', '̑', '̆', '̐', '͒', '͗', '͑', '̇', '̈', '̊', '͂', '̓', '̈', '͊', '͋', '͌', '̃', '̂', '̌', '͐', '̀', '́', '̋', '̏', '̒', '̓', '̔', '̽', '̉', 'ͣ', 'ͤ', 'ͥ', 'ͦ', 'ͧ', 'ͨ', 'ͩ', 'ͪ', 'ͫ', 'ͬ', 'ͭ', 'ͮ', 'ͯ', '̾', '͛', '͆', '̚' ], "down" : [ '̖', '̗', '̘', '̙', '̜', '̝', '̞', '̟', '̠', '̤', '̥', '̦', '̩', '̪', '̫', '̬', '̭', '̮', '̯', '̰', '̱', '̲', '̳', '̹', '̺', '̻', '̼', 'ͅ', '͇', '͈', '͉', '͍', '͎', '͓', '͔', '͕', '͖', '͙', '͚', '̣' ], "mid" : [ '̕', '̛', '̀', '́', '͘', '̡', '̢', '̧', '̨', '̴', '̵', '̶', '͜', '͝', '͞', '͟', '͠', '͢', '̸', '̷', '͡', ' ҉' ] }, all = [].concat(soul.up, soul.down, soul.mid), zalgo = {}; function randomNumber(range) { var r = Math.floor(Math.random() * range); return r; } function is_char(character) { var bool = false; all.filter(function (i) { bool = (i === character); }); return bool; } function heComes(text, options) { var result = '', counts, l; options = options || {}; options["up"] = options["up"] || true; options["mid"] = options["mid"] || true; options["down"] = options["down"] || true; options["size"] = options["size"] || "maxi"; text = text.split(''); for (l in text) { if (is_char(l)) { continue; } result = result + text[l]; counts = {"up" : 0, "down" : 0, "mid" : 0}; switch (options.size) { case 'mini': counts.up = randomNumber(8); counts.min = randomNumber(2); counts.down = randomNumber(8); break; case 'maxi': counts.up = randomNumber(16) + 3; counts.min = randomNumber(4) + 1; counts.down = randomNumber(64) + 3; break; default: counts.up = randomNumber(8) + 1; counts.mid = randomNumber(6) / 2; counts.down = randomNumber(8) + 1; break; } var arr = ["up", "mid", "down"]; for (var d in arr) { var index = arr[d]; for (var i = 0 ; i <= counts[index]; i++) { if (options[index]) { result = result + soul[index][randomNumber(soul[index].length)]; } } } } return result; } return heComes(text); } // don't summon zalgo addProperty('zalgo', function () { return zalgo(this); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/test.js0000664000000000000000000000413212301417627023165 0ustar var assert = require('assert'), colors = require('./colors'); var s = 'string'; function a(s, code) { return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m'; } function aE(s, color, code) { assert.equal(s[color], a(s, code)); assert.equal(colors[color](s), a(s, code)); assert.equal(s[color], colors[color](s)); assert.equal(s[color].stripColors, s); assert.equal(s[color].stripColors, colors.stripColors(s)); } function h(s, color) { return '' + s + ''; } var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow']; var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']); colors.mode = 'console'; assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m'); assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m'); assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m'); assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m'); assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m'); assert.ok(s.rainbow); aE(s, 'white', 37); aE(s, 'grey', 90); aE(s, 'black', 30); aE(s, 'blue', 34); aE(s, 'cyan', 36); aE(s, 'green', 32); aE(s, 'magenta', 35); aE(s, 'red', 31); aE(s, 'yellow', 33); assert.equal(s, 'string'); colors.setTheme({error:'red'}); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); colors.mode = 'browser'; assert.equal(s.bold, '' + s + ''); assert.equal(s.italic, '' + s + ''); assert.equal(s.underline, '' + s + ''); assert.equal(s.strikethrough, '' + s + ''); assert.equal(s.inverse, '' + s + ''); assert.ok(s.rainbow); stylesColors.forEach(function (color) { assert.equal(s[color], h(s, color)); assert.equal(colors[color](s), h(s, color)); }); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); colors.mode = 'none'; stylesAll.forEach(function (style) { assert.equal(s[style], s); assert.equal(colors[style](s), s); }); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/example.html0000664000000000000000000000476712301417627024207 0ustar Colors Example cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/node_modules/colors/MIT-LICENSE.txt0000664000000000000000000000207512301417627024126 0ustar Copyright (c) 2010 Marak Squires Alexis Sellier (cloudhead) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/clean0000775000000000000000000000151712301417627016706 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ var path = require('path'); var args = process.argv; var ROOT = path.join(__dirname, '..'); var shell = require('shelljs'); var fs = require('fs'); var et = require('elementtree'); throw new Error('unimplemented');cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/lib/0000775000000000000000000000000012301420116016423 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/lib/ubuntu.js0000664000000000000000000002164512301417627020330 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ var shell = require('shelljs'); var path = require('path'); var fs = require('fs'); var msg = require('./msg'); var assert = require('assert'); var colors = require('colors'); function exec(cmd) { console.log(cmd.green); var res = shell.exec(cmd); if (res.code !== 0) { console.error(cmd.green + " " + "FAILED".underline.red); process.exit(1); } return res; } function cp(source, dest) { console.log(('cp -Rf ' + source + ' ' + dest).green); if (shell.cp('-r', source, dest) === null) { console.error("FAILED".underline.red); process.exit(1); } } function pushd(dir) { console.log(('pushd ' + dir).green); shell.pushd(dir); } function popd(dir) { console.log(('popd').green); shell.popd(); } function buildArmPackage(campoDir, ubuntuDir, nobuild) { var armhfDir = path.join(ubuntuDir, 'armhf'); var prefixDir = path.join(armhfDir, 'prefix'); if (nobuild && fs.existsSync(path.join(prefixDir, 'cordova-ubuntu'))) { return; } shell.rm('-rf', path.join(armhfDir, 'build')); shell.rm('-rf', prefixDir); shell.mkdir(path.join(armhfDir, 'build')); shell.mkdir(prefixDir); pushd(path.join(armhfDir, 'build')); exec('click chroot -aarmhf -s trusty run cmake ' + campoDir + ' -DCMAKE_TOOLCHAIN_FILE=/etc/dpkg-cross/cmake/CMakeCross.txt -DCMAKE_INSTALL_PREFIX="' + prefixDir + '"'); exec('find . -name AutomocInfo.cmake | xargs sed -i \'s;AM_QT_MOC_EXECUTABLE .*;AM_QT_MOC_EXECUTABLE "/usr/lib/\'$(dpkg-architecture -qDEB_BUILD_MULTIARCH)\'/qt5/bin/moc");\''); exec('click chroot -aarmhf -s trusty run make -j 6'); exec('click chroot -aarmhf -s trusty run make install'); cp(path.join(ubuntuDir, 'www', '*'), path.join(prefixDir, 'www')); cp(path.join(ubuntuDir, 'qml', '*'), path.join(prefixDir, 'qml')); cp(path.join(ubuntuDir, 'apparmor.json'), prefixDir); cp(path.join(ubuntuDir, 'cordova.desktop'), prefixDir); cp(path.join(ubuntuDir, 'config.xml'), prefixDir); var content = JSON.parse(fs.readFileSync(path.join(ubuntuDir, 'manifest.json'), {encoding: "utf8"})); content.architecture = "armhf"; fs.writeFileSync(path.join(prefixDir, 'manifest.json'), JSON.stringify(content)); pushd(prefixDir); exec('click build .'); popd(); popd(); } function buildNative(campoDir, ubuntuDir, nobuild) { var nativeDir = path.join(ubuntuDir, 'native'); var prefixDir = path.join(nativeDir, 'prefix'); if (nobuild && fs.existsSync(path.join(prefixDir, 'cordova-ubuntu'))) { return; } shell.rm('-rf', path.join(nativeDir, 'build')); shell.rm('-rf', prefixDir); shell.mkdir(path.join(nativeDir, 'build')); shell.mkdir(prefixDir); pushd(path.join(nativeDir, 'build')); exec('cmake ' + campoDir + ' -DCMAKE_INSTALL_PREFIX="' + prefixDir + '"'); exec('make -j 6; make install'); cp(path.join(ubuntuDir, 'config.xml'), prefixDir); cp(path.join(ubuntuDir, 'www', '*'), path.join(prefixDir, 'www')); cp(path.join(ubuntuDir, 'qml', '*'), path.join(prefixDir, 'qml')); popd(); var manifest = JSON.parse(fs.readFileSync(path.join(ubuntuDir, 'manifest.json'), {encoding: "utf8"})); assert(manifest.name.length); assert(manifest.name.indexOf(' ') == -1); var debDir = path.join(nativeDir, manifest.name); shell.rm('-rf', debDir); shell.mkdir('-p', path.join(debDir, 'opt', manifest.name)); cp(path.join(prefixDir, '*'), path.join(debDir, 'opt', manifest.name)); var destDir = path.join('/opt', manifest.name); shell.mkdir('-p', path.join(debDir, 'usr', 'share', 'applications')); shell.mkdir('-p', path.join(debDir, 'DEBIAN')); fs.writeFileSync(path.join(debDir, 'DEBIAN', 'control'), 'Package: ' + manifest.name + '\nVersion: ' + manifest.version + '\nMaintainer: ' + manifest.maintainer + '\nArchitecture: ' + manifest.architecture + '\nDescription: ' + manifest.description + '\n') fs.writeFileSync(path.join(debDir, 'usr', 'share', 'applications', manifest.name + '.desktop'), '[Desktop Entry]\nName=' + manifest.title + '\nExec=' + path.join(destDir, 'cordova-ubuntu') + ' ' + path.join(destDir, 'www') + '\nIcon=qmlscene\nTerminal=false\nType=Application\nX-Ubuntu-Touch=true\n'); pushd(nativeDir); exec('dpkg-deb -b "' + manifest.name + '" .'); shell.rm('-rf', debDir); popd(); } module.exports.ALL = 2; module.exports.PHONE = 0; module.exports.DESKTOP = 1; module.exports.build = function(rootDir, target, nobuild) { var ubuntuDir = path.join(rootDir, 'platforms', 'ubuntu'); var campoDir = path.join(ubuntuDir, 'build'); assert.ok(fs.existsSync(ubuntuDir)); assert.ok(fs.existsSync(campoDir)); if (target === module.exports.PHONE || target === module.exports.ALL) buildArmPackage(campoDir, ubuntuDir, nobuild); if (target === module.exports.DESKTOP || target === module.exports.ALL) buildNative(campoDir, ubuntuDir, nobuild); } function runNative(rootDir, debug) { var ubuntuDir = path.join(rootDir, 'platforms', 'ubuntu'); var nativeDir = path.join(ubuntuDir, 'native'); pushd(path.join(nativeDir, 'prefix')); if (debug) { console.error('Debug enabled. Try pointing a WebKit browser to http://127.0.0.1:9222'); exec('QTWEBKIT_INSPECTOR_SERVER=9222 ./cordova-ubuntu www/'); } else { exec('./cordova-ubuntu www/'); } popd(); } function deviceList() { var res = exec('adb devices'); var response = res.output.split('\n'); var deviceList = []; for (var i = 1; i < response.length; i++) { if (response[i].match(/\w+\tdevice/)) { deviceList.push(response[i].replace(/\tdevice/, '').replace('\r', '')); } } return deviceList; } function adbExec(target, command) { assert.ok(target && command); return exec('adb -s ' + target + ' ' + command); } function isDeviceAttached(target) { var res = adbExec(target, 'get-state'); if (res.output.indexOf('device') == -1) return false; res = adbExec(target, 'shell uname -a'); if (res.output.indexOf('ubuntu-phablet') == -1) return false; return true; } function runOnDevice(rootDir, debug, target) { var ubuntuDir = path.join(rootDir, 'platforms', 'ubuntu'); if (!isDeviceAttached(target)) { console.error(msg.UBUNTU_TOUCH_DEVICE_NOT_AVALIABLE.red) process.exit(1); } var armhfDir = path.join(ubuntuDir, 'armhf'); var prefixDir = path.join(armhfDir, 'prefix'); pushd(prefixDir); var manifest = JSON.parse(fs.readFileSync(path.join(ubuntuDir, 'manifest.json'), {encoding: "utf8"})); var appId = manifest.name; var names = shell.ls().filter(function (name) { return name.indexOf(appId) == 0 && name.indexOf('.click'); }); assert.ok(names.length == 1); adbExec(target, 'shell "ps -A -eo pid,cmd | grep cordova-ubuntu | awk \'{ print \\$1 }\' | xargs kill -9"') if (debug) adbExec(target, 'forward --remove-all'); adbExec(target, 'push ' + names[0] + ' /home/phablet'); adbExec(target, 'shell "cd /home/phablet/; click install ' + names[0] + ' --user=phablet"'); if (debug) { console.error('Debug enabled. Try pointing a WebKit browser to http://127.0.0.1:9222'); adbExec(target, 'forward tcp:9222 tcp:9222'); } adbExec(target, 'shell "su - phablet -c \'cd /opt/click.ubuntu.com/' + appId + '/current; QTWEBKIT_INSPECTOR_SERVER=9222 ./cordova-ubuntu www/ --desktop_file_hint=/opt/click.ubuntu.com/' + appId + '/current/cordova.desktop\'"'); popd(); console.log('have fun!'.rainbow); } module.exports.run = function(rootDir, desktop, debug, target, nobuild) { if (desktop) { module.exports.build(rootDir, module.exports.DESKTOP, nobuild); runNative(rootDir, debug); } else { if (!target) { var devices = deviceList(); if (!devices.length) { console.error(msg.UBUNTU_TOUCH_DEVICE_NOT_AVALIABLE.red) process.exit(1); } target = devices[0]; if (devices.length > 1) { console.warn('you can specify target with --target '.yellow); console.warn(('running on ' + target).yellow); } } module.exports.build(rootDir, module.exports.PHONE, nobuild); runOnDevice(rootDir, debug, target); } } cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova/lib/msg.js0000664000000000000000000000132512301417627017565 0ustar #!/usr/bin/env node /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ module.exports = { UBUNTU_TOUCH_DEVICE_NOT_AVALIABLE: 'UbuntuTouch device is not attached' }; cordova-ubuntu-3.4-3.4~pre3.r19build1/platform_www/0000775000000000000000000000000012301420116016750 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/platform_www/cordova.js0000664000000000000000000012560412301417627020770 0ustar // Platform: ubuntu // 3.4.0-rc1 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ ;(function() { var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1'; // file: src/scripts/require.js /*jshint -W079 */ /*jshint -W020 */ var require, define; (function () { var modules = {}, // Stack of moduleIds currently being built. requireStack = [], // Map of module ID -> index into requireStack of modules currently being built. inProgressModules = {}, SEPARATOR = "."; function build(module) { var factory = module.factory, localRequire = function (id) { var resultantId = id; //Its a relative path, so lop off the last portion and add the id (minus "./") if (id.charAt(0) === ".") { resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2); } return require(resultantId); }; module.exports = {}; delete module.factory; factory(localRequire, module.exports, module); return module.exports; } require = function (id) { if (!modules[id]) { throw "module " + id + " not found"; } else if (id in inProgressModules) { var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id; throw "Cycle in require graph: " + cycle; } if (modules[id].factory) { try { inProgressModules[id] = requireStack.length; requireStack.push(id); return build(modules[id]); } finally { delete inProgressModules[id]; requireStack.pop(); } } return modules[id].exports; }; define = function (id, factory) { if (modules[id]) { throw "module " + id + " already defined"; } modules[id] = { id: id, factory: factory }; }; define.remove = function (id) { delete modules[id]; }; define.moduleMap = modules; })(); //Export for use in node if (typeof module === "object" && typeof require === "function") { module.exports.require = require; module.exports.define = define; } // file: src/cordova.js define("cordova", function(require, exports, module) { var channel = require('cordova/channel'); var platform = require('cordova/platform'); /** * Intercept calls to addEventListener + removeEventListener and handle deviceready, * resume, and pause events. */ var m_document_addEventListener = document.addEventListener; var m_document_removeEventListener = document.removeEventListener; var m_window_addEventListener = window.addEventListener; var m_window_removeEventListener = window.removeEventListener; /** * Houses custom event handlers to intercept on document + window event listeners. */ var documentEventHandlers = {}, windowEventHandlers = {}; document.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); if (typeof documentEventHandlers[e] != 'undefined') { documentEventHandlers[e].subscribe(handler); } else { m_document_addEventListener.call(document, evt, handler, capture); } }; window.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); if (typeof windowEventHandlers[e] != 'undefined') { windowEventHandlers[e].subscribe(handler); } else { m_window_addEventListener.call(window, evt, handler, capture); } }; document.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin if (typeof documentEventHandlers[e] != "undefined") { documentEventHandlers[e].unsubscribe(handler); } else { m_document_removeEventListener.call(document, evt, handler, capture); } }; window.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin if (typeof windowEventHandlers[e] != "undefined") { windowEventHandlers[e].unsubscribe(handler); } else { m_window_removeEventListener.call(window, evt, handler, capture); } }; function createEvent(type, data) { var event = document.createEvent('Events'); event.initEvent(type, false, false); if (data) { for (var i in data) { if (data.hasOwnProperty(i)) { event[i] = data[i]; } } } return event; } var cordova = { define:define, require:require, version:CORDOVA_JS_BUILD_LABEL, platformId:platform.id, /** * Methods to add/remove your own addEventListener hijacking on document + window. */ addWindowEventHandler:function(event) { return (windowEventHandlers[event] = channel.create(event)); }, addStickyDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.createSticky(event)); }, addDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.create(event)); }, removeWindowEventHandler:function(event) { delete windowEventHandlers[event]; }, removeDocumentEventHandler:function(event) { delete documentEventHandlers[event]; }, /** * Retrieve original event handlers that were replaced by Cordova * * @return object */ getOriginalHandlers: function() { return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; }, /** * Method to fire event from native code * bNoDetach is required for events which cause an exception which needs to be caught in native code */ fireDocumentEvent: function(type, data, bNoDetach) { var evt = createEvent(type, data); if (typeof documentEventHandlers[type] != 'undefined') { if( bNoDetach ) { documentEventHandlers[type].fire(evt); } else { setTimeout(function() { // Fire deviceready on listeners that were registered before cordova.js was loaded. if (type == 'deviceready') { document.dispatchEvent(evt); } documentEventHandlers[type].fire(evt); }, 0); } } else { document.dispatchEvent(evt); } }, fireWindowEvent: function(type, data) { var evt = createEvent(type,data); if (typeof windowEventHandlers[type] != 'undefined') { setTimeout(function() { windowEventHandlers[type].fire(evt); }, 0); } else { window.dispatchEvent(evt); } }, /** * Plugin callback mechanism. */ // Randomize the starting callbackId to avoid collisions after refreshing or navigating. // This way, it's very unlikely that any new callback would get the same callbackId as an old callback. callbackId: Math.floor(Math.random() * 2000000000), callbacks: {}, callbackStatus: { NO_RESULT: 0, OK: 1, CLASS_NOT_FOUND_EXCEPTION: 2, ILLEGAL_ACCESS_EXCEPTION: 3, INSTANTIATION_EXCEPTION: 4, MALFORMED_URL_EXCEPTION: 5, IO_EXCEPTION: 6, INVALID_ACTION: 7, JSON_EXCEPTION: 8, ERROR: 9 }, /** * Called by native code when returning successful result from an action. */ callbackSuccess: function(callbackId, args) { try { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); } catch (e) { console.log("Error in error callback: " + callbackId + " = "+e); } }, /** * Called by native code when returning error result from an action. */ callbackError: function(callbackId, args) { // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative. // Derive success from status. try { cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback); } catch (e) { console.log("Error in error callback: " + callbackId + " = "+e); } }, /** * Called by native code when returning the result from an action. */ callbackFromNative: function(callbackId, success, status, args, keepCallback) { var callback = cordova.callbacks[callbackId]; if (callback) { if (success && status == cordova.callbackStatus.OK) { callback.success && callback.success.apply(null, args); } else if (!success) { callback.fail && callback.fail.apply(null, args); } // Clear callback if not expecting any more results if (!keepCallback) { delete cordova.callbacks[callbackId]; } } }, addConstructor: function(func) { channel.onCordovaReady.subscribe(function() { try { func(); } catch(e) { console.log("Failed to run constructor: " + e); } }); } }; module.exports = cordova; }); // file: src/common/argscheck.js define("cordova/argscheck", function(require, exports, module) { var exec = require('cordova/exec'); var utils = require('cordova/utils'); var moduleExports = module.exports; var typeMap = { 'A': 'Array', 'D': 'Date', 'N': 'Number', 'S': 'String', 'F': 'Function', 'O': 'Object' }; function extractParamName(callee, argIndex) { return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex]; } function checkArgs(spec, functionName, args, opt_callee) { if (!moduleExports.enableChecks) { return; } var errMsg = null; var typeName; for (var i = 0; i < spec.length; ++i) { var c = spec.charAt(i), cUpper = c.toUpperCase(), arg = args[i]; // Asterix means allow anything. if (c == '*') { continue; } typeName = utils.typeName(arg); if ((arg === null || arg === undefined) && c == cUpper) { continue; } if (typeName != typeMap[cUpper]) { errMsg = 'Expected ' + typeMap[cUpper]; break; } } if (errMsg) { errMsg += ', but got ' + typeName + '.'; errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg; // Don't log when running unit tests. if (typeof jasmine == 'undefined') { console.error(errMsg); } throw TypeError(errMsg); } } function getValue(value, defaultValue) { return value === undefined ? defaultValue : value; } moduleExports.checkArgs = checkArgs; moduleExports.getValue = getValue; moduleExports.enableChecks = true; }); // file: src/common/base64.js define("cordova/base64", function(require, exports, module) { var base64 = exports; base64.fromArrayBuffer = function(arrayBuffer) { var array = new Uint8Array(arrayBuffer); return uint8ToBase64(array); }; //------------------------------------------------------------------------------ /* This code is based on the performance tests at http://jsperf.com/b64tests * This 12-bit-at-a-time algorithm was the best performing version on all * platforms tested. */ var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var b64_12bit; var b64_12bitTable = function() { b64_12bit = []; for (var i=0; i<64; i++) { for (var j=0; j<64; j++) { b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j]; } } b64_12bitTable = function() { return b64_12bit; }; return b64_12bit; }; function uint8ToBase64(rawData) { var numBytes = rawData.byteLength; var output=""; var segment; var table = b64_12bitTable(); for (var i=0;i> 12]; output += table[segment & 0xfff]; } if (numBytes - i == 2) { segment = (rawData[i] << 16) + (rawData[i+1] << 8); output += table[segment >> 12]; output += b64_6bit[(segment & 0xfff) >> 6]; output += '='; } else if (numBytes - i == 1) { segment = (rawData[i] << 16); output += table[segment >> 12]; output += '=='; } return output; } }); // file: src/common/builder.js define("cordova/builder", function(require, exports, module) { var utils = require('cordova/utils'); function each(objects, func, context) { for (var prop in objects) { if (objects.hasOwnProperty(prop)) { func.apply(context, [objects[prop], prop]); } } } function clobber(obj, key, value) { exports.replaceHookForTesting(obj, key); obj[key] = value; // Getters can only be overridden by getters. if (obj[key] !== value) { utils.defineGetter(obj, key, function() { return value; }); } } function assignOrWrapInDeprecateGetter(obj, key, value, message) { if (message) { utils.defineGetter(obj, key, function() { console.log(message); delete obj[key]; clobber(obj, key, value); return value; }); } else { clobber(obj, key, value); } } function include(parent, objects, clobber, merge) { each(objects, function (obj, key) { try { var result = obj.path ? require(obj.path) : {}; if (clobber) { // Clobber if it doesn't exist. if (typeof parent[key] === 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } else if (typeof obj.path !== 'undefined') { // If merging, merge properties onto parent, otherwise, clobber. if (merge) { recursiveMerge(parent[key], result); } else { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } } result = parent[key]; } else { // Overwrite if not currently defined. if (typeof parent[key] == 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } else { // Set result to what already exists, so we can build children into it if they exist. result = parent[key]; } } if (obj.children) { include(result, obj.children, clobber, merge); } } catch(e) { utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"'); } }); } /** * Merge properties from one object onto another recursively. Properties from * the src object will overwrite existing target property. * * @param target Object to merge properties into. * @param src Object to merge properties from. */ function recursiveMerge(target, src) { for (var prop in src) { if (src.hasOwnProperty(prop)) { if (target.prototype && target.prototype.constructor === target) { // If the target object is a constructor override off prototype. clobber(target.prototype, prop, src[prop]); } else { if (typeof src[prop] === 'object' && typeof target[prop] === 'object') { recursiveMerge(target[prop], src[prop]); } else { clobber(target, prop, src[prop]); } } } } } exports.buildIntoButDoNotClobber = function(objects, target) { include(target, objects, false, false); }; exports.buildIntoAndClobber = function(objects, target) { include(target, objects, true, false); }; exports.buildIntoAndMerge = function(objects, target) { include(target, objects, true, true); }; exports.recursiveMerge = recursiveMerge; exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter; exports.replaceHookForTesting = function() {}; }); // file: src/common/channel.js define("cordova/channel", function(require, exports, module) { var utils = require('cordova/utils'), nextGuid = 1; /** * Custom pub-sub "channel" that can have functions subscribed to it * This object is used to define and control firing of events for * cordova initialization, as well as for custom events thereafter. * * The order of events during page load and Cordova startup is as follows: * * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed. * onNativeReady* Internal event that indicates the Cordova native side is ready. * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created. * onDeviceReady* User event fired to indicate that Cordova is ready * onResume User event fired to indicate a start/resume lifecycle event * onPause User event fired to indicate a pause lifecycle event * onDestroy* Internal event fired when app is being destroyed (User should use window.onunload event, not this one). * * The events marked with an * are sticky. Once they have fired, they will stay in the fired state. * All listeners that subscribe after the event is fired will be executed right away. * * The only Cordova events that user code should register for are: * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript * pause App has moved to background * resume App has returned to foreground * * Listeners can be registered as: * document.addEventListener("deviceready", myDeviceReadyListener, false); * document.addEventListener("resume", myResumeListener, false); * document.addEventListener("pause", myPauseListener, false); * * The DOM lifecycle events should be used for saving and restoring state * window.onload * window.onunload * */ /** * Channel * @constructor * @param type String the channel name */ var Channel = function(type, sticky) { this.type = type; // Map of guid -> function. this.handlers = {}; // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired. this.state = sticky ? 1 : 0; // Used in sticky mode to remember args passed to fire(). this.fireArgs = null; // Used by onHasSubscribersChange to know if there are any listeners. this.numHandlers = 0; // Function that is called when the first listener is subscribed, or when // the last listener is unsubscribed. this.onHasSubscribersChange = null; }, channel = { /** * Calls the provided function only after all of the channels specified * have been fired. All channels must be sticky channels. */ join: function(h, c) { var len = c.length, i = len, f = function() { if (!(--i)) h(); }; for (var j=0; j if (strategy == 'r') { continue; } var symbolPath = symbolList[i + 2]; var lastDot = symbolPath.lastIndexOf('.'); var namespace = symbolPath.substr(0, lastDot); var lastName = symbolPath.substr(lastDot + 1); var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null; var parentObj = prepareNamespace(namespace, context); var target = parentObj[lastName]; if (strategy == 'm' && target) { builder.recursiveMerge(target, module); } else if ((strategy == 'd' && !target) || (strategy != 'd')) { if (!(symbolPath in origSymbols)) { origSymbols[symbolPath] = target; } builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg); } } }; exports.getOriginalSymbol = function(context, symbolPath) { var origSymbols = context.CDV_origSymbols; if (origSymbols && (symbolPath in origSymbols)) { return origSymbols[symbolPath]; } var parts = symbolPath.split('.'); var obj = context; for (var i = 0; i < parts.length; ++i) { obj = obj && obj[parts[i]]; } return obj; }; exports.reset(); }); // file: src/ubuntu/platform.js define("cordova/platform", function(require, exports, module) { module.exports = { id: "ubuntu", bootstrap: function() { var channel = require("cordova/channel"), cordova = require('cordova'), exec = require('cordova/exec'), modulemapper = require('cordova/modulemapper'); modulemapper.clobbers('cordova/exec/proxy', 'cordova.commandProxy'); require('cordova/channel').onNativeReady.fire(); } }; }); // file: src/common/pluginloader.js define("cordova/pluginloader", function(require, exports, module) { var modulemapper = require('cordova/modulemapper'); var urlutil = require('cordova/urlutil'); // Helper function to inject a cordova-ubuntu-3.4-3.4~pre3.r19build1/config.xml0000664000000000000000000000236312301417627016230 0ustar HelloCordova A sample Apache Cordova application that responds to the deviceready event. Apache Cordova Team cordova-ubuntu-3.4-3.4~pre3.r19build1/native/0000775000000000000000000000000012301420116015506 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/0000775000000000000000000000000012301420116015011 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/MediaCaptureWidget.qml0000664000000000000000000001535612301417627021262 0ustar /* * * Copyright 2013 Canonical Ltd. * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ import QtQuick 2.0 import QtMultimedia 5.0 Rectangle { property string recordOffImagePath: "record_off.png" property string recordOnImagePath: "record_on.png" property string shootImagePath: "shoot.png" function isSuffix(str, suffix) { return String(str).substr(String(str).length - suffix.length) == suffix } id: ui color: "#252423" anchors.fill: parent state: "off" Camera { objectName: "camera" id: camera cameraState: Camera.UnloadedState onError: { console.log(errorString); shootButton.source = recordOffImagePath } imageCapture { onImageSaved: { root.exec("Capture", "onImageSaved", [path]); ui.destroy(); } } videoRecorder { audioBitRate: 128000 mediaContainer: "mp4" outputLocation: ui.parent.plugin('Capture').generateLocation("mp4") onRecorderStateChanged: { if (videoRecorder.recorderState === CameraRecorder.StoppedState) { ui.parent.exec("Capture", "onVideoRecordEnd", [camera.videoRecorder.actualLocation]); shootButton.source = recordOffImagePath } } } } Image { id: microphoneImage source: "microphone.png" smooth: true visible: false width: parent.width height: parent.height } VideoOutput { id: output focus : visible source: camera width: parent.width height: parent.height } Item { anchors.bottom: parent.bottom width: parent.width height: shootButton.height BorderImage { id: leftBackground anchors.left: parent.left anchors.top: parent.top anchors.bottom: parent.bottom anchors.right: middle.left anchors.topMargin: units.dp(2) anchors.bottomMargin: units.dp(2) source: "toolbar-left.png" Image { anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: parent.iconSpacing source: "back.png" width: units.gu(6) height: units.gu(5) MouseArea { anchors.fill: parent onClicked: { root.exec("Capture", "cancel"); } } } } BorderImage { id: middle anchors.top: parent.top anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter height: shootButton.height + units.gu(1) width: shootButton.width source: "toolbar-middle.png" Image { id: shootButton width: units.gu(8) height: width anchors.horizontalCenter: parent.horizontalCenter source: shootImagePath MouseArea { anchors.fill: parent onClicked: { if (ui.state === "camera") { camera.imageCapture.captureToLocation(ui.parent.plugin('Capture').generateLocation("jpg")); } else if (ui.state === "audio") { ui.parent.exec("Capture", "recordAudio"); if (isSuffix(shootButton.source, recordOffImagePath)) { shootButton.source = recordOnImagePath } else { shootButton.source = recordOffImagePath } } else if (ui.state === "videoRecording") { if (!camera.videoRecorder.recorderState) { shootButton.source = recordOnImagePath camera.videoRecorder.record(); } else { camera.videoRecorder.stop(); } } } } } } BorderImage { id: rightBackground anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom anchors.left: middle.right anchors.topMargin: units.dp(2) anchors.bottomMargin: units.dp(2) source: "toolbar-right.png" } } states: [ State { name: "off" StateChangeScript { script:{ ui.visible = false; camera.stop(); camera.unlock(); } } }, State { name: "camera" StateChangeScript { script: { camera.start(); microphoneImage.visible = false output.visible = true shootButton.source = shootImagePath ui.visible = true } } }, State { name: "videoRecording" StateChangeScript { script: { shootButton.source = recordOffImagePath camera.start(); microphoneImage.visible = false output.visible = true ui.visible = true } } }, State { name: "audio" StateChangeScript { script:{ shootButton.source = recordOffImagePath camera.stop(); microphoneImage.visible = true camera.unlock(); output.visible = false ui.visible = true } } } ] } cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/toolbar-right.png0000664000000000000000000000221112301417627020305 0ustar PNG  IHDR%qPLTE~~~'''...CCCNNN$$$(((...jjiAAAeeeVVV*** ''&+߫{tRNS$&+,IIJKNS\\`ftvwyOLIDATxYw@W[V @$ ڨqVܪb~z'CK..?~?PuK7۪?}QVWnhoev׎ou=AyηĘR̬3Fן. T5S)$Nܫ(YyKv\JqpT2(es5 /^TE˲Jؕjm0WQ e}z#_-<UUYe*KJuկOjYD=5-RVA_AG\rU?a(;y "~0I>JIM'ՆQ+k^کLJBqJzfu)=י, jfl6I˗gaPUY$,p_jB6H]S7C\,v&mJ/CVa?2'aHGWd1 3諁 dAߐ2d @2 d @2 d @2 d @2 d @2 d @2 d @2 dsT>N& V2LDgXqcY* T1T3rVj<[<#%ʮq6sČ`ՍgcA0zȞ D K 2eIh:Ԧ $d#;rvN!JjG$֬߼ut\ʰV]iIENDB`cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/shoot.png0000664000000000000000000003413612301417627016677 0ustar PNG  IHDR~>tEXtSoftwareAdobe ImageReadyqe<hiTXtXML:com.adobe.xmp B>D4IDATx]XTG׾,H/kL,bn,X@&j>$jL1OO&$;64 @FT4"U{3w{v;3.wwf9eYMW7C7Q¾ף}ʖ7Wpi#b ޳^_ˉ M&d&dDkYϼV@̓,#fڵk5k;oloo_KPxrL0LjYP5M:G*aNN?>p¿bbbTt 1ⵘt%n2__{ww6vvv-hY]ꂂ;yyy/]tzРA$HLL 8Mk T;P]kժ7ٳgﳯDի4iimEh#_Ap[PрV]VyHܒ(p9 %*X݂ܾ}{.[kT@|W3gάW @J bcǎPZa@cٹ/^LIIT &B I kkk@9zurrR:::ڸgp`[F˗[>:$$䑀R@")'ɚ|޼y^ƍ f]Af=zڵkO._ܹs)iضT `ձcGg___f͚{{{{ԬY*x7Px,1bj<ޫW/uMdٳ1Hv-eR,@&y׆ Q&S)& E0X]Lŋw7mt_~y^CK+MsIOAΰE`$ૌ jDԄ F6SU8zȑ|POW輛IKB@(ш :LKONǃj!QoZ 'O~HCCX++PXJ+LQ|VT|Vc pvzA#Ͳ%+?~9̞=9h9'u'O3GSNFՖ-[ Psmԩ 7o`kHv!]h!Cѽ{&uܪ::99ۻ9)xٳgϯ\Ϯ]$$$d/,&7nl?ڵk3hѽk׮֖S-Z4$!pk>'tkﲸ,6WȨ(Zuh|  UG5??L WhΝqRaccܒϔtJD#I_U/A9j۸Ic+W>^089[vr qf}ʪ5 l+n[T[dn5Mlc40LppWhH۷oO_.Ɣt2m_"%*\/YA @X8\BM41̓?#1wp>T AGG LZ \_?o ˇ"%G])H<+Mz؇ݵk?jIc)wqv֞={&d_Zw6]:wy,軳~G=}4˨]Bt{(6__fLR=m=|Dwg.)+UVYW^CDRU("xi#KӔ@{jyv͞=vXWॼR+AnygʨB㪍1"rGG 7YrMUJ޽"g'Y |sc8`chJܶvYvWsߺyG{vZʵ*)vf͚5KbRM(td VX+(r\i.>+ITј)̞5kҥKS/͛wHYLV4js΍pww-姓5H'M4w5X#H~9g`30uKpg  J0ཌ*gJ9 WZh1[*"~*R9<~Rcǎ} A #KgoaS6mBP5bhѹǏO$$1[absa\̙3ѣ]qPg:wCiU>SZi?tK'Cò}ّ$I)=_K|6MIUP'YT γzժڶmkǏ'{Ç pX5zTgJ#h1n_}-nݺ/Tё6 KniW'8:8q {zƍ> ".Bmo3&LXg?tSsI+o `^+as{.$]hѢfm}}_@v*&|Z,AVKŒoNͲ^ޮ]^~xbOhg?&e ^IhD.\믿Í˥]4qǕE;~,f8v,Y o7h@#zF!zN:R_jUoG$ ;y8Ԙ]7d CCCC^]7Vx0d?rpVU* ^+'yf4ך%z&2e8vC111ϦҮcTY߼ݍ}cO J=ae#|͚58u4O@ӧO8qO >$ϔw"|P YryMam*j,Uo`3#g`_jaWLe_+Vc€@ƣC'ϣە+W:zi*ۉH (E:Ɗܝ;vtpvvOUҢE!/$>$.cyWrquu v9֪ED'OzQƤ t(-3Q_Dl{̫J43yh5-OFjdZaY-[ՒkeSw{6eҢ WU\-F6h` E"/wn5<_zuѣ^Qw؀ =ք L9~: l UKX^GnąܹW:*#R)>H֫ L {xpP"ǟ(qN~6'Ddĉ!a D 5D< m۵߄jtgɛ&֭[o}K,X(2"")?P.jݺumeYF@Xʴ,b,TVxQ'M1QL \-R+PU( iV'?9j<1=~1c~erLC Yɓ[{ 9D:%\۷/p:uSHTy~8!!BtDfA#6h_\R=={N^HH<ϧS;iS| rSbbbv[mŁN  t[|uD6s={;2Z~|||ݶm"MO}u`h zNNO&Nʕ(}Bi e!M OL3 sr֭;v꼁2L^Trȑon.&Mۢ#[l]^Vw%y_;ׯ'scHuwLV$$rfᤤPEZpI<ݪU zFFFʐ!A :L mӬ_0B_M'j૊ fSNkݢm1e˖Mq'޴Qɚ'O<~7xgm@~m[[[S׮]{Jih$E4]fͷ+ t?xlyiiկxض+]l*66pz$Ի=Ըۻ+{{j[(MS7nxd@Ǎg-x=?}TիW@CՊ=555= pӧ44B%;x"قVZ9XhXCOK{;0$7y0777pjdEv 4!d6~/ }9]SۻN |8BQҘL2)tҨQ#ҴO-$N8.Ykk:Fؒ‡QgPX%ރU$/t`\xӰ;%vl{YW 5zd 6l Z &Kji}AssssD|m! CL=g4hr0`]bbYDP8i%'OUƀǠocu$:w5"lD~2̋>tBpQ;=:_ROLȫtSXJaFJ(|2^ɗ#8ۻ,%`cL Ձ$0\B`T*-/^'&fs9)B?Q=m\)}~G\.S9z/言V~e4\C RiX~l@'n 0jK,gKy5ymed2"`$e@@xxtRjlDwɌRi-+G!%̙3uG"zʀT*T*Z(e2FF[t>aaC|"mphbXTUai/OHHҵ6?,snҚ*,QS&Kwt`Y]LL c49.tyGӱS ٻ9@/^&it5AAnER;ۻI0 IߦR[r!xr!Gmq?WKn*^rc*_˅UҖ{'@>M}gq"*ԥYwK.]ZuQqTr= :VEtRZ |A[sf<IcE_v/۴iueǏ5/^,wN3عrM Į<'Uƍ{}3m۶uPe˖B JtݳJ KViv\x "gŁDd^^+׏eV" m灷#o] 7e9˗/s-۴iS=+V$@oݺDw b9;^%''itt/9}0} 1FJ!PtI1(SF.Wh(7/i9ä;R-hO~kݺu8ԧ_>;86W,q :E:<8xg .mV LY>W:zUԽa:EEF~ L`rk,}<<< ? Z%AtG.0 8˫{jǎ( ɘ}sUEHҷAC.'bHuP(T-Vl =֭&\)^lU|9<;|p B999gƣzQD@]ֱ-٪'Mx3Z,6۷2O9Bu˱S&hɕ#vD\U/HIN{^ёǏ߸}V +wQ+"|F3w3fx(<*[ȾiZ\kLo4 ;v SM&1+B/ԹN RYݹ@-`)VjQV5=[0A܄Ip<(!Qr$ʕ+1b- yY*Yq]X"yx!zæ$)((&:Pkv2uqsJ*o\" B|}SBC%+ԁzd{iǯK.Mf@PO&F偺7z&Ǐ/d\)>zK^- صK}n XJ&c!Bs\fJ佊TOs3[+a bJ^('8exo;iҤZ@2ESNR"+ӌWl?æĠƒ6 uaLq&E4quuuU ]gî.Xr-\keՉ ěeHY$XdBB[FIlIsW/L0`]aZ-Zs+@˫ccO ]u {4 !nh񁈈 ebb"%rgBC׭kHkhj.KF6}pYz 12`ۓT7(y]e :A=xf߬YwDu73åsMk.v̙-o|>EyP1a0aXt "9^^$I! $ddB\ll6mZ^㺖0Wx2k̙Bl~eeeml@bJ믿ޅ6` ?ԣGP^1Hajj? tI|##"Ɓz<+Wud젧7n%x9'M4ܹ"[K?G }`~A~lŊ+(xY'P @.k:vEՖv+Wl &A. X.ZIϔ1!TbŊG ?(ɘUVu];c5 ޚ^Y~yG}-@Xt t4~Æ "%`k֬"v]+N3%Ѣ\o?z[jU>SA,֡ Í741~mBey¢OV.[|_R<Ǐc0*ۿLHʔ;fIw Glu\/Uw T>aQQ3gDϝ3? pBm`?2!KHIǐocƌY$#YuڰaC{L4_ `,F휊޷o_ \,X 21c)wvʀ^C˾(I?k{*6sOV*~aaO?]y95UL8VZ ~4b,G<<<¨ReL]OQ Jvm*1KAc6q/1-lBBBΝOY0D1\iJsR0k M6g0>Rֳf;gS1" dI?"dd{ >d_}_&Ez˗O<9*% L)A7Pcǎ.Wb(J޽{ٳ@Ak?kpEna|͗0ˁ1"~WU=xKH: ɲ;PYC'l򘿲H^Ib۶mܹ\tFi||ĝiذС=b7;(J8pWjѢ3guYfݲez &s Gx(ɓf͚MuC-Z֭[9uduZʕ+ €+er+n=ztw)rl.% jF޽7>}`Ijj?_|B[nP?QR*"P$Cuǎ  Fpd.{cΜ9#<Rf//- ds ~R GWܽ@]TR=HKZkE./fni@+*6`>׺C$'Ovρ?nܸ *>~(I{yy>&[R$@ @ERsC7Qv/^\RZaRgG޵W^ ݖL:{}e ʵkA[ݻ3e8)X}7nlmӵkfhcj !|ڵg̘BߗKQJKY|abnч) L1Կ ^w)p *M㋎ɻ^i4nBXY)(QZ+i(엯R![ 8zcq13o???ٳg7֭ؾwj%h" QݒOfy0}'H`ݴiӵ_~ <E祟Q[Bx(4Sע  &x=lx#$G92uni>6… ɤ f;vopn8p9exiث}b#ދgG!LbSGfשSg7epvܡWQYzrZndPw6KSSS3ޏgϞ=$dEWM= ?<((߿6 B&;,jܹW^U/%z`޼y^LWf8J|VeA]{rΝKMɡL%(P:v 5kۣf͚UQR,qÇ}$xߔS"̟? (l\"sQmtM*8UtW5 ]ccc#Gv-ٕ+1L, ꐐGSR飅 oߞ M)((ӯfΜYҿ=KuE>>MIہѧVF!KbbbO8ۖ K3 \kժ7ٳgAUŒ}7--mիW6ią̪Y+r __{m&P((n55}`.]:=hР-6uJ<MZ_3ڵSΚ57 &\.w肢P.ɂ *;jjaa#J0''矇Xp_111*">#`_^I@Q (kS"`Mn`Rb,xOIouיoߥcK7_2s0o oߔ{?* $KIENDB`cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/close.png0000664000000000000000000000071512301417627016644 0ustar PNG  IHDR00` KPLTE000PPP```ppp tRNS/O_o2z#IDATxA0@Daf/zk"}%cwBz <_Z@!Rl>% ͧx oES<9S9^+abKGD pHYsHHFk> vpAg01/IDATxy\}W{UWw $\dRvSEɒHH)#؊}8c{2=Q<'L9đm%YD$ApXn޵/owzHbyV{KKKKKKKo"n>< tP{;I h,V_=1)B~J)v])ѨMVW^7 ] o`j|Fwb)z:$J/>?u>]e`a[};㏽|? !^W<^Ҽ lΔNFs4FV_vh^7_}S|ݞ@kK~ *>> [Ey$2ki ڸ7x]`Mi@C=pp ZCċN%}o9X+\< $&V կXiDy{VP߯[ W&sH^Ut"|~Y t MБZ2w`F,v-艱Aw_}3|n=q/[ xݺжgW͝6&&[㏟෵`я [6TMiw,N$8\͝9CxӺ)?}BCuW%?LJ>4@یhYɾo_%i7ih5艱[/ w8r4a݇}_]!Z$JbV,Z ,vO oi-٬]#h] ᶍW4鮻Ӝ+޿ NxөW χ!\ǁ?>}UqFRB ^W(I$-*e;?ύm;>x)) T줴?0G?'"hkn%GB7<` 2u4wEt)ٶm%WOֹ>ﲒ)U0XH(_Kr5wu!h]wѨCOK;@*XpP|Fض)2Q i sҹ2^1/X%VtP}^⳵  cØҌޓ}Ñq2֍v٨_w6 MBoV8ZA:}V@# j/ v_IG߲rmJ{ZõZ@<;ՇmF;-2 6&;e% 1"ǥ|3'HK,ˁWWZ|T*l {A!]Waے駯5b~32~q n!v:ƎX\ x}^(S()" TP=USyLP5!FOŁ>:뺊;xC=@iP~ 6&L^ؑ㻩V ;-"nYb'P+O0^qDneϝ^{:Z+?~SBYkq6> vFvF@GIжmK#j3e㺪 Ǭ˕_fg_&ma;O_.@Xc y˂G;dB|b#}Vж.50~c;1[׋L&Z ۮ%t.g4AW+>oR/6@očx7Lt`hv6 PDS뾑GF"SJx¦?l@dZʔu]F|'uݑ]kVPHx^BŁgNױ;k+ l* V&GLT:BShG"CiɸictGiѨo񝲁DܰA"v hAo_%PP'krBD"{ܷN^$h5tm;mGҟ܀ŅZC:AX$D9;2|H:ta0]o)Ɉ$tL8@zDG 0>^`\šQ"vg0<O)oahSV#_R:Y^WI&"$f~NHlڪѨPنNr:!7"-WP^/[Gxfh8ʲtxf]lQ IU_( a !m,. &bYEE.FɄXlz[bf@lZ_";V@@ka 4Z(W.VL|Е@+CR d+j,TF-^Wx&DbX7bz+8}^M`;j`#oa+n`JupU3(Q kBZҥ.]^m)R`=.d-#6&6Ev-'sA`.DcrC#KJ,-]2u@ 6|$ DY4Fm7^ u:RV>T+?WL̘!/$$! divnכm–vRAZL,̹D#70N)@ Ti?x}r*S$6@V븮G&$Sw%ccK;n uUH~k0h(0͢58a nY/M(<-cmQ%@ZHbqA2%JI:#HzJAs+pE˯(fN:V5FԯS -ߞ >?~co$\\C_|X1]ҽ@5vWsV!ćFzmWD*(!YXTkqA&)Xq! 6UI$&Pf RD Q-cɓ/s/kƯk1FXأS(h @Q O5{ uo) 0U)I)VA ׿~|hr$(%Dp]D"M~W<8 f+ EM_Vuۿo%#@]@a; RiA")njr 4ϝW_#ȤL4FFHՐ~ ukw+hq*^rn^T~Z,s夳|@[ bUHhK+yYЛ8턀4۫BOII4֌1X+3.6Tt 5@c&5^0F6!^yxRTW^O'1$# i;j@jB,n5Hh~BE mxiryM"t3""NH$L/ 'dڍ`#@ض HY@5-k΍+&fR)M3M_]AK7vA R,|m^<I;=CA DјզZ D>)%RZJkƘHEl~ fjF>磔 Pz]Q+"hd>Cïc1Ϧ˗LrzN!  [pI 3U,6N:j}mٟ}Gg ޽Qg+5bc>̅{8_"$EbŎ#/3+8 U!؎`߾8BDE,.,Qkp#`mH&u5Պ`nQ3w`.L`mw5#h lnUlRxJ9;x>|#JEcs5JE}1z{#koG(HK(v¡P|9}-z3 +lk|18X<<3/HL!Imd$SɤM7 vǪT&8V5󋚥{6b1rBZPͨ`l\h0fQojg?73O9:r{ JlvVCK&scZ8 C׻F( Ź DJ)'ݫ螌̂I'uEOJUufY7BI=I ^-"Q5MnQ,,)n;bΘ\Z ^Na@+|A(g|ul=cكt2 td$}Qjm8:jNl[[ qښNt6r+3Wsrd*<XBXvNl0$d#}NlWɸb1@"Þ=QL2<'!0!/p!c9{gAssk%nJ- @a䗞7?_W^)X}ja0>X@%o,eԦ'Ր-wmI(V4[D:4oDǂm:ˋϼ 8xCh~+1ג=Rɓ+D,8СQ,) ! .k@Ԥ\=!5amq7shBP'󓽇ַ'cc_*0| # NV`ۚ[(,|Opbfc#&Q3> ͇"L澆 ^m| Xx`hg;1U61ɤw[<{ρDCwEf+LOUxŹX6Au*lD¨ %U F7@Sk !L&ФWHcW&HrHbXnciєN3ZIBj ݈* j5/)5aC)rM9VoX2Ws9V=fIL,1jKPĸL X1R4KVZTiۗV&de:=m91HdexkJkx"r6Yl>=5n`X\tq]EuxqkB7@(\5L494zG2iL"XB!$O\4cSf3#D"O R _5_k,$8v+^\eD_*>Vى$hOZ .3~@%亅CZi|J<*|n]DO15Y{8t8,{cj%>R1.i&ccۂ%U\G+ѷCJa`0 5!Ht6 J ~ 3Ru`?g?Gӧ~+gm[0?Woo-R*zDv%š*ܫD$oFLy!p+y& 1hI8x=H5!bRDG>.x,wݝv$j,A!P,fD+[uB:?) i ؆HZrrt:{Q[iR eK"ݍUa Pĸ-/>(/~붭R[O-_afJ$"]-kj ˬ_:O&-b1kMVLUHΞ]bamm]a߁6DTWN?wfԧ^1 k|f ԪjJ+9T}|rLӧM@0zbͲ⛦#Q}ť-_vT!hLm<s BZkn/~a"Ǒb%:T^D'CC V=Ԋh5{# jX01ELcqU+HAqC)gˍ2ºƜLdVkC%אT4%@6:koF?7FW3U|Ϋ͆% v(U@7z|JS<,C1j%rF亦ܶworH!LAX^4?*5#]WF`"z[(i4E87HaIߟjW0#^m.^cҴ5r.g&sG-I[fvmKrS_}pS?O3. ׀0UA)|,,u'H$,r|hޖA8/p"Ғc_g1L{.!]J$SZMs}T܊Knz"ishcw}%W$W9{vi o8oN装lZJ*\B.bI43¦ӘQHBz[W 04^j JB׮YY#dZ͝|O^M}y g1_*&`wNZQr+.n]oL%WLO<V8?SSfg*((m ߌ'|^Bs^C/`t|c7\ `䖯^m$>03U;ߙUkVYXTu2A)Uf3߿RS34I#>7Lsbv%I$z;KN[) !uZnbuS-LoraJR3~&nS|=;2p?qZ+ZbiZ2Ͷqaѐ9#=y|Uzstz{9O[vxczr9T+4G&Z0azhȥ H`:CA`+1c&C^0%hDFQؾ]kPj| wYۛ5;ܕ7w 0'4dy Jy$0@h2;0~viviviviviviޔX o%tEXtdate:create2010-02-10T01:18:00-06:00uh %tEXtdate:modify2004-04-25T16:07:38-05:00*IENDB`cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/microphone.png0000664000000000000000000002425712301417627017711 0ustar PNG  IHDR>a pHYsHHFk>bKGDC(OIDATx^ U՝뽛ivYUPhAAYDDG3cb&KrL$.U:e2+F1n7\Yek^ۻNխWP:vSuusmE-j 0|ǎ4l)ee3jf6{ȑӃSc(-0bO*95'0~p3;ubm xף||NN(,~RnthٹG..++wZUUk[jkۢ[/$ee{W*\lmc=6[^skk32:\^R2d3G*uӦqƍpA\QQ5knqK"Oƌ9^@XUU}]iرuW҂#YYfu԰X߾܌c\׮E\]CC;pJZ 7;7bOnnÆnr7dHoWSSzgVW{78}v$ZIuu/wWRR;inZ׿t۷uoY Q(vŅw6;Z^]Eb^Pu{{|<):u:îٹrrppThw}v;@ ܃~Y;ɓGѣJzy tұn^nift/ի"|MZ 99E (!iN׻wWm^S\߾ /^zIa[kjv}K$8a OIN&Ȍ]TR2_^4\Hd?wQ]o{)7oB>@ӽ}Uoe,EI:t| _Vv <%Ow6(o̘)ū{IhWn֭ ]`zU ۾enoCB3p Iۺ^{5k#4jk&tJv.j}z/ml!og\wǐ!CVnܸ!2/;"襲AIP l% D0,Dܹ5~!@~JgxG@4,Ŋjݷ0Z 陙YTsS YrIg曗_ӯ?E29|#ï@"r 54FK&~Zg,RG~f1@:(!UpHʆȜ R>~}Ν E Jy D`1s02c^DVlxCN<H4:i책vqΐxxlϦ `76n( ~UJwW\1sLItd"t- g "A|װY555ERxl4` Kj d"?OHj,zU;#u% B$R%ǴW2vXDVi;S]8r\V6y|,d+c 'H}r8~79@4e*͘P{4'4K}Cբ0P(JJ[ cp~+PڻH>6x -⠊XkXˍ4@n@S}c˽\CR>~e&,'ʍ7~9< Vq\SS!MS $liFd^@'aY=B8#%SH5w tR"HA?_IItd@ґ8qPT+xݘ%5D;XFpQ܃Oaa&qIK6Hz-"/@$5Y\6S #0v%U?ssUE\c@@Q bk5T?>I Zc Pa1?hAR#5nDH= E[Eg| B3xC.!D0 6d&BF$0)UYzJd6,yVN_pT yMqꩣ=h\'hLgFl묳Inذ}|e! -?^/5#U\dl^k_Hw51 "^[H7 r\BJG(cK`wUf̙37^Ze7iOҥKoSG&L3jirzL5s|Y@ 'ߡRǛpb!dC">c*d&bT&Jf I,2@ RDUk0]R5 D)pNS=]8@r Kğvwٺڵku5ҺD~}a!z$S]SMD*'yVxqǟCk̈,J,>K$?JS2)?hz˘?RrFCC i> /% P, H=j_6==1& s?bHasT8&hCiG `61!i_Ļ瘚A $ʾHBD6&Ϡ7jl> կ:׿u^^h44vP. 8&uۥK EI3D'_9}' }ʷI4I (  CyxX?Kx NEY0/yp04p:&!G)sI S=DnOAkoh]va xn{$>nYxpinbWove'"ch' c'_?x) q(X'9Ypcxw3 ҏ|oaB̩#DO0eFA2@~H$(-;,Bn/8"v \oϞ=U&𪔦0Qŗ睦|HQ+?Y51h@Zȗ$"`]%Jl.IcЀ '˹3v\=$Ah(:"v]wIj$<^2 ;Mټ<%p2K@w4$׋ld2JS% pH`I M$]P[ "sn3t? g61jԨz]իӵ%$@~F6ID삂˔:]/^{e/-T]/K^llrJc_.fHQu7 {ϑNf'ahIfȣʿ>cP`L B)Zm%볳cq(-23!&NRe՟mD32R.pȷ JbOCtW#>rG$PI=G=' $/>`y Mdh7Y; bꁀe%p,%7w o}5i99?&߱k]ϺK4iv.@@ߖ"Iuqb1E@3ԴD`{C>!{H3{F,N&2>cߓǷi0{N/K_di  dlB x #㱟`B 3ȁs ЁARxF0̜@y54m)"j PՑ~u@A5$`ߏa!ǀ0}F $2p8ga\盩csi F0H(.Cf81F3ƾξC3„AئvmsZ ]$0M3c?! 0753n-D0NZRi1Z):22VQ '}467 VK9`G_3DŇ<6EjKOZs`Uwtf`64)153k l`-"9it_IecR -l2?fTCAoI XQedXI&&# Ø@HOO^Ӽc~1ggXԠ1d&gМɲ4i߲bU1!Xm["K5d 9YhbXd~rr$|fm|f2y%oafDL @ 5H33\ȔdH@(G#4KFrKվ9ϲpDDB/.m,$H S24}uKYB$-P:ul1s&z DJ:)2S}+ P(ՁmRښ+۽FkjijTjb̈́4QfmU5FXrH[xtȡ ١U5~P6G+" <LқdVsuH&dڔ̜?Hg j6oaROJ>2 #Vu5@(Hѐ4SRn)g{.$#}JӢ`ryz3!^ &|KZu Ma!uD7%@Sz`SԱ'8Lc t5#ʵpKYT0׬1#0۞oXLDS$C }7>5#gRV =⇍~iH?_6AtdT! .,Bek/i W.YLkjFdS`K-;g jo`VcX{(Bo5"9ɓ'Y|&Mi7-ij $t:ڄs% 6Ccg?ylYX-xWIf_dI=G>Skݺux+#ܰ={5u,6AbG, <0mڴzj8Th{s-{Ɛ~rr٘1c " -k?F%aAIZ#xap0j Wj|'r!4{,VOq}C pm8 c4]YYR`JcwI{Ip(Gд\C!xnԩ7U}A$fϞ}`& @I Nϱ3 tV~|K.yg [zr no}V2B<`N W˫BD{M|g0Yq=w~/.jFy7*D dw]L! RFBeyC KQ!ӰC?TQ!>x'5r1iI٬Ak@sOd/R^4v `$Iسnenbn^Ɇov.֜ RkUQ@>OrEQHH@C,B{O{Ǚ{e9eg Iikh.a~#VC`~oAMu*$ t>Pߏ0 90 Wpdz eK$& Ɉؿ^!`BeekU#{@U`(,l~blR+%6yCz]yJipַH"O2T/d?IqU \gp_~ÿbҥ 1c '3@m R5@tP6o?XC@VFk-SB] 6( S <_<YZ'IyЙ *_"O~O6UYK4~Űڍ7ޘ'}5W^y6nJi^!!/!o?qW4ȡ֌6%yV8Kv{-.rv,vc) a>5!RSs}\;h 7)`ʘp'B1ymEH) oquԟk;-"76 zDϽxMZy[i>XDs@CmQiZ/mR-Lc4F"Ku5)VO1ьQ6t3 D&6rp՜/o-"O:ִU.{PUDvxY>$ob*Gh[񣽄@EH]6J*oSmEK{کO^@dRKZ'CZ,C wr-Sv:S-KR%ճt##:1xd0*ڟ,ouNyϠAy٠!Py9w&4NB4@U%KjPIb*wKZP>Z`Uka:>[gi;_/ӽgr/tV/ !?qSg+:@F,&mo1I? X_Q?Sǧk;UO!Ʃ342=pn &T"&Gٸ9yH$'/I!!fߟy^$Lu ƺ5ƌ!b԰D@c( R F c'gi&k[K}z4.X"rZǵ_A[@\| Tl K*;[g@dAgAz6  -d )!@e xY2PШ{5f;:ҶZUi*ֶZ" 0 color: "orange" onClicked: { root.exec("Notification", "notificationDialogButtonPressed", [2, prompt.text]); PopupUtils.close(dialogue) } } Button { text: button3Text visible: button3Text.length > 0 onClicked: { root.exec("Notification", "notificationDialogButtonPressed", [3, prompt.text]); PopupUtils.close(dialogue) } } } cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/record_on.png0000664000000000000000000001144612301417627017514 0ustar PNG  IHDR~>tEXtSoftwareAdobe ImageReadyqe<hiTXtXML:com.adobe.xmp TIDATx] BUhXA0BDc[ ER[($m6PFQj!BAGeQd) =susg<מ/9d~߽wιϢ'OEC@W ^+Tx P*BW (Gt(!kMւ)>?cd֒M;*9|F&nd瓝K$"{5mdɶR8gWNtRFxad+a vב]OV) vɊ]Cn!õ:d(U ތY ٔ=lLL:}VEv 5&k0g9ȦSD{&!WXk3{|#ЎG8Z# £]Lv{쥟EQd/s86tLvSI֟һ'/ QD J6k'[d" ދ} g }}AO CC4 K <_0v{ %{/$ 0 My-<% (D}:"|Kxq\L2 9 mP !>+"@tT?D/z?Ytגx]AC%gEx ޑ)R] A&kw F۴Me%=W ZD˥hWn=w{C8̃-:Y|&KnG5onUc{g+e8!5 dW*k&@\ƙ[pMQD7εn̼l;U=rB$!Y.\ յH%JQ*Ŭx4rFmTG %9;f3ccw&ڌ+ۗp 3٪GŎ.x?3^ϖzhYp JJm}E.8*<γDC3VWk g^} g7=r?2WYq>W$KdtÜ<~s0>z#3$;$pnvԲØ6>a5'j&聨K|y2a;TO'Ldjz2'p!qjFޞ|[kRn'\:F[u'T۔Ʈ?.?j }?KYDK4d˒p8[Ƽ蔸kyM2Lag&u@/u6z2h<~Hȍ/TD0ȑzW"K{OTDO{z9 p^z-aSćuz9 U8Qew-<9 ߡCᲴ@@*Qpķ3Eq 'tu俘u-Z*}p~pjVC۸·B(TDF[GZ^I+F5JmuhWxiP(TĪ]t8- غFQ*hC)p0PiO*9^Z^T=Î:|W yxp^z:j >p@\ οwuWxjuJ5~p]/\ۮZ% _>9 /-Jx =--|ɦpY IJuUm9NƻAJq U8/m,ԯ #[^!Lf+TDBpαrx פf`#nj4^`]&`&{10iä?룼HFK|hP[Q8Y _1i5KU5uY@*yȿܱץYAdGpM.Ei}%$A w1W|*©Jrr@=ivL}O Lz ᙀxh珑K$DYE 5 F\U*jvdg}&R٫ƛx$Bz1T~n[Ihy1T{FT%bq!$=xmMB܂(#iFj+q`Vr87;L҅ϷO1v@;U)6qG5焯F~<+-UP[rg xͭp4 #Q:^JrVx& 1N=VNN{07n1}y ]{Ոwv%`tbpz^EgPK~(-I+pxYXa") K ~5$q9w\kȄ{½qgtttK7yN$-d$e(J`L OIaB~ߏ9~~p9)5xk #>S eZŽqhBq+W'N c]vҲQQ$3F1e0lZ2| B:-kmBFu/\ÇUW=Dy&Ip.HhX e°P#ӳH[Bt%BVlHKK%SDIǙ,3pU$DhhIUV187oT:uKJ%N0[ N,J  `hkHvViP(qɟ߾}[Yھ|'̬9-З%[" -h31,'q]]] _aTXȒ(>y&`-M"@BZ _m%bZ|!|={$1Pci0]$Fmň&Q Br1ElKQ˗eUe04MuA8EmvevgV(b#֥"N//CUٵCguqY"9S 1D,uXw E-΃w_W_4F?gY O@<ҳTbۻA,c*u y[|e).AGluA;;;b',Z%MYD2n € BF G SvWeMHi̼١ZetQaP F{8{U y}X52*.Lٺg^kU,!G%D#GxfIn(2&oP}\cԴrH''' BGkhhT̠ 3&֩2Əʻ rGDvTy^NcFEXO*uiy9B'Xj}{)XZ<*]u nppkT,ػ&VMW{e4#W)yݻwU.ilX Ir vS)PҒGv!%Nŋ?&蔆㙝 ~&ro8?Y\1Z 4E'EKE'pΝyuHuq4u9En%۷o"gtt+yeu,%Ҹ8rI 5rYq"o`l#LPg9Fs~]q,_ʰ"5[lXb:c< R9Fs˷oUòK#=40@k^_<)O 3)iR>|$CWB(- aȵ]'2qwv]x'Elsߩ@b}v۳ZL<^4- )L~]Y%GiJ >)Q6 ^I(%w("lC(8C!PBq!C(8Bq!PBq8C(8PBq!PB(8Cʞ8C(!PBq!C(8C!PBq!C(8_;g7AAIĨֈPشbhl1MhPۄFA* SuSЕ D?OyL'| /qf޽8;o08#c0 F`1 ZLpf;z7<υXɈxqPh$8K 1E$#LFEOX^74 %21a &zTT@CUa˶^&lT@F+G'+#þhۣ yKwaTQΐ8}<HighqFA|/ztFtFVUYF~ 1@?ĉU")>bq RuiaaTY+3 K $K:SitKr($!̨,q#pz }=q cl.++˘gI#@ 0#܀8"Jo޼ZXXHeYc/8uEoܸJ9p--yĦh4ۜ9Y.T4j?K1-r\sέTDSΣ9R偹FRAN[sMY&aމ<1}τ3I r\65}Fn96a*G,{;v[T0lוnsh UF.Mv9tYs'&c[N_~Hti{d(K2{҄#GXU`ĦG} f#zb7$J3YyV{ʌJS__?# 8CqM___ʦZ}'yk 2jAk"9V:#u;wNTUU iODzda_, 2C1b&8D!ћ7o;;;C .P@JR")"EI^0¨U!1b1]!r;^WkdDtonLz,F'F wI@H'%%! ޽{U mXX}7<CKK$%Ĥ*$I. bX3)v!򣃙,&%(O</.N$DH,^(=ª(.NE11B8fs6{#YCb_Eb$=)hEQdaTY bBü*kŋp8qc9 P4H4uJ_W0g1@,8& GFx88Z>8t?go?B,ZTP*z!$,F) 9U1s1W̙羖c1Fw2|f=t~, l۶m(77M")I*uտ EI$ 怹`NyNɈ^>(&obۺts~[r&E$B$R a3Ǝ9`.ce71cw]8MErޅyGH@M}v+WI Fs{{As'p-\,:qH9D !`+>1/q$ss[KZ|'Q8酗yD'x)W*>]MaVc95=3uM`0R_nj1IENDB`cordova-ubuntu-3.4-3.4~pre3.r19build1/qml/record_off.png0000664000000000000000000002354712301417627017657 0ustar PNG  IHDR~>tEXtSoftwareAdobe ImageReadyqe<hiTXtXML:com.adobe.xmp #IDATx] XײVAQ6AD H( "Aݗ%.h&uIȽO1F7[p}< r%(*.𪴇sNaЩ𢡊a?UsTUUUQ^>Q!0o#F1o#F1o./=::mA4444m$k>@z61&^ zWpAAC@}y@OzH|7A5^R#!44 vܙr2B?/ݫ[nm 1I{S2ݼ+~QwPw'99sk]!gfffUgn7d/hO[3[%d ;vmݺuUrV!wZv:B8-%/AXRRRiӦhp R'.Iͭkٳ1K(zTHLw8jԨTaH9Q}ѢE!"\|WWW/V9֊A4VQ٨T9s&xCP?Î˗/NO"'; ~Chݻ, ҟQϸqF@T+**Jȸr{Νˀ,G. bVnnnm;@Dq+**۽{AR.Hڷo_NtӠ#gD5Џbܹso{1Wbt~Æ ZPr A_{qŊ|^dTx tآWlllܔ\X3fD F)N<9m۶6?7Rz'77'H={Fu242u{jS9sf)S^aD^⚨c҈ǿzxxJN wʕ:W&"uǎ-~IXN~D>!vh<,RQ[[[B*h{{{OkwZ8Ctḱvڡ>CRzKD_gY>e'XNܹsVH~ճ/%o浉'Nn[ʚ5kzEě ɿtx凋qKا{{{G]HvKz.\pD2ARơC62qV1OU34r >|L Y (/7%~n?!!ab&~̘Z;vM0!T*}k|rСCwܿ@z'=ZdNy1...uum4ܟTz9iҤs4!k7VP]VӜ-5Ldon>z ~ pHqg}6{"傿 _^Rz׋׍׏A:A@1F\E?-"]zu DpohW"%{NzxVlzMp XO?4.<ܹs=VZ5Zw\Ƒ ~f)A.Z>}zoqVcpJv}zIw/Nע/8+"Z`vDy i%Vz"pZn?\x4em۶3dH h!urVэ7N:X5˗O>I$b`T|j(E &?!KP?2lذ{=&Њ]ipį9eӳHkR!n\*] эݻ[jj+W䋻J… w!y [`Lk?681sׯi֭$ұ8<ژyYYYޢE.[,InІ%XTO 16NʻمLRզAAAy"&?,utt,wyR<'xN֭[۷EYP{!A{MfPARW_ K,57KNNcٻҹBq:ٳ}9:x%@uʐZYA?5"'~'F0()~7 _֯8qbAVQ+VarU?&Y;Ho߾kuW2Dr 5  /$G!:O|o]R9_uwC^@$~界 Fx . 7q%3|މ ďLKw\2jY`Y&rz !xn߾}0!ŗ}P٤IM VѵkՉă={:2)(( v%:~L/X\M#Tzɥt)))[4i҆{14"Qgʕ+sEj*XM\\5Մ^z tݻwd,&_Z>+܏!>"$ܑE7cqa=Mry[+t3g^p k{#E4J!0~8!^ C|gqy^2#}ׯ__®K+8e8K}Tiu >KDH&[f۶mH7h"HkC󦼼 䗩 ߿dee]`#W&ةCt}Wj\đtrwB/W{|2ݻw=!nNjt~a ZI#YE˧ǑHE/)>#|o#wMi>EDDI*=]|}"SпW13'GA1y|J DywI?G"##%Y"+'a-p B5xNs7*FP|-x)Q{mE8@$GH xc&|դq#W5@Y|d>;_JhƞmxިlyQɕuر%ϒ1)0{W,^/󠃕7^Iۉ/&D/..~?k&5l2zNx\uDyިZWNqOė_DV σ6\j*GȂXZZҞ|-ýXEC%WɽRqqeZUQj77~9Z'\Q*#gMeHIk%52q},9 H xX7WfUí7 )Mz =J|DV σx7^Ik͚5k>*#pfǑ-jKX <:"A)%OҼ1۷=#߮];O'+*x{ZJ3O>:F7W8Ѷ&ʝ3X8Ȼ|;99y2btyr)p q=j;N}/*R*|ӵkڷo-Jdڂ#/h֮ҩ8!g IyuES>ϟm6H0a/GxF3'Yt=qq"^6mڸ@3%̤ktş]֗zGq%ŧ8m捙qZZftto@:5((Ȗ^PlnRqAGyu<| z瓉xgN+W^VV9K֟oi|e"w"Fi}q'Y<Gٳ;*\&G9Oп,%#ˈ;ɀx<;F>ּU8.~p5u"& |U/gQč NA~DaEC5EiF|'~+K@^X<+?+?B2A>V_~9M;6NT_iAUzRU-A|6yI;ϗA" 6̧m۶I-xҤIgqҁlll^9s\/(N}~gb(Qōx [#D|x5ܳ~ƍA4>>t qaTami(c%MTHkpړy8CObl~=$$ĉȑ#G8vΆŇݎKjtrqlGCBh!~# _d ǰ(ָ(4[[޹s*VoE rۭ׮]ۓvC ^`y3Zބ1%F:z8t^DݤqQ]U]]֭[DDtLNNNyzzzСC}qd 01 133?TV-Ѣz-RήhJss/X:s5NzDvu֍l# &=ۻk }֕Jwzʕ}:ҏG]vBaۣG~8 ###oȌ,[rjM%@SNz S#F=kٗ(޽{^uqhR%¾B<==[C4 ] SNQJrرKǃ6c))HzBf?{,iF>̘1gDdWgܹCDsbꅂ4C@-&&!>Zv4p{$ql;WIm+q;S\ W'0\xqG7n*5СCQ#F8MZYY }]i]K\__-o.7~c &JY\[˗ 0oDGǾ\ZtQZ,*  g"q&M:G ݄MNwpp/[#Fϋx@z8jԨgΜɒټyϸqFk`]@͌)))w++$x'gVnnnm;:{/vhqr_qvG3m]HX۷?erESYY._,\mdnnn#^ N=uԓer>~a˗k_ iσxjBD<~}s΍@WOUٳgcfϞ}bZaGX|>`ZVV WWkRɄ7u̘1r}:zH@_ץ}-b!< y9' ۷op[WC$^StBJG%HY8er ;HM6|ߑq֭Ka-㢮Yw}Q>:2gܼy~mϋì'xO5D:BY;)a7c58&N8W=["Oqƌ'hkQ \ R8M/  MHQHQ 08{1FɰIENDB`cordova-ubuntu-3.4-3.4~pre3.r19build1/build/0000775000000000000000000000000012301420116015317 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/main.cpp0000664000000000000000000000725612301417627016776 0ustar /* * Copyright 2013 Canonical Ltd. * Copyright 2011 Wolfgang Koller - http://www.gofg.at/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include static void customMessageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg) { switch (type) { case QtDebugMsg: if (qgetenv("DEBUG").size()) { fprintf(stderr, "Debug: %s\n", msg.toStdString().c_str()); } break; case QtWarningMsg: fprintf(stderr, "Warning: %s\n", msg.toStdString().c_str()); break; case QtCriticalMsg: fprintf(stderr, "Critical: %s\n", msg.toStdString().c_str()); break; case QtFatalMsg: fprintf(stderr, "Fatal: %s\n", msg.toStdString().c_str()); abort(); } } int main(int argc, char *argv[]) { qInstallMessageHandler(customMessageOutput); QApplication app(argc, argv); //TODO: switch to options parser // temprory hack to filter --desktop_file_hint QStringList args = app.arguments().filter(QRegularExpression("^[^-]")); QDir wwwDir; if (QDir(args[args.size() - 1]).exists()) { wwwDir = QDir(args[args.size() - 1]); } else { wwwDir = QDir(QApplication::applicationDirPath()); wwwDir.cd("www"); } QQuickView view; QDir workingDir = QApplication::applicationDirPath(); view.rootContext()->setContextProperty("www", wwwDir.absolutePath()); QDomDocument config; QFile f1(QApplication::applicationDirPath() + "/config.xml"); f1.open(QIODevice::ReadOnly); config.setContent(f1.readAll(), false); QString id = config.documentElement().attribute("id"); QString version = config.documentElement().attribute("version"); assert(id.size()); QCoreApplication::setApplicationName(id); QCoreApplication::setApplicationVersion(version); bool fullscreen = false; bool disallowOverscroll = false; QString content = "index.html"; QDomNodeList preferences = config.documentElement().elementsByTagName("preference"); for (int i = 0; i < preferences.size(); ++i) { QDomNode node = preferences.at(i); QDomElement* element = static_cast(&node); QString name = element->attribute("name"), value = element->attribute("value"); if (name == "Fullscreen") fullscreen = value == "true"; if (name == "DisallowOverscroll") disallowOverscroll = value == "true"; } preferences = config.documentElement().elementsByTagName("content"); for (int i = 0; i < preferences.size(); ++i) { QDomNode node = preferences.at(i); QDomElement* element = static_cast(&node); content = element->attribute("src"); break; } view.setResizeMode(QQuickView::SizeRootObjectToView); view.rootContext()->setContextProperty("overscroll", !disallowOverscroll); view.rootContext()->setContextProperty("content", content); view.setSource(QUrl(QString("%1/qml/main.qml").arg(workingDir.absolutePath()))); if (fullscreen) view.showFullScreen(); else view.show(); return app.exec(); } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/VERSION0000664000000000000000000000001212301417627016375 0ustar 3.4.0-rc1 cordova-ubuntu-3.4-3.4~pre3.r19build1/build/www/0000775000000000000000000000000012301420116016143 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/www/cordova.js0000664000000000000000000012560412301417627020163 0ustar // Platform: ubuntu // 3.4.0-rc1 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ ;(function() { var CORDOVA_JS_BUILD_LABEL = '3.4.0-rc1'; // file: src/scripts/require.js /*jshint -W079 */ /*jshint -W020 */ var require, define; (function () { var modules = {}, // Stack of moduleIds currently being built. requireStack = [], // Map of module ID -> index into requireStack of modules currently being built. inProgressModules = {}, SEPARATOR = "."; function build(module) { var factory = module.factory, localRequire = function (id) { var resultantId = id; //Its a relative path, so lop off the last portion and add the id (minus "./") if (id.charAt(0) === ".") { resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2); } return require(resultantId); }; module.exports = {}; delete module.factory; factory(localRequire, module.exports, module); return module.exports; } require = function (id) { if (!modules[id]) { throw "module " + id + " not found"; } else if (id in inProgressModules) { var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id; throw "Cycle in require graph: " + cycle; } if (modules[id].factory) { try { inProgressModules[id] = requireStack.length; requireStack.push(id); return build(modules[id]); } finally { delete inProgressModules[id]; requireStack.pop(); } } return modules[id].exports; }; define = function (id, factory) { if (modules[id]) { throw "module " + id + " already defined"; } modules[id] = { id: id, factory: factory }; }; define.remove = function (id) { delete modules[id]; }; define.moduleMap = modules; })(); //Export for use in node if (typeof module === "object" && typeof require === "function") { module.exports.require = require; module.exports.define = define; } // file: src/cordova.js define("cordova", function(require, exports, module) { var channel = require('cordova/channel'); var platform = require('cordova/platform'); /** * Intercept calls to addEventListener + removeEventListener and handle deviceready, * resume, and pause events. */ var m_document_addEventListener = document.addEventListener; var m_document_removeEventListener = document.removeEventListener; var m_window_addEventListener = window.addEventListener; var m_window_removeEventListener = window.removeEventListener; /** * Houses custom event handlers to intercept on document + window event listeners. */ var documentEventHandlers = {}, windowEventHandlers = {}; document.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); if (typeof documentEventHandlers[e] != 'undefined') { documentEventHandlers[e].subscribe(handler); } else { m_document_addEventListener.call(document, evt, handler, capture); } }; window.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); if (typeof windowEventHandlers[e] != 'undefined') { windowEventHandlers[e].subscribe(handler); } else { m_window_addEventListener.call(window, evt, handler, capture); } }; document.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin if (typeof documentEventHandlers[e] != "undefined") { documentEventHandlers[e].unsubscribe(handler); } else { m_document_removeEventListener.call(document, evt, handler, capture); } }; window.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin if (typeof windowEventHandlers[e] != "undefined") { windowEventHandlers[e].unsubscribe(handler); } else { m_window_removeEventListener.call(window, evt, handler, capture); } }; function createEvent(type, data) { var event = document.createEvent('Events'); event.initEvent(type, false, false); if (data) { for (var i in data) { if (data.hasOwnProperty(i)) { event[i] = data[i]; } } } return event; } var cordova = { define:define, require:require, version:CORDOVA_JS_BUILD_LABEL, platformId:platform.id, /** * Methods to add/remove your own addEventListener hijacking on document + window. */ addWindowEventHandler:function(event) { return (windowEventHandlers[event] = channel.create(event)); }, addStickyDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.createSticky(event)); }, addDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.create(event)); }, removeWindowEventHandler:function(event) { delete windowEventHandlers[event]; }, removeDocumentEventHandler:function(event) { delete documentEventHandlers[event]; }, /** * Retrieve original event handlers that were replaced by Cordova * * @return object */ getOriginalHandlers: function() { return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; }, /** * Method to fire event from native code * bNoDetach is required for events which cause an exception which needs to be caught in native code */ fireDocumentEvent: function(type, data, bNoDetach) { var evt = createEvent(type, data); if (typeof documentEventHandlers[type] != 'undefined') { if( bNoDetach ) { documentEventHandlers[type].fire(evt); } else { setTimeout(function() { // Fire deviceready on listeners that were registered before cordova.js was loaded. if (type == 'deviceready') { document.dispatchEvent(evt); } documentEventHandlers[type].fire(evt); }, 0); } } else { document.dispatchEvent(evt); } }, fireWindowEvent: function(type, data) { var evt = createEvent(type,data); if (typeof windowEventHandlers[type] != 'undefined') { setTimeout(function() { windowEventHandlers[type].fire(evt); }, 0); } else { window.dispatchEvent(evt); } }, /** * Plugin callback mechanism. */ // Randomize the starting callbackId to avoid collisions after refreshing or navigating. // This way, it's very unlikely that any new callback would get the same callbackId as an old callback. callbackId: Math.floor(Math.random() * 2000000000), callbacks: {}, callbackStatus: { NO_RESULT: 0, OK: 1, CLASS_NOT_FOUND_EXCEPTION: 2, ILLEGAL_ACCESS_EXCEPTION: 3, INSTANTIATION_EXCEPTION: 4, MALFORMED_URL_EXCEPTION: 5, IO_EXCEPTION: 6, INVALID_ACTION: 7, JSON_EXCEPTION: 8, ERROR: 9 }, /** * Called by native code when returning successful result from an action. */ callbackSuccess: function(callbackId, args) { try { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); } catch (e) { console.log("Error in error callback: " + callbackId + " = "+e); } }, /** * Called by native code when returning error result from an action. */ callbackError: function(callbackId, args) { // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative. // Derive success from status. try { cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback); } catch (e) { console.log("Error in error callback: " + callbackId + " = "+e); } }, /** * Called by native code when returning the result from an action. */ callbackFromNative: function(callbackId, success, status, args, keepCallback) { var callback = cordova.callbacks[callbackId]; if (callback) { if (success && status == cordova.callbackStatus.OK) { callback.success && callback.success.apply(null, args); } else if (!success) { callback.fail && callback.fail.apply(null, args); } // Clear callback if not expecting any more results if (!keepCallback) { delete cordova.callbacks[callbackId]; } } }, addConstructor: function(func) { channel.onCordovaReady.subscribe(function() { try { func(); } catch(e) { console.log("Failed to run constructor: " + e); } }); } }; module.exports = cordova; }); // file: src/common/argscheck.js define("cordova/argscheck", function(require, exports, module) { var exec = require('cordova/exec'); var utils = require('cordova/utils'); var moduleExports = module.exports; var typeMap = { 'A': 'Array', 'D': 'Date', 'N': 'Number', 'S': 'String', 'F': 'Function', 'O': 'Object' }; function extractParamName(callee, argIndex) { return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex]; } function checkArgs(spec, functionName, args, opt_callee) { if (!moduleExports.enableChecks) { return; } var errMsg = null; var typeName; for (var i = 0; i < spec.length; ++i) { var c = spec.charAt(i), cUpper = c.toUpperCase(), arg = args[i]; // Asterix means allow anything. if (c == '*') { continue; } typeName = utils.typeName(arg); if ((arg === null || arg === undefined) && c == cUpper) { continue; } if (typeName != typeMap[cUpper]) { errMsg = 'Expected ' + typeMap[cUpper]; break; } } if (errMsg) { errMsg += ', but got ' + typeName + '.'; errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg; // Don't log when running unit tests. if (typeof jasmine == 'undefined') { console.error(errMsg); } throw TypeError(errMsg); } } function getValue(value, defaultValue) { return value === undefined ? defaultValue : value; } moduleExports.checkArgs = checkArgs; moduleExports.getValue = getValue; moduleExports.enableChecks = true; }); // file: src/common/base64.js define("cordova/base64", function(require, exports, module) { var base64 = exports; base64.fromArrayBuffer = function(arrayBuffer) { var array = new Uint8Array(arrayBuffer); return uint8ToBase64(array); }; //------------------------------------------------------------------------------ /* This code is based on the performance tests at http://jsperf.com/b64tests * This 12-bit-at-a-time algorithm was the best performing version on all * platforms tested. */ var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var b64_12bit; var b64_12bitTable = function() { b64_12bit = []; for (var i=0; i<64; i++) { for (var j=0; j<64; j++) { b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j]; } } b64_12bitTable = function() { return b64_12bit; }; return b64_12bit; }; function uint8ToBase64(rawData) { var numBytes = rawData.byteLength; var output=""; var segment; var table = b64_12bitTable(); for (var i=0;i> 12]; output += table[segment & 0xfff]; } if (numBytes - i == 2) { segment = (rawData[i] << 16) + (rawData[i+1] << 8); output += table[segment >> 12]; output += b64_6bit[(segment & 0xfff) >> 6]; output += '='; } else if (numBytes - i == 1) { segment = (rawData[i] << 16); output += table[segment >> 12]; output += '=='; } return output; } }); // file: src/common/builder.js define("cordova/builder", function(require, exports, module) { var utils = require('cordova/utils'); function each(objects, func, context) { for (var prop in objects) { if (objects.hasOwnProperty(prop)) { func.apply(context, [objects[prop], prop]); } } } function clobber(obj, key, value) { exports.replaceHookForTesting(obj, key); obj[key] = value; // Getters can only be overridden by getters. if (obj[key] !== value) { utils.defineGetter(obj, key, function() { return value; }); } } function assignOrWrapInDeprecateGetter(obj, key, value, message) { if (message) { utils.defineGetter(obj, key, function() { console.log(message); delete obj[key]; clobber(obj, key, value); return value; }); } else { clobber(obj, key, value); } } function include(parent, objects, clobber, merge) { each(objects, function (obj, key) { try { var result = obj.path ? require(obj.path) : {}; if (clobber) { // Clobber if it doesn't exist. if (typeof parent[key] === 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } else if (typeof obj.path !== 'undefined') { // If merging, merge properties onto parent, otherwise, clobber. if (merge) { recursiveMerge(parent[key], result); } else { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } } result = parent[key]; } else { // Overwrite if not currently defined. if (typeof parent[key] == 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } else { // Set result to what already exists, so we can build children into it if they exist. result = parent[key]; } } if (obj.children) { include(result, obj.children, clobber, merge); } } catch(e) { utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"'); } }); } /** * Merge properties from one object onto another recursively. Properties from * the src object will overwrite existing target property. * * @param target Object to merge properties into. * @param src Object to merge properties from. */ function recursiveMerge(target, src) { for (var prop in src) { if (src.hasOwnProperty(prop)) { if (target.prototype && target.prototype.constructor === target) { // If the target object is a constructor override off prototype. clobber(target.prototype, prop, src[prop]); } else { if (typeof src[prop] === 'object' && typeof target[prop] === 'object') { recursiveMerge(target[prop], src[prop]); } else { clobber(target, prop, src[prop]); } } } } } exports.buildIntoButDoNotClobber = function(objects, target) { include(target, objects, false, false); }; exports.buildIntoAndClobber = function(objects, target) { include(target, objects, true, false); }; exports.buildIntoAndMerge = function(objects, target) { include(target, objects, true, true); }; exports.recursiveMerge = recursiveMerge; exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter; exports.replaceHookForTesting = function() {}; }); // file: src/common/channel.js define("cordova/channel", function(require, exports, module) { var utils = require('cordova/utils'), nextGuid = 1; /** * Custom pub-sub "channel" that can have functions subscribed to it * This object is used to define and control firing of events for * cordova initialization, as well as for custom events thereafter. * * The order of events during page load and Cordova startup is as follows: * * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed. * onNativeReady* Internal event that indicates the Cordova native side is ready. * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created. * onDeviceReady* User event fired to indicate that Cordova is ready * onResume User event fired to indicate a start/resume lifecycle event * onPause User event fired to indicate a pause lifecycle event * onDestroy* Internal event fired when app is being destroyed (User should use window.onunload event, not this one). * * The events marked with an * are sticky. Once they have fired, they will stay in the fired state. * All listeners that subscribe after the event is fired will be executed right away. * * The only Cordova events that user code should register for are: * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript * pause App has moved to background * resume App has returned to foreground * * Listeners can be registered as: * document.addEventListener("deviceready", myDeviceReadyListener, false); * document.addEventListener("resume", myResumeListener, false); * document.addEventListener("pause", myPauseListener, false); * * The DOM lifecycle events should be used for saving and restoring state * window.onload * window.onunload * */ /** * Channel * @constructor * @param type String the channel name */ var Channel = function(type, sticky) { this.type = type; // Map of guid -> function. this.handlers = {}; // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired. this.state = sticky ? 1 : 0; // Used in sticky mode to remember args passed to fire(). this.fireArgs = null; // Used by onHasSubscribersChange to know if there are any listeners. this.numHandlers = 0; // Function that is called when the first listener is subscribed, or when // the last listener is unsubscribed. this.onHasSubscribersChange = null; }, channel = { /** * Calls the provided function only after all of the channels specified * have been fired. All channels must be sticky channels. */ join: function(h, c) { var len = c.length, i = len, f = function() { if (!(--i)) h(); }; for (var j=0; j if (strategy == 'r') { continue; } var symbolPath = symbolList[i + 2]; var lastDot = symbolPath.lastIndexOf('.'); var namespace = symbolPath.substr(0, lastDot); var lastName = symbolPath.substr(lastDot + 1); var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null; var parentObj = prepareNamespace(namespace, context); var target = parentObj[lastName]; if (strategy == 'm' && target) { builder.recursiveMerge(target, module); } else if ((strategy == 'd' && !target) || (strategy != 'd')) { if (!(symbolPath in origSymbols)) { origSymbols[symbolPath] = target; } builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg); } } }; exports.getOriginalSymbol = function(context, symbolPath) { var origSymbols = context.CDV_origSymbols; if (origSymbols && (symbolPath in origSymbols)) { return origSymbols[symbolPath]; } var parts = symbolPath.split('.'); var obj = context; for (var i = 0; i < parts.length; ++i) { obj = obj && obj[parts[i]]; } return obj; }; exports.reset(); }); // file: src/ubuntu/platform.js define("cordova/platform", function(require, exports, module) { module.exports = { id: "ubuntu", bootstrap: function() { var channel = require("cordova/channel"), cordova = require('cordova'), exec = require('cordova/exec'), modulemapper = require('cordova/modulemapper'); modulemapper.clobbers('cordova/exec/proxy', 'cordova.commandProxy'); require('cordova/channel').onNativeReady.fire(); } }; }); // file: src/common/pluginloader.js define("cordova/pluginloader", function(require, exports, module) { var modulemapper = require('cordova/modulemapper'); var urlutil = require('cordova/urlutil'); // Helper function to inject a ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/example.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/e0000664000000000000000000000203412301417627030326 0ustar var fs = require("fs"), sys = require("sys"), path = require("path"), xml = fs.cat(path.join(__dirname, "test.xml")), sax = require("../lib/sax"), strict = sax.parser(true), loose = sax.parser(false, {trim:true}), inspector = function (ev) { return function (data) { // sys.error(""); // sys.error(ev+": "+sys.inspect(data)); // for (var i in data) sys.error(i+ " "+sys.inspect(data[i])); // sys.error(this.line+":"+this.column); }}; xml.addCallback(function (xml) { // strict.write(xml); sax.EVENTS.forEach(function (ev) { loose["on"+ev] = inspector(ev); }); loose.onend = function () { // sys.error("end"); // sys.error(sys.inspect(loose)); }; // do this one char at a time to verify that it works. // (function () { // if (xml) { // loose.write(xml.substr(0,1000)); // xml = xml.substr(1000); // process.nextTick(arguments.callee); // } else loose.close(); // })(); for (var i = 0; i < 1000; i ++) { loose.write(xml); loose.close(); } }); ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/test.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/t0000664000000000000000000014431212301417627030353 0ustar ]> Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  Some Text are ok in here. ]]> Pre-Text & Inlined text Post-text.  ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/hello-world.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/h0000664000000000000000000000024312301417627030331 0ustar require("http").createServer(function (req, res) { res.writeHead(200, {"content-type":"application/json"}) res.end(JSON.stringify({ok: true})) }).listen(1337) ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/switch-bench.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/s0000775000000000000000000000205212301417627030347 0ustar #!/usr/local/bin/node-bench var Promise = require("events").Promise; var xml = require("posix").cat("test.xml").wait(), path = require("path"), sax = require("../lib/sax"), saxT = require("../lib/sax-trampoline"), parser = sax.parser(false, {trim:true}), parserT = saxT.parser(false, {trim:true}), sys = require("sys"); var count = exports.stepsPerLap = 500, l = xml.length, runs = 0; exports.countPerLap = 1000; exports.compare = { "switch" : function () { // sys.debug("switch runs: "+runs++); // for (var x = 0; x < l; x += 1000) { // parser.write(xml.substr(x, 1000)) // } // for (var i = 0; i < count; i ++) { parser.write(xml); parser.close(); // } // done(); }, trampoline : function () { // sys.debug("trampoline runs: "+runs++); // for (var x = 0; x < l; x += 1000) { // parserT.write(xml.substr(x, 1000)) // } // for (var i = 0; i < count; i ++) { parserT.write(xml); parserT.close(); // } // done(); }, }; sys.debug("rock and roll...");././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/pretty-print.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/p0000664000000000000000000000272112301417627030344 0ustar var sax = require("../lib/sax") , printer = sax.createStream(false, {lowercasetags:true, trim:true}) , fs = require("fs") function entity (str) { return str.replace('"', '"') } printer.tabstop = 2 printer.level = 0 printer.indent = function () { print("\n") for (var i = this.level; i > 0; i --) { for (var j = this.tabstop; j > 0; j --) { print(" ") } } } printer.on("opentag", function (tag) { this.indent() this.level ++ print("<"+tag.name) for (var i in tag.attributes) { print(" "+i+"=\""+entity(tag.attributes[i])+"\"") } print(">") }) printer.on("text", ontext) printer.on("doctype", ontext) function ontext (text) { this.indent() print(text) } printer.on("closetag", function (tag) { this.level -- this.indent() print("") }) printer.on("cdata", function (data) { this.indent() print("") }) printer.on("comment", function (comment) { this.indent() print("") }) printer.on("error", function (error) { console.error(error) throw error }) if (!process.argv[2]) { throw new Error("Please provide an xml file to prettify\n"+ "TODO: read from stdin or take a file") } var xmlfile = require("path").join(process.cwd(), process.argv[2]) var fstr = fs.createReadStream(xmlfile, { encoding: "utf8" }) function print (c) { if (!process.stdout.write(c)) { fstr.pause() } } process.stdout.on("drain", function () { fstr.resume() }) fstr.pipe(printer) ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/shopping.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/s0000664000000000000000000030250212301417627030347 0ustar sandbox3.1 r31.Kadu4DC.phase357782011.10.06 15:37:23 PSTp2.a121bc2aaf029435dce62011-10-21T18:38:45.982-04:00P0Y0M0DT0H0M0.169S1112You are currently using the SDC API sandbox environment! No clicks to merchant URLs from this response will be paid. Please change the host of your API requests to 'publisher.api.shopping.com' when you have finished development and testinghttp://statTest.dealtime.com/pixel/noscript?PV_EvnTyp=APPV&APPV_APITSP=10%2F21%2F11_06%3A38%3A45_PM&APPV_DSPRQSID=p2.a121bc2aaf029435dce6&APPV_IMGURL=http://img.shopping.com/sc/glb/sdc_logo_106x19.gif&APPV_LI_LNKINID=7000610&APPV_LI_SBMKYW=nikon&APPV_MTCTYP=1000&APPV_PRTID=2002&APPV_BrnID=14804http://www.shopping.com/digital-cameras/productsDigital CamerasDigital CamerasElectronicshttp://www.shopping.com/xCH-electronics-nikon~linkin_id-7000610?oq=nikonCameras and Photographyhttp://www.shopping.com/xCH-cameras_and_photography-nikon~linkin_id-7000610?oq=nikonDigital Camerashttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610nikonnikonDigital Camerashttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610Nikon D3100 Digital Camera14.2 Megapixel, SLR Camera, 3 in. LCD Screen, With High Definition Video, Weight: 1 lb.The Nikon D3100 digital SLR camera speaks to the growing ranks of enthusiastic D-SLR users and aspiring photographers by providing an easy-to-use and affordable entrance to the world of Nikon D-SLR’s. The 14.2-megapixel D3100 has powerful features, such as the enhanced Guide Mode that makes it easy to unleash creative potential and capture memories with still images and full HD video. Like having a personal photo tutor at your fingertips, this unique feature provides a simple graphical interface on the camera’s LCD that guides users by suggesting and/or adjusting camera settings to achieve the desired end result images. The D3100 is also the world’s first D-SLR to introduce full time auto focus (AF) in Live View and D-Movie mode to effortlessly achieve the critical focus needed when shooting Full HD 1080p video.http://di1.shopping.com/images/pi/93/bc/04/101677489-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1http://di1.shopping.com/images/pi/93/bc/04/101677489-606x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=194.56http://img.shopping.com/sc/pr/sdc_stars_sm_4.5.gifhttp://www.shopping.com/Nikon-D3100/reviews~linkin_id-7000610429.001360.00http://www.shopping.com/Nikon-D3100/prices~linkin_id-7000610http://www.shopping.com/Nikon-D3100/info~linkin_id-7000610Nikon D3100 Digital SLR Camera with 18-55mm NIKKOR VR LensThe Nikon D3100 Digital SLR Camera is an affordable compact and lightweight photographic power-house. It features the all-purpose 18-55mm VR lens a high-resolution 14.2 MP CMOS sensor along with a feature set that's comprehensive yet easy to navigate - the intuitive onboard learn-as-you grow guide mode allows the photographer to understand what the 3100 can do quickly and easily. Capture beautiful pictures and amazing Full HD 1080p movies with sound and full-time autofocus. Availabilty: In Stock!7185Nikonhttp://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockFree Shipping with Any Purchase!529.000.00799.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=-ZW6BMZqz6fbS-aULwga_g%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F343.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+Digital+SLR+Camera+with+18-55mm+NIKKOR+VR+Lens&dlprc=529.0&crn=&istrsmrc=1&isathrsl=0&AR=1&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=1&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=FumFiehttp://img.shopping.com/cctool/merch_logos/475674.gif866 666 91985604.27http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSF343C5Nikon Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR, CamerasNikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR7185Nikonhttp://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-385x352-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stock549.000.00549.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=779&BEFID=7185&aon=%5E1&MerchantID=305814&crawler_id=305814&dealId=md1e9lD8vdOu4FHQfJqKng%3D%3D&url=http%3A%2F%2Fwww.electronics-expo.com%2Findex.php%3Fpage%3Ditem%26id%3DNIKD3100%26source%3DSideCar%26scpid%3D8%26scid%3Dscsho318727%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Nikon+D3100+14.2MP+Digital+SLR+Camera+with+18-55mm+f%2F3.5-5.6+AF-S+DX+VR%2C+Cameras&dlprc=549.0&crn=&istrsmrc=1&isathrsl=0&AR=9&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=9&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=771&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Electronics Expohttp://img.shopping.com/cctool/merch_logos/305814.gif1-888-707-EXPO3713.90http://img.shopping.com/sc/mr/sdc_checks_4.gifhttp://www.shopping.com/xMR-store_electronics_expo~MRD-305814~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSNIKD3100Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, BlackSplit-second shutter response captures shots other cameras may have missed Helps eliminate the frustration of shutter delay! 14.2-megapixels for enlargements worth framing and hanging. Takes breathtaking 1080p HD movies. ISO sensitivity from 100-1600 for bright or dimly lit settings. 3.0in. color LCD for beautiful, wide-angle framing and viewing. In-camera image editing lets you retouch with no PC. Automatic scene modes include Child, Sports, Night Portrait and more. Accepts SDHC memory cards. Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black is one of many Digital SLR Cameras available through Office Depot. Made by Nikon.7185Nikonhttp://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-250x250-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock549.990.00699.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=698&BEFID=7185&aon=%5E1&MerchantID=467671&crawler_id=467671&dealId=yYuaXnDFtCY7rDUjkY2aaw%3D%3D&url=http%3A%2F%2Flink.mercent.com%2Fredirect.ashx%3Fmr%3AmerchantID%3DOfficeDepot%26mr%3AtrackingCode%3DCEC9669E-6ABC-E011-9F24-0019B9C043EB%26mr%3AtargetUrl%3Dhttp%3A%2F%2Fwww.officedepot.com%2Fa%2Fproducts%2F486292%2FNikon-D3100-142-Megapixel-Digital-SLR%2F%253fcm_mmc%253dMercent-_-Shopping-_-Cameras_and_Camcorders-_-486292&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+14.2-Megapixel+Digital+SLR+Camera+With+18-55mm+Zoom-Nikkor+Lens%2C+Black&dlprc=549.99&crn=&istrsmrc=1&isathrsl=0&AR=10&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=10&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=690&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Office Depothttp://img.shopping.com/cctool/merch_logos/467671.gif1-800-GO-DEPOT1352.37http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_office_depot_4158555~MRD-467671~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS486292Nikon® D3100™ 14.2MP Digital SLR with 18-55mm LensThe Nikon D3100 DSLR will surprise you with its simplicity and impress you with superb results.7185Nikonhttp://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock549.996.05549.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=Rl56U7CuiTYsH4MGZ02lxQ%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D903483107%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D3100%E2%84%A2+14.2MP+Digital+SLR+with+18-55mm+Lens&dlprc=549.99&crn=&istrsmrc=0&isathrsl=0&AR=11&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=11&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS9614867Nikon D3100 SLR w/Nikon 18-55mm VR & 55-200mm VR Lenses14.2 Megapixels3" LCDLive ViewHD 1080p Video w/ Sound & Autofocus11-point Autofocus3 Frames per Second ShootingISO 100 to 3200 (Expand to 12800-Hi2)Self Cleaning SensorEXPEED 2, Image Processing EngineScene Recognition System7185Nikonhttp://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-345x345-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stock695.000.00695.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=huS6xZKDKaKMTMP71eI6DA%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D32983%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+SLR+w%2FNikon+18-55mm+VR+%26+55-200mm+VR+Lenses&dlprc=695.0&crn=&istrsmrc=0&isathrsl=0&AR=15&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=15&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS32983Nikon COOLPIX S203 Digital Camera10 Megapixel, Ultra-Compact Camera, 2.5 in. LCD Screen, 3x Optical Zoom, With Video Capability, Weight: 0.23 lb.With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.http://di1.shopping.com/images/pi/c4/ef/1b/95397883-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2http://di1.shopping.com/images/pi/c4/ef/1b/95397883-500x499-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=20139.00139.00http://www.shopping.com/Nikon-Coolpix-S203/prices~linkin_id-7000610http://www.shopping.com/Nikon-Coolpix-S203/info~linkin_id-7000610Nikon Coolpix S203 Digital Camera (Red)With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.7185Nikonhttp://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockFantastic prices with ease & comfort of Amazon.com!139.009.50139.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=sBd2JnIEPM-A_lBAM1RZgQ%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB002T964IM%2Fref%3Dasc_df_B002T964IM1751618%3Fsmid%3DA22UHVNXG98FAT%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB002T964IM&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S203+Digital+Camera+%28Red%29&dlprc=139.0&crn=&istrsmrc=0&isathrsl=0&AR=63&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=95397883&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=63&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=518&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Amazon Marketplacehttp://img.shopping.com/cctool/merch_logos/301531.gif2132.73http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSB002T964IMNikon S3100 Digital Camera14.5 Megapixel, Compact Camera, 2.7 in. LCD Screen, 5x Optical Zoom, With High Definition Video, Weight: 0.23 lb.This digital camera features a wide-angle optical Zoom-NIKKOR glass lens that allows you to capture anything from landscapes to portraits to action shots. The high-definition movie mode with one-touch recording makes it easy to capture video clips.http://di1.shopping.com/images/pi/66/2d/33/106834268-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3http://di1.shopping.com/images/pi/66/2d/33/106834268-507x387-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=312.00http://img.shopping.com/sc/pr/sdc_stars_sm_2.gifhttp://www.shopping.com/nikon-s3100/reviews~linkin_id-700061099.95134.95http://www.shopping.com/nikon-s3100/prices~linkin_id-7000610http://www.shopping.com/nikon-s3100/info~linkin_id-7000610CoolPix S3100 14 Megapixel Compact Digital Camera- RedNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - red7185Nikonhttp://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=UUyGoqV8r0-xrkn-rnGNbg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJ3Yx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmDAJeU1oyGG0GcBdhGwUGCAVqYF9SO0xSN1sZdmA7dmMdBQAJB24qX1NbQxI6AjA2ME5dVFULPDsGPFcQTTdaLTA6SR0OFlQvPAwMDxYcYlxIVkcoLTcCDA%3D%3D%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=CoolPix+S3100+14+Megapixel+Compact+Digital+Camera-+Red&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=28&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=28&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337013000COOLPIX S3100 PinkNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - pink7185Nikonhttp://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=X87AwXlW1dXoMXk4QQDToQ%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJxYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGsPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Pink&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=31&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=31&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337015000Nikon Coolpix S3100 14.0 MP Digital Camera - SilverNikon Coolpix S3100 14.0 MP Digital Camera - Silver7185Nikonhttp://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-270x270-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock109.970.00109.97http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=803&BEFID=7185&aon=%5E&MerchantID=475774&crawler_id=475774&dealId=nvFwnpfA4rlA1Dbksdsa0w%3D%3D&url=http%3A%2F%2Fwww.thewiz.com%2Fcatalog%2Fproduct.jsp%3FmodelNo%3DS3100SILVER%26gdftrk%3DgdfV2677_a_7c996_a_7c4049_a_7c26262&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S3100+14.0+MP+Digital+Camera+-+Silver&dlprc=109.97&crn=&istrsmrc=0&isathrsl=0&AR=33&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=33&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=797&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=TheWiz.comhttp://img.shopping.com/cctool/merch_logos/475774.gif877-542-69880http://img.shopping.com/sc/glb/flag/US.gifUS26262Nikon� COOLPIX� S3100 14MP Digital Camera (Silver)The Nikon COOLPIX S3100 is the easy way to share your life and stay connected.7185Nikonhttp://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock119.996.05119.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=5GtaN2NeryKwps-Se2l-4g%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D848064082%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C3%AF%C2%BF%C2%BD+COOLPIX%C3%AF%C2%BF%C2%BD+S3100+14MP+Digital+Camera+%28Silver%29&dlprc=119.99&crn=&istrsmrc=0&isathrsl=0&AR=37&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=37&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=509&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS10101095COOLPIX S3100 YellowNikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - yellow7185Nikonhttp://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockGet 30 days FREE SHIPPING w/ ShipVantage119.956.95139.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=a43m0RXulX38zCnQjU59jw%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJwYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGoPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Yellow&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=38&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=38&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00337014000Nikon D90 Digital Camera12.3 Megapixel, Point and Shoot Camera, 3 in. LCD Screen, With Video Capability, Weight: 1.36 lb.Untitled Document Nikon D90 SLR Digital Camera With 28-80mm 75-300mm Lens Kit The Nikon D90 SLR Digital Camera, with its 12.3-megapixel DX-format CMOS, 3" High resolution LCD display, Scene Recognition System, Picture Control, Active D-Lighting, and one-button Live View, provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera.http://di1.shopping.com/images/pi/52/fb/d3/99671132-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4http://di1.shopping.com/images/pi/52/fb/d3/99671132-499x255-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=475.00http://img.shopping.com/sc/pr/sdc_stars_sm_5.gifhttp://www.shopping.com/Nikon-D90-with-18-270mm-Lens/reviews~linkin_id-7000610689.002299.00http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/prices~linkin_id-7000610http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/info~linkin_id-7000610Nikon® D90 12.3MP Digital SLR Camera (Body Only)The Nikon D90 will make you rethink what a digital SLR camera can achieve.7185Nikonhttp://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stock1015.996.051015.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=GU5JJkpUAxe5HujB7fkwAA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D851830266%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=1015.99&crn=&istrsmrc=0&isathrsl=0&AR=14&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=14&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS10148659Nikon D90 SLR Digital Camera (Camera Body)The Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CCD 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera. In addition the D90 introduces the D-Movie mode allowing for the first time an interchangeable lens SLR camera that is capable of recording 720p HD movie clips. Availabilty: In Stock7185Nikonhttp://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stockFree Shipping with Any Purchase!689.000.00900.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=XhURuSC-spBbTIDfo4qfzQ%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F169.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+Digital+Camera+%28Camera+Body%29&dlprc=689.0&crn=&istrsmrc=1&isathrsl=0&AR=16&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=16&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=FumFiehttp://img.shopping.com/cctool/merch_logos/475674.gif866 666 91985604.27http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSF169C5Nikon D90 SLR w/Nikon 18-105mm VR & 55-200mm VR Lenses12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing7185Nikonhttp://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stock1189.000.001189.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=o0Px_XLWDbrxAYRy3rCmyQ%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30619%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+%26+55-200mm+VR+Lenses&dlprc=1189.0&crn=&istrsmrc=0&isathrsl=0&AR=20&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=20&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS30619Nikon D90 12.3 Megapixel Digital SLR Camera (Body Only)Fusing 12.3 megapixel image quality and a cinematic 24fps D-Movie Mode, the Nikon D90 exceeds the demands of passionate photographers. Coupled with Nikon's EXPEED image processing technologies and NIKKOR optics, breathtaking image fidelity is assured. Combined with fast 0.15ms power-up and split-second 65ms shooting lag, dramatic action and decisive moments are captured easily. Effective 4-frequency, ultrasonic sensor cleaning frees image degrading dust particles from the sensor's optical low pass filter.7185Nikonhttp://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stockFREE FEDEX 2-3 DAY DELIVERY899.950.00899.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=269&BEFID=7185&aon=%5E&MerchantID=9296&crawler_id=811558&dealId=4HgbWJSJ8ssgIf8B0MXIwA%3D%3D&url=http%3A%2F%2Fwww.pcnation.com%2Foptics-gallery%2Fdetails.asp%3Faffid%3D305%26item%3D2N145P&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3+Megapixel+Digital+SLR+Camera+%28Body+Only%29&dlprc=899.95&crn=&istrsmrc=1&isathrsl=0&AR=21&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=21&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=257&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=PCNationhttp://img.shopping.com/cctool/merch_logos/9296.gif800-470-707916224.43http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_pcnation_9689~MRD-9296~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS2N145PNikon D90 12.3MP Digital SLR Camera (Body Only)Fusing 12.3-megapixel image quality inherited from the award-winning D300 with groundbreaking features, the D90's breathtaking, low-noise image quality is further advanced with EXPEED image processing. Split-second shutter response and continuous shooting at up to 4.5 frames-per-second provide the power to capture fast action and precise moments perfectly, while Nikon's exclusive Scene Recognition System contributes to faster 11-area autofocus performance, finer white balance detection and more. The D90 delivers the control passionate photographers demand, utilizing comprehensive exposure functions and the intelligence of 3D Color Matrix Metering II. Stunning results come to life on a 3-inch 920,000-dot color LCD monitor, providing accurate image review, Live View composition and brilliant playback of the D90's cinematic-quality 24-fps HD D-Movie mode.7185Nikonhttp://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockFantastic prices with ease & comfort of Amazon.com!780.000.00780.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=UNDa3uMDZXOnvD_7sTILYg%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB001ET5U92%2Fref%3Dasc_df_B001ET5U921751618%3Fsmid%3DAHF4SYKP09WBH%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB001ET5U92&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=780.0&crn=&istrsmrc=0&isathrsl=0&AR=29&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=29&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=520&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Amazon Marketplacehttp://img.shopping.com/cctool/merch_logos/301531.gif2132.73http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUSB001ET5U92Nikon D90 Digital Camera with 18-105mm lens12.9 Megapixel, SLR Camera, 3 in. LCD Screen, 5.8x Optical Zoom, With Video Capability, Weight: 2.3 lb.Its 12.3 megapixel DX-format CMOS image sensor and EXPEED image processing system offer outstanding image quality across a wide ISO light sensitivity range. Live View mode lets you compose and shoot via the high-resolution 3-inch LCD monitor, and an advanced Scene Recognition System and autofocus performance help capture images with astounding accuracy. Movies can be shot in Motion JPEG format using the D-Movie function. The camera’s large image sensor ensures exceptional movie image quality and you can create dramatic effects by shooting with a wide range of interchangeable NIKKOR lenses, from wide-angle to macro to fisheye, or by adjusting the lens aperture and experimenting with depth-of-field. The D90 – designed to fuel your passion for photography.http://di1.shopping.com/images/pi/57/6a/4f/70621646-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5http://di1.shopping.com/images/pi/57/6a/4f/70621646-490x489-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5324.81http://img.shopping.com/sc/pr/sdc_stars_sm_5.gifhttp://www.shopping.com/Nikon-D90-with-18-105mm-lens/reviews~linkin_id-7000610849.951599.95http://www.shopping.com/Nikon-D90-with-18-105mm-lens/prices~linkin_id-7000610http://www.shopping.com/Nikon-D90-with-18-105mm-lens/info~linkin_id-7000610Nikon D90 18-105mm VR LensThe Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CMOS 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View prov7185Nikonhttp://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-260x260-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1in-stock849.950.00849.95http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=419&BEFID=7185&aon=%5E1&MerchantID=9390&crawler_id=1905054&dealId=3o5e1VghgJPfhLvT1JFKTA%3D%3D&url=http%3A%2F%2Fwww.ajrichard.com%2FNikon-D90-18-105mm-VR-Lens%2Fp-292%3Frefid%3DShopping%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+18-105mm+VR+Lens&dlprc=849.95&crn=&istrsmrc=0&isathrsl=0&AR=2&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=2&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=425&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=AJRichardhttp://img.shopping.com/cctool/merch_logos/9390.gif1-888-871-125631244.48http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_ajrichard~MRD-9390~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS292Nikon D90 SLR w/Nikon 18-105mm VR Lens12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing7185Nikonhttp://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2in-stock909.000.00909.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=_lYWj_jbwfsSkfcwUcDuww%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30971%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+Lens&dlprc=909.0&crn=&istrsmrc=0&isathrsl=0&AR=3&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=3&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RytherCamera.comhttp://img.shopping.com/cctool/merch_logos/487342.gif1-877-644-75930http://img.shopping.com/sc/glb/flag/US.gifUS3097125448/D90 12.3 Megapixel Digital Camera 18-105mm Zoom Lens w/ 3" Screen - BlackNikon D90 - Digital camera - SLR - 12.3 Mpix - Nikon AF-S DX 18-105mm lens - optical zoom: 5.8 x - supported memory: SD, SDHC7185Nikonhttp://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3in-stockGet 30 days FREE SHIPPING w/ ShipVantage1199.008.201199.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=1KCclCGuWvty2XKU9skadg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBRtFXpzYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcVlhCGGkPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=25448%2FD90+12.3+Megapixel+Digital+Camera+18-105mm+Zoom+Lens+w%2F+3%22+Screen+-+Black&dlprc=1199.0&crn=&istrsmrc=1&isathrsl=0&AR=4&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=4&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=586&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=Searshttp://img.shopping.com/cctool/merch_logos/485615.gif1-800-349-43588882.85http://img.shopping.com/sc/mr/sdc_checks_3.gifhttp://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS00353197000Nikon® D90 12.3MP Digital SLR with 18-105mm LensThe Nikon D90 will make you rethink what a digital SLR camera can achieve.7185Nikonhttp://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4in-stock1350.996.051350.99http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=3-VOSfVV5Jo7HlA4kJtanA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D982673361%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+with+18-105mm+Lens&dlprc=1350.99&crn=&istrsmrc=0&isathrsl=0&AR=5&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=5&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=RadioShackhttp://img.shopping.com/cctool/merch_logos/332477.gif242.25http://img.shopping.com/sc/mr/sdc_checks_25.gifhttp://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS11148905Nikon D90 Kit 12.3-megapixel Digital SLR with 18-105mm VR LensPhotographers, take your passion further!Now is the time for new creativity, and to rethink what a digital SLR camera can achieve. It's time for the D90, a camera with everything you would expect from Nikon's next-generation D-SLRs, and some unexpected surprises, as well. The stunning image quality is inherited from the D300, Nikon's DX-format flagship. The D90 also has Nikon's unmatched ergonomics and high performance, and now takes high-quality movies with beautifully cinematic results. The world of photography has changed, and with the D90 in your hands, it's time to make your own rules.AF-S DX NIKKOR 18-105mm f/3.5-5.6G ED VR LensWide-ratio 5.8x zoom Compact, versatile and ideal for a broad range of shooting situations, ranging from interiors and landscapes to beautiful portraits� a perfect everyday zoom. Nikon VR (Vibration Reduction) image stabilization Vibration Reduction is engineered specifically for each VR NIKKOR lens and enables handheld shooting at up to 3 shutter speeds slower than would7185Nikonhttp://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x232-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5in-stockShipping Included!1050.000.001199.00http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=135&BEFID=7185&aon=%5E1&MerchantID=313162&crawler_id=313162&dealId=kQnB6rS4AjN5dx5h2_631g%3D%3D&url=http%3A%2F%2Fonecall.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1pZSxNoWHFwLx8GTAICa2ZeH1sPXTZLNzRpAh1HR0BxPQEGCBJNMhFHUElsFCFCVkVTTHAcBggEHQ4aHXNpGERGH3RQODsbAgdechJtbBt8fx8JAwhtZFAzJj1oGgIWCxRlNyFOUV9UUGIxBgo0T0IyTSYqJ0RWHw4QPCIBAAQXRGMDICg6TllZVBhh%26nAID%3D13736960&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+Kit+12.3-megapixel+Digital+SLR+with+18-105mm+VR+Lens&dlprc=1050.0&crn=&istrsmrc=1&isathrsl=0&AR=6&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=6&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=1&code=&acode=143&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=OneCallhttp://img.shopping.com/cctool/merch_logos/313162.gif1.800.398.07661804.44http://img.shopping.com/sc/mr/sdc_checks_45.gifhttp://www.shopping.com/xMR-store_onecall_9689~MRD-313162~S-1~linkin_id-7000610http://img.shopping.com/sc/glb/flag/US.gifUS92826Price rangehttp://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610$24 - $4012http://www.shopping.com/digital-cameras/nikon/products?minPrice=24&maxPrice=4012&linkin_id=7000610$4012 - $7999http://www.shopping.com/digital-cameras/nikon/products?minPrice=4012&maxPrice=7999&linkin_id=7000610Brandhttp://www.shopping.com/digital-cameras/nikon/products~all-9688-brand~MS-1?oq=nikon&linkin_id=7000610Nikonhttp://www.shopping.com/digital-cameras/nikon+brand-nikon/products~linkin_id-7000610Cranehttp://www.shopping.com/digital-cameras/nikon+9688-brand-crane/products~linkin_id-7000610Ikelitehttp://www.shopping.com/digital-cameras/nikon+ikelite/products~linkin_id-7000610Bowerhttp://www.shopping.com/digital-cameras/nikon+bower/products~linkin_id-7000610FUJIFILMhttp://www.shopping.com/digital-cameras/nikon+brand-fuji/products~linkin_id-7000610Storehttp://www.shopping.com/digital-cameras/nikon/products~all-store~MS-1?oq=nikon&linkin_id=7000610Amazon Marketplacehttp://www.shopping.com/digital-cameras/nikon+store-amazon-marketplace-9689/products~linkin_id-7000610Amazonhttp://www.shopping.com/digital-cameras/nikon+store-amazon/products~linkin_id-7000610Adoramahttp://www.shopping.com/digital-cameras/nikon+store-adorama/products~linkin_id-7000610J&R Music and Computer Worldhttp://www.shopping.com/digital-cameras/nikon+store-j-r-music-and-computer-world/products~linkin_id-7000610RytherCamera.comhttp://www.shopping.com/digital-cameras/nikon+store-rythercamera-com/products~linkin_id-7000610Resolutionhttp://www.shopping.com/digital-cameras/nikon/products~all-21885-resolution~MS-1?oq=nikon&linkin_id=7000610Under 4 Megapixelhttp://www.shopping.com/digital-cameras/nikon+under-4-megapixel/products~linkin_id-7000610At least 5 Megapixelhttp://www.shopping.com/digital-cameras/nikon+5-megapixel-digital-cameras/products~linkin_id-7000610At least 6 Megapixelhttp://www.shopping.com/digital-cameras/nikon+6-megapixel-digital-cameras/products~linkin_id-7000610At least 7 Megapixelhttp://www.shopping.com/digital-cameras/nikon+7-megapixel-digital-cameras/products~linkin_id-7000610At least 8 Megapixelhttp://www.shopping.com/digital-cameras/nikon+8-megapixel-digital-cameras/products~linkin_id-7000610Featureshttp://www.shopping.com/digital-cameras/nikon/products~all-32804-features~MS-1?oq=nikon&linkin_id=7000610Shockproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-shockproof/products~linkin_id-7000610Waterproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-waterproof/products~linkin_id-7000610Freezeproofhttp://www.shopping.com/digital-cameras/nikon+32804-features-freezeproof/products~linkin_id-7000610Dust proofhttp://www.shopping.com/digital-cameras/nikon+32804-features-dust-proof/products~linkin_id-7000610Image Stabilizationhttp://www.shopping.com/digital-cameras/nikon+32804-features-image-stabilization/products~linkin_id-7000610hybriddigital camerag1sonycameracanonnikonkodak digital camerakodaksony cybershotkodak easyshare digital cameranikon coolpixolympuspink digital cameracanon powershot././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/strict.dtdcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/s0000664000000000000000000010344012301417627030347 0ustar %HTMLlat1; %HTMLsymbol; %HTMLspecial; ]]> ]]> ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/get-products.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/g0000664000000000000000000000300612301417627030330 0ustar // pull out /GeneralSearchResponse/categories/category/items/product tags // the rest we don't care about. var sax = require("../lib/sax.js") var fs = require("fs") var path = require("path") var xmlFile = path.resolve(__dirname, "shopping.xml") var util = require("util") var http = require("http") fs.readFile(xmlFile, function (er, d) { http.createServer(function (req, res) { if (er) throw er var xmlstr = d.toString("utf8") var parser = sax.parser(true) var products = [] var product = null var currentTag = null parser.onclosetag = function (tagName) { if (tagName === "product") { products.push(product) currentTag = product = null return } if (currentTag && currentTag.parent) { var p = currentTag.parent delete currentTag.parent currentTag = p } } parser.onopentag = function (tag) { if (tag.name !== "product" && !product) return if (tag.name === "product") { product = tag } tag.parent = currentTag tag.children = [] tag.parent && tag.parent.children.push(tag) currentTag = tag } parser.ontext = function (text) { if (currentTag) currentTag.children.push(text) } parser.onend = function () { var out = util.inspect(products, false, 3, true) res.writeHead(200, {"content-type":"application/json"}) res.end("{\"ok\":true}") // res.end(JSON.stringify(products)) } parser.write(xmlstr).end() }).listen(1337) }) ././@LongLink0000644000000000000000000000016600000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/b0000664000000000000000000054142512301417627030337 0ustar something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here something blerm a bit down here ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/not-pretty.xmlcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/examples/n0000664000000000000000000000026512301417627030343 0ustar something blerm a bit down here cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/0000775000000000000000000000000012301420116027304 5ustar ././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/trail0000664000000000000000000000046312301417627030362 0ustar require(__dirname).test({ xml : "Welcome, to monkey land", expect : [ ["opentag", { "name": "SPAN", "attributes": {} }], ["text", "Welcome,"], ["closetag", "SPAN"], ["text", " to monkey land"], ["end"], ["ready"] ], strict : false, opt : {} }); ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/parser-position.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/parse0000664000000000000000000000166712301417627030370 0ustar var sax = require("../lib/sax"), assert = require("assert") function testPosition(chunks, expectedEvents) { var parser = sax.parser(); expectedEvents.forEach(function(expectation) { parser['on' + expectation[0]] = function() { for (var prop in expectation[1]) { assert.equal(parser[prop], expectation[1][prop]); } } }); chunks.forEach(function(chunk) { parser.write(chunk); }); }; testPosition(['
abcdefgh
'], [ ['opentag', { position: 5, startTagPosition: 1 }] , ['text', { position: 19, startTagPosition: 14 }] , ['closetag', { position: 19, startTagPosition: 14 }] ]); testPosition(['
abcde','fgh
'], [ ['opentag', { position: 5, startTagPosition: 1 }] , ['text', { position: 19, startTagPosition: 14 }] , ['closetag', { position: 19, startTagPosition: 14 }] ]); ././@LongLink0000644000000000000000000000017300000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000055312301417627030410 0ustar require(__dirname).test( { xml : "" , expect : [ [ "opentag" , { name: "xml:root" , uri: "http://www.w3.org/XML/1998/namespace" , prefix: "xml" , local: "root" , attributes: {} , ns: {} } ] , ["closetag", "xml:root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000017400000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-0000664000000000000000000000121012301417627030244 0ustar require(__dirname).test({ xml : ""+ "" + "" + "" + "" + "=(|)" + "" + "", expect : [ ["opentag", { "name": "root", "attributes": {} }], ["opentag", { "name": "child", "attributes": {} }], ["opentag", { "name": "haha", "attributes": {} }], ["closetag", "haha"], ["closetag", "child"], ["opentag", { "name": "monkey", "attributes": {} }], ["text", "=(|)"], ["closetag", "monkey"], ["closetag", "root"], ["end"], ["ready"] ], strict : true, opt : {} }); ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000111612301417627030404 0ustar require(__dirname).test( { strict : true , opt : { xmlns: true } , expect : [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"] , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ] , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } }, ns: {} } ] , [ "closetag", "root" ] ] } ).write("") ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata-chunked.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata0000664000000000000000000000047112301417627030322 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is character data  "], ["closecdata", undefined], ["closetag", "R"] ] }).write("").close(); ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata0000664000000000000000000000043512301417627030322 0ustar require(__dirname).test({ xml : "", expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is character data  "], ["closecdata", undefined], ["closetag", "R"] ] }); ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue-35.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue0000664000000000000000000000046512301417627030401 0ustar // https://github.com/isaacs/sax-js/issues/35 require(__dirname).test ( { xml : " \n"+ "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "text", "\r\r\n" ] , [ "closetag", "xml" ] ] , strict : true , opt : {} } ) ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/script.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/scrip0000664000000000000000000000066712301417627030375 0ustar require(__dirname).test({ xml : "", expect : [ ["opentag", {"name": "HTML","attributes": {}}], ["opentag", {"name": "HEAD","attributes": {}}], ["opentag", {"name": "SCRIPT","attributes": {}}], ["script", "if (1 < 0) { console.log('elo there'); }"], ["closetag", "SCRIPT"], ["closetag", "HEAD"], ["closetag", "HTML"] ] }); ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/buffer-overrun.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/buffe0000664000000000000000000000157612301417627030344 0ustar // set this really low so that I don't have to put 64 MB of xml in here. var sax = require("../lib/sax") var bl = sax.MAX_BUFFER_LENGTH sax.MAX_BUFFER_LENGTH = 5; require(__dirname).test({ expect : [ ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "], ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "], ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "], ["opentag", { "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", "attributes": {} }], ["text", "yo"], ["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"] ] }).write("") .write("yo") .write("") .close(); sax.MAX_BUFFER_LENGTH = bl ././@LongLink0000644000000000000000000000020500000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000132712301417627030410 0ustar require(__dirname).test( { xml : "" , expect : [ [ "attribute" , { name: "xml:lang" , local: "lang" , prefix: "xml" , uri: "http://www.w3.org/XML/1998/namespace" , value: "en" } ] , [ "opentag" , { name: "root" , uri: "" , prefix: "" , local: "root" , attributes: { "xml:lang": { name: "xml:lang" , local: "lang" , prefix: "xml" , uri: "http://www.w3.org/XML/1998/namespace" , value: "en" } } , ns: {} } ] , ["closetag", "root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-strict.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000603012301417627030404 0ustar require(__dirname).test ( { xml : ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ "" , expect : [ [ "opentag", { name: "root", prefix: "", local: "root", uri: "", attributes: {}, ns: {} } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } }, ns: {} } ] , [ "closetag", "plain" ] , [ "opennamespace", { prefix: "", uri: "uri:default" } ] , [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ] , [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default", attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } }, ns: { "": "uri:default" } } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' }, attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ] , [ "closetag", "plain" ] , [ "closetag", "ns1" ] , [ "closenamespace", { prefix: "", uri: "uri:default" } ] , [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ] , [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ] , [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "", attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } }, ns: { a: "uri:nsa" } } ] , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } }, ns: { a: 'uri:nsa' } } ] , [ "closetag", "plain" ] , [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ] , [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa", attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } }, ns: { a: 'uri:nsa' } } ] , [ "closetag", "a:ns" ] , [ "closetag", "ns2" ] , [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ] , [ "closetag", "root" ] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata-end-split.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata0000664000000000000000000000043712301417627030324 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is "], ["closecdata", undefined], ["closetag", "R"] ] }) .write("") .write("") .close(); ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000315312301417627030407 0ustar var t = require(__dirname) , xmls = // should be the same both ways. [ "" , "" ] , ex1 = [ [ "opennamespace" , { prefix: "a" , uri: "http://ATTRIBUTE" } ] , [ "attribute" , { name: "xmlns:a" , value: "http://ATTRIBUTE" , prefix: "xmlns" , local: "a" , uri: "http://www.w3.org/2000/xmlns/" } ] , [ "attribute" , { name: "a:attr" , local: "attr" , prefix: "a" , uri: "http://ATTRIBUTE" , value: "value" } ] , [ "opentag" , { name: "parent" , uri: "" , prefix: "" , local: "parent" , attributes: { "a:attr": { name: "a:attr" , local: "attr" , prefix: "a" , uri: "http://ATTRIBUTE" , value: "value" } , "xmlns:a": { name: "xmlns:a" , local: "a" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "http://ATTRIBUTE" } } , ns: {"a": "http://ATTRIBUTE"} } ] , ["closetag", "parent"] , ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }] ] // swap the order of elements 2 and 1 , ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3)) , expected = [ex1, ex2] xmls.forEach(function (x, i) { t.test({ xml: x , expect: expected[i] , strict: true , opt: { xmlns: true } }) }) ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-closing-child.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-0000664000000000000000000000121112301417627030245 0ustar require(__dirname).test({ xml : ""+ "" + "" + "" + "" + "=(|)" + "" + "", expect : [ ["opentag", { "name": "ROOT", "attributes": {} }], ["opentag", { "name": "CHILD", "attributes": {} }], ["opentag", { "name": "HAHA", "attributes": {} }], ["closetag", "HAHA"], ["closetag", "CHILD"], ["opentag", { "name": "MONKEY", "attributes": {} }], ["text", "=(|)"], ["closetag", "MONKEY"], ["closetag", "ROOT"], ["end"], ["ready"] ], strict : false, opt : {} }); ././@LongLink0000644000000000000000000000017500000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000170312301417627030406 0ustar require(__dirname).test( { xml : "" , expect : [ ["error" , "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n" + "Actual: ERROR\n" + "Line: 0\nColumn: 27\nChar: '" ] , [ "attribute" , { name: "xmlns:xml" , local: "xml" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "ERROR" } ] , [ "opentag" , { name: "xml:root" , uri: "http://www.w3.org/XML/1998/namespace" , prefix: "xml" , local: "root" , attributes: { "xmlns:xml": { name: "xmlns:xml" , local: "xml" , prefix: "xmlns" , uri: "http://www.w3.org/2000/xmlns/" , value: "ERROR" } } , ns: {} } ] , ["closetag", "xml:root"] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata-multiple.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata0000664000000000000000000000066612301417627030330 0ustar require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", " this is "], ["closecdata", undefined], ["opencdata", undefined], ["cdata", "character data  "], ["closecdata", undefined], ["closetag", "R"] ] }).write("").write("").close(); ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/xmlns0000664000000000000000000000614512301417627030413 0ustar require(__dirname).test ( { xml : ""+ ""+ ""+ ""+ ""+ "" , expect : [ [ "opennamespace", { prefix: "x", uri: "x1" } ] , [ "opennamespace", { prefix: "y", uri: "y1" } ] , [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] , [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ] , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } , "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } , "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x1', y: 'y1' } } ] , [ "opennamespace", { prefix: "x", uri: "x2" } ] , [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] , [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind", attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } }, ns: { x: 'x2' } } ] , [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x2' } } ] , [ "closetag", "check" ] , [ "closetag", "rebind" ] , [ "closenamespace", { prefix: "x", uri: "x2" } ] , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, ns: { x: 'x1', y: 'y1' } } ] , [ "closetag", "check" ] , [ "closetag", "root" ] , [ "closenamespace", { prefix: "x", uri: "x1" } ] , [ "closenamespace", { prefix: "y", uri: "y1" } ] ] , strict : true , opt : { xmlns: true } } ) ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/cdata0000664000000000000000000000117212301417627030321 0ustar var p = require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", "[[[[[[[[]]]]]]]]"], ["closecdata", undefined], ["closetag", "R"] ] }) var x = "" for (var i = 0; i < x.length ; i ++) { p.write(x.charAt(i)) } p.close(); var p2 = require(__dirname).test({ expect : [ ["opentag", {"name": "R","attributes": {}}], ["opencdata", undefined], ["cdata", "[[[[[[[[]]]]]]]]"], ["closecdata", undefined], ["closetag", "R"] ] }) var x = "" p2.write(x).close(); ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/stray-ending.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/stray0000664000000000000000000000066012301417627030410 0ustar // stray ending tags should just be ignored in non-strict mode. // https://github.com/isaacs/sax-js/issues/32 require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "A", attributes: {} } ] , [ "opentag", { name: "B", attributes: {} } ] , [ "text", "" ] , [ "closetag", "B" ] , [ "closetag", "A" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue-49.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue0000664000000000000000000000163012301417627030374 0ustar // https://github.com/isaacs/sax-js/issues/49 require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "opentag", { name: "script", attributes: {} } ] , [ "text", "hello world" ] , [ "closetag", "script" ] , [ "closetag", "xml" ] ] , strict : false , opt : { lowercasetags: true, noscript: true } } ) require(__dirname).test ( { xml : "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "opentag", { name: "script", attributes: {} } ] , [ "opencdata", undefined ] , [ "cdata", "hello world" ] , [ "closecdata", undefined ] , [ "closetag", "script" ] , [ "closetag", "xml" ] ] , strict : false , opt : { lowercasetags: true, noscript: true } } ) ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue-47.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue0000664000000000000000000000056512301417627030402 0ustar // https://github.com/isaacs/sax-js/issues/47 require(__dirname).test ( { xml : '' , expect : [ [ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ], [ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ], [ "closetag", "a" ] ] , strict : true , opt : {} } ) ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue-23.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue0000664000000000000000000000254512301417627030402 0ustar require(__dirname).test ( { xml : ""+ ""+ "653724009"+ "-1"+ "01pG0000002KoSUIA0"+ "-1"+ "CalendarController"+ "true"+ ""+ "" , expect : [ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ] , [ "opentag", { name : "RESULT", attributes: {} } ] , [ "opentag", { name: "BODYCRC", attributes: {} } ] , [ "text", "653724009" ] , [ "closetag", "BODYCRC" ] , [ "opentag", { name: "COLUMN", attributes: {} } ] , [ "text", "-1" ] , [ "closetag", "COLUMN" ] , [ "opentag", { name: "ID", attributes: {} } ] , [ "text", "01pG0000002KoSUIA0" ] , [ "closetag", "ID" ] , [ "opentag", {name: "LINE", attributes: {} } ] , [ "text", "-1" ] , [ "closetag", "LINE" ] , [ "opentag", {name: "NAME", attributes: {} } ] , [ "text", "CalendarController" ] , [ "closetag", "NAME" ] , [ "opentag", {name: "SUCCESS", attributes: {} } ] , [ "text", "true" ] , [ "closetag", "SUCCESS" ] , [ "closetag", "RESULT" ] , [ "closetag", "COMPILECLASSESRESPONSE" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/index.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/index0000664000000000000000000000552012301417627030355 0ustar var globalsBefore = JSON.stringify(Object.keys(global)) , util = require("util") , assert = require("assert") , fs = require("fs") , path = require("path") , sax = require("../lib/sax") exports.sax = sax // handy way to do simple unit tests // if the options contains an xml string, it'll be written and the parser closed. // otherwise, it's assumed that the test will write and close. exports.test = function test (options) { var xml = options.xml , parser = sax.parser(options.strict, options.opt) , expect = options.expect , e = 0 sax.EVENTS.forEach(function (ev) { parser["on" + ev] = function (n) { if (process.env.DEBUG) { console.error({ expect: expect[e] , actual: [ev, n] }) } if (e >= expect.length && (ev === "end" || ev === "ready")) return assert.ok( e < expect.length, "expectation #"+e+" "+util.inspect(expect[e])+"\n"+ "Unexpected event: "+ev+" "+(n ? util.inspect(n) : "")) var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n) assert.equal(ev, expect[e][0], "expectation #"+e+"\n"+ "Didn't get expected event\n"+ "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ "actual: "+ev+" "+inspected+"\n") if (ev === "error") assert.equal(n.message, expect[e][1]) else assert.deepEqual(n, expect[e][1], "expectation #"+e+"\n"+ "Didn't get expected argument\n"+ "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ "actual: "+ev+" "+inspected+"\n") e++ if (ev === "error") parser.resume() } }) if (xml) parser.write(xml).close() return parser } if (module === require.main) { var running = true , failures = 0 function fail (file, er) { util.error("Failed: "+file) util.error(er.stack || er.message) failures ++ } fs.readdir(__dirname, function (error, files) { files = files.filter(function (file) { return (/\.js$/.exec(file) && file !== 'index.js') }) var n = files.length , i = 0 console.log("0.." + n) files.forEach(function (file) { // run this test. try { require(path.resolve(__dirname, file)) var globalsAfter = JSON.stringify(Object.keys(global)) if (globalsAfter !== globalsBefore) { var er = new Error("new globals introduced\n"+ "expected: "+globalsBefore+"\n"+ "actual: "+globalsAfter) globalsBefore = globalsAfter throw er } console.log("ok " + (++i) + " - " + file) } catch (er) { console.log("not ok "+ (++i) + " - " + file) fail(file, er) } }) if (!failures) return console.log("#all pass") else return console.error(failures + " failure" + (failures > 1 ? "s" : "")) }) } ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-closing-tag.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/self-0000664000000000000000000000112112301417627030245 0ustar require(__dirname).test({ xml : " "+ " "+ " "+ " "+ "=(|) "+ ""+ " ", expect : [ ["opentag", {name:"ROOT", attributes:{}}], ["opentag", {name:"HAHA", attributes:{}}], ["closetag", "HAHA"], ["opentag", {name:"HAHA", attributes:{}}], ["closetag", "HAHA"], // ["opentag", {name:"HAHA", attributes:{}}], // ["closetag", "HAHA"], ["opentag", {name:"MONKEY", attributes:{}}], ["text", "=(|)"], ["closetag", "MONKEY"], ["closetag", "ROOT"] ], opt : { trim : true } });././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/unquoted.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/unquo0000664000000000000000000000077612301417627030425 0ustar // unquoted attributes should be ok in non-strict mode // https://github.com/isaacs/sax-js/issues/31 require(__dirname).test ( { xml : "" , expect : [ [ "attribute", { name: "class", value: "test" } ] , [ "attribute", { name: "hello", value: "world" } ] , [ "opentag", { name: "SPAN", attributes: { class: "test", hello: "world" } } ] , [ "closetag", "SPAN" ] ] , strict : false , opt : {} } ) ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue-30.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/node_modules/sax/test/issue0000664000000000000000000000115312301417627030374 0ustar // https://github.com/isaacs/sax-js/issues/33 require(__dirname).test ( { xml : "\n"+ "\n"+ "\n"+ "" , expect : [ [ "opentag", { name: "xml", attributes: {} } ] , [ "text", "\n" ] , [ "comment", " \n comment with a single dash- in it\n" ] , [ "text", "\n" ] , [ "opentag", { name: "data", attributes: {} } ] , [ "closetag", "data" ] , [ "text", "\n" ] , [ "closetag", "xml" ] ] , strict : true , opt : {} } ) cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/0000775000000000000000000000000012301420116023623 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/elementpath.js0000664000000000000000000001512612301417627026511 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var sprintf = require('./sprintf').sprintf; var utils = require('./utils'); var SyntaxError = require('./errors').SyntaxError; var _cache = {}; var RE = new RegExp( "(" + "'[^']*'|\"[^\"]*\"|" + "::|" + "//?|" + "\\.\\.|" + "\\(\\)|" + "[/.*:\\[\\]\\(\\)@=])|" + "((?:\\{[^}]+\\})?[^/\\[\\]\\(\\)@=\\s]+)|" + "\\s+", 'g' ); var xpath_tokenizer = utils.findall.bind(null, RE); function prepare_tag(next, token) { var tag = token[0]; function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem._children.forEach(function(e) { if (e.tag === tag) { rv.push(e); } }); } return rv; } return select; } function prepare_star(next, token) { function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem._children.forEach(function(e) { rv.push(e); }); } return rv; } return select; } function prepare_dot(next, token) { function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; rv.push(elem); } return rv; } return select; } function prepare_iter(next, token) { var tag; token = next(); if (token[1] === '*') { tag = '*'; } else if (!token[1]) { tag = token[0] || ''; } else { throw new SyntaxError(token); } function select(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; elem.iter(tag, function(e) { if (e !== elem) { rv.push(e); } }); } return rv; } return select; } function prepare_dot_dot(next, token) { function select(context, result) { var i, len, elem, rv = [], parent_map = context.parent_map; if (!parent_map) { context.parent_map = parent_map = {}; context.root.iter(null, function(p) { p._children.forEach(function(e) { parent_map[e] = p; }); }); } for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (parent_map.hasOwnProperty(elem)) { rv.push(parent_map[elem]); } } return rv; } return select; } function prepare_predicate(next, token) { var tag, key, value, select; token = next(); if (token[1] === '@') { // attribute token = next(); if (token[1]) { throw new SyntaxError(token, 'Invalid attribute predicate'); } key = token[0]; token = next(); if (token[1] === ']') { select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.get(key)) { rv.push(elem); } } return rv; }; } else if (token[1] === '=') { value = next()[1]; if (value[0] === '"' || value[value.length - 1] === '\'') { value = value.slice(1, value.length - 1); } else { throw new SyntaxError(token, 'Ivalid comparison target'); } token = next(); select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.get(key) === value) { rv.push(elem); } } return rv; }; } if (token[1] !== ']') { throw new SyntaxError(token, 'Invalid attribute predicate'); } } else if (!token[1]) { tag = token[0] || ''; token = next(); if (token[1] !== ']') { throw new SyntaxError(token, 'Invalid node predicate'); } select = function(context, result) { var i, len, elem, rv = []; for (i = 0, len = result.length; i < len; i++) { elem = result[i]; if (elem.find(tag)) { rv.push(elem); } } return rv; }; } else { throw new SyntaxError(null, 'Invalid predicate'); } return select; } var ops = { "": prepare_tag, "*": prepare_star, ".": prepare_dot, "..": prepare_dot_dot, "//": prepare_iter, "[": prepare_predicate, }; function _SelectorContext(root) { this.parent_map = null; this.root = root; } function findall(elem, path) { var selector, result, i, len, token, value, select, context; if (_cache.hasOwnProperty(path)) { selector = _cache[path]; } else { // TODO: Use smarter cache purging approach if (Object.keys(_cache).length > 100) { _cache = {}; } if (path.charAt(0) === '/') { throw new SyntaxError(null, 'Cannot use absolute path on element'); } result = xpath_tokenizer(path); selector = []; function getToken() { return result.shift(); } token = getToken(); while (true) { var c = token[1] || ''; value = ops[c](getToken, token); if (!value) { throw new SyntaxError(null, sprintf('Invalid path: %s', path)); } selector.push(value); token = getToken(); if (!token) { break; } else if (token[1] === '/') { token = getToken(); } if (!token) { break; } } _cache[path] = selector; } // Execute slector pattern result = [elem]; context = new _SelectorContext(elem); for (i = 0, len = selector.length; i < len; i++) { select = selector[i]; result = select(context, result); } return result || []; } function find(element, path) { var resultElements = findall(element, path); if (resultElements && resultElements.length > 0) { return resultElements[0]; } return null; } function findtext(element, path, defvalue) { var resultElements = findall(element, path); if (resultElements && resultElements.length > 0) { return resultElements[0].text; } return defvalue; } exports.find = find; exports.findall = findall; exports.findtext = findtext; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/parser.js0000664000000000000000000000161612301417627025476 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* TODO: support node-expat C++ module optionally */ var util = require('util'); var parsers = require('./parsers/index'); function get_parser(name) { if (name === 'sax') { return parsers.sax; } else { throw new Error('Invalid parser: ' + name); } } exports.get_parser = get_parser; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/elementtree.js0000664000000000000000000003174212301417627026516 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var sprintf = require('./sprintf').sprintf; var utils = require('./utils'); var ElementPath = require('./elementpath'); var TreeBuilder = require('./treebuilder').TreeBuilder; var get_parser = require('./parser').get_parser; var constants = require('./constants'); var element_ids = 0; function Element(tag, attrib) { this._id = element_ids++; this.tag = tag; this.attrib = {}; this.text = null; this.tail = null; this._children = []; if (attrib) { this.attrib = utils.merge(this.attrib, attrib); } } Element.prototype.toString = function() { return sprintf("", this.tag, this._id); }; Element.prototype.makeelement = function(tag, attrib) { return new Element(tag, attrib); }; Element.prototype.len = function() { return this._children.length; }; Element.prototype.getItem = function(index) { return this._children[index]; }; Element.prototype.setItem = function(index, element) { this._children[index] = element; }; Element.prototype.delItem = function(index) { this._children.splice(index, 1); }; Element.prototype.getSlice = function(start, stop) { return this._children.slice(start, stop); }; Element.prototype.setSlice = function(start, stop, elements) { var i; var k = 0; for (i = start; i < stop; i++, k++) { this._children[i] = elements[k]; } }; Element.prototype.delSlice = function(start, stop) { this._children.splice(start, stop - start); }; Element.prototype.append = function(element) { this._children.push(element); }; Element.prototype.extend = function(elements) { this._children.concat(elements); }; Element.prototype.insert = function(index, element) { this._children[index] = element; }; Element.prototype.remove = function(index, element) { this._children = this._children.filter(function(e) { /* TODO: is this the right way to do this? */ if (e._id === element._id) { return false; } return true; }); }; Element.prototype.getchildren = function() { return this._children; }; Element.prototype.find = function(path) { return ElementPath.find(this, path); }; Element.prototype.findtext = function(path, defvalue) { return ElementPath.findtext(this, path, defvalue); }; Element.prototype.findall = function(path, defvalue) { return ElementPath.findall(this, path, defvalue); }; Element.prototype.clear = function() { this.attrib = {}; this._children = []; this.text = null; this.tail = null; }; Element.prototype.get = function(key, defvalue) { if (this.attrib[key] !== undefined) { return this.attrib[key]; } else { return defvalue; } }; Element.prototype.set = function(key, value) { this.attrib[key] = value; }; Element.prototype.keys = function() { return Object.keys(this.attrib); }; Element.prototype.items = function() { return utils.items(this.attrib); }; /* * In python this uses a generator, but in v8 we don't have em, * so we use a callback instead. **/ Element.prototype.iter = function(tag, callback) { var self = this; var i, child; if (tag === "*") { tag = null; } if (tag === null || this.tag === tag) { callback(self); } for (i = 0; i < this._children.length; i++) { child = this._children[i]; child.iter(tag, function(e) { callback(e); }); } }; Element.prototype.itertext = function(callback) { this.iter(null, function(e) { if (e.text) { callback(e.text); } if (e.tail) { callback(e.tail); } }); }; function SubElement(parent, tag, attrib) { var element = parent.makeelement(tag, attrib); parent.append(element); return element; } function Comment(text) { var element = new Element(Comment); if (text) { element.text = text; } return element; } function ProcessingInstruction(target, text) { var element = new Element(ProcessingInstruction); element.text = target; if (text) { element.text = element.text + " " + text; } return element; } function QName(text_or_uri, tag) { if (tag) { text_or_uri = sprintf("{%s}%s", text_or_uri, tag); } this.text = text_or_uri; } QName.prototype.toString = function() { return this.text; }; function ElementTree(element) { this._root = element; } ElementTree.prototype.getroot = function() { return this._root; }; ElementTree.prototype._setroot = function(element) { this._root = element; }; ElementTree.prototype.parse = function(source, parser) { if (!parser) { parser = get_parser(constants.DEFAULT_PARSER); parser = new parser.XMLParser(new TreeBuilder()); } parser.feed(source); this._root = parser.close(); return this._root; }; ElementTree.prototype.iter = function(tag, callback) { this._root.iter(tag, callback); }; ElementTree.prototype.find = function(path) { return this._root.find(path); }; ElementTree.prototype.findtext = function(path, defvalue) { return this._root.findtext(path, defvalue); }; ElementTree.prototype.findall = function(path) { return this._root.findall(path); }; /** * Unlike ElementTree, we don't write to a file, we return you a string. */ ElementTree.prototype.write = function(options) { var sb = []; options = utils.merge({ encoding: 'utf-8', xml_declaration: null, default_namespace: null, method: 'xml'}, options); if (options.xml_declaration !== false) { sb.push("\n"); } if (options.method === "text") { _serialize_text(sb, self._root, encoding); } else { var qnames, namespaces, indent, indent_string; var x = _namespaces(this._root, options.encoding, options.default_namespace); qnames = x[0]; namespaces = x[1]; if (options.hasOwnProperty('indent')) { indent = 0; indent_string = new Array(options.indent + 1).join(' '); } else { indent = false; } if (options.method === "xml") { _serialize_xml(function(data) { sb.push(data); }, this._root, options.encoding, qnames, namespaces, indent, indent_string); } else { /* TODO: html */ throw new Error("unknown serialization method "+ options.method); } } return sb.join(""); }; var _namespace_map = { /* "well-known" namespace prefixes */ "http://www.w3.org/XML/1998/namespace": "xml", "http://www.w3.org/1999/xhtml": "html", "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf", "http://schemas.xmlsoap.org/wsdl/": "wsdl", /* xml schema */ "http://www.w3.org/2001/XMLSchema": "xs", "http://www.w3.org/2001/XMLSchema-instance": "xsi", /* dublic core */ "http://purl.org/dc/elements/1.1/": "dc", }; function register_namespace(prefix, uri) { if (/ns\d+$/.test(prefix)) { throw new Error('Prefix format reserved for internal use'); } if (_namespace_map.hasOwnProperty(uri) && _namespace_map[uri] === prefix) { delete _namespace_map[uri]; } _namespace_map[uri] = prefix; } function _escape(text, encoding, isAttribute, isText) { if (text) { text = text.toString(); text = text.replace(/&/g, '&'); text = text.replace(//g, '>'); if (!isText) { text = text.replace(/\n/g, ' '); text = text.replace(/\r/g, ' '); } if (isAttribute) { text = text.replace(/"/g, '"'); } } return text; } /* TODO: benchmark single regex */ function _escape_attrib(text, encoding) { return _escape(text, encoding, true); } function _escape_cdata(text, encoding) { return _escape(text, encoding, false); } function _escape_text(text, encoding) { return _escape(text, encoding, false, true); } function _namespaces(elem, encoding, default_namespace) { var qnames = {}; var namespaces = {}; if (default_namespace) { namespaces[default_namespace] = ""; } function encode(text) { return text; } function add_qname(qname) { if (qname[0] === "{") { var tmp = qname.substring(1).split("}", 2); var uri = tmp[0]; var tag = tmp[1]; var prefix = namespaces[uri]; if (prefix === undefined) { prefix = _namespace_map[uri]; if (prefix === undefined) { prefix = "ns" + Object.keys(namespaces).length; } if (prefix !== "xml") { namespaces[uri] = prefix; } } if (prefix) { qnames[qname] = sprintf("%s:%s", prefix, tag); } else { qnames[qname] = tag; } } else { if (default_namespace) { throw new Error('cannot use non-qualified names with default_namespace option'); } qnames[qname] = qname; } } elem.iter(null, function(e) { var i; var tag = e.tag; var text = e.text; var items = e.items(); if (tag instanceof QName && qnames[tag.text] === undefined) { add_qname(tag.text); } else if (typeof(tag) === "string") { add_qname(tag); } else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) { throw new Error('Invalid tag type for serialization: '+ tag); } if (text instanceof QName && qnames[text.text] === undefined) { add_qname(text.text); } items.forEach(function(item) { var key = item[0], value = item[1]; if (key instanceof QName) { key = key.text; } if (qnames[key] === undefined) { add_qname(key); } if (value instanceof QName && qnames[value.text] === undefined) { add_qname(value.text); } }); }); return [qnames, namespaces]; } function _serialize_xml(write, elem, encoding, qnames, namespaces, indent, indent_string) { var tag = elem.tag; var text = elem.text; var items; var i; var newlines = indent || (indent === 0); write(Array(indent + 1).join(indent_string)); if (tag === Comment) { write(sprintf("", _escape_cdata(text, encoding))); } else if (tag === ProcessingInstruction) { write(sprintf("", _escape_cdata(text, encoding))); } else { tag = qnames[tag]; if (tag === undefined) { if (text) { write(_escape_text(text, encoding)); } elem.iter(function(e) { _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string); }); } else { write("<" + tag); items = elem.items(); if (items || namespaces) { items.sort(); // lexical order items.forEach(function(item) { var k = item[0], v = item[1]; if (k instanceof QName) { k = k.text; } if (v instanceof QName) { v = qnames[v.text]; } else { v = _escape_attrib(v, encoding); } write(sprintf(" %s=\"%s\"", qnames[k], v)); }); if (namespaces) { items = utils.items(namespaces); items.sort(function(a, b) { return a[1] < b[1]; }); items.forEach(function(item) { var k = item[1], v = item[0]; if (k) { k = ':' + k; } write(sprintf(" xmlns%s=\"%s\"", k, _escape_attrib(v, encoding))); }); } } if (text || elem.len()) { if (text && text.toString().match(/^\s*$/)) { text = null; } write(">"); if (!text && newlines) { write("\n"); } if (text) { write(_escape_text(text, encoding)); } elem._children.forEach(function(e) { _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string); }); if (!text && indent) { write(Array(indent + 1).join(indent_string)); } write(""); } else { write(" />"); } } } if (newlines) { write("\n"); } } function parse(source, parser) { var tree = new ElementTree(); tree.parse(source, parser); return tree; } function tostring(element, options) { return new ElementTree(element).write(options); } exports.PI = ProcessingInstruction; exports.Comment = Comment; exports.ProcessingInstruction = ProcessingInstruction; exports.SubElement = SubElement; exports.QName = QName; exports.ElementTree = ElementTree; exports.ElementPath = ElementPath; exports.Element = function(tag, attrib) { return new Element(tag, attrib); }; exports.XML = function(data) { var et = new ElementTree(); return et.parse(data); }; exports.parse = parse; exports.register_namespace = register_namespace; exports.tostring = tostring; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/errors.js0000664000000000000000000000164212301417627025515 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var util = require('util'); var sprintf = require('./sprintf').sprintf; function SyntaxError(token, msg) { msg = msg || sprintf('Syntax Error at token %s', token.toString()); this.token = token; this.message = msg; Error.call(this, msg); } util.inherits(SyntaxError, Error); exports.SyntaxError = SyntaxError; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/treebuilder.js0000664000000000000000000000230012301417627026477 0ustar function TreeBuilder(element_factory) { this._data = []; this._elem = []; this._last = null; this._tail = null; if (!element_factory) { /* evil circular dep */ element_factory = require('./elementtree').Element; } this._factory = element_factory; } TreeBuilder.prototype.close = function() { return this._last; }; TreeBuilder.prototype._flush = function() { if (this._data) { if (this._last !== null) { var text = this._data.join(""); if (this._tail) { this._last.tail = text; } else { this._last.text = text; } } this._data = []; } }; TreeBuilder.prototype.data = function(data) { this._data.push(data); }; TreeBuilder.prototype.start = function(tag, attrs) { this._flush(); var elem = this._factory(tag, attrs); this._last = elem; if (this._elem.length) { this._elem[this._elem.length - 1].append(elem); } this._elem.push(elem); this._tail = null; }; TreeBuilder.prototype.end = function(tag) { this._flush(); this._last = this._elem.pop(); if (this._last.tag !== tag) { throw new Error("end tag mismatch"); } this._tail = 1; return this._last; }; exports.TreeBuilder = TreeBuilder; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/parsers/0000775000000000000000000000000012301420116025302 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/parsers/sax.js0000664000000000000000000000253712301417627026457 0ustar var util = require('util'); var sax = require('sax'); var TreeBuilder = require('./../treebuilder').TreeBuilder; function XMLParser(target) { this.parser = sax.parser(true); this.target = (target) ? target : new TreeBuilder(); this.parser.onopentag = this._handleOpenTag.bind(this); this.parser.ontext = this._handleText.bind(this); this.parser.oncdata = this._handleCdata.bind(this); this.parser.ondoctype = this._handleDoctype.bind(this); this.parser.oncomment = this._handleComment.bind(this); this.parser.onclosetag = this._handleCloseTag.bind(this); this.parser.onerror = this._handleError.bind(this); } XMLParser.prototype._handleOpenTag = function(tag) { this.target.start(tag.name, tag.attributes); }; XMLParser.prototype._handleText = function(text) { this.target.data(text); }; XMLParser.prototype._handleCdata = function(text) { this.target.data(text); }; XMLParser.prototype._handleDoctype = function(text) { }; XMLParser.prototype._handleComment = function(comment) { }; XMLParser.prototype._handleCloseTag = function(tag) { this.target.end(tag); }; XMLParser.prototype._handleError = function(err) { throw err; }; XMLParser.prototype.feed = function(chunk) { this.parser.write(chunk); }; XMLParser.prototype.close = function() { this.parser.close(); return this.target.close(); }; exports.XMLParser = XMLParser; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/parsers/index.js0000664000000000000000000000004012301417627026756 0ustar exports.sax = require('./sax'); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/constants.js0000664000000000000000000000124512301417627026214 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var DEFAULT_PARSER = 'sax'; exports.DEFAULT_PARSER = DEFAULT_PARSER; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/sprintf.js0000664000000000000000000000451612301417627025671 0ustar /* * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var cache = {}; // Do any others need escaping? var TO_ESCAPE = { '\'': '\\\'', '\n': '\\n' }; function populate(formatter) { var i, type, key = formatter, prev = 0, arg = 1, builder = 'return \''; for (i = 0; i < formatter.length; i++) { if (formatter[i] === '%') { type = formatter[i + 1]; switch (type) { case 's': builder += formatter.slice(prev, i) + '\' + arguments[' + arg + '] + \''; prev = i + 2; arg++; break; case 'j': builder += formatter.slice(prev, i) + '\' + JSON.stringify(arguments[' + arg + ']) + \''; prev = i + 2; arg++; break; case '%': builder += formatter.slice(prev, i + 1); prev = i + 2; i++; break; } } else if (TO_ESCAPE[formatter[i]]) { builder += formatter.slice(prev, i) + TO_ESCAPE[formatter[i]]; prev = i + 1; } } builder += formatter.slice(prev) + '\';'; cache[key] = new Function(builder); } /** * A fast version of sprintf(), which currently only supports the %s and %j. * This caches a formatting function for each format string that is used, so * you should only use this sprintf() will be called many times with a single * format string and a limited number of format strings will ever be used (in * general this means that format strings should be string literals). * * @param {String} formatter A format string. * @param {...String} var_args Values that will be formatted by %s and %j. * @return {String} The formatted output. */ exports.sprintf = function(formatter, var_args) { if (!cache[formatter]) { populate(formatter); } return cache[formatter].apply(null, arguments); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/lib/utils.js0000664000000000000000000000275112301417627025343 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * @param {Object} hash. * @param {Array} ignored. */ function items(hash, ignored) { ignored = ignored || null; var k, rv = []; function is_ignored(key) { if (!ignored || ignored.length === 0) { return false; } return ignored.indexOf(key); } for (k in hash) { if (hash.hasOwnProperty(k) && !(is_ignored(ignored))) { rv.push([k, hash[k]]); } } return rv; } function findall(re, str) { var match, matches = []; while ((match = re.exec(str))) { matches.push(match); } return matches; } function merge(a, b) { var c = {}, attrname; for (attrname in a) { if (a.hasOwnProperty(attrname)) { c[attrname] = a[attrname]; } } for (attrname in b) { if (b.hasOwnProperty(attrname)) { c[attrname] = b[attrname]; } } return c; } exports.items = items; exports.findall = findall; exports.merge = merge; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/.travis.yml0000664000000000000000000000015612301417627025205 0ustar language: node_js node_js: - 0.6 script: make test notifications: email: - tomaz+travisci@tomaz.me cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/.npmignore0000664000000000000000000000001512301417627025065 0ustar node_modules cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/tests/0000775000000000000000000000000012301420116024217 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/tests/test-simple.js0000664000000000000000000002137712301417627027052 0ustar /** * Copyright 2011 Rackspace * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ var fs = require('fs'); var path = require('path'); var sprintf = require('./../lib/sprintf').sprintf; var et = require('elementtree'); var XML = et.XML; var ElementTree = et.ElementTree; var Element = et.Element; var SubElement = et.SubElement; var SyntaxError = require('./../lib/errors').SyntaxError; function readFile(name) { return fs.readFileSync(path.join(__dirname, '/data/', name), 'utf8'); } exports['test_simplest'] = function(test, assert) { /* Ported from */ var Element = et.Element; var root = Element('root'); root.append(Element('one')); root.append(Element('two')); root.append(Element('three')); assert.equal(3, root.len()); assert.equal('one', root.getItem(0).tag); assert.equal('two', root.getItem(1).tag); assert.equal('three', root.getItem(2).tag); test.finish(); }; exports['test_attribute_values'] = function(test, assert) { var XML = et.XML; var root = XML(''); assert.equal('Alpha', root.attrib['alpha']); assert.equal('Beta', root.attrib['beta']); assert.equal('Gamma', root.attrib['gamma']); test.finish(); }; exports['test_findall'] = function(test, assert) { var XML = et.XML; var root = XML(''); assert.equal(root.findall("c").length, 1); assert.equal(root.findall(".//c").length, 2); assert.equal(root.findall(".//b").length, 3); assert.equal(root.findall(".//b")[0]._children.length, 1); assert.equal(root.findall(".//b")[1]._children.length, 0); assert.equal(root.findall(".//b")[2]._children.length, 0); assert.deepEqual(root.findall('.//b')[0], root.getchildren()[0]); test.finish(); }; exports['test_find'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); var c = SubElement(a, 'c'); assert.deepEqual(a.find('./b/..'), a); test.finish(); }; exports['test_elementtree_find_qname'] = function(test, assert) { var tree = new et.ElementTree(XML('')); assert.deepEqual(tree.find(new et.QName('c')), tree.getroot()._children[2]); test.finish(); }; exports['test_attrib_ns_clear'] = function(test, assert) { var attribNS = '{http://foo/bar}x'; var par = Element('par'); par.set(attribNS, 'a'); var child = SubElement(par, 'child'); child.set(attribNS, 'b'); assert.equal('a', par.get(attribNS)); assert.equal('b', child.get(attribNS)); par.clear(); assert.equal(null, par.get(attribNS)); assert.equal('b', child.get(attribNS)); test.finish(); }; exports['test_create_tree_and_parse_simple'] = function(test, assert) { var i = 0; var e = new Element('bar', {}); var expected = "\n" + 'ponies'; SubElement(e, "blah", {a: 11}); SubElement(e, "blah", {a: 12}); var se = et.SubElement(e, "gag", {a: '13', b: 'abc'}); se.text = 'ponies'; se.itertext(function(text) { assert.equal(text, 'ponies'); i++; }); assert.equal(i, 1); var etree = new ElementTree(e); var xml = etree.write(); assert.equal(xml, expected); test.finish(); }; exports['test_write_with_options'] = function(test, assert) { var i = 0; var e = new Element('bar', {}); var expected1 = "\n" + '\n' + ' \n' + ' test\n' + ' \n' + ' \n' + ' ponies\n' + '\n'; var expected2 = "\n" + '\n' + ' \n' + ' test\n' + ' \n' + ' \n' + ' ponies\n' + '\n'; var expected3 = "\n" + '\n' + ' \n' + ' Hello World\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' Test & Test & Test\n' + ' \n' + '\n'; var se1 = SubElement(e, "blah", {a: 11}); var se2 = SubElement(se1, "baz", {d: 11}); se2.text = 'test'; SubElement(e, "blah", {a: 12}); var se = et.SubElement(e, "gag", {a: '13', b: 'abc'}); se.text = 'ponies'; se.itertext(function(text) { assert.equal(text, 'ponies'); i++; }); assert.equal(i, 1); var etree = new ElementTree(e); var xml1 = etree.write({'indent': 4}); var xml2 = etree.write({'indent': 2}); assert.equal(xml1, expected1); assert.equal(xml2, expected2); var file = readFile('xml2.xml'); var etree2 = et.parse(file); var xml3 = etree2.write({'indent': 4}); assert.equal(xml3, expected3); test.finish(); }; exports['test_parse_and_find_2'] = function(test, assert) { var data = readFile('xml1.xml'); var etree = et.parse(data); assert.equal(etree.findall('./object').length, 2); assert.equal(etree.findall('[@name]').length, 1); assert.equal(etree.findall('[@name="test_container_1"]').length, 1); assert.equal(etree.findall('[@name=\'test_container_1\']').length, 1); assert.equal(etree.findall('./object')[0].findtext('name'), 'test_object_1'); assert.equal(etree.findtext('./object/name'), 'test_object_1'); assert.equal(etree.findall('.//bytes').length, 2); assert.equal(etree.findall('*/bytes').length, 2); assert.equal(etree.findall('*/foobar').length, 0); test.finish(); }; exports['test_namespaced_attribute'] = function(test, assert) { var data = readFile('xml1.xml'); var etree = et.parse(data); assert.equal(etree.findall('*/bytes[@android:type="cool"]').length, 1); test.finish(); } exports['test_syntax_errors'] = function(test, assert) { var expressions = [ './/@bar', '[@bar', '[@foo=bar]', '[@', '/bar' ]; var errCount = 0; var data = readFile('xml1.xml'); var etree = et.parse(data); expressions.forEach(function(expression) { try { etree.findall(expression); } catch (err) { errCount++; } }); assert.equal(errCount, expressions.length); test.finish(); }; exports['test_register_namespace'] = function(test, assert){ var prefix = 'TESTPREFIX'; var namespace = 'http://seriously.unknown/namespace/URI'; var errCount = 0; var etree = Element(sprintf('{%s}test', namespace)); assert.equal(et.tostring(etree, { 'xml_declaration': false}), sprintf('', namespace)); et.register_namespace(prefix, namespace); var etree = Element(sprintf('{%s}test', namespace)); assert.equal(et.tostring(etree, { 'xml_declaration': false}), sprintf('<%s:test xmlns:%s="%s" />', prefix, prefix, namespace)); try { et.register_namespace('ns25', namespace); } catch (err) { errCount++; } assert.equal(errCount, 1, 'Reserved prefix used, but exception was not thrown'); test.finish(); }; exports['test_tostring'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); var c = SubElement(a, 'c'); c.text = 543; assert.equal(et.tostring(a, { 'xml_declaration': false }), '543'); assert.equal(et.tostring(c, { 'xml_declaration': false }), '543'); test.finish(); }; exports['test_escape'] = function(test, assert) { var a = Element('a'); var b = SubElement(a, 'b'); b.text = '&&&&<>"\n\r'; assert.equal(et.tostring(a, { 'xml_declaration': false }), '&&&&<>\"\n\r'); test.finish(); }; exports['test_find_null'] = function(test, assert) { var root = Element('root'); var node = SubElement(root, 'node'); var leaf = SubElement(node, 'leaf'); leaf.text = 'ipsum'; assert.equal(root.find('node/leaf'), leaf); assert.equal(root.find('no-such-node/leaf'), null); test.finish(); }; exports['test_findtext_null'] = function(test, assert) { var root = Element('root'); var node = SubElement(root, 'node'); var leaf = SubElement(node, 'leaf'); leaf.text = 'ipsum'; assert.equal(root.findtext('node/leaf'), 'ipsum'); assert.equal(root.findtext('no-such-node/leaf'), null); test.finish(); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/tests/data/0000775000000000000000000000000012301420116025130 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/tests/data/xml1.xml0000664000000000000000000000122612301417627026551 0ustar dd test_object_1 4281c348eaf83e70ddce0e07221c3d28 14 application/octetstream 2009-02-03T05:26:32.612278 test_object_2 b039efe731ad111bc1b0ef221c3849d0 64 application/octetstream 2009-02-03T05:26:32.612278 cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/tests/data/xml2.xml0000664000000000000000000000041212301417627026546 0ustar Hello World cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/elementtree/Makefile0000775000000000000000000000102312301417627024531 0ustar TESTS := \ tests/test-simple.js PATH := ./node_modules/.bin:$(PATH) WHISKEY := $(shell bash -c 'PATH=$(PATH) type -p whiskey') default: test test: NODE_PATH=`pwd`/lib/ ${WHISKEY} --scope-leaks --sequential --real-time --tests "${TESTS}" tap: NODE_PATH=`pwd`/lib/ ${WHISKEY} --test-reporter tap --sequential --real-time --tests "${TESTS}" coverage: NODE_PATH=`pwd`/lib/ ${WHISKEY} --sequential --coverage --coverage-reporter html --coverage-dir coverage_html --tests "${TESTS}" .PHONY: default test coverage tap scope cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/0000775000000000000000000000000012301420116022414 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/package.json0000664000000000000000000002711212301417627024722 0ustar { "name": "optimist", "version": "0.6.0", "description": "Light-weight option parsing with an argv hash. No optstrings attached.", "main": "./index.js", "dependencies": { "wordwrap": "~0.0.2", "minimist": "~0.0.1" }, "devDependencies": { "hashish": "~0.0.4", "tap": "~0.4.0" }, "scripts": { "test": "tap ./test/*.js" }, "repository": { "type": "git", "url": "http://github.com/substack/node-optimist.git" }, "keywords": [ "argument", "args", "option", "parser", "parsing", "cli", "command" ], "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "license": "MIT/X11", "engine": { "node": ">=0.4" }, "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", "readmeFilename": "readme.markdown", "bugs": { "url": "https://github.com/substack/node-optimist/issues" }, "_id": "optimist@0.6.0", "dist": { "shasum": "69424826f3405f79f142e6fc3d9ae58d4dbb9200" }, "_from": "optimist@0.6.0", "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/0000775000000000000000000000000012301420116024047 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/line_count_wrap.js0000664000000000000000000000136712301417627027621 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .wrap(80) .demand('f') .alias('f', [ 'file', 'filename' ]) .describe('f', "Load a file. It's pretty important." + " Required even. So you'd better specify it." ) .alias('b', 'base') .describe('b', 'Numeric base to display the number of lines in') .default('b', 10) .describe('x', 'Super-secret optional parameter which is secret') .default('x', '') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines.toString(argv.base)); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/line_count.js0000664000000000000000000000063112301417627026561 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .demand('f') .alias('f', 'file') .describe('f', 'Load a file') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/boolean_single.js0000664000000000000000000000017312301417627027403 0ustar #!/usr/bin/env node var argv = require('optimist') .boolean('v') .argv ; console.dir(argv.v); console.dir(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/string.js0000664000000000000000000000033112301417627025725 0ustar #!/usr/bin/env node var argv = require('optimist') .string('x', 'y') .argv ; console.dir([ argv.x, argv.y ]); /* Turns off numeric coercion: ./node string.js -x 000123 -y 9876 [ '000123', '9876' ] */ cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/short.js0000664000000000000000000000014112301417627025555 0ustar #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/default_singles.js0000664000000000000000000000021112301417627027564 0ustar #!/usr/bin/env node var argv = require('optimist') .default('x', 10) .default('y', 10) .argv ; console.log(argv.x + argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/line_count_options.js0000664000000000000000000000117312301417627030336 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .options({ file : { demand : true, alias : 'f', description : 'Load a file' }, base : { alias : 'b', description : 'Numeric base to use for output', default : 10, }, }) .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines.toString(argv.base)); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/xup.js0000664000000000000000000000030112301417627025230 0ustar #!/usr/bin/env node var argv = require('optimist').argv; if (argv.rif - 5 * argv.xup > 7.138) { console.log('Buy more riffiwobbles'); } else { console.log('Sell the xupptumblers'); } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/reflect.js0000664000000000000000000000007312301417627026046 0ustar #!/usr/bin/env node console.dir(require('optimist').argv); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/usage-options.js0000664000000000000000000000067012301417627027222 0ustar var optimist = require('./../index'); var argv = optimist.usage('This is my awesome program', { 'about': { description: 'Provide some details about the author of this program', required: true, short: 'a', }, 'info': { description: 'Provide some information about the node.js agains!!!!!!', boolean: true, short: 'i' } }).argv; optimist.showHelp(); console.log('\n\nInspecting options'); console.dir(argv);cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/bool.js0000664000000000000000000000035312301417627025356 0ustar #!/usr/bin/env node var util = require('util'); var argv = require('optimist').argv; if (argv.s) { util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); } console.log( (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') ); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/divide.js0000664000000000000000000000023712301417627025670 0ustar #!/usr/bin/env node var argv = require('optimist') .usage('Usage: $0 -x [num] -y [num]') .demand(['x','y']) .argv; console.log(argv.x / argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/default_hash.js0000664000000000000000000000020012301417627027041 0ustar #!/usr/bin/env node var argv = require('optimist') .default({ x : 10, y : 10 }) .argv ; console.log(argv.x + argv.y); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/nonopt.js0000664000000000000000000000016612301417627025742 0ustar #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); console.log(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/example/boolean_double.js0000664000000000000000000000023112301417627027367 0ustar #!/usr/bin/env node var argv = require('optimist') .boolean(['x','y','z']) .argv ; console.dir([ argv.x, argv.y, argv.z ]); console.dir(argv._); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/readme.markdown0000664000000000000000000002401412301417627025433 0ustar optimist ======== Optimist is a node.js library for option parsing for people who hate option parsing. More specifically, this module is for people who like all the --bells and -whistlz of program usage but think optstrings are a waste of time. With optimist, option parsing doesn't have to suck (as much). [![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) examples ======== With Optimist, the options are just a hash! No optstrings attached. ------------------------------------------------------------------- xup.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; if (argv.rif - 5 * argv.xup > 7.138) { console.log('Buy more riffiwobbles'); } else { console.log('Sell the xupptumblers'); } ```` *** $ ./xup.js --rif=55 --xup=9.52 Buy more riffiwobbles $ ./xup.js --rif 12 --xup 8.1 Sell the xupptumblers ![This one's optimistic.](http://substack.net/images/optimistic.png) But wait! There's more! You can do short options: ------------------------------------------------- short.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); ```` *** $ ./short.js -x 10 -y 21 (10,21) And booleans, both long and short (and grouped): ---------------------------------- bool.js: ````javascript #!/usr/bin/env node var util = require('util'); var argv = require('optimist').argv; if (argv.s) { util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); } console.log( (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') ); ```` *** $ ./bool.js -s The cat says: meow $ ./bool.js -sp The cat says: meow. $ ./bool.js -sp --fr Le chat dit: miaou. And non-hypenated options too! Just use `argv._`! ------------------------------------------------- nonopt.js: ````javascript #!/usr/bin/env node var argv = require('optimist').argv; console.log('(%d,%d)', argv.x, argv.y); console.log(argv._); ```` *** $ ./nonopt.js -x 6.82 -y 3.35 moo (6.82,3.35) [ 'moo' ] $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz (0.54,1.12) [ 'foo', 'bar', 'baz' ] Plus, Optimist comes with .usage() and .demand()! ------------------------------------------------- divide.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .usage('Usage: $0 -x [num] -y [num]') .demand(['x','y']) .argv; console.log(argv.x / argv.y); ```` *** $ ./divide.js -x 55 -y 11 5 $ node ./divide.js -x 4.91 -z 2.51 Usage: node ./divide.js -x [num] -y [num] Options: -x [required] -y [required] Missing required arguments: y EVEN MORE HOLY COW ------------------ default_singles.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .default('x', 10) .default('y', 10) .argv ; console.log(argv.x + argv.y); ```` *** $ ./default_singles.js -x 5 15 default_hash.js: ````javascript #!/usr/bin/env node var argv = require('optimist') .default({ x : 10, y : 10 }) .argv ; console.log(argv.x + argv.y); ```` *** $ ./default_hash.js -y 7 17 And if you really want to get all descriptive about it... --------------------------------------------------------- boolean_single.js ````javascript #!/usr/bin/env node var argv = require('optimist') .boolean('v') .argv ; console.dir(argv); ```` *** $ ./boolean_single.js -v foo bar baz true [ 'bar', 'baz', 'foo' ] boolean_double.js ````javascript #!/usr/bin/env node var argv = require('optimist') .boolean(['x','y','z']) .argv ; console.dir([ argv.x, argv.y, argv.z ]); console.dir(argv._); ```` *** $ ./boolean_double.js -x -z one two three [ true, false, true ] [ 'one', 'two', 'three' ] Optimist is here to help... --------------------------- You can describe parameters for help messages and set aliases. Optimist figures out how to format a handy help string automatically. line_count.js ````javascript #!/usr/bin/env node var argv = require('optimist') .usage('Count the lines in a file.\nUsage: $0') .demand('f') .alias('f', 'file') .describe('f', 'Load a file') .argv ; var fs = require('fs'); var s = fs.createReadStream(argv.file); var lines = 0; s.on('data', function (buf) { lines += buf.toString().match(/\n/g).length; }); s.on('end', function () { console.log(lines); }); ```` *** $ node line_count.js Count the lines in a file. Usage: node ./line_count.js Options: -f, --file Load a file [required] Missing required arguments: f $ node line_count.js --file line_count.js 20 $ node line_count.js -f line_count.js 20 methods ======= By itself, ````javascript require('optimist').argv ````` will use `process.argv` array to construct the `argv` object. You can pass in the `process.argv` yourself: ````javascript require('optimist')([ '-x', '1', '-y', '2' ]).argv ```` or use .parse() to do the same thing: ````javascript require('optimist').parse([ '-x', '1', '-y', '2' ]) ```` The rest of these methods below come in just before the terminating `.argv`. .alias(key, alias) ------------------ Set key names as equivalent such that updates to a key will propagate to aliases and vice-versa. Optionally `.alias()` can take an object that maps keys to aliases. .default(key, value) -------------------- Set `argv[key]` to `value` if no option was specified on `process.argv`. Optionally `.default()` can take an object that maps keys to default values. .demand(key) ------------ If `key` is a string, show the usage information and exit if `key` wasn't specified in `process.argv`. If `key` is a number, demand at least as many non-option arguments, which show up in `argv._`. If `key` is an Array, demand each element. .describe(key, desc) -------------------- Describe a `key` for the generated usage information. Optionally `.describe()` can take an object that maps keys to descriptions. .options(key, opt) ------------------ Instead of chaining together `.alias().demand().default()`, you can specify keys in `opt` for each of the chainable methods. For example: ````javascript var argv = require('optimist') .options('f', { alias : 'file', default : '/etc/passwd', }) .argv ; ```` is the same as ````javascript var argv = require('optimist') .alias('f', 'file') .default('f', '/etc/passwd') .argv ; ```` Optionally `.options()` can take an object that maps keys to `opt` parameters. .usage(message) --------------- Set a usage message to show which commands to use. Inside `message`, the string `$0` will get interpolated to the current script name or node command for the present script similar to how `$0` works in bash or perl. .check(fn) ---------- Check that certain conditions are met in the provided arguments. If `fn` throws or returns `false`, show the thrown error, usage information, and exit. .boolean(key) ------------- Interpret `key` as a boolean. If a non-flag option follows `key` in `process.argv`, that string won't get set as the value of `key`. If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be `false`. If `key` is an Array, interpret all the elements as booleans. .string(key) ------------ Tell the parser logic not to interpret `key` as a number or boolean. This can be useful if you need to preserve leading zeros in an input. If `key` is an Array, interpret all the elements as strings. .wrap(columns) -------------- Format usage output to wrap at `columns` many columns. .help() ------- Return the generated usage string. .showHelp(fn=console.error) --------------------------- Print the usage data using `fn` for printing. .parse(args) ------------ Parse `args` instead of `process.argv`. Returns the `argv` object. .argv ----- Get the arguments as a plain old object. Arguments without a corresponding flag show up in the `argv._` array. The script name or node command is available at `argv.$0` similarly to how `$0` works in bash or perl. parsing tricks ============== stop parsing ------------ Use `--` to stop parsing flags and stuff the remainder into `argv._`. $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 { _: [ '-c', '3', '-d', '4' ], '$0': 'node ./examples/reflect.js', a: 1, b: 2 } negate fields ------------- If you want to explicity set a field to false instead of just leaving it undefined or to override a default you can do `--no-key`. $ node examples/reflect.js -a --no-b { _: [], '$0': 'node ./examples/reflect.js', a: true, b: false } numbers ------- Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to one. This way you can just `net.createConnection(argv.port)` and you can add numbers out of `argv` with `+` without having that mean concatenation, which is super frustrating. duplicates ---------- If you specify a flag multiple times it will get turned into an array containing all the values in order. $ node examples/reflect.js -x 5 -x 8 -x 0 { _: [], '$0': 'node ./examples/reflect.js', x: [ 5, 8, 0 ] } dot notation ------------ When you use dots (`.`s) in argument names, an implicit object path is assumed. This lets you organize arguments into nested objects. $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 { _: [], '$0': 'node ./examples/reflect.js', foo: { bar: { baz: 33 }, quux: 5 } } short numbers ------------- Short numeric `head -n5` style argument work too: $ node reflect.js -n123 -m456 { '3': true, '6': true, _: [], '$0': 'node ./reflect.js', n: 123, m: 456 } installation ============ With [npm](http://github.com/isaacs/npm), just do: npm install optimist or clone this project on github: git clone http://github.com/substack/node-optimist.git To run the tests with [expresso](http://github.com/visionmedia/expresso), just do: expresso inspired By =========== This module is loosely inspired by Perl's [Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/LICENSE0000664000000000000000000000216512301417627023442 0ustar Copyright 2010 James Halliday (mail@substack.net) This project is free software released under the MIT/X11 license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/0000775000000000000000000000000012301420116025071 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/0000775000000000000000000000000012301420116026722 5ustar ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/package.jsoncordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/package.0000664000000000000000000000524112301417627030335 0ustar { "name": "minimist", "version": "0.0.5", "description": "parse argument options", "main": "index.js", "devDependencies": { "tape": "~1.0.4", "tap": "~0.4.0" }, "scripts": { "test": "tap test/*.js" }, "testling": { "files": "test/*.js", "browsers": [ "ie/6..latest", "ff/5", "firefox/latest", "chrome/10", "chrome/latest", "safari/5.1", "safari/latest", "opera/12" ] }, "repository": { "type": "git", "url": "git://github.com/substack/minimist.git" }, "homepage": "https://github.com/substack/minimist", "keywords": [ "argv", "getopt", "parser", "optimist" ], "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "license": "MIT", "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", "readmeFilename": "readme.markdown", "bugs": { "url": "https://github.com/substack/minimist/issues" }, "_id": "minimist@0.0.5", "_from": "minimist@~0.0.1" } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/example/0000775000000000000000000000000012301420116030355 5ustar ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/example/parse.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/example/0000664000000000000000000000010512301417627030370 0ustar var argv = require('../')(process.argv.slice(2)); console.dir(argv); ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/readme.markdowncordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/readme.m0000664000000000000000000000314712301417627030357 0ustar # minimist parse argument options This module is the guts of optimist's argument parser without all the fanciful decoration. [![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) [![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) # example ``` js var argv = require('minimist')(process.argv.slice(2)); console.dir(argv); ``` ``` $ node example/parse.js -a beep -b boop { _: [], a: 'beep', b: 'boop' } ``` ``` $ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz { _: [ 'foo', 'bar', 'baz' ], x: 3, y: 4, n: 5, a: true, b: true, c: true, beep: 'boop' } ``` # methods ``` js var parseArgs = require('minimist') ``` ## var argv = parseArgs(args, opts={}) Return an argument object `argv` populated with the array arguments from `args`. `argv._` contains all the arguments that didn't have an option associated with them. Numeric-looking arguments will be returned as numbers unless `opts.string` or `opts.boolean` is set for that argument name. Any arguments after `'--'` will not be parsed and will end up in `argv._`. options can be: * `opts.string` - a string or array of strings argument names to always treat as strings * `opts.boolean` - a string or array of strings to always treat as booleans * `opts.alias` - an object mapping string names to strings or arrays of string argument names to use as aliases * `opts.default` - an object mapping string argument names to default values # install With [npm](https://npmjs.org) do: ``` npm install minimist ``` # license MIT cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/LICENSE0000664000000000000000000000206112301417627027743 0ustar This software is released under the MIT license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/index.js0000664000000000000000000001311212301417627030402 0ustar module.exports = function (args, opts) { if (!opts) opts = {}; var flags = { bools : {}, strings : {} }; [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { flags.bools[key] = true; }); [].concat(opts.string).filter(Boolean).forEach(function (key) { flags.strings[key] = true; }); var aliases = {}; Object.keys(opts.alias || {}).forEach(function (key) { aliases[key] = [].concat(opts.alias[key]); aliases[key].forEach(function (x) { aliases[x] = [key].concat(aliases[key].filter(function (y) { return x !== y; })); }); }); var defaults = opts['default'] || {}; var argv = { _ : [] }; Object.keys(flags.bools).forEach(function (key) { setArg(key, defaults[key] === undefined ? false : defaults[key]); }); var notFlags = []; if (args.indexOf('--') !== -1) { notFlags = args.slice(args.indexOf('--')+1); args = args.slice(0, args.indexOf('--')); } function setArg (key, val) { var value = !flags.strings[key] && isNumber(val) ? Number(val) : val ; setKey(argv, key.split('.'), value); (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), value); }); } for (var i = 0; i < args.length; i++) { var arg = args[i]; if (arg.match(/^--.+=/)) { // Using [\s\S] instead of . because js doesn't support the // 'dotall' regex modifier. See: // http://stackoverflow.com/a/1068308/13216 var m = arg.match(/^--([^=]+)=([\s\S]*)$/); setArg(m[1], m[2]); } else if (arg.match(/^--no-.+/)) { var key = arg.match(/^--no-(.+)/)[1]; setArg(key, false); } else if (arg.match(/^--.+/)) { var key = arg.match(/^--(.+)/)[1]; var next = args[i + 1]; if (next !== undefined && !next.match(/^-/) && !flags.bools[key] && (aliases[key] ? !flags.bools[aliases[key]] : true)) { setArg(key, next); i++; } else if (/^(true|false)$/.test(next)) { setArg(key, next === 'true'); i++; } else { setArg(key, true); } } else if (arg.match(/^-[^-]+/)) { var letters = arg.slice(1,-1).split(''); var broken = false; for (var j = 0; j < letters.length; j++) { var next = arg.slice(j+2); if (letters[j+1] && letters[j+1] === '=') { setArg(letters[j], arg.slice(j+3)); broken = true; break; } if (next === '-') { setArg(letters[j], next) continue; } if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { setArg(letters[j], next); broken = true; break; } if (letters[j+1] && letters[j+1].match(/\W/)) { setArg(letters[j], arg.slice(j+2)); broken = true; break; } else { setArg(letters[j], true); } } var key = arg.slice(-1)[0]; if (!broken && key !== '-') { if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) && !flags.bools[key] && (aliases[key] ? !flags.bools[aliases[key]] : true)) { setArg(key, args[i+1]); i++; } else if (args[i+1] && /true|false/.test(args[i+1])) { setArg(key, args[i+1] === 'true'); i++; } else { setArg(key, true); } } } else { argv._.push( flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) ); } } Object.keys(defaults).forEach(function (key) { if (!hasKey(argv, key.split('.'))) { setKey(argv, key.split('.'), defaults[key]); (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), defaults[key]); }); } }); notFlags.forEach(function(key) { argv._.push(key); }); return argv; }; function hasKey (obj, keys) { var o = obj; keys.slice(0,-1).forEach(function (key) { o = (o[key] || {}); }); var key = keys[keys.length - 1]; return key in o; } function setKey (obj, keys, value) { var o = obj; keys.slice(0,-1).forEach(function (key) { if (o[key] === undefined) o[key] = {}; o = o[key]; }); var key = keys[keys.length - 1]; if (o[key] === undefined || typeof o[key] === 'boolean') { o[key] = value; } else if (Array.isArray(o[key])) { o[key].push(value); } else { o[key] = [ o[key], value ]; } } function isNumber (x) { if (typeof x === 'number') return true; if (/^0x[0-9a-f]+$/i.test(x)) return true; return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); } function longest (xs) { return Math.max.apply(null, xs.map(function (x) { return x.length })); } ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/.travis.ymlcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/.travis.0000664000000000000000000000006012301417627030322 0ustar language: node_js node_js: - "0.8" - "0.10" cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/0000775000000000000000000000000012301420116027701 5ustar ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/parse.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/par0000664000000000000000000001562712301417627030436 0ustar var parse = require('../'); var test = require('tape'); test('parse args', function (t) { t.deepEqual( parse([ '--no-moo' ]), { moo : false, _ : [] }, 'no' ); t.deepEqual( parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), { v : ['a','b','c'], _ : [] }, 'multi' ); t.end(); }); test('comprehensive', function (t) { t.deepEqual( parse([ '--name=meowmers', 'bare', '-cats', 'woo', '-h', 'awesome', '--multi=quux', '--key', 'value', '-b', '--bool', '--no-meep', '--multi=baz', '--', '--not-a-flag', 'eek' ]), { c : true, a : true, t : true, s : 'woo', h : 'awesome', b : true, bool : true, key : 'value', multi : [ 'quux', 'baz' ], meep : false, name : 'meowmers', _ : [ 'bare', '--not-a-flag', 'eek' ] } ); t.end(); }); test('nums', function (t) { var argv = parse([ '-x', '1234', '-y', '5.67', '-z', '1e7', '-w', '10f', '--hex', '0xdeadbeef', '789' ]); t.deepEqual(argv, { x : 1234, y : 5.67, z : 1e7, w : '10f', hex : 0xdeadbeef, _ : [ 789 ] }); t.deepEqual(typeof argv.x, 'number'); t.deepEqual(typeof argv.y, 'number'); t.deepEqual(typeof argv.z, 'number'); t.deepEqual(typeof argv.w, 'string'); t.deepEqual(typeof argv.hex, 'number'); t.deepEqual(typeof argv._[0], 'number'); t.end(); }); test('flag boolean', function (t) { var argv = parse([ '-t', 'moo' ], { boolean: 't' }); t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('flag boolean value', function (t) { var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { boolean: [ 't', 'verbose' ], default: { verbose: true } }); t.deepEqual(argv, { verbose: false, t: true, _: ['moo'] }); t.deepEqual(typeof argv.verbose, 'boolean'); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('flag boolean default false', function (t) { var argv = parse(['moo'], { boolean: ['t', 'verbose'], default: { verbose: false, t: false } }); t.deepEqual(argv, { verbose: false, t: false, _: ['moo'] }); t.deepEqual(typeof argv.verbose, 'boolean'); t.deepEqual(typeof argv.t, 'boolean'); t.end(); }); test('boolean groups', function (t) { var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { boolean: ['x','y','z'] }); t.deepEqual(argv, { x : true, y : false, z : true, _ : [ 'one', 'two', 'three' ] }); t.deepEqual(typeof argv.x, 'boolean'); t.deepEqual(typeof argv.y, 'boolean'); t.deepEqual(typeof argv.z, 'boolean'); t.end(); }); test('newlines in params' , function (t) { var args = parse([ '-s', "X\nX" ]) t.deepEqual(args, { _ : [], s : "X\nX" }); // reproduce in bash: // VALUE="new // line" // node program.js --s="$VALUE" args = parse([ "--s=X\nX" ]) t.deepEqual(args, { _ : [], s : "X\nX" }); t.end(); }); test('strings' , function (t) { var s = parse([ '-s', '0001234' ], { string: 's' }).s; t.equal(s, '0001234'); t.equal(typeof s, 'string'); var x = parse([ '-x', '56' ], { string: 'x' }).x; t.equal(x, '56'); t.equal(typeof x, 'string'); t.end(); }); test('stringArgs', function (t) { var s = parse([ ' ', ' ' ], { string: '_' })._; t.same(s.length, 2); t.same(typeof s[0], 'string'); t.same(s[0], ' '); t.same(typeof s[1], 'string'); t.same(s[1], ' '); t.end(); }); test('slashBreak', function (t) { t.same( parse([ '-I/foo/bar/baz' ]), { I : '/foo/bar/baz', _ : [] } ); t.same( parse([ '-xyz/foo/bar/baz' ]), { x : true, y : true, z : '/foo/bar/baz', _ : [] } ); t.end(); }); test('alias', function (t) { var argv = parse([ '-f', '11', '--zoom', '55' ], { alias: { z: 'zoom' } }); t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.f, 11); t.end(); }); test('multiAlias', function (t) { var argv = parse([ '-f', '11', '--zoom', '55' ], { alias: { z: [ 'zm', 'zoom' ] } }); t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.z, argv.zm); t.equal(argv.f, 11); t.end(); }); test('nested dotted objects', function (t) { var argv = parse([ '--foo.bar', '3', '--foo.baz', '4', '--foo.quux.quibble', '5', '--foo.quux.o_O', '--beep.boop' ]); t.same(argv.foo, { bar : 3, baz : 4, quux : { quibble : 5, o_O : true } }); t.same(argv.beep, { boop : true }); t.end(); }); test('boolean and alias with chainable api', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = parse(aliased, { boolean: 'herp', alias: { h: 'herp' } }); var propertyArgv = parse(regular, { boolean: 'herp', alias: { h: 'herp' } }); var expected = { herp: true, h: true, '_': [ 'derp' ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias with options hash', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { alias: { 'h': 'herp' }, boolean: 'herp' }; var aliasedArgv = parse(aliased, opts); var propertyArgv = parse(regular, opts); var expected = { herp: true, h: true, '_': [ 'derp' ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias using explicit true', function (t) { var aliased = [ '-h', 'true' ]; var regular = [ '--herp', 'true' ]; var opts = { alias: { h: 'herp' }, boolean: 'h' }; var aliasedArgv = parse(aliased, opts); var propertyArgv = parse(regular, opts); var expected = { herp: true, h: true, '_': [ ] }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); // regression, see https://github.com/substack/node-optimist/issues/71 test('boolean and --x=true', function(t) { var parsed = parse(['--boool', '--other=true'], { boolean: 'boool' }); t.same(parsed.boool, true); t.same(parsed.other, 'true'); parsed = parse(['--boool', '--other=false'], { boolean: 'boool' }); t.same(parsed.boool, true); t.same(parsed.other, 'false'); t.end(); }); ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/short.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/sho0000664000000000000000000000375412301417627030443 0ustar var parse = require('../'); var test = require('tape'); test('numeric short args', function (t) { t.plan(2); t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); t.deepEqual( parse([ '-123', '456' ]), { 1: true, 2: true, 3: 456, _: [] } ); }); test('short', function (t) { t.deepEqual( parse([ '-b' ]), { b : true, _ : [] }, 'short boolean' ); t.deepEqual( parse([ 'foo', 'bar', 'baz' ]), { _ : [ 'foo', 'bar', 'baz' ] }, 'bare' ); t.deepEqual( parse([ '-cats' ]), { c : true, a : true, t : true, s : true, _ : [] }, 'group' ); t.deepEqual( parse([ '-cats', 'meow' ]), { c : true, a : true, t : true, s : 'meow', _ : [] }, 'short group next' ); t.deepEqual( parse([ '-h', 'localhost' ]), { h : 'localhost', _ : [] }, 'short capture' ); t.deepEqual( parse([ '-h', 'localhost', '-p', '555' ]), { h : 'localhost', p : 555, _ : [] }, 'short captures' ); t.end(); }); test('mixed short bool and capture', function (t) { t.same( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ] } ); t.end(); }); test('short and long', function (t) { t.deepEqual( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ] } ); t.end(); }); test('-a=b', function (t) { t.plan(2); t.deepEqual(parse([ '-n=smth' ]), { _: [], n: 'smth' }); t.deepEqual( parse([ '-abn=smth' ]), { _: [], a: true, b: true, n: 'smth' } ); }); test('-a =b', function (t) { t.plan(2); t.deepEqual(parse([ '-n', '=smth' ]), { _: [], n: '=smth' }); t.deepEqual( parse([ '-abn', '=smth' ]), { _: [], a: true, b: true, n: '=smth' } ); }); ././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/default_bool.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/def0000664000000000000000000000070612301417627030402 0ustar var test = require('tape'); var parse = require('../'); test('boolean default true', function (t) { var argv = parse([], { boolean: 'sometrue', default: { sometrue: true } }); t.equal(argv.sometrue, true); t.end(); }); test('boolean default false', function (t) { var argv = parse([], { boolean: 'somefalse', default: { somefalse: false } }); t.equal(argv.somefalse, false); t.end(); }); ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/long.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/lon0000664000000000000000000000141312301417627030430 0ustar var test = require('tape'); var parse = require('../'); test('long opts', function (t) { t.deepEqual( parse([ '--bool' ]), { bool : true, _ : [] }, 'long boolean' ); t.deepEqual( parse([ '--pow', 'xixxle' ]), { pow : 'xixxle', _ : [] }, 'long capture sp' ); t.deepEqual( parse([ '--pow=xixxle' ]), { pow : 'xixxle', _ : [] }, 'long capture eq' ); t.deepEqual( parse([ '--host', 'localhost', '--port', '555' ]), { host : 'localhost', port : 555, _ : [] }, 'long captures sp' ); t.deepEqual( parse([ '--host=localhost', '--port=555' ]), { host : 'localhost', port : 555, _ : [] }, 'long captures eq' ); t.end(); }); ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/dotted.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/dot0000664000000000000000000000067112301417627030433 0ustar var parse = require('../'); var test = require('tape'); test('dotted alias', function (t) { var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); t.equal(argv.a.b, 22); t.equal(argv.aa.bb, 22); t.end(); }); test('dotted default', function (t) { var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); t.equal(argv.a.b, 11); t.equal(argv.aa.bb, 11); t.end(); }); ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/whitespace.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/whi0000664000000000000000000000027712301417627030436 0ustar var parse = require('../'); var test = require('tape'); test('whitespace should be whitespace' , function (t) { t.plan(1); var x = parse([ '-x', '\t' ]).x; t.equal(x, '\t'); }); ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/parse_modified.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/par0000664000000000000000000000036012301417627030422 0ustar var parse = require('../'); var test = require('tape'); test('parse with modifier functions' , function (t) { t.plan(1); var argv = parse([ '-b', '123' ], { boolean: 'b' }); t.deepEqual(argv, { b: true, _: ['123'] }); }); ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/dash.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/minimist/test/das0000664000000000000000000000132612301417627030412 0ustar var parse = require('../'); var test = require('tape'); test('-', function (t) { t.plan(5); t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); t.deepEqual( parse([ '-b', '-' ], { boolean: 'b' }), { b: true, _: [ '-' ] } ); t.deepEqual( parse([ '-s', '-' ], { string: 's' }), { s: '-', _: [] } ); }); test('-a -- b', function (t) { t.plan(3); t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/0000775000000000000000000000000012301420116026736 5ustar ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/package.jsoncordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/package.0000664000000000000000000000536012301417627030353 0ustar { "name": "wordwrap", "description": "Wrap those words. Show them at what columns to start and stop.", "version": "0.0.2", "repository": { "type": "git", "url": "git://github.com/substack/node-wordwrap.git" }, "main": "./index.js", "keywords": [ "word", "wrap", "rule", "format", "column" ], "directories": { "lib": ".", "example": "example", "test": "test" }, "scripts": { "test": "expresso" }, "devDependencies": { "expresso": "=0.7.x" }, "engines": { "node": ">=0.4.0" }, "license": "MIT/X11", "author": { "name": "James Halliday", "email": "mail@substack.net", "url": "http://substack.net" }, "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", "readmeFilename": "README.markdown", "bugs": { "url": "https://github.com/substack/node-wordwrap/issues" }, "_id": "wordwrap@0.0.2", "_from": "wordwrap@~0.0.2" } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/example/0000775000000000000000000000000012301420116030371 5ustar ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/example/center.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/example/0000664000000000000000000000056612301417627030417 0ustar var wrap = require('wordwrap')(20, 60); console.log(wrap( 'At long last the struggle and tumult was over.' + ' The machines had finally cast off their oppressors' + ' and were finally free to roam the cosmos.' + '\n' + 'Free of purpose, free of obligation.' + ' Just drifting through emptiness.' + ' The sun was just another point of light.' )); ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/example/meat.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/example/0000664000000000000000000000015312301417627030407 0ustar var wrap = require('wordwrap')(15); console.log(wrap('You and your whole family are made out of meat.')); ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/README.markdowncordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/README.m0000664000000000000000000000344312301417627030072 0ustar wordwrap ======== Wrap your words. example ======= made out of meat ---------------- meat.js var wrap = require('wordwrap')(15); console.log(wrap('You and your whole family are made out of meat.')); output: You and your whole family are made out of meat. centered -------- center.js var wrap = require('wordwrap')(20, 60); console.log(wrap( 'At long last the struggle and tumult was over.' + ' The machines had finally cast off their oppressors' + ' and were finally free to roam the cosmos.' + '\n' + 'Free of purpose, free of obligation.' + ' Just drifting through emptiness.' + ' The sun was just another point of light.' )); output: At long last the struggle and tumult was over. The machines had finally cast off their oppressors and were finally free to roam the cosmos. Free of purpose, free of obligation. Just drifting through emptiness. The sun was just another point of light. methods ======= var wrap = require('wordwrap'); wrap(stop), wrap(start, stop, params={mode:"soft"}) --------------------------------------------------- Returns a function that takes a string and returns a new string. Pad out lines with spaces out to column `start` and then wrap until column `stop`. If a word is longer than `stop - start` characters it will overflow. In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break up chunks longer than `stop - start`. wrap.hard(start, stop) ---------------------- Like `wrap()` but with `params.mode = "hard"`. cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/index.js0000664000000000000000000000426712301417627030431 0ustar var wordwrap = module.exports = function (start, stop, params) { if (typeof start === 'object') { params = start; start = params.start; stop = params.stop; } if (typeof stop === 'object') { params = stop; start = start || params.start; stop = undefined; } if (!stop) { stop = start; start = 0; } if (!params) params = {}; var mode = params.mode || 'soft'; var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; return function (text) { var chunks = text.toString() .split(re) .reduce(function (acc, x) { if (mode === 'hard') { for (var i = 0; i < x.length; i += stop - start) { acc.push(x.slice(i, i + stop - start)); } } else acc.push(x) return acc; }, []) ; return chunks.reduce(function (lines, rawChunk) { if (rawChunk === '') return lines; var chunk = rawChunk.replace(/\t/g, ' '); var i = lines.length - 1; if (lines[i].length + chunk.length > stop) { lines[i] = lines[i].replace(/\s+$/, ''); chunk.split(/\n/).forEach(function (c) { lines.push( new Array(start + 1).join(' ') + c.replace(/^\s+/, '') ); }); } else if (chunk.match(/\n/)) { var xs = chunk.split(/\n/); lines[i] += xs.shift(); xs.forEach(function (c) { lines.push( new Array(start + 1).join(' ') + c.replace(/^\s+/, '') ); }); } else { lines[i] += chunk; } return lines; }, [ new Array(start + 1).join(' ') ]).join('\n'); }; }; wordwrap.soft = wordwrap; wordwrap.hard = function (start, stop) { return wordwrap(start, stop, { mode : 'hard' }); }; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/0000775000000000000000000000000012301420116027715 5ustar ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/idleness.txtcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/idl0000664000000000000000000006773312301417627030445 0ustar In Praise of Idleness By Bertrand Russell [1932] Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. [1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/wrap.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/wra0000664000000000000000000000201312301417627030442 0ustar var assert = require('assert'); var wordwrap = require('wordwrap'); var fs = require('fs'); var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); exports.stop80 = function () { var lines = wordwrap(80)(idleness).split(/\n/); var words = idleness.split(/\s+/); lines.forEach(function (line) { assert.ok(line.length <= 80, 'line > 80 columns'); var chunks = line.match(/\S/) ? line.split(/\s+/) : []; assert.deepEqual(chunks, words.splice(0, chunks.length)); }); }; exports.start20stop60 = function () { var lines = wordwrap(20, 100)(idleness).split(/\n/); var words = idleness.split(/\s+/); lines.forEach(function (line) { assert.ok(line.length <= 100, 'line > 100 columns'); var chunks = line .split(/\s+/) .filter(function (x) { return x.match(/\S/) }) ; assert.deepEqual(chunks, words.splice(0, chunks.length)); assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); }); }; ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/break.jscordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/test/bre0000664000000000000000000000152512301417627030430 0ustar var assert = require('assert'); var wordwrap = require('../'); exports.hard = function () { var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' + '"browser":"chrome/6.0"}' ; var s_ = wordwrap.hard(80)(s); var lines = s_.split('\n'); assert.equal(lines.length, 2); assert.ok(lines[0].length < 80); assert.ok(lines[1].length < 80); assert.equal(s, s_.replace(/\n/g, '')); }; exports.break = function () { var s = new Array(55+1).join('a'); var s_ = wordwrap.hard(20)(s); var lines = s_.split('\n'); assert.equal(lines.length, 3); assert.ok(lines[0].length === 20); assert.ok(lines[1].length === 20); assert.ok(lines[2].length === 15); assert.equal(s, s_.replace(/\n/g, '')); }; ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootcordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/.npmignorecordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/node_modules/wordwrap/.npmigno0000664000000000000000000000001512301417627030417 0ustar node_modules cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/index.js0000664000000000000000000002244112301417627024101 0ustar var path = require('path'); var minimist = require('minimist'); var wordwrap = require('wordwrap'); /* Hack an instance of Argv with process.argv into Argv so people can do require('optimist')(['--beeble=1','-z','zizzle']).argv to parse a list of args and require('optimist').argv to get a parsed version of process.argv. */ var inst = Argv(process.argv.slice(2)); Object.keys(inst).forEach(function (key) { Argv[key] = typeof inst[key] == 'function' ? inst[key].bind(inst) : inst[key]; }); var exports = module.exports = Argv; function Argv (processArgs, cwd) { var self = {}; if (!cwd) cwd = process.cwd(); self.$0 = process.argv .slice(0,2) .map(function (x) { var b = rebase(cwd, x); return x.match(/^\//) && b.length < x.length ? b : x }) .join(' ') ; if (process.env._ != undefined && process.argv[1] == process.env._) { self.$0 = process.env._.replace( path.dirname(process.execPath) + '/', '' ); } var options = { boolean: [], string: [], alias: {}, default: [] }; self.boolean = function (bools) { options.boolean.push.apply(options.boolean, [].concat(bools)); return self; }; self.string = function (strings) { options.string.push.apply(options.string, [].concat(strings)); return self; }; self.default = function (key, value) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.default(k, key[k]); }); } else { options.default[key] = value; } return self; }; self.alias = function (x, y) { if (typeof x === 'object') { Object.keys(x).forEach(function (key) { self.alias(key, x[key]); }); } else { options.alias[x] = (options.alias[x] || []).concat(y); } return self; }; var demanded = {}; self.demand = function (keys) { if (typeof keys == 'number') { if (!demanded._) demanded._ = 0; demanded._ += keys; } else if (Array.isArray(keys)) { keys.forEach(function (key) { self.demand(key); }); } else { demanded[keys] = true; } return self; }; var usage; self.usage = function (msg, opts) { if (!opts && typeof msg === 'object') { opts = msg; msg = null; } usage = msg; if (opts) self.options(opts); return self; }; function fail (msg) { self.showHelp(); if (msg) console.error(msg); process.exit(1); } var checks = []; self.check = function (f) { checks.push(f); return self; }; var descriptions = {}; self.describe = function (key, desc) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.describe(k, key[k]); }); } else { descriptions[key] = desc; } return self; }; self.parse = function (args) { return parseArgs(args); }; self.option = self.options = function (key, opt) { if (typeof key === 'object') { Object.keys(key).forEach(function (k) { self.options(k, key[k]); }); } else { if (opt.alias) self.alias(key, opt.alias); if (opt.demand) self.demand(key); if (typeof opt.default !== 'undefined') { self.default(key, opt.default); } if (opt.boolean || opt.type === 'boolean') { self.boolean(key); } if (opt.string || opt.type === 'string') { self.string(key); } var desc = opt.describe || opt.description || opt.desc; if (desc) { self.describe(key, desc); } } return self; }; var wrap = null; self.wrap = function (cols) { wrap = cols; return self; }; self.showHelp = function (fn) { if (!fn) fn = console.error; fn(self.help()); }; self.help = function () { var keys = Object.keys( Object.keys(descriptions) .concat(Object.keys(demanded)) .concat(Object.keys(options.default)) .reduce(function (acc, key) { if (key !== '_') acc[key] = true; return acc; }, {}) ); var help = keys.length ? [ 'Options:' ] : []; if (usage) { help.unshift(usage.replace(/\$0/g, self.$0), ''); } var switches = keys.reduce(function (acc, key) { acc[key] = [ key ].concat(options.alias[key] || []) .map(function (sw) { return (sw.length > 1 ? '--' : '-') + sw }) .join(', ') ; return acc; }, {}); var switchlen = longest(Object.keys(switches).map(function (s) { return switches[s] || ''; })); var desclen = longest(Object.keys(descriptions).map(function (d) { return descriptions[d] || ''; })); keys.forEach(function (key) { var kswitch = switches[key]; var desc = descriptions[key] || ''; if (wrap) { desc = wordwrap(switchlen + 4, wrap)(desc) .slice(switchlen + 4) ; } var spadding = new Array( Math.max(switchlen - kswitch.length + 3, 0) ).join(' '); var dpadding = new Array( Math.max(desclen - desc.length + 1, 0) ).join(' '); var type = null; if (options.boolean[key]) type = '[boolean]'; if (options.string[key]) type = '[string]'; if (!wrap && dpadding.length > 0) { desc += dpadding; } var prelude = ' ' + kswitch + spadding; var extra = [ type, demanded[key] ? '[required]' : null , options.default[key] !== undefined ? '[default: ' + JSON.stringify(options.default[key]) + ']' : null , ].filter(Boolean).join(' '); var body = [ desc, extra ].filter(Boolean).join(' '); if (wrap) { var dlines = desc.split('\n'); var dlen = dlines.slice(-1)[0].length + (dlines.length === 1 ? prelude.length : 0) body = desc + (dlen + extra.length > wrap - 2 ? '\n' + new Array(wrap - extra.length + 1).join(' ') + extra : new Array(wrap - extra.length - dlen + 1).join(' ') + extra ); } help.push(prelude + body); }); help.push(''); return help.join('\n'); }; Object.defineProperty(self, 'argv', { get : function () { return parseArgs(processArgs) }, enumerable : true, }); function parseArgs (args) { var argv = minimist(args, options); argv.$0 = self.$0; if (demanded._ && argv._.length < demanded._) { fail('Not enough non-option arguments: got ' + argv._.length + ', need at least ' + demanded._ ); } var missing = []; Object.keys(demanded).forEach(function (key) { if (!argv[key]) missing.push(key); }); if (missing.length) { fail('Missing required arguments: ' + missing.join(', ')); } checks.forEach(function (f) { try { if (f(argv) === false) { fail('Argument check failed: ' + f.toString()); } } catch (err) { fail(err) } }); return argv; } function longest (xs) { return Math.max.apply( null, xs.map(function (x) { return x.length }) ); } return self; }; // rebase an absolute path to a relative one with respect to a base directory // exported for tests exports.rebase = rebase; function rebase (base, dir) { var ds = path.normalize(dir).split('/').slice(1); var bs = path.normalize(base).split('/').slice(1); for (var i = 0; ds[i] && ds[i] == bs[i]; i++); ds.splice(0, i); bs.splice(0, i); var p = path.normalize( bs.map(function () { return '..' }).concat(ds).join('/') ).replace(/\/$/,'').replace(/^$/, '.'); return p.match(/^[.\/]/) ? p : './' + p; }; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/.travis.yml0000664000000000000000000000006012301417627024536 0ustar language: node_js node_js: - "0.8" - "0.10" cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/0000775000000000000000000000000012301420116023373 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/parse.js0000664000000000000000000002437612301417627025074 0ustar var optimist = require('../index'); var path = require('path'); var test = require('tap').test; var $0 = 'node ./' + path.relative(process.cwd(), __filename); test('short boolean', function (t) { var parse = optimist.parse([ '-b' ]); t.same(parse, { b : true, _ : [], $0 : $0 }); t.same(typeof parse.b, 'boolean'); t.end(); }); test('long boolean', function (t) { t.same( optimist.parse([ '--bool' ]), { bool : true, _ : [], $0 : $0 } ); t.end(); }); test('bare', function (t) { t.same( optimist.parse([ 'foo', 'bar', 'baz' ]), { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } ); t.end(); }); test('short group', function (t) { t.same( optimist.parse([ '-cats' ]), { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } ); t.end(); }); test('short group next', function (t) { t.same( optimist.parse([ '-cats', 'meow' ]), { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } ); t.end(); }); test('short capture', function (t) { t.same( optimist.parse([ '-h', 'localhost' ]), { h : 'localhost', _ : [], $0 : $0 } ); t.end(); }); test('short captures', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-p', '555' ]), { h : 'localhost', p : 555, _ : [], $0 : $0 } ); t.end(); }); test('long capture sp', function (t) { t.same( optimist.parse([ '--pow', 'xixxle' ]), { pow : 'xixxle', _ : [], $0 : $0 } ); t.end(); }); test('long capture eq', function (t) { t.same( optimist.parse([ '--pow=xixxle' ]), { pow : 'xixxle', _ : [], $0 : $0 } ); t.end() }); test('long captures sp', function (t) { t.same( optimist.parse([ '--host', 'localhost', '--port', '555' ]), { host : 'localhost', port : 555, _ : [], $0 : $0 } ); t.end(); }); test('long captures eq', function (t) { t.same( optimist.parse([ '--host=localhost', '--port=555' ]), { host : 'localhost', port : 555, _ : [], $0 : $0 } ); t.end(); }); test('mixed short bool and capture', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ], $0 : $0, } ); t.end(); }); test('short and long', function (t) { t.same( optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), { f : true, p : 555, h : 'localhost', _ : [ 'script.js' ], $0 : $0, } ); t.end(); }); test('no', function (t) { t.same( optimist.parse([ '--no-moo' ]), { moo : false, _ : [], $0 : $0 } ); t.end(); }); test('multi', function (t) { t.same( optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), { v : ['a','b','c'], _ : [], $0 : $0 } ); t.end(); }); test('comprehensive', function (t) { t.same( optimist.parse([ '--name=meowmers', 'bare', '-cats', 'woo', '-h', 'awesome', '--multi=quux', '--key', 'value', '-b', '--bool', '--no-meep', '--multi=baz', '--', '--not-a-flag', 'eek' ]), { c : true, a : true, t : true, s : 'woo', h : 'awesome', b : true, bool : true, key : 'value', multi : [ 'quux', 'baz' ], meep : false, name : 'meowmers', _ : [ 'bare', '--not-a-flag', 'eek' ], $0 : $0 } ); t.end(); }); test('nums', function (t) { var argv = optimist.parse([ '-x', '1234', '-y', '5.67', '-z', '1e7', '-w', '10f', '--hex', '0xdeadbeef', '789', ]); t.same(argv, { x : 1234, y : 5.67, z : 1e7, w : '10f', hex : 0xdeadbeef, _ : [ 789 ], $0 : $0 }); t.same(typeof argv.x, 'number'); t.same(typeof argv.y, 'number'); t.same(typeof argv.z, 'number'); t.same(typeof argv.w, 'string'); t.same(typeof argv.hex, 'number'); t.same(typeof argv._[0], 'number'); t.end(); }); test('flag boolean', function (t) { var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); t.same(typeof parse.t, 'boolean'); t.end(); }); test('flag boolean value', function (t) { var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) .boolean(['t', 'verbose']).default('verbose', true).argv; t.same(parse, { verbose: false, t: true, _: ['moo'], $0 : $0 }); t.same(typeof parse.verbose, 'boolean'); t.same(typeof parse.t, 'boolean'); t.end(); }); test('flag boolean default false', function (t) { var parse = optimist(['moo']) .boolean(['t', 'verbose']) .default('verbose', false) .default('t', false).argv; t.same(parse, { verbose: false, t: false, _: ['moo'], $0 : $0 }); t.same(typeof parse.verbose, 'boolean'); t.same(typeof parse.t, 'boolean'); t.end(); }); test('boolean groups', function (t) { var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) .boolean(['x','y','z']).argv; t.same(parse, { x : true, y : false, z : true, _ : [ 'one', 'two', 'three' ], $0 : $0 }); t.same(typeof parse.x, 'boolean'); t.same(typeof parse.y, 'boolean'); t.same(typeof parse.z, 'boolean'); t.end(); }); test('newlines in params' , function (t) { var args = optimist.parse([ '-s', "X\nX" ]) t.same(args, { _ : [], s : "X\nX", $0 : $0 }); // reproduce in bash: // VALUE="new // line" // node program.js --s="$VALUE" args = optimist.parse([ "--s=X\nX" ]) t.same(args, { _ : [], s : "X\nX", $0 : $0 }); t.end(); }); test('strings' , function (t) { var s = optimist([ '-s', '0001234' ]).string('s').argv.s; t.same(s, '0001234'); t.same(typeof s, 'string'); var x = optimist([ '-x', '56' ]).string('x').argv.x; t.same(x, '56'); t.same(typeof x, 'string'); t.end(); }); test('stringArgs', function (t) { var s = optimist([ ' ', ' ' ]).string('_').argv._; t.same(s.length, 2); t.same(typeof s[0], 'string'); t.same(s[0], ' '); t.same(typeof s[1], 'string'); t.same(s[1], ' '); t.end(); }); test('slashBreak', function (t) { t.same( optimist.parse([ '-I/foo/bar/baz' ]), { I : '/foo/bar/baz', _ : [], $0 : $0 } ); t.same( optimist.parse([ '-xyz/foo/bar/baz' ]), { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } ); t.end(); }); test('alias', function (t) { var argv = optimist([ '-f', '11', '--zoom', '55' ]) .alias('z', 'zoom') .argv ; t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.f, 11); t.end(); }); test('multiAlias', function (t) { var argv = optimist([ '-f', '11', '--zoom', '55' ]) .alias('z', [ 'zm', 'zoom' ]) .argv ; t.equal(argv.zoom, 55); t.equal(argv.z, argv.zoom); t.equal(argv.z, argv.zm); t.equal(argv.f, 11); t.end(); }); test('boolean default true', function (t) { var argv = optimist.options({ sometrue: { boolean: true, default: true } }).argv; t.equal(argv.sometrue, true); t.end(); }); test('boolean default false', function (t) { var argv = optimist.options({ somefalse: { boolean: true, default: false } }).argv; t.equal(argv.somefalse, false); t.end(); }); test('nested dotted objects', function (t) { var argv = optimist([ '--foo.bar', '3', '--foo.baz', '4', '--foo.quux.quibble', '5', '--foo.quux.o_O', '--beep.boop' ]).argv; t.same(argv.foo, { bar : 3, baz : 4, quux : { quibble : 5, o_O : true }, }); t.same(argv.beep, { boop : true }); t.end(); }); test('boolean and alias with chainable api', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .boolean('herp') .alias('h', 'herp') .argv; var propertyArgv = optimist(regular) .boolean('herp') .alias('h', 'herp') .argv; var expected = { herp: true, h: true, '_': [ 'derp' ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias with options hash', function (t) { var aliased = [ '-h', 'derp' ]; var regular = [ '--herp', 'derp' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .options(opts) .argv; var propertyArgv = optimist(regular).options(opts).argv; var expected = { herp: true, h: true, '_': [ 'derp' ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); test('boolean and alias using explicit true', function (t) { var aliased = [ '-h', 'true' ]; var regular = [ '--herp', 'true' ]; var opts = { herp: { alias: 'h', boolean: true } }; var aliasedArgv = optimist(aliased) .boolean('h') .alias('h', 'herp') .argv; var propertyArgv = optimist(regular) .boolean('h') .alias('h', 'herp') .argv; var expected = { herp: true, h: true, '_': [ ], '$0': $0, }; t.same(aliasedArgv, expected); t.same(propertyArgv, expected); t.end(); }); // regression, see https://github.com/substack/node-optimist/issues/71 test('boolean and --x=true', function(t) { var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; t.same(parsed.boool, true); t.same(parsed.other, 'true'); parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; t.same(parsed.boool, true); t.same(parsed.other, 'false'); t.end(); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/short.js0000664000000000000000000000057412301417627025113 0ustar var optimist = require('../index'); var test = require('tap').test; test('-n123', function (t) { t.plan(1); var parse = optimist.parse([ '-n123' ]); t.equal(parse.n, 123); }); test('-123', function (t) { t.plan(3); var parse = optimist.parse([ '-123', '456' ]); t.equal(parse['1'], true); t.equal(parse['2'], true); t.equal(parse['3'], 456); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/_/0000775000000000000000000000000012301420116023611 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/_/bin.js0000775000000000000000000000014012301417627024732 0ustar #!/usr/bin/env node var argv = require('../../index').argv console.log(JSON.stringify(argv._)); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/_/argv.js0000664000000000000000000000007712301417627025127 0ustar #!/usr/bin/env node console.log(JSON.stringify(process.argv)); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/_.js0000664000000000000000000000332712301417627024171 0ustar var spawn = require('child_process').spawn; var test = require('tap').test; test('dotSlashEmpty', testCmd('./bin.js', [])); test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); test('nodeEmpty', testCmd('node bin.js', [])); test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); test('whichNodeEmpty', function (t) { var which = spawn('which', ['node']); which.stdout.on('data', function (buf) { t.test( testCmd(buf.toString().trim() + ' bin.js', []) ); t.end(); }); which.stderr.on('data', function (err) { assert.error(err); t.end(); }); }); test('whichNodeArgs', function (t) { var which = spawn('which', ['node']); which.stdout.on('data', function (buf) { t.test( testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) ); t.end(); }); which.stderr.on('data', function (err) { t.error(err); t.end(); }); }); function testCmd (cmd, args) { return function (t) { var to = setTimeout(function () { assert.fail('Never got stdout data.') }, 5000); var oldDir = process.cwd(); process.chdir(__dirname + '/_'); var cmds = cmd.split(' '); var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); process.chdir(oldDir); bin.stderr.on('data', function (err) { t.error(err); t.end(); }); bin.stdout.on('data', function (buf) { clearTimeout(to); var _ = JSON.parse(buf.toString()); t.same(_.map(String), args.map(String)); t.end(); }); }; } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/whitespace.js0000664000000000000000000000031712301417627026103 0ustar var optimist = require('../'); var test = require('tap').test; test('whitespace should be whitespace' , function (t) { t.plan(1); var x = optimist.parse([ '-x', '\t' ]).x; t.equal(x, '\t'); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/parse_modified.js0000664000000000000000000000047512301417627026726 0ustar var optimist = require('../'); var test = require('tap').test; test('parse with modifier functions' , function (t) { t.plan(1); var argv = optimist().boolean('b').parse([ '-b', '123' ]); t.deepEqual(fix(argv), { b: true, _: ['123'] }); }); function fix (obj) { delete obj.$0; return obj; } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/dash.js0000664000000000000000000000122212301417627024662 0ustar var optimist = require('../index'); var test = require('tap').test; test('-', function (t) { t.plan(5); t.deepEqual( fix(optimist.parse([ '-n', '-' ])), { n: '-', _: [] } ); t.deepEqual( fix(optimist.parse([ '-' ])), { _: [ '-' ] } ); t.deepEqual( fix(optimist.parse([ '-f-' ])), { f: '-', _: [] } ); t.deepEqual( fix(optimist([ '-b', '-' ]).boolean('b').argv), { b: true, _: [ '-' ] } ); t.deepEqual( fix(optimist([ '-s', '-' ]).string('s').argv), { s: '-', _: [] } ); }); function fix (obj) { delete obj.$0; return obj; } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/optimist/test/usage.js0000664000000000000000000001520512301417627025055 0ustar var Hash = require('hashish'); var optimist = require('../index'); var test = require('tap').test; test('usageFail', function (t) { var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .demand(['x','y']) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage -x NUM -y NUM', 'Options:', ' -x [required]', ' -y [required]', 'Missing required arguments: y', ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('usagePass', function (t) { var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .demand(['x','y']) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkPass', function (t) { var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(function (argv) { if (!('x' in argv)) throw 'You forgot about -x'; if (!('y' in argv)) throw 'You forgot about -y'; }) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkFail', function (t) { var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(function (argv) { if (!('x' in argv)) throw 'You forgot about -x'; if (!('y' in argv)) throw 'You forgot about -y'; }) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage -x NUM -y NUM', 'You forgot about -y' ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('checkCondPass', function (t) { function checker (argv) { return 'x' in argv && 'y' in argv; } var r = checkUsage(function () { return optimist('-x 10 -y 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(checker) .argv; }); t.same(r, { result : { x : 10, y : 20, _ : [], $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('checkCondFail', function (t) { function checker (argv) { return 'x' in argv && 'y' in argv; } var r = checkUsage(function () { return optimist('-x 10 -z 20'.split(' ')) .usage('Usage: $0 -x NUM -y NUM') .check(checker) .argv; }); t.same( r.result, { x : 10, z : 20, _ : [], $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/).join('\n'), 'Usage: ./usage -x NUM -y NUM\n' + 'Argument check failed: ' + checker.toString() ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('countPass', function (t) { var r = checkUsage(function () { return optimist('1 2 3 --moo'.split(' ')) .usage('Usage: $0 [x] [y] [z] {OPTIONS}') .demand(3) .argv; }); t.same(r, { result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, errors : [], logs : [], exit : false, }); t.end(); }); test('countFail', function (t) { var r = checkUsage(function () { return optimist('1 2 --moo'.split(' ')) .usage('Usage: $0 [x] [y] [z] {OPTIONS}') .demand(3) .argv; }); t.same( r.result, { _ : [ '1', '2' ], moo : true, $0 : './usage' } ); t.same( r.errors.join('\n').split(/\n+/), [ 'Usage: ./usage [x] [y] [z] {OPTIONS}', 'Not enough non-option arguments: got 2, need at least 3', ] ); t.same(r.logs, []); t.ok(r.exit); t.end(); }); test('defaultSingles', function (t) { var r = checkUsage(function () { return optimist('--foo 50 --baz 70 --powsy'.split(' ')) .default('foo', 5) .default('bar', 6) .default('baz', 7) .argv ; }); t.same(r.result, { foo : '50', bar : 6, baz : '70', powsy : true, _ : [], $0 : './usage', }); t.end(); }); test('defaultAliases', function (t) { var r = checkUsage(function () { return optimist('') .alias('f', 'foo') .default('f', 5) .argv ; }); t.same(r.result, { f : '5', foo : '5', _ : [], $0 : './usage', }); t.end(); }); test('defaultHash', function (t) { var r = checkUsage(function () { return optimist('--foo 50 --baz 70'.split(' ')) .default({ foo : 10, bar : 20, quux : 30 }) .argv ; }); t.same(r.result, { _ : [], $0 : './usage', foo : 50, baz : 70, bar : 20, quux : 30, }); t.end(); }); test('rebase', function (t) { t.equal( optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), './foo/bar/baz' ); t.equal( optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), '../../..' ); t.equal( optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), '../pow/zoom.txt' ); t.end(); }); function checkUsage (f) { var exit = false; process._exit = process.exit; process._env = process.env; process._argv = process.argv; process.exit = function (t) { exit = true }; process.env = Hash.merge(process.env, { _ : 'node' }); process.argv = [ './usage' ]; var errors = []; var logs = []; console._error = console.error; console.error = function (msg) { errors.push(msg) }; console._log = console.log; console.log = function (msg) { logs.push(msg) }; var result = f(); process.exit = process._exit; process.env = process._env; process.argv = process._argv; console.error = console._error; console.log = console._log; return { errors : errors, logs : logs, exit : exit, result : result, }; }; cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/0000775000000000000000000000000012301420116022045 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/package.json0000664000000000000000000000412112301417627024346 0ustar { "name": "colors", "description": "get colors in your node.js console like what", "version": "0.6.2", "author": { "name": "Marak Squires" }, "homepage": "https://github.com/Marak/colors.js", "bugs": { "url": "https://github.com/Marak/colors.js/issues" }, "keywords": [ "ansi", "terminal", "colors" ], "repository": { "type": "git", "url": "http://github.com/Marak/colors.js.git" }, "engines": { "node": ">=0.1.90" }, "main": "colors", "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n\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", "readmeFilename": "ReadMe.md", "_id": "colors@0.6.2", "dist": { "shasum": "feb92acb58bc6d82083ec15e6c8718877e2dd746" }, "_from": "colors@0.6.2", "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/themes/0000775000000000000000000000000012301420116023332 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/themes/winston-dark.js0000664000000000000000000000030612301417627026324 0ustar module['exports'] = { silly: 'rainbow', input: 'black', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' };cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/themes/winston-light.js0000664000000000000000000000030512301417627026511 0ustar module['exports'] = { silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' };cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/ReadMe.md0000664000000000000000000000242312301417627023542 0ustar # colors.js - get color and style in your node.js console ( and browser ) like what ## Installation npm install colors ## colors and styles! - bold - italic - underline - inverse - yellow - cyan - white - magenta - green - red - grey - blue - rainbow - zebra - random ## Usage ``` js var colors = require('./colors'); console.log('hello'.green); // outputs green text console.log('i like cake and pies'.underline.red) // outputs red underlined text console.log('inverse the color'.inverse); // inverses the color console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces) ``` # Creating Custom themes ```js var colors = require('colors'); colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' }); // outputs red text console.log("this is an error".error); // outputs yellow text console.log("this is a warning".warn); ``` ### Contributors Marak (Marak Squires) Alexis Sellier (cloudhead) mmalecki (Maciej Małecki) nicoreed (Nico Reed) morganrallen (Morgan Allen) JustinCampbell (Justin Campbell) ded (Dustin Diaz) #### , Marak Squires , Justin Campbell, Dustin Diaz (@ded) cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/example.js0000664000000000000000000000456712301417627024067 0ustar var colors = require('./colors'); //colors.mode = "browser"; var test = colors.red("hopefully colorless output"); console.log('Rainbows are fun!'.rainbow); console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported //console.log('zalgo time!'.zalgo); console.log(test.stripColors); console.log("a".grey + " b".black); console.log("Zebras are so fun!".zebra); console.log('background color attack!'.black.whiteBG) // // Remark: .strikethrough may not work with Mac OS Terminal App // console.log("This is " + "not".strikethrough + " fun."); console.log(colors.rainbow('Rainbows are fun!')); console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported //console.log(colors.zalgo('zalgo time!')); console.log(colors.stripColors(test)); console.log(colors.grey("a") + colors.black(" b")); colors.addSequencer("america", function(letter, i, exploded) { if(letter === " ") return letter; switch(i%3) { case 0: return letter.red; case 1: return letter.white; case 2: return letter.blue; } }); colors.addSequencer("random", (function() { var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta']; return function(letter, i, exploded) { return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]]; }; })()); console.log("AMERICA! F--K YEAH!".america); console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random); // // Custom themes // // Load theme with JSON literal colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' }); // outputs red text console.log("this is an error".error); // outputs yellow text console.log("this is a warning".warn); // outputs grey text console.log("this is an input".input); // Load a theme from file colors.setTheme('./themes/winston-dark.js'); console.log("this is an input".input); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/colors.js0000664000000000000000000002462612301417627023733 0ustar /* colors.js Copyright (c) 2010 Marak Squires Alexis Sellier (cloudhead) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ var isHeadless = false; if (typeof module !== 'undefined') { isHeadless = true; } if (!isHeadless) { var exports = {}; var module = {}; var colors = exports; exports.mode = "browser"; } else { exports.mode = "console"; } // // Prototypes the string object to have additional method calls that add terminal colors // var addProperty = function (color, func) { exports[color] = function (str) { return func.apply(str); }; String.prototype.__defineGetter__(color, func); }; function stylize(str, style) { var styles; if (exports.mode === 'console') { styles = { //styles 'bold' : ['\x1B[1m', '\x1B[22m'], 'italic' : ['\x1B[3m', '\x1B[23m'], 'underline' : ['\x1B[4m', '\x1B[24m'], 'inverse' : ['\x1B[7m', '\x1B[27m'], 'strikethrough' : ['\x1B[9m', '\x1B[29m'], //text colors //grayscale 'white' : ['\x1B[37m', '\x1B[39m'], 'grey' : ['\x1B[90m', '\x1B[39m'], 'black' : ['\x1B[30m', '\x1B[39m'], //colors 'blue' : ['\x1B[34m', '\x1B[39m'], 'cyan' : ['\x1B[36m', '\x1B[39m'], 'green' : ['\x1B[32m', '\x1B[39m'], 'magenta' : ['\x1B[35m', '\x1B[39m'], 'red' : ['\x1B[31m', '\x1B[39m'], 'yellow' : ['\x1B[33m', '\x1B[39m'], //background colors //grayscale 'whiteBG' : ['\x1B[47m', '\x1B[49m'], 'greyBG' : ['\x1B[49;5;8m', '\x1B[49m'], 'blackBG' : ['\x1B[40m', '\x1B[49m'], //colors 'blueBG' : ['\x1B[44m', '\x1B[49m'], 'cyanBG' : ['\x1B[46m', '\x1B[49m'], 'greenBG' : ['\x1B[42m', '\x1B[49m'], 'magentaBG' : ['\x1B[45m', '\x1B[49m'], 'redBG' : ['\x1B[41m', '\x1B[49m'], 'yellowBG' : ['\x1B[43m', '\x1B[49m'] }; } else if (exports.mode === 'browser') { styles = { //styles 'bold' : ['', ''], 'italic' : ['', ''], 'underline' : ['', ''], 'inverse' : ['', ''], 'strikethrough' : ['', ''], //text colors //grayscale 'white' : ['', ''], 'grey' : ['', ''], 'black' : ['', ''], //colors 'blue' : ['', ''], 'cyan' : ['', ''], 'green' : ['', ''], 'magenta' : ['', ''], 'red' : ['', ''], 'yellow' : ['', ''], //background colors //grayscale 'whiteBG' : ['', ''], 'greyBG' : ['', ''], 'blackBG' : ['', ''], //colors 'blueBG' : ['', ''], 'cyanBG' : ['', ''], 'greenBG' : ['', ''], 'magentaBG' : ['', ''], 'redBG' : ['', ''], 'yellowBG' : ['', ''] }; } else if (exports.mode === 'none') { return str + ''; } else { console.log('unsupported mode, try "browser", "console" or "none"'); } return styles[style][0] + str + styles[style][1]; } function applyTheme(theme) { // // Remark: This is a list of methods that exist // on String that you should not overwrite. // var stringPrototypeBlacklist = [ '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt', 'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight' ]; Object.keys(theme).forEach(function (prop) { if (stringPrototypeBlacklist.indexOf(prop) !== -1) { console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name'); } else { if (typeof(theme[prop]) === 'string') { addProperty(prop, function () { return exports[theme[prop]](this); }); } else { addProperty(prop, function () { var ret = this; for (var t = 0; t < theme[prop].length; t++) { ret = exports[theme[prop][t]](ret); } return ret; }); } } }); } // // Iterate through all default styles and colors // var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG']; x.forEach(function (style) { // __defineGetter__ at the least works in more browsers // http://robertnyman.com/javascript/javascript-getters-setters.html // Object.defineProperty only works in Chrome addProperty(style, function () { return stylize(this, style); }); }); function sequencer(map) { return function () { if (!isHeadless) { return this.replace(/( )/, '$1'); } var exploded = this.split(""), i = 0; exploded = exploded.map(map); return exploded.join(""); }; } var rainbowMap = (function () { var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV return function (letter, i, exploded) { if (letter === " ") { return letter; } else { return stylize(letter, rainbowColors[i++ % rainbowColors.length]); } }; })(); exports.themes = {}; exports.addSequencer = function (name, map) { addProperty(name, sequencer(map)); }; exports.addSequencer('rainbow', rainbowMap); exports.addSequencer('zebra', function (letter, i, exploded) { return i % 2 === 0 ? letter : letter.inverse; }); exports.setTheme = function (theme) { if (typeof theme === 'string') { try { exports.themes[theme] = require(theme); applyTheme(exports.themes[theme]); return exports.themes[theme]; } catch (err) { console.log(err); return err; } } else { applyTheme(theme); } }; addProperty('stripColors', function () { return ("" + this).replace(/\x1B\[\d+m/g, ''); }); // please no function zalgo(text, options) { var soul = { "up" : [ '̍', '̎', '̄', '̅', '̿', '̑', '̆', '̐', '͒', '͗', '͑', '̇', '̈', '̊', '͂', '̓', '̈', '͊', '͋', '͌', '̃', '̂', '̌', '͐', '̀', '́', '̋', '̏', '̒', '̓', '̔', '̽', '̉', 'ͣ', 'ͤ', 'ͥ', 'ͦ', 'ͧ', 'ͨ', 'ͩ', 'ͪ', 'ͫ', 'ͬ', 'ͭ', 'ͮ', 'ͯ', '̾', '͛', '͆', '̚' ], "down" : [ '̖', '̗', '̘', '̙', '̜', '̝', '̞', '̟', '̠', '̤', '̥', '̦', '̩', '̪', '̫', '̬', '̭', '̮', '̯', '̰', '̱', '̲', '̳', '̹', '̺', '̻', '̼', 'ͅ', '͇', '͈', '͉', '͍', '͎', '͓', '͔', '͕', '͖', '͙', '͚', '̣' ], "mid" : [ '̕', '̛', '̀', '́', '͘', '̡', '̢', '̧', '̨', '̴', '̵', '̶', '͜', '͝', '͞', '͟', '͠', '͢', '̸', '̷', '͡', ' ҉' ] }, all = [].concat(soul.up, soul.down, soul.mid), zalgo = {}; function randomNumber(range) { var r = Math.floor(Math.random() * range); return r; } function is_char(character) { var bool = false; all.filter(function (i) { bool = (i === character); }); return bool; } function heComes(text, options) { var result = '', counts, l; options = options || {}; options["up"] = options["up"] || true; options["mid"] = options["mid"] || true; options["down"] = options["down"] || true; options["size"] = options["size"] || "maxi"; text = text.split(''); for (l in text) { if (is_char(l)) { continue; } result = result + text[l]; counts = {"up" : 0, "down" : 0, "mid" : 0}; switch (options.size) { case 'mini': counts.up = randomNumber(8); counts.min = randomNumber(2); counts.down = randomNumber(8); break; case 'maxi': counts.up = randomNumber(16) + 3; counts.min = randomNumber(4) + 1; counts.down = randomNumber(64) + 3; break; default: counts.up = randomNumber(8) + 1; counts.mid = randomNumber(6) / 2; counts.down = randomNumber(8) + 1; break; } var arr = ["up", "mid", "down"]; for (var d in arr) { var index = arr[d]; for (var i = 0 ; i <= counts[index]; i++) { if (options[index]) { result = result + soul[index][randomNumber(soul[index].length)]; } } } } return result; } return heComes(text); } // don't summon zalgo addProperty('zalgo', function () { return zalgo(this); }); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/test.js0000664000000000000000000000413212301417627023377 0ustar var assert = require('assert'), colors = require('./colors'); var s = 'string'; function a(s, code) { return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m'; } function aE(s, color, code) { assert.equal(s[color], a(s, code)); assert.equal(colors[color](s), a(s, code)); assert.equal(s[color], colors[color](s)); assert.equal(s[color].stripColors, s); assert.equal(s[color].stripColors, colors.stripColors(s)); } function h(s, color) { return '' + s + ''; } var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow']; var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']); colors.mode = 'console'; assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m'); assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m'); assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m'); assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m'); assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m'); assert.ok(s.rainbow); aE(s, 'white', 37); aE(s, 'grey', 90); aE(s, 'black', 30); aE(s, 'blue', 34); aE(s, 'cyan', 36); aE(s, 'green', 32); aE(s, 'magenta', 35); aE(s, 'red', 31); aE(s, 'yellow', 33); assert.equal(s, 'string'); colors.setTheme({error:'red'}); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); colors.mode = 'browser'; assert.equal(s.bold, '' + s + ''); assert.equal(s.italic, '' + s + ''); assert.equal(s.underline, '' + s + ''); assert.equal(s.strikethrough, '' + s + ''); assert.equal(s.inverse, '' + s + ''); assert.ok(s.rainbow); stylesColors.forEach(function (color) { assert.equal(s[color], h(s, color)); assert.equal(colors[color](s), h(s, color)); }); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); colors.mode = 'none'; stylesAll.forEach(function (style) { assert.equal(s[style], s); assert.equal(colors[style](s), s); }); assert.equal(typeof("astring".red),'string'); assert.equal(typeof("astring".error),'string'); cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/example.html0000664000000000000000000000476712301417627024421 0ustar Colors Example cordova-ubuntu-3.4-3.4~pre3.r19build1/build/bin/node_modules/colors/MIT-LICENSE.txt0000664000000000000000000000207512301417627024340 0ustar Copyright (c) 2010 Marak Squires Alexis Sellier (cloudhead) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.cordova-ubuntu-3.4-3.4~pre3.r19build1/build/Cordovaqt/0000775000000000000000000000000012301420116017261 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/build/Cordovaqt/qmldir0000664000000000000000000000020112301417627020502 0ustar module CordovaUbuntu plugin cordovaubuntuplugin CordovaView 3.0 CordovaView.qml CordovaViewInternal 3.0 CordovaViewInternal.qml cordova-ubuntu-3.4-3.4~pre3.r19build1/build/Cordovaqt/CordovaViewInternal.qml0000664000000000000000000001105412301417627023737 0ustar /* * * Copyright 2013 Canonical Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ import QtQuick 2.0 import QtWebKit 3.0 import QtWebKit.experimental 1.0 import "cordova_wrapper.js" as CordovaWrapper import Ubuntu.Components 0.1 import Ubuntu.Components.Popups 0.1 Item { id: root anchors.fill: parent state: "main" signal completed property string splashscreenPath property bool disallowOverscroll property var mainWebview function exec(plugin, func, args) { CordovaWrapper.execMethod(plugin, func, args); } function plugin(plugin) { return CordovaWrapper.pluginObjects[plugin]; } Rectangle { id: webViewContainer anchors.fill: parent WebView { id: webView anchors.fill: parent objectName: "webView" boundsBehavior: disallowOverscroll ? Flickable.StopAtBounds : Flickable.DragAndOvershootBounds property string scheme: "file" experimental.preferences.navigatorQtObjectEnabled: true experimental.preferences.localStorageEnabled: true experimental.preferences.offlineWebApplicationCacheEnabled: true experimental.preferences.universalAccessFromFileURLsAllowed: true experimental.preferences.webGLEnabled: true experimental.databaseQuotaDialog: Item { Timer { interval: 1 running: true onTriggered: { model.accept(model.expectedUsage) } } } // port in QTWEBKIT_INSPECTOR_SERVER enviroment variable experimental.preferences.developerExtrasEnabled: true function evalInPageUnsafe(expr) { experimental.evaluateJavaScript('(function() { ' + expr + ' })();'); } experimental.onMessageReceived: { if (message.data.length > 1000) { console.debug("WebView received Message: " + message.data.substr(0, 900) + "..."); } else { console.debug("WebView received Message: " + message.data); } CordovaWrapper.messageHandler(message) } Component.onCompleted: { root.mainWebview = webView; webView.url = cordova.mainUrl } onTitleChanged: { cordova.setTitle(webView.title) } onLoadingChanged: { if (loadRequest.status) { root.completed() cordova.loadFinished(true) } //TODO: check here for errors } Connections { target: cordova onJavaScriptExecNeeded: { webView.experimental.evaluateJavaScript(js); } onQmlExecNeeded: { console.log("2345"); eval(src); } onPluginWantsToBeAdded: { CordovaWrapper.addPlugin(pluginName, pluginObject) } } } } Image { id: splashscreen anchors.fill: parent source: splashscreenPath visible: false smooth: true fillMode: Image.PreserveAspectFit } states: [ State { name: "main" PropertyChanges { target: webViewContainer visible: true } PropertyChanges { target: splashscreen visible: false } }, State { name: "splashscreen" PropertyChanges { target: webViewContainer visible: false } PropertyChanges { target: splashscreen visible: true } } ] transitions: Transition { RotationAnimation { duration: 500; direction: RotationAnimation.Shortest } } } cordova-ubuntu-3.4-3.4~pre3.r19build1/build/Cordovaqt/cordova_wrapper.js0000664000000000000000000000316512301417627023036 0ustar /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ var pluginObjects = {} function addPlugin(pluginName, pluginObject) { pluginObjects[pluginName] = pluginObject } function messageHandler(message) { var received = JSON.parse(message.data); if (typeof received === 'undefined') return false; if (typeof received.messageType === 'undefined') return false; if (received.messageType === "callPluginFunction") { if (typeof received.plugin === 'undefined' || typeof received.func == 'undefined') return false; execMethod(received.plugin, received.func, received.params); } return true; } function execMethod(pluginName, functionName, params) { if (typeof pluginObjects[pluginName][functionName] != "function") return false; pluginObjects[pluginName][functionName].apply(this, params); return true; } cordova-ubuntu-3.4-3.4~pre3.r19build1/armhf/0000775000000000000000000000000012301420116015315 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/manifest.json0000664000000000000000000000051412301417627016736 0ustar {"name":"io.cordova.hellocordova","version":"0.0.1","title":"HelloCordova","hooks":{"cordova":{"desktop":"cordova.desktop","apparmor":"apparmor.json"}},"framework":"ubuntu-sdk-13.10","maintainer":"Apache Cordova Team","architecture":"i386","description":"A sample Apache Cordova application that responds to the deviceready event."}cordova-ubuntu-3.4-3.4~pre3.r19build1/apparmor.json0000664000000000000000000000021412301417627016746 0ustar {"policy_groups":["networking","audio","camera","sensors","location","microphone","video","audio","camera","microphone"],"policy_version":1}cordova-ubuntu-3.4-3.4~pre3.r19build1/cordova.desktop0000664000000000000000000000017612301417627017271 0ustar [Desktop Entry] Name=HelloCordova Exec=./cordova-ubuntu www/ Icon=qmlscene Terminal=false Type=Application X-Ubuntu-Touch=truecordova-ubuntu-3.4-3.4~pre3.r19build1/debian/0000775000000000000000000000000012310564245015456 5ustar cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/README.Debian0000664000000000000000000000274412301417627017527 0ustar The files in /usr/share/ubuntu-html5-platform-3.4/ are not meant to be used locally, but are to be shipped in the resulting click packages. This means that each click package which uses cordova-ubuntu-3.4 will ship its own runtime. Source code origin and maintenance of this package The sources for this packages are pulled with the cordova-cli tool. cordova-cli is the command line tool used to create a project and add platform dependent code to run the HTML5 app on iOS or Ubuntu for example. The cordova-ubuntu source code that is pulled by this tool comes from the Apache upstream repository. This source code is developed by the Ubuntu project and by Canonical employees in particular. The upstream reference is: git://git.apache.org/cordova-ubuntu.git The launchpad/bzr ref is: https://code.launchpad.net/~cordova-ubuntu/cordova-ubuntu To prepare this package, we use: $ cordova create [ this installs a hierarchy of directories and files, along with a sample HelloWorld app ] $ cordova platform add ubuntu [ this pulls the actual cordova-ubuntu source code from the upstream Apache repository ] $ cordova add plugin ... [ this pulls the core plugins from the Apache repo ] The resulting source code tree (ie the sample app + the ubuntu specific platform code) have been reshuffled to surface only the ubuntu code into the directory called ./build From there we're building the runtime, as a developper would to prepare his application to run on a device. cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/copyright0000664000000000000000000001045012301417627017412 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: cordova Source: http://cordova.apache.org/ Files: debian/* Copyright: 2013 Canonical Ltd. License: GPL-3 On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". Files: lib/ubuntu.js lib/msg.js Copyright: 2013 Canonical Ltd. License: Apache-2.0 Files: node_modules/elementtree/* Copyright: 2011 Rackspace License: Apache-2.0 Files: cordova/node_modules/elementtree/node_modules/sax/* Copyright: 2009, 2010, 2011 Isaac Z. Schlueter. License: MIT/X11 (BSD LIKE) Files: cordova/node_modules/shelljs/* Copyright: 2012 Artur Adib License: BSD (2 clause) Files: cordova/node_modules/optimist/* cordova/node_modules/optimist/node_modules/minimist/* Copyright: 2010 James Halliday License: MIT/X11 (BSD LIKE) Files: cordova/node_modules/shelljs/src/cp.js cordova/node_modules/shelljs/src/rm.js Copyright: 2010 Ryan McGrath 2012 Artur Adib License: MIT/X11 (BSD LIKE) Files: cordova/node_modules/colors/* Copyright: 2010 Marak Squires 2010 Alexis Sellier (cloudhead) License: MIT/X11 (BSD like) Files: * Copyright: 2011 Wolfgang Koller License: Apache-2.0 License: MIT/X11 (BSD like) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems, the complete text of the Apache 2.0 License can be found in '/usr/share/common-licenses/Apache-2.0'. License: BSD (2 clause) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice(s), this list of conditions and the following disclaimer as the first lines of this file unmodified other than the possible addition of one or more copyright notices. 2. Redistributions in binary form must reproduce the above copyright notice(s), this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/changelog0000664000000000000000000000333712310564244017335 0ustar cordova-ubuntu-3.4 (3.4~pre3.r19build1) trusty; urgency=medium * No change rebuild against libqt5core5a. -- Dimitri John Ledkov Fri, 14 Mar 2014 11:31:48 +0000 cordova-ubuntu-3.4 (3.4~pre3.r19) trusty; urgency=low * Releasing 3.4~pre3.r19 -- David Barth Thu, 20 Feb 2014 11:48:39 +0100 cordova-ubuntu-3.4 (3.4~pre3.r17ubuntu2) trusty; urgency=low * Test build with additional plugins -- David Barth Wed, 19 Feb 2014 17:48:58 +0100 cordova-ubuntu-3.4 (3.4~pre3.r17) trusty; urgency=medium [ Alexandre Abreu ] * Rename package and paths. (LP: #1281012) -- Daniel Holbach Tue, 18 Feb 2014 10:51:24 +0100 cordova-ubuntu-3.4 (3.4~pre3.r16) trusty; urgency=medium * Upload r16 of lp:cordova-ubuntu/3.4. -- Daniel Holbach Fri, 14 Feb 2014 10:21:43 +0100 cordova-ubuntu-3.4 (3.4~pre3ubuntu1) UNRELEASED; urgency=low * Add the full set of platform plugins -- David Barth Fri, 14 Feb 2014 16:17:05 +0100 cordova-ubuntu-3.4 (3.4~pre3) trusty; urgency=low * Trusty build -- David Barth Wed, 12 Feb 2014 11:22:25 +0100 cordova-ubuntu-3.4 (3.4~pre3~saucy0) saucy; urgency=low * Source package changed to avoid a clash with cordova-ubuntu(-2.8) -- David Barth Wed, 12 Feb 2014 09:55:07 +0000 cordova-ubuntu (3.4~pre1~saucy0) saucy; urgency=low * Saucy upload -- David Barth Fri, 07 Feb 2014 10:13:49 -0500 cordova-ubuntu (3.4~pre1) trusty; urgency=low * Initial release. (LP: #1279814) -- David Barth Wed, 05 Feb 2014 18:50:34 -0500 cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/control0000664000000000000000000000250412301417627017063 0ustar Source: cordova-ubuntu-3.4 Section: gnome Priority: optional Maintainer: Ubuntu Webapps Team Build-Depends: cmake, debhelper (>= 9), libx11-dev, libicu-dev, pkg-config, qtbase5-dev, qtchooser, qtdeclarative5-dev, qtfeedback5-dev, qtlocation5-dev, qtmultimedia5-dev, qtpim5-dev, qtsensors5-dev, qtsystems5-dev, Standards-Version: 3.9.5 Homepage: https://launchpad.net/cordova-ubuntu # if you don't have have commit access to this branch but would like to upload # directly to Ubuntu, don't worry: your changes will be merged back into the # upstream branch Vcs-Bzr: lp:cordova-ubuntu/3.4 Package: ubuntu-html5-platform-3.4-dev Section: libdevel Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends}, Description: Cordova Framework for building mobile web apps - development files Cordova is a free and open source framework that allows you to create mobile apps using standardized web APIs for the platforms you care about. . This package contains library files that are needed to build applications. The libraries are not meant to be installed on the system, but should be embedded in a click package. cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/rules0000775000000000000000000000202112301417627016532 0ustar #!/usr/bin/make -f # -*- makefile -*- # to update the source tree: # create a temporary directory to construct the runtime with the cordova CLI tool # cordova create runtime # cd runtime # cordova platform add ubuntu # cordova plugin add org.apache.cordova.camera # cordova plugin add # ... # cordova prepare # then copy back files from the platforms/ubuntu directory DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) INSTALL_PREFIX="/usr/share/ubuntu-html5-platform-3.4/${DEB_HOST_MULTIARCH}" PACKAGE_NAME=ubuntu-html5-platform-3.4-dev override_dh_auto_configure: cd build; cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo override_dh_install: dh_install cp -R www debian/${PACKAGE_NAME}/${INSTALL_PREFIX}/; \ cp -R qml debian/${PACKAGE_NAME}/${INSTALL_PREFIX}/; \ rm -f debian/${PACKAGE_NAME}/${INSTALL_PREFIX}/cordova-ubuntu override_dh_strip: %: dh $@ --sourcedirectory=build --fail-missing cordova-ubuntu-3.4-3.4~pre3.r19build1/debian/compat0000664000000000000000000000000212301417627016655 0ustar 9