From 45354982e41bfc1c1a77525e00020993a93d4c71 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 10:03:12 -0800 Subject: [PATCH 01/21] Basic HTML and CSS for tic tac toe board --- index.css | 30 +++++++++++++++++++++++++++++- index.html | 23 ++++++++++++++++++++++- tasks.txt | 0 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tasks.txt diff --git a/index.css b/index.css index ae8b9a0..8ba622c 100644 --- a/index.css +++ b/index.css @@ -1,3 +1,31 @@ html { - + +} + +h1 { + text-align: center; +} + +#tictactoe { + width: 80%; + margin: auto; +} + +.box { + width: 200px; + height: 200px; + display:inline-block; + background-color: blue; +} + +#row1 { + width: 100%; +} + +#row2 { + width: 100%; +} + +.c1 { + margin-left: 200px; } diff --git a/index.html b/index.html index de8d985..59115ca 100644 --- a/index.html +++ b/index.html @@ -17,5 +17,26 @@

Tic Tac Toe

console.log('create and begin the game here!'); }) - +
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+ + diff --git a/tasks.txt b/tasks.txt new file mode 100644 index 0000000..e69de29 From 961b75243165cea5b6aa2dafa4bd77ad8ea22774 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 10:46:50 -0800 Subject: [PATCH 02/21] Clicking the boxes changes their color --- index.html | 21 ++++++++++++--------- tasks.txt | 5 +++++ tic-tac-toe.js | 22 +++++++++++++++++++--- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/index.html b/index.html index 59115ca..fca3de1 100644 --- a/index.html +++ b/index.html @@ -14,27 +14,30 @@

Tic Tac Toe

-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/tasks.txt b/tasks.txt index e69de29..7f3639c 100644 --- a/tasks.txt +++ b/tasks.txt @@ -0,0 +1,5 @@ +- Boxes are clickable +- Clicking in a box places an X +- Clicking in a box switches between X and O +- Can reset the board +- diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 33c03a0..ada8c51 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -1,7 +1,23 @@ function TicTacToe() { + var board_2 = ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; + board_2.forEach(function(box) { + $("." + box).click(function() { + $("." + box).css('background-color', 'red'); + }); + }); -} + } TicTacToe.prototype = { - -} + board: [["", "", ""], ["", "", ""], ["", "", ""]], + choices: ["", "X", "O"], + //board_2: ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"] +}; + +tictactoe = new TicTacToe(); + + + + + +//:nth-child(n) $("p:nth-child(2)") From 66aee0f0d7511ae20a8c27d04ee6fc6f04b0f5f8 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 10:50:06 -0800 Subject: [PATCH 03/21] Two different player colors --- tic-tac-toe.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index ada8c51..4bbadcb 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -1,12 +1,18 @@ function TicTacToe() { - var board_2 = ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; - board_2.forEach(function(box) { + var board_spaces = ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; + var player = 0; + board_spaces.forEach(function(box) { $("." + box).click(function() { - $("." + box).css('background-color', 'red'); + if(player === 0){ + $("." + box).css('background-color', 'red'); + player = 1; + } else { + $("." + box).css('background-color', 'yellow'); + player = 0; + } }); }); - - } +} TicTacToe.prototype = { board: [["", "", ""], ["", "", ""], ["", "", ""]], From b9374222663c283605503806bfdc9fa22bb9b227 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 10:57:41 -0800 Subject: [PATCH 04/21] Boxes can not be changed once they are picked --- tic-tac-toe.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 4bbadcb..3881a94 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -1,14 +1,18 @@ function TicTacToe() { var board_spaces = ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; var player = 0; + var already_played = false; + board_spaces.forEach(function(box) { $("." + box).click(function() { - if(player === 0){ - $("." + box).css('background-color', 'red'); - player = 1; - } else { - $("." + box).css('background-color', 'yellow'); - player = 0; + if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { + if(player === 0){ + $("." + box).css('background-color', 'red'); + player = 1; + } else { + $("." + box).css('background-color', 'yellow'); + player = 0; + } } }); }); From a4186bb6f2b4a59fdaf20dfaf9b5b2f88e2be6b4 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 11:02:23 -0800 Subject: [PATCH 05/21] Reset button restores the initial color to all squares --- index.html | 2 ++ tic-tac-toe.js | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/index.html b/index.html index fca3de1..fbe4050 100644 --- a/index.html +++ b/index.html @@ -42,4 +42,6 @@

Tic Tac Toe

+ + diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 3881a94..64dc044 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -16,6 +16,12 @@ function TicTacToe() { } }); }); + + $('#reset-button').click(function() { + board_spaces.forEach(function(box) { + $("." + box).css('background-color', 'blue'); + }); +}); } TicTacToe.prototype = { From 2149d0d992b169a3737b525fb3c06e317f298a20 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 11:52:56 -0800 Subject: [PATCH 06/21] Moved things into the prototype --- index.html | 4 ++-- tic-tac-toe.js | 63 +++++++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/index.html b/index.html index fbe4050..d671f83 100644 --- a/index.html +++ b/index.html @@ -14,8 +14,8 @@

Tic Tac Toe

diff --git a/tasks.txt b/tasks.txt index 7f3639c..bb1aed3 100644 --- a/tasks.txt +++ b/tasks.txt @@ -1,5 +1,2 @@ -- Boxes are clickable -- Clicking in a box places an X -- Clicking in a box switches between X and O -- Can reset the board -- + +- diff --git a/tic-tac-toe.js b/tic-tac-toe.js index fa9106a..e23c82f 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -27,30 +27,30 @@ TicTacToe.prototype = { }); }, + resetBoard: function(){ self = this; $('#reset-button').click(function() { self.board_spaces.forEach(function(box) { $("." + box).css('background-color', 'blue'); + }); }); - }); -}, -boardSpaces: function() { - return ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; -}, - -gameOver: function() { - self = this; - var count = 0; - self.board_spaces.forEach(function(box) { - if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { - count++; - } - }); - if (count === 0){ - alert("Game Over!"); - } -}, + }, + boardSpaces: function() { + return ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; + }, + gameOver: function() { + self = this; + var count = 0; + self.board_spaces.forEach(function(box) { + if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { + count++; + } + }); + if (count === 0){ + alert("Game Over!"); + } + }, }; From a8809b90100ac9ca20055346ad7f4cf7345e1aef Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 14:03:29 -0800 Subject: [PATCH 09/21] Win/Lose logic sort of working --- tic-tac-toe.js | 53 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index e23c82f..c71c128 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -7,6 +7,9 @@ TicTacToe.prototype = { // board: [["", "", ""], ["", "", ""], ["", "", ""]], // choices: ["", "X", "O"], board_spaces: ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"], + player_1_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], + player_2_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], + //player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] pickSpaces: function(){ self = this; @@ -22,10 +25,10 @@ TicTacToe.prototype = { player = 0; } } + self.updateScore(box, player); self.gameOver(); }); }); - }, resetBoard: function(){ @@ -50,7 +53,53 @@ TicTacToe.prototype = { } }); if (count === 0){ - alert("Game Over!"); + alert("It's a tie!"); + self.board_spaces.forEach(function(box) { + $("." + box).css('background-color', 'blue'); + }); } }, + + updateScore: function(space, player) { + self = this; + if(space.substring(0,2) == "r1") { + if (player === 0) { + self.player_1_score[0]++; + } else { + self.player_2_score[0]++; + } + } else if (space.substring(0,2) == "r2") { + if (player === 0) { + self.player_1_score[1]++; + } else { + self.player_2_score[1]++; + } + } else if (space.substring(0,2) == "r3") { + if (player === 0) { + self.player_1_score[2]++; + } else { + self.player_2_score[2]++; + } + } + self.checkForWinner(); + }, + + checkForWinner: function() { + self = this; + self.player_1_score.forEach(function(score) { + if (score == 3) { + alert("Player 1 wins!"); + self.resetBoard(); + } + }); + self.player_2_score.forEach(function(score) { + if (score == 3) { + alert("Player 2 wins!"); + self.resetBoard(); + } + }); + // player_1_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] + // player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] + + }, }; From 3b1b6d6ac2ecc225c96a26ec8568ed12a9078b77 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 28 Jan 2016 14:14:46 -0800 Subject: [PATCH 10/21] More win/loss logic --- tic-tac-toe.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index c71c128..444e5a7 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -81,6 +81,42 @@ TicTacToe.prototype = { self.player_2_score[2]++; } } + + if (space.substring(2,4) == "c1") { + if (player === 0) { + self.player_1_score[3]++; + } else { + self.player_2_score[3]++; + } + } else if (space.substring(2,4) == "c2") { + if (player === 0) { + self.player_1_score[4]++; + } else { + self.player_2_score[4]++; + } + } else if (space.substring(2,4) == "c3") { + if (player === 0) { + self.player_1_score[5]++; + } else { + self.player_2_score[5]++; + } + } + + if ((space == "c1r1") || (space = "c2r2") || (space = "c3r3")) { + if (player === 0) { + self.player_1_score[6]++; + } else { + self.player_2_score[6]++; + } + } + + if ((space == "c3r1") || (space = "c2r2") || (space = "c1r3")) { + if (player === 0) { + self.player_1_score[7]++; + } else { + self.player_2_score[7]++; + } + } self.checkForWinner(); }, @@ -89,13 +125,21 @@ TicTacToe.prototype = { self.player_1_score.forEach(function(score) { if (score == 3) { alert("Player 1 wins!"); - self.resetBoard(); + self.board_spaces.forEach(function(box) { + $("." + box).css('background-color', 'blue'); + }); + self.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + self.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; } }); self.player_2_score.forEach(function(score) { if (score == 3) { alert("Player 2 wins!"); - self.resetBoard(); + self.board_spaces.forEach(function(box) { + $("." + box).css('background-color', 'blue'); + }); + self.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + self.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; } }); // player_1_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] From 6aedb98027d13a9b4479c479beac4e72d81d6bcb Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 10:24:38 -0800 Subject: [PATCH 11/21] Working scoring logic --- node_modules/pryjs/.npmignore | 3 + node_modules/pryjs/.travis.yml | 14 + node_modules/pryjs/Gruntfile.coffee | 19 + node_modules/pryjs/LICENSE | 21 + node_modules/pryjs/assets/demo.png | Bin 0 -> 91469 bytes node_modules/pryjs/bin/deploy | 1 + node_modules/pryjs/changelog.md | 67 + node_modules/pryjs/code_of_conduct.md | 15 + node_modules/pryjs/examples/fizzbuzz.coffee | 18 + node_modules/pryjs/examples/fizzbuzz.js | 15 + node_modules/pryjs/features/help.feature | 23 + node_modules/pryjs/features/play.feature | 18 + .../step_definitions/myStepDefinitions.coffee | 42 + node_modules/pryjs/features/stop.feature | 10 + .../pryjs/features/support/after_hooks.coffee | 4 + .../pryjs/features/support/world.coffee | 56 + .../pryjs/features/underscore.feature | 10 + node_modules/pryjs/features/version.feature | 9 + node_modules/pryjs/features/whereami.feature | 19 + node_modules/pryjs/features/wtf.feature | 15 + node_modules/pryjs/features/xecute.feature | 62 + node_modules/pryjs/lib/.gitkeep | 0 node_modules/pryjs/lib/pry.js | 31 + node_modules/pryjs/lib/pry/app.js | 82 + node_modules/pryjs/lib/pry/command.js | 87 + node_modules/pryjs/lib/pry/commands/help.js | 76 + node_modules/pryjs/lib/pry/commands/index.js | 16 + node_modules/pryjs/lib/pry/commands/kill.js | 33 + node_modules/pryjs/lib/pry/commands/play.js | 40 + node_modules/pryjs/lib/pry/commands/stop.js | 31 + .../pryjs/lib/pry/commands/version.js | 32 + .../pryjs/lib/pry/commands/whereami.js | 43 + node_modules/pryjs/lib/pry/commands/wtf.js | 36 + node_modules/pryjs/lib/pry/commands/xecute.js | 66 + node_modules/pryjs/lib/pry/compiler.js | 50 + node_modules/pryjs/lib/pry/file.js | 51 + .../pryjs/lib/pry/output/local_output.js | 31 + node_modules/pryjs/lib/pry/range.js | 35 + node_modules/pryjs/lib/pry/sync_highlight.js | 92 + node_modules/pryjs/lib/pry/sync_prompt.js | 159 + node_modules/pryjs/node_modules/.bin/cake | 1 + node_modules/pryjs/node_modules/.bin/coffee | 1 + .../pryjs/node_modules/chalk/index.js | 95 + .../chalk/node_modules/.bin/has-ansi | 1 + .../chalk/node_modules/.bin/strip-ansi | 1 + .../chalk/node_modules/.bin/supports-color | 1 + .../chalk/node_modules/ansi-styles/index.js | 40 + .../node_modules/ansi-styles/package.json | 74 + .../chalk/node_modules/ansi-styles/readme.md | 70 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 71 + .../escape-string-regexp/readme.md | 27 + .../chalk/node_modules/has-ansi/cli.js | 53 + .../chalk/node_modules/has-ansi/index.js | 4 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 79 + .../node_modules/ansi-regex/readme.md | 33 + .../chalk/node_modules/has-ansi/package.json | 85 + .../chalk/node_modules/has-ansi/readme.md | 45 + .../chalk/node_modules/strip-ansi/cli.js | 39 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 79 + .../node_modules/ansi-regex/readme.md | 33 + .../node_modules/strip-ansi/package.json | 84 + .../chalk/node_modules/strip-ansi/readme.md | 43 + .../chalk/node_modules/supports-color/cli.js | 28 + .../node_modules/supports-color/index.js | 32 + .../node_modules/supports-color/package.json | 78 + .../node_modules/supports-color/readme.md | 44 + .../pryjs/node_modules/chalk/package.json | 82 + .../pryjs/node_modules/chalk/readme.md | 175 + .../node_modules/coffee-script/.npmignore | 11 + .../pryjs/node_modules/coffee-script/CNAME | 1 + .../coffee-script/CONTRIBUTING.md | 9 + .../pryjs/node_modules/coffee-script/LICENSE | 22 + .../node_modules/coffee-script/README.md | 62 + .../pryjs/node_modules/coffee-script/bin/cake | 7 + .../node_modules/coffee-script/bin/coffee | 7 + .../node_modules/coffee-script/bower.json | 27 + .../lib/coffee-script/browser.js | 135 + .../coffee-script/lib/coffee-script/cake.js | 114 + .../lib/coffee-script/coffee-script.js | 376 ++ .../lib/coffee-script/command.js | 610 ++ .../lib/coffee-script/grammar.js | 665 +++ .../lib/coffee-script/helpers.js | 248 + .../coffee-script/lib/coffee-script/index.js | 11 + .../coffee-script/lib/coffee-script/lexer.js | 1011 ++++ .../coffee-script/lib/coffee-script/nodes.js | 3307 +++++++++++ .../lib/coffee-script/optparse.js | 139 + .../coffee-script/lib/coffee-script/parser.js | 735 +++ .../lib/coffee-script/register.js | 66 + .../coffee-script/lib/coffee-script/repl.js | 202 + .../lib/coffee-script/rewriter.js | 504 ++ .../coffee-script/lib/coffee-script/scope.js | 155 + .../lib/coffee-script/sourcemap.js | 161 + .../node_modules/coffee-script/package.json | 71 + .../node_modules/coffee-script/register.js | 1 + .../pryjs/node_modules/coffee-script/repl.js | 1 + .../pryjs/node_modules/deasync/.npmignore | 6 + .../pryjs/node_modules/deasync/README.md | 102 + .../bin/darwin-x64-node-0.10/deasync.node | Bin 0 -> 10344 bytes .../bin/darwin-x64-node-0.11/deasync.node | Bin 0 -> 10808 bytes .../bin/darwin-x64-node-0.12/deasync.node | Bin 0 -> 10848 bytes .../bin/darwin-x64-node-4/deasync.node | Bin 0 -> 11920 bytes .../bin/linux-ia32-node-0.10/deasync.node | Bin 0 -> 7672 bytes .../bin/linux-ia32-node-0.11/deasync.node | Bin 0 -> 7914 bytes .../bin/linux-ia32-node-0.12/deasync.node | Bin 0 -> 7914 bytes .../bin/linux-x64-node-0.10/deasync.node | Bin 0 -> 9580 bytes .../bin/linux-x64-node-0.11/deasync.node | Bin 0 -> 13407 bytes .../bin/linux-x64-node-0.12/deasync.node | Bin 0 -> 13384 bytes .../deasync/bin/linux-x64-node-4/deasync.node | Bin 0 -> 13989 bytes .../deasync/bin/linux-x64-node-5/deasync.node | Bin 0 -> 13989 bytes .../bin/win32-ia32-node-0.10/deasync.node | Bin 0 -> 33792 bytes .../bin/win32-ia32-node-0.11/deasync.node | Bin 0 -> 50176 bytes .../bin/win32-ia32-node-0.12/deasync.node | Bin 0 -> 50176 bytes .../bin/win32-ia32-node-4/deasync.node | Bin 0 -> 106496 bytes .../bin/win32-ia32-node-5/deasync.node | Bin 0 -> 105984 bytes .../bin/win32-x64-node-0.10/deasync.node | Bin 0 -> 82432 bytes .../bin/win32-x64-node-0.11/deasync.node | Bin 0 -> 107008 bytes .../bin/win32-x64-node-0.12/deasync.node | Bin 0 -> 107008 bytes .../deasync/bin/win32-x64-node-4/deasync.node | Bin 0 -> 120832 bytes .../deasync/bin/win32-x64-node-5/deasync.node | Bin 0 -> 120320 bytes .../pryjs/node_modules/deasync/binding.gyp | 11 + .../pryjs/node_modules/deasync/build.js | 116 + .../pryjs/node_modules/deasync/index.js | 66 + .../deasync/node_modules/bindings/README.md | 97 + .../deasync/node_modules/bindings/bindings.js | 166 + .../node_modules/bindings/package.json | 56 + .../deasync/node_modules/nan/.dntrc | 30 + .../deasync/node_modules/nan/CHANGELOG.md | 391 ++ .../deasync/node_modules/nan/LICENSE.md | 13 + .../deasync/node_modules/nan/README.md | 384 ++ .../deasync/node_modules/nan/appveyor.yml | 38 + .../deasync/node_modules/nan/doc/.build.sh | 39 + .../node_modules/nan/doc/asyncworker.md | 97 + .../deasync/node_modules/nan/doc/buffers.md | 54 + .../deasync/node_modules/nan/doc/callback.md | 52 + .../node_modules/nan/doc/converters.md | 41 + .../deasync/node_modules/nan/doc/errors.md | 226 + .../node_modules/nan/doc/maybe_types.md | 512 ++ .../deasync/node_modules/nan/doc/methods.md | 656 +++ .../deasync/node_modules/nan/doc/new.md | 147 + .../deasync/node_modules/nan/doc/node_misc.md | 63 + .../node_modules/nan/doc/object_wrappers.md | 263 + .../node_modules/nan/doc/persistent.md | 295 + .../deasync/node_modules/nan/doc/scopes.md | 73 + .../deasync/node_modules/nan/doc/script.md | 38 + .../node_modules/nan/doc/string_bytes.md | 62 + .../node_modules/nan/doc/v8_internals.md | 199 + .../deasync/node_modules/nan/doc/v8_misc.md | 85 + .../deasync/node_modules/nan/include_dirs.js | 1 + .../deasync/node_modules/nan/nan.h | 2245 +++++++ .../deasync/node_modules/nan/nan_callbacks.h | 88 + .../node_modules/nan/nan_callbacks_12_inl.h | 512 ++ .../nan/nan_callbacks_pre_12_inl.h | 506 ++ .../deasync/node_modules/nan/nan_converters.h | 64 + .../node_modules/nan/nan_converters_43_inl.h | 42 + .../nan/nan_converters_pre_43_inl.h | 42 + .../nan/nan_implementation_12_inl.h | 404 ++ .../nan/nan_implementation_pre_12_inl.h | 264 + .../node_modules/nan/nan_maybe_43_inl.h | 231 + .../node_modules/nan/nan_maybe_pre_43_inl.h | 303 + .../deasync/node_modules/nan/nan_new.h | 340 ++ .../node_modules/nan/nan_object_wrap.h | 155 + .../node_modules/nan/nan_persistent_12_inl.h | 129 + .../nan/nan_persistent_pre_12_inl.h | 242 + .../node_modules/nan/nan_string_bytes.h | 305 + .../nan/nan_typedarray_contents.h | 87 + .../deasync/node_modules/nan/nan_weak.h | 422 ++ .../deasync/node_modules/nan/package.json | 91 + .../deasync/node_modules/nan/tools/1to2.js | 412 ++ .../deasync/node_modules/nan/tools/README.md | 14 + .../node_modules/nan/tools/package.json | 19 + .../pryjs/node_modules/deasync/package.json | 65 + .../pryjs/node_modules/deasync/quick-test.js | 7 + .../pryjs/node_modules/deasync/src/deasync.cc | 17 + .../pryjs/node_modules/deasync/test.js | 31 + .../node_modules/pygmentize-bundled/.jshintrc | 59 + .../pygmentize-bundled/.npmignore | 8 + .../node_modules/pygmentize-bundled/LICENSE | 39 + .../node_modules/pygmentize-bundled/README.md | 96 + .../node_modules/pygmentize-bundled/index.js | 144 + .../node_modules/bl/.jshintrc | 59 + .../node_modules/bl/.npmignore | 1 + .../node_modules/bl/.travis.yml | 11 + .../node_modules/bl/LICENSE | 39 + .../node_modules/bl/README.md | 165 + .../pygmentize-bundled/node_modules/bl/bl.js | 157 + .../node_modules/readable-stream/.npmignore | 5 + .../bl/node_modules/readable-stream/LICENSE | 18 + .../bl/node_modules/readable-stream/README.md | 15 + .../bl/node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 982 ++++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 386 ++ .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 60 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 1 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 50 + .../node_modules/inherits/test.js | 25 + .../node_modules/isarray/README.md | 54 + .../node_modules/isarray/build/build.js | 209 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 3 + .../node_modules/isarray/package.json | 53 + .../node_modules/string_decoder/.npmignore | 2 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 54 + .../node_modules/readable-stream/package.json | 70 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 8 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../node_modules/bl/package.json | 56 + .../node_modules/bl/test.js | 356 ++ .../node_modules/through2/.jshintrc | 59 + .../node_modules/through2/.npmignore | 1 + .../node_modules/through2/.travis.yml | 12 + .../node_modules/through2/LICENSE | 39 + .../node_modules/through2/README.md | 107 + .../node_modules/readable-stream/.npmignore | 5 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 15 + .../node_modules/readable-stream/duplex.js | 1 + .../node_modules/readable-stream/float.patch | 923 +++ .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 951 +++ .../readable-stream/lib/_stream_transform.js | 209 + .../readable-stream/lib/_stream_writable.js | 477 ++ .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 60 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 1 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 50 + .../node_modules/inherits/test.js | 25 + .../node_modules/isarray/README.md | 54 + .../node_modules/isarray/build/build.js | 209 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 3 + .../node_modules/isarray/package.json | 53 + .../node_modules/string_decoder/.npmignore | 2 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 54 + .../node_modules/readable-stream/package.json | 70 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 7 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../through2/node_modules/xtend/.npmignore | 1 + .../through2/node_modules/xtend/LICENCE | 19 + .../through2/node_modules/xtend/Makefile | 4 + .../through2/node_modules/xtend/README.md | 27 + .../through2/node_modules/xtend/has-keys.js | 7 + .../through2/node_modules/xtend/index.js | 25 + .../through2/node_modules/xtend/mutable.js | 25 + .../xtend/node_modules/object-keys/.npmignore | 1 + .../node_modules/object-keys/.travis.yml | 5 + .../xtend/node_modules/object-keys/README.md | 39 + .../xtend/node_modules/object-keys/foreach.js | 40 + .../xtend/node_modules/object-keys/index.js | 2 + .../node_modules/object-keys/isArguments.js | 16 + .../node_modules/object-keys/package.json | 74 + .../xtend/node_modules/object-keys/shim.js | 62 + .../node_modules/object-keys/test/foreach.js | 156 + .../node_modules/object-keys/test/index.js | 6 + .../object-keys/test/isArguments.js | 10 + .../node_modules/object-keys/test/shim.js | 134 + .../through2/node_modules/xtend/package.json | 89 + .../through2/node_modules/xtend/test.js | 63 + .../node_modules/through2/package.json | 63 + .../node_modules/through2/test.js | 314 + .../node_modules/through2/through2.js | 42 + .../pygmentize-bundled/package.json | 62 + .../test-fixtures/active_model.html | 222 + .../test-fixtures/active_model.rb | 221 + .../node_modules/pygmentize-bundled/test.js | 104 + .../vendor/pygments/AUTHORS | 172 + .../vendor/pygments/CHANGES | 941 +++ .../vendor/pygments/LICENSE | 25 + .../vendor/pygments/MANIFEST.in | 6 + .../vendor/pygments/Makefile | 56 + .../pygmentize-bundled/vendor/pygments/TODO | 15 + .../vendor/pygments/build-2.7/pygmentize | 7 + .../pygments/build-2.7/pygments/__init__.py | 91 + .../pygments/build-2.7/pygments/cmdline.py | 454 ++ .../pygments/build-2.7/pygments/console.py | 74 + .../pygments/build-2.7/pygments/filter.py | 74 + .../build-2.7/pygments/filters/__init__.py | 358 ++ .../pygments/build-2.7/pygments/formatter.py | 95 + .../build-2.7/pygments/formatters/__init__.py | 70 + .../build-2.7/pygments/formatters/_mapping.py | 103 + .../build-2.7/pygments/formatters/bbcode.py | 109 + .../build-2.7/pygments/formatters/html.py | 839 +++ .../build-2.7/pygments/formatters/img.py | 560 ++ .../build-2.7/pygments/formatters/latex.py | 470 ++ .../build-2.7/pygments/formatters/other.py | 162 + .../build-2.7/pygments/formatters/rtf.py | 150 + .../build-2.7/pygments/formatters/svg.py | 154 + .../build-2.7/pygments/formatters/terminal.py | 152 + .../pygments/formatters/terminal256.py | 222 + .../pygments/build-2.7/pygments/lexer.py | 785 +++ .../build-2.7/pygments/lexers/__init__.py | 263 + .../build-2.7/pygments/lexers/_asybuiltins.py | 1645 ++++++ .../build-2.7/pygments/lexers/_clbuiltins.py | 232 + .../pygments/lexers/_cocoabuiltins.py | 73 + .../pygments/lexers/_lassobuiltins.py | 5182 ++++++++++++++++ .../build-2.7/pygments/lexers/_luabuiltins.py | 255 + .../build-2.7/pygments/lexers/_mapping.py | 400 ++ .../pygments/lexers/_openedgebuiltins.py | 562 ++ .../build-2.7/pygments/lexers/_phpbuiltins.py | 4759 +++++++++++++++ .../pygments/lexers/_postgres_builtins.py | 233 + .../pygments/lexers/_robotframeworklexer.py | 558 ++ .../pygments/lexers/_scilab_builtins.py | 40 + .../pygments/lexers/_sourcemodbuiltins.py | 1077 ++++ .../pygments/lexers/_stan_builtins.py | 454 ++ .../build-2.7/pygments/lexers/_vimbuiltins.py | 13 + .../build-2.7/pygments/lexers/agile.py | 2552 ++++++++ .../pygments/build-2.7/pygments/lexers/asm.py | 435 ++ .../build-2.7/pygments/lexers/compiled.py | 5192 +++++++++++++++++ .../build-2.7/pygments/lexers/dalvik.py | 125 + .../build-2.7/pygments/lexers/dotnet.py | 683 +++ .../build-2.7/pygments/lexers/foxpro.py | 428 ++ .../build-2.7/pygments/lexers/functional.py | 3671 ++++++++++++ .../build-2.7/pygments/lexers/graph.py | 81 + .../pygments/build-2.7/pygments/lexers/hdl.py | 355 ++ .../build-2.7/pygments/lexers/inferno.py | 96 + .../pygments/build-2.7/pygments/lexers/jvm.py | 1527 +++++ .../build-2.7/pygments/lexers/math.py | 2286 ++++++++ .../build-2.7/pygments/lexers/other.py | 4492 ++++++++++++++ .../build-2.7/pygments/lexers/parsers.py | 778 +++ .../build-2.7/pygments/lexers/qbasic.py | 157 + .../pygments/build-2.7/pygments/lexers/rdf.py | 99 + .../build-2.7/pygments/lexers/shell.py | 427 ++ .../build-2.7/pygments/lexers/special.py | 99 + .../pygments/build-2.7/pygments/lexers/sql.py | 592 ++ .../build-2.7/pygments/lexers/templates.py | 2060 +++++++ .../build-2.7/pygments/lexers/text.py | 2055 +++++++ .../pygments/build-2.7/pygments/lexers/web.py | 4510 ++++++++++++++ .../pygments/build-2.7/pygments/modeline.py | 40 + .../pygments/build-2.7/pygments/plugin.py | 74 + .../pygments/build-2.7/pygments/scanner.py | 104 + .../pygments/build-2.7/pygments/sphinxext.py | 153 + .../pygments/build-2.7/pygments/style.py | 118 + .../build-2.7/pygments/styles/__init__.py | 74 + .../build-2.7/pygments/styles/autumn.py | 65 + .../build-2.7/pygments/styles/borland.py | 51 + .../pygments/build-2.7/pygments/styles/bw.py | 49 + .../build-2.7/pygments/styles/colorful.py | 81 + .../build-2.7/pygments/styles/default.py | 73 + .../build-2.7/pygments/styles/emacs.py | 72 + .../build-2.7/pygments/styles/friendly.py | 72 + .../build-2.7/pygments/styles/fruity.py | 42 + .../build-2.7/pygments/styles/igor.py | 29 + .../build-2.7/pygments/styles/manni.py | 75 + .../build-2.7/pygments/styles/monokai.py | 106 + .../build-2.7/pygments/styles/murphy.py | 80 + .../build-2.7/pygments/styles/native.py | 65 + .../build-2.7/pygments/styles/paraiso_dark.py | 125 + .../pygments/styles/paraiso_light.py | 125 + .../build-2.7/pygments/styles/pastie.py | 75 + .../build-2.7/pygments/styles/perldoc.py | 69 + .../pygments/build-2.7/pygments/styles/rrt.py | 33 + .../build-2.7/pygments/styles/tango.py | 141 + .../build-2.7/pygments/styles/trac.py | 63 + .../pygments/build-2.7/pygments/styles/vim.py | 63 + .../pygments/build-2.7/pygments/styles/vs.py | 38 + .../build-2.7/pygments/styles/xcode.py | 51 + .../pygments/build-2.7/pygments/token.py | 198 + .../pygments/build-2.7/pygments/unistring.py | 141 + .../pygments/build-2.7/pygments/util.py | 291 + .../vendor/pygments/build-3.3/pygmentize | 7 + .../pygments/build-3.3/pygments/__init__.py | 91 + .../pygments/build-3.3/pygments/cmdline.py | 454 ++ .../pygments/build-3.3/pygments/console.py | 74 + .../pygments/build-3.3/pygments/filter.py | 74 + .../build-3.3/pygments/filters/__init__.py | 358 ++ .../pygments/build-3.3/pygments/formatter.py | 95 + .../build-3.3/pygments/formatters/__init__.py | 70 + .../build-3.3/pygments/formatters/_mapping.py | 103 + .../build-3.3/pygments/formatters/bbcode.py | 109 + .../build-3.3/pygments/formatters/html.py | 839 +++ .../build-3.3/pygments/formatters/img.py | 560 ++ .../build-3.3/pygments/formatters/latex.py | 470 ++ .../build-3.3/pygments/formatters/other.py | 162 + .../build-3.3/pygments/formatters/rtf.py | 150 + .../build-3.3/pygments/formatters/svg.py | 154 + .../build-3.3/pygments/formatters/terminal.py | 152 + .../pygments/formatters/terminal256.py | 222 + .../pygments/build-3.3/pygments/lexer.py | 785 +++ .../build-3.3/pygments/lexers/__init__.py | 263 + .../build-3.3/pygments/lexers/_asybuiltins.py | 1645 ++++++ .../build-3.3/pygments/lexers/_clbuiltins.py | 232 + .../pygments/lexers/_cocoabuiltins.py | 73 + .../pygments/lexers/_lassobuiltins.py | 5182 ++++++++++++++++ .../build-3.3/pygments/lexers/_luabuiltins.py | 255 + .../build-3.3/pygments/lexers/_mapping.py | 400 ++ .../pygments/lexers/_openedgebuiltins.py | 562 ++ .../build-3.3/pygments/lexers/_phpbuiltins.py | 4759 +++++++++++++++ .../pygments/lexers/_postgres_builtins.py | 233 + .../pygments/lexers/_robotframeworklexer.py | 558 ++ .../pygments/lexers/_scilab_builtins.py | 40 + .../pygments/lexers/_sourcemodbuiltins.py | 1077 ++++ .../pygments/lexers/_stan_builtins.py | 454 ++ .../build-3.3/pygments/lexers/_vimbuiltins.py | 13 + .../build-3.3/pygments/lexers/agile.py | 2552 ++++++++ .../pygments/build-3.3/pygments/lexers/asm.py | 435 ++ .../build-3.3/pygments/lexers/compiled.py | 5192 +++++++++++++++++ .../build-3.3/pygments/lexers/dalvik.py | 125 + .../build-3.3/pygments/lexers/dotnet.py | 683 +++ .../build-3.3/pygments/lexers/foxpro.py | 428 ++ .../build-3.3/pygments/lexers/functional.py | 3671 ++++++++++++ .../build-3.3/pygments/lexers/graph.py | 81 + .../pygments/build-3.3/pygments/lexers/hdl.py | 355 ++ .../build-3.3/pygments/lexers/inferno.py | 96 + .../pygments/build-3.3/pygments/lexers/jvm.py | 1527 +++++ .../build-3.3/pygments/lexers/math.py | 2286 ++++++++ .../build-3.3/pygments/lexers/other.py | 4492 ++++++++++++++ .../build-3.3/pygments/lexers/parsers.py | 778 +++ .../build-3.3/pygments/lexers/qbasic.py | 157 + .../pygments/build-3.3/pygments/lexers/rdf.py | 99 + .../build-3.3/pygments/lexers/shell.py | 427 ++ .../build-3.3/pygments/lexers/special.py | 99 + .../pygments/build-3.3/pygments/lexers/sql.py | 592 ++ .../build-3.3/pygments/lexers/templates.py | 2060 +++++++ .../build-3.3/pygments/lexers/text.py | 2055 +++++++ .../pygments/build-3.3/pygments/lexers/web.py | 4510 ++++++++++++++ .../pygments/build-3.3/pygments/modeline.py | 40 + .../pygments/build-3.3/pygments/plugin.py | 74 + .../pygments/build-3.3/pygments/scanner.py | 104 + .../pygments/build-3.3/pygments/sphinxext.py | 153 + .../pygments/build-3.3/pygments/style.py | 118 + .../build-3.3/pygments/styles/__init__.py | 74 + .../build-3.3/pygments/styles/autumn.py | 65 + .../build-3.3/pygments/styles/borland.py | 51 + .../pygments/build-3.3/pygments/styles/bw.py | 49 + .../build-3.3/pygments/styles/colorful.py | 81 + .../build-3.3/pygments/styles/default.py | 73 + .../build-3.3/pygments/styles/emacs.py | 72 + .../build-3.3/pygments/styles/friendly.py | 72 + .../build-3.3/pygments/styles/fruity.py | 42 + .../build-3.3/pygments/styles/igor.py | 29 + .../build-3.3/pygments/styles/manni.py | 75 + .../build-3.3/pygments/styles/monokai.py | 106 + .../build-3.3/pygments/styles/murphy.py | 80 + .../build-3.3/pygments/styles/native.py | 65 + .../build-3.3/pygments/styles/paraiso_dark.py | 125 + .../pygments/styles/paraiso_light.py | 125 + .../build-3.3/pygments/styles/pastie.py | 75 + .../build-3.3/pygments/styles/perldoc.py | 69 + .../pygments/build-3.3/pygments/styles/rrt.py | 33 + .../build-3.3/pygments/styles/tango.py | 141 + .../build-3.3/pygments/styles/trac.py | 63 + .../pygments/build-3.3/pygments/styles/vim.py | 63 + .../pygments/build-3.3/pygments/styles/vs.py | 38 + .../build-3.3/pygments/styles/xcode.py | 51 + .../pygments/build-3.3/pygments/token.py | 198 + .../pygments/build-3.3/pygments/unistring.py | 141 + .../pygments/build-3.3/pygments/util.py | 291 + .../vendor/pygments/doc/Makefile | 153 + .../vendor/pygments/doc/_static/favicon.ico | Bin 0 -> 16958 bytes .../vendor/pygments/doc/_static/logo_new.png | Bin 0 -> 40944 bytes .../vendor/pygments/doc/_static/logo_only.png | Bin 0 -> 16424 bytes .../pygments/doc/_templates/docssidebar.html | 3 + .../pygments/doc/_templates/indexsidebar.html | 25 + .../doc/_themes/pygments14/layout.html | 98 + .../doc/_themes/pygments14/static/bodybg.png | Bin 0 -> 51903 bytes .../doc/_themes/pygments14/static/docbg.png | Bin 0 -> 61296 bytes .../_themes/pygments14/static/listitem.png | Bin 0 -> 207 bytes .../doc/_themes/pygments14/static/logo.png | Bin 0 -> 26933 bytes .../doc/_themes/pygments14/static/pocoo.png | Bin 0 -> 2154 bytes .../pygments14/static/pygments14.css_t | 401 ++ .../doc/_themes/pygments14/theme.conf | 15 + .../vendor/pygments/doc/conf.py | 249 + .../vendor/pygments/doc/docs/api.rst | 316 + .../vendor/pygments/doc/docs/authors.rst | 4 + .../vendor/pygments/doc/docs/changelog.rst | 1 + .../vendor/pygments/doc/docs/cmdline.rst | 145 + .../pygments/doc/docs/filterdevelopment.rst | 70 + .../vendor/pygments/doc/docs/filters.rst | 41 + .../doc/docs/formatterdevelopment.rst | 169 + .../vendor/pygments/doc/docs/formatters.rst | 48 + .../vendor/pygments/doc/docs/index.rst | 66 + .../vendor/pygments/doc/docs/integrate.rst | 44 + .../vendor/pygments/doc/docs/java.rst | 70 + .../pygments/doc/docs/lexerdevelopment.rst | 602 ++ .../vendor/pygments/doc/docs/lexers.rst | 69 + .../vendor/pygments/doc/docs/moinmoin.rst | 39 + .../vendor/pygments/doc/docs/plugins.rst | 93 + .../vendor/pygments/doc/docs/quickstart.rst | 205 + .../vendor/pygments/doc/docs/rstdirective.rst | 22 + .../vendor/pygments/doc/docs/styles.rst | 143 + .../vendor/pygments/doc/docs/tokens.rst | 352 ++ .../vendor/pygments/doc/docs/unicode.rst | 50 + .../vendor/pygments/doc/download.rst | 41 + .../vendor/pygments/doc/faq.rst | 143 + .../vendor/pygments/doc/index.rst | 53 + .../vendor/pygments/doc/languages.rst | 151 + .../vendor/pygments/doc/make.bat | 190 + .../vendor/pygments/doc/pygmentize.1 | 94 + .../vendor/pygments/external/autopygmentize | 81 + .../external/lasso-builtins-generator-9.lasso | 144 + .../pygments/external/markdown-processor.py | 67 + .../vendor/pygments/external/moin-parser.py | 112 + .../pygments/external/pygments.bashcomp | 38 + .../vendor/pygments/external/rst-directive.py | 82 + .../vendor/pygments/ez_setup.py | 382 ++ .../vendor/pygments/pygmentize | 7 + .../vendor/pygments/pygments/__init__.py | 91 + .../vendor/pygments/pygments/cmdline.py | 454 ++ .../vendor/pygments/pygments/console.py | 74 + .../vendor/pygments/pygments/filter.py | 74 + .../pygments/pygments/filters/__init__.py | 358 ++ .../vendor/pygments/pygments/formatter.py | 95 + .../pygments/pygments/formatters/__init__.py | 70 + .../pygments/pygments/formatters/_mapping.py | 103 + .../pygments/pygments/formatters/bbcode.py | 109 + .../pygments/pygments/formatters/html.py | 839 +++ .../pygments/pygments/formatters/img.py | 560 ++ .../pygments/pygments/formatters/latex.py | 470 ++ .../pygments/pygments/formatters/other.py | 162 + .../pygments/pygments/formatters/rtf.py | 150 + .../pygments/pygments/formatters/svg.py | 154 + .../pygments/pygments/formatters/terminal.py | 152 + .../pygments/formatters/terminal256.py | 222 + .../vendor/pygments/pygments/lexer.py | 785 +++ .../pygments/pygments/lexers/__init__.py | 263 + .../pygments/pygments/lexers/_asybuiltins.py | 1645 ++++++ .../pygments/pygments/lexers/_clbuiltins.py | 232 + .../pygments/lexers/_cocoabuiltins.py | 73 + .../pygments/lexers/_lassobuiltins.py | 5182 ++++++++++++++++ .../pygments/pygments/lexers/_luabuiltins.py | 255 + .../pygments/pygments/lexers/_mapping.py | 400 ++ .../pygments/lexers/_openedgebuiltins.py | 562 ++ .../pygments/pygments/lexers/_phpbuiltins.py | 4759 +++++++++++++++ .../pygments/lexers/_postgres_builtins.py | 233 + .../pygments/lexers/_robotframeworklexer.py | 558 ++ .../pygments/lexers/_scilab_builtins.py | 40 + .../pygments/lexers/_sourcemodbuiltins.py | 1077 ++++ .../pygments/lexers/_stan_builtins.py | 454 ++ .../pygments/pygments/lexers/_vimbuiltins.py | 13 + .../vendor/pygments/pygments/lexers/agile.py | 2552 ++++++++ .../vendor/pygments/pygments/lexers/asm.py | 435 ++ .../pygments/pygments/lexers/compiled.py | 5192 +++++++++++++++++ .../vendor/pygments/pygments/lexers/dalvik.py | 125 + .../vendor/pygments/pygments/lexers/dotnet.py | 683 +++ .../vendor/pygments/pygments/lexers/foxpro.py | 428 ++ .../pygments/pygments/lexers/functional.py | 3671 ++++++++++++ .../vendor/pygments/pygments/lexers/graph.py | 81 + .../vendor/pygments/pygments/lexers/hdl.py | 355 ++ .../pygments/pygments/lexers/inferno.py | 96 + .../vendor/pygments/pygments/lexers/jvm.py | 1527 +++++ .../vendor/pygments/pygments/lexers/math.py | 2286 ++++++++ .../vendor/pygments/pygments/lexers/other.py | 4492 ++++++++++++++ .../pygments/pygments/lexers/parsers.py | 778 +++ .../vendor/pygments/pygments/lexers/qbasic.py | 157 + .../vendor/pygments/pygments/lexers/rdf.py | 99 + .../vendor/pygments/pygments/lexers/shell.py | 427 ++ .../pygments/pygments/lexers/special.py | 99 + .../vendor/pygments/pygments/lexers/sql.py | 592 ++ .../pygments/pygments/lexers/templates.py | 2060 +++++++ .../vendor/pygments/pygments/lexers/text.py | 2055 +++++++ .../vendor/pygments/pygments/lexers/web.py | 4510 ++++++++++++++ .../vendor/pygments/pygments/modeline.py | 40 + .../vendor/pygments/pygments/plugin.py | 74 + .../vendor/pygments/pygments/scanner.py | 104 + .../vendor/pygments/pygments/sphinxext.py | 153 + .../vendor/pygments/pygments/style.py | 118 + .../pygments/pygments/styles/__init__.py | 74 + .../vendor/pygments/pygments/styles/autumn.py | 65 + .../pygments/pygments/styles/borland.py | 51 + .../vendor/pygments/pygments/styles/bw.py | 49 + .../pygments/pygments/styles/colorful.py | 81 + .../pygments/pygments/styles/default.py | 73 + .../vendor/pygments/pygments/styles/emacs.py | 72 + .../pygments/pygments/styles/friendly.py | 72 + .../vendor/pygments/pygments/styles/fruity.py | 42 + .../vendor/pygments/pygments/styles/igor.py | 29 + .../vendor/pygments/pygments/styles/manni.py | 75 + .../pygments/pygments/styles/monokai.py | 106 + .../vendor/pygments/pygments/styles/murphy.py | 80 + .../vendor/pygments/pygments/styles/native.py | 65 + .../pygments/pygments/styles/paraiso_dark.py | 125 + .../pygments/pygments/styles/paraiso_light.py | 125 + .../vendor/pygments/pygments/styles/pastie.py | 75 + .../pygments/pygments/styles/perldoc.py | 69 + .../vendor/pygments/pygments/styles/rrt.py | 33 + .../vendor/pygments/pygments/styles/tango.py | 141 + .../vendor/pygments/pygments/styles/trac.py | 63 + .../vendor/pygments/pygments/styles/vim.py | 63 + .../vendor/pygments/pygments/styles/vs.py | 38 + .../vendor/pygments/pygments/styles/xcode.py | 51 + .../vendor/pygments/pygments/token.py | 198 + .../vendor/pygments/pygments/unistring.py | 141 + .../vendor/pygments/pygments/util.py | 291 + .../vendor/pygments/scripts/check_sources.py | 226 + .../scripts/detect_missing_analyse_text.py | 33 + .../vendor/pygments/scripts/epydoc.css | 280 + .../vendor/pygments/scripts/find_codetags.py | 213 + .../vendor/pygments/scripts/find_error.py | 173 + .../vendor/pygments/scripts/get_vimkw.py | 43 + .../vendor/pygments/scripts/pylintrc | 301 + .../vendor/pygments/scripts/vim2pygments.py | 935 +++ .../vendor/pygments/setup.cfg | 7 + .../vendor/pygments/setup.py | 90 + .../pryjs/node_modules/underscore/LICENSE | 23 + .../pryjs/node_modules/underscore/README.md | 22 + .../node_modules/underscore/package.json | 70 + .../node_modules/underscore/underscore-min.js | 6 + .../underscore/underscore-min.map | 1 + .../node_modules/underscore/underscore.js | 1548 +++++ node_modules/pryjs/package.json | 64 + node_modules/pryjs/readme.md | 40 + node_modules/pryjs/src/pry.coffee | 18 + node_modules/pryjs/src/pry/app.coffee | 41 + node_modules/pryjs/src/pry/command.coffee | 61 + .../pryjs/src/pry/commands/help.coffee | 34 + .../pryjs/src/pry/commands/index.coffee | 7 + .../pryjs/src/pry/commands/kill.coffee | 14 + .../pryjs/src/pry/commands/play.coffee | 20 + .../pryjs/src/pry/commands/stop.coffee | 12 + .../pryjs/src/pry/commands/version.coffee | 13 + .../pryjs/src/pry/commands/whereami.coffee | 25 + .../pryjs/src/pry/commands/wtf.coffee | 16 + .../pryjs/src/pry/commands/xecute.coffee | 38 + node_modules/pryjs/src/pry/compiler.coffee | 31 + node_modules/pryjs/src/pry/file.coffee | 25 + .../pryjs/src/pry/output/local_output.coffee | 16 + node_modules/pryjs/src/pry/range.coffee | 18 + .../pryjs/src/pry/sync_highlight.coffee | 55 + node_modules/pryjs/src/pry/sync_prompt.coffee | 96 + node_modules/pryjs/tests/app_spec.coffee | 69 + node_modules/pryjs/tests/command_spec.coffee | 107 + .../pryjs/tests/commands/help_spec.coffee | 25 + .../pryjs/tests/commands/whereami_spec.coffee | 45 + node_modules/pryjs/tests/compiler_spec.coffee | 46 + node_modules/pryjs/tests/file_spec.coffee | 46 + node_modules/pryjs/tests/range_spec.coffee | 49 + .../pryjs/tests/sync_highlight_spec.coffee | 23 + tic-tac-toe.js | 54 +- 661 files changed, 214122 insertions(+), 34 deletions(-) create mode 100644 node_modules/pryjs/.npmignore create mode 100644 node_modules/pryjs/.travis.yml create mode 100644 node_modules/pryjs/Gruntfile.coffee create mode 100644 node_modules/pryjs/LICENSE create mode 100644 node_modules/pryjs/assets/demo.png create mode 100755 node_modules/pryjs/bin/deploy create mode 100644 node_modules/pryjs/changelog.md create mode 100644 node_modules/pryjs/code_of_conduct.md create mode 100644 node_modules/pryjs/examples/fizzbuzz.coffee create mode 100644 node_modules/pryjs/examples/fizzbuzz.js create mode 100644 node_modules/pryjs/features/help.feature create mode 100644 node_modules/pryjs/features/play.feature create mode 100644 node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee create mode 100644 node_modules/pryjs/features/stop.feature create mode 100644 node_modules/pryjs/features/support/after_hooks.coffee create mode 100644 node_modules/pryjs/features/support/world.coffee create mode 100644 node_modules/pryjs/features/underscore.feature create mode 100644 node_modules/pryjs/features/version.feature create mode 100644 node_modules/pryjs/features/whereami.feature create mode 100644 node_modules/pryjs/features/wtf.feature create mode 100644 node_modules/pryjs/features/xecute.feature create mode 100644 node_modules/pryjs/lib/.gitkeep create mode 100644 node_modules/pryjs/lib/pry.js create mode 100644 node_modules/pryjs/lib/pry/app.js create mode 100644 node_modules/pryjs/lib/pry/command.js create mode 100644 node_modules/pryjs/lib/pry/commands/help.js create mode 100644 node_modules/pryjs/lib/pry/commands/index.js create mode 100644 node_modules/pryjs/lib/pry/commands/kill.js create mode 100644 node_modules/pryjs/lib/pry/commands/play.js create mode 100644 node_modules/pryjs/lib/pry/commands/stop.js create mode 100644 node_modules/pryjs/lib/pry/commands/version.js create mode 100644 node_modules/pryjs/lib/pry/commands/whereami.js create mode 100644 node_modules/pryjs/lib/pry/commands/wtf.js create mode 100644 node_modules/pryjs/lib/pry/commands/xecute.js create mode 100644 node_modules/pryjs/lib/pry/compiler.js create mode 100644 node_modules/pryjs/lib/pry/file.js create mode 100644 node_modules/pryjs/lib/pry/output/local_output.js create mode 100644 node_modules/pryjs/lib/pry/range.js create mode 100644 node_modules/pryjs/lib/pry/sync_highlight.js create mode 100644 node_modules/pryjs/lib/pry/sync_prompt.js create mode 120000 node_modules/pryjs/node_modules/.bin/cake create mode 120000 node_modules/pryjs/node_modules/.bin/coffee create mode 100644 node_modules/pryjs/node_modules/chalk/index.js create mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi create mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi create mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md create mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md create mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md create mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md create mode 100644 node_modules/pryjs/node_modules/chalk/package.json create mode 100644 node_modules/pryjs/node_modules/chalk/readme.md create mode 100644 node_modules/pryjs/node_modules/coffee-script/.npmignore create mode 100644 node_modules/pryjs/node_modules/coffee-script/CNAME create mode 100644 node_modules/pryjs/node_modules/coffee-script/CONTRIBUTING.md create mode 100644 node_modules/pryjs/node_modules/coffee-script/LICENSE create mode 100644 node_modules/pryjs/node_modules/coffee-script/README.md create mode 100755 node_modules/pryjs/node_modules/coffee-script/bin/cake create mode 100755 node_modules/pryjs/node_modules/coffee-script/bin/coffee create mode 100644 node_modules/pryjs/node_modules/coffee-script/bower.json create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/browser.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/cake.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/coffee-script.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/command.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/grammar.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/helpers.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/index.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/lexer.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/nodes.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/optparse.js create mode 100755 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/parser.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/register.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/repl.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/rewriter.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/scope.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/sourcemap.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/package.json create mode 100644 node_modules/pryjs/node_modules/coffee-script/register.js create mode 100644 node_modules/pryjs/node_modules/coffee-script/repl.js create mode 100644 node_modules/pryjs/node_modules/deasync/.npmignore create mode 100644 node_modules/pryjs/node_modules/deasync/README.md create mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.10/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.11/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.12/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-4/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.10/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.11/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.12/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.10/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.11/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.12/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-4/deasync.node create mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-5/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.10/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.11/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.12/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-4/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-5/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.10/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.11/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.12/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-4/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-5/deasync.node create mode 100644 node_modules/pryjs/node_modules/deasync/binding.gyp create mode 100644 node_modules/pryjs/node_modules/deasync/build.js create mode 100644 node_modules/pryjs/node_modules/deasync/index.js create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/README.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/bindings.js create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/package.json create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/.dntrc create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/CHANGELOG.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/LICENSE.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/README.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/appveyor.yml create mode 100755 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/.build.sh create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/asyncworker.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/buffers.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/callback.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/converters.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/errors.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/maybe_types.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/methods.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/new.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/node_misc.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/object_wrappers.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/persistent.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/scopes.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/script.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/string_bytes.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/v8_internals.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/v8_misc.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/include_dirs.js create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks_pre_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters_43_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters_pre_43_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_implementation_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_implementation_pre_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_maybe_43_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_maybe_pre_43_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_new.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_object_wrap.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_persistent_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_persistent_pre_12_inl.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_string_bytes.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_typedarray_contents.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_weak.h create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/package.json create mode 100755 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/1to2.js create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/README.md create mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/package.json create mode 100644 node_modules/pryjs/node_modules/deasync/package.json create mode 100644 node_modules/pryjs/node_modules/deasync/quick-test.js create mode 100644 node_modules/pryjs/node_modules/deasync/src/deasync.cc create mode 100644 node_modules/pryjs/node_modules/deasync/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/.jshintrc create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.jshintrc create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.travis.yml create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/bl.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/duplex.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/passthrough.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/readable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/transform.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/writable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.jshintrc create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.travis.yml create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/duplex.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/float.patch create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/passthrough.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/readable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/transform.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/writable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/LICENCE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/Makefile create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/has-keys.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/mutable.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/through2.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/package.json create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test-fixtures/active_model.html create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test-fixtures/active_model.rb create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test.js create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/AUTHORS create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/CHANGES create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/LICENSE create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/MANIFEST.in create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/Makefile create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/TODO create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygmentize create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/cmdline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/console.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/filter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/filters/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/__init__.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/bbcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/html.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/img.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/latex.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/rtf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/svg.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/terminal.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/terminal256.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_asybuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_clbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_cocoabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_lassobuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_luabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_openedgebuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_phpbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_postgres_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_robotframeworklexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_scilab_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_sourcemodbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_stan_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_vimbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/agile.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/asm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/compiled.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/dalvik.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/dotnet.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/foxpro.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/functional.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/graph.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/hdl.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/inferno.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/jvm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/math.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/parsers.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/qbasic.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/rdf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/shell.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/special.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/sql.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/templates.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/text.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/web.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/modeline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/plugin.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/scanner.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/sphinxext.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/style.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/autumn.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/borland.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/bw.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/colorful.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/default.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/emacs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/friendly.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/fruity.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/igor.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/manni.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/monokai.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/murphy.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/native.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/paraiso_dark.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/paraiso_light.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/pastie.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/perldoc.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/rrt.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/tango.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/trac.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/vim.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/vs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/xcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/token.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/unistring.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/util.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygmentize create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/cmdline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/console.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/filter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/filters/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/__init__.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/bbcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/html.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/img.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/latex.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/rtf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/svg.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/terminal.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/terminal256.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_asybuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_clbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_cocoabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_lassobuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_luabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_openedgebuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_phpbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_postgres_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_robotframeworklexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_scilab_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_sourcemodbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_stan_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_vimbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/agile.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/asm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/compiled.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/dalvik.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/dotnet.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/foxpro.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/functional.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/graph.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/hdl.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/inferno.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/jvm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/math.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/parsers.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/qbasic.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/rdf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/shell.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/special.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/sql.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/templates.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/text.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/web.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/modeline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/plugin.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/scanner.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/sphinxext.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/style.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/autumn.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/borland.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/bw.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/colorful.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/default.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/emacs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/friendly.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/fruity.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/igor.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/manni.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/monokai.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/murphy.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/native.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/paraiso_dark.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/paraiso_light.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/pastie.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/perldoc.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/rrt.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/tango.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/trac.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/vim.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/vs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/xcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/token.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/unistring.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/util.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/Makefile create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/favicon.ico create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/logo_new.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/logo_only.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_templates/docssidebar.html create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_templates/indexsidebar.html create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/layout.html create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/docbg.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pocoo.png create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/unicode.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/autopygmentize create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/lasso-builtins-generator-9.lasso create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/markdown-processor.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/moin-parser.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/pygments.bashcomp create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/rst-directive.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/ez_setup.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygmentize create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/cmdline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/console.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/filter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/filters/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatter.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/__init__.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/bbcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/html.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/img.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/latex.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/rtf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/svg.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/terminal.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/terminal256.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_asybuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_clbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_cocoabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_lassobuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_luabuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_mapping.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_openedgebuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_phpbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_postgres_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_robotframeworklexer.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_scilab_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_sourcemodbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_stan_builtins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_vimbuiltins.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/agile.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/asm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/compiled.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/dalvik.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/dotnet.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/foxpro.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/functional.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/graph.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/hdl.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/inferno.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/jvm.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/math.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/other.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/parsers.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/qbasic.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/rdf.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/shell.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/special.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/sql.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/templates.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/text.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/web.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/modeline.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/plugin.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/scanner.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/sphinxext.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/style.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/__init__.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/autumn.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/borland.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/bw.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/colorful.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/default.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/emacs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/friendly.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/fruity.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/igor.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/manni.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/monokai.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/murphy.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/native.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/paraiso_dark.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/paraiso_light.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/pastie.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/perldoc.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/rrt.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/tango.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/trac.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/vim.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/vs.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/xcode.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/token.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/unistring.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/util.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/check_sources.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/detect_missing_analyse_text.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/epydoc.css create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_codetags.py create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py create mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg create mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py create mode 100644 node_modules/pryjs/node_modules/underscore/LICENSE create mode 100644 node_modules/pryjs/node_modules/underscore/README.md create mode 100644 node_modules/pryjs/node_modules/underscore/package.json create mode 100644 node_modules/pryjs/node_modules/underscore/underscore-min.js create mode 100644 node_modules/pryjs/node_modules/underscore/underscore-min.map create mode 100644 node_modules/pryjs/node_modules/underscore/underscore.js create mode 100644 node_modules/pryjs/package.json create mode 100644 node_modules/pryjs/readme.md create mode 100644 node_modules/pryjs/src/pry.coffee create mode 100644 node_modules/pryjs/src/pry/app.coffee create mode 100644 node_modules/pryjs/src/pry/command.coffee create mode 100644 node_modules/pryjs/src/pry/commands/help.coffee create mode 100644 node_modules/pryjs/src/pry/commands/index.coffee create mode 100644 node_modules/pryjs/src/pry/commands/kill.coffee create mode 100644 node_modules/pryjs/src/pry/commands/play.coffee create mode 100644 node_modules/pryjs/src/pry/commands/stop.coffee create mode 100644 node_modules/pryjs/src/pry/commands/version.coffee create mode 100644 node_modules/pryjs/src/pry/commands/whereami.coffee create mode 100644 node_modules/pryjs/src/pry/commands/wtf.coffee create mode 100644 node_modules/pryjs/src/pry/commands/xecute.coffee create mode 100644 node_modules/pryjs/src/pry/compiler.coffee create mode 100644 node_modules/pryjs/src/pry/file.coffee create mode 100644 node_modules/pryjs/src/pry/output/local_output.coffee create mode 100644 node_modules/pryjs/src/pry/range.coffee create mode 100644 node_modules/pryjs/src/pry/sync_highlight.coffee create mode 100644 node_modules/pryjs/src/pry/sync_prompt.coffee create mode 100644 node_modules/pryjs/tests/app_spec.coffee create mode 100644 node_modules/pryjs/tests/command_spec.coffee create mode 100644 node_modules/pryjs/tests/commands/help_spec.coffee create mode 100644 node_modules/pryjs/tests/commands/whereami_spec.coffee create mode 100644 node_modules/pryjs/tests/compiler_spec.coffee create mode 100644 node_modules/pryjs/tests/file_spec.coffee create mode 100644 node_modules/pryjs/tests/range_spec.coffee create mode 100644 node_modules/pryjs/tests/sync_highlight_spec.coffee diff --git a/node_modules/pryjs/.npmignore b/node_modules/pryjs/.npmignore new file mode 100644 index 0000000..f8bacc6 --- /dev/null +++ b/node_modules/pryjs/.npmignore @@ -0,0 +1,3 @@ +node_modules/* +npm-debug.log +*.DS_Store diff --git a/node_modules/pryjs/.travis.yml b/node_modules/pryjs/.travis.yml new file mode 100644 index 0000000..cb5cdd3 --- /dev/null +++ b/node_modules/pryjs/.travis.yml @@ -0,0 +1,14 @@ +language: node_js + +sudo: required + +services: + - docker + +node_js: + - 0.10.33 + - 4.1.1 + +cache: + directories: + - node_modules diff --git a/node_modules/pryjs/Gruntfile.coffee b/node_modules/pryjs/Gruntfile.coffee new file mode 100644 index 0000000..388e26c --- /dev/null +++ b/node_modules/pryjs/Gruntfile.coffee @@ -0,0 +1,19 @@ +module.exports = (grunt) -> + + grunt.initConfig + coffee: + compile: + expand: true + cwd: './src/' + src: ['**/*.coffee'] + dest: './lib/' + ext: '.js' + clean: + compiled: + src: ["lib/**/*"] + options: + "no-write": false + + grunt.loadNpmTasks 'grunt-contrib-coffee' + grunt.loadNpmTasks 'grunt-contrib-clean' + grunt.registerTask 'default', ['clean:compiled', 'coffee'] diff --git a/node_modules/pryjs/LICENSE b/node_modules/pryjs/LICENSE new file mode 100644 index 0000000..c7a7a76 --- /dev/null +++ b/node_modules/pryjs/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Blaine Schmeisser + +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. diff --git a/node_modules/pryjs/assets/demo.png b/node_modules/pryjs/assets/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..39f21cb825f0a48a172ac55f08a8dea64bd273df GIT binary patch literal 91469 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⪚3~?lN0&zPp3sn1Z_}12R zXR>DkyK17!R21vCqXW2ez#-!ZFm*~-=t=;*Er}wQJFxWBpEGYBSL-kv*Mwo$U|u97 zwRtcDTBy0V-<3xl38Zb0Ym*V!8=G~Uz;zvx7#eeOqm60D1G{wX+f=a3Tn7uAP z*TfvdBQwO%njx5lCGS$*&Oj$e!Tu#m@~ckeqWtL00v}u3MZ!9_W?SCm*JrALYPET+ zV+BBn`0|2ya_YsE*pl7sqR2u}o++-h(0o&tEpt{LmRsTtb)Wvq*KL8O-5qUI z+oFZ7#;_Z^l`Y>j`Jglwn7e=X2Tyu&UhKiZ(Rc6EYFw7zo)HEzCoVO751u^RXH%Sz z!+%l3j(ld2V`xfZF59Ltt8-*r5w@n>_3`w@i(3lDiLWcJA(o+ave?vgUhgX!F8|8i zYBwCsktC6w1{Zi z5StP}Nz;m^Wrw^fC6;7yxmL=(NaJ5{9N#d^`)Nj>;ufh6lM79$5# za1yQzgRzsNlb>c8m4&I!#SFt4&vjiJ`@T< zjR{r`f|c@*I|z=x`#$!#6CFdy?|;GcbfKI$x47`hIoz#~#$2c58C?LpMqT z&Yh=f+g_h>@i+(#yQoyeGF<06aZe2`+}!~`+MDau&hs8{g4F1;T$pxXpu#W=O(DeK z8!=sBuHfq$!yF9CG9TH`f5c-z+`FeL4 z&z*6JH(3ei!O(XfsN8U{j5(qwefM)-flKBf8*e-W1fY!eKijb9PrzR4On1>!4aS4R z{-Ism2AV)~W_*e3aq~Hj9-&>$`SP9-*2$^|M{o2F!VW3YAA{R9?+jE`u;}sH#dFtC&2O|UE z7>Nc>-zZHeM7n@P>qhE}UX&z9I{Klt-OQqwPQI7hd?xXws8+#b*!k!Pt4lw&3g{(X-TooFpr4dkCb^Ho1_P;&a0XRWNPm;tEW}GoY6YJ*%7>$)UKbIybWKFtCJ7Bo=X?C8Yq%>0bQ=<%pp;C>}dR>M6 zV60CK17kv9ecKswQe$p`a$4hMKucqzE``tBTVOsw8uNeFRVwL=cL?&;#Ze%(5vgGAT^h)i4_`4@-I4IBNuFh& zb1)2*fya&IZa@e>biHHWKeoXfHed`Z_AlUedVd@(SoW^ddF$I61Y{YRw!|H*V=GtZ zPi=cUU1y^DAQrvgoXKWR{7SIc-@5#~K`Qa(Cfpri1hXN7&`cOJ9 z?$6|8#@r}T(6;$KH|Lb(xFbBg73QEDB_+%2oMIIgwfW-jcrY4v&ljs4TqMsUw`H{z zouRM**ZrSYF$s|Od=)1F?4L{iy09c<>@7@e=IZZW{QIxA52&_P2t0nkKebT-)t+7o zK5>E2)gF%WVgCB-_h$f&d?*mi5dw&y^`D|wz%Oq~MS#F-xY$MiEh`8349F7!(c>o< zzsLJ`|LGT?gIAEPE7c+ppa1Ra%Nsg=z{Nx$;XD5=xb-qrt+>GG3s*aUl(qj1+^;SR zi)!;@F31+FZPKqHR4=%8W?7%ze8{`s5cs#aAfUIcpoI9by!GYzq-aUvKTb2+&b;$x z`+`ri-4#CdChWJrFPhStX|b*`Y0QIg{j2%7){cbLWR~^_1LCs;uD;S*1+)*{F@syQ zal<4$XD>tZ=Ot+Yf;7BxbeA5HdFONRIB#^gUTRr9Q3Eq(@)?uDv@6Z&Bh;&|Yez!4 zkTEgYL>36z{(bkhkdloUM|tC{#^nEL-J_Klf8{1iOvvI14mZ(pdw=g>v0I3~m&cKw zk9}C?eJ$(Aq6?wDvx+yAPi|3zJT4SIL~&#Fx|Noo%aVjCuG{+&39DtUv*bGyp{Z=w z35npd!bZ?tDzDnFt43@T&?TX{6G`Od+G}=3pSPO(1I+i$=c z1XW8Xw}s-ozV9=5D`P8(O-kMN+-YPIL6c85eRrZ7<6v$-!!SgK2L{zO%r*)dZ%(sT zp?!VgU8tC8iCp78rl{e=(29sg(4I; zN^E}?FA`V&W*ZLUQ)#n$WQ1xairArGp0B~~oxhy`C&H*-Eom~M&%MN$4i zhmvF5Oq3NW4Cj8`*fe3TlG4c8X<%gYBg(@OIMTaNuAC7e#PA7}v`VCa>?*m>tMf&} zD5B0rYV#BJRisUpk~$XUMR2lLlaZUmC9?XcN;T#3qs7UGS8;|?Y#p!5MoY?qEWla} z&MMVZSkjm0s;btTGZGan4^0lsraaz05gkY3I^MH>TWd0CDbP7wOs%?KQ(-&XR-!{{ z-^j@kHwE?-Eia~DY*OcMENkZ{Ag_EGsXX?*3>bLaHdO_`eCrHBav+DAIp@SBml-O;v*Vtk zS)ZL#bQ)kDg6hisYJ~&#Wsf(&G}-h-T~rxbXY$ZZJ3eUz%%7HHH$K*suPp3chreeH zPes}7dw&(wUCih#McT&ZM?XBKlrbmrh(PFQGWQLZvZJ|jZ*-p}Ad)ScahtHSIE9!* z@P0Qwd-t;}j$_Wvg~3<<55LQ!zZ@?wFC(ZAtnJiu8s+|~Ti$aPE?<5+-d8@J)PWm% z@(lx7<3HAK@GgFL8nzVXOnD}jEr(oxaNX>4%{z<1jPrd9Wf|5HDjGKjW|ZI0fLJxf zVqg+;=<2x1IInJO4!1l>D`cFDPVnlW^UM?GWo_6mT});qTF(@urC)E5V9hClJvVwA zZVqA3Zb=|-i|e-U(k2VWs3?u|nIcO3d%#Q|{^RNvSHjXkZo|b-2)w7d@_g?r_#Bx1 z%8y<0z6Zzpi-PIZTgTEtm!nnlt`&0??YLo`V7Cjj*f(nt`QYPqwrb|QoUfKsYbH@D zBPR}vB)&A|2jh6t6|@<=WQcG2pg7&0`|%huPG*|h@@M$|GJ=cKNxrzq^V zOZ&~RVj7(j9F@Y#ZP_eSYA!3l?Oic)CdD2E$5kkzYLEWp0+=pg{q{|BpR;f&LiL-&0ry;(LIxw`xxE`Oc6tv`SOg@e;L4i9k#s7@h29aem# zuG%26V{VOJj{Z{dW0M}SYg5hjQE$H><3gkO{WfVIKbGKsjtanX_b7m}VyV?ovUV}- zdc!r{jL3bm0jDH1WW-G~E8kSpQy)g9TGgbTky%xI^rL{QEwv{HF$LLqJpY2_No=2J zjlC29wSxczsxIAH_Or;=_v#{cHNG!nEdoWSYcd?CbC<0;d+?1w8$W+ui&aG5{r++f z6{G)8;8#`w@XaJZx}r-I!5a3tKPQsMvDrK_qPe=BUJbg1Ykxu^?)@3uj~Atns+zK3 zII(-Qhm9}L2&!74m4UlsR#>UkVZsOx^_Qon$KSdt5uulkLh-sfD3GTZzsGqDDVdn_ zD9o$H0Su3>_~OK&uu{Bs17l49&ZSHhu88w%*G@PJ;6}=J2KBx6ys|L??w)*6_o(Kp zW<6yAuB@|ybq2%h5A%duSJ@Y`c^@**$cXv*$2C=!CQRdf08HCIJHzic&>);J7P1S` zHRlmtv54k;%NEtA^mace;DP_TQTZ4k5pT8n&DLOI6~APpJUD_se)K;Eqn!W*;jI?# za@JG{G*1Y~)c2PmY5xHF9z)vHC@4XK=Dm?TdK&_jklR+F|Ucl?Ded2aSTU zxfcaRtIaARJ< zgQE-neE?7bTx~lrp`O171q(1C^FZFle_h!M3^4Y^sgM|d_u3l>#sW(l{?(HO;QxzX zE{1|k@aEOB1p+mLUoo{>HrRw&ZZa3ZPk%kzfR4j}esH<@2H%f_2KAi@Q`axHqBVlt z*?oqnycR!Ym%mN^WeR=Znz2F&LH`Hqq6;qKx}j{k7jvvVAGLWsQrAcxKM&oya)DocSNkpCLoQzqyuTW@;sN~r$S4r=^&I|R zZ8SC%+d2rsA1_}OU)aa0soH60WwCrNy?&a5(DOFf=^cMU|durgH z4VYk~nAe5L8HF;{-Zjd9O0BBSV~Wq&1eC?l$MFAap(TToF2UH}E}3sSJ63-|uCPz+ z3F4s-xI8Tq|Gmh$vn&*nKHNMhrtJDG)%e(wuM)j+{Eta%?;*xIfL~7>QpQv+%qQ47 zj@nG4KJWEUaDpAav$Vg@-dxWQAZ<_yg?wep+7TXl-fCe9&)yJ5OSkpx&eztml4mlS zlA%NANNCj==n$bF2bx=SM)}EGfAPgQLTFM8`)I=>y~TjISl%x)nS{Wj_w!1cCFKs2 zGL00>uIq1i8-WNW8P1ltzT~#FZ1>;&u-w3zZeH7dd6t`6LSPCTzHXHi^X#@-3}cOC zUO%pCD=vvo*iRV7W^<|c4>gge>p@o1Y+?4&EK&~QPeoAC- z1Ny;>h%q=hE}^b|rbo%~bX}qy?JX4Zt+I)x@EyY=r9FrzZ>=`)eRzhIw6X)};RGG4 zK-!#aHd4<~7M9$nZ_e_oao78Zs617KoD*^~QWEewhF1OM;#YK(KE^-fsu0_NEK@vq z<qD_9=Cw_B|&$_gLHiwP9*ZcwUnjnFwn-d~z$KRa-rs7b6hGMXYbJG#PYc`qi)_^#}CbQBg28@_@<)HiR0ji z?lL_o^dxvd+=$Wi|0C?J!>VexH(Y~8kdQ9v?rxE8>F$n2cS=Zybc1w*G%UKiySuv^ z&QibqslT)LIsb5RalvHHcfB#j^W0<1xjjrMYk>e>1J}39hHLVi;l-tcFa%J%v#MXT zR1!w1s>rN0hyVa&R+>}_BXEQcP!G^qLkI!ic9{wylE5gwp!|wj3Sk)}4Vf1b~ zoHA)*yurr@@1cb00OiuyWWb^H2Dn|LBFH~y`03(VNN z-HT-H`xh#*VIh+$XD=FTB)Sp^ zzPyb=t<{$Vvz{pc&#{<&Ze!^)A*$PW1F*s}lv5z3wHQ#9lC*&=au<{_Wa>?6*pkTs zdY${fsrVijY$F@|Mm0bdwtwsr`OwdaVD06hx7%aPev}rg7#(!#-DbosElH=JEK3>X z;88(FGKHdO^919zoG}C8QU?+w-gO=G$f%KBJ;NG|B)F4wCa!tBMccOk0~KLPMJ=+W zhWUe0UlSqhKeM1I;St8Rc^vEgCgY$`6J zU4DW0GC)0*Pi>)m`<+0-ltWZji8h$2DrF36(;_fK;Qe6=03f$KnRwAe|D~?Cxrfuj zKJ=(5u{=4EK_+C4cTwA6-1JtWA_x1JZI6Z+5cs-YW86)5lca{)Z_(oa@KF(6Be$e)}^OeD`W$dUYz<-M)Tm&Jc5YYz$Bz zp?^7FcgMb0!Mp6akupYT`P}uXq2|Dm`C!3(WX}Dx2>bS&68&}5!-af4pto9XZrGz_ zvWJp^M^eT0X{P=*KTt*ycEr%}3{!9`V$STf1cXENJxD4Du|AV@=(_AII1-9rvEUA| z2_c%1&ymOFl@WT>s^uiToOOax5^q-2))$*&d&wM$nnCqDf(&`}a)@O9(>{1+93lCj z;l1npg!JRJ9_gF&{vR1DwVPBQjDqNK_NOqMm;KY-$P_4u*-qYP`y>HR%};lgOQZ{i za8pQkHffT}&KJ#!43_$`xP*MLdUAQq10@xLrSDQ%b~0(_m2A0O53LCZc%COiW^O0U zxy>9XRpsw%Hg}KFE@p+9zq#p*YZ1IURAQfDF0dVVR{~JWP0@7;JxN6)$4@lp4ftNl zF8k+JjId&Eg~j!~%BsP=lBP*fovc;_pj5D@m^-40%(riAP(V3625RvjFyDDy9N(qR znPsvJyC2@skqZcj6a3;_X6p1K%^gaKNd+u|fBYxWZGw=LR$GrLVj%!v zTin4p$cKE6<(_33n~U*ms^;-(Vn2O1+q7CPgFgB@(x5|uwxSQkpfSXFj7(GQak_xl zC@za{+=7x-v9h>y6|L-SB+$UH?&0QUaKy@oXoqD@$?l*O{~^whbf~icDVqC z5*UQ-4%CU1?URZ^k9q)eOk7mug_p>A04Hu`3Y}yfrMJUHM5bPX^;okMvI_6!2iML7 zPSsrk(anF~%8OU(&{kKgED5WqhcvSS&OV>!L#1ihEYqs-c&6z@#82NKK#mzMfRf}P zR~wNGeZ)$-#VMtdg*Xb&{0P;&uX7E8NE)yBKIJ&HChV1m2ozUICd?VQYH8jMu%M~V zw>w^nBVtl);oj}-cA%_sToef3H*J$hBVIZ;y7qoH7Jde>axD8!#4wQQ_14rcxP z*62*2cMKhISVn9O^^>D_hz;Ewceg65be<&m$`4nhwyE_ChT1Jtq}d8aXgv6g|939! zK^nzSH2x7o8l}8B${smzF0q-Dc}jTN;(E|@7~WL?6>Y<|*=i+Nx&TvRdkRq1N~T$5 zyB^Sk8OQ(^v>6!e%Z~|1FEF6e;sU-nT)?3r;$%8U**`mMMG}{MXB_}MJGkF|{$yR( z7=D6GS)G+jEL5=pq)-@IHcp`UGvkO~0JHPUZC8ZpFad{@w1rC^oaK^z4)7k*#MgsI=6j@o=Lz1Jn;s7#6FMbXF|nwM*jc(pRR3#f=r;<~s;rgy~|BwP#>WKv(|Q4o7GfI&(%e4m>`qY;#`7Vq$?V8RT2 zHh)%|#_Aukj@Zka%1<~VjpaVQY1cV-b2oBAXkV^m)#6g<;z*W|#5HFAJt%B^pU>Z1 zkEC2(!5hZT#6%_K6VsLzzN~(zj!x2`3Xh;0FWKA2Q`5r9KDH5LXO)p!Nz@f|;Vh7H z44E)94x;C`{k{9NguF2FnJ-#^f?sE3#NDa8iaGHj^{l0^;W@YNP2Fo0oC?(+EjR?n zA}+SK*HS-3gb?J3xyhPIDygqIl~%=zKs5Hw_`N1T5!H&tt1vi=V#>dz92V_#iWy}CvbR<+HvBxh-@=IFJLWT*VZ{YuoQjHn=m)G_sp~2i+Zald?kY9r16xGR55n9Ns5?QoMivt=LB78*et|7GOKLT9Ka9v z_0QA>RAn0axjl|VSQ1(O@5C(X>x*q#NvXE#Owqp|zyYKJEQX<@{F$Ok7=V75Yjd1= z_~-9hkb)A)!vL8-WsDYi5>UQRam_RLr){+IKQ0PCy~^@soiv6Q9}y|>s_!gEbDZc- zgi2bS2z$(!O4c{E&5M>N-*l%!gb(cZ3;^AkgyH{N8hAi={gr)S)%Hw5ZuI&ChzKzM zNb_ERk&wO&gQ&6V_reh^N8o-fi^l+;cMOl{OYJkyM%eb}qrImSgtDTmCGI6%7KdGF zUl*DT^f}hLOpw}f7gvr$;$irT_V<-vzl4XVsi~nImz8t`oR&6849eZGo8GWe<0&aH zvG;xXD+xu2fB2yjXlOCBPP3-5+uYb87q2=Iv z_L&0Gnv|=CAo3J3y@AgkQSb||e8JB?t%G=> zIqkDJuiHBJ;CONX9ht7m)M${Src!+F3i@BqmGk0d+>jNkI+x8S>WPIhC?lSmMSolm zwvX65oeXcBIWkXzw+_V`MA^Z+-X;E(EeW(_L$Hp@8=A@n>qeeyiNoqCvIk0tMp4wX zud#TCzyIUoY}p`Pk&Q!wRd;9Zt^rU_dc0n8)y(Q3fF$^Pb;u%Hm9|P|nkhZqV&1>R zmX5g2G7RkcGs^t@8T{on)`G872`$gH#YHDTU6R;PxZV9h$`w|hwboJ^G!;rEOi$u zqr{~i*#tD4uO81m^J*8Cgl_^-)W*hGB&V(w_eaUUcFNPkw;)^CRDE@m%Kd8 zFnUXX72m6iBlxiY9?%vYza%s;-m-(hZany;?S0O6AM~f3#@n@ghN)HGICTBLlz6XR zzLrUd>y2;TihnNq&!2;#tgOhbWh4<^|22E$e%Q$5GrPurS++ZfAQ{D_NCx@OTX{zW z+7DnHI1=CdaRoY;AC@()*~FiF5*;{n%Sx(uN*KwXGFZqD6FIXRlljljS%UA!ex#k7 z+56`QoC&hAuXoCXB>()O+}9RgrrJ!!&VIcPx$iY2`hVyfpabm#-71q54Mz;>x^O-< zZ+v3$0Xpd&C4BP0SMaagRkYkuiyN3JS>T>-lyh`UDper&q{5kh(kU%f2Cbv2FJXsmw)KW4! z=Aj7^ed-N{9&`5i*xKlIw1r$Z-;XIV5j+Rv+>Cf(v(jhA34blvvE5j?wd((>5$t-A z@HoFzQ6DfTe5>AHafXx?UD%NV%iAxb;`Buz`$!@J9Jz*5obg)2P@j?BYva49-~^U$ zv-{>{fo7D*-iLp+k2xXY<3&RMyL;EBqUIZ+rBfc3(lli;J0_KPOlVAz>*#_{!NY`b zrfJo1Q3YIylJ?@;FV{HwfwyzpTOKINE_OKj?sO9TQcHe*UH|&uB$K)KC$M1yY%Yct zTYGDm8rXbP9&RQ#AMw*k@WcoEMYKpJvZ26Ut$KqWh==|3!z+c){`SMAl5`l4r-`XN zOa-0tvQrad-?t5{#2UmLsNm&L3OBZsAt3yB)udV%91DgM1ru07$NXG;q1*`M@xq6$ zUpm87y}n~FZXNCkrEv1JwEM<`c3Exk;oy#HvOPVC1qE|^JqN6r2a_|wd@v&_v2MYvf|`7|4qm9vBU`7EGejf{ONm4N)vNd zl5bDgqjhDKBw#M4f}8uoOui7t!_lV~=e?^`IxUH)2BH{ey0I$dq1zJi$P||EUj1Cm zt(zW6ie)l7XO6}2EOBCJQC7y9veI^@ z%HQ^);^y6O#o&P6>*W`LxB&7K<@tfsrpDKCHi*7Etq6)oEbGe2Z+lh`k8T_<~)qj93Q4|J@!K8I;Z z3G6*s&-KvgIhr^VS@zR(8)sLi`frQS1JtvsDHZGs<;aFL2tc@k zg#9My{lf3Ojq7ikTIE?My67i<;0nUJYvU{({TXcy%FGQuNDk!NLt?{I&To?XkjOVi z-`>fIpPR7$P;*d%Ct>XK;jhB5j!-_-Rg9}0&-##BAehg*x5u=uXe;1vzz;q|DCH@q z?jq{^!Z69f>hZP$pAa66ahOGdf&{821fhb%>W?7R0>lb^oG8$a9i_b`p90t2F%7MN z$oR!O7zeuw0vUqb*URGhp)O^6k**jeK-6sU-XIxR25gwwcub%}J$T4BusByQvW6n0I34_s|FxN*tQ^Sc6L#N$q@NC&9mn-3*rEB{L;qoBI!hQAh=A9-bxU5r zx0k8Q4QjN3kqJ(`*D;jW*?n53`f>HXQejWQjr-7qeo=(vj{Bj;d@m*z)ya&W8~dbZ#}Soel>cXuhwxutmcqT$wB5hZOrZCrl|GEeHq z!J5NO6x6zfQQ@JU%5zhisb(rprH{5ykD0czh;muT(=|AET;;+n-?_58DQNLkD4o%$#zG!JzWo0 zF>}3;1fv>6j zbxv8uv~igHPr!rpyasP<2=e;sBI*%9pHNEAPHU%PtoG*)iI&6cgEw5ZfBMLG!b zoxIq3hUFG-2XTTU9}H9j&|?AuGq&?uJ`g)VvEiOOz;LE8-F9tnm_>}I^rwGYmw`;h zrju%;TCZN#sHIxTm`Ndi>xB3`X20Bw$gQ+=r}exui6ec~m?r<^D*!U!=?34qzy#t; zIvOo*`tgiAh{HbJC|1()?dgL5OgF{QsBKE3f*Q@B1Po#t>UcsTC+&5fyA~;gKX%Rs zpDA_*gre0ll?S8lBOJxWR=D=|`?uzaPF7Fk36xMnDY>X6MB9l;vW`-(b@BzT%E!` zZTXVZNP5s4Ap;T;02`ls~RMA)azkYieAJ0O=ab0|kv1f3NO`|@6y!c_kzR6bNX z>B(xsk%R9mD>r}SM?9FUjYX{dfk3&Zqwjo5krVFdDF{w?f~1Dzxrq7BMT73Qtd?

Q?~seDxF=*3mE9gL3_cRL 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

jl`4eq`>>z{nbJPMOU z->>vxI767bY3vRl$xd-kHLOOUxJ=~e( z^4>fB@{BWh=H2$6h|Q37U*#np&y~7U$z`j-ABaSL*-;pg9@y7&0&np4RxwMGzjn}Q zei}|)RY@QF{((aZp@E81DK^pQ?nP_NhO(V$O@ z=4O4#*mE_i9==AYg#D<x$$5CT1cW&cdvgFUPJoHV4 zzXy$_Uh+7c(E@r+fbFG}1_qnBu+Yzm?nO`B(!Y|!)R_D@0L(*&=3B6EoSI{?D2@AC z`l>5?5%22CaFLv8v8uEAj)7Tvm358deh9^q(}*Vf;jNO2&-~RzU2t!b*-DV!&;Lt# z!4OAZU6o{}ckh(3V^Rdbu4d>mnH|=>!=-Atr~>ycQ5#=@$Mc-+-m9rVRtHLQz=n!5v}~W~=Fpe4%{(g2 zrjS3X^Xmu1ga2<)eIZraz*?uOxQB7ekb8*a*+N021@BjqQ+(Av4;ii5^0rx0aW~2E=y@Shh&%*J0ZpB&i+jp|<^SZ&q18Nm}s~@yV@1fR~{&9|} zwGxOs3T4MxOTG@lemhR-{j2-i!ks}|20;{*W2*I4DSkAj)F&jtj@)eSM&l=Q;3Yr* z)497uBIDX?3nf29rPnWi?Kc)AE55A&al(8zL38w~4L@Iz!5}FWy!?LB-{8A$Ax{g? zt@`>WO)e1c;s6%B`;g`DOJDoNwyiDUjV=IB2JR)1vGFbosx2AN zF{*RZaKy{w+G(A&T$rM~ik|hpG$s>@!MZ4;ipnH$B6OlJ=sG_zK=ga(5_kIV)<<{8 z_7eC&Nh%}oVJrlvsUqT08slm z2JvqTwN8C~1+G&08)F~KGvriRPqEO%B@S`pruZM$(;h27NP8NxXdqo9_{b1zMWcZ2Y4{I;Qj}p1*vw^XiSHO)#l90KWR_48rFh6&!&p5CAM5#Cvl0`BUGZri8>w_33 zbs2`f@p=KmJ9_KUKq^Wt1Dl0Vp?Lp_U{rHxip^sCm!5qI)KIm@V zu&bqnqA#C9_uYv&w=Iug+H4g^o#LE4mc7(f1Tg#N3&7xl5za*CwpC=0rQdbS+*^Bj z6$QlK$9sLq`-R`<{lf1taaT|G1^jKQq81Pja4`8UluD#M7OOON#Z1&o@pJ6wvIRtB zwZ!zdt9!emz!UDPuFvN7BlC%J!-UTJR-(Phe$_*@_vdgP`AWG4klpVP&qQ`{`VkRhu98>tJv+x>4|F~NWYz8`NdwS z$ze`Yp?&#TDEWXSODf^?COVqy(KLb&FpP|xVQtprb4jq}ZZV*scGJH1eUz|qW$7C( zd49!T(NQi`ZTrfP4h#1NgaA-~ztAuz@O3@Zku8Swl4pg8Ivit~ydT{a1{SCgD;>1B zk|;bqz!{mvJzNSVxSrARf*qcYM#{B;_WIk|gTq^Frm3(KkHXzGmG8Vf0|YQd8+k;( zQZrMB48E&mk|ILAmkWI4)~f%OLyzDk(+v*X%50p4V4Mr`B2%UF*C0s^@OX;rUgC9* ze7t|`1#_62XLPdmEy=j5NHZHYFYUQuGB~`|JKoAAVK@>6QmtzbZ)0XCOyd*pW(HSY zT^&0DAL?e&)iJvGSbsG2eTfji0k)uR^|nfr&Yj(+x_L?^o>hD=ftj(Hd*-Pwf!oyn zwz&KwikUSemDaHGf=m#p_m0^8^PSl??|8eK84Y-KG`1#tT7pY%(c!kuZ0@Z(Oc;@L zx6uJr_9q~X%*Sg{%UeX0d*$~Bvl~!*>n!gI3I_@EbqD%%C#?BOEw}+^HdzJ<3GMvX zm1Y0h35;wzU|yr=VNDB0M&i{mlI2jce{FWP$W}gYYdTeNmv|0Jk##QQ1||8K(^0l`6y>pL z3=K;LJ1T$G04!VlTLS=+|3NhXPdmz$hI=y{(aj|isvn2HMl8lvhs9P&QjVV}ycKnV z28$FX*xkDa6_&{_AG(o~DX-L!k@#K(;F;$$*H@+YOMZsS3==11=UHrg^^jmBCh%`L zfXk0^fDPu59Cz9xUL@qSYJ5#pl&#LbYk0Al>|{<#Znf*KFX<0E{x_QZWNH83T)wS<6}S3YwU4x|7(N^0RpHn3t6E?M`=x&~^+RW3;DxwHkUKiJT~*gcZep{( z2J{bw{qRZK;2(t@U|k9l*y#%`5HyUgR6XiP#b#xKBC~RM2M3f>6HN+oao7)cL8ulw0N z#Hve$s>1IG1R?i_JgEL?uj5g@hJto#+$4V+oRj zO?_jh4zg0q8W?8eVW5AVs#q_*LtZb~V#bxfk)D(3 zW{P1X#&y^4{Tf(zM_l1Vw0fQCO&zP!fz;PF0f;0^SV~I@+ox1I5|3$~=%ESSrefK5mSsFSMh+VjkEc({k7kiTou;`UU{$3^b{gY4 zRg76zDcS#1*;__c)rDQdfPi#LNlPOoNJ&XcBPrd@p}Uc8q#Nl5=?>}cK6KXsY3c8v z-uI2q^S$F8FFzOzhn&4xd+oKZHRrtMv<-G&dB5=U?AeyHQ%Bdd2TU^?LA6ld4CvjN z67;YkzQ-R|jDsEHEcTK>@R3JcCpuq@bx%@NB+O&qC_sf_E7F!&<@I1^>=A>;rM`5a z*N>nN?^M>#Pd~R0fP6oI)vWh+ZnuR@4>f1AfCG{*_g1HAQkD*r8rLg6s1NEYQ~c?0 zU?lvpN_HC7Nt9(4d%Zed@KjVhscqzG)Jbej?LFQ$sVgAE2$fcLw$1(@W&OJSA|IbOJRB z^%E;CHg{_Mi~glGjX46YMWbiOu}dHD?g(^ua_?a{B!&VZG&=gGuTC~}UvpM{tZ|vB zfWAzLGmz4woXBSZ;IUo+QV6%M^7V$@^>d0D3b}8pMVAL$qZ-~q(}_8qHbZN0SAwBq z${t^*zKXYdmN-}vi}!NBap$}xd51f^?MYUl83g>B7BW#a5fq)fd`Wgub^4QXwwN*?cr$GNM$fNljg$rHoxTbkax+gHL-O6c4}g=NK- zpA@8A&Nq7(Q?J#D*zAvGxG&)p>sYZ@rloe z$V&NN$*IE}^q1}~(O^GzR$p1$%KDbl z0u9dyL-m5c9Y`N6kIcU&HH^j6IsJ<7{G1^JUioFbc#B0V3CZt6 zY2`NK%6oFhFD>w%_g++~;*xj7BhBbxm_O}++ciBo%wU^x<0!@UAs_)|)MHMW&ei$K ze9Zzs?;-wRAFnGhFicJP&h1{-(VaiT=7s6#Z!=bHb9meqNQZR1p}PwQES5%ta)W7V z$tvZ&^swzuK~4J48}YRVsB$n*7+cp#-?y7U)$ONoNWmw3J&B(0r}~3L=Y!;8p$_`REVoO(UU=1a%njotBLUbex9I_k&pLJfwQn9K}Fp z%3I);!UY#cZ+^B@gB`%Y3XAaP(Ph0_8TL|(Z{OY3DK9ovK(W~)Ku@M-0g`zsVC5Lr zTYgTB#zb?WhPImFd2zt>&u@{mrF!8%J1lJ|dubG6Xl9{VJ|NPHwKkk`7tl&vjJnC+B{<22@fBmmh4Bt3JUgDFb31tO;!haox zA^j>~wUE_Y%yC8q6_WlBu*c*8U1x!q;Gj-}xD^dO=HRk?@hmpW_Cv~L{N<}{v>3LF z74+tuG79Q$_Zy35cZ;JI-QCkyycvL2b+C_WV~85f9NQZkGa-?_MtIT~$!)(|Dc4w~ z_Juy%_$uZ#NkQG!f*5M8LQ$!5ZuvKU#ENgFxl?s4<)^Xu2p8?yka@C2P+GfC`&bfw zk6=PSbRF-{TGX;@Ac65wZ#xh3MQ>zK;{6QBxl!&hncqo>ZmV(Z&u%X|mEsreX z_Bt(KJ8{ho3$8DU_hF$xo^F3zycG&DKi`&4Ys{wSN&y-Up6DCEw4B1}szX^U2bQQ& zXm(ny_XuyUU*cJ&IN88j%8dTHoeT3YN3NdbwPOdwi{B+@E+l01SI3R93)s z({l{JwkD|sD_7H67a;y$li zyRw)AhyP3?ZT_|bujDsPZ%XL5e<5nRG#n9R4UOiP4 zEv7$L|8PAqcWJ3;aLB_DD1JMHZ@uQ%;~_eI3DpiRpNtTkw?-|bR>uNF}cKc3;|zH1GcuV zw^&3YQY>Bxsnr4ql}`P4h&4pl zAh~odgT%SbW@wf+2%ArN{@dV;gEK@fzuvOxWzA?rgPac!Vf@35EadrsfqiH0cCp%xLK{Ju zDBPNN?q%W0C#9D2SK37uZ20OA^fd)2VSgUp%3DYrC<|A%&he=+(n$;sbkdPPNpZND zfnzru-#mAxt@1PFVDl}k{mp|`#BttRAG$&ANrhUh~uMg_Cs0e0UV!7Dy9|j|0nn9o94Uag)%jVi)MlP4xZp^5PhkMA+X8sGM}#SSK2EDia&STZYkBi&VW!7857F**BPaVfA$KQ=&uFlp6wu+iqSTsn8< zwTk7J3(~-4G-*+w&}EMNX6T^4)71qSd`nLAkVFZg-hwxTgI=vZn}WOc-La;e$=Swc zIoK+EIfbmKW~K&2UZgwbprW2&u;wb2D|KKhm0PN*vA-}&^oYAhL1w}ECv!k2q$`G`WqO^Uk@h7HKB^P&$KAvJx6uc;&? zWR#JaY&0d-Y-*%(k+<;5j{ot(ehaz&Hpta=*VE6`Lq&LsjaUgg4)I z)zMvVdWqtIR8^4FLL8d1zFBPrkEM$wo}LNG+>=QSA1lVFUhbQgtGH}o2zAikUfeIR zRaJI7ct!5R1T+w6p2jxpQ&GmNg+BRQq0kXes+2b0$Rh>pm>nU49`ocRwQh|?a2MPT z>&7pv?;ziOLuHJ9`bK1N(LrJ;ZOi$Gg%)5eq~Ry;;-NFn(K~yIu{e;yS?$}k&nIhE zdp=p0<{fd7?P2xITho-2^!0Cmb27cb!EX&RLK{{E_1NK1j2fByKx-7j?7vYeG%Hj{ z$6+gcp1rc=Qw&UiywsGiR#k<(O84o4gbB?XbE~PJU*62;HjHSqKuW%#IpqZz7T!lG z8~8hXakFQtCWFZUG;@y;7wi2T{9HyB@oi?fPZ=BsOr)d?sLT?d?=mdHiQ4H+1w$RrUZ4Tk-)Xp2Cn}HWsbeq2s)1 zv-Ll%wBBN(+H_DBptI9T{c>6m~EYT$hgcSKVUj_O&< zpTA*Ps!qRCb@X)h>&c}y9VWh^Rwf!DUz)8di$LMoaaMFBtlO@SoYdrwG(pM&xS37PP5)18ueL5au8)`6gv)m~>kV!`4XBC< z!MqBXge%bZi!%ClP=*eEe?LNuc_*lq**mC?On>D0xXqpCL)L!8Zn=&zL6U;<94AkU zlVDTe){L5mLZ9?%KvN2?2+xB5%jxqi>mT~MiQlXjZz{B;d6wHMGEz35GXzP`pIU%{ zveaXT?Z!oJ>V;EvuR=AMWcu)`Ll)Ohr|)Op_3$yZEvMh9v@IN-!7q{D!1lNV8vnLC zPl$t-jMiC%ZZl;>wIr5Ns-EzqoAQ-T3=me<$&XB|ud%Av$S8KD2LSa@=^qVnG zH0FX0P;*8SO3vuAsT`_T1Bjx2tQ`vtbnJ$%-(OU~ZjQWjfM!^^;>E)fGAcu@nf&C2 zlsHRf>zhYCZdt--Y4p5fQhaH>2MPQO1y&B|fr(HGf5v=e70v3Febl6tPT`uerOkt| zxLy;K%NI9(kYfBUr@cF)m+P{>2Y)xv)xPl6=ea(g9d6sUIna{1G0|o21@NW7j?_?%?&r{>xYvZ_-|45$(U`F6ArMARwcBmPe{%M;j&L+ zW;E64^;-yn7QTsn?X9RB9FF8P&*;0NJ#^kqoZB0-18r$jpDqhu8W}L~^-jkbR{i1B z+d9aZU}-1}`J=Qg`wZV{XFF`(>yCyKk-a+NL&MJHx0VyWw4C- zY)ZXVv^IAck-i%B!tS-m?%jkRYCN>XkY2)=l5tK>x<%u`kxkrVA(x$a?uAM15$~4} z9qWy<4=#!&gWG{65f><=T*Gn?IBnxv8m;t(Jtl@~&OyG^0=jWCK;=>n>i9!refID( z>`x4p6Uz!sc(9AG8l~8|2RtJXt8R;_b^8aAE%)wxw%wQU&T1vXzOQB+uvw=%&uc$b z035#u_|?w^WwD!>5*hs7=61!}bWMi|(YTEQdIEzqb*D$tB*66CT2BHAFxW8y?eYX$ zEGH`2H-bvbwXwNLAf0CHhk^V<_XpFoB&xxmwhRw!=M~;?HB=hS<&4kR7E) z+(a%3g>qKKVNVs?VRM9Ceq3l*zrNR%4LMUw4oP%kxQfcWQOQ9mpfOOqWR*9IVe zgTW-LvQmnLI|1mAbG9$2W*d^EoD29OX71UK@$kxddCO7JUYYmdHl$UvRADS$kOUZw zF{n;o(b{n$FP4{t&{Y5=qh4j_Dtq9%OAyr3F<;x?&kSnnJV1{Of9p$QKca>-8MHrq zRa(iUQyh0hzxa*zb)e`^UjR244@-B3sRsGJC-)G!)-^wvM{BK_+yM=1k>z=Yz#P|u zP0mef+Xa@XJQiZ)E$q-K{@D=H+Hj#4xOK!e%j>D08C6D!4(_dpQW?GRT;5saun@JJ z8S!JMk!BU443L}uiI~Z9V)sf&MsF$tF)RKj+7e=iuu!z{hbdXR7UwVv_T^GWiJ~EQ z>q6`cn{J{+VM>#)5Uwd@X|o}{Z@4{|jw%Vs4iaV~x0AZ)Rl8haFj<`0jbmhF1*l_)*(1i7(@jrMUaJ*a zz>LnMlF%9E`3)##%ksJAvrGms?TJM9`_e(<~{}G@eQj8Yw$l9SRZ*17}*3j)Wpp!9uzkRpSE^E zdUrbmS|iauzi$JeGR*%zXmfy<>=+D|Mtw^&#e08c1lmDWYD>T;w!B-Ib9|q>G7p5VWMYT<(v13nJIXU_BvcV&mzzu&YrrHD<;N86;+FyOry6 zVyVI`YUvYKO}>*cb;poKiyb0c_u`g_in%363r`z|#KPr`C}swe8?G_}M%&Ga67V=^ z00>=>gnFvWkPTk^Sw-7eq4?lYP#j9~6dA4gh2Pwv*;mj%RM!Fv+KZiiN~#ByZHDj8it} z_EUI4s&))ryU!39s6vV4q);?@F$t;PuRJZ24;CtIn})C-B=?ReK(T z$?fux7b@un1fn(695eT~QGlI)eJ+z{TP&hk;j@VRZ8KU<^i8}TAQD#sYMdG!3m}im z)^L?GL})&5HZaer*#QQ=ZNf7f(5q)?>uDW3AugN91Q=2*3uWhjy0pUxGuRjKSa;R~ z`zT)T{H8~lq~JpN+wPcpyK?h*mTcFb->(;Wl(V^^r>;w!DG*Y3Y7GWhzc~QDC|*pg z6`NF5zFa&f^3eW?cwCh4j#`jad+bT9YizK*4DSwmdF$K4ZS_xZk|bOm%gQvxh>J^I z%g@117NcPF@}LT|iHyj?%t^XSsc&5Ci25K*I5-4&gj^4SAtA7piWnn{St2*q!fEuj z>Ua4+OM{a!v}D%g$9H3jmx}A=W9CCcMc9r0p>m7?hnI)462%F3&&6zH65Ax~pl#M{00?aF6%e%otYdnSFiWD3+&Ynh;QW z657SJFa&Bx8Bf6}u-`2QB=iF2E!20OKezQ*?s@k~fy2xmX6g9Wl zZl6K<#0iyZoGyebS00Z#*|O#TtKSP{hm3BsY?5j;E<0^RVW#sHz3^bUm#MNFGnlZb z_H=1|yYun$=u&EHc5~HKLG}`{+6$0{@L+f7uvV!+O z8p_E!rmu|p@E0KA{tM)-HFdL;VpkXj?JR)YBGCDCi_g`c7#TYNdKAzE^P0Jm;v_}9 z6qfYKbJ2UReFC$v`Mf5c821^*dQQcO?`LEPzfN28HXhBm)GD%n0H`t2p?iC3uG&Sd zR*8n_REXv4FE;BKw0r07pjs}heMExYZ|_FtT$I)HBm^C=#`xkC@mmig4{7>>Q8Qv- zq3KECpcj;!#{PB7WD19-+|2B=-eB?1ZTg9MGZ9{UNnm(3Uz&7#zNCB6(shokg<3 zu@!BweZMbbwA`u~TYp(cLVL_^*%^d$ed3G?+mIxqe?-SJf*tr9p5e3tf!HI?{JORd zK3z_Ntp%Gzi6T)aXI?Y25oc49=HPK!>(Umi-TN&Y(3D^!iu5{CiD9E%z7wB7t+36J zlz`wgXA?IqS*5ZBl~o};^E2BlNLC8LxtO z85u;l43>|nD>9()dlOV<`3Vo>gA7@8w#cI6%{`N4UEX18GlHq?@X3a0^Z$gp_OZ{` zFesU*8Vf@T?FH5VFxDaYF&Gy=!qlmFJ!bn9Ov9(o+31%1B<$a`7`E+Um!k@46BBEc$*cVbIUNra*8i3`TuZ2MdGW)_j5x=9-gzPg)>`Df+h2eW z)3LMhC&8Jf4i>wynwpZ*+!E1&K%`~8rI^MDduAA|K9@x23U3k*L5^tT1^3+;9nsn% zMb<(TFqVUVGch+}N>(!cvitu4))brcA0VO9I&24g(C=d1mO#k~!jlnsSbITnxP^fj zftv~P4v#C8P&R!z4~yIF+bx{7P+}WJFz$Z-_0X`4w){K`BpDoZ(f{0FF%%)K2T8hc zfs8!kB1~U?q>(Z9fOwIJ=I|I!^-uKx_OoJ#+)rHp;`9fzIqm<0*_gLg*z0tnpLSxT zBG^mZ$AJ{aKj`-1xr`vJ6BL|mHp!(VmW&Sd%5%%dT_qgQ?GVVYU}lx==$ZgT)o^ko(b5NsW65EYWen3_#q?#d zuf)JwAA-rQ(iL(`^;^D1`W8NGaV+2ecAGXHXo3+de9+mek?|4LU<5{aF z1p|H8QB*{FF2?s)sI=+oQH?A~1rGO@hA`*{mgPJ((G96sIN*qBSv!cK(1XJHa*tL9 zvtf99#|fBp67@zKVUY(MIDZ- zU6`=qAHkOL;SSJ#X=zDHW2WkDO{FzZOK}D8-Bb^gmHn7~Av|=YN4(j;PG(L!7O*I4 zW`V>6b%@ZInyEj*DyU~ZsY}VFs_~%Z7hW;c^EvPP7j(qxF!sb#%~L<2gA9dti|GyQ zyw^NDwYMV{*bHP$(~O@N(}^_8y(mQ-)WtkF2hc0ZFP>lj_YmHTdfB#>m^8}*L;z{T z(Ez}7Zdv|=^?|Ro{6>ra$$9`*k4yp}KwaspKAFWsEWBhVA*pMc*d6HMhFGSNjdd>m z&SvkIH|dElaUJf#NvxmS1aU((cK zud$@(tni=15ta}JmKow(^0Lo+(f+qOSOr0BdjS)?ODfkv9g>D}cqr5U^_?mp1Oq}Y z$d?I`^rUN^ebV7I8rSA8#^ffx)5BMs-JVX-`@jY?KU=?`KH0d46GhM;?@hnv(Z%(x z0SBrkO2>m5+lym!xMaD^T^&BPuu1o~+u1i*`0--{mVKqKfoOmTSc>a^6KO*sA%`Jrg^@tX zKcVgj_&<-Tm(|qkM){NlH`z8kf-GywI+78?EYAnQxvcr+FLsNRh$NSZ@aYHWdCT@@ z{Mx?Yvn3wpwx6N*UTmZm(n?5tLf?@>l>tu3IcU!$#YctYr{-yJb$dnmkv(EKd?9Qa z_MuMmY`K;I+8KBAOnfJy?Hp93*Tz|K^tw4McQ$mFTbO5;hvr0z>dzIZ^{ zNTDT`<-kB_bt;iyNL_s167^{*(8tp2sr-v9#|(yb+4!KPL|2 zRJ8g?VFt~{H7XNxIE7@(^+~n&M3*%$f<;E@>Xtt%3Ox15 zt0zch5{|dk?{BcaAB%xg=90L~!Y2djVfUd|Mbe;2W4ihJW{j(S{S#UfhKQ5!E7UPC zcUYojoJ@g?@hqqZ2REOtBCz^0s&Ja>NBq%guklgEmR!rqgBYJprGtAkY^$UPr*qhj zq4{Jaf$KW;J|SS?k?ih#5(H)`^}mzO%WEI{%sWpI`8U8Z*)~_aF}4McsZF)iB-5*u zZ)l-o)rvQ<2$z?tGZ#iUuMEJ*g_8RXArvGVXj~u2vCTW!<`2zV`(g0C;|y7ph#*n> zg^HB_LPeOp={))EMAD>v!4{|2);ebxV2e|ox8i1{W}Z8JPyFa2o;_%c=#R6s^EsUesHRdW z2FY)`sdVL#6-biH%->+`0b1(zbI$ZwHA3t1+LA$r7khLvmBYDM=V-~Hdh>>=Ek$g( z@h`|Nc!7hZp&M5_S%8W>UUtgGt_b~w64c~(28wK=ruHw9pUlxMXb%hm0`5%oUzkDN z-Bhl7BbqX;_Bg#gTrz*O zPAv+8QV!M=6C?jp@~M}qioHxpfsI2l+$t&Wbw~AtC;{X0j|EI31!(S&pXKG5E8isQ z$sJ;{o@gp4X&?oM{m33zFM&WsNsnV{2T&#RE5^ADSA~A6oP{-AlbArUE2ZVz@ry%h z_iC)o1qBsnmTUj=ualZ8hF{oqmu0q{=Vvx=6LTkm4ZW}zjg zT{w+|5&w)RyY8C*Aw1aMkXHEYAWN>e7;gG-5J+xXQgn0Zg38Bq>-SSpz*03IeBM7V zLM*wKtc1;Tl4fDUeUh!m?FJS8%tC_}oYzBl>4XnfqaeOvl_(6Bt2~fOeh%#i4I|H& zVb~2$?0r1vJI`V{g59Txww-Kd5XJtxHwegDG^Q{&0PR8HO`&y-an072;;=I^+d1yb zqs0s&k&Xk}4^cja^C1+wFl72(cJ>ZPk^Gw68t;n~QSIJp64i%%ALqbckPd1*8b01A z#fkdwc|$;1kgiybWvdmxhll%zet-NyQXZ-lfXE@GqXSNleIis@p#vZKhcSGfMovS( zaqxrh5%U|#znYp~zcP&R9$a?6>3tfw@fbXgX2k`GnE5|G*1H^`uItVCEN*$_()*{_ z0k{;!g$%f{npnpY5leSVDVs8;haI`xFtemoZvRGQP z$PzCbzZyBds6;wkrDOD))D$n`tIGSR*HzB{lJCFAlc^iJZqRC9W3=iZ>XWqL{zzhT zk+gnK8j~5`h&ZrMqwlKPw~WbQalfzcwHr0iLx(W{T^M*g3m?lo!T z@PpfbKfEO?zoy*uV^qs!{AvrV7|S406W6&>C8E99%mT$w%+Bk}$;-sdnoGm@maxc2 zNd*j8lhIsxSyx~?4FVrE;@{SJLp_;7ZFVFp)PZb9Oao1(AJu-*`z(Ge=~#0}b@4)c zmZTL5z1ncXsgUXs&^S&n)&G4yWrS_S`$T zo_=^0i8eMd7r}8a4aJZmD{VwipH9?|1k9@5`0?CbeVvGFr14wZ2 zxf3P39ohJfVl}VN-*KOj$zvbhGIpk#Y3DeR6bU7 zvF2SOdhmLKx&V~_Z~|O~$xLTZ-H^HJSF2iE431hz0A;ydAdBw5z(0&~iFA5$1VKxv zfKGw0o2q4??x!PO=Y7X4;JnoGlSD~$UDWk5os9udB|E55aejMrNv!l{k<8}4$+HWJ zca<dyn@a>~bg{a{iJ5B4k5yU8!5W2i z&=i@jX?*PKgo(940pG6I&Fwxif1n)Uz=D;Y?)T1RHe1{JYkW)A6_?{ac>dCVeUgSi z!lVe#foatk?`^qO-o(MyPH4T(#xrZBlA$5OHcC5T%Z&20XqeG<$R&e2QJ z*;~~PYmAS>?mb<%*u2^aXbVMX$aX3f+y{}gqK+T@`8y5 zsrsI^ecfK6+1rvGy5g(dDR=M<8gh23DK&>x>0AD?f1#pD&F!PVH)||L&AJ$j&t{bCaw-H2@VRiaoDtYCWleo_oo7BS)ne&Zg#s8j3wa+ zx}vi{1wAId4j+?sn7ixI>4nU#SQ9mUjN~iIUvKMm5XRHFVMo$Nv%&_4m+Q-!c^pp; ziXN@d-+yJI`=uq`nBU8~D7x1-tbyC&&g8Rs!6Xd$rA1DK_v{my&Mz<6?>}7Zj*0!n z0to<-z$B32LKel%BMT(Nm~n|Yi5lH#e;8FoL-2IyCITS1;X}SdKwuAw3Gpk$$3%U< znT*CO5EPu3K(p>O`+<@yHiWP=K~ps&WvgWw*hro;z)h2^B#m-mH?2h-+nO?TsM`M0 zTuz^;S%3aL(n9_`#o|)0s(n|3yhnxR$`hdKy|yaaPcbX2A62;d=On`D6<9Jq;6X!0 zSd_aA(>8y2^FLYz$QgLabuXa3@y_3I_u!;VF`CsvM4P971Ndib@NT9C!T2t&YqLIbl@kkEhcA68W0{q!&!UgNLN)qdPhVbB!*J@h;--)*VjYc)nw z+WocugIl?w7qH*U{=Kz1K5o6zNu$5@g8yvb*w9Yc=LL#b;?umV>wPn(RY@(wmW9dJ z#r{;`UxEXr4TPho@ZLTx1H8QO;UtT_)Ess`C6PxS6wDpVZS4qXuMW4TRDTqhST#wO zDV}rdj8XZm233$~|D^`a&FgMGXep0qJ^J<}5rafK-pfSDRM~hzdhjAqaBj_cB!!hW z`WHM<8EBcYj=qEx66bYQ#kuzblU{d;cq=5i`<^KP0{C=rrlBd7+N99P_t$vLWH@W# zHe1JpfiD$R_{WYXs(nA)hT3gra!p~sE1jxEDm}Y=RfQZ+FQf7yTw)4Yj~Itf2l|Oh zw+$W&lYYga-QG3xO%zpvd^45Yrs&HAUDxQ7Z(%R6rh*P;F)t>+{>^(Vyw}zR$uYm> zz9xmo8M(}?&bM^$69Hx^b27YKcynQG{X*ow-4+5mg%q55qn7jqlL~vGRq^~$0@&#G zsaDh+m|V4xeo%jLaY*L=v0{N;6IpGiXB+*Gpzpg0zU|=WZ?iEmIO*zdBTjrKjc>89 zW^H-dc#Ib3^Pskzcm&W;-!?19_Eekz7;Kwv^4VFaPb}gIHPBBM#iAhOh!;-(Z0u}= zDW!RcWNQah-`x)!y1fmblrY|6@7t`~ntvAL3C90`FAwPDUa7Ir0)w_y*-4>awk>4B z*zzyn;evsuY4L^~_qK-ofVJe689_2q{uMtr4|IT{L_DiIMjQ9WJYVyZ8@ zC@vlrUJG5yJv<_+7V`+noVsFGLx$<2b?w*yTa=)Gv>{BMNavVLKg4Buva`?cc2jVV z{9~IuIk`657+2K81vIF-NG-U=oY5>#AsDegq@&>OvdKvPO_@cM3i&en$S@!}jOuj! zbU2uLRO^OzuN+hVAznV{yA5x$^HuZC6CYN zI}#=?W$J3Mvb( zE&zlizvwdWW}O|Ia+H-OsWx(1jlE50KTI^u{gsGEOk(I5wF)h_NJ%E5ij-xKvWIN# zkm|BLVje*K&%*!sP9#7;tE1Gxggi^+G~9o~p@4TW2}QX=bi1miAzrK5_xXK@uPLJ^ zp98Y~(cBv5qVML!yb+os?O<;0dGNx`p_LG{5nn29qiYWY;OPLM26(N1lG~0ytY2?X z6%si_h<3kDIn`Jc1&9a;@4J16^5%V(JWdj`T{6DyvxCK^(a4G0PnUFXUwlw!A%lL` z2Y)s^CqvcE>+Szs`RUrC4$jk3d!K4Ll2~~r;)`#4LFKz+Hr!e}vn)5!?1cDgEuS@F zkn~eyBL}OT@*C&Id!ELLz$3=fnxwb;!2;-5<&CSjM9jt8b|3MT`BL#3LrT9sVL83p zgkG(1tfZ}eAN+j!*~8tq=o7gZSGH_ZeLHh)M?I;%{aGdE7Oz+UBBoxp+GV_3N@cg9 zzxdVCIGe~cmHB#KR4Tfp7Xw<5UM-03s#yIvPkmivVfad$l7~^ho*dk%K>Qls_RZ(* zgFH+M#jptHEdhw3=n-hxzEXy9(dLpx)DhrLoJ&7h%fKQIx8a^a_(zj2OcqYo1`jQK$G4i*5?)P*^7=0uL*lCy}G?~>FIIOZvjzdWQK*R3~vnSVFvkK%C4}t)px1N z;qfYmwgN~?Gfd)i?A&i02r}L}1&BF}Nqll0PAi`q9+S!IE_H-HdOByKW7}jt`}lBP zF$71JIDM8ew$v=iH`gX+?I>9OAkd;aH!xs?=?JXbebLkDk9g%+1+C?p_t;{zC}k14 zk@}LAFQI>6F+6>TyxOwKRycC>$C2St{yMC;b&`5{xvr@r zI{l;MeY{0*lqLx{N)rc5@V`VC@VmqD$mXY*LCQS6U@kaAWhf!wMOGroj;u_A64l_6!PhYd8-O7*WMV2lSC9hX!i_v zNU1Lb_EI~ulln$U)WVTH#ctb87p}~peNUh?E>qR36t5B?_j1=0EKLUjW!dPh;@^V&n4eUQ zZBA%R@Y~%TDfs4g9y9#@em{DbEKBDT4(xp(XB6_obpn6#`p}%z&*K} zyh{lmA__RrV*S8$kMNZ|vtZ2z+~>w@(7o}~A`zDhDw=VHf$v-MZQCp)9^X(Q=3F_I z2s5~QvyWn}j&OOj+NY_rs>T1dGjD zr$S-p9b)T%oT`DJ&=b~tnzXgUH+)B-((xD zlKVt|vm`7x-sTlOMRpM=rWXmkU8P-+bhxx9XpW|Jrm~5WCIuUUvzhptc%IYLH#wRgw`j*m*$|n z8j8qoaCN`h9NhWrG@i6MTzjddDW|;XHY-qQc`!uJ8xlIRsQbaNC?AC-b0jE02dS7`g(6dr<&mD}yBifi_7p<pf7 zD&U^ZDpioO%HMT(ixyN|x8(+A4a$MgTx>Vb1gkV2#!5E`7P~!%Cao-(I_fi$4Qq*l zJa+zu70#fGjlxA=V$8``TFO&`Lo#C>a%Hy!`(WwR!1c}>8M?6o+1d@uIcbV8^0*ZE zllA0-wG3`&6Zvj&(Ecyri5D0}0KpHvlfK8L7w***SHT zxX%N!LY8K62_=QE&1VVs59ci2)x?98vzvQ)lLCsbv}Lw**tq;JvMZR1q6ou(H54R~ zqCDNY3MAT&k!r0E?#^8`bu$5l1r0kPN)EYmPD{l?g(rGD#>wyOxQtv~a2@iMw%q53 zKHNxX#^N;uZ4~+JlD`1#8>mG%j`hLJs_}zqWgap^X$5|V%;x7GFBIbqC`zMqa1^U6 zFb6HtKrNo}fs3AlXaHrbBc`w#WW5|jUY5ba{HJTXq%hRNvtQc#x5E<{LJ|`3?j-tC zH*;VOW937l=b6uV*3m=XY;*0wgelt+vbrZz+!UF+J1fhg#63u%z1ckj4&$oq%f55m_l}_NkeXYEnZ=t4taoL z<%^ki9h<2Udm}{>I{GZ{uYHN>kws+C=m=~F_C%M=eh6KO!dohpoi48&@P?nmcy%9t zrb#_%K@`u+;=d=fjRvX_(L{=odG1{Xe)sy1s|`me z+;eeI5Nb<`_6rK{w0;U_gZn>M2&~jPM_Ymz>5en!j7yb)>TmkIlV2UBFsx~&7XDPk zoya;Jgscp*LNTQizAlV?K2h5vGGG%jQgm%^?YQADmD^ar|B)v6E-QhqmH_WBR{8yFUMrK=a3^m5O?%`Os7m0YuP^evJFpuShabt7~ym9o*j*yF|>rS`(UXO*hvsYR6$gU?CS7s1ffF z^p`>eq_P3zla)m1Y~u+&B1`|r2tvSxMtOC0R=WezDm(N#g&5!L8;wxp6{8;Oy^8{L zHEKje(&&jUaS>l;geKDFna&R&__?DJq@e$A0XN>7f_5s#pnhTG9ie&Bht8UX<`ZM$ zySf5dHRm&*v7R~XVa2Vy?GZ(NCa!1xl((*$N8yq;MO52Cw$%hP&3)yyZFpU`Y#|0j4KU;TM|UTjr_leNQH!Ix!4R>$vt?ieH-2ui+v-5{Q(Y;^xEr$zJ4{j zY4gGYi-R53H^mV(eM?Ev^<1d?TRyI?*M0YFl*&M4c=GO#g;VBx{Y*N8s2{V-xPZk# z2dk-49u#H?xJLoBP$Yjz-?vZEFV`zs!gyt0a!4dy2s|P0-fJJg-I8-~I0=E)J_qYw zTkq?u-GeC{c|Vm?ST(am-!SwWYaSY!f(6kdnM{)f3b9%~12YAx2ie3IA`}@&DYGZR zB~{je6Uoe5VWe`D$x5ibwG|0^oVy z=W4D~wjkC0y_UwM4pbyhQjgft;ToRxED!PS{3tsj`;# z@Yil60shClO@p4VPd~Oh#H#}U*)#A3-qPrPgva-uuYN|#<8d}!P5}13{xe5$;p0T@YalK!AJ|mU%k$}}3M&^NgjmBGh+GkZqUgO1&=Z>Cr zQ&z_=5@jZhwgyLSJF*XWf*pcei-vUg|ty`x!e2ht4Z}l(IF}k9!%hnH3AL_2}nm?AGr(JeNw=|JPy`5=K{!Zp< j>3#$9az0hazw?~WKWb(h-ywhie~Af83zZ6JfBydffVY`O literal 0 HcmV?d00001 diff --git a/node_modules/pryjs/bin/deploy b/node_modules/pryjs/bin/deploy new file mode 100755 index 0000000..d69aee7 --- /dev/null +++ b/node_modules/pryjs/bin/deploy @@ -0,0 +1 @@ +grunt && npm publish diff --git a/node_modules/pryjs/changelog.md b/node_modules/pryjs/changelog.md new file mode 100644 index 0000000..581ee7b --- /dev/null +++ b/node_modules/pryjs/changelog.md @@ -0,0 +1,67 @@ +# 0.1.3 + +## Fixed Bugs +* Pushed Bad Source to NPM + +# 0.1.2 + +## Fixed Bugs +* Don't redeclare variables when executing coffee-script. +* Upgrade deaasync for Node v4.1.1 + +# 0.1.0 + +## New Features +* New variable given to you with the results of the last statement. + +# 0.0.14 + +## Fixed Bugs + +* No longer executing input multiple times. +* Show errors as they happen, not just when asked. + +# 0.0.9 + +## New Features + +* Allow typing multiple lines of javascript in the prompt. +* Add typeahead/autocomplete when writing up commands. +* Add `ctrl+v` for multiline instead of guessing. + +# 0.0.8 + +## New Features + +* Add a new `kill` command to kill the entire process instead of just this prompt. +* Add a new `wtf` command to show you the last caught error. +* Allow you to type CoffeeScript in the prompt. +* Add a new `help` command to list all the available commands. +* Add new `play` command that can play lines via their absolute line numbers. +* Change the pry statement to a much prettier `eval(pry.it)`. + +## Fixed Bugs + +* When nothing is returned it gives you back the prompt. + +# 0.0.7 + +## New Features + +* Fix array slice bug when trying to view lines before 0. + +# 0.0.6 + +## New Features + +* Allow version to be retrieved from the prompt. +* Fix prompt not giving back control of i/o. +* Catch exceptions in the prompt and display them instead of erroring. + +# 0.0.5 + +## New Features + +* Keyboard shorts in prompt. +* History in the prompt. +* Colored output for functions and objects. diff --git a/node_modules/pryjs/code_of_conduct.md b/node_modules/pryjs/code_of_conduct.md new file mode 100644 index 0000000..c2ebaab --- /dev/null +++ b/node_modules/pryjs/code_of_conduct.md @@ -0,0 +1,15 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. + +Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. + +This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.1.0, available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/) diff --git a/node_modules/pryjs/examples/fizzbuzz.coffee b/node_modules/pryjs/examples/fizzbuzz.coffee new file mode 100644 index 0000000..9aaf05a --- /dev/null +++ b/node_modules/pryjs/examples/fizzbuzz.coffee @@ -0,0 +1,18 @@ +pry = require('../src/pry') # require('pryjs') + +# http://rosettacode.org/wiki/FizzBuzz#CoffeeScript +class FizzBuzz + + run: -> + for i in [1..100] + output = '' + eval(pry.it) + output += "Fizz" if i % 3 is 0 + output += "Buzz" if i % 5 is 0 + console.log output || i + + bar: -> + 10 + +fizz = new FizzBuzz() +fizz.run() diff --git a/node_modules/pryjs/examples/fizzbuzz.js b/node_modules/pryjs/examples/fizzbuzz.js new file mode 100644 index 0000000..1ef0c8a --- /dev/null +++ b/node_modules/pryjs/examples/fizzbuzz.js @@ -0,0 +1,15 @@ +pry = require('../lib/pry'); // require('pryjs') + +// http://rosettacode.org/wiki/FizzBuzz#JavaScript +function fizzBuzz() { + var i, output; + for (i = 1; i < 101; i++) { + output = ''; + eval(pry.it); + if (!(i % 3)) output += 'Fizz'; + if (!(i % 5)) output += 'Buzz'; + console.log(output || i); + } +}; + +fizzBuzz() diff --git a/node_modules/pryjs/features/help.feature b/node_modules/pryjs/features/help.feature new file mode 100644 index 0000000..d110691 --- /dev/null +++ b/node_modules/pryjs/features/help.feature @@ -0,0 +1,23 @@ +Feature: Help + As a user of pry.js + I want to be ask for help + So I can better use the tools provided + + Scenario: Getting all the help + Given I have open the "fizzbuzz" example + When I type in "help" + Then The output should match "whereami" + And The output should match "help" + + Scenario: Getting all the help with extra space + Given I have open the "fizzbuzz" example + When I type in "help " + Then The output should match "whereami" + And The output should match "help" + + Scenario: Getting specific help + Given I have open the "fizzbuzz" example + When I type in "help help" + Then The output should not match "whereami" + And The output should match "help" + And The output should be "2" lines diff --git a/node_modules/pryjs/features/play.feature b/node_modules/pryjs/features/play.feature new file mode 100644 index 0000000..e726e19 --- /dev/null +++ b/node_modules/pryjs/features/play.feature @@ -0,0 +1,18 @@ +Feature: Play + As a user of pry.js + I want to play existing lines of code in context + So I can see the side effects of my interactions + + Scenario: Play a single line + Given I have open the "fizzbuzz" example + When I type in "i = 15" + When I type in "play 10" + And I type in "output" + Then The output should match "Fizz" + + Scenario: Play multiple lines + Given I have open the "fizzbuzz" example + When I type in "i = 15" + And I type in "play 10 11" + And I type in "output" + Then The output should match "FizzBuzz" diff --git a/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee b/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee new file mode 100644 index 0000000..b01a7fa --- /dev/null +++ b/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee @@ -0,0 +1,42 @@ +myStepDefinitionsWrapper = -> + @World = require("../support/world").World + + @Given /^I have open the "([^"]*)" example$/, (example, callback) -> + @runCommand "coffee examples/#{example}.coffee", callback + + @When /^I type in "([^"]*)"$/, (command, callback) -> + @type command, callback + + @When /^I type in ctrl\+v$/, (callback) -> + @print_buffer new Buffer(String.fromCharCode(22)), callback + + @Then /^The output should match "([^"]*)"$/, (pattern, callback) -> + @getOutput (result) -> + if result.match(pattern) + callback() + else + callback.fail new Error("Expected to find #{pattern} in #{result}.") + + @Then /^The output should not match "([^"]*)"$/, (pattern, callback) -> + @getOutput (result) -> + if result.match(pattern) + callback.fail new Error("Expected not to find #{pattern} in #{result}.") + else + callback() + + @Then /^The output should be "([^"]*)"$/, (pattern, callback) -> + @getOutput (result) -> + if result == pattern + callback() + else + callback.fail new Error("Expected to find #{pattern} in #{result}.") + + @Then /^The output should be "([0-9]*)" lines?$/, (lines, callback) -> + @getOutput (result) -> + real_lines = result.trim().split('\n').length + if real_lines == parseInt(lines, 10) + callback() + else + callback.fail new Error("Expected #{lines} lines. Got #{real_lines}") + +module.exports = myStepDefinitionsWrapper diff --git a/node_modules/pryjs/features/stop.feature b/node_modules/pryjs/features/stop.feature new file mode 100644 index 0000000..381a3b6 --- /dev/null +++ b/node_modules/pryjs/features/stop.feature @@ -0,0 +1,10 @@ +Feature: Stop + As a user of pry.js + I want to continue the execution of the code + So I can see the side effects of my interactions + + Scenario: Skipping the iteration goes to the next variable + Given I have open the "fizzbuzz" example + When I type in "stop" + And I type in "i" + Then The output should match "2" diff --git a/node_modules/pryjs/features/support/after_hooks.coffee b/node_modules/pryjs/features/support/after_hooks.coffee new file mode 100644 index 0000000..b875088 --- /dev/null +++ b/node_modules/pryjs/features/support/after_hooks.coffee @@ -0,0 +1,4 @@ +module.exports = -> + @After (callback) -> + @process.kill('SIGHUP'); + callback() diff --git a/node_modules/pryjs/features/support/world.coffee b/node_modules/pryjs/features/support/world.coffee new file mode 100644 index 0000000..f587a3c --- /dev/null +++ b/node_modules/pryjs/features/support/world.coffee @@ -0,0 +1,56 @@ +spawn = require('child_process').spawn +_ = require('underscore') +chalk = require('chalk') + +WorldConstructor = (callback) -> + + class World + + process: null + + output: [] + + runCommand: (command, callback) => + command = command.split(' ') + @waitForOutput(callback) + @process = spawn( + command[0], + command.slice(1), + cwd: "#{__dirname}/../../" + ) + @process.stdout.on 'data', (output) => + @output.push output.toString() + + type: (input, callback) => + @waitForOutput(callback) + @process.stdin.write "#{input}\n" + + print_buffer: (buffer, callback) => + @waitForOutput(callback) + @process.stdin.write buffer + + waitForOutput: (callback) => + @_waitForOutput(@output.length, new Date(), callback) + + # Subtract 2 + # 1 for index to count + # 1 account for the new prompt it sends + getOutput: (callback) => + output = _.compact(_.map(chalk.stripColor(@output.join('\n')) + .replace(/\u001b\[(?:\d|NaN)(?:G|J)/g, '') + .split('\n') + .join('\n') + .split(/(?:-{9}>|\.{10}|\[\d+\] pryjs>).*$/gm), (el) -> el.trim())) + callback(output[output.length - 1].trim()) + + _waitForOutput: (oldOutputLength, oldDate, callback) => + if new Date() - 4500 > oldDate + callback.fail new Error('Timeout of 4.5 seconds exceeded') + else if @output.length > oldOutputLength + callback() + else + setTimeout(@_waitForOutput.bind(@, oldOutputLength, oldDate, callback), 500) + + callback(new World) + +exports.World = WorldConstructor diff --git a/node_modules/pryjs/features/underscore.feature b/node_modules/pryjs/features/underscore.feature new file mode 100644 index 0000000..9c409d4 --- /dev/null +++ b/node_modules/pryjs/features/underscore.feature @@ -0,0 +1,10 @@ +Feature: Underscore + As a user of pry.js + I want to be able to use the last result + So I can better use the tools provided + + Scenario: Using dynamic underscore variable + Given I have open the "fizzbuzz" example + When I type in "42" + When I type in "_" + Then The output should match "42" diff --git a/node_modules/pryjs/features/version.feature b/node_modules/pryjs/features/version.feature new file mode 100644 index 0000000..b09663f --- /dev/null +++ b/node_modules/pryjs/features/version.feature @@ -0,0 +1,9 @@ +Feature: Version + As a user of pry.js + I want to be able to use the Version command + So that I can see what version of pry.js I am using + + Scenario: I want to see the current pry.js version + Given I have open the "fizzbuzz" example + When I type in "version" + Then The output should match "\d+\.\d+\.\d+" diff --git a/node_modules/pryjs/features/whereami.feature b/node_modules/pryjs/features/whereami.feature new file mode 100644 index 0000000..59d1233 --- /dev/null +++ b/node_modules/pryjs/features/whereami.feature @@ -0,0 +1,19 @@ +Feature: Whereami + As a user of pry.js + I want to be able to use the Whereami command + So that I can see exactly where I am + + Scenario: The pointer should be on the pry statement + Given I have open the "fizzbuzz" example + When I type in "whereami" + Then The output should match "=>.*pry.it" + + Scenario: Should get 2 lines before and 1 after + Given I have open the "fizzbuzz" example + When I type in "whereami 2 1" + Then The output should be "4" lines + + Scenario: Should get 2 lines before and after + Given I have open the "fizzbuzz" example + When I type in "whereami 2 2" + Then The output should be "5" lines diff --git a/node_modules/pryjs/features/wtf.feature b/node_modules/pryjs/features/wtf.feature new file mode 100644 index 0000000..b34438a --- /dev/null +++ b/node_modules/pryjs/features/wtf.feature @@ -0,0 +1,15 @@ +Feature: Wtf + As a user of pry.js + I want to be able to use the Wtf command + So that I can see the last thrown exception + + Scenario: No caught exceptions + Given I have open the "fizzbuzz" example + When I type in "wtf" + Then The output should match "No errors" + + Scenario: No caught exceptions + Given I have open the "fizzbuzz" example + When I type in "throw new Error('Foobar!');" + And I type in "wtf" + Then The output should match "Foobar!" diff --git a/node_modules/pryjs/features/xecute.feature b/node_modules/pryjs/features/xecute.feature new file mode 100644 index 0000000..511c099 --- /dev/null +++ b/node_modules/pryjs/features/xecute.feature @@ -0,0 +1,62 @@ +Feature: Execute + As a user of pry.js + I want to be able to execute javascript in scope + So I have a better idea of what my problem is + + Scenario: Looking at a variable + Given I have open the "fizzbuzz" example + When I type in "i" + Then The output should match "1" + + Scenario: Have the same scope + Given I have open the "fizzbuzz" example + When I type in "this.bar()" + Then The output should match "10" + + Scenario: Setting the variable + Given I have open the "fizzbuzz" example + When I type in "i = 20" + And I type in "i" + Then The output should match "20" + + Scenario: Executes javascript + Given I have open the "fizzbuzz" example + When I type in "if (true) { 'js'; }" + Then The output should be "js" + + Scenario: Executes coffeescript + Given I have open the "fizzbuzz" example + When I type in "mode" + And I type in "if true then 'coffee'" + Then The output should be "coffee" + + Scenario: Executes multiline javascript + Given I have open the "fizzbuzz" example + When I type in ctrl+v + And I type in "if (true) {" + And I type in "'hello world';" + And I type in "}" + And I type in "" + Then The output should be "hello world" + + Scenario: Executes multiline coffeescript + Given I have open the "fizzbuzz" example + When I type in "mode" + And I type in ctrl+v + And I type in "{" + And I type in "foo: 'hello world'" + And I type in "bar: 'baz'" + And I type in "}.foo" + And I type in "" + Then The output should be "hello world" + + Scenario: Should not overwrite global variables in Coffee + Given I have open the "fizzbuzz" example + When I type in "mode" + And I type in "i = i || 20" + Then The output should match "1" + + Scenario: Getting an error + Given I have open the "fizzbuzz" example + When I type in "i_do_not_exist" + Then The output should match "is not defined" diff --git a/node_modules/pryjs/lib/.gitkeep b/node_modules/pryjs/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/pryjs/lib/pry.js b/node_modules/pryjs/lib/pry.js new file mode 100644 index 0000000..77b51ea --- /dev/null +++ b/node_modules/pryjs/lib/pry.js @@ -0,0 +1,31 @@ +(function() { + var App, Pry; + + App = require('./pry/app'); + + Pry = (function() { + function Pry() { + this.it = "(" + (this._pry.toString()) + ").call(this)"; + } + + Pry.prototype._pry = function() { + var _; + _ = null; + return pry.open((function(input) { + return _ = eval(input); + }).bind(this)); + }; + + Pry.prototype.open = function(scope) { + var app; + app = new App(scope); + return app.open(); + }; + + return Pry; + + })(); + + module.exports = new Pry; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/app.js b/node_modules/pryjs/lib/pry/app.js new file mode 100644 index 0000000..c440723 --- /dev/null +++ b/node_modules/pryjs/lib/pry/app.js @@ -0,0 +1,82 @@ +(function() { + var App, Output, SyncPrompt, commands, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + + SyncPrompt = require('./sync_prompt'); + + Output = require('./output/local_output'); + + commands = require('./commands'); + + App = (function() { + App.prototype._commands = []; + + function App(scope) { + this.scope = scope; + this.find_command = __bind(this.find_command, this); + this.typeahead = __bind(this.typeahead, this); + this.output = new Output(); + this.prompt = new SyncPrompt({ + typeahead: this.typeahead + }); + this.prompt.on('data', this.find_command); + } + + App.prototype.commands = function() { + var command, i; + if (this._commands.length === 0) { + for (i in commands) { + command = commands[i]; + this._commands.push(new command({ + output: this.output, + scope: this.scope + })); + } + } + return this._commands; + }; + + App.prototype.typeahead = function(input) { + var command, items, _i, _len, _ref; + if (input == null) { + input = ''; + } + items = []; + _ref = this.commands(); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + command = _ref[_i]; + items = items.concat(command.typeahead(input)); + } + if (input) { + items = items.filter(function(item) { + return item.indexOf(input) === 0; + }); + } + return [items, input]; + }; + + App.prototype.find_command = function(input, chain) { + var args, command, match, _i, _len, _ref; + _ref = this.commands(); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + command = _ref[_i]; + if (match = command.match(input.trim())) { + args = String(match[1]).trim().split(' '); + return command.execute.call(command, args, chain); + } + } + return false; + }; + + App.prototype.open = function() { + this.prompt.type('whereami'); + return this.prompt.open(); + }; + + return App; + + })(); + + module.exports = App; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/command.js b/node_modules/pryjs/lib/pry/command.js new file mode 100644 index 0000000..8b17a46 --- /dev/null +++ b/node_modules/pryjs/lib/pry/command.js @@ -0,0 +1,87 @@ +(function() { + var Command, File, Range; + + File = require('./file'); + + Range = require('./range'); + + Command = (function() { + Command.commands = {}; + + Command.prototype.name = ''; + + Command.prototype.aliases = []; + + Command.prototype.definition = ''; + + Command.prototype.help = ''; + + Command.prototype.args = new Range(0, 0); + + function Command(_arg) { + this.scope = _arg.scope, this.output = _arg.output; + this.stack = new Error().stack; + this.constructor.commands[this.constructor.name] = this; + } + + Command.prototype.command = function(input) { + var command, name, _ref; + _ref = this.commands(); + for (name in _ref) { + command = _ref[name]; + if (command.constructor.name.match(new RegExp(input, 'i'))) { + return command; + } + } + }; + + Command.prototype.commands = function() { + return this.constructor.commands; + }; + + Command.prototype.typeahead = function() { + var items; + items = this.aliases.slice(0); + items.push(this.name); + return items; + }; + + Command.prototype.command_regex = function() { + var subject; + subject = "^(?:" + this.name; + if (this.aliases.length > 0) { + subject += "|" + (this.aliases.join('|')); + } + subject += ")((?: (?:[^ ]+))" + (this.args.to_regex()) + ")$"; + return new RegExp(subject); + }; + + Command.prototype.match = function(input) { + return input.match(this.command_regex()); + }; + + Command.prototype.find_file = function() { + var file, foundCall, item, line, _, _i, _len, _ref, _ref1; + foundCall = false; + _ref = this.stack.split('\n'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + item = _ref[_i]; + if (foundCall) { + _ref1 = item.match(/([^ (:]+):(\d+):\d+/), _ = _ref1[0], file = _ref1[1], line = _ref1[2]; + if (file !== '') { + return new File(file, line); + } + } else if (item.match(/Pry\.open/)) { + foundCall = true; + } + } + return new File(__filename, 1); + }; + + return Command; + + })(); + + module.exports = Command; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/help.js b/node_modules/pryjs/lib/pry/commands/help.js new file mode 100644 index 0000000..467719a --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/help.js @@ -0,0 +1,76 @@ +(function() { + var Command, Help, Range, chalk, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Range = require('../range'); + + chalk = require('chalk'); + + Help = (function(_super) { + __extends(Help, _super); + + function Help() { + return Help.__super__.constructor.apply(this, arguments); + } + + Help.prototype.name = 'help'; + + Help.prototype.aliases = ['\\?']; + + Help.prototype.definition = 'Shows a list of commands. Type `help foo` for help on the `foo` command.'; + + Help.prototype.help = 'You just lost the game.'; + + Help.prototype.args = new Range(0, 1); + + Help.prototype.typeahead = function(input) { + var command, items, name, _ref; + if (input == null) { + input = ''; + } + if (input.indexOf('help') === 0) { + items = []; + _ref = this.commands(); + for (name in _ref) { + command = _ref[name]; + if (command.name) { + items.push("help " + command.name); + } + } + return items; + } else { + return ['help']; + } + }; + + Help.prototype.execute = function(_arg, chain) { + var command, name, _ref; + name = _arg[0]; + if (name) { + command = this.command(name); + this.output.add(chalk.blue(command.name), '-', command.definition); + this.output.add(command.help); + this.output.sendAll(); + } else { + _ref = this.commands(); + for (name in _ref) { + command = _ref[name]; + if (command.name) { + this.output.add(chalk.blue(command.name), '-', command.definition); + } + } + this.output.sendAll(); + } + return chain.next(); + }; + + return Help; + + })(Command); + + module.exports = Help; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/index.js b/node_modules/pryjs/lib/pry/commands/index.js new file mode 100644 index 0000000..d4c33bc --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/index.js @@ -0,0 +1,16 @@ +(function() { + var file, fs, name, _i, _len, _ref; + + fs = require('fs'); + + _ref = fs.readdirSync(__dirname); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + file = _ref[_i]; + if (file.match(/\.(coffee|js)$/) && !file.match(/index\.(js|coffee)/)) { + file = file.substr(0, file.indexOf('.')); + name = file.substring(0, 1).toUpperCase() + file.substring(1); + exports[name] = require("./" + file); + } + } + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/kill.js b/node_modules/pryjs/lib/pry/commands/kill.js new file mode 100644 index 0000000..6b0a2cc --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/kill.js @@ -0,0 +1,33 @@ +(function() { + var Command, Kill, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Kill = (function(_super) { + __extends(Kill, _super); + + function Kill() { + return Kill.__super__.constructor.apply(this, arguments); + } + + Kill.prototype.name = 'kill!'; + + Kill.prototype.aliases = ['kill', 'exit!', 'quit!', 'stop!']; + + Kill.prototype.definition = 'Exits from the entire script.'; + + Kill.prototype.execute = function(args, chain) { + chain.stop(); + process.kill(); + return false; + }; + + return Kill; + + })(Command); + + module.exports = Kill; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/play.js b/node_modules/pryjs/lib/pry/commands/play.js new file mode 100644 index 0000000..7df4067 --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/play.js @@ -0,0 +1,40 @@ +(function() { + var Command, Play, Range, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Range = require('../range'); + + Play = (function(_super) { + __extends(Play, _super); + + Play.prototype.name = 'play'; + + Play.prototype.definition = 'Play a specific line, or set of lines in the file you are in.'; + + Play.prototype.help = '`play 1 2` will play lines 1 and 2.\n`play 1` will just play line 1.'; + + Play.prototype.args = new Range(1, 2); + + function Play() { + Play.__super__.constructor.apply(this, arguments); + this.file = this.find_file(); + } + + Play.prototype.execute = function(_arg, chain) { + var end, start; + start = _arg[0], end = _arg[1]; + end || (end = start); + this.command('xecute').execute_code(this.file.by_lines(start, end), this.file.type()); + return chain.next(); + }; + + return Play; + + })(Command); + + module.exports = Play; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/stop.js b/node_modules/pryjs/lib/pry/commands/stop.js new file mode 100644 index 0000000..5262cb7 --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/stop.js @@ -0,0 +1,31 @@ +(function() { + var Command, Stop, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Stop = (function(_super) { + __extends(Stop, _super); + + function Stop() { + return Stop.__super__.constructor.apply(this, arguments); + } + + Stop.prototype.name = 'stop'; + + Stop.prototype.aliases = ['exit', 'quit']; + + Stop.prototype.definition = 'Ends the current prompt and continues running the rest of the code.'; + + Stop.prototype.execute = function(args, chain) { + return chain.stop(); + }; + + return Stop; + + })(Command); + + module.exports = Stop; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/version.js b/node_modules/pryjs/lib/pry/commands/version.js new file mode 100644 index 0000000..1091c3e --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/version.js @@ -0,0 +1,32 @@ +(function() { + var Command, Version, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Version = (function(_super) { + __extends(Version, _super); + + function Version() { + return Version.__super__.constructor.apply(this, arguments); + } + + Version.prototype.name = 'version'; + + Version.prototype.definition = 'Shows the current version or pry.js you are using.'; + + Version.prototype.execute = function(args, chain) { + var content; + content = require('fs').readFileSync("" + __dirname + "/../../../package.json"); + this.output.send(JSON.parse(content)['version']); + return chain.next(); + }; + + return Version; + + })(Command); + + module.exports = Version; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/whereami.js b/node_modules/pryjs/lib/pry/commands/whereami.js new file mode 100644 index 0000000..4a0e4c2 --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/whereami.js @@ -0,0 +1,43 @@ +(function() { + var Command, Range, Whereami, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Range = require('../range'); + + Whereami = (function(_super) { + __extends(Whereami, _super); + + Whereami.prototype.name = 'whereami'; + + Whereami.prototype.definition = 'Shows you exactly where you are in the code.'; + + Whereami.prototype.help = '`whereami` - Shows you where you are. \n`whereami 6` - Gives you 6 lines before instead of 5. \n`whereami 6 8` - Gives you 6 lines before instead of 5, and 8 lines after.'; + + Whereami.prototype.args = new Range(0, 2); + + function Whereami() { + Whereami.__super__.constructor.apply(this, arguments); + this.file = this.find_file(); + } + + Whereami.prototype.execute = function(_arg, chain) { + var after, before, end, start; + before = _arg[0], after = _arg[1]; + before || (before = 5); + after || (after = 5); + start = this.file.line - parseInt(before, 10); + end = this.file.line + parseInt(after, 10); + this.output.send(this.file.formatted_content_by_line(start, end)); + return chain.next(); + }; + + return Whereami; + + })(Command); + + module.exports = Whereami; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/wtf.js b/node_modules/pryjs/lib/pry/commands/wtf.js new file mode 100644 index 0000000..ee8623f --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/wtf.js @@ -0,0 +1,36 @@ +(function() { + var Command, Wtf, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Wtf = (function(_super) { + __extends(Wtf, _super); + + function Wtf() { + return Wtf.__super__.constructor.apply(this, arguments); + } + + Wtf.prototype.name = 'wtf'; + + Wtf.prototype.definition = 'Shows the last caught exception.'; + + Wtf.prototype.help = '`wtf` will show you the last caught exception.'; + + Wtf.prototype.execute = function(args, chain) { + if (this.command('xecute').last_error) { + this.output.send(this.command('xecute').last_error.stack); + } else { + this.output.send('No errors'); + } + return chain.next(); + }; + + return Wtf; + + })(Command); + + module.exports = Wtf; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/xecute.js b/node_modules/pryjs/lib/pry/commands/xecute.js new file mode 100644 index 0000000..bdac6a9 --- /dev/null +++ b/node_modules/pryjs/lib/pry/commands/xecute.js @@ -0,0 +1,66 @@ +(function() { + var Command, Compiler, Range, Xecute, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + Command = require('../command'); + + Range = require('../range'); + + Compiler = require('../compiler'); + + Xecute = (function(_super) { + __extends(Xecute, _super); + + Xecute.prototype.name = ''; + + Xecute.prototype.last_error = null; + + Xecute.prototype.args = new Range(1, Infinity); + + function Xecute() { + Xecute.__super__.constructor.apply(this, arguments); + this.compiler = new Compiler({ + scope: this.scope + }); + } + + Xecute.prototype.execute = function(input, chain) { + if (input[0] === 'mode') { + return this.switch_mode(chain); + } + this.execute_code(input.join(' ')); + return chain.next(); + }; + + Xecute.prototype.execute_code = function(code, language) { + var err; + if (language == null) { + language = null; + } + try { + return this.output.send(this.compiler.execute(code, language)); + } catch (_error) { + err = _error; + this.last_error = err; + return this.output.send(err); + } + }; + + Xecute.prototype.switch_mode = function(chain) { + this.compiler.toggle_mode(); + this.output.send("Switched mode to '" + (this.compiler.mode()) + "'."); + return chain.next(); + }; + + Xecute.prototype.match = function(input) { + return [input, input]; + }; + + return Xecute; + + })(Command); + + module.exports = Xecute; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/compiler.js b/node_modules/pryjs/lib/pry/compiler.js new file mode 100644 index 0000000..eab2229 --- /dev/null +++ b/node_modules/pryjs/lib/pry/compiler.js @@ -0,0 +1,50 @@ +(function() { + var Compiler, coffee, pry; + + coffee = require('coffee-script'); + + pry = require('../pry'); + + Compiler = (function() { + Compiler.prototype.mode_id = 0; + + Compiler.prototype.noVarPattern = /^\s*var .*$/gm; + + Compiler.prototype.modes = ['js', 'coffee']; + + function Compiler(_arg) { + this.scope = _arg.scope; + } + + Compiler.prototype.mode = function() { + return this.modes[this.mode_id]; + }; + + Compiler.prototype.toggle_mode = function() { + return this.mode_id = (this.mode_id + 1) % this.modes.length; + }; + + Compiler.prototype.execute = function(code, language) { + if (language == null) { + language = this.modes[this.mode_id]; + } + return this["execute_" + language](code); + }; + + Compiler.prototype.execute_coffee = function(code) { + return this.execute_js(coffee.compile(code, { + bare: true + }).replace(this.noVarPattern, '')); + }; + + Compiler.prototype.execute_js = function(code) { + return this.scope(code); + }; + + return Compiler; + + })(); + + module.exports = Compiler; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/file.js b/node_modules/pryjs/lib/pry/file.js new file mode 100644 index 0000000..0b95750 --- /dev/null +++ b/node_modules/pryjs/lib/pry/file.js @@ -0,0 +1,51 @@ +(function() { + var File, SyncHighlight, fs; + + fs = require('fs'); + + SyncHighlight = require('./sync_highlight'); + + File = (function() { + function File(name, line) { + this.name = name; + this.line = line; + this.line = parseInt(this.line); + } + + File.prototype.type = function() { + if (this.name.match(/coffee$/)) { + return 'coffee'; + } else { + return 'js'; + } + }; + + File.prototype.by_lines = function(start, end) { + if (end == null) { + end = start; + } + return this.content().split('\n').slice(start - 1, end).join('\n'); + }; + + File.prototype.content = function() { + return this._content || (this._content = fs.readFileSync(this.name).toString()); + }; + + File.prototype.formatted_content_by_line = function(start, end, line) { + if (end == null) { + end = start; + } + if (line == null) { + line = this.line; + } + start = (start < 0 ? 0 : start); + return new SyncHighlight(this.content(), this.type()).code_snippet(start, end, line); + }; + + return File; + + })(); + + module.exports = File; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/output/local_output.js b/node_modules/pryjs/lib/pry/output/local_output.js new file mode 100644 index 0000000..cb8092e --- /dev/null +++ b/node_modules/pryjs/lib/pry/output/local_output.js @@ -0,0 +1,31 @@ +(function() { + var LocalOutput, + __slice = [].slice; + + LocalOutput = (function() { + function LocalOutput() {} + + LocalOutput.prototype.output = []; + + LocalOutput.prototype.send = function() { + return console.log.apply(console.log, arguments); + }; + + LocalOutput.prototype.add = function() { + var args; + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; + return this.output.push(args.join(' ')); + }; + + LocalOutput.prototype.sendAll = function() { + this.send(this.output.join('\n')); + return this.output = []; + }; + + return LocalOutput; + + })(); + + module.exports = LocalOutput; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/range.js b/node_modules/pryjs/lib/pry/range.js new file mode 100644 index 0000000..87c98cb --- /dev/null +++ b/node_modules/pryjs/lib/pry/range.js @@ -0,0 +1,35 @@ +(function() { + var Range; + + Range = (function() { + Range.prototype.start = 0; + + Range.prototype.end = 0; + + function Range(start, end) { + this.start = start; + this.end = end; + if (this.start > this.end) { + throw "Start must be smaller than end"; + } + } + + Range.prototype.includes = function(i) { + return this.start <= i && i <= this.end; + }; + + Range.prototype.to_regex = function() { + if (this.end === Infinity) { + return "{" + this.start + ",}"; + } else { + return "{" + this.start + "," + this.end + "}"; + } + }; + + return Range; + + })(); + + module.exports = Range; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/sync_highlight.js b/node_modules/pryjs/lib/pry/sync_highlight.js new file mode 100644 index 0000000..8628ab1 --- /dev/null +++ b/node_modules/pryjs/lib/pry/sync_highlight.js @@ -0,0 +1,92 @@ +(function() { + var SyncHighlight, chalk, deasync, pygmentize, util; + + pygmentize = require('pygmentize-bundled'); + + deasync = require('deasync'); + + chalk = require('chalk'); + + util = require('util'); + + SyncHighlight = (function() { + SyncHighlight.prototype.content = null; + + SyncHighlight.prototype.type = null; + + function SyncHighlight(obj, type) { + this.type = type != null ? type : 'javascript'; + if (typeof obj === 'function') { + this.content = obj.toString(); + } else if (typeof obj === 'string') { + this.content = obj; + } else { + this.content = JSON.stringify(obj, this.stringify, "\t"); + } + } + + SyncHighlight.prototype.stringify = function(key, value) { + if (typeof value === 'function') { + return util.inspect(value); + } + return value; + }; + + SyncHighlight.prototype.highlight = function() { + var data, done; + if (chalk.supportsColor) { + done = data = false; + pygmentize({ + lang: this.type, + format: "terminal" + }, this.content, (function(_this) { + return function(err, res) { + done = true; + return data = res.toString(); + }; + })(this)); + while (!done) { + deasync.runLoopOnce(); + } + } else { + data = this.content; + } + return data; + }; + + SyncHighlight.prototype.code_snippet = function(start, end, line_number, line_pointer) { + var key, line, lines, pointer, _i, _len; + if (line_pointer == null) { + line_pointer = ' => '; + } + lines = this.highlight().split('\n'); + for (key = _i = 0, _len = lines.length; _i < _len; key = ++_i) { + line = lines[key]; + if (key + 1 === line_number) { + pointer = line_pointer; + } else { + pointer = this._spaces(line_pointer.length); + } + lines[key] = "" + pointer + (this._space(key + 1)) + (chalk.cyan(key + 1)) + ": " + line; + } + return lines.slice(start - 1, end).join('\n'); + }; + + SyncHighlight.prototype._space = function(line) { + return this._spaces(4 - String(line).length); + }; + + SyncHighlight.prototype._spaces = function(length, char) { + if (char == null) { + char = ' '; + } + return new Array(length + 1).join(char); + }; + + return SyncHighlight; + + })(); + + module.exports = SyncHighlight; + +}).call(this); diff --git a/node_modules/pryjs/lib/pry/sync_prompt.js b/node_modules/pryjs/lib/pry/sync_prompt.js new file mode 100644 index 0000000..afb857c --- /dev/null +++ b/node_modules/pryjs/lib/pry/sync_prompt.js @@ -0,0 +1,159 @@ +(function() { + var EventEmitter, MultilineState, SinglelineState, SyncPrompt, deasync, readline, _, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + readline = require('readline'); + + EventEmitter = require('events').EventEmitter; + + deasync = require('deasync'); + + _ = require('underscore'); + + MultilineState = (function() { + function MultilineState() {} + + MultilineState.prototype.data = ''; + + MultilineState.prototype.keypress = function(input, chars) { + this.data += chars; + if (this.data.match(/(\r|\n)\1$/)) { + this.data = ''; + input.state('single'); + return input.send_data(); + } else if (chars.match(/(\r|\n)$/)) { + return input.prompt(); + } + }; + + MultilineState.prototype.prompt = function(input, prompt) { + if (this.data === '') { + input.cli.setPrompt(prompt.replace(/[^>](?!$)/g, '-')); + } else { + input.cli.setPrompt(prompt.replace(/.(?!$)/g, '.')); + } + return input.cli.prompt(); + }; + + return MultilineState; + + })(); + + SinglelineState = (function() { + function SinglelineState() {} + + SinglelineState.prototype.keypress = function(input, chars) { + if (chars === '\u0016') { + input.state('multi'); + return input.prompt(); + } else if (chars.match(/(\r|\n)$/)) { + return input.send_data(); + } + }; + + SinglelineState.prototype.prompt = function(input, prompt) { + input.cli.setPrompt(prompt); + return input.cli.prompt(); + }; + + return SinglelineState; + + })(); + + SyncPrompt = (function(_super) { + __extends(SyncPrompt, _super); + + SyncPrompt.prototype.lines = ''; + + SyncPrompt.prototype.count = 0; + + SyncPrompt.prototype.states = { + multi: new MultilineState, + single: new SinglelineState + }; + + SyncPrompt.prototype._state = 'single'; + + SyncPrompt.prototype.done = false; + + function SyncPrompt(options) { + this.options = options != null ? options : {}; + this.close = __bind(this.close, this); + this.type = __bind(this.type, this); + this.prompt = __bind(this.prompt, this); + this.send_data = __bind(this.send_data, this); + this.keypress = __bind(this.keypress, this); + this.line = __bind(this.line, this); + this.state = __bind(this.state, this); + this.options = _.extend(_.pick(process, 'stdin', 'stdout'), this.options); + this.cli = readline.createInterface({ + input: this.options.stdin, + output: this.options.stdout, + completer: this.options.typeahead + }); + this.cli.on('line', this.line); + this.options.stdin.on('data', this.keypress); + } + + SyncPrompt.prototype.state = function(state) { + if (state) { + this._state = state; + } + return this.states[this._state]; + }; + + SyncPrompt.prototype.line = function(line) { + if (line.charCodeAt(0) === 22) { + line = line.slice(1); + } + return this.lines += '\n' + line; + }; + + SyncPrompt.prototype.keypress = function(chars) { + return this.state().keypress(this, chars.toString()); + }; + + SyncPrompt.prototype.send_data = function() { + this.count++; + this.emit('data', this.lines.trim(), { + next: this.prompt, + stop: this.close + }); + return this.lines = ''; + }; + + SyncPrompt.prototype.prompt = function() { + return this.state().prompt(this, "[" + this.count + "] pryjs> "); + }; + + SyncPrompt.prototype.open = function() { + var _results; + this.done = false; + this.prompt(); + _results = []; + while (!this.done) { + _results.push(deasync.runLoopOnce()); + } + return _results; + }; + + SyncPrompt.prototype.type = function(input) { + this.lines = input; + return this.send_data(); + }; + + SyncPrompt.prototype.close = function() { + this.done = true; + this.options.stdin.removeListener('data', this.keypress); + return this.cli.close(); + }; + + return SyncPrompt; + + })(EventEmitter); + + module.exports = SyncPrompt; + +}).call(this); diff --git a/node_modules/pryjs/node_modules/.bin/cake b/node_modules/pryjs/node_modules/.bin/cake new file mode 120000 index 0000000..d95f32a --- /dev/null +++ b/node_modules/pryjs/node_modules/.bin/cake @@ -0,0 +1 @@ +../coffee-script/bin/cake \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/.bin/coffee b/node_modules/pryjs/node_modules/.bin/coffee new file mode 120000 index 0000000..b57f275 --- /dev/null +++ b/node_modules/pryjs/node_modules/.bin/coffee @@ -0,0 +1 @@ +../coffee-script/bin/coffee \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/index.js b/node_modules/pryjs/node_modules/chalk/index.js new file mode 100644 index 0000000..ac1f168 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/index.js @@ -0,0 +1,95 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var chalk = module.exports; + +function build(_styles) { + var builder = function builder() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + builder.__proto__ = proto; + return builder; +} + +var styles = (function () { + var ret = {}; + + ansiStyles.grey = ansiStyles.gray; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build(this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!chalk.enabled || !str) { + return str; + } + + /*jshint validthis: true*/ + var nestedStyles = this._styles; + + for (var i = 0; i < nestedStyles.length; i++) { + var code = ansiStyles[nestedStyles[i]]; + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build([name]); + } + }; + }); + + return ret; +} + +defineProps(chalk, init()); + +chalk.styles = ansiStyles; +chalk.hasColor = hasAnsi; +chalk.stripColor = stripAnsi; +chalk.supportsColor = supportsColor; + +// detect mode if not set manually +if (chalk.enabled === undefined) { + chalk.enabled = chalk.supportsColor; +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi new file mode 120000 index 0000000..c1e7413 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi @@ -0,0 +1 @@ +../has-ansi/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi new file mode 120000 index 0000000..b65c9f8 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi @@ -0,0 +1 @@ +../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color new file mode 120000 index 0000000..af0f05e --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color @@ -0,0 +1 @@ +../supports-color/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..2d8b472 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js @@ -0,0 +1,40 @@ +'use strict'; +var styles = module.exports; + +var codes = { + reset: [0, 0], + + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29], + + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] +}; + +Object.keys(codes).forEach(function (key) { + var val = codes[key]; + var style = styles[key] = {}; + style.open = '\u001b[' + val[0] + 'm'; + style.close = '\u001b[' + val[1] + 'm'; +}); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..c260bf9 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json @@ -0,0 +1,74 @@ +{ + "name": "ansi-styles", + "version": "1.1.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-styles.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-styles/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-styles", + "_id": "ansi-styles@1.1.0", + "_shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", + "_from": "ansi-styles@>=1.1.0 <2.0.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", + "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..73584cc --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md @@ -0,0 +1,70 @@ +# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. + +![screenshot](screenshot.png) + + +## Install + +```sh +$ npm install --save ansi-styles +``` + + +## Usage + +```js +var ansi = require('ansi-styles'); + +console.log(ansi.green.open + 'Hello world!' + ansi.green.close); +``` + + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### General + +- `reset` +- `bold` +- `dim` +- `italic` *(not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(not widely supported)* + +### Text colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js new file mode 100644 index 0000000..7834bf9 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json new file mode 100644 index 0000000..ca8fbef --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json @@ -0,0 +1,71 @@ +{ + "name": "escape-string-regexp", + "version": "1.0.4", + "description": "Escape RegExp special characters", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "engines": { + "node": ">=0.8.0" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "escape", + "regex", + "regexp", + "re", + "regular", + "expression", + "string", + "str", + "special", + "characters" + ], + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "gitHead": "e9ca6832a9506ca26402cb0e6dc95efcf35b0b97", + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "homepage": "https://github.com/sindresorhus/escape-string-regexp", + "_id": "escape-string-regexp@1.0.4", + "_shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", + "_from": "escape-string-regexp@>=1.0.0 <2.0.0", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.1", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "dist": { + "shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", + "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md new file mode 100644 index 0000000..87ac82d --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md @@ -0,0 +1,27 @@ +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +``` +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +const escapeStringRegexp = require('escape-string-regexp'); + +const escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> 'how much \$ for a unicorn\?' + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js new file mode 100755 index 0000000..e0956fc --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js @@ -0,0 +1,53 @@ +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var hasAnsi = require('./'); +var input = process.argv[2]; + +function stdin(cb) { + var ret = ''; + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function (data) { + ret += data; + }); + process.stdin.on('end', function () { + cb(ret); + }); +} + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ has-ansi ', + ' $ echo | has-ansi', + '', + 'Exits with code 0 if input has ANSI escape codes and 1 if not' + ].join('\n')); +} + +function init(data) { + process.exit(hasAnsi(data) ? 0 : 1); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (process.stdin.isTTY) { + if (!input) { + help(); + return; + } + + init(input); +} else { + stdin(init); +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js new file mode 100644 index 0000000..98fae06 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js @@ -0,0 +1,4 @@ +'use strict'; +var ansiRegex = require('ansi-regex'); +var re = new RegExp(ansiRegex().source); // remove the `g` flag +module.exports = re.test.bind(re); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js new file mode 100644 index 0000000..783c5c7 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js @@ -0,0 +1,4 @@ +'use strict'; +module.exports = function () { + return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; +}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json new file mode 100644 index 0000000..1bf938c --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json @@ -0,0 +1,79 @@ +{ + "name": "ansi-regex", + "version": "0.2.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-regex.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-regex/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-regex", + "_id": "ansi-regex@0.2.1", + "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "_from": "ansi-regex@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md new file mode 100644 index 0000000..ae876e7 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md @@ -0,0 +1,33 @@ +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) + +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save ansi-regex +``` + + +## Usage + +```js +var ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001b[4mcake\u001b[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001b[4mcake\u001b[0m'.match(ansiRegex()); +//=> ['\u001b[4m', '\u001b[0m'] +``` + +*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json new file mode 100644 index 0000000..4628a1c --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json @@ -0,0 +1,85 @@ +{ + "name": "has-ansi", + "version": "0.1.0", + "description": "Check if a string has ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/has-ansi.git" + }, + "bin": { + "has-ansi": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "string", + "tty", + "escape", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern", + "has" + ], + "dependencies": { + "ansi-regex": "^0.2.0" + }, + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/has-ansi/issues" + }, + "homepage": "https://github.com/sindresorhus/has-ansi", + "_id": "has-ansi@0.1.0", + "_shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", + "_from": "has-ansi@>=0.1.0 <0.2.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", + "tarball": "http://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md new file mode 100644 index 0000000..0702212 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md @@ -0,0 +1,45 @@ +# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) + +> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save has-ansi +``` + + +## Usage + +```js +var hasAnsi = require('has-ansi'); + +hasAnsi('\u001b[4mcake\u001b[0m'); +//=> true + +hasAnsi('cake'); +//=> false +``` + + +## CLI + +```sh +$ npm install --global has-ansi +``` + +``` +$ has-ansi --help + +Usage + $ has-ansi + $ echo | has-ansi + +Exits with code 0 if input has ANSI escape codes and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js new file mode 100755 index 0000000..602ae00 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js @@ -0,0 +1,39 @@ +#!/usr/bin/env node +'use strict'; +var fs = require('fs'); +var pkg = require('./package.json'); +var strip = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ strip-ansi > ', + ' $ cat | strip-ansi > ', + '', + 'Example', + ' $ strip-ansi unicorn.txt > unicorn-stripped.txt' + ].join('\n')); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (input) { + process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); + return; +} + +process.stdin.setEncoding('utf8'); +process.stdin.on('data', function (data) { + process.stdout.write(strip(data)); +}); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js new file mode 100644 index 0000000..099480f --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js @@ -0,0 +1,6 @@ +'use strict'; +var ansiRegex = require('ansi-regex')(); + +module.exports = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js new file mode 100644 index 0000000..783c5c7 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js @@ -0,0 +1,4 @@ +'use strict'; +module.exports = function () { + return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; +}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json new file mode 100644 index 0000000..1bf938c --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json @@ -0,0 +1,79 @@ +{ + "name": "ansi-regex", + "version": "0.2.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-regex.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-regex/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-regex", + "_id": "ansi-regex@0.2.1", + "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "_from": "ansi-regex@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md new file mode 100644 index 0000000..ae876e7 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md @@ -0,0 +1,33 @@ +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) + +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save ansi-regex +``` + + +## Usage + +```js +var ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001b[4mcake\u001b[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001b[4mcake\u001b[0m'.match(ansiRegex()); +//=> ['\u001b[4m', '\u001b[0m'] +``` + +*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json new file mode 100644 index 0000000..e490f3c --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json @@ -0,0 +1,84 @@ +{ + "name": "strip-ansi", + "version": "0.3.0", + "description": "Strip ANSI escape codes", + "license": "MIT", + "bin": { + "strip-ansi": "cli.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/strip-ansi.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "strip", + "trim", + "remove", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-regex": "^0.2.1" + }, + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/strip-ansi/issues" + }, + "homepage": "https://github.com/sindresorhus/strip-ansi", + "_id": "strip-ansi@0.3.0", + "_shasum": "25f48ea22ca79187f3174a4db8759347bb126220", + "_from": "strip-ansi@>=0.3.0 <0.4.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "25f48ea22ca79187f3174a4db8759347bb126220", + "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md new file mode 100644 index 0000000..5477079 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md @@ -0,0 +1,43 @@ +# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) + +> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save strip-ansi +``` + + +## Usage + +```js +var stripAnsi = require('strip-ansi'); + +stripAnsi('\x1b[4mcake\x1b[0m'); +//=> 'cake' +``` + + +## CLI + +```sh +$ npm install --global strip-ansi +``` + +```sh +$ strip-ansi --help + +Usage + $ strip-ansi > + $ cat | strip-ansi > + +Example + $ strip-ansi unicorn.txt > unicorn-stripped.txt +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js new file mode 100755 index 0000000..0617971 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js @@ -0,0 +1,28 @@ +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var supportsColor = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ supports-color', + '', + 'Exits with code 0 if color is supported and 1 if not' + ].join('\n')); +} + +if (!input || process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +process.exit(supportsColor ? 0 : 1); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js new file mode 100644 index 0000000..092d0ba --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js @@ -0,0 +1,32 @@ +'use strict'; +module.exports = (function () { + if (process.argv.indexOf('--no-color') !== -1) { + return false; + } + + if (process.argv.indexOf('--color') !== -1) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json new file mode 100644 index 0000000..9af3fe7 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json @@ -0,0 +1,78 @@ +{ + "name": "supports-color", + "version": "0.2.0", + "description": "Detect whether a terminal supports color", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/supports-color.git" + }, + "bin": { + "supports-color": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "ansi", + "styles", + "tty", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "support", + "supports", + "capability", + "detect" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/supports-color/issues" + }, + "homepage": "https://github.com/sindresorhus/supports-color", + "_id": "supports-color@0.2.0", + "_shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", + "_from": "supports-color@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", + "tarball": "http://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md new file mode 100644 index 0000000..7f07e5f --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md @@ -0,0 +1,44 @@ +# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color) + +> Detect whether a terminal supports color + + +## Install + +```sh +$ npm install --save supports-color +``` + + +## Usage + +```js +var supportsColor = require('supports-color'); + +if (supportsColor) { + console.log('Terminal supports color'); +} +``` + +It obeys the `--color` and `--no-color` CLI flags. + + +## CLI + +```sh +$ npm install --global supports-color +``` + +```sh +$ supports-color --help + +Usage + $ supports-color + +# Exits with code 0 if color is supported and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/package.json b/node_modules/pryjs/node_modules/chalk/package.json new file mode 100644 index 0000000..a2907ac --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/package.json @@ -0,0 +1,82 @@ +{ + "name": "chalk", + "version": "0.5.1", + "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/chalk.git" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha", + "bench": "matcha benchmark.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "ansi", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + }, + "devDependencies": { + "matcha": "^0.5.0", + "mocha": "*" + }, + "gitHead": "994758f01293f1fdcf63282e9917cb9f2cfbdaac", + "bugs": { + "url": "https://github.com/sindresorhus/chalk/issues" + }, + "homepage": "https://github.com/sindresorhus/chalk", + "_id": "chalk@0.5.1", + "_shasum": "663b3a648b68b55d04690d49167aa837858f2174", + "_from": "chalk@>=0.5.1 <0.6.0", + "_npmVersion": "1.4.14", + "_npmUser": { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + }, + "dist": { + "shasum": "663b3a648b68b55d04690d49167aa837858f2174", + "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/chalk/readme.md b/node_modules/pryjs/node_modules/chalk/readme.md new file mode 100644 index 0000000..239c791 --- /dev/null +++ b/node_modules/pryjs/node_modules/chalk/readme.md @@ -0,0 +1,175 @@ +# chalk + +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) +![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg) + +[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png) + + +## Why + +- Highly performant +- Doesn't extend String.prototype +- Expressive API +- Ability to nest styles +- Clean and focused +- Auto-detects color support +- Actively maintained +- [Used by 1000+ modules](https://npmjs.org/browse/depended/chalk) + + +## Install + +```sh +$ npm install --save chalk +``` + + +## Usage + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +console.log( chalk.blue('Hello world!') ); + +// combine styled and normal strings +console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); + +// compose multiple styles using the chainable API +console.log( chalk.blue.bgRed.bold('Hello world!') ); + +// pass in multiple arguments +console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); + +// nest styles +console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); + +// nest styles of the same type even (color, underline, background) +console.log( chalk.green('I am a green line ' + chalk.blue('with a blue substring') + ' that becomes green again!') ); +``` + +Easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + +Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). + +```js +var name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> Hello Sindre +``` + + +## API + +### chalk.` + + +

%(title)s

+ +''' + +DOC_HEADER_EXTERNALCSS = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_FOOTER = '''\ + + +''' + + +class HtmlFormatter(Formatter): + r""" + Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
+    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` + option. + + If the `linenos` option is set to ``"table"``, the ``
`` is
+    additionally wrapped inside a ```` which has one row and two
+    cells: one containing the line numbers and one containing the code.
+    Example:
+
+    .. sourcecode:: html
+
+        
+
+ + +
+
1
+            2
+
+
def foo(bar):
+              pass
+            
+
+ + (whitespace added to improve clarity). + + Wrapping can be disabled using the `nowrap` option. + + A list of lines can be specified using the `hl_lines` option to make these + lines highlighted (as of Pygments 0.11). + + With the `full` option, a complete HTML 4 document is output, including + the style definitions inside a `` + + +

%(title)s

+ +''' + +DOC_HEADER_EXTERNALCSS = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_FOOTER = '''\ + + +''' + + +class HtmlFormatter(Formatter): + r""" + Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
+    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` + option. + + If the `linenos` option is set to ``"table"``, the ``
`` is
+    additionally wrapped inside a ```` which has one row and two
+    cells: one containing the line numbers and one containing the code.
+    Example:
+
+    .. sourcecode:: html
+
+        
+
+ + +
+
1
+            2
+
+
def foo(bar):
+              pass
+            
+
+ + (whitespace added to improve clarity). + + Wrapping can be disabled using the `nowrap` option. + + A list of lines can be specified using the `hl_lines` option to make these + lines highlighted (as of Pygments 0.11). + + With the `full` option, a complete HTML 4 document is output, including + the style definitions inside a `` + +{%- endif %} +{% endblock %} + +{% block header %} +
+ +{% endblock %} + +{% block footer %} + +
{# closes "outerwrapper" div #} +{% endblock %} + +{% block sidebarrel %} +{% endblock %} + +{% block sidebarsourcelink %} +{% endblock %} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png new file mode 100644 index 0000000000000000000000000000000000000000..46892b801ac1088cdb7091f230bcb0eec1bfbe85 GIT binary patch literal 51903 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 literal 0 HcmV?d00001 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png new file mode 100644 index 0000000000000000000000000000000000000000..e45715f914df0b9ce5650cd81f826565d794bc6f GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRO!3HEZ#7tid5-9M9ECz~A24Tjhjus6-LG}_) zUsv|KjDqY+yxD&zFaw41JY5_^BrYc>NGv&UGh(5%v^3ic2_Tqf;9+ScrKuZn^uU2H zQyfn*9&-yU`CQ%jRM<_jbEVs=+4%-On`#az=vrO%C^ha<()jUzeq*EHImaYp10cwd vh@M+!5EQwitFh7Z?ulO_J-(9;uViOPP?5c=x_{|>pv?@Pu6{1-oD!M<&SgTz literal 0 HcmV?d00001 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1a24dc7dc7e8d989ff3c98eee2c233074e3c0e GIT binary patch literal 26933 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
    iqU(V_fBwX^d}2|D=Bk$roABOZOF$hQ9i8_E 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 literal 0 HcmV?d00001 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t new file mode 100644 index 0000000..838782b --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t @@ -0,0 +1,401 @@ +/* + * pygments14.css + * ~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- pygments14 theme. Heavily copied from sphinx13. + * + * :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + text-align: center; + background-image: url(bodybg.png); + background-color: {{ theme_background }}; + color: black; + padding: 0; + /* + border-right: 1px solid {{ theme_border }}; + border-left: 1px solid {{ theme_border }}; + */ + + margin: 0 auto; + min-width: 780px; + max-width: 1080px; +} + +.outerwrapper { + background-image: url(docbg.png); + background-attachment: fixed; +} + +.pageheader { + text-align: left; + padding: 10px 15px; +} + +.pageheader ul { + float: right; + color: white; + list-style-type: none; + padding-left: 0; + margin-top: 40px; + margin-right: 10px; +} + +.pageheader li { + float: left; + margin: 0 0 0 10px; +} + +.pageheader li a { + border-radius: 3px; + padding: 8px 12px; + color: {{ theme_darkgray }}; + text-shadow: 0 0 5px rgba(0, 0, 0, 0.2); +} + +.pageheader li a:hover { + background-color: {{ theme_yellow }}; + color: black; + text-shadow: none; +} + +div.document { + text-align: left; + /*border-left: 1em solid {{ theme_lightyellow }};*/ +} + +div.bodywrapper { + margin: 0 12px 0 240px; + background-color: white; +/* border-right: 1px solid {{ theme_border }}; */ +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} + +div.related { + font-size: 1em; + color: {{ theme_darkgray }}; +} + +div.related ul { + background-image: url(relbg.png); + background-repeat: repeat-y; + background-color: {{ theme_yellow }}; + height: 1.9em; + /* + border-top: 1px solid {{ theme_border }}; + border-bottom: 1px solid {{ theme_border }}; + */ +} + +div.related ul li { + margin: 0 5px 0 0; + padding: 0; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: {{ theme_darkgray }}; + /*text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5);*/ +} + +div.related ul li a:hover { + text-decoration: underline; + text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); +} + +div.sphinxsidebarwrapper { + position: relative; + top: 0px; + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + padding: 0 0px 15px 15px; + width: 210px; + float: left; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar .logo { + font-size: 1.8em; + color: #666; + font-weight: 300; + text-align: center; +} + +div.sphinxsidebar .logo img { + vertical-align: middle; +} + +div.sphinxsidebar input { + border: 1px solid #aaa; + font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 1em; +} + +div.sphinxsidebar h3 { + font-size: 1.5em; + /* border-top: 1px solid {{ theme_border }}; */ + margin-top: 1em; + margin-bottom: 0.5em; + padding-top: 0.5em; +} + +div.sphinxsidebar h4 { + font-size: 1.2em; + margin-bottom: 0; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin-right: -15px; + margin-left: -15px; + padding-right: 14px; + padding-left: 14px; + color: #333; + font-weight: 300; + /*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/ +} + +div.sphinxsidebarwrapper > h3:first-child { + margin-top: 0.5em; + border: none; +} + +div.sphinxsidebar h3 a { + color: #333; +} + +div.sphinxsidebar ul { + color: #444; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; + list-style-image: url(listitem.png); +} + +div.footer { + color: {{ theme_darkgray }}; + text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8); + padding: 2em; + text-align: center; + clear: both; + font-size: 0.8em; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: {{ theme_darkgreen }}; + text-decoration: none; +} + +a:hover { + color: {{ theme_darkyellow }}; +} + +div.body a { + text-decoration: underline; +} + +h1 { + margin: 10px 0 0 0; + font-size: 2.4em; + color: {{ theme_darkgray }}; + font-weight: 300; +} + +h2 { + margin: 1.em 0 0.2em 0; + font-size: 1.5em; + font-weight: 300; + padding: 0; + color: {{ theme_darkgreen }}; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.3em; + font-weight: 300; +} + +div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { + text-decoration: none; +} + +div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, div.body h4 a tt, div.body h5 a tt, div.body h6 a tt { + color: {{ theme_darkgreen }} !important; + font-size: inherit !important; +} + +a.headerlink { + color: {{ theme_green }} !important; + font-size: 12px; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none !important; + float: right; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 14px; + letter-spacing: -0.02em; +} + +tt { + background-color: #f2f2f2; + border: 1px solid #ddd; + border-radius: 2px; + color: #333; + padding: 1px; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a tt { + border: 0; + color: {{ theme_darkgreen }}; +} + +a tt:hover { + color: {{ theme_darkyellow }}; +} + +pre { + font-family: 'Consolas', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 13px; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + border-radius: 2px; + background-color: #f8f8f8; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 0px 7px; + border: 1px solid #ccc; + margin-left: 1em; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition, div.warning { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 1px solid #86989B; + border-radius: 2px; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition p, div.warning p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition pre, div.warning pre { + margin: 0.4em 1em 0.4em 1em; +} + +div.admonition p.admonition-title, +div.warning p.admonition-title { + margin-top: 1em; + padding-top: 0.5em; + font-weight: bold; +} + +div.warning { + border: 1px solid #940000; +/* background-color: #FFCCCF;*/ +} + +div.warning p.admonition-title { +} + +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +.viewcode-back { + font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf new file mode 100644 index 0000000..fffe66d --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf @@ -0,0 +1,15 @@ +[theme] +inherit = basic +stylesheet = pygments14.css +pygments_style = friendly + +[options] +green = #66b55e +darkgreen = #36852e +darkgray = #666666 +border = #66b55e +yellow = #f4cd00 +darkyellow = #d4ad00 +lightyellow = #fffbe3 +background = #f9f9f9 +font = PT Sans diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py new file mode 100644 index 0000000..864ec7a --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py @@ -0,0 +1,249 @@ +# -*- coding: utf-8 -*- +# +# Pygments documentation build configuration file, created by +# sphinx-quickstart on Sat Jan 18 17:07:37 2014. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('..')) + +import pygments + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments.sphinxext'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Pygments' +copyright = u'2014, Georg Brandl' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = pygments.__version__ +# The full version, including alpha/beta/rc tags. +release = version + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +#pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'pygments14' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +html_theme_path = ['_themes'] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = 'favicon.ico' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +html_sidebars = {'index': 'indexsidebar.html', + 'docs/*': 'docssidebar.html'} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Pygmentsdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'Pygments.tex', u'Pygments Documentation', + u'Georg Brandl', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'pygments', u'Pygments Documentation', + [u'Georg Brandl'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------------ + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'Pygments', u'Pygments Documentation', + u'Georg Brandl', 'Pygments', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + + +# Example configuration for intersphinx: refer to the Python standard library. +#intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst new file mode 100644 index 0000000..123a464 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst @@ -0,0 +1,316 @@ +.. -*- mode: rst -*- + +===================== +The full Pygments API +===================== + +This page describes the Pygments API. + +High-level API +============== + +.. module:: pygments + +Functions from the :mod:`pygments` module: + +.. function:: lex(code, lexer) + + Lex `code` with the `lexer` (must be a `Lexer` instance) + and return an iterable of tokens. Currently, this only calls + `lexer.get_tokens()`. + +.. function:: format(tokens, formatter, outfile=None) + + Format a token stream (iterable of tokens) `tokens` with the + `formatter` (must be a `Formatter` instance). The result is + written to `outfile`, or if that is ``None``, returned as a + string. + +.. function:: highlight(code, lexer, formatter, outfile=None) + + This is the most high-level highlighting function. + It combines `lex` and `format` in one function. + + +.. module:: pygments.lexers + +Functions from :mod:`pygments.lexers`: + +.. function:: get_lexer_by_name(alias, **options) + + Return an instance of a `Lexer` subclass that has `alias` in its + aliases list. The lexer is given the `options` at its + instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is + found. + +.. function:: get_lexer_for_filename(fn, **options) + + Return a `Lexer` subclass instance that has a filename pattern + matching `fn`. The lexer is given the `options` at its + instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no lexer for that filename + is found. + +.. function:: get_lexer_for_mimetype(mime, **options) + + Return a `Lexer` subclass instance that has `mime` in its mimetype + list. The lexer is given the `options` at its instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if not lexer for that mimetype + is found. + +.. function:: guess_lexer(text, **options) + + Return a `Lexer` subclass instance that's guessed from the text in + `text`. For that, the :meth:`.analyse_text()` method of every known lexer + class is called with the text as argument, and the lexer which returned the + highest value will be instantiated and returned. + + :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can + handle the content. + +.. function:: guess_lexer_for_filename(filename, text, **options) + + As :func:`guess_lexer()`, but only lexers which have a pattern in `filenames` + or `alias_filenames` that matches `filename` are taken into consideration. + + :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can + handle the content. + +.. function:: get_all_lexers() + + Return an iterable over all registered lexers, yielding tuples in the + format:: + + (longname, tuple of aliases, tuple of filename patterns, tuple of mimetypes) + + .. versionadded:: 0.6 + + +.. module:: pygments.formatters + +Functions from :mod:`pygments.formatters`: + +.. function:: get_formatter_by_name(alias, **options) + + Return an instance of a :class:`.Formatter` subclass that has `alias` in its + aliases list. The formatter is given the `options` at its instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no formatter with that + alias is found. + +.. function:: get_formatter_for_filename(fn, **options) + + Return a :class:`.Formatter` subclass instance that has a filename pattern + matching `fn`. The formatter is given the `options` at its instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename + is found. + + +.. module:: pygments.styles + +Functions from :mod:`pygments.styles`: + +.. function:: get_style_by_name(name) + + Return a style class by its short name. The names of the builtin styles + are listed in :data:`pygments.styles.STYLE_MAP`. + + Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is + found. + +.. function:: get_all_styles() + + Return an iterable over all registered styles, yielding their names. + + .. versionadded:: 0.6 + + +.. module:: pygments.lexer + +Lexers +====== + +The base lexer class from which all lexers are derived is: + +.. class:: Lexer(**options) + + The constructor takes a \*\*keywords dictionary of options. + Every subclass must first process its own options and then call + the `Lexer` constructor, since it processes the `stripnl`, + `stripall` and `tabsize` options. + + An example looks like this: + + .. sourcecode:: python + + def __init__(self, **options): + self.compress = options.get('compress', '') + Lexer.__init__(self, **options) + + As these options must all be specifiable as strings (due to the + command line usage), there are various utility functions + available to help with that, see `Option processing`_. + + .. method:: get_tokens(text) + + This method is the basic interface of a lexer. It is called by + the `highlight()` function. It must process the text and return an + iterable of ``(tokentype, value)`` pairs from `text`. + + Normally, you don't need to override this method. The default + implementation processes the `stripnl`, `stripall` and `tabsize` + options and then yields all tokens from `get_tokens_unprocessed()`, + with the ``index`` dropped. + + .. method:: get_tokens_unprocessed(text) + + This method should process the text and return an iterable of + ``(index, tokentype, value)`` tuples where ``index`` is the starting + position of the token within the input text. + + This method must be overridden by subclasses. + + .. staticmethod:: analyse_text(text) + + A static method which is called for lexer guessing. It should analyse + the text and return a float in the range from ``0.0`` to ``1.0``. + If it returns ``0.0``, the lexer will not be selected as the most + probable one, if it returns ``1.0``, it will be selected immediately. + + .. note:: You don't have to add ``@staticmethod`` to the definition of + this method, this will be taken care of by the Lexer's metaclass. + + For a list of known tokens have a look at the :doc:`tokens` page. + + A lexer also can have the following attributes (in fact, they are mandatory + except `alias_filenames`) that are used by the builtin lookup mechanism. + + .. attribute:: name + + Full name for the lexer, in human-readable form. + + .. attribute:: aliases + + A list of short, unique identifiers that can be used to lookup + the lexer from a list, e.g. using `get_lexer_by_name()`. + + .. attribute:: filenames + + A list of `fnmatch` patterns that match filenames which contain + content for this lexer. The patterns in this list should be unique among + all lexers. + + .. attribute:: alias_filenames + + A list of `fnmatch` patterns that match filenames which may or may not + contain content for this lexer. This list is used by the + :func:`.guess_lexer_for_filename()` function, to determine which lexers + are then included in guessing the correct one. That means that + e.g. every lexer for HTML and a template language should include + ``\*.html`` in this list. + + .. attribute:: mimetypes + + A list of MIME types for content that can be lexed with this + lexer. + + +.. module:: pygments.formatter + +Formatters +========== + +A formatter is derived from this class: + + +.. class:: Formatter(**options) + + As with lexers, this constructor processes options and then must call the + base class :meth:`__init__`. + + The :class:`Formatter` class recognizes the options `style`, `full` and + `title`. It is up to the formatter class whether it uses them. + + .. method:: get_style_defs(arg='') + + This method must return statements or declarations suitable to define + the current style for subsequent highlighted text (e.g. CSS classes + in the `HTMLFormatter`). + + The optional argument `arg` can be used to modify the generation and + is formatter dependent (it is standardized because it can be given on + the command line). + + This method is called by the ``-S`` :doc:`command-line option `, + the `arg` is then given by the ``-a`` option. + + .. method:: format(tokensource, outfile) + + This method must format the tokens from the `tokensource` iterable and + write the formatted version to the file object `outfile`. + + Formatter options can control how exactly the tokens are converted. + + .. versionadded:: 0.7 + A formatter must have the following attributes that are used by the + builtin lookup mechanism. + + .. attribute:: name + + Full name for the formatter, in human-readable form. + + .. attribute:: aliases + + A list of short, unique identifiers that can be used to lookup + the formatter from a list, e.g. using :func:`.get_formatter_by_name()`. + + .. attribute:: filenames + + A list of :mod:`fnmatch` patterns that match filenames for which this + formatter can produce output. The patterns in this list should be unique + among all formatters. + + +.. module:: pygments.util + +Option processing +================= + +The :mod:`pygments.util` module has some utility functions usable for option +processing: + +.. exception:: OptionError + + This exception will be raised by all option processing functions if + the type or value of the argument is not correct. + +.. function:: get_bool_opt(options, optname, default=None) + + Interpret the key `optname` from the dictionary `options` as a boolean and + return it. Return `default` if `optname` is not in `options`. + + The valid string values for ``True`` are ``1``, ``yes``, ``true`` and + ``on``, the ones for ``False`` are ``0``, ``no``, ``false`` and ``off`` + (matched case-insensitively). + +.. function:: get_int_opt(options, optname, default=None) + + As :func:`get_bool_opt`, but interpret the value as an integer. + +.. function:: get_list_opt(options, optname, default=None) + + If the key `optname` from the dictionary `options` is a string, + split it at whitespace and return it. If it is already a list + or a tuple, it is returned as a list. + +.. function:: get_choice_opt(options, optname, allowed, default=None) + + If the key `optname` from the dictionary is not in the sequence + `allowed`, raise an error, otherwise return it. + + .. versionadded:: 0.8 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst new file mode 100644 index 0000000..f8373f0 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst @@ -0,0 +1,4 @@ +Full contributor list +===================== + +.. include:: ../../AUTHORS diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst new file mode 100644 index 0000000..f264cab --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst @@ -0,0 +1 @@ +.. include:: ../../CHANGES diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst new file mode 100644 index 0000000..bf0177a --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst @@ -0,0 +1,145 @@ +.. -*- mode: rst -*- + +====================== +Command Line Interface +====================== + +You can use Pygments from the shell, provided you installed the +:program:`pygmentize` script:: + + $ pygmentize test.py + print "Hello World" + +will print the file test.py to standard output, using the Python lexer +(inferred from the file name extension) and the terminal formatter (because +you didn't give an explicit formatter name). + +If you want HTML output:: + + $ pygmentize -f html -l python -o test.html test.py + +As you can see, the -l option explicitly selects a lexer. As seen above, if you +give an input file name and it has an extension that Pygments recognizes, you can +omit this option. + +The ``-o`` option gives an output file name. If it is not given, output is +written to stdout. + +The ``-f`` option selects a formatter (as with ``-l``, it can also be omitted +if an output file name is given and has a supported extension). +If no output file name is given and ``-f`` is omitted, the +:class:`.TerminalFormatter` is used. + +The above command could therefore also be given as:: + + $ pygmentize -o test.html test.py + +To create a full HTML document, including line numbers and stylesheet (using the +"emacs" style), highlighting the Python file ``test.py`` to ``test.html``:: + + $ pygmentize -O full,style=emacs -o test.html test.py + + +Options and filters +------------------- + +Lexer and formatter options can be given using the ``-O`` option:: + + $ pygmentize -f html -O style=colorful,linenos=1 -l python test.py + +Be sure to enclose the option string in quotes if it contains any special shell +characters, such as spaces or expansion wildcards like ``*``. If an option +expects a list value, separate the list entries with spaces (you'll have to +quote the option value in this case too, so that the shell doesn't split it). + +Since the ``-O`` option argument is split at commas and expects the split values +to be of the form ``name=value``, you can't give an option value that contains +commas or equals signs. Therefore, an option ``-P`` is provided (as of Pygments +0.9) that works like ``-O`` but can only pass one option per ``-P``. Its value +can then contain all characters:: + + $ pygmentize -P "heading=Pygments, the Python highlighter" ... + +Filters are added to the token stream using the ``-F`` option:: + + $ pygmentize -f html -l pascal -F keywordcase:case=upper main.pas + +As you see, options for the filter are given after a colon. As for ``-O``, the +filter name and options must be one shell word, so there may not be any spaces +around the colon. + + +Generating styles +----------------- + +Formatters normally don't output full style information. For example, the HTML +formatter by default only outputs ```` tags with ``class`` attributes. +Therefore, there's a special ``-S`` option for generating style definitions. +Usage is as follows:: + + $ pygmentize -f html -S colorful -a .syntax + +generates a CSS style sheet (because you selected the HTML formatter) for +the "colorful" style prepending a ".syntax" selector to all style rules. + +For an explanation what ``-a`` means for :doc:`a particular formatter +`, look for the `arg` argument for the formatter's +:meth:`.get_style_defs()` method. + + +Getting lexer names +------------------- + +.. versionadded:: 1.0 + +The ``-N`` option guesses a lexer name for a given filename, so that :: + + $ pygmentize -N setup.py + +will print out ``python``. It won't highlight anything yet. If no specific +lexer is known for that filename, ``text`` is printed. + + +Getting help +------------ + +The ``-L`` option lists lexers, formatters, along with their short +names and supported file name extensions, styles and filters. If you want to see +only one category, give it as an argument:: + + $ pygmentize -L filters + +will list only all installed filters. + +The ``-H`` option will give you detailed information (the same that can be found +in this documentation) about a lexer, formatter or filter. Usage is as follows:: + + $ pygmentize -H formatter html + +will print the help for the HTML formatter, while :: + + $ pygmentize -H lexer python + +will print the help for the Python lexer, etc. + + +A note on encodings +------------------- + +.. versionadded:: 0.9 + +Pygments tries to be smart regarding encodings in the formatting process: + +* If you give an ``encoding`` option, it will be used as the input and + output encoding. + +* If you give an ``outencoding`` option, it will override ``encoding`` + as the output encoding. + +* If you don't give an encoding and have given an output file, the default + encoding for lexer and formatter is ``latin1`` (which will pass through + all non-ASCII characters). + +* If you don't give an encoding and haven't given an output file (that means + output is written to the console), the default encoding for lexer and + formatter is the terminal encoding (``sys.stdout.encoding``). diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst new file mode 100644 index 0000000..bc399a6 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst @@ -0,0 +1,70 @@ +.. -*- mode: rst -*- + +===================== +Write your own filter +===================== + +.. versionadded:: 0.7 + +Writing own filters is very easy. All you have to do is to subclass +the `Filter` class and override the `filter` method. Additionally a +filter is instanciated with some keyword arguments you can use to +adjust the behavior of your filter. + + +Subclassing Filters +=================== + +As an example, we write a filter that converts all `Name.Function` tokens +to normal `Name` tokens to make the output less colorful. + +.. sourcecode:: python + + from pygments.util import get_bool_opt + from pygments.token import Name + from pygments.filter import Filter + + class UncolorFilter(Filter): + + def __init__(self, **options): + Filter.__init__(self, **options) + self.class_too = get_bool_opt(options, 'classtoo') + + def filter(self, lexer, stream): + for ttype, value in stream: + if ttype is Name.Function or (self.class_too and + ttype is Name.Class): + ttype = Name + yield ttype, value + +Some notes on the `lexer` argument: that can be quite confusing since it doesn't +need to be a lexer instance. If a filter was added by using the `add_filter()` +function of lexers, that lexer is registered for the filter. In that case +`lexer` will refer to the lexer that has registered the filter. It *can* be used +to access options passed to a lexer. Because it could be `None` you always have +to check for that case if you access it. + + +Using a decorator +================= + +You can also use the `simplefilter` decorator from the `pygments.filter` module: + +.. sourcecode:: python + + from pygments.util import get_bool_opt + from pygments.token import Name + from pygments.filter import simplefilter + + + @simplefilter + def uncolor(lexer, stream, options): + class_too = get_bool_opt(options, 'classtoo') + for ttype, value in stream: + if ttype is Name.Function or (class_too and + ttype is Name.Class): + ttype = Name + yield ttype, value + +The decorator automatically subclasses an internal filter class and uses the +decorated function for filtering. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst new file mode 100644 index 0000000..ff2519a --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst @@ -0,0 +1,41 @@ +.. -*- mode: rst -*- + +======= +Filters +======= + +.. versionadded:: 0.7 + +You can filter token streams coming from lexers to improve or annotate the +output. For example, you can highlight special words in comments, convert +keywords to upper or lowercase to enforce a style guide etc. + +To apply a filter, you can use the `add_filter()` method of a lexer: + +.. sourcecode:: pycon + + >>> from pygments.lexers import PythonLexer + >>> l = PythonLexer() + >>> # add a filter given by a string and options + >>> l.add_filter('codetagify', case='lower') + >>> l.filters + [] + >>> from pygments.filters import KeywordCaseFilter + >>> # or give an instance + >>> l.add_filter(KeywordCaseFilter(case='lower')) + +The `add_filter()` method takes keyword arguments which are forwarded to +the constructor of the filter. + +To get a list of all registered filters by name, you can use the +`get_all_filters()` function from the `pygments.filters` module that returns an +iterable for all known filters. + +If you want to write your own filter, have a look at :doc:`Write your own filter +`. + + +Builtin Filters +=============== + +.. pygmentsdoc:: filters diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst new file mode 100644 index 0000000..2bfac05 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst @@ -0,0 +1,169 @@ +.. -*- mode: rst -*- + +======================== +Write your own formatter +======================== + +As well as creating :doc:`your own lexer `, writing a new +formatter for Pygments is easy and straightforward. + +A formatter is a class that is initialized with some keyword arguments (the +formatter options) and that must provides a `format()` method. +Additionally a formatter should provide a `get_style_defs()` method that +returns the style definitions from the style in a form usable for the +formatter's output format. + + +Quickstart +========== + +The most basic formatter shipped with Pygments is the `NullFormatter`. It just +sends the value of a token to the output stream: + +.. sourcecode:: python + + from pygments.formatter import Formatter + + class NullFormatter(Formatter): + def format(self, tokensource, outfile): + for ttype, value in tokensource: + outfile.write(value) + +As you can see, the `format()` method is passed two parameters: `tokensource` +and `outfile`. The first is an iterable of ``(token_type, value)`` tuples, +the latter a file like object with a `write()` method. + +Because the formatter is that basic it doesn't overwrite the `get_style_defs()` +method. + + +Styles +====== + +Styles aren't instantiated but their metaclass provides some class functions +so that you can access the style definitions easily. + +Styles are iterable and yield tuples in the form ``(ttype, d)`` where `ttype` +is a token and `d` is a dict with the following keys: + +``'color'`` + Hexadecimal color value (eg: ``'ff0000'`` for red) or `None` if not + defined. + +``'bold'`` + `True` if the value should be bold + +``'italic'`` + `True` if the value should be italic + +``'underline'`` + `True` if the value should be underlined + +``'bgcolor'`` + Hexadecimal color value for the background (eg: ``'eeeeeee'`` for light + gray) or `None` if not defined. + +``'border'`` + Hexadecimal color value for the border (eg: ``'0000aa'`` for a dark + blue) or `None` for no border. + +Additional keys might appear in the future, formatters should ignore all keys +they don't support. + + +HTML 3.2 Formatter +================== + +For an more complex example, let's implement a HTML 3.2 Formatter. We don't +use CSS but inline markup (````, ````, etc). Because this isn't good +style this formatter isn't in the standard library ;-) + +.. sourcecode:: python + + from pygments.formatter import Formatter + + class OldHtmlFormatter(Formatter): + + def __init__(self, **options): + Formatter.__init__(self, **options) + + # create a dict of (start, end) tuples that wrap the + # value of a token so that we can use it in the format + # method later + self.styles = {} + + # we iterate over the `_styles` attribute of a style item + # that contains the parsed style values. + for token, style in self.style: + start = end = '' + # a style item is a tuple in the following form: + # colors are readily specified in hex: 'RRGGBB' + if style['color']: + start += '' % style['color'] + end = '' + end + if style['bold']: + start += '' + end = '' + end + if style['italic']: + start += '' + end = '' + end + if style['underline']: + start += '' + end = '' + end + self.styles[token] = (start, end) + + def format(self, tokensource, outfile): + # lastval is a string we use for caching + # because it's possible that an lexer yields a number + # of consecutive tokens with the same token type. + # to minimize the size of the generated html markup we + # try to join the values of same-type tokens here + lastval = '' + lasttype = None + + # wrap the whole output with
    +            outfile.write('
    ')
    +
    +            for ttype, value in tokensource:
    +                # if the token type doesn't exist in the stylemap
    +                # we try it with the parent of the token type
    +                # eg: parent of Token.Literal.String.Double is
    +                # Token.Literal.String
    +                while ttype not in self.styles:
    +                    ttype = ttype.parent
    +                if ttype == lasttype:
    +                    # the current token type is the same of the last
    +                    # iteration. cache it
    +                    lastval += value
    +                else:
    +                    # not the same token as last iteration, but we
    +                    # have some data in the buffer. wrap it with the
    +                    # defined style and write it to the output file
    +                    if lastval:
    +                        stylebegin, styleend = self.styles[lasttype]
    +                        outfile.write(stylebegin + lastval + styleend)
    +                    # set lastval/lasttype to current values
    +                    lastval = value
    +                    lasttype = ttype
    +
    +            # if something is left in the buffer, write it to the
    +            # output file, then close the opened 
     tag
    +            if lastval:
    +                stylebegin, styleend = self.styles[lasttype]
    +                outfile.write(stylebegin + lastval + styleend)
    +            outfile.write('
    \n') + +The comments should explain it. Again, this formatter doesn't override the +`get_style_defs()` method. If we would have used CSS classes instead of +inline HTML markup, we would need to generate the CSS first. For that +purpose the `get_style_defs()` method exists: + + +Generating Style Definitions +============================ + +Some formatters like the `LatexFormatter` and the `HtmlFormatter` don't +output inline markup but reference either macros or css classes. Because +the definitions of those are not part of the output, the `get_style_defs()` +method exists. It is passed one parameter (if it's used and how it's used +is up to the formatter) and has to return a string or ``None``. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst new file mode 100644 index 0000000..9e7074e --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst @@ -0,0 +1,48 @@ +.. -*- mode: rst -*- + +==================== +Available formatters +==================== + +This page lists all builtin formatters. + +Common options +============== + +All formatters support these options: + +`encoding` + If given, must be an encoding name (such as ``"utf-8"``). This will + be used to convert the token strings (which are Unicode strings) + to byte strings in the output (default: ``None``). + It will also be written in an encoding declaration suitable for the + document format if the `full` option is given (e.g. a ``meta + content-type`` directive in HTML or an invocation of the `inputenc` + package in LaTeX). + + If this is ``""`` or ``None``, Unicode strings will be written + to the output file, which most file-like objects do not support. + For example, `pygments.highlight()` will return a Unicode string if + called with no `outfile` argument and a formatter that has `encoding` + set to ``None`` because it uses a `StringIO.StringIO` object that + supports Unicode arguments to `write()`. Using a regular file object + wouldn't work. + + .. versionadded:: 0.6 + +`outencoding` + When using Pygments from the command line, any `encoding` option given is + passed to the lexer and the formatter. This is sometimes not desirable, + for example if you want to set the input encoding to ``"guess"``. + Therefore, `outencoding` has been introduced which overrides `encoding` + for the formatter if given. + + .. versionadded:: 0.7 + + +Formatter classes +================= + +All these classes are importable from :mod:`pygments.formatters`. + +.. pygmentsdoc:: formatters diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst new file mode 100644 index 0000000..30d5c08 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst @@ -0,0 +1,66 @@ +Pygments documentation +====================== + +**Starting with Pygments** + +.. toctree:: + :maxdepth: 1 + + ../download + quickstart + cmdline + +**Builtin components** + +.. toctree:: + :maxdepth: 1 + + lexers + filters + formatters + styles + +**Reference** + +.. toctree:: + :maxdepth: 1 + + unicode + tokens + api + +**Hacking for Pygments** + +.. toctree:: + :maxdepth: 1 + + lexerdevelopment + formatterdevelopment + filterdevelopment + plugins + +**Hints and tricks** + +.. toctree:: + :maxdepth: 1 + + rstdirective + moinmoin + java + integrate + +**About Pygments** + +.. toctree:: + :maxdepth: 1 + + changelog + authors + + +If you find bugs or have suggestions for the documentation, please look +:ref:`here ` for info on how to contact the team. + +.. XXX You can download an offline version of this documentation from the + :doc:`download page `. + diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst new file mode 100644 index 0000000..03fc268 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst @@ -0,0 +1,44 @@ +.. -*- mode: rst -*- + +=================================== +Using Pygments in various scenarios +=================================== + +PyGtk +----- + +Armin has written a piece of sample code that shows how to create a Gtk +`TextBuffer` object containing Pygments-highlighted text. + +See the article here: http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-gtk-rendering/ + +Wordpress +--------- + +He also has a snippet that shows how to use Pygments in WordPress: + +http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-in-wordpress/ + +Markdown +-------- + +Since Pygments 0.9, the distribution ships Markdown_ preprocessor sample code +that uses Pygments to render source code in +:file:`external/markdown-processor.py`. You can copy and adapt it to your +liking. + +.. _Markdown: http://www.freewisdom.org/projects/python-markdown/ + +TextMate +-------- + +Antonio Cangiano has created a Pygments bundle for TextMate that allows to +colorize code via a simple menu option. It can be found here_. + +.. _here: http://antoniocangiano.com/2008/10/28/pygments-textmate-bundle/ + +Bash completion +--------------- + +The source distribution contains a file ``external/pygments.bashcomp`` that +sets up completion for the ``pygmentize`` command in bash. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst new file mode 100644 index 0000000..5eb6196 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst @@ -0,0 +1,70 @@ +===================== +Use Pygments in Java +===================== + +Thanks to `Jython `__ it is possible to use Pygments in +Java. + +This page is a simple tutorial to get an idea of how this is working. You can +then look at the `Jython documentation `__ for more +advanced use. + +Since version 1.5, Pygments is deployed on `Maven Central +`__ as a JAR so is Jython +which makes it a lot easier to create the Java project. + +Here is an example of a `Maven `__ ``pom.xml`` file for a +project running Pygments: + +.. sourcecode:: xml + + + + + 4.0.0 + example + example + 1.0-SNAPSHOT + + + org.python + jython-standalone + 2.5.3 + + + org.pygments + pygments + 1.5 + runtime + + + + +The following Java example: + +.. sourcecode:: java + + PythonInterpreter interpreter = new PythonInterpreter(); + + // Set a variable with the content you want to work with + interpreter.set("code", code); + + // Simple use Pygments as you would in Python + interpreter.exec("from pygments import highlight\n" + + "from pygments.lexers import PythonLexer\n" + + "from pygments.formatters import HtmlFormatter\n" + + "\nresult = highlight(code, PythonLexer(), HtmlFormatter())"); + + // Get the result that has been set in a variable + System.out.println(interpreter.get("result", String.class)); + +will print something like: + +.. sourcecode:: html + +
    +
    print "Hello World"
    +
    diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst new file mode 100644 index 0000000..eab1306 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst @@ -0,0 +1,602 @@ +.. -*- mode: rst -*- + +==================== +Write your own lexer +==================== + +If a lexer for your favorite language is missing in the Pygments package, you can +easily write your own and extend Pygments. + +All you need can be found inside the :mod:`pygments.lexer` module. As you can +read in the :doc:`API documentation `, a lexer is a class that is +initialized with some keyword arguments (the lexer options) and that provides a +:meth:`.get_tokens_unprocessed()` method which is given a string or unicode +object with the data to parse. + +The :meth:`.get_tokens_unprocessed()` method must return an iterator or iterable +containing tuples in the form ``(index, token, value)``. Normally you don't need +to do this since there are numerous base lexers you can subclass. + + +RegexLexer +========== + +A very powerful (but quite easy to use) lexer is the :class:`RegexLexer`. This +lexer base class allows you to define lexing rules in terms of *regular +expressions* for different *states*. + +States are groups of regular expressions that are matched against the input +string at the *current position*. If one of these expressions matches, a +corresponding action is performed (normally yielding a token with a specific +type), the current position is set to where the last match ended and the +matching process continues with the first regex of the current state. + +Lexer states are kept in a state stack: each time a new state is entered, the +new state is pushed onto the stack. The most basic lexers (like the +`DiffLexer`) just need one state. + +Each state is defined as a list of tuples in the form (`regex`, `action`, +`new_state`) where the last item is optional. In the most basic form, `action` +is a token type (like `Name.Builtin`). That means: When `regex` matches, emit a +token with the match text and type `tokentype` and push `new_state` on the state +stack. If the new state is ``'#pop'``, the topmost state is popped from the +stack instead. (To pop more than one state, use ``'#pop:2'`` and so on.) +``'#push'`` is a synonym for pushing the current state on the +stack. + +The following example shows the `DiffLexer` from the builtin lexers. Note that +it contains some additional attributes `name`, `aliases` and `filenames` which +aren't required for a lexer. They are used by the builtin lexer lookup +functions. + +.. sourcecode:: python + + from pygments.lexer import RegexLexer + from pygments.token import * + + class DiffLexer(RegexLexer): + name = 'Diff' + aliases = ['diff'] + filenames = ['*.diff'] + + tokens = { + 'root': [ + (r' .*\n', Text), + (r'\+.*\n', Generic.Inserted), + (r'-.*\n', Generic.Deleted), + (r'@.*\n', Generic.Subheading), + (r'Index.*\n', Generic.Heading), + (r'=.*\n', Generic.Heading), + (r'.*\n', Text), + ] + } + +As you can see this lexer only uses one state. When the lexer starts scanning +the text, it first checks if the current character is a space. If this is true +it scans everything until newline and returns the parsed data as `Text` token. + +If this rule doesn't match, it checks if the current char is a plus sign. And +so on. + +If no rule matches at the current position, the current char is emitted as an +`Error` token that indicates a parsing error, and the position is increased by +1. + + +Adding and testing a new lexer +============================== + +To make pygments aware of your new lexer, you have to perform the following +steps: + +First, change to the current directory containing the pygments source code: + +.. sourcecode:: console + + $ cd .../pygments-main + +Next, make sure the lexer is known from outside of the module. All modules in +the ``pygments.lexers`` specify ``__all__``. For example, ``other.py`` sets: + +.. sourcecode:: python + + __all__ = ['BrainfuckLexer', 'BefungeLexer', ...] + +Simply add the name of your lexer class to this list. + +Finally the lexer can be made publically known by rebuilding the lexer +mapping: + +.. sourcecode:: console + + $ make mapfiles + +To test the new lexer, store an example file with the proper extension in +``tests/examplefiles``. For example, to test your ``DiffLexer``, add a +``tests/examplefiles/example.diff`` containing a sample diff output. + +Now you can use pygmentize to render your example to HTML: + +.. sourcecode:: console + + $ ./pygmentize -O full -f html -o /tmp/example.html tests/examplefiles/example.diff + +Note that this explicitely calls the ``pygmentize`` in the current directory +by preceding it with ``./``. This ensures your modifications are used. +Otherwise a possibly already installed, unmodified version without your new +lexer would have been called from the system search path (``$PATH``). + +To view the result, open ``/tmp/example.html`` in your browser. + +Once the example renders as expected, you should run the complete test suite: + +.. sourcecode:: console + + $ make test + + +Regex Flags +=========== + +You can either define regex flags in the regex (``r'(?x)foo bar'``) or by adding +a `flags` attribute to your lexer class. If no attribute is defined, it defaults +to `re.MULTILINE`. For more informations about regular expression flags see the +`regular expressions`_ help page in the python documentation. + +.. _regular expressions: http://docs.python.org/lib/re-syntax.html + + +Scanning multiple tokens at once +================================ + +Here is a more complex lexer that highlights INI files. INI files consist of +sections, comments and key = value pairs: + +.. sourcecode:: python + + from pygments.lexer import RegexLexer, bygroups + from pygments.token import * + + class IniLexer(RegexLexer): + name = 'INI' + aliases = ['ini', 'cfg'] + filenames = ['*.ini', '*.cfg'] + + tokens = { + 'root': [ + (r'\s+', Text), + (r';.*?$', Comment), + (r'\[.*?\]$', Keyword), + (r'(.*?)(\s*)(=)(\s*)(.*?)$', + bygroups(Name.Attribute, Text, Operator, Text, String)) + ] + } + +The lexer first looks for whitespace, comments and section names. And later it +looks for a line that looks like a key, value pair, separated by an ``'='`` +sign, and optional whitespace. + +The `bygroups` helper makes sure that each group is yielded with a different +token type. First the `Name.Attribute` token, then a `Text` token for the +optional whitespace, after that a `Operator` token for the equals sign. Then a +`Text` token for the whitespace again. The rest of the line is returned as +`String`. + +Note that for this to work, every part of the match must be inside a capturing +group (a ``(...)``), and there must not be any nested capturing groups. If you +nevertheless need a group, use a non-capturing group defined using this syntax: +``r'(?:some|words|here)'`` (note the ``?:`` after the beginning parenthesis). + +If you find yourself needing a capturing group inside the regex which +shouldn't be part of the output but is used in the regular expressions for +backreferencing (eg: ``r'(<(foo|bar)>)(.*?)()'``), you can pass `None` +to the bygroups function and it will skip that group will be skipped in the +output. + + +Changing states +=============== + +Many lexers need multiple states to work as expected. For example, some +languages allow multiline comments to be nested. Since this is a recursive +pattern it's impossible to lex just using regular expressions. + +Here is the solution: + +.. sourcecode:: python + + from pygments.lexer import RegexLexer + from pygments.token import * + + class ExampleLexer(RegexLexer): + name = 'Example Lexer with states' + + tokens = { + 'root': [ + (r'[^/]+', Text), + (r'/\*', Comment.Multiline, 'comment'), + (r'//.*?$', Comment.Singleline), + (r'/', Text) + ], + 'comment': [ + (r'[^*/]', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline) + ] + } + +This lexer starts lexing in the ``'root'`` state. It tries to match as much as +possible until it finds a slash (``'/'``). If the next character after the slash +is a star (``'*'``) the `RegexLexer` sends those two characters to the output +stream marked as `Comment.Multiline` and continues parsing with the rules +defined in the ``'comment'`` state. + +If there wasn't a star after the slash, the `RegexLexer` checks if it's a +singleline comment (eg: followed by a second slash). If this also wasn't the +case it must be a single slash (the separate regex for a single slash must also +be given, else the slash would be marked as an error token). + +Inside the ``'comment'`` state, we do the same thing again. Scan until the lexer +finds a star or slash. If it's the opening of a multiline comment, push the +``'comment'`` state on the stack and continue scanning, again in the +``'comment'`` state. Else, check if it's the end of the multiline comment. If +yes, pop one state from the stack. + +Note: If you pop from an empty stack you'll get an `IndexError`. (There is an +easy way to prevent this from happening: don't ``'#pop'`` in the root state). + +If the `RegexLexer` encounters a newline that is flagged as an error token, the +stack is emptied and the lexer continues scanning in the ``'root'`` state. This +helps producing error-tolerant highlighting for erroneous input, e.g. when a +single-line string is not closed. + + +Advanced state tricks +===================== + +There are a few more things you can do with states: + +- You can push multiple states onto the stack if you give a tuple instead of a + simple string as the third item in a rule tuple. For example, if you want to + match a comment containing a directive, something like:: + + /* rest of comment */ + + you can use this rule: + + .. sourcecode:: python + + tokens = { + 'root': [ + (r'/\* <', Comment, ('comment', 'directive')), + ... + ], + 'directive': [ + (r'[^>]*', Comment.Directive), + (r'>', Comment, '#pop'), + ], + 'comment': [ + (r'[^*]+', Comment), + (r'\*/', Comment, '#pop'), + (r'\*', Comment), + ] + } + + When this encounters the above sample, first ``'comment'`` and ``'directive'`` + are pushed onto the stack, then the lexer continues in the directive state + until it finds the closing ``>``, then it continues in the comment state until + the closing ``*/``. Then, both states are popped from the stack again and + lexing continues in the root state. + + .. versionadded:: 0.9 + The tuple can contain the special ``'#push'`` and ``'#pop'`` (but not + ``'#pop:n'``) directives. + + +- You can include the rules of a state in the definition of another. This is + done by using `include` from `pygments.lexer`: + + .. sourcecode:: python + + from pygments.lexer import RegexLexer, bygroups, include + from pygments.token import * + + class ExampleLexer(RegexLexer): + tokens = { + 'comments': [ + (r'/\*.*?\*/', Comment), + (r'//.*?\n', Comment), + ], + 'root': [ + include('comments'), + (r'(function )(\w+)( {)', + bygroups(Keyword, Name, Keyword), 'function'), + (r'.', Text), + ], + 'function': [ + (r'[^}/]+', Text), + include('comments'), + (r'/', Text), + (r'}', Keyword, '#pop'), + ] + } + + This is a hypothetical lexer for a language that consist of functions and + comments. Because comments can occur at toplevel and in functions, we need + rules for comments in both states. As you can see, the `include` helper saves + repeating rules that occur more than once (in this example, the state + ``'comment'`` will never be entered by the lexer, as it's only there to be + included in ``'root'`` and ``'function'``). + + +- Sometimes, you may want to "combine" a state from existing ones. This is + possible with the `combine` helper from `pygments.lexer`. + + If you, instead of a new state, write ``combined('state1', 'state2')`` as the + third item of a rule tuple, a new anonymous state will be formed from state1 + and state2 and if the rule matches, the lexer will enter this state. + + This is not used very often, but can be helpful in some cases, such as the + `PythonLexer`'s string literal processing. + +- If you want your lexer to start lexing in a different state you can modify + the stack by overloading the `get_tokens_unprocessed()` method: + + .. sourcecode:: python + + from pygments.lexer import RegexLexer + + class MyLexer(RegexLexer): + tokens = {...} + + def get_tokens_unprocessed(self, text): + stack = ['root', 'otherstate'] + for item in RegexLexer.get_tokens_unprocessed(text, stack): + yield item + + Some lexers like the `PhpLexer` use this to make the leading ``', Name.Tag), + ], + 'script-content': [ + (r'(.+?)(<\s*/\s*script\s*>)', + bygroups(using(JavascriptLexer), Name.Tag), + '#pop'), + ] + } + +Here the content of a ```` end tag is processed by the `JavascriptLexer`, while the +end tag is yielded as a normal token with the `Name.Tag` type. + +As an additional goodie, if the lexer class is replaced by `this` (imported from +`pygments.lexer`), the "other" lexer will be the current one (because you cannot +refer to the current class within the code that runs at class definition time). + +Also note the ``(r'<\s*script\s*', Name.Tag, ('script-content', 'tag'))`` rule. +Here, two states are pushed onto the state stack, ``'script-content'`` and +``'tag'``. That means that first ``'tag'`` is processed, which will parse +attributes and the closing ``>``, then the ``'tag'`` state is popped and the +next state on top of the stack will be ``'script-content'``. + +The `using()` helper has a special keyword argument, `state`, which works as +follows: if given, the lexer to use initially is not in the ``"root"`` state, +but in the state given by this argument. This *only* works with a `RegexLexer`. + +Any other keywords arguments passed to `using()` are added to the keyword +arguments used to create the lexer. + + +Delegating Lexer +================ + +Another approach for nested lexers is the `DelegatingLexer` which is for +example used for the template engine lexers. It takes two lexers as +arguments on initialisation: a `root_lexer` and a `language_lexer`. + +The input is processed as follows: First, the whole text is lexed with the +`language_lexer`. All tokens yielded with a type of ``Other`` are then +concatenated and given to the `root_lexer`. The language tokens of the +`language_lexer` are then inserted into the `root_lexer`'s token stream +at the appropriate positions. + +.. sourcecode:: python + + from pygments.lexer import DelegatingLexer + from pygments.lexers.web import HtmlLexer, PhpLexer + + class HtmlPhpLexer(DelegatingLexer): + def __init__(self, **options): + super(HtmlPhpLexer, self).__init__(HtmlLexer, PhpLexer, **options) + +This procedure ensures that e.g. HTML with template tags in it is highlighted +correctly even if the template tags are put into HTML tags or attributes. + +If you want to change the needle token ``Other`` to something else, you can +give the lexer another token type as the third parameter: + +.. sourcecode:: python + + DelegatingLexer.__init__(MyLexer, OtherLexer, Text, **options) + + +Callbacks +========= + +Sometimes the grammar of a language is so complex that a lexer would be unable +to parse it just by using regular expressions and stacks. + +For this, the `RegexLexer` allows callbacks to be given in rule tuples, instead +of token types (`bygroups` and `using` are nothing else but preimplemented +callbacks). The callback must be a function taking two arguments: + +* the lexer itself +* the match object for the last matched rule + +The callback must then return an iterable of (or simply yield) ``(index, +tokentype, value)`` tuples, which are then just passed through by +`get_tokens_unprocessed()`. The ``index`` here is the position of the token in +the input string, ``tokentype`` is the normal token type (like `Name.Builtin`), +and ``value`` the associated part of the input string. + +You can see an example here: + +.. sourcecode:: python + + from pygments.lexer import RegexLexer + from pygments.token import Generic + + class HypotheticLexer(RegexLexer): + + def headline_callback(lexer, match): + equal_signs = match.group(1) + text = match.group(2) + yield match.start(), Generic.Headline, equal_signs + text + equal_signs + + tokens = { + 'root': [ + (r'(=+)(.*?)(\1)', headline_callback) + ] + } + +If the regex for the `headline_callback` matches, the function is called with the +match object. Note that after the callback is done, processing continues +normally, that is, after the end of the previous match. The callback has no +possibility to influence the position. + +There are not really any simple examples for lexer callbacks, but you can see +them in action e.g. in the `compiled.py`_ source code in the `CLexer` and +`JavaLexer` classes. + +.. _compiled.py: http://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/compiled.py + + +The ExtendedRegexLexer class +============================ + +The `RegexLexer`, even with callbacks, unfortunately isn't powerful enough for +the funky syntax rules of some languages that will go unnamed, such as Ruby. + +But fear not; even then you don't have to abandon the regular expression +approach. For Pygments has a subclass of `RegexLexer`, the `ExtendedRegexLexer`. +All features known from RegexLexers are available here too, and the tokens are +specified in exactly the same way, *except* for one detail: + +The `get_tokens_unprocessed()` method holds its internal state data not as local +variables, but in an instance of the `pygments.lexer.LexerContext` class, and +that instance is passed to callbacks as a third argument. This means that you +can modify the lexer state in callbacks. + +The `LexerContext` class has the following members: + +* `text` -- the input text +* `pos` -- the current starting position that is used for matching regexes +* `stack` -- a list containing the state stack +* `end` -- the maximum position to which regexes are matched, this defaults to + the length of `text` + +Additionally, the `get_tokens_unprocessed()` method can be given a +`LexerContext` instead of a string and will then process this context instead of +creating a new one for the string argument. + +Note that because you can set the current position to anything in the callback, +it won't be automatically be set by the caller after the callback is finished. +For example, this is how the hypothetical lexer above would be written with the +`ExtendedRegexLexer`: + +.. sourcecode:: python + + from pygments.lexer import ExtendedRegexLexer + from pygments.token import Generic + + class ExHypotheticLexer(ExtendedRegexLexer): + + def headline_callback(lexer, match, ctx): + equal_signs = match.group(1) + text = match.group(2) + yield match.start(), Generic.Headline, equal_signs + text + equal_signs + ctx.pos = match.end() + + tokens = { + 'root': [ + (r'(=+)(.*?)(\1)', headline_callback) + ] + } + +This might sound confusing (and it can really be). But it is needed, and for an +example look at the Ruby lexer in `agile.py`_. + +.. _agile.py: https://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/agile.py + + +Filtering Token Streams +======================= + +Some languages ship a lot of builtin functions (for example PHP). The total +amount of those functions differs from system to system because not everybody +has every extension installed. In the case of PHP there are over 3000 builtin +functions. That's an incredible huge amount of functions, much more than you +can put into a regular expression. + +But because only `Name` tokens can be function names it's solvable by overriding +the ``get_tokens_unprocessed()`` method. The following lexer subclasses the +`PythonLexer` so that it highlights some additional names as pseudo keywords: + +.. sourcecode:: python + + from pygments.lexers.agile import PythonLexer + from pygments.token import Name, Keyword + + class MyPythonLexer(PythonLexer): + EXTRA_KEYWORDS = ['foo', 'bar', 'foobar', 'barfoo', 'spam', 'eggs'] + + def get_tokens_unprocessed(self, text): + for index, token, value in PythonLexer.get_tokens_unprocessed(self, text): + if token is Name and value in self.EXTRA_KEYWORDS: + yield index, Keyword.Pseudo, value + else: + yield index, token, value + +The `PhpLexer` and `LuaLexer` use this method to resolve builtin functions. + +.. note:: Do not confuse this with the :doc:`filter ` system. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst new file mode 100644 index 0000000..914b53e --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst @@ -0,0 +1,69 @@ +.. -*- mode: rst -*- + +================ +Available lexers +================ + +This page lists all available builtin lexers and the options they take. + +Currently, **all lexers** support these options: + +`stripnl` + Strip leading and trailing newlines from the input (default: ``True``) + +`stripall` + Strip all leading and trailing whitespace from the input (default: + ``False``). + +`ensurenl` + Make sure that the input ends with a newline (default: ``True``). This + is required for some lexers that consume input linewise. + + .. versionadded:: 1.3 + +`tabsize` + If given and greater than 0, expand tabs in the input (default: ``0``). + +`encoding` + If given, must be an encoding name (such as ``"utf-8"``). This encoding + will be used to convert the input string to Unicode (if it is not already + a Unicode string). The default is ``"latin1"``. + + If this option is set to ``"guess"``, a simple UTF-8 vs. Latin-1 + detection is used, if it is set to ``"chardet"``, the + `chardet library `__ is used to + guess the encoding of the input. + + .. versionadded:: 0.6 + + +The "Short Names" field lists the identifiers that can be used with the +`get_lexer_by_name()` function. + +These lexers are builtin and can be imported from `pygments.lexers`: + +.. pygmentsdoc:: lexers + + +Iterating over all lexers +------------------------- + +.. versionadded:: 0.6 + +To get all lexers (both the builtin and the plugin ones), you can +use the `get_all_lexers()` function from the `pygments.lexers` +module: + +.. sourcecode:: pycon + + >>> from pygments.lexers import get_all_lexers + >>> i = get_all_lexers() + >>> i.next() + ('Diff', ('diff',), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')) + >>> i.next() + ('Delphi', ('delphi', 'objectpascal', 'pas', 'pascal'), ('*.pas',), ('text/x-pascal',)) + >>> i.next() + ('XML+Ruby', ('xml+erb', 'xml+ruby'), (), ()) + +As you can see, the return value is an iterator which yields tuples +in the form ``(name, aliases, filetypes, mimetypes)``. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst new file mode 100644 index 0000000..8b2216b --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst @@ -0,0 +1,39 @@ +.. -*- mode: rst -*- + +============================ +Using Pygments with MoinMoin +============================ + +From Pygments 0.7, the source distribution ships a `Moin`_ parser plugin that +can be used to get Pygments highlighting in Moin wiki pages. + +To use it, copy the file `external/moin-parser.py` from the Pygments +distribution to the `data/plugin/parser` subdirectory of your Moin instance. +Edit the options at the top of the file (currently ``ATTACHMENTS`` and +``INLINESTYLES``) and rename the file to the name that the parser directive +should have. For example, if you name the file ``code.py``, you can get a +highlighted Python code sample with this Wiki markup:: + + {{{ + #!code python + [...] + }}} + +where ``python`` is the Pygments name of the lexer to use. + +Additionally, if you set the ``ATTACHMENTS`` option to True, Pygments will also +be called for all attachments for whose filenames there is no other parser +registered. + +You are responsible for including CSS rules that will map the Pygments CSS +classes to colors. You can output a stylesheet file with `pygmentize`, put it +into the `htdocs` directory of your Moin instance and then include it in the +`stylesheets` configuration option in the Moin config, e.g.:: + + stylesheets = [('screen', '/htdocs/pygments.css')] + +If you do not want to do that and are willing to accept larger HTML output, you +can set the ``INLINESTYLES`` option to True. + + +.. _Moin: http://moinmoin.wikiwikiweb.de/ diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst new file mode 100644 index 0000000..a6f8d7b --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst @@ -0,0 +1,93 @@ +================ +Register Plugins +================ + +If you want to extend Pygments without hacking the sources, but want to +use the lexer/formatter/style/filter lookup functions (`lexers.get_lexer_by_name` +et al.), you can use `setuptools`_ entrypoints to add new lexers, formatters +or styles as if they were in the Pygments core. + +.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools + +That means you can use your highlighter modules with the `pygmentize` script, +which relies on the mentioned functions. + + +Entrypoints +=========== + +Here is a list of setuptools entrypoints that Pygments understands: + +`pygments.lexers` + + This entrypoint is used for adding new lexers to the Pygments core. + The name of the entrypoint values doesn't really matter, Pygments extracts + required metadata from the class definition: + + .. sourcecode:: ini + + [pygments.lexers] + yourlexer = yourmodule:YourLexer + + Note that you have to define ``name``, ``aliases`` and ``filename`` + attributes so that you can use the highlighter from the command line: + + .. sourcecode:: python + + class YourLexer(...): + name = 'Name Of Your Lexer' + aliases = ['alias'] + filenames = ['*.ext'] + + +`pygments.formatters` + + You can use this entrypoint to add new formatters to Pygments. The + name of an entrypoint item is the name of the formatter. If you + prefix the name with a slash it's used as a filename pattern: + + .. sourcecode:: ini + + [pygments.formatters] + yourformatter = yourmodule:YourFormatter + /.ext = yourmodule:YourFormatter + + +`pygments.styles` + + To add a new style you can use this entrypoint. The name of the entrypoint + is the name of the style: + + .. sourcecode:: ini + + [pygments.styles] + yourstyle = yourmodule:YourStyle + + +`pygments.filters` + + Use this entrypoint to register a new filter. The name of the + entrypoint is the name of the filter: + + .. sourcecode:: ini + + [pygments.filters] + yourfilter = yourmodule:YourFilter + + +How To Use Entrypoints +====================== + +This documentation doesn't explain how to use those entrypoints because this is +covered in the `setuptools documentation`_. That page should cover everything +you need to write a plugin. + +.. _setuptools documentation: http://peak.telecommunity.com/DevCenter/setuptools + + +Extending The Core +================== + +If you have written a Pygments plugin that is open source, please inform us +about that. There is a high chance that we'll add it to the Pygments +distribution. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst new file mode 100644 index 0000000..dba7698 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst @@ -0,0 +1,205 @@ +.. -*- mode: rst -*- + +=========================== +Introduction and Quickstart +=========================== + + +Welcome to Pygments! This document explains the basic concepts and terms and +gives a few examples of how to use the library. + + +Architecture +============ + +There are four types of components that work together highlighting a piece of +code: + +* A **lexer** splits the source into tokens, fragments of the source that + have a token type that determines what the text represents semantically + (e.g., keyword, string, or comment). There is a lexer for every language + or markup format that Pygments supports. +* The token stream can be piped through **filters**, which usually modify + the token types or text fragments, e.g. uppercasing all keywords. +* A **formatter** then takes the token stream and writes it to an output + file, in a format such as HTML, LaTeX or RTF. +* While writing the output, a **style** determines how to highlight all the + different token types. It maps them to attributes like "red and bold". + + +Example +======= + +Here is a small example for highlighting Python code: + +.. sourcecode:: python + + from pygments import highlight + from pygments.lexers import PythonLexer + from pygments.formatters import HtmlFormatter + + code = 'print "Hello World"' + print highlight(code, PythonLexer(), HtmlFormatter()) + +which prints something like this: + +.. sourcecode:: html + +
    +
    print "Hello World"
    +
    + +As you can see, Pygments uses CSS classes (by default, but you can change that) +instead of inline styles in order to avoid outputting redundant style information over +and over. A CSS stylesheet that contains all CSS classes possibly used in the output +can be produced by: + +.. sourcecode:: python + + print HtmlFormatter().get_style_defs('.highlight') + +The argument to :func:`get_style_defs` is used as an additional CSS selector: +the output may look like this: + +.. sourcecode:: css + + .highlight .k { color: #AA22FF; font-weight: bold } + .highlight .s { color: #BB4444 } + ... + + +Options +======= + +The :func:`highlight()` function supports a fourth argument called *outfile*, it +must be a file object if given. The formatted output will then be written to +this file instead of being returned as a string. + +Lexers and formatters both support options. They are given to them as keyword +arguments either to the class or to the lookup method: + +.. sourcecode:: python + + from pygments import highlight + from pygments.lexers import get_lexer_by_name + from pygments.formatters import HtmlFormatter + + lexer = get_lexer_by_name("python", stripall=True) + formatter = HtmlFormatter(linenos=True, cssclass="source") + result = highlight(code, lexer, formatter) + +This makes the lexer strip all leading and trailing whitespace from the input +(`stripall` option), lets the formatter output line numbers (`linenos` option), +and sets the wrapping ``
    ``'s class to ``source`` (instead of +``highlight``). + +Important options include: + +`encoding` : for lexers and formatters + Since Pygments uses Unicode strings internally, this determines which + encoding will be used to convert to or from byte strings. +`style` : for formatters + The name of the style to use when writing the output. + + +For an overview of builtin lexers and formatters and their options, visit the +:doc:`lexer ` and :doc:`formatters ` lists. + +For a documentation on filters, see :doc:`this page `. + + +Lexer and formatter lookup +========================== + +If you want to lookup a built-in lexer by its alias or a filename, you can use +one of the following methods: + +.. sourcecode:: pycon + + >>> from pygments.lexers import (get_lexer_by_name, + ... get_lexer_for_filename, get_lexer_for_mimetype) + + >>> get_lexer_by_name('python') + + + >>> get_lexer_for_filename('spam.rb') + + + >>> get_lexer_for_mimetype('text/x-perl') + + +All these functions accept keyword arguments; they will be passed to the lexer +as options. + +A similar API is available for formatters: use :func:`.get_formatter_by_name()` +and :func:`.get_formatter_for_filename()` from the :mod:`pygments.formatters` +module for this purpose. + + +Guessing lexers +=============== + +If you don't know the content of the file, or you want to highlight a file +whose extension is ambiguous, such as ``.html`` (which could contain plain HTML +or some template tags), use these functions: + +.. sourcecode:: pycon + + >>> from pygments.lexers import guess_lexer, guess_lexer_for_filename + + >>> guess_lexer('#!/usr/bin/python\nprint "Hello World!"') + + + >>> guess_lexer_for_filename('test.py', 'print "Hello World!"') + + +:func:`.guess_lexer()` passes the given content to the lexer classes' +:meth:`analyse_text()` method and returns the one for which it returns the +highest number. + +All lexers have two different filename pattern lists: the primary and the +secondary one. The :func:`.get_lexer_for_filename()` function only uses the +primary list, whose entries are supposed to be unique among all lexers. +:func:`.guess_lexer_for_filename()`, however, will first loop through all lexers +and look at the primary and secondary filename patterns if the filename matches. +If only one lexer matches, it is returned, else the guessing mechanism of +:func:`.guess_lexer()` is used with the matching lexers. + +As usual, keyword arguments to these functions are given to the created lexer +as options. + + +Command line usage +================== + +You can use Pygments from the command line, using the :program:`pygmentize` +script:: + + $ pygmentize test.py + +will highlight the Python file test.py using ANSI escape sequences +(a.k.a. terminal colors) and print the result to standard output. + +To output HTML, use the ``-f`` option:: + + $ pygmentize -f html -o test.html test.py + +to write an HTML-highlighted version of test.py to the file test.html. +Note that it will only be a snippet of HTML, if you want a full HTML document, +use the "full" option:: + + $ pygmentize -f html -O full -o test.html test.py + +This will produce a full HTML document with included stylesheet. + +A style can be selected with ``-O style=``. + +If you need a stylesheet for an existing HTML file using Pygments CSS classes, +it can be created with:: + + $ pygmentize -S default -f html > style.css + +where ``default`` is the style name. + +More options and tricks and be found in the :doc:`command line reference +`. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst new file mode 100644 index 0000000..c0d503b --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst @@ -0,0 +1,22 @@ +.. -*- mode: rst -*- + +================================ +Using Pygments in ReST documents +================================ + +Many Python people use `ReST`_ for documentation their sourcecode, programs, +scripts et cetera. This also means that documentation often includes sourcecode +samples or snippets. + +You can easily enable Pygments support for your ReST texts using a custom +directive -- this is also how this documentation displays source code. + +From Pygments 0.9, the directive is shipped in the distribution as +`external/rst-directive.py`. You can copy and adapt this code to your liking. + +.. removed -- too confusing + *Loosely related note:* The ReST lexer now recognizes ``.. sourcecode::`` and + ``.. code::`` directives and highlights the contents in the specified language + if the `handlecodeblocks` option is true. + +.. _ReST: http://docutils.sf.net/rst.html diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst new file mode 100644 index 0000000..7ef4de1 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst @@ -0,0 +1,143 @@ +.. -*- mode: rst -*- + +====== +Styles +====== + +Pygments comes with some builtin styles that work for both the HTML and +LaTeX formatter. + +The builtin styles can be looked up with the `get_style_by_name` function: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_style_by_name + >>> get_style_by_name('colorful') + + +You can pass a instance of a `Style` class to a formatter as the `style` +option in form of a string: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_style_by_name + >>> HtmlFormatter(style='colorful').style + + +Or you can also import your own style (which must be a subclass of +`pygments.style.Style`) and pass it to the formatter: + +.. sourcecode:: pycon + + >>> from yourapp.yourmodule import YourStyle + >>> HtmlFormatter(style=YourStyle).style + + + +Creating Own Styles +=================== + +So, how to create a style? All you have to do is to subclass `Style` and +define some styles: + +.. sourcecode:: python + + from pygments.style import Style + from pygments.token import Keyword, Name, Comment, String, Error, \ + Number, Operator, Generic + + class YourStyle(Style): + default_style = "" + styles = { + Comment: 'italic #888', + Keyword: 'bold #005', + Name: '#f00', + Name.Function: '#0f0', + Name.Class: 'bold #0f0', + String: 'bg:#eee #111' + } + +That's it. There are just a few rules. When you define a style for `Name` +the style automatically also affects `Name.Function` and so on. If you +defined ``'bold'`` and you don't want boldface for a subtoken use ``'nobold'``. + +(Philosophy: the styles aren't written in CSS syntax since this way +they can be used for a variety of formatters.) + +`default_style` is the style inherited by all token types. + +To make the style usable for Pygments, you must + +* either register it as a plugin (see :doc:`the plugin docs `) +* or drop it into the `styles` subpackage of your Pygments distribution one style + class per style, where the file name is the style name and the class name is + `StylenameClass`. For example, if your style should be called + ``"mondrian"``, name the class `MondrianStyle`, put it into the file + ``mondrian.py`` and this file into the ``pygments.styles`` subpackage + directory. + + +Style Rules +=========== + +Here a small overview of all allowed styles: + +``bold`` + render text as bold +``nobold`` + don't render text as bold (to prevent subtokens being highlighted bold) +``italic`` + render text italic +``noitalic`` + don't render text as italic +``underline`` + render text underlined +``nounderline`` + don't render text underlined +``bg:`` + transparent background +``bg:#000000`` + background color (black) +``border:`` + no border +``border:#ffffff`` + border color (white) +``#ff0000`` + text color (red) +``noinherit`` + don't inherit styles from supertoken + +Note that there may not be a space between ``bg:`` and the color value +since the style definition string is split at whitespace. +Also, using named colors is not allowed since the supported color names +vary for different formatters. + +Furthermore, not all lexers might support every style. + + +Builtin Styles +============== + +Pygments ships some builtin styles which are maintained by the Pygments team. + +To get a list of known styles you can use this snippet: + +.. sourcecode:: pycon + + >>> from pygments.styles import STYLE_MAP + >>> STYLE_MAP.keys() + ['default', 'emacs', 'friendly', 'colorful'] + + +Getting a list of available styles +================================== + +.. versionadded:: 0.6 + +Because it could be that a plugin registered a style, there is +a way to iterate over all styles: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_all_styles + >>> styles = list(get_all_styles()) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst new file mode 100644 index 0000000..9193d5f --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst @@ -0,0 +1,352 @@ +.. -*- mode: rst -*- + +============== +Builtin Tokens +============== + +.. module:: pygments.token + +In the :mod:`pygments.token` module, there is a special object called `Token` +that is used to create token types. + +You can create a new token type by accessing an attribute of `Token`: + +.. sourcecode:: pycon + + >>> from pygments.token import Token + >>> Token.String + Token.String + >>> Token.String is Token.String + True + +Note that tokens are singletons so you can use the ``is`` operator for comparing +token types. + +As of Pygments 0.7 you can also use the ``in`` operator to perform set tests: + +.. sourcecode:: pycon + + >>> from pygments.token import Comment + >>> Comment.Single in Comment + True + >>> Comment in Comment.Multi + False + +This can be useful in :doc:`filters ` and if you write lexers on your +own without using the base lexers. + +You can also split a token type into a hierarchy, and get the parent of it: + +.. sourcecode:: pycon + + >>> String.split() + [Token, Token.Literal, Token.Literal.String] + >>> String.parent + Token.Literal + +In principle, you can create an unlimited number of token types but nobody can +guarantee that a style would define style rules for a token type. Because of +that, Pygments proposes some global token types defined in the +`pygments.token.STANDARD_TYPES` dict. + +For some tokens aliases are already defined: + +.. sourcecode:: pycon + + >>> from pygments.token import String + >>> String + Token.Literal.String + +Inside the :mod:`pygments.token` module the following aliases are defined: + +============= ============================ ==================================== +`Text` `Token.Text` for any type of text data +`Whitespace` `Token.Text.Whitespace` for specially highlighted whitespace +`Error` `Token.Error` represents lexer errors +`Other` `Token.Other` special token for data not + matched by a parser (e.g. HTML + markup in PHP code) +`Keyword` `Token.Keyword` any kind of keywords +`Name` `Token.Name` variable/function names +`Literal` `Token.Literal` Any literals +`String` `Token.Literal.String` string literals +`Number` `Token.Literal.Number` number literals +`Operator` `Token.Operator` operators (``+``, ``not``...) +`Punctuation` `Token.Punctuation` punctuation (``[``, ``(``...) +`Comment` `Token.Comment` any kind of comments +`Generic` `Token.Generic` generic tokens (have a look at + the explanation below) +============= ============================ ==================================== + +The `Whitespace` token type is new in Pygments 0.8. It is used only by the +`VisibleWhitespaceFilter` currently. + +Normally you just create token types using the already defined aliases. For each +of those token aliases, a number of subtypes exists (excluding the special tokens +`Token.Text`, `Token.Error` and `Token.Other`) + +The `is_token_subtype()` function in the `pygments.token` module can be used to +test if a token type is a subtype of another (such as `Name.Tag` and `Name`). +(This is the same as ``Name.Tag in Name``. The overloaded `in` operator was newly +introduced in Pygments 0.7, the function still exists for backwards +compatiblity.) + +With Pygments 0.7, it's also possible to convert strings to token types (for example +if you want to supply a token from the command line): + +.. sourcecode:: pycon + + >>> from pygments.token import String, string_to_tokentype + >>> string_to_tokentype("String") + Token.Literal.String + >>> string_to_tokentype("Token.Literal.String") + Token.Literal.String + >>> string_to_tokentype(String) + Token.Literal.String + + +Keyword Tokens +============== + +`Keyword` + For any kind of keyword (especially if it doesn't match any of the + subtypes of course). + +`Keyword.Constant` + For keywords that are constants (e.g. ``None`` in future Python versions). + +`Keyword.Declaration` + For keywords used for variable declaration (e.g. ``var`` in some programming + languages like JavaScript). + +`Keyword.Namespace` + For keywords used for namespace declarations (e.g. ``import`` in Python and + Java and ``package`` in Java). + +`Keyword.Pseudo` + For keywords that aren't really keywords (e.g. ``None`` in old Python + versions). + +`Keyword.Reserved` + For reserved keywords. + +`Keyword.Type` + For builtin types that can't be used as identifiers (e.g. ``int``, + ``char`` etc. in C). + + +Name Tokens +=========== + +`Name` + For any name (variable names, function names, classes). + +`Name.Attribute` + For all attributes (e.g. in HTML tags). + +`Name.Builtin` + Builtin names; names that are available in the global namespace. + +`Name.Builtin.Pseudo` + Builtin names that are implicit (e.g. ``self`` in Ruby, ``this`` in Java). + +`Name.Class` + Class names. Because no lexer can know if a name is a class or a function + or something else this token is meant for class declarations. + +`Name.Constant` + Token type for constants. In some languages you can recognise a token by the + way it's defined (the value after a ``const`` keyword for example). In + other languages constants are uppercase by definition (Ruby). + +`Name.Decorator` + Token type for decorators. Decorators are synatic elements in the Python + language. Similar syntax elements exist in C# and Java. + +`Name.Entity` + Token type for special entities. (e.g. `` `` in HTML). + +`Name.Exception` + Token type for exception names (e.g. ``RuntimeError`` in Python). Some languages + define exceptions in the function signature (Java). You can highlight + the name of that exception using this token then. + +`Name.Function` + Token type for function names. + +`Name.Label` + Token type for label names (e.g. in languages that support ``goto``). + +`Name.Namespace` + Token type for namespaces. (e.g. import paths in Java/Python), names following + the ``module``/``namespace`` keyword in other languages. + +`Name.Other` + Other names. Normally unused. + +`Name.Tag` + Tag names (in HTML/XML markup or configuration files). + +`Name.Variable` + Token type for variables. Some languages have prefixes for variable names + (PHP, Ruby, Perl). You can highlight them using this token. + +`Name.Variable.Class` + same as `Name.Variable` but for class variables (also static variables). + +`Name.Variable.Global` + same as `Name.Variable` but for global variables (used in Ruby, for + example). + +`Name.Variable.Instance` + same as `Name.Variable` but for instance variables. + + +Literals +======== + +`Literal` + For any literal (if not further defined). + +`Literal.Date` + for date literals (e.g. ``42d`` in Boo). + + +`String` + For any string literal. + +`String.Backtick` + Token type for strings enclosed in backticks. + +`String.Char` + Token type for single characters (e.g. Java, C). + +`String.Doc` + Token type for documentation strings (for example Python). + +`String.Double` + Double quoted strings. + +`String.Escape` + Token type for escape sequences in strings. + +`String.Heredoc` + Token type for "heredoc" strings (e.g. in Ruby or Perl). + +`String.Interpol` + Token type for interpolated parts in strings (e.g. ``#{foo}`` in Ruby). + +`String.Other` + Token type for any other strings (for example ``%q{foo}`` string constructs + in Ruby). + +`String.Regex` + Token type for regular expression literals (e.g. ``/foo/`` in JavaScript). + +`String.Single` + Token type for single quoted strings. + +`String.Symbol` + Token type for symbols (e.g. ``:foo`` in LISP or Ruby). + + +`Number` + Token type for any number literal. + +`Number.Bin` + Token type for binary literals (e.g. ``0b101010``). + +`Number.Float` + Token type for float literals (e.g. ``42.0``). + +`Number.Hex` + Token type for hexadecimal number literals (e.g. ``0xdeadbeef``). + +`Number.Integer` + Token type for integer literals (e.g. ``42``). + +`Number.Integer.Long` + Token type for long integer literals (e.g. ``42L`` in Python). + +`Number.Oct` + Token type for octal literals. + + +Operators +========= + +`Operator` + For any punctuation operator (e.g. ``+``, ``-``). + +`Operator.Word` + For any operator that is a word (e.g. ``not``). + + +Punctuation +=========== + +.. versionadded:: 0.7 + +`Punctuation` + For any punctuation which is not an operator (e.g. ``[``, ``(``...) + + +Comments +======== + +`Comment` + Token type for any comment. + +`Comment.Multiline` + Token type for multiline comments. + +`Comment.Preproc` + Token type for preprocessor comments (also ```. + +.. versionadded:: 0.7 + The formatters now also accept an `outencoding` option which will override + the `encoding` option if given. This makes it possible to use a single + options dict with lexers and formatters, and still have different input and + output encodings. + +.. _chardet: http://chardet.feedparser.org/ diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst new file mode 100644 index 0000000..cf32f48 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst @@ -0,0 +1,41 @@ +Download and installation +========================= + +The current release is version |version|. + +Packaged versions +----------------- + +You can download it `from the Python Package Index +`_. For installation of packages from +PyPI, we recommend `Pip `_, which works on all +major platforms. + +Under Linux, most distributions include a package for Pygments, usually called +``pygments`` or ``python-pygments``. You can install it with the package +manager as usual. + +Development sources +------------------- + +We're using the `Mercurial `_ version control +system. You can get the development source using this command:: + + hg clone http://bitbucket.org/birkenfeld/pygments-main pygments + +Development takes place at `Bitbucket +`_, you can browse the source +online `here `_. + +The latest changes in the development source code are listed in the `changelog +`_. + +.. Documentation + ------------- + +.. XXX todo + + You can download the documentation either as + a bunch of rst files from the Mercurial repository, see above, or + as a tar.gz containing rendered HTML files:

    +

    pygmentsdocs.tar.gz

    diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst new file mode 100644 index 0000000..0f65b9f --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst @@ -0,0 +1,143 @@ +:orphan: + +Pygments FAQ +============= + +What is Pygments? +----------------- + +Pygments is a syntax highlighting engine written in Python. That means, it will +take source code (or other markup) in a supported language and output a +processed version (in different formats) containing syntax highlighting markup. + +Its features include: + +* a wide range of common languages and markup formats is supported (look here + for a list) +* new languages and formats are added easily +* a number of output formats is available, including: + + - HTML + - ANSI sequences (console output) + - LaTeX + - RTF + +* it is usable as a command-line tool and as a library +* parsing and formatting is fast + +Pygments is licensed under the BSD license. + +Where does the name Pygments come from? +--------------------------------------- + +*Py* of course stands for Python, while *pigments* are used for coloring paint, +and in this case, source code! + +What are the system requirements? +--------------------------------- + +Pygments only needs a standard Python install, version 2.6 or higher or version +3.3 or higher for Python 3. No additional libraries are needed. + +How can I use Pygments? +----------------------- + +Pygments is usable as a command-line tool as well as a library. + +From the command-line, usage looks like this (assuming the pygmentize script is +properly installed):: + + pygmentize -f html /path/to/file.py + +This will print a HTML-highlighted version of /path/to/file.py to standard output. + +For a complete help, please run ``pygmentize -h``. + +Usage as a library is thoroughly demonstrated in the Documentation section. + +How do I make a new style? +-------------------------- + +Please see the documentation on styles. + +How can I report a bug or suggest a feature? +-------------------------------------------- + +Please report bugs and feature wishes in the tracker at Bitbucket. + +You can also e-mail the author or use IRC, see the contact details. + +I want this support for this language! +-------------------------------------- + +Instead of waiting for others to include language support, why not write it +yourself? All you have to know is :doc:`outlined in the docs +`. + +Can I use Pygments for programming language processing? +------------------------------------------------------- + +The Pygments lexing machinery is quite powerful can be used to build lexers for +basically all languages. However, parsing them is not possible, though some +lexers go some steps in this direction in order to e.g. highlight function names +differently. + +Also, error reporting is not the scope of Pygments. It focuses on correctly +highlighting syntactically valid documents, not finding and compensating errors. + +Who uses Pygments? +------------------ + +This is an (incomplete) list of projects and sites known to use the Pygments highlighter. + +* `Pygments API `_, a HTTP POST interface to Pygments +* `The Sphinx documentation builder `_, for embedded source examples +* `rst2pdf `_, a reStructuredText to PDF converter +* `Zine `_, a Python blogging system +* `Trac `_, the universal project management tool +* `Bruce `_, a reStructuredText presentation tool +* `AsciiDoc `_, a text-based documentation generator +* `ActiveState Code `_, the Python Cookbook successor +* `ViewVC `_, a web-based version control repository browser +* `BzrFruit `_, a Bazaar branch viewer +* `QBzr `_, a cross-platform Qt-based GUI front end for Bazaar +* `BitBucket `_, a Mercurial and Git hosting site +* `GitHub `_, a site offering secure Git hosting and collaborative development +* `Review Board `_, a collaborative code reviewing tool +* `skeletonz `_, a Python powered content management system +* `Diamanda `_, a Django powered wiki system with support for Pygments +* `Progopedia `_ (`English `_), + an encyclopedia of programming languages +* `Postmarkup `_, a BBCode to XHTML generator +* `Language Comparison `_, a site that compares different programming languages +* `BPython `_, a curses-based intelligent Python shell +* `Challenge-You! `_, a site offering programming challenges +* `PIDA `_, a universal IDE written in Python +* `PuDB `_, a console Python debugger +* `XWiki `_, a wiki-based development framework in Java, using Jython +* `roux `_, a script for running R scripts + and creating beautiful output including graphs +* `hurl `_, a web service for making HTTP requests +* `wxHTMLPygmentizer `_ is + a GUI utility, used to make code-colorization easier +* `WpPygments `_, a highlighter plugin for WordPress +* `LodgeIt `_, a pastebin with XMLRPC support and diffs +* `SpammCan `_, a pastebin (demo see + `here `_) +* `WowAce.com pastes `_, a pastebin +* `Siafoo `_, a tool for sharing and storing useful code and programming experience +* `D source `_, a community for the D programming language +* `dumpz.org `_, a pastebin +* `dpaste.com `_, another Django pastebin +* `PylonsHQ Pasties `_, a pastebin +* `Django snippets `_, a pastebin for Django code +* `Fayaa `_, a Chinese pastebin +* `Incollo.com `_, a free collaborative debugging tool +* `PasteBox `_, a pastebin focused on privacy +* `xinotes.org `_, a site to share notes, code snippets etc. +* `hilite.me `_, a site to highlight code snippets +* `patx.me `_, a pastebin + +If you have a project or web site using Pygments, drop me a line, and I'll add a +link here. + diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst new file mode 100644 index 0000000..a0e4121 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst @@ -0,0 +1,53 @@ +Welcome! +======== + +This is the home of Pygments. It is a generic syntax highlighter for general use +in all kinds of software such as forum systems, wikis or other applications that +need to prettify source code. Highlights are: + +* a wide range of common languages and markup formats is supported +* special attention is paid to details that increase highlighting quality +* support for new languages and formats are added easily; most languages use a simple regex-based lexing mechanism +* a number of output formats is available, among them HTML, RTF, LaTeX and ANSI sequences +* it is usable as a command-line tool and as a library +* ... and it highlights even Brainf*ck! + +Read more in the FAQ list or the documentation, or download the latest release. + +Though Pygments has not yet won an award, we trust that you will notice it's a top quality product . + +.. _contribute: + +Contribute +---------- + +Like every open-source project, we are always looking for volunteers to help us +with programming. Python knowledge is required, but don't fear: Python is a very +clear and easy to learn language. + +Development takes place on `Bitbucket +`_, where the Mercurial +repository, tickets and pull requests can be viewed. + +Our primary communication instrument is the IRC channel **#pocoo** on the +Freenode network. To join it, let your IRC client connect to +``irc.freenode.net`` and do ``/join #pocoo``. + +If you found a bug, just open a ticket in the Bitbucket tracker. Be sure to log +in to be notified when the issue is fixed -- development is not fast-paced as +the library is quite stable. You can also send an e-mail to the developers, see +below. + +The authors +----------- + +Pygments is maintained by **Georg Brandl**, e-mail address *georg*\ *@*\ *python.org*. + +Many lexers and fixes have been contributed by **Armin Ronacher**, the rest of +the `Pocoo `_ team and **Tim Hatch**. + +.. toctree:: + :maxdepth: 1 + :hidden: + + docs/index diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst new file mode 100644 index 0000000..0f98c58 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst @@ -0,0 +1,151 @@ +:orphan: + +Supported languages +=================== + +Pygments supports an ever-growing range of languages. Watch this space... + +Programming languages +--------------------- + +* ActionScript +* Ada +* ANTLR +* AppleScript +* Assembly (various) +* Asymptote +* Awk +* Befunge +* Boo +* BrainFuck +* C, C++ +* C# +* Clojure +* CoffeeScript +* ColdFusion +* Common Lisp +* Coq +* Cryptol (incl. Literate Cryptol) +* `Cython `_ +* `D `_ +* Dart +* Delphi +* Dylan +* Erlang +* Factor +* Fancy +* Fortran +* F# +* GAP +* Gherkin (Cucumber) +* GL shaders +* Groovy +* `Haskell `_ (incl. Literate Haskell) +* IDL +* Io +* Java +* JavaScript +* LLVM +* Logtalk +* `Lua `_ +* Matlab +* MiniD +* Modelica +* Modula-2 +* MuPad +* Nemerle +* Nimrod +* Objective-C +* Objective-J +* Octave +* OCaml +* PHP +* `Perl `_ +* PovRay +* PostScript +* PowerShell +* Prolog +* `Python `_ 2.x and 3.x (incl. console sessions and tracebacks) +* `REBOL `_ +* `Red `_ +* Redcode +* `Ruby `_ (incl. irb sessions) +* Rust +* S, S-Plus, R +* Scala +* Scheme +* Scilab +* Smalltalk +* SNOBOL +* Tcl +* Vala +* Verilog +* VHDL +* Visual Basic.NET +* Visual FoxPro +* XQuery +* Zephir +
+ +Template languages +------------------ + +* Cheetah templates +* `Django `_ / `Jinja + `_ templates +* ERB (Ruby templating) +* `Genshi `_ (the Trac template language) +* JSP (Java Server Pages) +* `Myghty `_ (the HTML::Mason based framework) +* `Mako `_ (the Myghty successor) +* `Smarty `_ templates (PHP templating) +* Tea + +Other markup +------------ + +* Apache config files +* Bash shell scripts +* BBCode +* CMake +* CSS +* Debian control files +* Diff files +* DTD +* Gettext catalogs +* Gnuplot script +* Groff markup +* HTML +* HTTP sessions +* INI-style config files +* IRC logs (irssi style) +* Lighttpd config files +* Makefiles +* MoinMoin/Trac Wiki markup +* MySQL +* Nginx config files +* POV-Ray scenes +* Ragel +* Redcode +* ReST +* Robot Framework +* RPM spec files +* SQL, also MySQL, SQLite +* Squid configuration +* TeX +* tcsh +* Vim Script +* Windows batch files +* XML +* XSLT +* YAML + +... that's all? +--------------- + +Well, why not write your own? Contributing to Pygments is easy and fun. Look +:doc:`here ` for the docs on lexer development and +:ref:`here ` for contact details. + +Note: the languages listed here are supported in the development version. The +latest release may lack a few of them. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat new file mode 100644 index 0000000..8803c98 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat @@ -0,0 +1,190 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Pygments.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Pygments.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +:end diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 new file mode 100644 index 0000000..71bb6f9 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 @@ -0,0 +1,94 @@ +.TH PYGMENTIZE 1 "February 15, 2007" + +.SH NAME +pygmentize \- highlights the input file + +.SH SYNOPSIS +.B \fBpygmentize\fP +.RI [-l\ \fI\fP]\ [-F\ \fI\fP[:\fI\fP]]\ [-f\ \fI\fP] +.RI [-O\ \fI\fP]\ [-P\ \fI\fP]\ [-o\ \fI\fP]\ [\fI\fP] +.br +.B \fBpygmentize\fP +.RI -S\ \fI + + +

%(title)s

+ +''' + +DOC_HEADER_EXTERNALCSS = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_FOOTER = '''\ + + +''' + + +class HtmlFormatter(Formatter): + r""" + Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
+    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` + option. + + If the `linenos` option is set to ``"table"``, the ``
`` is
+    additionally wrapped inside a ```` which has one row and two
+    cells: one containing the line numbers and one containing the code.
+    Example:
+
+    .. sourcecode:: html
+
+        
+
+ + +
+
1
+            2
+
+
def foo(bar):
+              pass
+            
+
+ + (whitespace added to improve clarity). + + Wrapping can be disabled using the `nowrap` option. + + A list of lines can be specified using the `hl_lines` option to make these + lines highlighted (as of Pygments 0.11). + + With the `full` option, a complete HTML 4 document is output, including + the style definitions inside a `` + + +

Code tags report for %s

+ + +%s +
LineTagWhoDescription
+ + +''' + + TABLE = '\nFile: %s\n' + + TR = ('%%(lno)d' + '%%(tag)s' + '%%(who)s%%(what)s') + + f = open(output, 'w') + table = '\n'.join(TABLE % fname + + '\n'.join(TR % (no % 2,) % entry + for no, entry in enumerate(store[fname])) + for fname in sorted(store)) + f.write(HTML % (', '.join(map(abspath, args)), table)) + f.close() + + print("Report written to %s." % output) + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py new file mode 100755 index 0000000..7aaa9be --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py @@ -0,0 +1,173 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +""" + Lexing error finder + ~~~~~~~~~~~~~~~~~~~ + + For the source files given on the command line, display + the text where Error tokens are being generated, along + with some context. + + :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from __future__ import print_function + +import os +import sys + +# always prefer Pygments from source if exists +srcpath = os.path.join(os.path.dirname(__file__), '..') +if os.path.isdir(os.path.join(srcpath, 'pygments')): + sys.path.insert(0, srcpath) + + +from pygments.lexer import RegexLexer +from pygments.lexers import get_lexer_for_filename, get_lexer_by_name +from pygments.token import Error, Text, _TokenType +from pygments.cmdline import _parse_options + + +class DebuggingRegexLexer(RegexLexer): + """Make the state stack, position and current match instance attributes.""" + + def get_tokens_unprocessed(self, text, stack=('root',)): + """ + Split ``text`` into (tokentype, text) pairs. + + ``stack`` is the inital stack (default: ``['root']``) + """ + self.pos = 0 + tokendefs = self._tokens + self.statestack = list(stack) + statetokens = tokendefs[self.statestack[-1]] + while 1: + for rexmatch, action, new_state in statetokens: + self.m = m = rexmatch(text, self.pos) + if m: + if type(action) is _TokenType: + yield self.pos, action, m.group() + else: + for item in action(self, m): + yield item + self.pos = m.end() + if new_state is not None: + # state transition + if isinstance(new_state, tuple): + for state in new_state: + if state == '#pop': + self.statestack.pop() + elif state == '#push': + self.statestack.append(self.statestack[-1]) + else: + self.statestack.append(state) + elif isinstance(new_state, int): + # pop + del self.statestack[new_state:] + elif new_state == '#push': + self.statestack.append(self.statestack[-1]) + else: + assert False, 'wrong state def: %r' % new_state + statetokens = tokendefs[self.statestack[-1]] + break + else: + try: + if text[self.pos] == '\n': + # at EOL, reset state to 'root' + self.pos += 1 + self.statestack = ['root'] + statetokens = tokendefs['root'] + yield self.pos, Text, u'\n' + continue + yield self.pos, Error, text[self.pos] + self.pos += 1 + except IndexError: + break + + +def main(fn, lexer=None, options={}): + if lexer is not None: + lx = get_lexer_by_name(lexer) + else: + try: + lx = get_lexer_for_filename(os.path.basename(fn), **options) + except ValueError: + try: + name, rest = fn.split('_', 1) + lx = get_lexer_by_name(name, **options) + except ValueError: + raise AssertionError('no lexer found for file %r' % fn) + debug_lexer = False + # does not work for e.g. ExtendedRegexLexers + if lx.__class__.__bases__ == (RegexLexer,): + lx.__class__.__bases__ = (DebuggingRegexLexer,) + debug_lexer = True + elif lx.__class__.__bases__ == (DebuggingRegexLexer,): + # already debugged before + debug_lexer = True + lno = 1 + text = open(fn, 'U').read() + text = text.strip('\n') + '\n' + tokens = [] + states = [] + + def show_token(tok, state): + reprs = map(repr, tok) + print(' ' + reprs[1] + ' ' + ' ' * (29-len(reprs[1])) + reprs[0], end=' ') + if debug_lexer: + print(' ' + ' ' * (29-len(reprs[0])) + repr(state), end=' ') + print() + + for type, val in lx.get_tokens(text): + lno += val.count('\n') + if type == Error: + print('Error parsing', fn, 'on line', lno) + print('Previous tokens' + (debug_lexer and ' and states' or '') + ':') + if showall: + for tok, state in map(None, tokens, states): + show_token(tok, state) + else: + for i in range(max(len(tokens) - num, 0), len(tokens)): + show_token(tokens[i], states[i]) + print('Error token:') + l = len(repr(val)) + print(' ' + repr(val), end=' ') + if debug_lexer and hasattr(lx, 'statestack'): + print(' ' * (60-l) + repr(lx.statestack), end=' ') + print() + print() + return 1 + tokens.append((type, val)) + if debug_lexer: + if hasattr(lx, 'statestack'): + states.append(lx.statestack[:]) + else: + states.append(None) + if showall: + for tok, state in map(None, tokens, states): + show_token(tok, state) + return 0 + + +num = 10 +showall = False +lexer = None +options = {} + +if __name__ == '__main__': + import getopt + opts, args = getopt.getopt(sys.argv[1:], 'n:l:aO:') + for opt, val in opts: + if opt == '-n': + num = int(val) + elif opt == '-a': + showall = True + elif opt == '-l': + lexer = val + elif opt == '-O': + options = _parse_options([val]) + ret = 0 + for f in args: + ret += main(f, lexer, options) + sys.exit(bool(ret)) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py new file mode 100644 index 0000000..4ea302f --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py @@ -0,0 +1,43 @@ +from __future__ import print_function +import re + +r_line = re.compile(r"^(syn keyword vimCommand contained|syn keyword vimOption " + r"contained|syn keyword vimAutoEvent contained)\s+(.*)") +r_item = re.compile(r"(\w+)(?:\[(\w+)\])?") + +def getkw(input, output): + out = file(output, 'w') + + output_info = {'command': [], 'option': [], 'auto': []} + for line in file(input): + m = r_line.match(line) + if m: + # Decide which output gets mapped to d + if 'vimCommand' in m.group(1): + d = output_info['command'] + elif 'AutoEvent' in m.group(1): + d = output_info['auto'] + else: + d = output_info['option'] + + # Extract all the shortened versions + for i in r_item.finditer(m.group(2)): + d.append('(%r,%r)' % + (i.group(1), "%s%s" % (i.group(1), i.group(2) or ''))) + + output_info['option'].append("('nnoremap','nnoremap')") + output_info['option'].append("('inoremap','inoremap')") + output_info['option'].append("('vnoremap','vnoremap')") + + for a, b in output_info.items(): + b.sort() + print('%s=[%s]' % (a, ','.join(b)), file=out) + +def is_keyword(w, keywords): + for i in range(len(w), 0, -1): + if w[:i] in keywords: + return keywords[w[:i]][:len(w)] == w + return False + +if __name__ == "__main__": + getkw("/usr/share/vim/vim73/syntax/vim.vim", "temp.py") diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc new file mode 100644 index 0000000..aa04e12 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc @@ -0,0 +1,301 @@ +# lint Python modules using external checkers. +# +# This is the main checker controling the other ones and the reports +# generation. It is itself both a raw checker and an astng checker in order +# to: +# * handle message activation / deactivation at the module level +# * handle some basic but necessary stats'data (number of classes, methods...) +# +[MASTER] + +# Specify a configuration file. +#rcfile= + +# Profiled execution. +profile=no + +# Add to the black list. It should be a base name, not a +# path. You may set this option multiple times. +ignore=.svn + +# Pickle collected data for later comparisons. +persistent=yes + +# Set the cache size for astng objects. +cache-size=500 + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +load-plugins= + + +[MESSAGES CONTROL] + +# Enable only checker(s) with the given id(s). This option conflict with the +# disable-checker option +#enable-checker= + +# Enable all checker(s) except those with the given id(s). This option conflict +# with the disable-checker option +#disable-checker= + +# Enable all messages in the listed categories. +#enable-msg-cat= + +# Disable all messages in the listed categories. +#disable-msg-cat= + +# Enable the message(s) with the given id(s). +#enable-msg= + +# Disable the message(s) with the given id(s). +disable-msg=C0323,W0142,C0301,C0103,C0111,E0213,C0302,C0203,W0703,R0201 + + +[REPORTS] + +# set the output format. Available formats are text, parseable, colorized and +# html +output-format=colorized + +# Include message's id in output +include-ids=yes + +# Put messages in a separate file for each module / package specified on the +# command line instead of printing them on stdout. Reports (if any) will be +# written in a file name "pylint_global.[txt|html]". +files-output=no + +# Tells wether to display a full report or only the messages +reports=yes + +# Python expression which should return a note less than 10 (10 is the highest +# note).You have access to the variables errors warning, statement which +# respectivly contain the number of errors / warnings messages and the total +# number of statements analyzed. This is used by the global evaluation report +# (R0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Add a comment according to your evaluation note. This is used by the global +# evaluation report (R0004). +comment=no + +# Enable the report(s) with the given id(s). +#enable-report= + +# Disable the report(s) with the given id(s). +#disable-report= + + +# checks for +# * unused variables / imports +# * undefined variables +# * redefinition of variable from builtins or from an outer scope +# * use of variable before assigment +# +[VARIABLES] + +# Tells wether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx=_|dummy + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid to define new builtins when possible. +additional-builtins= + + +# try to find bugs in the code using type inference +# +[TYPECHECK] + +# Tells wether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# When zope mode is activated, consider the acquired-members option to ignore +# access to some undefined attributes. +zope=no + +# List of members which are usually get through zope's acquisition mecanism and +# so shouldn't trigger E0201 when accessed (need zope=yes to be considered). +acquired-members=REQUEST,acl_users,aq_parent + + +# checks for : +# * doc strings +# * modules / classes / functions / methods / arguments / variables name +# * number of arguments, local variables, branchs, returns and statements in +# functions, methods +# * required module attributes +# * dangerous default values as arguments +# * redefinition of function / method / class +# * uses of the global statement +# +[BASIC] + +# Required attributes for module, separated by a comma +required-attributes= + +# Regular expression which should only match functions or classes name which do +# not require a docstring +no-docstring-rgx=__.*__ + +# Regular expression which should only match correct module names +module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Regular expression which should only match correct module level names +const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__))$ + +# Regular expression which should only match correct class names +class-rgx=[A-Z_][a-zA-Z0-9]+$ + +# Regular expression which should only match correct function names +function-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct method names +method-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct instance attribute names +attr-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct argument names +argument-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct variable names +variable-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct list comprehension / +# generator expression variable names +inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma +good-names=i,j,k,ex,Run,_ + +# Bad variable names which should always be refused, separated by a comma +bad-names=foo,bar,baz,toto,tutu,tata + +# List of builtins function names that should not be used, separated by a comma +bad-functions=apply,input + + +# checks for sign of poor/misdesign: +# * number of methods, attributes, local variables... +# * size, complexity of functions, methods +# +[DESIGN] + +# Maximum number of arguments for function / method +max-args=12 + +# Maximum number of locals for function / method body +max-locals=30 + +# Maximum number of return / yield for function / method body +max-returns=12 + +# Maximum number of branch for function / method body +max-branchs=30 + +# Maximum number of statements in function / method body +max-statements=60 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of attributes for a class (see R0902). +max-attributes=20 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=0 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + + +# checks for +# * external modules dependencies +# * relative / wildcard imports +# * cyclic imports +# * uses of deprecated modules +# +[IMPORTS] + +# Deprecated modules which should not be used, separated by a comma +deprecated-modules=regsub,string,TERMIOS,Bastion,rexec + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report R0402 must not be disabled) +import-graph= + +# Create a graph of external dependencies in the given file (report R0402 must +# not be disabled) +ext-import-graph= + +# Create a graph of internal dependencies in the given file (report R0402 must +# not be disabled) +int-import-graph= + + +# checks for : +# * methods without self as first argument +# * overridden methods signature +# * access only to existant members via self +# * attributes not defined in the __init__ method +# * supported interfaces implementation +# * unreachable code +# +[CLASSES] + +# List of interface methods to ignore, separated by a comma. This is used for +# instance to not check methods defines in Zope's Interface base class. +ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__,__new__,setUp + + +# checks for similarities and duplicated code. This computation may be +# memory / CPU intensive, so you should disable it if you experiments some +# problems. +# +[SIMILARITIES] + +# Minimum lines number of a similarity. +min-similarity-lines=10 + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + + +# checks for: +# * warning notes in the code like FIXME, XXX +# * PEP 263: source code with non ascii character but no encoding declaration +# +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME,XXX,TODO + + +# checks for : +# * unauthorized constructions +# * strict indentation +# * line length +# * use of <> instead of != +# +[FORMAT] + +# Maximum number of characters on a single line. +max-line-length=90 + +# Maximum number of lines in a module +max-module-lines=1000 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py new file mode 100755 index 0000000..42af0bb --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py @@ -0,0 +1,935 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + Vim Colorscheme Converter + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + This script converts vim colorscheme files to valid pygments + style classes meant for putting into modules. + + :copyright 2006 by Armin Ronacher. + :license: BSD, see LICENSE for details. +""" + +from __future__ import print_function + +import sys +import re +from os import path +from io import StringIO + +split_re = re.compile(r'(? 2 and \ + len(parts[0]) >= 2 and \ + 'highlight'.startswith(parts[0]): + token = parts[1].lower() + if token not in TOKENS: + continue + for item in parts[2:]: + p = item.split('=', 1) + if not len(p) == 2: + continue + key, value = p + if key in ('ctermfg', 'guifg'): + color = get_vim_color(value) + if color: + set('color', color) + elif key in ('ctermbg', 'guibg'): + color = get_vim_color(value) + if color: + set('bgcolor', color) + elif key in ('term', 'cterm', 'gui'): + items = value.split(',') + for item in items: + item = item.lower() + if item == 'none': + set('noinherit', True) + elif item == 'bold': + set('bold', True) + elif item == 'underline': + set('underline', True) + elif item == 'italic': + set('italic', True) + + if bg_color is not None and not colors['Normal'].get('bgcolor'): + colors['Normal']['bgcolor'] = bg_color + + color_map = {} + for token, styles in colors.items(): + if token in TOKENS: + tmp = [] + if styles.get('noinherit'): + tmp.append('noinherit') + if 'color' in styles: + tmp.append(styles['color']) + if 'bgcolor' in styles: + tmp.append('bg:' + styles['bgcolor']) + if styles.get('bold'): + tmp.append('bold') + if styles.get('italic'): + tmp.append('italic') + if styles.get('underline'): + tmp.append('underline') + tokens = TOKENS[token] + if not isinstance(tokens, tuple): + tokens = (tokens,) + for token in tokens: + color_map[token] = ' '.join(tmp) + + default_token = color_map.pop('') + return default_token, color_map + + +class StyleWriter(object): + + def __init__(self, code, name): + self.code = code + self.name = name.lower() + + def write_header(self, out): + out.write('# -*- coding: utf-8 -*-\n"""\n') + out.write(' %s Colorscheme\n' % self.name.title()) + out.write(' %s\n\n' % ('~' * (len(self.name) + 12))) + out.write(' Converted by %s\n' % SCRIPT_NAME) + out.write('"""\nfrom pygments.style import Style\n') + out.write('from pygments.token import Token, %s\n\n' % ', '.join(TOKEN_TYPES)) + out.write('class %sStyle(Style):\n\n' % self.name.title()) + + def write(self, out): + self.write_header(out) + default_token, tokens = find_colors(self.code) + tokens = list(tokens.items()) + tokens.sort(lambda a, b: cmp(len(a[0]), len(a[1]))) + bg_color = [x[3:] for x in default_token.split() if x.startswith('bg:')] + if bg_color: + out.write(' background_color = %r\n' % bg_color[0]) + out.write(' styles = {\n') + out.write(' %-20s%r,\n' % ('Token:', default_token)) + for token, definition in tokens: + if definition: + out.write(' %-20s%r,\n' % (token + ':', definition)) + out.write(' }') + + def __repr__(self): + out = StringIO() + self.write_style(out) + return out.getvalue() + + +def convert(filename, stream=None): + name = path.basename(filename) + if name.endswith('.vim'): + name = name[:-4] + f = file(filename) + code = f.read() + f.close() + writer = StyleWriter(code, name) + if stream is not None: + out = stream + else: + out = StringIO() + writer.write(out) + if stream is None: + return out.getvalue() + + +def main(): + if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'): + print('Usage: %s ' % sys.argv[0]) + return 2 + if sys.argv[1] in ('-v', '--version'): + print('%s %s' % (SCRIPT_NAME, SCRIPT_VERSION)) + return + filename = sys.argv[1] + if not (path.exists(filename) and path.isfile(filename)): + print('Error: %s not found' % filename) + return 1 + convert(filename, sys.stdout) + sys.stdout.write('\n') + + +if __name__ == '__main__': + sys.exit(main() or 0) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg new file mode 100644 index 0000000..abca6bc --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg @@ -0,0 +1,7 @@ +[egg_info] +tag_build = dev +tag_date = true + +[aliases] +release = egg_info -RDb '' +upload = upload --sign --identity=36580288 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py new file mode 100755 index 0000000..a0b2e90 --- /dev/null +++ b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + Pygments + ~~~~~~~~ + + Pygments is a syntax highlighting package written in Python. + + It is a generic syntax highlighter for general use in all kinds of software + such as forum systems, wikis or other applications that need to prettify + source code. Highlights are: + + * a wide range of common languages and markup formats is supported + * special attention is paid to details, increasing quality by a fair amount + * support for new languages and formats are added easily + * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image \ + formats that PIL supports and ANSI sequences + * it is usable as a command-line tool and as a library + * ... and it highlights even Brainfuck! + + The `Pygments tip`_ is installable with ``easy_install Pygments==dev``. + + .. _Pygments tip: + http://bitbucket.org/birkenfeld/pygments-main/get/default.zip#egg=Pygments-dev + + :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +try: + from setuptools import setup, find_packages + have_setuptools = True +except ImportError: + try: + import ez_setup + ez_setup.use_setuptools() + from setuptools import setup, find_packages + have_setuptools = True + except ImportError: + from distutils.core import setup + def find_packages(*args, **kwargs): + return [ + 'pygments', + 'pygments.lexers', + 'pygments.formatters', + 'pygments.styles', + 'pygments.filters', + ] + have_setuptools = False + +if have_setuptools: + add_keywords = dict( + entry_points = { + 'console_scripts': ['pygmentize = pygments.cmdline:main'], + }, + ) +else: + add_keywords = dict( + scripts = ['pygmentize'], + ) + +setup( + name = 'Pygments', + version = '2.0pre', + url = 'http://pygments.org/', + license = 'BSD License', + author = 'Georg Brandl', + author_email = 'georg@python.org', + description = 'Pygments is a syntax highlighting package written in Python.', + long_description = __doc__, + keywords = 'syntax highlighting', + packages = find_packages(exclude=['ez_setup']), + platforms = 'any', + zip_safe = False, + include_package_data = True, + classifiers = [ + 'License :: OSI Approved :: BSD License', + 'Intended Audience :: Developers', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: System Administrators', + 'Development Status :: 6 - Mature', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 3', + 'Operating System :: OS Independent', + 'Topic :: Text Processing :: Filters', + 'Topic :: Utilities', + ], + **add_keywords +) diff --git a/node_modules/pryjs/node_modules/underscore/LICENSE b/node_modules/pryjs/node_modules/underscore/LICENSE new file mode 100644 index 0000000..ad0e71b --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +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. diff --git a/node_modules/pryjs/node_modules/underscore/README.md b/node_modules/pryjs/node_modules/underscore/README.md new file mode 100644 index 0000000..c2ba259 --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/README.md @@ -0,0 +1,22 @@ + __ + /\ \ __ + __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ + /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ + \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ + \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ + \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ + \ \____/ + \/___/ + +Underscore.js is a utility-belt library for JavaScript that provides +support for the usual functional suspects (each, map, reduce, filter...) +without extending any core JavaScript objects. + +For Docs, License, Tests, and pre-packed downloads, see: +http://underscorejs.org + +Underscore is an open-sourced component of DocumentCloud: +https://github.com/documentcloud + +Many thanks to our contributors: +https://github.com/jashkenas/underscore/contributors diff --git a/node_modules/pryjs/node_modules/underscore/package.json b/node_modules/pryjs/node_modules/underscore/package.json new file mode 100644 index 0000000..122e455 --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/package.json @@ -0,0 +1,70 @@ +{ + "name": "underscore", + "description": "JavaScript's functional programming helper library.", + "homepage": "http://underscorejs.org", + "keywords": [ + "util", + "functional", + "server", + "client", + "browser" + ], + "author": { + "name": "Jeremy Ashkenas", + "email": "jeremy@documentcloud.org" + }, + "repository": { + "type": "git", + "url": "git://github.com/jashkenas/underscore.git" + }, + "main": "underscore.js", + "version": "1.8.3", + "devDependencies": { + "docco": "*", + "eslint": "0.6.x", + "karma": "~0.12.31", + "karma-qunit": "~0.1.4", + "qunit-cli": "~0.2.0", + "uglify-js": "2.4.x" + }, + "scripts": { + "test": "npm run test-node && npm run lint", + "lint": "eslint underscore.js test/*.js", + "test-node": "qunit-cli test/*.js", + "test-browser": "npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start", + "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", + "doc": "docco underscore.js" + }, + "license": "MIT", + "files": [ + "underscore.js", + "underscore-min.js", + "underscore-min.map", + "LICENSE" + ], + "gitHead": "e4743ab712b8ab42ad4ccb48b155034d02394e4d", + "bugs": { + "url": "https://github.com/jashkenas/underscore/issues" + }, + "_id": "underscore@1.8.3", + "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022", + "_from": "underscore@>=1.7.0 <2.0.0", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "jashkenas", + "email": "jashkenas@gmail.com" + }, + "maintainers": [ + { + "name": "jashkenas", + "email": "jashkenas@gmail.com" + } + ], + "dist": { + "shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022", + "tarball": "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/node_modules/underscore/underscore-min.js b/node_modules/pryjs/node_modules/underscore/underscore-min.js new file mode 100644 index 0000000..f01025b --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/underscore/underscore-min.map b/node_modules/pryjs/node_modules/underscore/underscore-min.map new file mode 100644 index 0000000..cf356bf --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/underscore-min.map @@ -0,0 +1 @@ +{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/underscore/underscore.js b/node_modules/pryjs/node_modules/underscore/underscore.js new file mode 100644 index 0000000..b29332f --- /dev/null +++ b/node_modules/pryjs/node_modules/underscore/underscore.js @@ -0,0 +1,1548 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); diff --git a/node_modules/pryjs/package.json b/node_modules/pryjs/package.json new file mode 100644 index 0000000..4d8ff85 --- /dev/null +++ b/node_modules/pryjs/package.json @@ -0,0 +1,64 @@ +{ + "name": "pryjs", + "version": "0.1.3", + "description": "Pry like ability in javascript.", + "main": "lib/pry.js", + "scripts": { + "test": "mocha --recursive --reporter=mocha-pride --compilers coffee:coffee-script/register ./tests && ./node_modules/.bin/cucumber.js" + }, + "author": { + "name": "blainesch" + }, + "license": "MIT", + "dependencies": { + "chalk": "^0.5.1", + "coffee-script": "^1.8.0", + "deasync": "~0.1.2", + "pygmentize-bundled": "^2.3.0", + "underscore": "^1.7.0" + }, + "devDependencies": { + "chai": "^1.10.0", + "cucumber": "^0.4.7", + "grunt": "^0.4.5", + "grunt-contrib-clean": "^0.6.0", + "grunt-contrib-coffee": "^0.12.0", + "mocha": "^2.3.3", + "mocha-pride": "0.0.2", + "sinon": "^1.12.1" + }, + "directories": { + "example": "examples", + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/blainesch/pry.js.git" + }, + "bugs": { + "url": "https://github.com/blainesch/pry.js/issues" + }, + "homepage": "https://github.com/blainesch/pry.js", + "gitHead": "96a13672fe5fbc3ba8e147273dba859fb2ae06de", + "_id": "pryjs@0.1.3", + "_shasum": "c53f5f70500c32f21e83a62d89d683272cdbfc21", + "_from": "pryjs@*", + "_npmVersion": "2.14.4", + "_nodeVersion": "4.1.1", + "_npmUser": { + "name": "blainesch", + "email": "blainesch@gmail.com" + }, + "maintainers": [ + { + "name": "blainesch", + "email": "blainesch@gmail.com" + } + ], + "dist": { + "shasum": "c53f5f70500c32f21e83a62d89d683272cdbfc21", + "tarball": "http://registry.npmjs.org/pryjs/-/pryjs-0.1.3.tgz" + }, + "_resolved": "https://registry.npmjs.org/pryjs/-/pryjs-0.1.3.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/pryjs/readme.md b/node_modules/pryjs/readme.md new file mode 100644 index 0000000..83d01b3 --- /dev/null +++ b/node_modules/pryjs/readme.md @@ -0,0 +1,40 @@ +## Pryjs + +A interactive repl for node, inspired by [pry](https://github.com/pry/pry). + +[![Build Status](https://travis-ci.org/blainesch/pry.js.svg?branch=master)](https://travis-ci.org/blainesch/pry.js) + +### Installing + +~~~ +npm install --save pryjs +~~~ + +### Usage + +Throw this beautiful snippet in the middle of your code: + +~~~ javascript +pry = require('pryjs') +eval(pry.it) +~~~ + +### Extra Commands + +While you are in the prompt there are a few things you might want to do: +* `help` display all the available commands. +* `kill` completely stop the script. +* `mode` switch between javascript and coffeescript mode. Defaults to javascript. +* `play` play lines of code as if you had entered them. Accepts two integers: start and end. End defaults to start. +* `stop` will exit the pryjs prompt and continue through the app. +* `version` display the current version. +* `whereami` will show you exactly where you are in the code. Accepts two integers to replace the default 5 before and 5 after. +* `wtf` display the last caught exception. + +### Examples + +Examples can be found in the [examples directory](./examples). + +### Screenshots + +![pryjs](./assets/demo.png) diff --git a/node_modules/pryjs/src/pry.coffee b/node_modules/pryjs/src/pry.coffee new file mode 100644 index 0000000..0ff3082 --- /dev/null +++ b/node_modules/pryjs/src/pry.coffee @@ -0,0 +1,18 @@ +App = require('./pry/app') + +class Pry + + constructor: -> + @it = "(#{@_pry.toString()}).call(this)" + + _pry: -> + _ = null + pry.open ((input) -> + _ = eval(input) + ).bind(@) + + open: (scope) -> + app = new App(scope) + app.open() + +module.exports = new Pry diff --git a/node_modules/pryjs/src/pry/app.coffee b/node_modules/pryjs/src/pry/app.coffee new file mode 100644 index 0000000..0565067 --- /dev/null +++ b/node_modules/pryjs/src/pry/app.coffee @@ -0,0 +1,41 @@ +SyncPrompt = require('./sync_prompt') +Output = require('./output/local_output') +commands = require('./commands') + +class App + + _commands: [] + + constructor: (@scope) -> + @output = new Output() + @prompt = new SyncPrompt({ + typeahead: @typeahead + }) + @prompt.on('data', @find_command) + + commands: -> + if @_commands.length is 0 + @_commands.push new command({@output, @scope}) for i,command of commands + @_commands + + typeahead: (input = '') => + items = [] + for command in @commands() + items = items.concat(command.typeahead(input)) + if input + items = items.filter (item) -> + item.indexOf(input) is 0 + [items, input] + + find_command: (input, chain) => + for command in @commands() + if match = command.match(input.trim()) + args = String(match[1]).trim().split(' ') + return command.execute.call command, args, chain + false + + open: -> + @prompt.type('whereami') + @prompt.open() + +module.exports = App diff --git a/node_modules/pryjs/src/pry/command.coffee b/node_modules/pryjs/src/pry/command.coffee new file mode 100644 index 0000000..f525825 --- /dev/null +++ b/node_modules/pryjs/src/pry/command.coffee @@ -0,0 +1,61 @@ +File = require('./file') +Range = require('./range') + +class Command + + # List of all initialized commands + @commands = {} + + # The name of your command + name: '' + + # Aliases of the command + aliases: [] + + # Standard definition of your command + definition: '' + + # Additional help information and usage. + help: '' + + # How many arguments you want. Number or range. + args: new Range(0, 0) + + constructor: ({@scope, @output}) -> + @stack = new Error().stack + @constructor.commands[@constructor.name] = @ + + command: (input) -> + for name, command of @commands() + return command if command.constructor.name.match(new RegExp(input, 'i')) + + commands: -> + @constructor.commands + + typeahead: -> + items = @aliases.slice(0) + items.push(@name) + items + + # Generates a regex based on the info given + command_regex: -> + subject = "^(?:#{@name}" + if @aliases.length > 0 + subject += "|#{@aliases.join('|')}" + subject += ")((?: (?:[^ ]+))#{@args.to_regex()})$" + new RegExp(subject) + + match: (input) -> + input.match(@command_regex()) + + find_file: -> + foundCall = false + for item in @stack.split('\n') + if foundCall + [_, file, line] = item.match(/([^ (:]+):(\d+):\d+/) + return new File(file, line) if file isnt '' + else if item.match /Pry\.open/ + foundCall = true + new File(__filename, 1) + +module.exports = Command diff --git a/node_modules/pryjs/src/pry/commands/help.coffee b/node_modules/pryjs/src/pry/commands/help.coffee new file mode 100644 index 0000000..a0522ff --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/help.coffee @@ -0,0 +1,34 @@ +Command = require('../command') +Range = require('../range') +chalk = require('chalk') + +class Help extends Command + + name: 'help' + aliases: ['\\?'] + definition: 'Shows a list of commands. Type `help foo` for help on the `foo` command.' + help: 'You just lost the game.' + args: new Range(0, 1) + + typeahead: (input = '') -> + if input.indexOf('help') is 0 + items = [] + for name,command of @commands() + items.push "help #{command.name}" if command.name + items + else + ['help'] + + execute: ([name], chain) -> + if name + command = @command(name) + @output.add(chalk.blue(command.name), '-', command.definition) + @output.add(command.help) + @output.sendAll() + else + for name, command of @commands() + @output.add(chalk.blue(command.name), '-', command.definition) if command.name + @output.sendAll() + chain.next() + +module.exports = Help diff --git a/node_modules/pryjs/src/pry/commands/index.coffee b/node_modules/pryjs/src/pry/commands/index.coffee new file mode 100644 index 0000000..f2f5916 --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/index.coffee @@ -0,0 +1,7 @@ +fs = require 'fs' + +for file in fs.readdirSync(__dirname) + if file.match(/\.(coffee|js)$/) && !file.match(/index\.(js|coffee)/) + file = file.substr 0, file.indexOf('.') + name = file.substring(0, 1).toUpperCase() + file.substring(1) + exports[name] = require("./#{file}") diff --git a/node_modules/pryjs/src/pry/commands/kill.coffee b/node_modules/pryjs/src/pry/commands/kill.coffee new file mode 100644 index 0000000..9d7278f --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/kill.coffee @@ -0,0 +1,14 @@ +Command = require('../command') + +class Kill extends Command + + name: 'kill!' + aliases: ['kill', 'exit!', 'quit!', 'stop!'] + definition: 'Exits from the entire script.' + + execute: (args, chain) -> + chain.stop() + process.kill() + false + +module.exports = Kill diff --git a/node_modules/pryjs/src/pry/commands/play.coffee b/node_modules/pryjs/src/pry/commands/play.coffee new file mode 100644 index 0000000..f11334d --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/play.coffee @@ -0,0 +1,20 @@ +Command = require('../command') +Range = require('../range') + +class Play extends Command + + name: 'play' + definition: 'Play a specific line, or set of lines in the file you are in.' + help: '`play 1 2` will play lines 1 and 2.\n`play 1` will just play line 1.' + args: new Range(1, 2) + + constructor: -> + super + @file = @find_file() + + execute: ([start, end], chain) -> + end ||= start + @command('xecute').execute_code(@file.by_lines(start, end), @file.type()) + chain.next() + +module.exports = Play diff --git a/node_modules/pryjs/src/pry/commands/stop.coffee b/node_modules/pryjs/src/pry/commands/stop.coffee new file mode 100644 index 0000000..6b827fa --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/stop.coffee @@ -0,0 +1,12 @@ +Command = require('../command') + +class Stop extends Command + + name: 'stop' + aliases: ['exit', 'quit'] + definition: 'Ends the current prompt and continues running the rest of the code.' + + execute: (args, chain) -> + chain.stop() + +module.exports = Stop diff --git a/node_modules/pryjs/src/pry/commands/version.coffee b/node_modules/pryjs/src/pry/commands/version.coffee new file mode 100644 index 0000000..0a4b923 --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/version.coffee @@ -0,0 +1,13 @@ +Command = require('../command') + +class Version extends Command + + name: 'version' + definition: 'Shows the current version or pry.js you are using.' + + execute: (args, chain) -> + content = require('fs').readFileSync("#{__dirname}/../../../package.json") + @output.send(JSON.parse(content)['version']) + chain.next() + +module.exports = Version diff --git a/node_modules/pryjs/src/pry/commands/whereami.coffee b/node_modules/pryjs/src/pry/commands/whereami.coffee new file mode 100644 index 0000000..7d0fdd7 --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/whereami.coffee @@ -0,0 +1,25 @@ +Command = require('../command') +Range = require('../range') + +class Whereami extends Command + + name: 'whereami' + definition: 'Shows you exactly where you are in the code.' + help: '`whereami` - Shows you where you are. +\n`whereami 6` - Gives you 6 lines before instead of 5. +\n`whereami 6 8` - Gives you 6 lines before instead of 5, and 8 lines after.' + args: new Range(0, 2) + + constructor: -> + super + @file = @find_file() + + execute: ([before, after], chain) -> + before ||= 5 + after ||= 5 + start = @file.line - parseInt(before, 10) + end = @file.line + parseInt(after, 10) + @output.send(@file.formatted_content_by_line(start, end)) + chain.next() + +module.exports = Whereami diff --git a/node_modules/pryjs/src/pry/commands/wtf.coffee b/node_modules/pryjs/src/pry/commands/wtf.coffee new file mode 100644 index 0000000..59a2c99 --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/wtf.coffee @@ -0,0 +1,16 @@ +Command = require('../command') + +class Wtf extends Command + + name: 'wtf' + definition: 'Shows the last caught exception.' + help: '`wtf` will show you the last caught exception.' + + execute: (args, chain) -> + if @command('xecute').last_error + @output.send(@command('xecute').last_error.stack) + else + @output.send('No errors') + chain.next() + +module.exports = Wtf diff --git a/node_modules/pryjs/src/pry/commands/xecute.coffee b/node_modules/pryjs/src/pry/commands/xecute.coffee new file mode 100644 index 0000000..b309f67 --- /dev/null +++ b/node_modules/pryjs/src/pry/commands/xecute.coffee @@ -0,0 +1,38 @@ +Command = require('../command') +Range = require('../range') +Compiler = require('../compiler') + +class Xecute extends Command + + name: '' + + last_error: null + + args: new Range(1, Infinity) + + constructor: -> + super + @compiler = new Compiler({@scope}) + + execute: (input, chain) -> + return @switch_mode(chain) if input[0] == 'mode' + @execute_code input.join(' ') + chain.next() + + execute_code: (code, language = null) -> + try + @output.send @compiler.execute(code, language) + catch err + @last_error = err + @output.send err + + switch_mode: (chain) -> + @compiler.toggle_mode() + @output.send "Switched mode to '#{@compiler.mode()}'." + chain.next() + + # Should always fallback to this + match: (input) -> + [input, input] + +module.exports = Xecute diff --git a/node_modules/pryjs/src/pry/compiler.coffee b/node_modules/pryjs/src/pry/compiler.coffee new file mode 100644 index 0000000..6c3b20f --- /dev/null +++ b/node_modules/pryjs/src/pry/compiler.coffee @@ -0,0 +1,31 @@ +coffee = require('coffee-script') +pry = require('../pry') + +class Compiler + + mode_id: 0 + + noVarPattern: /^\s*var .*$/gm + + modes: ['js', 'coffee'] + + constructor: ({@scope}) -> + + mode: -> + @modes[@mode_id] + + toggle_mode: -> + @mode_id = (@mode_id + 1) % @modes.length + + execute: (code, language = @modes[@mode_id]) -> + @["execute_#{language}"](code) + + execute_coffee: (code) -> + @execute_js(coffee + .compile(code, bare: true) + .replace(@noVarPattern, '')) + + execute_js: (code) -> + @scope(code) + +module.exports = Compiler diff --git a/node_modules/pryjs/src/pry/file.coffee b/node_modules/pryjs/src/pry/file.coffee new file mode 100644 index 0000000..6e13a23 --- /dev/null +++ b/node_modules/pryjs/src/pry/file.coffee @@ -0,0 +1,25 @@ +fs = require('fs') +SyncHighlight = require('./sync_highlight') + +class File + + constructor: (@name, @line) -> + @line = parseInt(@line) + + type: -> + if @name.match /coffee$/ + 'coffee' + else + 'js' + + by_lines: (start, end = start) -> + @content().split('\n').slice(start - 1, end).join('\n') + + content: -> + @_content ||= fs.readFileSync(@name).toString() + + formatted_content_by_line: (start, end = start, line = @line) -> + start = (if start < 0 then 0 else start) + new SyncHighlight(@content(), @type()).code_snippet(start, end, line) + +module.exports = File diff --git a/node_modules/pryjs/src/pry/output/local_output.coffee b/node_modules/pryjs/src/pry/output/local_output.coffee new file mode 100644 index 0000000..e8da5c3 --- /dev/null +++ b/node_modules/pryjs/src/pry/output/local_output.coffee @@ -0,0 +1,16 @@ +class LocalOutput + + output: [] + + send: -> + console.log.apply(console.log, arguments) + + add: (args...) -> + @output.push args.join(' ') + + sendAll: -> + @send(@output.join('\n')) + @output = [] + + +module.exports = LocalOutput diff --git a/node_modules/pryjs/src/pry/range.coffee b/node_modules/pryjs/src/pry/range.coffee new file mode 100644 index 0000000..6ca3624 --- /dev/null +++ b/node_modules/pryjs/src/pry/range.coffee @@ -0,0 +1,18 @@ +class Range + + start: 0 + end: 0 + + constructor: (@start, @end) -> + throw "Start must be smaller than end" if @start > @end + + includes: (i) -> + @start <= i and i <= @end + + to_regex: -> + if @end == Infinity + "{#{@start},}" + else + "{#{@start},#{@end}}" + +module.exports = Range diff --git a/node_modules/pryjs/src/pry/sync_highlight.coffee b/node_modules/pryjs/src/pry/sync_highlight.coffee new file mode 100644 index 0000000..04bd18f --- /dev/null +++ b/node_modules/pryjs/src/pry/sync_highlight.coffee @@ -0,0 +1,55 @@ +pygmentize = require 'pygmentize-bundled' +deasync = require 'deasync' +chalk = require 'chalk' +util = require 'util' + +class SyncHighlight + + content: null + + type: null + + constructor: (obj, @type = 'javascript') -> + if typeof obj == 'function' + @content = obj.toString() + else if typeof obj == 'string' + @content = obj + else + @content = JSON.stringify(obj, @stringify, "\t") + + stringify: (key, value) -> + return util.inspect(value) if typeof value == 'function' + value + + highlight: -> + if chalk.supportsColor + done = data = false + pygmentize + lang: @type + format: "terminal" + , @content, (err, res) => + done = true + data = res.toString() + deasync.runLoopOnce() until done + else + data = @content + data + + code_snippet: (start, end, line_number, line_pointer = ' => ') -> + lines = @highlight().split('\n') + for line,key in lines + if key+1 == line_number + pointer = line_pointer + else + pointer = @_spaces(line_pointer.length) + lines[key] = "#{pointer}#{@_space(key+1)}#{chalk.cyan(key+1)}: #{line}" + lines.slice(start - 1, end).join('\n') + + # Assumes the biggest line number is 9999 + _space: (line) -> + @_spaces(4 - String(line).length) + + _spaces: (length, char = ' ') -> + new Array(length + 1).join(char) + +module.exports = SyncHighlight diff --git a/node_modules/pryjs/src/pry/sync_prompt.coffee b/node_modules/pryjs/src/pry/sync_prompt.coffee new file mode 100644 index 0000000..95b777d --- /dev/null +++ b/node_modules/pryjs/src/pry/sync_prompt.coffee @@ -0,0 +1,96 @@ +readline = require('readline') +EventEmitter = require('events').EventEmitter +deasync = require('deasync') +_ = require('underscore') + +class MultilineState + + data: '' + + keypress: (input, chars) -> + @data += chars + if @data.match(/(\r|\n)\1$/) + @data = '' + input.state('single') + input.send_data() + else if chars.match(/(\r|\n)$/) + input.prompt() + + prompt: (input, prompt) -> + if @data == '' + input.cli.setPrompt(prompt.replace(/[^>](?!$)/g, '-')) + else + input.cli.setPrompt(prompt.replace(/.(?!$)/g, '.')) + input.cli.prompt() + +class SinglelineState + + keypress: (input, chars) -> + if chars is '\u0016' + input.state('multi') + input.prompt() + else if chars.match(/(\r|\n)$/) + input.send_data() + + prompt: (input, prompt) -> + input.cli.setPrompt(prompt) + input.cli.prompt() + +class SyncPrompt extends EventEmitter + + lines: '' + + count: 0 + + states: + multi: new MultilineState + single: new SinglelineState + + _state: 'single' + + done: false + + constructor: (@options = {}) -> + @options = _.extend(_.pick(process, 'stdin', 'stdout'), @options) + @cli = readline.createInterface + input: @options.stdin + output: @options.stdout + completer: @options.typeahead + @cli.on('line', @line) + @options.stdin.on('data', @keypress) + + state: (state) => + @_state = state if state + @states[@_state] + + line: (line) => + line = line.slice(1) if line.charCodeAt(0) is 22 + @lines += '\n' + line + + keypress: (chars) => + @state().keypress(@, chars.toString()) + + send_data: => + @count++ + @emit('data', @lines.trim(), next: @prompt, stop: @close) + @lines = '' + + prompt: => + @state().prompt(@, "[#{@count}] pryjs> ") + + open: -> + @done = false + @prompt() + deasync.runLoopOnce() until @done + + # Manually trigger input + type: (input) => + @lines = input + @send_data() + + close: => + @done = true + @options.stdin.removeListener('data', @keypress) + @cli.close() + +module.exports = SyncPrompt diff --git a/node_modules/pryjs/tests/app_spec.coffee b/node_modules/pryjs/tests/app_spec.coffee new file mode 100644 index 0000000..f0bb3c5 --- /dev/null +++ b/node_modules/pryjs/tests/app_spec.coffee @@ -0,0 +1,69 @@ +expect = require('chai').expect +sinon = require('sinon') +App = require('../src/pry/app') + +describe 'app', -> + + subject = null + + command = (ret_match, ret_execute) -> + match: sinon.stub().returns(ret_match) + execute: sinon.stub().returns(ret_execute) + + before (complete) -> + subject = new App + complete() + + describe '#find_command', -> + + describe 'given three commands', -> + + response = null + + before (complete) -> + subject._commands = [ + command(false, false) + command(true, true) + command(true, false) + ] + response = subject.find_command('foo') + complete() + + it 'returns true', -> + expect(response).to.equal true + + it 'calls the second command', -> + expect(subject.commands()[1].execute.calledOnce).to.equal true + + it 'doesnt call the first and third command', -> + expect(subject.commands()[0].execute.calledOnce).to.equal false + expect(subject.commands()[2].execute.calledOnce).to.equal false + + describe '#typeahead', -> + + describe 'given three commands', -> + + before (complete) -> + subject._commands = [ + typeahead: -> ['foo'] + , + typeahead: -> ['bar'] + , + typeahead: -> ['baz'] + ] + complete() + + describe 'given no input', -> + + it 'returns all items', -> + expect(subject.typeahead()[0]).to.deep.equal ['foo', 'bar', 'baz'] + + describe 'given input of "f"', -> + + it 'returns all items', -> + expect(subject.typeahead('f')[0]).to.deep.equal ['foo'] + + describe 'given input of "github"', -> + + it 'returns all items', -> + expect(subject.typeahead('github')[0]).to.deep.equal [] diff --git a/node_modules/pryjs/tests/command_spec.coffee b/node_modules/pryjs/tests/command_spec.coffee new file mode 100644 index 0000000..7657015 --- /dev/null +++ b/node_modules/pryjs/tests/command_spec.coffee @@ -0,0 +1,107 @@ +expect = require('chai').expect +Command = require('../src/pry/command') +Range = require('../src/pry/range') + +describe 'Command', -> + + subject = null + + beforeEach (complete) -> + subject = new Command + scope: (p) -> p + output: + send: -> true + complete() + + describe '#command', -> + + beforeEach (complete) -> + subject.constructor.commands = + one: + constructor: + name: 'Blaine' + two: + constructor: + name: 'Sch' + complete() + + it 'matches case insensitive strings', -> + expect(subject.command('blaine').constructor.name).to.equal 'Blaine' + + describe '#typeahead', -> + + describe 'given a name and aliases', -> + + beforeEach (complete) -> + subject.name = 'foobar' + subject.aliases = ['fb', 'gh'] + complete() + + it 'matches case insensitive strings', -> + expect(subject.typeahead()).to.deep.equal ['fb', 'gh', 'foobar'] + + describe '#command_regex', -> + + describe 'given a name of foo and 1-3 arguments', -> + + beforeEach (complete) -> + subject.name = 'foo' + subject.args = new Range(0, 3) + complete() + + it 'matches foo', -> + expect('foo').to.match subject.command_regex() + + it 'matches foo bar', -> + expect('foo bar').to.match subject.command_regex() + + it 'matches foo bar baz guz', -> + expect('foo bar baz guz').to.match subject.command_regex() + + it 'doesnt matches foo bar baz guz gul', -> + expect('foo bar baz guz gul').to.not.match subject.command_regex() + + describe '#find_file', -> + + describe 'given a valid backtrace', -> + + beforeEach (complete) -> + subject.stack = 'ReferenceError: Position is not defined\n + at new Presenter (~/sites/devup/apps/pry.js/src/pry/presenter.coffee:14:16)\n + at Pry.open (~/sites/devup/apps/pry.js/src/pry.coffee:13:17)\n + at eval (:2:18)\n + at eval (:5:7)\n + at fizzBuzz (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:6:5)\n + at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:16:1)\n + at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:1:1)\n + at Module._compile (module.js:456:26)\n + at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:119:23)\n + at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:208:29)' + complete() + + it 'find the fizzBugg file', -> + expect(subject.find_file().name).to.eq '~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee' + + it 'find the fizzBugg line', -> + expect(subject.find_file().line).to.eq 6 + + describe 'given a invalid backtrace', -> + + beforeEach (complete) -> + subject.stack = 'ReferenceError: Position is not defined\n + at new Presenter (~/sites/devup/apps/pry.js/src/pry/presenter.coffee:14:16)\n + at eval (:2:18)\n + at eval (:5:7)\n + at fizzBuzz (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:6:5)\n + at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:16:1)\n + at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:1:1)\n + at Module._compile (module.js:456:26)\n + at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:119:23)\n + at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:208:29)' + complete() + + it 'find the default command file', -> + expect(subject.find_file().name).to.match /command\.(coffee|js)$/ + + it 'finds the first line', -> + expect(subject.find_file().line).to.eq 1 diff --git a/node_modules/pryjs/tests/commands/help_spec.coffee b/node_modules/pryjs/tests/commands/help_spec.coffee new file mode 100644 index 0000000..38962f2 --- /dev/null +++ b/node_modules/pryjs/tests/commands/help_spec.coffee @@ -0,0 +1,25 @@ +expect = require('chai').expect +sinon = require('sinon') +Help = require('../../src/pry/commands/help') + +describe 'Help', -> + + subject = null + spy = sinon.spy() + + before (complete) -> + subject = new Help + scope: (p) -> p + complete() + + describe '#typeahead', -> + + describe 'given I type nothing', -> + + it 'stops on the first index', -> + expect(subject.typeahead()).to.deep.equal ['help'] + + describe 'given I type "help"', -> + + it 'it gives me all the help commands', -> + expect(subject.typeahead('help')).to.deep.equal ['help help'] diff --git a/node_modules/pryjs/tests/commands/whereami_spec.coffee b/node_modules/pryjs/tests/commands/whereami_spec.coffee new file mode 100644 index 0000000..c910ecb --- /dev/null +++ b/node_modules/pryjs/tests/commands/whereami_spec.coffee @@ -0,0 +1,45 @@ +expect = require('chai').expect +sinon = require('sinon') +Whereami = require('../../src/pry/commands/whereami') + +describe 'Whereami', -> + + subject = null + spy = sinon.spy() + + before (complete) -> + subject = new Whereami + scope: (p) -> p + output: + send: -> true + subject.file = + formatted_content_by_line: spy + content: -> + 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' + complete() + + describe '#execute', -> + + describe 'given I am on line 3', -> + + before (complete) -> + subject.file.line = 3 + complete() + + describe 'given I call it with the default arguments', -> + + before (complete) -> + subject.execute([], next: sinon.spy()) + complete() + + it 'stops on the first index', -> + expect(spy.calledWith(-2, 8)).to.equal true + + describe 'given I call it with a long tail', -> + + before (complete) -> + subject.execute([1, 100], next: sinon.spy()) + complete() + + it 'bleeds past the last index', -> + expect(spy.calledWith(2, 103)).to.equal true diff --git a/node_modules/pryjs/tests/compiler_spec.coffee b/node_modules/pryjs/tests/compiler_spec.coffee new file mode 100644 index 0000000..11d5e3f --- /dev/null +++ b/node_modules/pryjs/tests/compiler_spec.coffee @@ -0,0 +1,46 @@ +expect = require('chai').expect +Compiler = require('../src/pry/compiler') + +describe 'Compiler', -> + + subject = null + + beforeEach (complete) -> + subject = new Compiler + scope: (input) -> + eval(input) + output: + send: -> + arguments + complete() + + describe '#toggle_mode', -> + + beforeEach (complete) -> + expect(subject.mode_id).to.equal 0 + subject.toggle_mode() + complete() + + it 'switches the mode to coffeescript', -> + expect(subject.mode_id).to.equal 1 + + it 'switches back to javascript', -> + subject.toggle_mode() + expect(subject.mode_id).to.equal 0 + + describe '#execute', -> + + describe 'in javascript mode', -> + + it 'can add numbers together', -> + expect(subject.execute('var i = 0;++i;')).to.equal 1 + + describe 'in coffee mode', -> + + beforeEach (complete) -> + subject.toggle_mode() + expect(subject.mode_id).to.equal 1 + complete() + + it 'can add numbers together', -> + expect(subject.execute('i = 0\n++i')).to.equal 1 diff --git a/node_modules/pryjs/tests/file_spec.coffee b/node_modules/pryjs/tests/file_spec.coffee new file mode 100644 index 0000000..5d4c26c --- /dev/null +++ b/node_modules/pryjs/tests/file_spec.coffee @@ -0,0 +1,46 @@ +expect = require('chai').expect +File = require('../src/pry/file') + +describe 'File', -> + + subject = null + + beforeEach (complete) -> + subject = new File('foo.coffee', 1) + subject.content = -> + 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' + complete() + + describe '#by_lines', -> + + it 'gives me the correct lines', -> + expect(subject.by_lines(1,2)).to.equal 'The\nquick' + + describe '#type', -> + + describe 'given a coffee file', -> + + beforeEach (complete) -> + subject.name = 'file.coffee' + complete() + + it 'returns coffee for a coffee file', -> + expect(subject.type()).to.equal 'coffee' + + describe 'given a js file', -> + + beforeEach (complete) -> + subject.name = 'file.js' + complete() + + it 'returns js', -> + expect(subject.type()).to.equal 'js' + + describe 'given a text file', -> + + beforeEach (complete) -> + subject.name = 'file.txt' + complete() + + it 'returns js', -> + expect(subject.type()).to.equal 'js' diff --git a/node_modules/pryjs/tests/range_spec.coffee b/node_modules/pryjs/tests/range_spec.coffee new file mode 100644 index 0000000..2f59610 --- /dev/null +++ b/node_modules/pryjs/tests/range_spec.coffee @@ -0,0 +1,49 @@ +expect = require('chai').expect +Range = require('../src/pry/range') + +describe 'Range', -> + + subject = null + + describe '#includes', -> + + describe 'given a range of 1 to 100', -> + + beforeEach (complete) -> + subject = new Range(1, 100) + complete() + + it 'includes 1', -> + expect(subject.includes(1)).to.equal true + + it 'includes 100', -> + expect(subject.includes(100)).to.equal true + + it 'includes 50', -> + expect(subject.includes(50)).to.equal true + + it 'doesnt include 101', -> + expect(subject.includes(101)).to.equal false + + it 'doesnt include 0', -> + expect(subject.includes(0)).to.equal false + + describe '#to_regex', -> + + describe 'given a range of 1 to 100', -> + + beforeEach (complete) -> + subject = new Range(1, 100) + complete() + + it 'gives back the correct regex', -> + expect(subject.to_regex()).to.equal '{1,100}' + + describe 'given a range of 1 to Infinity', -> + + beforeEach (complete) -> + subject = new Range(1, Infinity) + complete() + + it 'gives back the correct regex', -> + expect(subject.to_regex()).to.equal '{1,}' diff --git a/node_modules/pryjs/tests/sync_highlight_spec.coffee b/node_modules/pryjs/tests/sync_highlight_spec.coffee new file mode 100644 index 0000000..67486b4 --- /dev/null +++ b/node_modules/pryjs/tests/sync_highlight_spec.coffee @@ -0,0 +1,23 @@ +expect = require('chai').expect +chalk = require('chalk') +SyncHighlight = require('../src/pry/sync_highlight') + +describe 'SyncHighlight', -> + + subject = null + + beforeEach (complete) -> + subject = new SyncHighlight('foo.coffee', 'javascript') + subject.content = 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' + subject.highlight = -> + subject.content + complete() + + describe '#code_snippet', -> + + it 'contains a pointer on the correct line', -> + expect(subject.code_snippet(1, 9, 3).split('\n')[2]).to.match new RegExp('=>') + + it 'gives me the correct lines', -> + expect(subject.code_snippet(4, 5).split('\n')[0]).to.match /fox/ + expect(subject.code_snippet(4, 5).split('\n')[1]).to.match /jumps/ diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 444e5a7..a5dc792 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -1,18 +1,16 @@ + function TicTacToe() { this.pickSpaces(); - this.resetBoard(); + this.resetButton(); } TicTacToe.prototype = { - // board: [["", "", ""], ["", "", ""], ["", "", ""]], - // choices: ["", "X", "O"], board_spaces: ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"], player_1_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], player_2_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], - //player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] pickSpaces: function(){ - self = this; + var self = this; var player = 0; self.board_spaces.forEach(function(box) { $("." + box).click(function() { @@ -32,20 +30,22 @@ TicTacToe.prototype = { }, resetBoard: function(){ - self = this; - $('#reset-button').click(function() { - self.board_spaces.forEach(function(box) { - $("." + box).css('background-color', 'blue'); - }); + this.board_spaces.forEach(function(box) { + $("." + box).css('background-color', 'blue'); }); + this.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + this.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; }, - boardSpaces: function() { - return ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"]; + resetButton: function(){ + var self = this; + $('#reset-button').click(function() { + self.resetBoard(); + }); }, gameOver: function() { - self = this; + var self = this; var count = 0; self.board_spaces.forEach(function(box) { if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { @@ -54,14 +54,12 @@ TicTacToe.prototype = { }); if (count === 0){ alert("It's a tie!"); - self.board_spaces.forEach(function(box) { - $("." + box).css('background-color', 'blue'); - }); + self.resetBoard(); } }, updateScore: function(space, player) { - self = this; + var self = this; if(space.substring(0,2) == "r1") { if (player === 0) { self.player_1_score[0]++; @@ -81,7 +79,6 @@ TicTacToe.prototype = { self.player_2_score[2]++; } } - if (space.substring(2,4) == "c1") { if (player === 0) { self.player_1_score[3]++; @@ -101,16 +98,14 @@ TicTacToe.prototype = { self.player_2_score[5]++; } } - - if ((space == "c1r1") || (space = "c2r2") || (space = "c3r3")) { + if (["r1c1", "r2c2", "r3c3"].includes(space)) { if (player === 0) { self.player_1_score[6]++; } else { self.player_2_score[6]++; } } - - if ((space == "c3r1") || (space = "c2r2") || (space = "c1r3")) { + if (["r1c3", "r2c2", "r3c1"].includes(space)) { if (player === 0) { self.player_1_score[7]++; } else { @@ -121,29 +116,20 @@ TicTacToe.prototype = { }, checkForWinner: function() { - self = this; + var self = this; self.player_1_score.forEach(function(score) { if (score == 3) { alert("Player 1 wins!"); - self.board_spaces.forEach(function(box) { - $("." + box).css('background-color', 'blue'); - }); - self.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; - self.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + self.resetBoard(); } }); self.player_2_score.forEach(function(score) { if (score == 3) { alert("Player 2 wins!"); - self.board_spaces.forEach(function(box) { - $("." + box).css('background-color', 'blue'); - }); - self.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; - self.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + self.resetBoard(); } }); // player_1_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] // player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] - }, }; From b50af3143d48f8a2242828d5f8ad16229157575a Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 10:25:21 -0800 Subject: [PATCH 12/21] Deleting accidentally uploaded node modules --- node_modules/pryjs/.npmignore | 3 - node_modules/pryjs/.travis.yml | 14 - node_modules/pryjs/Gruntfile.coffee | 19 - node_modules/pryjs/LICENSE | 21 - node_modules/pryjs/assets/demo.png | Bin 91469 -> 0 bytes node_modules/pryjs/bin/deploy | 1 - node_modules/pryjs/changelog.md | 67 - node_modules/pryjs/code_of_conduct.md | 15 - node_modules/pryjs/examples/fizzbuzz.coffee | 18 - node_modules/pryjs/examples/fizzbuzz.js | 15 - node_modules/pryjs/features/help.feature | 23 - node_modules/pryjs/features/play.feature | 18 - .../step_definitions/myStepDefinitions.coffee | 42 - node_modules/pryjs/features/stop.feature | 10 - .../pryjs/features/support/after_hooks.coffee | 4 - .../pryjs/features/support/world.coffee | 56 - .../pryjs/features/underscore.feature | 10 - node_modules/pryjs/features/version.feature | 9 - node_modules/pryjs/features/whereami.feature | 19 - node_modules/pryjs/features/wtf.feature | 15 - node_modules/pryjs/features/xecute.feature | 62 - node_modules/pryjs/lib/.gitkeep | 0 node_modules/pryjs/lib/pry.js | 31 - node_modules/pryjs/lib/pry/app.js | 82 - node_modules/pryjs/lib/pry/command.js | 87 - node_modules/pryjs/lib/pry/commands/help.js | 76 - node_modules/pryjs/lib/pry/commands/index.js | 16 - node_modules/pryjs/lib/pry/commands/kill.js | 33 - node_modules/pryjs/lib/pry/commands/play.js | 40 - node_modules/pryjs/lib/pry/commands/stop.js | 31 - .../pryjs/lib/pry/commands/version.js | 32 - .../pryjs/lib/pry/commands/whereami.js | 43 - node_modules/pryjs/lib/pry/commands/wtf.js | 36 - node_modules/pryjs/lib/pry/commands/xecute.js | 66 - node_modules/pryjs/lib/pry/compiler.js | 50 - node_modules/pryjs/lib/pry/file.js | 51 - .../pryjs/lib/pry/output/local_output.js | 31 - node_modules/pryjs/lib/pry/range.js | 35 - node_modules/pryjs/lib/pry/sync_highlight.js | 92 - node_modules/pryjs/lib/pry/sync_prompt.js | 159 - node_modules/pryjs/node_modules/.bin/cake | 1 - node_modules/pryjs/node_modules/.bin/coffee | 1 - .../pryjs/node_modules/chalk/index.js | 95 - .../chalk/node_modules/.bin/has-ansi | 1 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../chalk/node_modules/.bin/supports-color | 1 - .../chalk/node_modules/ansi-styles/index.js | 40 - .../node_modules/ansi-styles/package.json | 74 - .../chalk/node_modules/ansi-styles/readme.md | 70 - .../escape-string-regexp/index.js | 11 - .../node_modules/escape-string-regexp/license | 21 - .../escape-string-regexp/package.json | 71 - .../escape-string-regexp/readme.md | 27 - .../chalk/node_modules/has-ansi/cli.js | 53 - .../chalk/node_modules/has-ansi/index.js | 4 - .../has-ansi/node_modules/ansi-regex/index.js | 4 - .../node_modules/ansi-regex/package.json | 79 - .../node_modules/ansi-regex/readme.md | 33 - .../chalk/node_modules/has-ansi/package.json | 85 - .../chalk/node_modules/has-ansi/readme.md | 45 - .../chalk/node_modules/strip-ansi/cli.js | 39 - .../chalk/node_modules/strip-ansi/index.js | 6 - .../node_modules/ansi-regex/index.js | 4 - .../node_modules/ansi-regex/package.json | 79 - .../node_modules/ansi-regex/readme.md | 33 - .../node_modules/strip-ansi/package.json | 84 - .../chalk/node_modules/strip-ansi/readme.md | 43 - .../chalk/node_modules/supports-color/cli.js | 28 - .../node_modules/supports-color/index.js | 32 - .../node_modules/supports-color/package.json | 78 - .../node_modules/supports-color/readme.md | 44 - .../pryjs/node_modules/chalk/package.json | 82 - .../pryjs/node_modules/chalk/readme.md | 175 - .../node_modules/coffee-script/.npmignore | 11 - .../pryjs/node_modules/coffee-script/CNAME | 1 - .../coffee-script/CONTRIBUTING.md | 9 - .../pryjs/node_modules/coffee-script/LICENSE | 22 - .../node_modules/coffee-script/README.md | 62 - .../pryjs/node_modules/coffee-script/bin/cake | 7 - .../node_modules/coffee-script/bin/coffee | 7 - .../node_modules/coffee-script/bower.json | 27 - .../lib/coffee-script/browser.js | 135 - .../coffee-script/lib/coffee-script/cake.js | 114 - .../lib/coffee-script/coffee-script.js | 376 -- .../lib/coffee-script/command.js | 610 -- .../lib/coffee-script/grammar.js | 665 --- .../lib/coffee-script/helpers.js | 248 - .../coffee-script/lib/coffee-script/index.js | 11 - .../coffee-script/lib/coffee-script/lexer.js | 1011 ---- .../coffee-script/lib/coffee-script/nodes.js | 3307 ----------- .../lib/coffee-script/optparse.js | 139 - .../coffee-script/lib/coffee-script/parser.js | 735 --- .../lib/coffee-script/register.js | 66 - .../coffee-script/lib/coffee-script/repl.js | 202 - .../lib/coffee-script/rewriter.js | 504 -- .../coffee-script/lib/coffee-script/scope.js | 155 - .../lib/coffee-script/sourcemap.js | 161 - .../node_modules/coffee-script/package.json | 71 - .../node_modules/coffee-script/register.js | 1 - .../pryjs/node_modules/coffee-script/repl.js | 1 - .../pryjs/node_modules/deasync/.npmignore | 6 - .../pryjs/node_modules/deasync/README.md | 102 - .../bin/darwin-x64-node-0.10/deasync.node | Bin 10344 -> 0 bytes .../bin/darwin-x64-node-0.11/deasync.node | Bin 10808 -> 0 bytes .../bin/darwin-x64-node-0.12/deasync.node | Bin 10848 -> 0 bytes .../bin/darwin-x64-node-4/deasync.node | Bin 11920 -> 0 bytes .../bin/linux-ia32-node-0.10/deasync.node | Bin 7672 -> 0 bytes .../bin/linux-ia32-node-0.11/deasync.node | Bin 7914 -> 0 bytes .../bin/linux-ia32-node-0.12/deasync.node | Bin 7914 -> 0 bytes .../bin/linux-x64-node-0.10/deasync.node | Bin 9580 -> 0 bytes .../bin/linux-x64-node-0.11/deasync.node | Bin 13407 -> 0 bytes .../bin/linux-x64-node-0.12/deasync.node | Bin 13384 -> 0 bytes .../deasync/bin/linux-x64-node-4/deasync.node | Bin 13989 -> 0 bytes .../deasync/bin/linux-x64-node-5/deasync.node | Bin 13989 -> 0 bytes .../bin/win32-ia32-node-0.10/deasync.node | Bin 33792 -> 0 bytes .../bin/win32-ia32-node-0.11/deasync.node | Bin 50176 -> 0 bytes .../bin/win32-ia32-node-0.12/deasync.node | Bin 50176 -> 0 bytes .../bin/win32-ia32-node-4/deasync.node | Bin 106496 -> 0 bytes .../bin/win32-ia32-node-5/deasync.node | Bin 105984 -> 0 bytes .../bin/win32-x64-node-0.10/deasync.node | Bin 82432 -> 0 bytes .../bin/win32-x64-node-0.11/deasync.node | Bin 107008 -> 0 bytes .../bin/win32-x64-node-0.12/deasync.node | Bin 107008 -> 0 bytes .../deasync/bin/win32-x64-node-4/deasync.node | Bin 120832 -> 0 bytes .../deasync/bin/win32-x64-node-5/deasync.node | Bin 120320 -> 0 bytes .../pryjs/node_modules/deasync/binding.gyp | 11 - .../pryjs/node_modules/deasync/build.js | 116 - .../pryjs/node_modules/deasync/index.js | 66 - .../deasync/node_modules/bindings/README.md | 97 - .../deasync/node_modules/bindings/bindings.js | 166 - .../node_modules/bindings/package.json | 56 - .../deasync/node_modules/nan/.dntrc | 30 - .../deasync/node_modules/nan/CHANGELOG.md | 391 -- .../deasync/node_modules/nan/LICENSE.md | 13 - .../deasync/node_modules/nan/README.md | 384 -- .../deasync/node_modules/nan/appveyor.yml | 38 - .../deasync/node_modules/nan/doc/.build.sh | 39 - .../node_modules/nan/doc/asyncworker.md | 97 - .../deasync/node_modules/nan/doc/buffers.md | 54 - .../deasync/node_modules/nan/doc/callback.md | 52 - .../node_modules/nan/doc/converters.md | 41 - .../deasync/node_modules/nan/doc/errors.md | 226 - .../node_modules/nan/doc/maybe_types.md | 512 -- .../deasync/node_modules/nan/doc/methods.md | 656 --- .../deasync/node_modules/nan/doc/new.md | 147 - .../deasync/node_modules/nan/doc/node_misc.md | 63 - .../node_modules/nan/doc/object_wrappers.md | 263 - .../node_modules/nan/doc/persistent.md | 295 - .../deasync/node_modules/nan/doc/scopes.md | 73 - .../deasync/node_modules/nan/doc/script.md | 38 - .../node_modules/nan/doc/string_bytes.md | 62 - .../node_modules/nan/doc/v8_internals.md | 199 - .../deasync/node_modules/nan/doc/v8_misc.md | 85 - .../deasync/node_modules/nan/include_dirs.js | 1 - .../deasync/node_modules/nan/nan.h | 2245 ------- .../deasync/node_modules/nan/nan_callbacks.h | 88 - .../node_modules/nan/nan_callbacks_12_inl.h | 512 -- .../nan/nan_callbacks_pre_12_inl.h | 506 -- .../deasync/node_modules/nan/nan_converters.h | 64 - .../node_modules/nan/nan_converters_43_inl.h | 42 - .../nan/nan_converters_pre_43_inl.h | 42 - .../nan/nan_implementation_12_inl.h | 404 -- .../nan/nan_implementation_pre_12_inl.h | 264 - .../node_modules/nan/nan_maybe_43_inl.h | 231 - .../node_modules/nan/nan_maybe_pre_43_inl.h | 303 - .../deasync/node_modules/nan/nan_new.h | 340 -- .../node_modules/nan/nan_object_wrap.h | 155 - .../node_modules/nan/nan_persistent_12_inl.h | 129 - .../nan/nan_persistent_pre_12_inl.h | 242 - .../node_modules/nan/nan_string_bytes.h | 305 - .../nan/nan_typedarray_contents.h | 87 - .../deasync/node_modules/nan/nan_weak.h | 422 -- .../deasync/node_modules/nan/package.json | 91 - .../deasync/node_modules/nan/tools/1to2.js | 412 -- .../deasync/node_modules/nan/tools/README.md | 14 - .../node_modules/nan/tools/package.json | 19 - .../pryjs/node_modules/deasync/package.json | 65 - .../pryjs/node_modules/deasync/quick-test.js | 7 - .../pryjs/node_modules/deasync/src/deasync.cc | 17 - .../pryjs/node_modules/deasync/test.js | 31 - .../node_modules/pygmentize-bundled/.jshintrc | 59 - .../pygmentize-bundled/.npmignore | 8 - .../node_modules/pygmentize-bundled/LICENSE | 39 - .../node_modules/pygmentize-bundled/README.md | 96 - .../node_modules/pygmentize-bundled/index.js | 144 - .../node_modules/bl/.jshintrc | 59 - .../node_modules/bl/.npmignore | 1 - .../node_modules/bl/.travis.yml | 11 - .../node_modules/bl/LICENSE | 39 - .../node_modules/bl/README.md | 165 - .../pygmentize-bundled/node_modules/bl/bl.js | 157 - .../node_modules/readable-stream/.npmignore | 5 - .../bl/node_modules/readable-stream/LICENSE | 18 - .../bl/node_modules/readable-stream/README.md | 15 - .../bl/node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 ---- .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 -- .../node_modules/core-util-is/LICENSE | 19 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 -- .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 60 - .../node_modules/core-util-is/test.js | 68 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 50 - .../node_modules/inherits/test.js | 25 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/build/build.js | 209 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 53 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 54 - .../node_modules/readable-stream/package.json | 70 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 8 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/bl/package.json | 56 - .../node_modules/bl/test.js | 356 -- .../node_modules/through2/.jshintrc | 59 - .../node_modules/through2/.npmignore | 1 - .../node_modules/through2/.travis.yml | 12 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 107 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../node_modules/readable-stream/float.patch | 923 --- .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 951 --- .../readable-stream/lib/_stream_transform.js | 209 - .../readable-stream/lib/_stream_writable.js | 477 -- .../node_modules/core-util-is/LICENSE | 19 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 -- .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 60 - .../node_modules/core-util-is/test.js | 68 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 50 - .../node_modules/inherits/test.js | 25 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/build/build.js | 209 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 53 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 54 - .../node_modules/readable-stream/package.json | 70 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 7 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../through2/node_modules/xtend/.npmignore | 1 - .../through2/node_modules/xtend/LICENCE | 19 - .../through2/node_modules/xtend/Makefile | 4 - .../through2/node_modules/xtend/README.md | 27 - .../through2/node_modules/xtend/has-keys.js | 7 - .../through2/node_modules/xtend/index.js | 25 - .../through2/node_modules/xtend/mutable.js | 25 - .../xtend/node_modules/object-keys/.npmignore | 1 - .../node_modules/object-keys/.travis.yml | 5 - .../xtend/node_modules/object-keys/README.md | 39 - .../xtend/node_modules/object-keys/foreach.js | 40 - .../xtend/node_modules/object-keys/index.js | 2 - .../node_modules/object-keys/isArguments.js | 16 - .../node_modules/object-keys/package.json | 74 - .../xtend/node_modules/object-keys/shim.js | 62 - .../node_modules/object-keys/test/foreach.js | 156 - .../node_modules/object-keys/test/index.js | 6 - .../object-keys/test/isArguments.js | 10 - .../node_modules/object-keys/test/shim.js | 134 - .../through2/node_modules/xtend/package.json | 89 - .../through2/node_modules/xtend/test.js | 63 - .../node_modules/through2/package.json | 63 - .../node_modules/through2/test.js | 314 - .../node_modules/through2/through2.js | 42 - .../pygmentize-bundled/package.json | 62 - .../test-fixtures/active_model.html | 222 - .../test-fixtures/active_model.rb | 221 - .../node_modules/pygmentize-bundled/test.js | 104 - .../vendor/pygments/AUTHORS | 172 - .../vendor/pygments/CHANGES | 941 --- .../vendor/pygments/LICENSE | 25 - .../vendor/pygments/MANIFEST.in | 6 - .../vendor/pygments/Makefile | 56 - .../pygmentize-bundled/vendor/pygments/TODO | 15 - .../vendor/pygments/build-2.7/pygmentize | 7 - .../pygments/build-2.7/pygments/__init__.py | 91 - .../pygments/build-2.7/pygments/cmdline.py | 454 -- .../pygments/build-2.7/pygments/console.py | 74 - .../pygments/build-2.7/pygments/filter.py | 74 - .../build-2.7/pygments/filters/__init__.py | 358 -- .../pygments/build-2.7/pygments/formatter.py | 95 - .../build-2.7/pygments/formatters/__init__.py | 70 - .../build-2.7/pygments/formatters/_mapping.py | 103 - .../build-2.7/pygments/formatters/bbcode.py | 109 - .../build-2.7/pygments/formatters/html.py | 839 --- .../build-2.7/pygments/formatters/img.py | 560 -- .../build-2.7/pygments/formatters/latex.py | 470 -- .../build-2.7/pygments/formatters/other.py | 162 - .../build-2.7/pygments/formatters/rtf.py | 150 - .../build-2.7/pygments/formatters/svg.py | 154 - .../build-2.7/pygments/formatters/terminal.py | 152 - .../pygments/formatters/terminal256.py | 222 - .../pygments/build-2.7/pygments/lexer.py | 785 --- .../build-2.7/pygments/lexers/__init__.py | 263 - .../build-2.7/pygments/lexers/_asybuiltins.py | 1645 ------ .../build-2.7/pygments/lexers/_clbuiltins.py | 232 - .../pygments/lexers/_cocoabuiltins.py | 73 - .../pygments/lexers/_lassobuiltins.py | 5182 ---------------- .../build-2.7/pygments/lexers/_luabuiltins.py | 255 - .../build-2.7/pygments/lexers/_mapping.py | 400 -- .../pygments/lexers/_openedgebuiltins.py | 562 -- .../build-2.7/pygments/lexers/_phpbuiltins.py | 4759 --------------- .../pygments/lexers/_postgres_builtins.py | 233 - .../pygments/lexers/_robotframeworklexer.py | 558 -- .../pygments/lexers/_scilab_builtins.py | 40 - .../pygments/lexers/_sourcemodbuiltins.py | 1077 ---- .../pygments/lexers/_stan_builtins.py | 454 -- .../build-2.7/pygments/lexers/_vimbuiltins.py | 13 - .../build-2.7/pygments/lexers/agile.py | 2552 -------- .../pygments/build-2.7/pygments/lexers/asm.py | 435 -- .../build-2.7/pygments/lexers/compiled.py | 5192 ----------------- .../build-2.7/pygments/lexers/dalvik.py | 125 - .../build-2.7/pygments/lexers/dotnet.py | 683 --- .../build-2.7/pygments/lexers/foxpro.py | 428 -- .../build-2.7/pygments/lexers/functional.py | 3671 ------------ .../build-2.7/pygments/lexers/graph.py | 81 - .../pygments/build-2.7/pygments/lexers/hdl.py | 355 -- .../build-2.7/pygments/lexers/inferno.py | 96 - .../pygments/build-2.7/pygments/lexers/jvm.py | 1527 ----- .../build-2.7/pygments/lexers/math.py | 2286 -------- .../build-2.7/pygments/lexers/other.py | 4492 -------------- .../build-2.7/pygments/lexers/parsers.py | 778 --- .../build-2.7/pygments/lexers/qbasic.py | 157 - .../pygments/build-2.7/pygments/lexers/rdf.py | 99 - .../build-2.7/pygments/lexers/shell.py | 427 -- .../build-2.7/pygments/lexers/special.py | 99 - .../pygments/build-2.7/pygments/lexers/sql.py | 592 -- .../build-2.7/pygments/lexers/templates.py | 2060 ------- .../build-2.7/pygments/lexers/text.py | 2055 ------- .../pygments/build-2.7/pygments/lexers/web.py | 4510 -------------- .../pygments/build-2.7/pygments/modeline.py | 40 - .../pygments/build-2.7/pygments/plugin.py | 74 - .../pygments/build-2.7/pygments/scanner.py | 104 - .../pygments/build-2.7/pygments/sphinxext.py | 153 - .../pygments/build-2.7/pygments/style.py | 118 - .../build-2.7/pygments/styles/__init__.py | 74 - .../build-2.7/pygments/styles/autumn.py | 65 - .../build-2.7/pygments/styles/borland.py | 51 - .../pygments/build-2.7/pygments/styles/bw.py | 49 - .../build-2.7/pygments/styles/colorful.py | 81 - .../build-2.7/pygments/styles/default.py | 73 - .../build-2.7/pygments/styles/emacs.py | 72 - .../build-2.7/pygments/styles/friendly.py | 72 - .../build-2.7/pygments/styles/fruity.py | 42 - .../build-2.7/pygments/styles/igor.py | 29 - .../build-2.7/pygments/styles/manni.py | 75 - .../build-2.7/pygments/styles/monokai.py | 106 - .../build-2.7/pygments/styles/murphy.py | 80 - .../build-2.7/pygments/styles/native.py | 65 - .../build-2.7/pygments/styles/paraiso_dark.py | 125 - .../pygments/styles/paraiso_light.py | 125 - .../build-2.7/pygments/styles/pastie.py | 75 - .../build-2.7/pygments/styles/perldoc.py | 69 - .../pygments/build-2.7/pygments/styles/rrt.py | 33 - .../build-2.7/pygments/styles/tango.py | 141 - .../build-2.7/pygments/styles/trac.py | 63 - .../pygments/build-2.7/pygments/styles/vim.py | 63 - .../pygments/build-2.7/pygments/styles/vs.py | 38 - .../build-2.7/pygments/styles/xcode.py | 51 - .../pygments/build-2.7/pygments/token.py | 198 - .../pygments/build-2.7/pygments/unistring.py | 141 - .../pygments/build-2.7/pygments/util.py | 291 - .../vendor/pygments/build-3.3/pygmentize | 7 - .../pygments/build-3.3/pygments/__init__.py | 91 - .../pygments/build-3.3/pygments/cmdline.py | 454 -- .../pygments/build-3.3/pygments/console.py | 74 - .../pygments/build-3.3/pygments/filter.py | 74 - .../build-3.3/pygments/filters/__init__.py | 358 -- .../pygments/build-3.3/pygments/formatter.py | 95 - .../build-3.3/pygments/formatters/__init__.py | 70 - .../build-3.3/pygments/formatters/_mapping.py | 103 - .../build-3.3/pygments/formatters/bbcode.py | 109 - .../build-3.3/pygments/formatters/html.py | 839 --- .../build-3.3/pygments/formatters/img.py | 560 -- .../build-3.3/pygments/formatters/latex.py | 470 -- .../build-3.3/pygments/formatters/other.py | 162 - .../build-3.3/pygments/formatters/rtf.py | 150 - .../build-3.3/pygments/formatters/svg.py | 154 - .../build-3.3/pygments/formatters/terminal.py | 152 - .../pygments/formatters/terminal256.py | 222 - .../pygments/build-3.3/pygments/lexer.py | 785 --- .../build-3.3/pygments/lexers/__init__.py | 263 - .../build-3.3/pygments/lexers/_asybuiltins.py | 1645 ------ .../build-3.3/pygments/lexers/_clbuiltins.py | 232 - .../pygments/lexers/_cocoabuiltins.py | 73 - .../pygments/lexers/_lassobuiltins.py | 5182 ---------------- .../build-3.3/pygments/lexers/_luabuiltins.py | 255 - .../build-3.3/pygments/lexers/_mapping.py | 400 -- .../pygments/lexers/_openedgebuiltins.py | 562 -- .../build-3.3/pygments/lexers/_phpbuiltins.py | 4759 --------------- .../pygments/lexers/_postgres_builtins.py | 233 - .../pygments/lexers/_robotframeworklexer.py | 558 -- .../pygments/lexers/_scilab_builtins.py | 40 - .../pygments/lexers/_sourcemodbuiltins.py | 1077 ---- .../pygments/lexers/_stan_builtins.py | 454 -- .../build-3.3/pygments/lexers/_vimbuiltins.py | 13 - .../build-3.3/pygments/lexers/agile.py | 2552 -------- .../pygments/build-3.3/pygments/lexers/asm.py | 435 -- .../build-3.3/pygments/lexers/compiled.py | 5192 ----------------- .../build-3.3/pygments/lexers/dalvik.py | 125 - .../build-3.3/pygments/lexers/dotnet.py | 683 --- .../build-3.3/pygments/lexers/foxpro.py | 428 -- .../build-3.3/pygments/lexers/functional.py | 3671 ------------ .../build-3.3/pygments/lexers/graph.py | 81 - .../pygments/build-3.3/pygments/lexers/hdl.py | 355 -- .../build-3.3/pygments/lexers/inferno.py | 96 - .../pygments/build-3.3/pygments/lexers/jvm.py | 1527 ----- .../build-3.3/pygments/lexers/math.py | 2286 -------- .../build-3.3/pygments/lexers/other.py | 4492 -------------- .../build-3.3/pygments/lexers/parsers.py | 778 --- .../build-3.3/pygments/lexers/qbasic.py | 157 - .../pygments/build-3.3/pygments/lexers/rdf.py | 99 - .../build-3.3/pygments/lexers/shell.py | 427 -- .../build-3.3/pygments/lexers/special.py | 99 - .../pygments/build-3.3/pygments/lexers/sql.py | 592 -- .../build-3.3/pygments/lexers/templates.py | 2060 ------- .../build-3.3/pygments/lexers/text.py | 2055 ------- .../pygments/build-3.3/pygments/lexers/web.py | 4510 -------------- .../pygments/build-3.3/pygments/modeline.py | 40 - .../pygments/build-3.3/pygments/plugin.py | 74 - .../pygments/build-3.3/pygments/scanner.py | 104 - .../pygments/build-3.3/pygments/sphinxext.py | 153 - .../pygments/build-3.3/pygments/style.py | 118 - .../build-3.3/pygments/styles/__init__.py | 74 - .../build-3.3/pygments/styles/autumn.py | 65 - .../build-3.3/pygments/styles/borland.py | 51 - .../pygments/build-3.3/pygments/styles/bw.py | 49 - .../build-3.3/pygments/styles/colorful.py | 81 - .../build-3.3/pygments/styles/default.py | 73 - .../build-3.3/pygments/styles/emacs.py | 72 - .../build-3.3/pygments/styles/friendly.py | 72 - .../build-3.3/pygments/styles/fruity.py | 42 - .../build-3.3/pygments/styles/igor.py | 29 - .../build-3.3/pygments/styles/manni.py | 75 - .../build-3.3/pygments/styles/monokai.py | 106 - .../build-3.3/pygments/styles/murphy.py | 80 - .../build-3.3/pygments/styles/native.py | 65 - .../build-3.3/pygments/styles/paraiso_dark.py | 125 - .../pygments/styles/paraiso_light.py | 125 - .../build-3.3/pygments/styles/pastie.py | 75 - .../build-3.3/pygments/styles/perldoc.py | 69 - .../pygments/build-3.3/pygments/styles/rrt.py | 33 - .../build-3.3/pygments/styles/tango.py | 141 - .../build-3.3/pygments/styles/trac.py | 63 - .../pygments/build-3.3/pygments/styles/vim.py | 63 - .../pygments/build-3.3/pygments/styles/vs.py | 38 - .../build-3.3/pygments/styles/xcode.py | 51 - .../pygments/build-3.3/pygments/token.py | 198 - .../pygments/build-3.3/pygments/unistring.py | 141 - .../pygments/build-3.3/pygments/util.py | 291 - .../vendor/pygments/doc/Makefile | 153 - .../vendor/pygments/doc/_static/favicon.ico | Bin 16958 -> 0 bytes .../vendor/pygments/doc/_static/logo_new.png | Bin 40944 -> 0 bytes .../vendor/pygments/doc/_static/logo_only.png | Bin 16424 -> 0 bytes .../pygments/doc/_templates/docssidebar.html | 3 - .../pygments/doc/_templates/indexsidebar.html | 25 - .../doc/_themes/pygments14/layout.html | 98 - .../doc/_themes/pygments14/static/bodybg.png | Bin 51903 -> 0 bytes .../doc/_themes/pygments14/static/docbg.png | Bin 61296 -> 0 bytes .../_themes/pygments14/static/listitem.png | Bin 207 -> 0 bytes .../doc/_themes/pygments14/static/logo.png | Bin 26933 -> 0 bytes .../doc/_themes/pygments14/static/pocoo.png | Bin 2154 -> 0 bytes .../pygments14/static/pygments14.css_t | 401 -- .../doc/_themes/pygments14/theme.conf | 15 - .../vendor/pygments/doc/conf.py | 249 - .../vendor/pygments/doc/docs/api.rst | 316 - .../vendor/pygments/doc/docs/authors.rst | 4 - .../vendor/pygments/doc/docs/changelog.rst | 1 - .../vendor/pygments/doc/docs/cmdline.rst | 145 - .../pygments/doc/docs/filterdevelopment.rst | 70 - .../vendor/pygments/doc/docs/filters.rst | 41 - .../doc/docs/formatterdevelopment.rst | 169 - .../vendor/pygments/doc/docs/formatters.rst | 48 - .../vendor/pygments/doc/docs/index.rst | 66 - .../vendor/pygments/doc/docs/integrate.rst | 44 - .../vendor/pygments/doc/docs/java.rst | 70 - .../pygments/doc/docs/lexerdevelopment.rst | 602 -- .../vendor/pygments/doc/docs/lexers.rst | 69 - .../vendor/pygments/doc/docs/moinmoin.rst | 39 - .../vendor/pygments/doc/docs/plugins.rst | 93 - .../vendor/pygments/doc/docs/quickstart.rst | 205 - .../vendor/pygments/doc/docs/rstdirective.rst | 22 - .../vendor/pygments/doc/docs/styles.rst | 143 - .../vendor/pygments/doc/docs/tokens.rst | 352 -- .../vendor/pygments/doc/docs/unicode.rst | 50 - .../vendor/pygments/doc/download.rst | 41 - .../vendor/pygments/doc/faq.rst | 143 - .../vendor/pygments/doc/index.rst | 53 - .../vendor/pygments/doc/languages.rst | 151 - .../vendor/pygments/doc/make.bat | 190 - .../vendor/pygments/doc/pygmentize.1 | 94 - .../vendor/pygments/external/autopygmentize | 81 - .../external/lasso-builtins-generator-9.lasso | 144 - .../pygments/external/markdown-processor.py | 67 - .../vendor/pygments/external/moin-parser.py | 112 - .../pygments/external/pygments.bashcomp | 38 - .../vendor/pygments/external/rst-directive.py | 82 - .../vendor/pygments/ez_setup.py | 382 -- .../vendor/pygments/pygmentize | 7 - .../vendor/pygments/pygments/__init__.py | 91 - .../vendor/pygments/pygments/cmdline.py | 454 -- .../vendor/pygments/pygments/console.py | 74 - .../vendor/pygments/pygments/filter.py | 74 - .../pygments/pygments/filters/__init__.py | 358 -- .../vendor/pygments/pygments/formatter.py | 95 - .../pygments/pygments/formatters/__init__.py | 70 - .../pygments/pygments/formatters/_mapping.py | 103 - .../pygments/pygments/formatters/bbcode.py | 109 - .../pygments/pygments/formatters/html.py | 839 --- .../pygments/pygments/formatters/img.py | 560 -- .../pygments/pygments/formatters/latex.py | 470 -- .../pygments/pygments/formatters/other.py | 162 - .../pygments/pygments/formatters/rtf.py | 150 - .../pygments/pygments/formatters/svg.py | 154 - .../pygments/pygments/formatters/terminal.py | 152 - .../pygments/formatters/terminal256.py | 222 - .../vendor/pygments/pygments/lexer.py | 785 --- .../pygments/pygments/lexers/__init__.py | 263 - .../pygments/pygments/lexers/_asybuiltins.py | 1645 ------ .../pygments/pygments/lexers/_clbuiltins.py | 232 - .../pygments/lexers/_cocoabuiltins.py | 73 - .../pygments/lexers/_lassobuiltins.py | 5182 ---------------- .../pygments/pygments/lexers/_luabuiltins.py | 255 - .../pygments/pygments/lexers/_mapping.py | 400 -- .../pygments/lexers/_openedgebuiltins.py | 562 -- .../pygments/pygments/lexers/_phpbuiltins.py | 4759 --------------- .../pygments/lexers/_postgres_builtins.py | 233 - .../pygments/lexers/_robotframeworklexer.py | 558 -- .../pygments/lexers/_scilab_builtins.py | 40 - .../pygments/lexers/_sourcemodbuiltins.py | 1077 ---- .../pygments/lexers/_stan_builtins.py | 454 -- .../pygments/pygments/lexers/_vimbuiltins.py | 13 - .../vendor/pygments/pygments/lexers/agile.py | 2552 -------- .../vendor/pygments/pygments/lexers/asm.py | 435 -- .../pygments/pygments/lexers/compiled.py | 5192 ----------------- .../vendor/pygments/pygments/lexers/dalvik.py | 125 - .../vendor/pygments/pygments/lexers/dotnet.py | 683 --- .../vendor/pygments/pygments/lexers/foxpro.py | 428 -- .../pygments/pygments/lexers/functional.py | 3671 ------------ .../vendor/pygments/pygments/lexers/graph.py | 81 - .../vendor/pygments/pygments/lexers/hdl.py | 355 -- .../pygments/pygments/lexers/inferno.py | 96 - .../vendor/pygments/pygments/lexers/jvm.py | 1527 ----- .../vendor/pygments/pygments/lexers/math.py | 2286 -------- .../vendor/pygments/pygments/lexers/other.py | 4492 -------------- .../pygments/pygments/lexers/parsers.py | 778 --- .../vendor/pygments/pygments/lexers/qbasic.py | 157 - .../vendor/pygments/pygments/lexers/rdf.py | 99 - .../vendor/pygments/pygments/lexers/shell.py | 427 -- .../pygments/pygments/lexers/special.py | 99 - .../vendor/pygments/pygments/lexers/sql.py | 592 -- .../pygments/pygments/lexers/templates.py | 2060 ------- .../vendor/pygments/pygments/lexers/text.py | 2055 ------- .../vendor/pygments/pygments/lexers/web.py | 4510 -------------- .../vendor/pygments/pygments/modeline.py | 40 - .../vendor/pygments/pygments/plugin.py | 74 - .../vendor/pygments/pygments/scanner.py | 104 - .../vendor/pygments/pygments/sphinxext.py | 153 - .../vendor/pygments/pygments/style.py | 118 - .../pygments/pygments/styles/__init__.py | 74 - .../vendor/pygments/pygments/styles/autumn.py | 65 - .../pygments/pygments/styles/borland.py | 51 - .../vendor/pygments/pygments/styles/bw.py | 49 - .../pygments/pygments/styles/colorful.py | 81 - .../pygments/pygments/styles/default.py | 73 - .../vendor/pygments/pygments/styles/emacs.py | 72 - .../pygments/pygments/styles/friendly.py | 72 - .../vendor/pygments/pygments/styles/fruity.py | 42 - .../vendor/pygments/pygments/styles/igor.py | 29 - .../vendor/pygments/pygments/styles/manni.py | 75 - .../pygments/pygments/styles/monokai.py | 106 - .../vendor/pygments/pygments/styles/murphy.py | 80 - .../vendor/pygments/pygments/styles/native.py | 65 - .../pygments/pygments/styles/paraiso_dark.py | 125 - .../pygments/pygments/styles/paraiso_light.py | 125 - .../vendor/pygments/pygments/styles/pastie.py | 75 - .../pygments/pygments/styles/perldoc.py | 69 - .../vendor/pygments/pygments/styles/rrt.py | 33 - .../vendor/pygments/pygments/styles/tango.py | 141 - .../vendor/pygments/pygments/styles/trac.py | 63 - .../vendor/pygments/pygments/styles/vim.py | 63 - .../vendor/pygments/pygments/styles/vs.py | 38 - .../vendor/pygments/pygments/styles/xcode.py | 51 - .../vendor/pygments/pygments/token.py | 198 - .../vendor/pygments/pygments/unistring.py | 141 - .../vendor/pygments/pygments/util.py | 291 - .../vendor/pygments/scripts/check_sources.py | 226 - .../scripts/detect_missing_analyse_text.py | 33 - .../vendor/pygments/scripts/epydoc.css | 280 - .../vendor/pygments/scripts/find_codetags.py | 213 - .../vendor/pygments/scripts/find_error.py | 173 - .../vendor/pygments/scripts/get_vimkw.py | 43 - .../vendor/pygments/scripts/pylintrc | 301 - .../vendor/pygments/scripts/vim2pygments.py | 935 --- .../vendor/pygments/setup.cfg | 7 - .../vendor/pygments/setup.py | 90 - .../pryjs/node_modules/underscore/LICENSE | 23 - .../pryjs/node_modules/underscore/README.md | 22 - .../node_modules/underscore/package.json | 70 - .../node_modules/underscore/underscore-min.js | 6 - .../underscore/underscore-min.map | 1 - .../node_modules/underscore/underscore.js | 1548 ----- node_modules/pryjs/package.json | 64 - node_modules/pryjs/readme.md | 40 - node_modules/pryjs/src/pry.coffee | 18 - node_modules/pryjs/src/pry/app.coffee | 41 - node_modules/pryjs/src/pry/command.coffee | 61 - .../pryjs/src/pry/commands/help.coffee | 34 - .../pryjs/src/pry/commands/index.coffee | 7 - .../pryjs/src/pry/commands/kill.coffee | 14 - .../pryjs/src/pry/commands/play.coffee | 20 - .../pryjs/src/pry/commands/stop.coffee | 12 - .../pryjs/src/pry/commands/version.coffee | 13 - .../pryjs/src/pry/commands/whereami.coffee | 25 - .../pryjs/src/pry/commands/wtf.coffee | 16 - .../pryjs/src/pry/commands/xecute.coffee | 38 - node_modules/pryjs/src/pry/compiler.coffee | 31 - node_modules/pryjs/src/pry/file.coffee | 25 - .../pryjs/src/pry/output/local_output.coffee | 16 - node_modules/pryjs/src/pry/range.coffee | 18 - .../pryjs/src/pry/sync_highlight.coffee | 55 - node_modules/pryjs/src/pry/sync_prompt.coffee | 96 - node_modules/pryjs/tests/app_spec.coffee | 69 - node_modules/pryjs/tests/command_spec.coffee | 107 - .../pryjs/tests/commands/help_spec.coffee | 25 - .../pryjs/tests/commands/whereami_spec.coffee | 45 - node_modules/pryjs/tests/compiler_spec.coffee | 46 - node_modules/pryjs/tests/file_spec.coffee | 46 - node_modules/pryjs/tests/range_spec.coffee | 49 - .../pryjs/tests/sync_highlight_spec.coffee | 23 - tasks.txt | 2 - 661 files changed, 214104 deletions(-) delete mode 100644 node_modules/pryjs/.npmignore delete mode 100644 node_modules/pryjs/.travis.yml delete mode 100644 node_modules/pryjs/Gruntfile.coffee delete mode 100644 node_modules/pryjs/LICENSE delete mode 100644 node_modules/pryjs/assets/demo.png delete mode 100755 node_modules/pryjs/bin/deploy delete mode 100644 node_modules/pryjs/changelog.md delete mode 100644 node_modules/pryjs/code_of_conduct.md delete mode 100644 node_modules/pryjs/examples/fizzbuzz.coffee delete mode 100644 node_modules/pryjs/examples/fizzbuzz.js delete mode 100644 node_modules/pryjs/features/help.feature delete mode 100644 node_modules/pryjs/features/play.feature delete mode 100644 node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee delete mode 100644 node_modules/pryjs/features/stop.feature delete mode 100644 node_modules/pryjs/features/support/after_hooks.coffee delete mode 100644 node_modules/pryjs/features/support/world.coffee delete mode 100644 node_modules/pryjs/features/underscore.feature delete mode 100644 node_modules/pryjs/features/version.feature delete mode 100644 node_modules/pryjs/features/whereami.feature delete mode 100644 node_modules/pryjs/features/wtf.feature delete mode 100644 node_modules/pryjs/features/xecute.feature delete mode 100644 node_modules/pryjs/lib/.gitkeep delete mode 100644 node_modules/pryjs/lib/pry.js delete mode 100644 node_modules/pryjs/lib/pry/app.js delete mode 100644 node_modules/pryjs/lib/pry/command.js delete mode 100644 node_modules/pryjs/lib/pry/commands/help.js delete mode 100644 node_modules/pryjs/lib/pry/commands/index.js delete mode 100644 node_modules/pryjs/lib/pry/commands/kill.js delete mode 100644 node_modules/pryjs/lib/pry/commands/play.js delete mode 100644 node_modules/pryjs/lib/pry/commands/stop.js delete mode 100644 node_modules/pryjs/lib/pry/commands/version.js delete mode 100644 node_modules/pryjs/lib/pry/commands/whereami.js delete mode 100644 node_modules/pryjs/lib/pry/commands/wtf.js delete mode 100644 node_modules/pryjs/lib/pry/commands/xecute.js delete mode 100644 node_modules/pryjs/lib/pry/compiler.js delete mode 100644 node_modules/pryjs/lib/pry/file.js delete mode 100644 node_modules/pryjs/lib/pry/output/local_output.js delete mode 100644 node_modules/pryjs/lib/pry/range.js delete mode 100644 node_modules/pryjs/lib/pry/sync_highlight.js delete mode 100644 node_modules/pryjs/lib/pry/sync_prompt.js delete mode 120000 node_modules/pryjs/node_modules/.bin/cake delete mode 120000 node_modules/pryjs/node_modules/.bin/coffee delete mode 100644 node_modules/pryjs/node_modules/chalk/index.js delete mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi delete mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 120000 node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md delete mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md delete mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100755 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md delete mode 100644 node_modules/pryjs/node_modules/chalk/package.json delete mode 100644 node_modules/pryjs/node_modules/chalk/readme.md delete mode 100644 node_modules/pryjs/node_modules/coffee-script/.npmignore delete mode 100644 node_modules/pryjs/node_modules/coffee-script/CNAME delete mode 100644 node_modules/pryjs/node_modules/coffee-script/CONTRIBUTING.md delete mode 100644 node_modules/pryjs/node_modules/coffee-script/LICENSE delete mode 100644 node_modules/pryjs/node_modules/coffee-script/README.md delete mode 100755 node_modules/pryjs/node_modules/coffee-script/bin/cake delete mode 100755 node_modules/pryjs/node_modules/coffee-script/bin/coffee delete mode 100644 node_modules/pryjs/node_modules/coffee-script/bower.json delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/browser.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/cake.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/coffee-script.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/command.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/grammar.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/helpers.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/index.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/lexer.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/nodes.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/optparse.js delete mode 100755 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/parser.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/register.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/repl.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/rewriter.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/scope.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/lib/coffee-script/sourcemap.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/package.json delete mode 100644 node_modules/pryjs/node_modules/coffee-script/register.js delete mode 100644 node_modules/pryjs/node_modules/coffee-script/repl.js delete mode 100644 node_modules/pryjs/node_modules/deasync/.npmignore delete mode 100644 node_modules/pryjs/node_modules/deasync/README.md delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.10/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.11/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-0.12/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/darwin-x64-node-4/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.10/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.11/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-ia32-node-0.12/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.10/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.11/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-0.12/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-4/deasync.node delete mode 100755 node_modules/pryjs/node_modules/deasync/bin/linux-x64-node-5/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.10/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.11/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-0.12/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-4/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-ia32-node-5/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.10/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.11/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-0.12/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-4/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/bin/win32-x64-node-5/deasync.node delete mode 100644 node_modules/pryjs/node_modules/deasync/binding.gyp delete mode 100644 node_modules/pryjs/node_modules/deasync/build.js delete mode 100644 node_modules/pryjs/node_modules/deasync/index.js delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/README.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/bindings.js delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/bindings/package.json delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/.dntrc delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/CHANGELOG.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/LICENSE.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/README.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/appveyor.yml delete mode 100755 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/.build.sh delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/asyncworker.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/buffers.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/callback.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/converters.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/errors.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/maybe_types.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/methods.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/new.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/node_misc.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/object_wrappers.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/persistent.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/scopes.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/script.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/string_bytes.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/v8_internals.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/doc/v8_misc.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/include_dirs.js delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_callbacks_pre_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters_43_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_converters_pre_43_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_implementation_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_implementation_pre_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_maybe_43_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_maybe_pre_43_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_new.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_object_wrap.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_persistent_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_persistent_pre_12_inl.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_string_bytes.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_typedarray_contents.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/nan_weak.h delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/package.json delete mode 100755 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/1to2.js delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/README.md delete mode 100644 node_modules/pryjs/node_modules/deasync/node_modules/nan/tools/package.json delete mode 100644 node_modules/pryjs/node_modules/deasync/package.json delete mode 100644 node_modules/pryjs/node_modules/deasync/quick-test.js delete mode 100644 node_modules/pryjs/node_modules/deasync/src/deasync.cc delete mode 100644 node_modules/pryjs/node_modules/deasync/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/.jshintrc delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.jshintrc delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/.travis.yml delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/bl.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/readable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/transform.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/node_modules/readable-stream/writable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/bl/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.jshintrc delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/.travis.yml delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/float.patch delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/inherits/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/component.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/readable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/transform.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/readable-stream/writable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/LICENCE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/Makefile delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/has-keys.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/mutable.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/node_modules/xtend/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/node_modules/through2/through2.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/package.json delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test-fixtures/active_model.html delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test-fixtures/active_model.rb delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/test.js delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/AUTHORS delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/CHANGES delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/LICENSE delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/MANIFEST.in delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/Makefile delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/TODO delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygmentize delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/cmdline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/console.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/filter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/filters/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/__init__.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/bbcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/html.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/img.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/latex.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/rtf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/svg.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/terminal.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/formatters/terminal256.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_asybuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_clbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_cocoabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_lassobuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_luabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_openedgebuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_phpbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_postgres_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_robotframeworklexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_scilab_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_sourcemodbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_stan_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/_vimbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/agile.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/asm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/compiled.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/dalvik.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/dotnet.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/foxpro.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/functional.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/graph.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/hdl.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/inferno.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/jvm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/math.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/parsers.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/qbasic.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/rdf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/shell.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/special.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/sql.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/templates.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/text.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/lexers/web.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/modeline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/plugin.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/scanner.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/sphinxext.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/style.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/autumn.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/borland.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/bw.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/colorful.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/default.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/emacs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/friendly.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/fruity.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/igor.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/manni.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/monokai.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/murphy.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/native.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/paraiso_dark.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/paraiso_light.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/pastie.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/perldoc.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/rrt.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/tango.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/trac.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/vim.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/vs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/styles/xcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/token.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/unistring.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-2.7/pygments/util.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygmentize delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/cmdline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/console.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/filter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/filters/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/__init__.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/bbcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/html.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/img.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/latex.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/rtf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/svg.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/terminal.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/formatters/terminal256.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_asybuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_clbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_cocoabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_lassobuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_luabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_openedgebuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_phpbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_postgres_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_robotframeworklexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_scilab_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_sourcemodbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_stan_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/_vimbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/agile.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/asm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/compiled.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/dalvik.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/dotnet.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/foxpro.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/functional.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/graph.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/hdl.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/inferno.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/jvm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/math.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/parsers.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/qbasic.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/rdf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/shell.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/special.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/sql.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/templates.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/text.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/lexers/web.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/modeline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/plugin.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/scanner.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/sphinxext.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/style.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/autumn.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/borland.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/bw.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/colorful.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/default.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/emacs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/friendly.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/fruity.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/igor.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/manni.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/monokai.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/murphy.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/native.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/paraiso_dark.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/paraiso_light.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/pastie.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/perldoc.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/rrt.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/tango.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/trac.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/vim.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/vs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/styles/xcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/token.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/unistring.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/build-3.3/pygments/util.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/Makefile delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/favicon.ico delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/logo_new.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_static/logo_only.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_templates/docssidebar.html delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_templates/indexsidebar.html delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/layout.html delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/docbg.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pocoo.png delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/unicode.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/autopygmentize delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/lasso-builtins-generator-9.lasso delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/markdown-processor.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/moin-parser.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/pygments.bashcomp delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/external/rst-directive.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/ez_setup.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygmentize delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/cmdline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/console.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/filter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/filters/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatter.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/__init__.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/bbcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/html.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/img.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/latex.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/rtf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/svg.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/terminal.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/formatters/terminal256.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_asybuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_clbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_cocoabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_lassobuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_luabuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_mapping.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_openedgebuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_phpbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_postgres_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_robotframeworklexer.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_scilab_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_sourcemodbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_stan_builtins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/_vimbuiltins.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/agile.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/asm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/compiled.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/dalvik.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/dotnet.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/foxpro.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/functional.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/graph.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/hdl.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/inferno.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/jvm.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/math.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/other.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/parsers.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/qbasic.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/rdf.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/shell.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/special.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/sql.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/templates.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/text.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/lexers/web.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/modeline.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/plugin.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/scanner.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/sphinxext.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/style.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/__init__.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/autumn.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/borland.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/bw.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/colorful.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/default.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/emacs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/friendly.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/fruity.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/igor.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/manni.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/monokai.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/murphy.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/native.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/paraiso_dark.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/paraiso_light.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/pastie.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/perldoc.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/rrt.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/tango.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/trac.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/vim.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/vs.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/styles/xcode.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/token.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/unistring.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/pygments/util.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/check_sources.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/detect_missing_analyse_text.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/epydoc.css delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_codetags.py delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py delete mode 100644 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg delete mode 100755 node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py delete mode 100644 node_modules/pryjs/node_modules/underscore/LICENSE delete mode 100644 node_modules/pryjs/node_modules/underscore/README.md delete mode 100644 node_modules/pryjs/node_modules/underscore/package.json delete mode 100644 node_modules/pryjs/node_modules/underscore/underscore-min.js delete mode 100644 node_modules/pryjs/node_modules/underscore/underscore-min.map delete mode 100644 node_modules/pryjs/node_modules/underscore/underscore.js delete mode 100644 node_modules/pryjs/package.json delete mode 100644 node_modules/pryjs/readme.md delete mode 100644 node_modules/pryjs/src/pry.coffee delete mode 100644 node_modules/pryjs/src/pry/app.coffee delete mode 100644 node_modules/pryjs/src/pry/command.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/help.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/index.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/kill.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/play.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/stop.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/version.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/whereami.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/wtf.coffee delete mode 100644 node_modules/pryjs/src/pry/commands/xecute.coffee delete mode 100644 node_modules/pryjs/src/pry/compiler.coffee delete mode 100644 node_modules/pryjs/src/pry/file.coffee delete mode 100644 node_modules/pryjs/src/pry/output/local_output.coffee delete mode 100644 node_modules/pryjs/src/pry/range.coffee delete mode 100644 node_modules/pryjs/src/pry/sync_highlight.coffee delete mode 100644 node_modules/pryjs/src/pry/sync_prompt.coffee delete mode 100644 node_modules/pryjs/tests/app_spec.coffee delete mode 100644 node_modules/pryjs/tests/command_spec.coffee delete mode 100644 node_modules/pryjs/tests/commands/help_spec.coffee delete mode 100644 node_modules/pryjs/tests/commands/whereami_spec.coffee delete mode 100644 node_modules/pryjs/tests/compiler_spec.coffee delete mode 100644 node_modules/pryjs/tests/file_spec.coffee delete mode 100644 node_modules/pryjs/tests/range_spec.coffee delete mode 100644 node_modules/pryjs/tests/sync_highlight_spec.coffee delete mode 100644 tasks.txt diff --git a/node_modules/pryjs/.npmignore b/node_modules/pryjs/.npmignore deleted file mode 100644 index f8bacc6..0000000 --- a/node_modules/pryjs/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/* -npm-debug.log -*.DS_Store diff --git a/node_modules/pryjs/.travis.yml b/node_modules/pryjs/.travis.yml deleted file mode 100644 index cb5cdd3..0000000 --- a/node_modules/pryjs/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js - -sudo: required - -services: - - docker - -node_js: - - 0.10.33 - - 4.1.1 - -cache: - directories: - - node_modules diff --git a/node_modules/pryjs/Gruntfile.coffee b/node_modules/pryjs/Gruntfile.coffee deleted file mode 100644 index 388e26c..0000000 --- a/node_modules/pryjs/Gruntfile.coffee +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = (grunt) -> - - grunt.initConfig - coffee: - compile: - expand: true - cwd: './src/' - src: ['**/*.coffee'] - dest: './lib/' - ext: '.js' - clean: - compiled: - src: ["lib/**/*"] - options: - "no-write": false - - grunt.loadNpmTasks 'grunt-contrib-coffee' - grunt.loadNpmTasks 'grunt-contrib-clean' - grunt.registerTask 'default', ['clean:compiled', 'coffee'] diff --git a/node_modules/pryjs/LICENSE b/node_modules/pryjs/LICENSE deleted file mode 100644 index c7a7a76..0000000 --- a/node_modules/pryjs/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Blaine Schmeisser - -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. diff --git a/node_modules/pryjs/assets/demo.png b/node_modules/pryjs/assets/demo.png deleted file mode 100644 index 39f21cb825f0a48a172ac55f08a8dea64bd273df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91469 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⪚3~?lN0&zPp3sn1Z_}12R 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

Q?~seDxF=*3mE9gL3_cRL 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

jl`4eq`>>z{nbJPMOU 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 diff --git a/node_modules/pryjs/bin/deploy b/node_modules/pryjs/bin/deploy deleted file mode 100755 index d69aee7..0000000 --- a/node_modules/pryjs/bin/deploy +++ /dev/null @@ -1 +0,0 @@ -grunt && npm publish diff --git a/node_modules/pryjs/changelog.md b/node_modules/pryjs/changelog.md deleted file mode 100644 index 581ee7b..0000000 --- a/node_modules/pryjs/changelog.md +++ /dev/null @@ -1,67 +0,0 @@ -# 0.1.3 - -## Fixed Bugs -* Pushed Bad Source to NPM - -# 0.1.2 - -## Fixed Bugs -* Don't redeclare variables when executing coffee-script. -* Upgrade deaasync for Node v4.1.1 - -# 0.1.0 - -## New Features -* New variable given to you with the results of the last statement. - -# 0.0.14 - -## Fixed Bugs - -* No longer executing input multiple times. -* Show errors as they happen, not just when asked. - -# 0.0.9 - -## New Features - -* Allow typing multiple lines of javascript in the prompt. -* Add typeahead/autocomplete when writing up commands. -* Add `ctrl+v` for multiline instead of guessing. - -# 0.0.8 - -## New Features - -* Add a new `kill` command to kill the entire process instead of just this prompt. -* Add a new `wtf` command to show you the last caught error. -* Allow you to type CoffeeScript in the prompt. -* Add a new `help` command to list all the available commands. -* Add new `play` command that can play lines via their absolute line numbers. -* Change the pry statement to a much prettier `eval(pry.it)`. - -## Fixed Bugs - -* When nothing is returned it gives you back the prompt. - -# 0.0.7 - -## New Features - -* Fix array slice bug when trying to view lines before 0. - -# 0.0.6 - -## New Features - -* Allow version to be retrieved from the prompt. -* Fix prompt not giving back control of i/o. -* Catch exceptions in the prompt and display them instead of erroring. - -# 0.0.5 - -## New Features - -* Keyboard shorts in prompt. -* History in the prompt. -* Colored output for functions and objects. diff --git a/node_modules/pryjs/code_of_conduct.md b/node_modules/pryjs/code_of_conduct.md deleted file mode 100644 index c2ebaab..0000000 --- a/node_modules/pryjs/code_of_conduct.md +++ /dev/null @@ -1,15 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. - -This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.1.0, available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/) diff --git a/node_modules/pryjs/examples/fizzbuzz.coffee b/node_modules/pryjs/examples/fizzbuzz.coffee deleted file mode 100644 index 9aaf05a..0000000 --- a/node_modules/pryjs/examples/fizzbuzz.coffee +++ /dev/null @@ -1,18 +0,0 @@ -pry = require('../src/pry') # require('pryjs') - -# http://rosettacode.org/wiki/FizzBuzz#CoffeeScript -class FizzBuzz - - run: -> - for i in [1..100] - output = '' - eval(pry.it) - output += "Fizz" if i % 3 is 0 - output += "Buzz" if i % 5 is 0 - console.log output || i - - bar: -> - 10 - -fizz = new FizzBuzz() -fizz.run() diff --git a/node_modules/pryjs/examples/fizzbuzz.js b/node_modules/pryjs/examples/fizzbuzz.js deleted file mode 100644 index 1ef0c8a..0000000 --- a/node_modules/pryjs/examples/fizzbuzz.js +++ /dev/null @@ -1,15 +0,0 @@ -pry = require('../lib/pry'); // require('pryjs') - -// http://rosettacode.org/wiki/FizzBuzz#JavaScript -function fizzBuzz() { - var i, output; - for (i = 1; i < 101; i++) { - output = ''; - eval(pry.it); - if (!(i % 3)) output += 'Fizz'; - if (!(i % 5)) output += 'Buzz'; - console.log(output || i); - } -}; - -fizzBuzz() diff --git a/node_modules/pryjs/features/help.feature b/node_modules/pryjs/features/help.feature deleted file mode 100644 index d110691..0000000 --- a/node_modules/pryjs/features/help.feature +++ /dev/null @@ -1,23 +0,0 @@ -Feature: Help - As a user of pry.js - I want to be ask for help - So I can better use the tools provided - - Scenario: Getting all the help - Given I have open the "fizzbuzz" example - When I type in "help" - Then The output should match "whereami" - And The output should match "help" - - Scenario: Getting all the help with extra space - Given I have open the "fizzbuzz" example - When I type in "help " - Then The output should match "whereami" - And The output should match "help" - - Scenario: Getting specific help - Given I have open the "fizzbuzz" example - When I type in "help help" - Then The output should not match "whereami" - And The output should match "help" - And The output should be "2" lines diff --git a/node_modules/pryjs/features/play.feature b/node_modules/pryjs/features/play.feature deleted file mode 100644 index e726e19..0000000 --- a/node_modules/pryjs/features/play.feature +++ /dev/null @@ -1,18 +0,0 @@ -Feature: Play - As a user of pry.js - I want to play existing lines of code in context - So I can see the side effects of my interactions - - Scenario: Play a single line - Given I have open the "fizzbuzz" example - When I type in "i = 15" - When I type in "play 10" - And I type in "output" - Then The output should match "Fizz" - - Scenario: Play multiple lines - Given I have open the "fizzbuzz" example - When I type in "i = 15" - And I type in "play 10 11" - And I type in "output" - Then The output should match "FizzBuzz" diff --git a/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee b/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee deleted file mode 100644 index b01a7fa..0000000 --- a/node_modules/pryjs/features/step_definitions/myStepDefinitions.coffee +++ /dev/null @@ -1,42 +0,0 @@ -myStepDefinitionsWrapper = -> - @World = require("../support/world").World - - @Given /^I have open the "([^"]*)" example$/, (example, callback) -> - @runCommand "coffee examples/#{example}.coffee", callback - - @When /^I type in "([^"]*)"$/, (command, callback) -> - @type command, callback - - @When /^I type in ctrl\+v$/, (callback) -> - @print_buffer new Buffer(String.fromCharCode(22)), callback - - @Then /^The output should match "([^"]*)"$/, (pattern, callback) -> - @getOutput (result) -> - if result.match(pattern) - callback() - else - callback.fail new Error("Expected to find #{pattern} in #{result}.") - - @Then /^The output should not match "([^"]*)"$/, (pattern, callback) -> - @getOutput (result) -> - if result.match(pattern) - callback.fail new Error("Expected not to find #{pattern} in #{result}.") - else - callback() - - @Then /^The output should be "([^"]*)"$/, (pattern, callback) -> - @getOutput (result) -> - if result == pattern - callback() - else - callback.fail new Error("Expected to find #{pattern} in #{result}.") - - @Then /^The output should be "([0-9]*)" lines?$/, (lines, callback) -> - @getOutput (result) -> - real_lines = result.trim().split('\n').length - if real_lines == parseInt(lines, 10) - callback() - else - callback.fail new Error("Expected #{lines} lines. Got #{real_lines}") - -module.exports = myStepDefinitionsWrapper diff --git a/node_modules/pryjs/features/stop.feature b/node_modules/pryjs/features/stop.feature deleted file mode 100644 index 381a3b6..0000000 --- a/node_modules/pryjs/features/stop.feature +++ /dev/null @@ -1,10 +0,0 @@ -Feature: Stop - As a user of pry.js - I want to continue the execution of the code - So I can see the side effects of my interactions - - Scenario: Skipping the iteration goes to the next variable - Given I have open the "fizzbuzz" example - When I type in "stop" - And I type in "i" - Then The output should match "2" diff --git a/node_modules/pryjs/features/support/after_hooks.coffee b/node_modules/pryjs/features/support/after_hooks.coffee deleted file mode 100644 index b875088..0000000 --- a/node_modules/pryjs/features/support/after_hooks.coffee +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = -> - @After (callback) -> - @process.kill('SIGHUP'); - callback() diff --git a/node_modules/pryjs/features/support/world.coffee b/node_modules/pryjs/features/support/world.coffee deleted file mode 100644 index f587a3c..0000000 --- a/node_modules/pryjs/features/support/world.coffee +++ /dev/null @@ -1,56 +0,0 @@ -spawn = require('child_process').spawn -_ = require('underscore') -chalk = require('chalk') - -WorldConstructor = (callback) -> - - class World - - process: null - - output: [] - - runCommand: (command, callback) => - command = command.split(' ') - @waitForOutput(callback) - @process = spawn( - command[0], - command.slice(1), - cwd: "#{__dirname}/../../" - ) - @process.stdout.on 'data', (output) => - @output.push output.toString() - - type: (input, callback) => - @waitForOutput(callback) - @process.stdin.write "#{input}\n" - - print_buffer: (buffer, callback) => - @waitForOutput(callback) - @process.stdin.write buffer - - waitForOutput: (callback) => - @_waitForOutput(@output.length, new Date(), callback) - - # Subtract 2 - # 1 for index to count - # 1 account for the new prompt it sends - getOutput: (callback) => - output = _.compact(_.map(chalk.stripColor(@output.join('\n')) - .replace(/\u001b\[(?:\d|NaN)(?:G|J)/g, '') - .split('\n') - .join('\n') - .split(/(?:-{9}>|\.{10}|\[\d+\] pryjs>).*$/gm), (el) -> el.trim())) - callback(output[output.length - 1].trim()) - - _waitForOutput: (oldOutputLength, oldDate, callback) => - if new Date() - 4500 > oldDate - callback.fail new Error('Timeout of 4.5 seconds exceeded') - else if @output.length > oldOutputLength - callback() - else - setTimeout(@_waitForOutput.bind(@, oldOutputLength, oldDate, callback), 500) - - callback(new World) - -exports.World = WorldConstructor diff --git a/node_modules/pryjs/features/underscore.feature b/node_modules/pryjs/features/underscore.feature deleted file mode 100644 index 9c409d4..0000000 --- a/node_modules/pryjs/features/underscore.feature +++ /dev/null @@ -1,10 +0,0 @@ -Feature: Underscore - As a user of pry.js - I want to be able to use the last result - So I can better use the tools provided - - Scenario: Using dynamic underscore variable - Given I have open the "fizzbuzz" example - When I type in "42" - When I type in "_" - Then The output should match "42" diff --git a/node_modules/pryjs/features/version.feature b/node_modules/pryjs/features/version.feature deleted file mode 100644 index b09663f..0000000 --- a/node_modules/pryjs/features/version.feature +++ /dev/null @@ -1,9 +0,0 @@ -Feature: Version - As a user of pry.js - I want to be able to use the Version command - So that I can see what version of pry.js I am using - - Scenario: I want to see the current pry.js version - Given I have open the "fizzbuzz" example - When I type in "version" - Then The output should match "\d+\.\d+\.\d+" diff --git a/node_modules/pryjs/features/whereami.feature b/node_modules/pryjs/features/whereami.feature deleted file mode 100644 index 59d1233..0000000 --- a/node_modules/pryjs/features/whereami.feature +++ /dev/null @@ -1,19 +0,0 @@ -Feature: Whereami - As a user of pry.js - I want to be able to use the Whereami command - So that I can see exactly where I am - - Scenario: The pointer should be on the pry statement - Given I have open the "fizzbuzz" example - When I type in "whereami" - Then The output should match "=>.*pry.it" - - Scenario: Should get 2 lines before and 1 after - Given I have open the "fizzbuzz" example - When I type in "whereami 2 1" - Then The output should be "4" lines - - Scenario: Should get 2 lines before and after - Given I have open the "fizzbuzz" example - When I type in "whereami 2 2" - Then The output should be "5" lines diff --git a/node_modules/pryjs/features/wtf.feature b/node_modules/pryjs/features/wtf.feature deleted file mode 100644 index b34438a..0000000 --- a/node_modules/pryjs/features/wtf.feature +++ /dev/null @@ -1,15 +0,0 @@ -Feature: Wtf - As a user of pry.js - I want to be able to use the Wtf command - So that I can see the last thrown exception - - Scenario: No caught exceptions - Given I have open the "fizzbuzz" example - When I type in "wtf" - Then The output should match "No errors" - - Scenario: No caught exceptions - Given I have open the "fizzbuzz" example - When I type in "throw new Error('Foobar!');" - And I type in "wtf" - Then The output should match "Foobar!" diff --git a/node_modules/pryjs/features/xecute.feature b/node_modules/pryjs/features/xecute.feature deleted file mode 100644 index 511c099..0000000 --- a/node_modules/pryjs/features/xecute.feature +++ /dev/null @@ -1,62 +0,0 @@ -Feature: Execute - As a user of pry.js - I want to be able to execute javascript in scope - So I have a better idea of what my problem is - - Scenario: Looking at a variable - Given I have open the "fizzbuzz" example - When I type in "i" - Then The output should match "1" - - Scenario: Have the same scope - Given I have open the "fizzbuzz" example - When I type in "this.bar()" - Then The output should match "10" - - Scenario: Setting the variable - Given I have open the "fizzbuzz" example - When I type in "i = 20" - And I type in "i" - Then The output should match "20" - - Scenario: Executes javascript - Given I have open the "fizzbuzz" example - When I type in "if (true) { 'js'; }" - Then The output should be "js" - - Scenario: Executes coffeescript - Given I have open the "fizzbuzz" example - When I type in "mode" - And I type in "if true then 'coffee'" - Then The output should be "coffee" - - Scenario: Executes multiline javascript - Given I have open the "fizzbuzz" example - When I type in ctrl+v - And I type in "if (true) {" - And I type in "'hello world';" - And I type in "}" - And I type in "" - Then The output should be "hello world" - - Scenario: Executes multiline coffeescript - Given I have open the "fizzbuzz" example - When I type in "mode" - And I type in ctrl+v - And I type in "{" - And I type in "foo: 'hello world'" - And I type in "bar: 'baz'" - And I type in "}.foo" - And I type in "" - Then The output should be "hello world" - - Scenario: Should not overwrite global variables in Coffee - Given I have open the "fizzbuzz" example - When I type in "mode" - And I type in "i = i || 20" - Then The output should match "1" - - Scenario: Getting an error - Given I have open the "fizzbuzz" example - When I type in "i_do_not_exist" - Then The output should match "is not defined" diff --git a/node_modules/pryjs/lib/.gitkeep b/node_modules/pryjs/lib/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/pryjs/lib/pry.js b/node_modules/pryjs/lib/pry.js deleted file mode 100644 index 77b51ea..0000000 --- a/node_modules/pryjs/lib/pry.js +++ /dev/null @@ -1,31 +0,0 @@ -(function() { - var App, Pry; - - App = require('./pry/app'); - - Pry = (function() { - function Pry() { - this.it = "(" + (this._pry.toString()) + ").call(this)"; - } - - Pry.prototype._pry = function() { - var _; - _ = null; - return pry.open((function(input) { - return _ = eval(input); - }).bind(this)); - }; - - Pry.prototype.open = function(scope) { - var app; - app = new App(scope); - return app.open(); - }; - - return Pry; - - })(); - - module.exports = new Pry; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/app.js b/node_modules/pryjs/lib/pry/app.js deleted file mode 100644 index c440723..0000000 --- a/node_modules/pryjs/lib/pry/app.js +++ /dev/null @@ -1,82 +0,0 @@ -(function() { - var App, Output, SyncPrompt, commands, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - SyncPrompt = require('./sync_prompt'); - - Output = require('./output/local_output'); - - commands = require('./commands'); - - App = (function() { - App.prototype._commands = []; - - function App(scope) { - this.scope = scope; - this.find_command = __bind(this.find_command, this); - this.typeahead = __bind(this.typeahead, this); - this.output = new Output(); - this.prompt = new SyncPrompt({ - typeahead: this.typeahead - }); - this.prompt.on('data', this.find_command); - } - - App.prototype.commands = function() { - var command, i; - if (this._commands.length === 0) { - for (i in commands) { - command = commands[i]; - this._commands.push(new command({ - output: this.output, - scope: this.scope - })); - } - } - return this._commands; - }; - - App.prototype.typeahead = function(input) { - var command, items, _i, _len, _ref; - if (input == null) { - input = ''; - } - items = []; - _ref = this.commands(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - command = _ref[_i]; - items = items.concat(command.typeahead(input)); - } - if (input) { - items = items.filter(function(item) { - return item.indexOf(input) === 0; - }); - } - return [items, input]; - }; - - App.prototype.find_command = function(input, chain) { - var args, command, match, _i, _len, _ref; - _ref = this.commands(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - command = _ref[_i]; - if (match = command.match(input.trim())) { - args = String(match[1]).trim().split(' '); - return command.execute.call(command, args, chain); - } - } - return false; - }; - - App.prototype.open = function() { - this.prompt.type('whereami'); - return this.prompt.open(); - }; - - return App; - - })(); - - module.exports = App; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/command.js b/node_modules/pryjs/lib/pry/command.js deleted file mode 100644 index 8b17a46..0000000 --- a/node_modules/pryjs/lib/pry/command.js +++ /dev/null @@ -1,87 +0,0 @@ -(function() { - var Command, File, Range; - - File = require('./file'); - - Range = require('./range'); - - Command = (function() { - Command.commands = {}; - - Command.prototype.name = ''; - - Command.prototype.aliases = []; - - Command.prototype.definition = ''; - - Command.prototype.help = ''; - - Command.prototype.args = new Range(0, 0); - - function Command(_arg) { - this.scope = _arg.scope, this.output = _arg.output; - this.stack = new Error().stack; - this.constructor.commands[this.constructor.name] = this; - } - - Command.prototype.command = function(input) { - var command, name, _ref; - _ref = this.commands(); - for (name in _ref) { - command = _ref[name]; - if (command.constructor.name.match(new RegExp(input, 'i'))) { - return command; - } - } - }; - - Command.prototype.commands = function() { - return this.constructor.commands; - }; - - Command.prototype.typeahead = function() { - var items; - items = this.aliases.slice(0); - items.push(this.name); - return items; - }; - - Command.prototype.command_regex = function() { - var subject; - subject = "^(?:" + this.name; - if (this.aliases.length > 0) { - subject += "|" + (this.aliases.join('|')); - } - subject += ")((?: (?:[^ ]+))" + (this.args.to_regex()) + ")$"; - return new RegExp(subject); - }; - - Command.prototype.match = function(input) { - return input.match(this.command_regex()); - }; - - Command.prototype.find_file = function() { - var file, foundCall, item, line, _, _i, _len, _ref, _ref1; - foundCall = false; - _ref = this.stack.split('\n'); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - item = _ref[_i]; - if (foundCall) { - _ref1 = item.match(/([^ (:]+):(\d+):\d+/), _ = _ref1[0], file = _ref1[1], line = _ref1[2]; - if (file !== '') { - return new File(file, line); - } - } else if (item.match(/Pry\.open/)) { - foundCall = true; - } - } - return new File(__filename, 1); - }; - - return Command; - - })(); - - module.exports = Command; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/help.js b/node_modules/pryjs/lib/pry/commands/help.js deleted file mode 100644 index 467719a..0000000 --- a/node_modules/pryjs/lib/pry/commands/help.js +++ /dev/null @@ -1,76 +0,0 @@ -(function() { - var Command, Help, Range, chalk, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Range = require('../range'); - - chalk = require('chalk'); - - Help = (function(_super) { - __extends(Help, _super); - - function Help() { - return Help.__super__.constructor.apply(this, arguments); - } - - Help.prototype.name = 'help'; - - Help.prototype.aliases = ['\\?']; - - Help.prototype.definition = 'Shows a list of commands. Type `help foo` for help on the `foo` command.'; - - Help.prototype.help = 'You just lost the game.'; - - Help.prototype.args = new Range(0, 1); - - Help.prototype.typeahead = function(input) { - var command, items, name, _ref; - if (input == null) { - input = ''; - } - if (input.indexOf('help') === 0) { - items = []; - _ref = this.commands(); - for (name in _ref) { - command = _ref[name]; - if (command.name) { - items.push("help " + command.name); - } - } - return items; - } else { - return ['help']; - } - }; - - Help.prototype.execute = function(_arg, chain) { - var command, name, _ref; - name = _arg[0]; - if (name) { - command = this.command(name); - this.output.add(chalk.blue(command.name), '-', command.definition); - this.output.add(command.help); - this.output.sendAll(); - } else { - _ref = this.commands(); - for (name in _ref) { - command = _ref[name]; - if (command.name) { - this.output.add(chalk.blue(command.name), '-', command.definition); - } - } - this.output.sendAll(); - } - return chain.next(); - }; - - return Help; - - })(Command); - - module.exports = Help; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/index.js b/node_modules/pryjs/lib/pry/commands/index.js deleted file mode 100644 index d4c33bc..0000000 --- a/node_modules/pryjs/lib/pry/commands/index.js +++ /dev/null @@ -1,16 +0,0 @@ -(function() { - var file, fs, name, _i, _len, _ref; - - fs = require('fs'); - - _ref = fs.readdirSync(__dirname); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.match(/\.(coffee|js)$/) && !file.match(/index\.(js|coffee)/)) { - file = file.substr(0, file.indexOf('.')); - name = file.substring(0, 1).toUpperCase() + file.substring(1); - exports[name] = require("./" + file); - } - } - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/kill.js b/node_modules/pryjs/lib/pry/commands/kill.js deleted file mode 100644 index 6b0a2cc..0000000 --- a/node_modules/pryjs/lib/pry/commands/kill.js +++ /dev/null @@ -1,33 +0,0 @@ -(function() { - var Command, Kill, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Kill = (function(_super) { - __extends(Kill, _super); - - function Kill() { - return Kill.__super__.constructor.apply(this, arguments); - } - - Kill.prototype.name = 'kill!'; - - Kill.prototype.aliases = ['kill', 'exit!', 'quit!', 'stop!']; - - Kill.prototype.definition = 'Exits from the entire script.'; - - Kill.prototype.execute = function(args, chain) { - chain.stop(); - process.kill(); - return false; - }; - - return Kill; - - })(Command); - - module.exports = Kill; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/play.js b/node_modules/pryjs/lib/pry/commands/play.js deleted file mode 100644 index 7df4067..0000000 --- a/node_modules/pryjs/lib/pry/commands/play.js +++ /dev/null @@ -1,40 +0,0 @@ -(function() { - var Command, Play, Range, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Range = require('../range'); - - Play = (function(_super) { - __extends(Play, _super); - - Play.prototype.name = 'play'; - - Play.prototype.definition = 'Play a specific line, or set of lines in the file you are in.'; - - Play.prototype.help = '`play 1 2` will play lines 1 and 2.\n`play 1` will just play line 1.'; - - Play.prototype.args = new Range(1, 2); - - function Play() { - Play.__super__.constructor.apply(this, arguments); - this.file = this.find_file(); - } - - Play.prototype.execute = function(_arg, chain) { - var end, start; - start = _arg[0], end = _arg[1]; - end || (end = start); - this.command('xecute').execute_code(this.file.by_lines(start, end), this.file.type()); - return chain.next(); - }; - - return Play; - - })(Command); - - module.exports = Play; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/stop.js b/node_modules/pryjs/lib/pry/commands/stop.js deleted file mode 100644 index 5262cb7..0000000 --- a/node_modules/pryjs/lib/pry/commands/stop.js +++ /dev/null @@ -1,31 +0,0 @@ -(function() { - var Command, Stop, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Stop = (function(_super) { - __extends(Stop, _super); - - function Stop() { - return Stop.__super__.constructor.apply(this, arguments); - } - - Stop.prototype.name = 'stop'; - - Stop.prototype.aliases = ['exit', 'quit']; - - Stop.prototype.definition = 'Ends the current prompt and continues running the rest of the code.'; - - Stop.prototype.execute = function(args, chain) { - return chain.stop(); - }; - - return Stop; - - })(Command); - - module.exports = Stop; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/version.js b/node_modules/pryjs/lib/pry/commands/version.js deleted file mode 100644 index 1091c3e..0000000 --- a/node_modules/pryjs/lib/pry/commands/version.js +++ /dev/null @@ -1,32 +0,0 @@ -(function() { - var Command, Version, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Version = (function(_super) { - __extends(Version, _super); - - function Version() { - return Version.__super__.constructor.apply(this, arguments); - } - - Version.prototype.name = 'version'; - - Version.prototype.definition = 'Shows the current version or pry.js you are using.'; - - Version.prototype.execute = function(args, chain) { - var content; - content = require('fs').readFileSync("" + __dirname + "/../../../package.json"); - this.output.send(JSON.parse(content)['version']); - return chain.next(); - }; - - return Version; - - })(Command); - - module.exports = Version; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/whereami.js b/node_modules/pryjs/lib/pry/commands/whereami.js deleted file mode 100644 index 4a0e4c2..0000000 --- a/node_modules/pryjs/lib/pry/commands/whereami.js +++ /dev/null @@ -1,43 +0,0 @@ -(function() { - var Command, Range, Whereami, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Range = require('../range'); - - Whereami = (function(_super) { - __extends(Whereami, _super); - - Whereami.prototype.name = 'whereami'; - - Whereami.prototype.definition = 'Shows you exactly where you are in the code.'; - - Whereami.prototype.help = '`whereami` - Shows you where you are. \n`whereami 6` - Gives you 6 lines before instead of 5. \n`whereami 6 8` - Gives you 6 lines before instead of 5, and 8 lines after.'; - - Whereami.prototype.args = new Range(0, 2); - - function Whereami() { - Whereami.__super__.constructor.apply(this, arguments); - this.file = this.find_file(); - } - - Whereami.prototype.execute = function(_arg, chain) { - var after, before, end, start; - before = _arg[0], after = _arg[1]; - before || (before = 5); - after || (after = 5); - start = this.file.line - parseInt(before, 10); - end = this.file.line + parseInt(after, 10); - this.output.send(this.file.formatted_content_by_line(start, end)); - return chain.next(); - }; - - return Whereami; - - })(Command); - - module.exports = Whereami; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/wtf.js b/node_modules/pryjs/lib/pry/commands/wtf.js deleted file mode 100644 index ee8623f..0000000 --- a/node_modules/pryjs/lib/pry/commands/wtf.js +++ /dev/null @@ -1,36 +0,0 @@ -(function() { - var Command, Wtf, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Wtf = (function(_super) { - __extends(Wtf, _super); - - function Wtf() { - return Wtf.__super__.constructor.apply(this, arguments); - } - - Wtf.prototype.name = 'wtf'; - - Wtf.prototype.definition = 'Shows the last caught exception.'; - - Wtf.prototype.help = '`wtf` will show you the last caught exception.'; - - Wtf.prototype.execute = function(args, chain) { - if (this.command('xecute').last_error) { - this.output.send(this.command('xecute').last_error.stack); - } else { - this.output.send('No errors'); - } - return chain.next(); - }; - - return Wtf; - - })(Command); - - module.exports = Wtf; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/commands/xecute.js b/node_modules/pryjs/lib/pry/commands/xecute.js deleted file mode 100644 index bdac6a9..0000000 --- a/node_modules/pryjs/lib/pry/commands/xecute.js +++ /dev/null @@ -1,66 +0,0 @@ -(function() { - var Command, Compiler, Range, Xecute, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - Command = require('../command'); - - Range = require('../range'); - - Compiler = require('../compiler'); - - Xecute = (function(_super) { - __extends(Xecute, _super); - - Xecute.prototype.name = ''; - - Xecute.prototype.last_error = null; - - Xecute.prototype.args = new Range(1, Infinity); - - function Xecute() { - Xecute.__super__.constructor.apply(this, arguments); - this.compiler = new Compiler({ - scope: this.scope - }); - } - - Xecute.prototype.execute = function(input, chain) { - if (input[0] === 'mode') { - return this.switch_mode(chain); - } - this.execute_code(input.join(' ')); - return chain.next(); - }; - - Xecute.prototype.execute_code = function(code, language) { - var err; - if (language == null) { - language = null; - } - try { - return this.output.send(this.compiler.execute(code, language)); - } catch (_error) { - err = _error; - this.last_error = err; - return this.output.send(err); - } - }; - - Xecute.prototype.switch_mode = function(chain) { - this.compiler.toggle_mode(); - this.output.send("Switched mode to '" + (this.compiler.mode()) + "'."); - return chain.next(); - }; - - Xecute.prototype.match = function(input) { - return [input, input]; - }; - - return Xecute; - - })(Command); - - module.exports = Xecute; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/compiler.js b/node_modules/pryjs/lib/pry/compiler.js deleted file mode 100644 index eab2229..0000000 --- a/node_modules/pryjs/lib/pry/compiler.js +++ /dev/null @@ -1,50 +0,0 @@ -(function() { - var Compiler, coffee, pry; - - coffee = require('coffee-script'); - - pry = require('../pry'); - - Compiler = (function() { - Compiler.prototype.mode_id = 0; - - Compiler.prototype.noVarPattern = /^\s*var .*$/gm; - - Compiler.prototype.modes = ['js', 'coffee']; - - function Compiler(_arg) { - this.scope = _arg.scope; - } - - Compiler.prototype.mode = function() { - return this.modes[this.mode_id]; - }; - - Compiler.prototype.toggle_mode = function() { - return this.mode_id = (this.mode_id + 1) % this.modes.length; - }; - - Compiler.prototype.execute = function(code, language) { - if (language == null) { - language = this.modes[this.mode_id]; - } - return this["execute_" + language](code); - }; - - Compiler.prototype.execute_coffee = function(code) { - return this.execute_js(coffee.compile(code, { - bare: true - }).replace(this.noVarPattern, '')); - }; - - Compiler.prototype.execute_js = function(code) { - return this.scope(code); - }; - - return Compiler; - - })(); - - module.exports = Compiler; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/file.js b/node_modules/pryjs/lib/pry/file.js deleted file mode 100644 index 0b95750..0000000 --- a/node_modules/pryjs/lib/pry/file.js +++ /dev/null @@ -1,51 +0,0 @@ -(function() { - var File, SyncHighlight, fs; - - fs = require('fs'); - - SyncHighlight = require('./sync_highlight'); - - File = (function() { - function File(name, line) { - this.name = name; - this.line = line; - this.line = parseInt(this.line); - } - - File.prototype.type = function() { - if (this.name.match(/coffee$/)) { - return 'coffee'; - } else { - return 'js'; - } - }; - - File.prototype.by_lines = function(start, end) { - if (end == null) { - end = start; - } - return this.content().split('\n').slice(start - 1, end).join('\n'); - }; - - File.prototype.content = function() { - return this._content || (this._content = fs.readFileSync(this.name).toString()); - }; - - File.prototype.formatted_content_by_line = function(start, end, line) { - if (end == null) { - end = start; - } - if (line == null) { - line = this.line; - } - start = (start < 0 ? 0 : start); - return new SyncHighlight(this.content(), this.type()).code_snippet(start, end, line); - }; - - return File; - - })(); - - module.exports = File; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/output/local_output.js b/node_modules/pryjs/lib/pry/output/local_output.js deleted file mode 100644 index cb8092e..0000000 --- a/node_modules/pryjs/lib/pry/output/local_output.js +++ /dev/null @@ -1,31 +0,0 @@ -(function() { - var LocalOutput, - __slice = [].slice; - - LocalOutput = (function() { - function LocalOutput() {} - - LocalOutput.prototype.output = []; - - LocalOutput.prototype.send = function() { - return console.log.apply(console.log, arguments); - }; - - LocalOutput.prototype.add = function() { - var args; - args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - return this.output.push(args.join(' ')); - }; - - LocalOutput.prototype.sendAll = function() { - this.send(this.output.join('\n')); - return this.output = []; - }; - - return LocalOutput; - - })(); - - module.exports = LocalOutput; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/range.js b/node_modules/pryjs/lib/pry/range.js deleted file mode 100644 index 87c98cb..0000000 --- a/node_modules/pryjs/lib/pry/range.js +++ /dev/null @@ -1,35 +0,0 @@ -(function() { - var Range; - - Range = (function() { - Range.prototype.start = 0; - - Range.prototype.end = 0; - - function Range(start, end) { - this.start = start; - this.end = end; - if (this.start > this.end) { - throw "Start must be smaller than end"; - } - } - - Range.prototype.includes = function(i) { - return this.start <= i && i <= this.end; - }; - - Range.prototype.to_regex = function() { - if (this.end === Infinity) { - return "{" + this.start + ",}"; - } else { - return "{" + this.start + "," + this.end + "}"; - } - }; - - return Range; - - })(); - - module.exports = Range; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/sync_highlight.js b/node_modules/pryjs/lib/pry/sync_highlight.js deleted file mode 100644 index 8628ab1..0000000 --- a/node_modules/pryjs/lib/pry/sync_highlight.js +++ /dev/null @@ -1,92 +0,0 @@ -(function() { - var SyncHighlight, chalk, deasync, pygmentize, util; - - pygmentize = require('pygmentize-bundled'); - - deasync = require('deasync'); - - chalk = require('chalk'); - - util = require('util'); - - SyncHighlight = (function() { - SyncHighlight.prototype.content = null; - - SyncHighlight.prototype.type = null; - - function SyncHighlight(obj, type) { - this.type = type != null ? type : 'javascript'; - if (typeof obj === 'function') { - this.content = obj.toString(); - } else if (typeof obj === 'string') { - this.content = obj; - } else { - this.content = JSON.stringify(obj, this.stringify, "\t"); - } - } - - SyncHighlight.prototype.stringify = function(key, value) { - if (typeof value === 'function') { - return util.inspect(value); - } - return value; - }; - - SyncHighlight.prototype.highlight = function() { - var data, done; - if (chalk.supportsColor) { - done = data = false; - pygmentize({ - lang: this.type, - format: "terminal" - }, this.content, (function(_this) { - return function(err, res) { - done = true; - return data = res.toString(); - }; - })(this)); - while (!done) { - deasync.runLoopOnce(); - } - } else { - data = this.content; - } - return data; - }; - - SyncHighlight.prototype.code_snippet = function(start, end, line_number, line_pointer) { - var key, line, lines, pointer, _i, _len; - if (line_pointer == null) { - line_pointer = ' => '; - } - lines = this.highlight().split('\n'); - for (key = _i = 0, _len = lines.length; _i < _len; key = ++_i) { - line = lines[key]; - if (key + 1 === line_number) { - pointer = line_pointer; - } else { - pointer = this._spaces(line_pointer.length); - } - lines[key] = "" + pointer + (this._space(key + 1)) + (chalk.cyan(key + 1)) + ": " + line; - } - return lines.slice(start - 1, end).join('\n'); - }; - - SyncHighlight.prototype._space = function(line) { - return this._spaces(4 - String(line).length); - }; - - SyncHighlight.prototype._spaces = function(length, char) { - if (char == null) { - char = ' '; - } - return new Array(length + 1).join(char); - }; - - return SyncHighlight; - - })(); - - module.exports = SyncHighlight; - -}).call(this); diff --git a/node_modules/pryjs/lib/pry/sync_prompt.js b/node_modules/pryjs/lib/pry/sync_prompt.js deleted file mode 100644 index afb857c..0000000 --- a/node_modules/pryjs/lib/pry/sync_prompt.js +++ /dev/null @@ -1,159 +0,0 @@ -(function() { - var EventEmitter, MultilineState, SinglelineState, SyncPrompt, deasync, readline, _, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - readline = require('readline'); - - EventEmitter = require('events').EventEmitter; - - deasync = require('deasync'); - - _ = require('underscore'); - - MultilineState = (function() { - function MultilineState() {} - - MultilineState.prototype.data = ''; - - MultilineState.prototype.keypress = function(input, chars) { - this.data += chars; - if (this.data.match(/(\r|\n)\1$/)) { - this.data = ''; - input.state('single'); - return input.send_data(); - } else if (chars.match(/(\r|\n)$/)) { - return input.prompt(); - } - }; - - MultilineState.prototype.prompt = function(input, prompt) { - if (this.data === '') { - input.cli.setPrompt(prompt.replace(/[^>](?!$)/g, '-')); - } else { - input.cli.setPrompt(prompt.replace(/.(?!$)/g, '.')); - } - return input.cli.prompt(); - }; - - return MultilineState; - - })(); - - SinglelineState = (function() { - function SinglelineState() {} - - SinglelineState.prototype.keypress = function(input, chars) { - if (chars === '\u0016') { - input.state('multi'); - return input.prompt(); - } else if (chars.match(/(\r|\n)$/)) { - return input.send_data(); - } - }; - - SinglelineState.prototype.prompt = function(input, prompt) { - input.cli.setPrompt(prompt); - return input.cli.prompt(); - }; - - return SinglelineState; - - })(); - - SyncPrompt = (function(_super) { - __extends(SyncPrompt, _super); - - SyncPrompt.prototype.lines = ''; - - SyncPrompt.prototype.count = 0; - - SyncPrompt.prototype.states = { - multi: new MultilineState, - single: new SinglelineState - }; - - SyncPrompt.prototype._state = 'single'; - - SyncPrompt.prototype.done = false; - - function SyncPrompt(options) { - this.options = options != null ? options : {}; - this.close = __bind(this.close, this); - this.type = __bind(this.type, this); - this.prompt = __bind(this.prompt, this); - this.send_data = __bind(this.send_data, this); - this.keypress = __bind(this.keypress, this); - this.line = __bind(this.line, this); - this.state = __bind(this.state, this); - this.options = _.extend(_.pick(process, 'stdin', 'stdout'), this.options); - this.cli = readline.createInterface({ - input: this.options.stdin, - output: this.options.stdout, - completer: this.options.typeahead - }); - this.cli.on('line', this.line); - this.options.stdin.on('data', this.keypress); - } - - SyncPrompt.prototype.state = function(state) { - if (state) { - this._state = state; - } - return this.states[this._state]; - }; - - SyncPrompt.prototype.line = function(line) { - if (line.charCodeAt(0) === 22) { - line = line.slice(1); - } - return this.lines += '\n' + line; - }; - - SyncPrompt.prototype.keypress = function(chars) { - return this.state().keypress(this, chars.toString()); - }; - - SyncPrompt.prototype.send_data = function() { - this.count++; - this.emit('data', this.lines.trim(), { - next: this.prompt, - stop: this.close - }); - return this.lines = ''; - }; - - SyncPrompt.prototype.prompt = function() { - return this.state().prompt(this, "[" + this.count + "] pryjs> "); - }; - - SyncPrompt.prototype.open = function() { - var _results; - this.done = false; - this.prompt(); - _results = []; - while (!this.done) { - _results.push(deasync.runLoopOnce()); - } - return _results; - }; - - SyncPrompt.prototype.type = function(input) { - this.lines = input; - return this.send_data(); - }; - - SyncPrompt.prototype.close = function() { - this.done = true; - this.options.stdin.removeListener('data', this.keypress); - return this.cli.close(); - }; - - return SyncPrompt; - - })(EventEmitter); - - module.exports = SyncPrompt; - -}).call(this); diff --git a/node_modules/pryjs/node_modules/.bin/cake b/node_modules/pryjs/node_modules/.bin/cake deleted file mode 120000 index d95f32a..0000000 --- a/node_modules/pryjs/node_modules/.bin/cake +++ /dev/null @@ -1 +0,0 @@ -../coffee-script/bin/cake \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/.bin/coffee b/node_modules/pryjs/node_modules/.bin/coffee deleted file mode 120000 index b57f275..0000000 --- a/node_modules/pryjs/node_modules/.bin/coffee +++ /dev/null @@ -1 +0,0 @@ -../coffee-script/bin/coffee \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/index.js b/node_modules/pryjs/node_modules/chalk/index.js deleted file mode 100644 index ac1f168..0000000 --- a/node_modules/pryjs/node_modules/chalk/index.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; -var escapeStringRegexp = require('escape-string-regexp'); -var ansiStyles = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasAnsi = require('has-ansi'); -var supportsColor = require('supports-color'); -var defineProps = Object.defineProperties; -var chalk = module.exports; - -function build(_styles) { - var builder = function builder() { - return applyStyle.apply(builder, arguments); - }; - builder._styles = _styles; - // __proto__ is used because we must return a function, but there is - // no way to create a function with a different prototype. - builder.__proto__ = proto; - return builder; -} - -var styles = (function () { - var ret = {}; - - ansiStyles.grey = ansiStyles.gray; - - Object.keys(ansiStyles).forEach(function (key) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - ret[key] = { - get: function () { - return build(this._styles.concat(key)); - } - }; - }); - - return ret; -})(); - -var proto = defineProps(function chalk() {}, styles); - -function applyStyle() { - // support varags, but simply cast to string in case there's only one arg - var args = arguments; - var argsLen = args.length; - var str = argsLen !== 0 && String(arguments[0]); - if (argsLen > 1) { - // don't slice `arguments`, it prevents v8 optimizations - for (var a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!chalk.enabled || !str) { - return str; - } - - /*jshint validthis: true*/ - var nestedStyles = this._styles; - - for (var i = 0; i < nestedStyles.length; i++) { - var code = ansiStyles[nestedStyles[i]]; - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - } - - return str; -} - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - return build([name]); - } - }; - }); - - return ret; -} - -defineProps(chalk, init()); - -chalk.styles = ansiStyles; -chalk.hasColor = hasAnsi; -chalk.stripColor = stripAnsi; -chalk.supportsColor = supportsColor; - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi deleted file mode 120000 index c1e7413..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/has-ansi +++ /dev/null @@ -1 +0,0 @@ -../has-ansi/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi deleted file mode 120000 index b65c9f8..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/strip-ansi +++ /dev/null @@ -1 +0,0 @@ -../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color deleted file mode 120000 index af0f05e..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/.bin/supports-color +++ /dev/null @@ -1 +0,0 @@ -../supports-color/cli.js \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js deleted file mode 100644 index 2d8b472..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/index.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; -var styles = module.exports; - -var codes = { - reset: [0, 0], - - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = {}; - style.open = '\u001b[' + val[0] + 'm'; - style.close = '\u001b[' + val[1] + 'm'; -}); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index c260bf9..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "ansi-styles", - "version": "1.1.0", - "description": "ANSI escape codes for styling strings in the terminal", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-styles", - "_id": "ansi-styles@1.1.0", - "_shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", - "_from": "ansi-styles@>=1.1.0 <2.0.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", - "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 73584cc..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,70 +0,0 @@ -# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -```sh -$ npm install --save ansi-styles -``` - - -## Usage - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### General - -- `reset` -- `bold` -- `dim` -- `italic` *(not widely supported)* -- `underline` -- `inverse` -- `hidden` -- `strikethrough` *(not widely supported)* - -### Text colors - -- `black` -- `red` -- `green` -- `yellow` -- `blue` -- `magenta` -- `cyan` -- `white` -- `gray` - -### Background colors - -- `bgBlack` -- `bgRed` -- `bgGreen` -- `bgYellow` -- `bgBlue` -- `bgMagenta` -- `bgCyan` -- `bgWhite` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js deleted file mode 100644 index 7834bf9..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/index.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license deleted file mode 100644 index 654d0bf..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json deleted file mode 100644 index ca8fbef..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "escape-string-regexp", - "version": "1.0.4", - "description": "Escape RegExp special characters", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - } - ], - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "xo && ava" - }, - "files": [ - "index.js" - ], - "keywords": [ - "escape", - "regex", - "regexp", - "re", - "regular", - "expression", - "string", - "str", - "special", - "characters" - ], - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "gitHead": "e9ca6832a9506ca26402cb0e6dc95efcf35b0b97", - "bugs": { - "url": "https://github.com/sindresorhus/escape-string-regexp/issues" - }, - "homepage": "https://github.com/sindresorhus/escape-string-regexp", - "_id": "escape-string-regexp@1.0.4", - "_shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", - "_from": "escape-string-regexp@>=1.0.0 <2.0.0", - "_npmVersion": "2.14.7", - "_nodeVersion": "4.2.1", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "dist": { - "shasum": "b85e679b46f72d03fbbe8a3bf7259d535c21b62f", - "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md deleted file mode 100644 index 87ac82d..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/escape-string-regexp/readme.md +++ /dev/null @@ -1,27 +0,0 @@ -# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) - -> Escape RegExp special characters - - -## Install - -``` -$ npm install --save escape-string-regexp -``` - - -## Usage - -```js -const escapeStringRegexp = require('escape-string-regexp'); - -const escapedString = escapeStringRegexp('how much $ for a unicorn?'); -//=> 'how much \$ for a unicorn\?' - -new RegExp(escapedString); -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js deleted file mode 100755 index e0956fc..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/cli.js +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var hasAnsi = require('./'); -var input = process.argv[2]; - -function stdin(cb) { - var ret = ''; - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function (data) { - ret += data; - }); - process.stdin.on('end', function () { - cb(ret); - }); -} - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ has-ansi ', - ' $ echo | has-ansi', - '', - 'Exits with code 0 if input has ANSI escape codes and 1 if not' - ].join('\n')); -} - -function init(data) { - process.exit(hasAnsi(data) ? 0 : 1); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - init(input); -} else { - stdin(init); -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js deleted file mode 100644 index 98fae06..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -var ansiRegex = require('ansi-regex'); -var re = new RegExp(ansiRegex().source); // remove the `g` flag -module.exports = re.test.bind(re); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js deleted file mode 100644 index 783c5c7..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function () { - return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; -}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json deleted file mode 100644 index 1bf938c..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "ansi-regex", - "version": "0.2.1", - "description": "Regular expression for matching ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-regex.git" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-regex/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-regex", - "_id": "ansi-regex@0.2.1", - "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "_from": "ansi-regex@>=0.2.0 <0.3.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md deleted file mode 100644 index ae876e7..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save ansi-regex -``` - - -## Usage - -```js -var ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - -*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json deleted file mode 100644 index 4628a1c..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "has-ansi", - "version": "0.1.0", - "description": "Check if a string has ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-ansi.git" - }, - "bin": { - "has-ansi": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "string", - "tty", - "escape", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern", - "has" - ], - "dependencies": { - "ansi-regex": "^0.2.0" - }, - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/has-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/has-ansi", - "_id": "has-ansi@0.1.0", - "_shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", - "_from": "has-ansi@>=0.1.0 <0.2.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", - "tarball": "http://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md deleted file mode 100644 index 0702212..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/has-ansi/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) - -> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save has-ansi -``` - - -## Usage - -```js -var hasAnsi = require('has-ansi'); - -hasAnsi('\u001b[4mcake\u001b[0m'); -//=> true - -hasAnsi('cake'); -//=> false -``` - - -## CLI - -```sh -$ npm install --global has-ansi -``` - -``` -$ has-ansi --help - -Usage - $ has-ansi - $ echo | has-ansi - -Exits with code 0 if input has ANSI escape codes and 1 if not -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js deleted file mode 100755 index 602ae00..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/cli.js +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var strip = require('./'); -var input = process.argv[2]; - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ strip-ansi > ', - ' $ cat | strip-ansi > ', - '', - 'Example', - ' $ strip-ansi unicorn.txt > unicorn-stripped.txt' - ].join('\n')); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - process.stdout.write(strip(data)); -}); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js deleted file mode 100644 index 099480f..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; -var ansiRegex = require('ansi-regex')(); - -module.exports = function (str) { - return typeof str === 'string' ? str.replace(ansiRegex, '') : str; -}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js deleted file mode 100644 index 783c5c7..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function () { - return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; -}; diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json deleted file mode 100644 index 1bf938c..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "ansi-regex", - "version": "0.2.1", - "description": "Regular expression for matching ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-regex.git" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-regex/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-regex", - "_id": "ansi-regex@0.2.1", - "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "_from": "ansi-regex@>=0.2.0 <0.3.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md deleted file mode 100644 index ae876e7..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save ansi-regex -``` - - -## Usage - -```js -var ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - -*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json deleted file mode 100644 index e490f3c..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "strip-ansi", - "version": "0.3.0", - "description": "Strip ANSI escape codes", - "license": "MIT", - "bin": { - "strip-ansi": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-ansi.git" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "ansi-regex": "^0.2.1" - }, - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-ansi", - "_id": "strip-ansi@0.3.0", - "_shasum": "25f48ea22ca79187f3174a4db8759347bb126220", - "_from": "strip-ansi@>=0.3.0 <0.4.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "25f48ea22ca79187f3174a4db8759347bb126220", - "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md deleted file mode 100644 index 5477079..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/strip-ansi/readme.md +++ /dev/null @@ -1,43 +0,0 @@ -# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save strip-ansi -``` - - -## Usage - -```js -var stripAnsi = require('strip-ansi'); - -stripAnsi('\x1b[4mcake\x1b[0m'); -//=> 'cake' -``` - - -## CLI - -```sh -$ npm install --global strip-ansi -``` - -```sh -$ strip-ansi --help - -Usage - $ strip-ansi > - $ cat | strip-ansi > - -Example - $ strip-ansi unicorn.txt > unicorn-stripped.txt -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js deleted file mode 100755 index 0617971..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/cli.js +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var supportsColor = require('./'); -var input = process.argv[2]; - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ supports-color', - '', - 'Exits with code 0 if color is supported and 1 if not' - ].join('\n')); -} - -if (!input || process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -process.exit(supportsColor ? 0 : 1); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js deleted file mode 100644 index 092d0ba..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/index.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (process.stdout && !process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - if (process.env.TERM === 'dumb') { - return false; - } - - if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { - return true; - } - - return false; -})(); diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json deleted file mode 100644 index 9af3fe7..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "supports-color", - "version": "0.2.0", - "description": "Detect whether a terminal supports color", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/supports-color.git" - }, - "bin": { - "supports-color": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "supports", - "capability", - "detect" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/supports-color/issues" - }, - "homepage": "https://github.com/sindresorhus/supports-color", - "_id": "supports-color@0.2.0", - "_shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", - "_from": "supports-color@>=0.2.0 <0.3.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", - "tarball": "http://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md deleted file mode 100644 index 7f07e5f..0000000 --- a/node_modules/pryjs/node_modules/chalk/node_modules/supports-color/readme.md +++ /dev/null @@ -1,44 +0,0 @@ -# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color) - -> Detect whether a terminal supports color - - -## Install - -```sh -$ npm install --save supports-color -``` - - -## Usage - -```js -var supportsColor = require('supports-color'); - -if (supportsColor) { - console.log('Terminal supports color'); -} -``` - -It obeys the `--color` and `--no-color` CLI flags. - - -## CLI - -```sh -$ npm install --global supports-color -``` - -```sh -$ supports-color --help - -Usage - $ supports-color - -# Exits with code 0 if color is supported and 1 if not -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pryjs/node_modules/chalk/package.json b/node_modules/pryjs/node_modules/chalk/package.json deleted file mode 100644 index a2907ac..0000000 --- a/node_modules/pryjs/node_modules/chalk/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "chalk", - "version": "0.5.1", - "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk.git" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - } - ], - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha", - "bench": "matcha benchmark.js" - }, - "files": [ - "index.js" - ], - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - }, - "devDependencies": { - "matcha": "^0.5.0", - "mocha": "*" - }, - "gitHead": "994758f01293f1fdcf63282e9917cb9f2cfbdaac", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "homepage": "https://github.com/sindresorhus/chalk", - "_id": "chalk@0.5.1", - "_shasum": "663b3a648b68b55d04690d49167aa837858f2174", - "_from": "chalk@>=0.5.1 <0.6.0", - "_npmVersion": "1.4.14", - "_npmUser": { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - }, - "dist": { - "shasum": "663b3a648b68b55d04690d49167aa837858f2174", - "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/chalk/readme.md b/node_modules/pryjs/node_modules/chalk/readme.md deleted file mode 100644 index 239c791..0000000 --- a/node_modules/pryjs/node_modules/chalk/readme.md +++ /dev/null @@ -1,175 +0,0 @@ -# chalk - -> Terminal string styling done right - -[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) -![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg) - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png) - - -## Why - -- Highly performant -- Doesn't extend String.prototype -- Expressive API -- Ability to nest styles -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by 1000+ modules](https://npmjs.org/browse/depended/chalk) - - -## Install - -```sh -$ npm install --save chalk -``` - - -## Usage - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log( chalk.blue('Hello world!') ); - -// combine styled and normal strings -console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); - -// compose multiple styles using the chainable API -console.log( chalk.blue.bgRed.bold('Hello world!') ); - -// pass in multiple arguments -console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); - -// nest styles -console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); - -// nest styles of the same type even (color, underline, background) -console.log( chalk.green('I am a green line ' + chalk.blue('with a blue substring') + ' that becomes green again!') ); -``` - -Easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - -Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). - -```js -var name = 'Sindre'; -console.log(chalk.green('Hello %s'), name); -//=> Hello Sindre -``` - - -## API - -### chalk.` - - -

%(title)s

- -''' - -DOC_HEADER_EXTERNALCSS = '''\ - - - - - %(title)s - - - - -

%(title)s

- -''' - -DOC_FOOTER = '''\ - - -''' - - -class HtmlFormatter(Formatter): - r""" - Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
-    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` - option. - - If the `linenos` option is set to ``"table"``, the ``
`` is
-    additionally wrapped inside a ```` which has one row and two
-    cells: one containing the line numbers and one containing the code.
-    Example:
-
-    .. sourcecode:: html
-
-        
-
- - -
-
1
-            2
-
-
def foo(bar):
-              pass
-            
-
- - (whitespace added to improve clarity). - - Wrapping can be disabled using the `nowrap` option. - - A list of lines can be specified using the `hl_lines` option to make these - lines highlighted (as of Pygments 0.11). - - With the `full` option, a complete HTML 4 document is output, including - the style definitions inside a `` - - -

%(title)s

- -''' - -DOC_HEADER_EXTERNALCSS = '''\ - - - - - %(title)s - - - - -

%(title)s

- -''' - -DOC_FOOTER = '''\ - - -''' - - -class HtmlFormatter(Formatter): - r""" - Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
-    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` - option. - - If the `linenos` option is set to ``"table"``, the ``
`` is
-    additionally wrapped inside a ```` which has one row and two
-    cells: one containing the line numbers and one containing the code.
-    Example:
-
-    .. sourcecode:: html
-
-        
-
- - -
-
1
-            2
-
-
def foo(bar):
-              pass
-            
-
- - (whitespace added to improve clarity). - - Wrapping can be disabled using the `nowrap` option. - - A list of lines can be specified using the `hl_lines` option to make these - lines highlighted (as of Pygments 0.11). - - With the `full` option, a complete HTML 4 document is output, including - the style definitions inside a `` - -{%- endif %} -{% endblock %} - -{% block header %} -
- -{% endblock %} - -{% block footer %} - -
{# closes "outerwrapper" div #} -{% endblock %} - -{% block sidebarrel %} -{% endblock %} - -{% block sidebarsourcelink %} -{% endblock %} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/bodybg.png deleted file mode 100644 index 46892b801ac1088cdb7091f230bcb0eec1bfbe85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51903 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 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/listitem.png deleted file mode 100644 index e45715f914df0b9ce5650cd81f826565d794bc6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRO!3HEZ#7tid5-9M9ECz~A24Tjhjus6-LG}_) zUsv|KjDqY+yxD&zFaw41JY5_^BrYc>NGv&UGh(5%v^3ic2_Tqf;9+ScrKuZn^uU2H zQyfn*9&-yU`CQ%jRM<_jbEVs=+4%-On`#az=vrO%C^ha<()jUzeq*EHImaYp10cwd vh@M+!5EQwitFh7Z?ulO_J-(9;uViOPP?5c=x_{|>pv?@Pu6{1-oD!M<&SgTz diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/logo.png deleted file mode 100644 index 2c1a24dc7dc7e8d989ff3c98eee2c233074e3c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26933 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
    iqU(V_fBwX^d}2|D=Bk$roABOZOF$hQ9i8_E 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 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t deleted file mode 100644 index 838782b..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/static/pygments14.css_t +++ /dev/null @@ -1,401 +0,0 @@ -/* - * pygments14.css - * ~~~~~~~~~~~~~~ - * - * Sphinx stylesheet -- pygments14 theme. Heavily copied from sphinx13. - * - * :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', - 'Verdana', sans-serif; - font-size: 14px; - text-align: center; - background-image: url(bodybg.png); - background-color: {{ theme_background }}; - color: black; - padding: 0; - /* - border-right: 1px solid {{ theme_border }}; - border-left: 1px solid {{ theme_border }}; - */ - - margin: 0 auto; - min-width: 780px; - max-width: 1080px; -} - -.outerwrapper { - background-image: url(docbg.png); - background-attachment: fixed; -} - -.pageheader { - text-align: left; - padding: 10px 15px; -} - -.pageheader ul { - float: right; - color: white; - list-style-type: none; - padding-left: 0; - margin-top: 40px; - margin-right: 10px; -} - -.pageheader li { - float: left; - margin: 0 0 0 10px; -} - -.pageheader li a { - border-radius: 3px; - padding: 8px 12px; - color: {{ theme_darkgray }}; - text-shadow: 0 0 5px rgba(0, 0, 0, 0.2); -} - -.pageheader li a:hover { - background-color: {{ theme_yellow }}; - color: black; - text-shadow: none; -} - -div.document { - text-align: left; - /*border-left: 1em solid {{ theme_lightyellow }};*/ -} - -div.bodywrapper { - margin: 0 12px 0 240px; - background-color: white; -/* border-right: 1px solid {{ theme_border }}; */ -} - -div.body { - margin: 0; - padding: 0.5em 20px 20px 20px; -} - -div.related { - font-size: 1em; - color: {{ theme_darkgray }}; -} - -div.related ul { - background-image: url(relbg.png); - background-repeat: repeat-y; - background-color: {{ theme_yellow }}; - height: 1.9em; - /* - border-top: 1px solid {{ theme_border }}; - border-bottom: 1px solid {{ theme_border }}; - */ -} - -div.related ul li { - margin: 0 5px 0 0; - padding: 0; - float: left; -} - -div.related ul li.right { - float: right; - margin-right: 5px; -} - -div.related ul li a { - margin: 0; - padding: 0 5px 0 5px; - line-height: 1.75em; - color: {{ theme_darkgray }}; - /*text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5);*/ -} - -div.related ul li a:hover { - text-decoration: underline; - text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); -} - -div.sphinxsidebarwrapper { - position: relative; - top: 0px; - padding: 0; -} - -div.sphinxsidebar { - margin: 0; - padding: 0 0px 15px 15px; - width: 210px; - float: left; - font-size: 1em; - text-align: left; -} - -div.sphinxsidebar .logo { - font-size: 1.8em; - color: #666; - font-weight: 300; - text-align: center; -} - -div.sphinxsidebar .logo img { - vertical-align: middle; -} - -div.sphinxsidebar input { - border: 1px solid #aaa; - font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', - 'Verdana', sans-serif; - font-size: 1em; -} - -div.sphinxsidebar h3 { - font-size: 1.5em; - /* border-top: 1px solid {{ theme_border }}; */ - margin-top: 1em; - margin-bottom: 0.5em; - padding-top: 0.5em; -} - -div.sphinxsidebar h4 { - font-size: 1.2em; - margin-bottom: 0; -} - -div.sphinxsidebar h3, div.sphinxsidebar h4 { - margin-right: -15px; - margin-left: -15px; - padding-right: 14px; - padding-left: 14px; - color: #333; - font-weight: 300; - /*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/ -} - -div.sphinxsidebarwrapper > h3:first-child { - margin-top: 0.5em; - border: none; -} - -div.sphinxsidebar h3 a { - color: #333; -} - -div.sphinxsidebar ul { - color: #444; - margin-top: 7px; - padding: 0; - line-height: 130%; -} - -div.sphinxsidebar ul ul { - margin-left: 20px; - list-style-image: url(listitem.png); -} - -div.footer { - color: {{ theme_darkgray }}; - text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8); - padding: 2em; - text-align: center; - clear: both; - font-size: 0.8em; -} - -/* -- body styles ----------------------------------------------------------- */ - -p { - margin: 0.8em 0 0.5em 0; -} - -a { - color: {{ theme_darkgreen }}; - text-decoration: none; -} - -a:hover { - color: {{ theme_darkyellow }}; -} - -div.body a { - text-decoration: underline; -} - -h1 { - margin: 10px 0 0 0; - font-size: 2.4em; - color: {{ theme_darkgray }}; - font-weight: 300; -} - -h2 { - margin: 1.em 0 0.2em 0; - font-size: 1.5em; - font-weight: 300; - padding: 0; - color: {{ theme_darkgreen }}; -} - -h3 { - margin: 1em 0 -0.3em 0; - font-size: 1.3em; - font-weight: 300; -} - -div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { - text-decoration: none; -} - -div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, div.body h4 a tt, div.body h5 a tt, div.body h6 a tt { - color: {{ theme_darkgreen }} !important; - font-size: inherit !important; -} - -a.headerlink { - color: {{ theme_green }} !important; - font-size: 12px; - margin-left: 6px; - padding: 0 4px 0 4px; - text-decoration: none !important; - float: right; -} - -a.headerlink:hover { - background-color: #ccc; - color: white!important; -} - -cite, code, tt { - font-family: 'Consolas', 'DejaVu Sans Mono', - 'Bitstream Vera Sans Mono', monospace; - font-size: 14px; - letter-spacing: -0.02em; -} - -tt { - background-color: #f2f2f2; - border: 1px solid #ddd; - border-radius: 2px; - color: #333; - padding: 1px; -} - -tt.descname, tt.descclassname, tt.xref { - border: 0; -} - -hr { - border: 1px solid #abc; - margin: 2em; -} - -a tt { - border: 0; - color: {{ theme_darkgreen }}; -} - -a tt:hover { - color: {{ theme_darkyellow }}; -} - -pre { - font-family: 'Consolas', 'DejaVu Sans Mono', - 'Bitstream Vera Sans Mono', monospace; - font-size: 13px; - letter-spacing: 0.015em; - line-height: 120%; - padding: 0.5em; - border: 1px solid #ccc; - border-radius: 2px; - background-color: #f8f8f8; -} - -pre a { - color: inherit; - text-decoration: underline; -} - -td.linenos pre { - padding: 0.5em 0; -} - -div.quotebar { - background-color: #f8f8f8; - max-width: 250px; - float: right; - padding: 0px 7px; - border: 1px solid #ccc; - margin-left: 1em; -} - -div.topic { - background-color: #f8f8f8; -} - -table { - border-collapse: collapse; - margin: 0 -0.5em 0 -0.5em; -} - -table td, table th { - padding: 0.2em 0.5em 0.2em 0.5em; -} - -div.admonition, div.warning { - font-size: 0.9em; - margin: 1em 0 1em 0; - border: 1px solid #86989B; - border-radius: 2px; - background-color: #f7f7f7; - padding: 0; -} - -div.admonition p, div.warning p { - margin: 0.5em 1em 0.5em 1em; - padding: 0; -} - -div.admonition pre, div.warning pre { - margin: 0.4em 1em 0.4em 1em; -} - -div.admonition p.admonition-title, -div.warning p.admonition-title { - margin-top: 1em; - padding-top: 0.5em; - font-weight: bold; -} - -div.warning { - border: 1px solid #940000; -/* background-color: #FFCCCF;*/ -} - -div.warning p.admonition-title { -} - -div.admonition ul, div.admonition ol, -div.warning ul, div.warning ol { - margin: 0.1em 0.5em 0.5em 3em; - padding: 0; -} - -.viewcode-back { - font-family: {{ theme_font }}, 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', - 'Verdana', sans-serif; -} - -div.viewcode-block:target { - background-color: #f4debf; - border-top: 1px solid #ac9; - border-bottom: 1px solid #ac9; -} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf deleted file mode 100644 index fffe66d..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/_themes/pygments14/theme.conf +++ /dev/null @@ -1,15 +0,0 @@ -[theme] -inherit = basic -stylesheet = pygments14.css -pygments_style = friendly - -[options] -green = #66b55e -darkgreen = #36852e -darkgray = #666666 -border = #66b55e -yellow = #f4cd00 -darkyellow = #d4ad00 -lightyellow = #fffbe3 -background = #f9f9f9 -font = PT Sans diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py deleted file mode 100644 index 864ec7a..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/conf.py +++ /dev/null @@ -1,249 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Pygments documentation build configuration file, created by -# sphinx-quickstart on Sat Jan 18 17:07:37 2014. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('..')) - -import pygments - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments.sphinxext'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Pygments' -copyright = u'2014, Georg Brandl' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = pygments.__version__ -# The full version, including alpha/beta/rc tags. -release = version - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -#pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'pygments14' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -html_theme_path = ['_themes'] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -html_favicon = 'favicon.ico' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -html_sidebars = {'index': 'indexsidebar.html', - 'docs/*': 'docssidebar.html'} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'Pygmentsdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'Pygments.tex', u'Pygments Documentation', - u'Georg Brandl', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'pygments', u'Pygments Documentation', - [u'Georg Brandl'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'Pygments', u'Pygments Documentation', - u'Georg Brandl', 'Pygments', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# Example configuration for intersphinx: refer to the Python standard library. -#intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst deleted file mode 100644 index 123a464..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/api.rst +++ /dev/null @@ -1,316 +0,0 @@ -.. -*- mode: rst -*- - -===================== -The full Pygments API -===================== - -This page describes the Pygments API. - -High-level API -============== - -.. module:: pygments - -Functions from the :mod:`pygments` module: - -.. function:: lex(code, lexer) - - Lex `code` with the `lexer` (must be a `Lexer` instance) - and return an iterable of tokens. Currently, this only calls - `lexer.get_tokens()`. - -.. function:: format(tokens, formatter, outfile=None) - - Format a token stream (iterable of tokens) `tokens` with the - `formatter` (must be a `Formatter` instance). The result is - written to `outfile`, or if that is ``None``, returned as a - string. - -.. function:: highlight(code, lexer, formatter, outfile=None) - - This is the most high-level highlighting function. - It combines `lex` and `format` in one function. - - -.. module:: pygments.lexers - -Functions from :mod:`pygments.lexers`: - -.. function:: get_lexer_by_name(alias, **options) - - Return an instance of a `Lexer` subclass that has `alias` in its - aliases list. The lexer is given the `options` at its - instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is - found. - -.. function:: get_lexer_for_filename(fn, **options) - - Return a `Lexer` subclass instance that has a filename pattern - matching `fn`. The lexer is given the `options` at its - instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no lexer for that filename - is found. - -.. function:: get_lexer_for_mimetype(mime, **options) - - Return a `Lexer` subclass instance that has `mime` in its mimetype - list. The lexer is given the `options` at its instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if not lexer for that mimetype - is found. - -.. function:: guess_lexer(text, **options) - - Return a `Lexer` subclass instance that's guessed from the text in - `text`. For that, the :meth:`.analyse_text()` method of every known lexer - class is called with the text as argument, and the lexer which returned the - highest value will be instantiated and returned. - - :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can - handle the content. - -.. function:: guess_lexer_for_filename(filename, text, **options) - - As :func:`guess_lexer()`, but only lexers which have a pattern in `filenames` - or `alias_filenames` that matches `filename` are taken into consideration. - - :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can - handle the content. - -.. function:: get_all_lexers() - - Return an iterable over all registered lexers, yielding tuples in the - format:: - - (longname, tuple of aliases, tuple of filename patterns, tuple of mimetypes) - - .. versionadded:: 0.6 - - -.. module:: pygments.formatters - -Functions from :mod:`pygments.formatters`: - -.. function:: get_formatter_by_name(alias, **options) - - Return an instance of a :class:`.Formatter` subclass that has `alias` in its - aliases list. The formatter is given the `options` at its instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no formatter with that - alias is found. - -.. function:: get_formatter_for_filename(fn, **options) - - Return a :class:`.Formatter` subclass instance that has a filename pattern - matching `fn`. The formatter is given the `options` at its instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename - is found. - - -.. module:: pygments.styles - -Functions from :mod:`pygments.styles`: - -.. function:: get_style_by_name(name) - - Return a style class by its short name. The names of the builtin styles - are listed in :data:`pygments.styles.STYLE_MAP`. - - Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is - found. - -.. function:: get_all_styles() - - Return an iterable over all registered styles, yielding their names. - - .. versionadded:: 0.6 - - -.. module:: pygments.lexer - -Lexers -====== - -The base lexer class from which all lexers are derived is: - -.. class:: Lexer(**options) - - The constructor takes a \*\*keywords dictionary of options. - Every subclass must first process its own options and then call - the `Lexer` constructor, since it processes the `stripnl`, - `stripall` and `tabsize` options. - - An example looks like this: - - .. sourcecode:: python - - def __init__(self, **options): - self.compress = options.get('compress', '') - Lexer.__init__(self, **options) - - As these options must all be specifiable as strings (due to the - command line usage), there are various utility functions - available to help with that, see `Option processing`_. - - .. method:: get_tokens(text) - - This method is the basic interface of a lexer. It is called by - the `highlight()` function. It must process the text and return an - iterable of ``(tokentype, value)`` pairs from `text`. - - Normally, you don't need to override this method. The default - implementation processes the `stripnl`, `stripall` and `tabsize` - options and then yields all tokens from `get_tokens_unprocessed()`, - with the ``index`` dropped. - - .. method:: get_tokens_unprocessed(text) - - This method should process the text and return an iterable of - ``(index, tokentype, value)`` tuples where ``index`` is the starting - position of the token within the input text. - - This method must be overridden by subclasses. - - .. staticmethod:: analyse_text(text) - - A static method which is called for lexer guessing. It should analyse - the text and return a float in the range from ``0.0`` to ``1.0``. - If it returns ``0.0``, the lexer will not be selected as the most - probable one, if it returns ``1.0``, it will be selected immediately. - - .. note:: You don't have to add ``@staticmethod`` to the definition of - this method, this will be taken care of by the Lexer's metaclass. - - For a list of known tokens have a look at the :doc:`tokens` page. - - A lexer also can have the following attributes (in fact, they are mandatory - except `alias_filenames`) that are used by the builtin lookup mechanism. - - .. attribute:: name - - Full name for the lexer, in human-readable form. - - .. attribute:: aliases - - A list of short, unique identifiers that can be used to lookup - the lexer from a list, e.g. using `get_lexer_by_name()`. - - .. attribute:: filenames - - A list of `fnmatch` patterns that match filenames which contain - content for this lexer. The patterns in this list should be unique among - all lexers. - - .. attribute:: alias_filenames - - A list of `fnmatch` patterns that match filenames which may or may not - contain content for this lexer. This list is used by the - :func:`.guess_lexer_for_filename()` function, to determine which lexers - are then included in guessing the correct one. That means that - e.g. every lexer for HTML and a template language should include - ``\*.html`` in this list. - - .. attribute:: mimetypes - - A list of MIME types for content that can be lexed with this - lexer. - - -.. module:: pygments.formatter - -Formatters -========== - -A formatter is derived from this class: - - -.. class:: Formatter(**options) - - As with lexers, this constructor processes options and then must call the - base class :meth:`__init__`. - - The :class:`Formatter` class recognizes the options `style`, `full` and - `title`. It is up to the formatter class whether it uses them. - - .. method:: get_style_defs(arg='') - - This method must return statements or declarations suitable to define - the current style for subsequent highlighted text (e.g. CSS classes - in the `HTMLFormatter`). - - The optional argument `arg` can be used to modify the generation and - is formatter dependent (it is standardized because it can be given on - the command line). - - This method is called by the ``-S`` :doc:`command-line option `, - the `arg` is then given by the ``-a`` option. - - .. method:: format(tokensource, outfile) - - This method must format the tokens from the `tokensource` iterable and - write the formatted version to the file object `outfile`. - - Formatter options can control how exactly the tokens are converted. - - .. versionadded:: 0.7 - A formatter must have the following attributes that are used by the - builtin lookup mechanism. - - .. attribute:: name - - Full name for the formatter, in human-readable form. - - .. attribute:: aliases - - A list of short, unique identifiers that can be used to lookup - the formatter from a list, e.g. using :func:`.get_formatter_by_name()`. - - .. attribute:: filenames - - A list of :mod:`fnmatch` patterns that match filenames for which this - formatter can produce output. The patterns in this list should be unique - among all formatters. - - -.. module:: pygments.util - -Option processing -================= - -The :mod:`pygments.util` module has some utility functions usable for option -processing: - -.. exception:: OptionError - - This exception will be raised by all option processing functions if - the type or value of the argument is not correct. - -.. function:: get_bool_opt(options, optname, default=None) - - Interpret the key `optname` from the dictionary `options` as a boolean and - return it. Return `default` if `optname` is not in `options`. - - The valid string values for ``True`` are ``1``, ``yes``, ``true`` and - ``on``, the ones for ``False`` are ``0``, ``no``, ``false`` and ``off`` - (matched case-insensitively). - -.. function:: get_int_opt(options, optname, default=None) - - As :func:`get_bool_opt`, but interpret the value as an integer. - -.. function:: get_list_opt(options, optname, default=None) - - If the key `optname` from the dictionary `options` is a string, - split it at whitespace and return it. If it is already a list - or a tuple, it is returned as a list. - -.. function:: get_choice_opt(options, optname, allowed, default=None) - - If the key `optname` from the dictionary is not in the sequence - `allowed`, raise an error, otherwise return it. - - .. versionadded:: 0.8 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst deleted file mode 100644 index f8373f0..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/authors.rst +++ /dev/null @@ -1,4 +0,0 @@ -Full contributor list -===================== - -.. include:: ../../AUTHORS diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst deleted file mode 100644 index f264cab..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/changelog.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../CHANGES diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst deleted file mode 100644 index bf0177a..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/cmdline.rst +++ /dev/null @@ -1,145 +0,0 @@ -.. -*- mode: rst -*- - -====================== -Command Line Interface -====================== - -You can use Pygments from the shell, provided you installed the -:program:`pygmentize` script:: - - $ pygmentize test.py - print "Hello World" - -will print the file test.py to standard output, using the Python lexer -(inferred from the file name extension) and the terminal formatter (because -you didn't give an explicit formatter name). - -If you want HTML output:: - - $ pygmentize -f html -l python -o test.html test.py - -As you can see, the -l option explicitly selects a lexer. As seen above, if you -give an input file name and it has an extension that Pygments recognizes, you can -omit this option. - -The ``-o`` option gives an output file name. If it is not given, output is -written to stdout. - -The ``-f`` option selects a formatter (as with ``-l``, it can also be omitted -if an output file name is given and has a supported extension). -If no output file name is given and ``-f`` is omitted, the -:class:`.TerminalFormatter` is used. - -The above command could therefore also be given as:: - - $ pygmentize -o test.html test.py - -To create a full HTML document, including line numbers and stylesheet (using the -"emacs" style), highlighting the Python file ``test.py`` to ``test.html``:: - - $ pygmentize -O full,style=emacs -o test.html test.py - - -Options and filters -------------------- - -Lexer and formatter options can be given using the ``-O`` option:: - - $ pygmentize -f html -O style=colorful,linenos=1 -l python test.py - -Be sure to enclose the option string in quotes if it contains any special shell -characters, such as spaces or expansion wildcards like ``*``. If an option -expects a list value, separate the list entries with spaces (you'll have to -quote the option value in this case too, so that the shell doesn't split it). - -Since the ``-O`` option argument is split at commas and expects the split values -to be of the form ``name=value``, you can't give an option value that contains -commas or equals signs. Therefore, an option ``-P`` is provided (as of Pygments -0.9) that works like ``-O`` but can only pass one option per ``-P``. Its value -can then contain all characters:: - - $ pygmentize -P "heading=Pygments, the Python highlighter" ... - -Filters are added to the token stream using the ``-F`` option:: - - $ pygmentize -f html -l pascal -F keywordcase:case=upper main.pas - -As you see, options for the filter are given after a colon. As for ``-O``, the -filter name and options must be one shell word, so there may not be any spaces -around the colon. - - -Generating styles ------------------ - -Formatters normally don't output full style information. For example, the HTML -formatter by default only outputs ```` tags with ``class`` attributes. -Therefore, there's a special ``-S`` option for generating style definitions. -Usage is as follows:: - - $ pygmentize -f html -S colorful -a .syntax - -generates a CSS style sheet (because you selected the HTML formatter) for -the "colorful" style prepending a ".syntax" selector to all style rules. - -For an explanation what ``-a`` means for :doc:`a particular formatter -`, look for the `arg` argument for the formatter's -:meth:`.get_style_defs()` method. - - -Getting lexer names -------------------- - -.. versionadded:: 1.0 - -The ``-N`` option guesses a lexer name for a given filename, so that :: - - $ pygmentize -N setup.py - -will print out ``python``. It won't highlight anything yet. If no specific -lexer is known for that filename, ``text`` is printed. - - -Getting help ------------- - -The ``-L`` option lists lexers, formatters, along with their short -names and supported file name extensions, styles and filters. If you want to see -only one category, give it as an argument:: - - $ pygmentize -L filters - -will list only all installed filters. - -The ``-H`` option will give you detailed information (the same that can be found -in this documentation) about a lexer, formatter or filter. Usage is as follows:: - - $ pygmentize -H formatter html - -will print the help for the HTML formatter, while :: - - $ pygmentize -H lexer python - -will print the help for the Python lexer, etc. - - -A note on encodings -------------------- - -.. versionadded:: 0.9 - -Pygments tries to be smart regarding encodings in the formatting process: - -* If you give an ``encoding`` option, it will be used as the input and - output encoding. - -* If you give an ``outencoding`` option, it will override ``encoding`` - as the output encoding. - -* If you don't give an encoding and have given an output file, the default - encoding for lexer and formatter is ``latin1`` (which will pass through - all non-ASCII characters). - -* If you don't give an encoding and haven't given an output file (that means - output is written to the console), the default encoding for lexer and - formatter is the terminal encoding (``sys.stdout.encoding``). diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst deleted file mode 100644 index bc399a6..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filterdevelopment.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. -*- mode: rst -*- - -===================== -Write your own filter -===================== - -.. versionadded:: 0.7 - -Writing own filters is very easy. All you have to do is to subclass -the `Filter` class and override the `filter` method. Additionally a -filter is instanciated with some keyword arguments you can use to -adjust the behavior of your filter. - - -Subclassing Filters -=================== - -As an example, we write a filter that converts all `Name.Function` tokens -to normal `Name` tokens to make the output less colorful. - -.. sourcecode:: python - - from pygments.util import get_bool_opt - from pygments.token import Name - from pygments.filter import Filter - - class UncolorFilter(Filter): - - def __init__(self, **options): - Filter.__init__(self, **options) - self.class_too = get_bool_opt(options, 'classtoo') - - def filter(self, lexer, stream): - for ttype, value in stream: - if ttype is Name.Function or (self.class_too and - ttype is Name.Class): - ttype = Name - yield ttype, value - -Some notes on the `lexer` argument: that can be quite confusing since it doesn't -need to be a lexer instance. If a filter was added by using the `add_filter()` -function of lexers, that lexer is registered for the filter. In that case -`lexer` will refer to the lexer that has registered the filter. It *can* be used -to access options passed to a lexer. Because it could be `None` you always have -to check for that case if you access it. - - -Using a decorator -================= - -You can also use the `simplefilter` decorator from the `pygments.filter` module: - -.. sourcecode:: python - - from pygments.util import get_bool_opt - from pygments.token import Name - from pygments.filter import simplefilter - - - @simplefilter - def uncolor(lexer, stream, options): - class_too = get_bool_opt(options, 'classtoo') - for ttype, value in stream: - if ttype is Name.Function or (class_too and - ttype is Name.Class): - ttype = Name - yield ttype, value - -The decorator automatically subclasses an internal filter class and uses the -decorated function for filtering. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst deleted file mode 100644 index ff2519a..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/filters.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. -*- mode: rst -*- - -======= -Filters -======= - -.. versionadded:: 0.7 - -You can filter token streams coming from lexers to improve or annotate the -output. For example, you can highlight special words in comments, convert -keywords to upper or lowercase to enforce a style guide etc. - -To apply a filter, you can use the `add_filter()` method of a lexer: - -.. sourcecode:: pycon - - >>> from pygments.lexers import PythonLexer - >>> l = PythonLexer() - >>> # add a filter given by a string and options - >>> l.add_filter('codetagify', case='lower') - >>> l.filters - [] - >>> from pygments.filters import KeywordCaseFilter - >>> # or give an instance - >>> l.add_filter(KeywordCaseFilter(case='lower')) - -The `add_filter()` method takes keyword arguments which are forwarded to -the constructor of the filter. - -To get a list of all registered filters by name, you can use the -`get_all_filters()` function from the `pygments.filters` module that returns an -iterable for all known filters. - -If you want to write your own filter, have a look at :doc:`Write your own filter -`. - - -Builtin Filters -=============== - -.. pygmentsdoc:: filters diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst deleted file mode 100644 index 2bfac05..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatterdevelopment.rst +++ /dev/null @@ -1,169 +0,0 @@ -.. -*- mode: rst -*- - -======================== -Write your own formatter -======================== - -As well as creating :doc:`your own lexer `, writing a new -formatter for Pygments is easy and straightforward. - -A formatter is a class that is initialized with some keyword arguments (the -formatter options) and that must provides a `format()` method. -Additionally a formatter should provide a `get_style_defs()` method that -returns the style definitions from the style in a form usable for the -formatter's output format. - - -Quickstart -========== - -The most basic formatter shipped with Pygments is the `NullFormatter`. It just -sends the value of a token to the output stream: - -.. sourcecode:: python - - from pygments.formatter import Formatter - - class NullFormatter(Formatter): - def format(self, tokensource, outfile): - for ttype, value in tokensource: - outfile.write(value) - -As you can see, the `format()` method is passed two parameters: `tokensource` -and `outfile`. The first is an iterable of ``(token_type, value)`` tuples, -the latter a file like object with a `write()` method. - -Because the formatter is that basic it doesn't overwrite the `get_style_defs()` -method. - - -Styles -====== - -Styles aren't instantiated but their metaclass provides some class functions -so that you can access the style definitions easily. - -Styles are iterable and yield tuples in the form ``(ttype, d)`` where `ttype` -is a token and `d` is a dict with the following keys: - -``'color'`` - Hexadecimal color value (eg: ``'ff0000'`` for red) or `None` if not - defined. - -``'bold'`` - `True` if the value should be bold - -``'italic'`` - `True` if the value should be italic - -``'underline'`` - `True` if the value should be underlined - -``'bgcolor'`` - Hexadecimal color value for the background (eg: ``'eeeeeee'`` for light - gray) or `None` if not defined. - -``'border'`` - Hexadecimal color value for the border (eg: ``'0000aa'`` for a dark - blue) or `None` for no border. - -Additional keys might appear in the future, formatters should ignore all keys -they don't support. - - -HTML 3.2 Formatter -================== - -For an more complex example, let's implement a HTML 3.2 Formatter. We don't -use CSS but inline markup (````, ````, etc). Because this isn't good -style this formatter isn't in the standard library ;-) - -.. sourcecode:: python - - from pygments.formatter import Formatter - - class OldHtmlFormatter(Formatter): - - def __init__(self, **options): - Formatter.__init__(self, **options) - - # create a dict of (start, end) tuples that wrap the - # value of a token so that we can use it in the format - # method later - self.styles = {} - - # we iterate over the `_styles` attribute of a style item - # that contains the parsed style values. - for token, style in self.style: - start = end = '' - # a style item is a tuple in the following form: - # colors are readily specified in hex: 'RRGGBB' - if style['color']: - start += '' % style['color'] - end = '' + end - if style['bold']: - start += '' - end = '' + end - if style['italic']: - start += '' - end = '' + end - if style['underline']: - start += '' - end = '' + end - self.styles[token] = (start, end) - - def format(self, tokensource, outfile): - # lastval is a string we use for caching - # because it's possible that an lexer yields a number - # of consecutive tokens with the same token type. - # to minimize the size of the generated html markup we - # try to join the values of same-type tokens here - lastval = '' - lasttype = None - - # wrap the whole output with
    -            outfile.write('
    ')
    -
    -            for ttype, value in tokensource:
    -                # if the token type doesn't exist in the stylemap
    -                # we try it with the parent of the token type
    -                # eg: parent of Token.Literal.String.Double is
    -                # Token.Literal.String
    -                while ttype not in self.styles:
    -                    ttype = ttype.parent
    -                if ttype == lasttype:
    -                    # the current token type is the same of the last
    -                    # iteration. cache it
    -                    lastval += value
    -                else:
    -                    # not the same token as last iteration, but we
    -                    # have some data in the buffer. wrap it with the
    -                    # defined style and write it to the output file
    -                    if lastval:
    -                        stylebegin, styleend = self.styles[lasttype]
    -                        outfile.write(stylebegin + lastval + styleend)
    -                    # set lastval/lasttype to current values
    -                    lastval = value
    -                    lasttype = ttype
    -
    -            # if something is left in the buffer, write it to the
    -            # output file, then close the opened 
     tag
    -            if lastval:
    -                stylebegin, styleend = self.styles[lasttype]
    -                outfile.write(stylebegin + lastval + styleend)
    -            outfile.write('
    \n') - -The comments should explain it. Again, this formatter doesn't override the -`get_style_defs()` method. If we would have used CSS classes instead of -inline HTML markup, we would need to generate the CSS first. For that -purpose the `get_style_defs()` method exists: - - -Generating Style Definitions -============================ - -Some formatters like the `LatexFormatter` and the `HtmlFormatter` don't -output inline markup but reference either macros or css classes. Because -the definitions of those are not part of the output, the `get_style_defs()` -method exists. It is passed one parameter (if it's used and how it's used -is up to the formatter) and has to return a string or ``None``. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst deleted file mode 100644 index 9e7074e..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/formatters.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. -*- mode: rst -*- - -==================== -Available formatters -==================== - -This page lists all builtin formatters. - -Common options -============== - -All formatters support these options: - -`encoding` - If given, must be an encoding name (such as ``"utf-8"``). This will - be used to convert the token strings (which are Unicode strings) - to byte strings in the output (default: ``None``). - It will also be written in an encoding declaration suitable for the - document format if the `full` option is given (e.g. a ``meta - content-type`` directive in HTML or an invocation of the `inputenc` - package in LaTeX). - - If this is ``""`` or ``None``, Unicode strings will be written - to the output file, which most file-like objects do not support. - For example, `pygments.highlight()` will return a Unicode string if - called with no `outfile` argument and a formatter that has `encoding` - set to ``None`` because it uses a `StringIO.StringIO` object that - supports Unicode arguments to `write()`. Using a regular file object - wouldn't work. - - .. versionadded:: 0.6 - -`outencoding` - When using Pygments from the command line, any `encoding` option given is - passed to the lexer and the formatter. This is sometimes not desirable, - for example if you want to set the input encoding to ``"guess"``. - Therefore, `outencoding` has been introduced which overrides `encoding` - for the formatter if given. - - .. versionadded:: 0.7 - - -Formatter classes -================= - -All these classes are importable from :mod:`pygments.formatters`. - -.. pygmentsdoc:: formatters diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst deleted file mode 100644 index 30d5c08..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/index.rst +++ /dev/null @@ -1,66 +0,0 @@ -Pygments documentation -====================== - -**Starting with Pygments** - -.. toctree:: - :maxdepth: 1 - - ../download - quickstart - cmdline - -**Builtin components** - -.. toctree:: - :maxdepth: 1 - - lexers - filters - formatters - styles - -**Reference** - -.. toctree:: - :maxdepth: 1 - - unicode - tokens - api - -**Hacking for Pygments** - -.. toctree:: - :maxdepth: 1 - - lexerdevelopment - formatterdevelopment - filterdevelopment - plugins - -**Hints and tricks** - -.. toctree:: - :maxdepth: 1 - - rstdirective - moinmoin - java - integrate - -**About Pygments** - -.. toctree:: - :maxdepth: 1 - - changelog - authors - - -If you find bugs or have suggestions for the documentation, please look -:ref:`here ` for info on how to contact the team. - -.. XXX You can download an offline version of this documentation from the - :doc:`download page `. - diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst deleted file mode 100644 index 03fc268..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/integrate.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. -*- mode: rst -*- - -=================================== -Using Pygments in various scenarios -=================================== - -PyGtk ------ - -Armin has written a piece of sample code that shows how to create a Gtk -`TextBuffer` object containing Pygments-highlighted text. - -See the article here: http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-gtk-rendering/ - -Wordpress ---------- - -He also has a snippet that shows how to use Pygments in WordPress: - -http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-in-wordpress/ - -Markdown --------- - -Since Pygments 0.9, the distribution ships Markdown_ preprocessor sample code -that uses Pygments to render source code in -:file:`external/markdown-processor.py`. You can copy and adapt it to your -liking. - -.. _Markdown: http://www.freewisdom.org/projects/python-markdown/ - -TextMate --------- - -Antonio Cangiano has created a Pygments bundle for TextMate that allows to -colorize code via a simple menu option. It can be found here_. - -.. _here: http://antoniocangiano.com/2008/10/28/pygments-textmate-bundle/ - -Bash completion ---------------- - -The source distribution contains a file ``external/pygments.bashcomp`` that -sets up completion for the ``pygmentize`` command in bash. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst deleted file mode 100644 index 5eb6196..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/java.rst +++ /dev/null @@ -1,70 +0,0 @@ -===================== -Use Pygments in Java -===================== - -Thanks to `Jython `__ it is possible to use Pygments in -Java. - -This page is a simple tutorial to get an idea of how this is working. You can -then look at the `Jython documentation `__ for more -advanced use. - -Since version 1.5, Pygments is deployed on `Maven Central -`__ as a JAR so is Jython -which makes it a lot easier to create the Java project. - -Here is an example of a `Maven `__ ``pom.xml`` file for a -project running Pygments: - -.. sourcecode:: xml - - - - - 4.0.0 - example - example - 1.0-SNAPSHOT - - - org.python - jython-standalone - 2.5.3 - - - org.pygments - pygments - 1.5 - runtime - - - - -The following Java example: - -.. sourcecode:: java - - PythonInterpreter interpreter = new PythonInterpreter(); - - // Set a variable with the content you want to work with - interpreter.set("code", code); - - // Simple use Pygments as you would in Python - interpreter.exec("from pygments import highlight\n" - + "from pygments.lexers import PythonLexer\n" - + "from pygments.formatters import HtmlFormatter\n" - + "\nresult = highlight(code, PythonLexer(), HtmlFormatter())"); - - // Get the result that has been set in a variable - System.out.println(interpreter.get("result", String.class)); - -will print something like: - -.. sourcecode:: html - -
    -
    print "Hello World"
    -
    diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst deleted file mode 100644 index eab1306..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexerdevelopment.rst +++ /dev/null @@ -1,602 +0,0 @@ -.. -*- mode: rst -*- - -==================== -Write your own lexer -==================== - -If a lexer for your favorite language is missing in the Pygments package, you can -easily write your own and extend Pygments. - -All you need can be found inside the :mod:`pygments.lexer` module. As you can -read in the :doc:`API documentation `, a lexer is a class that is -initialized with some keyword arguments (the lexer options) and that provides a -:meth:`.get_tokens_unprocessed()` method which is given a string or unicode -object with the data to parse. - -The :meth:`.get_tokens_unprocessed()` method must return an iterator or iterable -containing tuples in the form ``(index, token, value)``. Normally you don't need -to do this since there are numerous base lexers you can subclass. - - -RegexLexer -========== - -A very powerful (but quite easy to use) lexer is the :class:`RegexLexer`. This -lexer base class allows you to define lexing rules in terms of *regular -expressions* for different *states*. - -States are groups of regular expressions that are matched against the input -string at the *current position*. If one of these expressions matches, a -corresponding action is performed (normally yielding a token with a specific -type), the current position is set to where the last match ended and the -matching process continues with the first regex of the current state. - -Lexer states are kept in a state stack: each time a new state is entered, the -new state is pushed onto the stack. The most basic lexers (like the -`DiffLexer`) just need one state. - -Each state is defined as a list of tuples in the form (`regex`, `action`, -`new_state`) where the last item is optional. In the most basic form, `action` -is a token type (like `Name.Builtin`). That means: When `regex` matches, emit a -token with the match text and type `tokentype` and push `new_state` on the state -stack. If the new state is ``'#pop'``, the topmost state is popped from the -stack instead. (To pop more than one state, use ``'#pop:2'`` and so on.) -``'#push'`` is a synonym for pushing the current state on the -stack. - -The following example shows the `DiffLexer` from the builtin lexers. Note that -it contains some additional attributes `name`, `aliases` and `filenames` which -aren't required for a lexer. They are used by the builtin lexer lookup -functions. - -.. sourcecode:: python - - from pygments.lexer import RegexLexer - from pygments.token import * - - class DiffLexer(RegexLexer): - name = 'Diff' - aliases = ['diff'] - filenames = ['*.diff'] - - tokens = { - 'root': [ - (r' .*\n', Text), - (r'\+.*\n', Generic.Inserted), - (r'-.*\n', Generic.Deleted), - (r'@.*\n', Generic.Subheading), - (r'Index.*\n', Generic.Heading), - (r'=.*\n', Generic.Heading), - (r'.*\n', Text), - ] - } - -As you can see this lexer only uses one state. When the lexer starts scanning -the text, it first checks if the current character is a space. If this is true -it scans everything until newline and returns the parsed data as `Text` token. - -If this rule doesn't match, it checks if the current char is a plus sign. And -so on. - -If no rule matches at the current position, the current char is emitted as an -`Error` token that indicates a parsing error, and the position is increased by -1. - - -Adding and testing a new lexer -============================== - -To make pygments aware of your new lexer, you have to perform the following -steps: - -First, change to the current directory containing the pygments source code: - -.. sourcecode:: console - - $ cd .../pygments-main - -Next, make sure the lexer is known from outside of the module. All modules in -the ``pygments.lexers`` specify ``__all__``. For example, ``other.py`` sets: - -.. sourcecode:: python - - __all__ = ['BrainfuckLexer', 'BefungeLexer', ...] - -Simply add the name of your lexer class to this list. - -Finally the lexer can be made publically known by rebuilding the lexer -mapping: - -.. sourcecode:: console - - $ make mapfiles - -To test the new lexer, store an example file with the proper extension in -``tests/examplefiles``. For example, to test your ``DiffLexer``, add a -``tests/examplefiles/example.diff`` containing a sample diff output. - -Now you can use pygmentize to render your example to HTML: - -.. sourcecode:: console - - $ ./pygmentize -O full -f html -o /tmp/example.html tests/examplefiles/example.diff - -Note that this explicitely calls the ``pygmentize`` in the current directory -by preceding it with ``./``. This ensures your modifications are used. -Otherwise a possibly already installed, unmodified version without your new -lexer would have been called from the system search path (``$PATH``). - -To view the result, open ``/tmp/example.html`` in your browser. - -Once the example renders as expected, you should run the complete test suite: - -.. sourcecode:: console - - $ make test - - -Regex Flags -=========== - -You can either define regex flags in the regex (``r'(?x)foo bar'``) or by adding -a `flags` attribute to your lexer class. If no attribute is defined, it defaults -to `re.MULTILINE`. For more informations about regular expression flags see the -`regular expressions`_ help page in the python documentation. - -.. _regular expressions: http://docs.python.org/lib/re-syntax.html - - -Scanning multiple tokens at once -================================ - -Here is a more complex lexer that highlights INI files. INI files consist of -sections, comments and key = value pairs: - -.. sourcecode:: python - - from pygments.lexer import RegexLexer, bygroups - from pygments.token import * - - class IniLexer(RegexLexer): - name = 'INI' - aliases = ['ini', 'cfg'] - filenames = ['*.ini', '*.cfg'] - - tokens = { - 'root': [ - (r'\s+', Text), - (r';.*?$', Comment), - (r'\[.*?\]$', Keyword), - (r'(.*?)(\s*)(=)(\s*)(.*?)$', - bygroups(Name.Attribute, Text, Operator, Text, String)) - ] - } - -The lexer first looks for whitespace, comments and section names. And later it -looks for a line that looks like a key, value pair, separated by an ``'='`` -sign, and optional whitespace. - -The `bygroups` helper makes sure that each group is yielded with a different -token type. First the `Name.Attribute` token, then a `Text` token for the -optional whitespace, after that a `Operator` token for the equals sign. Then a -`Text` token for the whitespace again. The rest of the line is returned as -`String`. - -Note that for this to work, every part of the match must be inside a capturing -group (a ``(...)``), and there must not be any nested capturing groups. If you -nevertheless need a group, use a non-capturing group defined using this syntax: -``r'(?:some|words|here)'`` (note the ``?:`` after the beginning parenthesis). - -If you find yourself needing a capturing group inside the regex which -shouldn't be part of the output but is used in the regular expressions for -backreferencing (eg: ``r'(<(foo|bar)>)(.*?)()'``), you can pass `None` -to the bygroups function and it will skip that group will be skipped in the -output. - - -Changing states -=============== - -Many lexers need multiple states to work as expected. For example, some -languages allow multiline comments to be nested. Since this is a recursive -pattern it's impossible to lex just using regular expressions. - -Here is the solution: - -.. sourcecode:: python - - from pygments.lexer import RegexLexer - from pygments.token import * - - class ExampleLexer(RegexLexer): - name = 'Example Lexer with states' - - tokens = { - 'root': [ - (r'[^/]+', Text), - (r'/\*', Comment.Multiline, 'comment'), - (r'//.*?$', Comment.Singleline), - (r'/', Text) - ], - 'comment': [ - (r'[^*/]', Comment.Multiline), - (r'/\*', Comment.Multiline, '#push'), - (r'\*/', Comment.Multiline, '#pop'), - (r'[*/]', Comment.Multiline) - ] - } - -This lexer starts lexing in the ``'root'`` state. It tries to match as much as -possible until it finds a slash (``'/'``). If the next character after the slash -is a star (``'*'``) the `RegexLexer` sends those two characters to the output -stream marked as `Comment.Multiline` and continues parsing with the rules -defined in the ``'comment'`` state. - -If there wasn't a star after the slash, the `RegexLexer` checks if it's a -singleline comment (eg: followed by a second slash). If this also wasn't the -case it must be a single slash (the separate regex for a single slash must also -be given, else the slash would be marked as an error token). - -Inside the ``'comment'`` state, we do the same thing again. Scan until the lexer -finds a star or slash. If it's the opening of a multiline comment, push the -``'comment'`` state on the stack and continue scanning, again in the -``'comment'`` state. Else, check if it's the end of the multiline comment. If -yes, pop one state from the stack. - -Note: If you pop from an empty stack you'll get an `IndexError`. (There is an -easy way to prevent this from happening: don't ``'#pop'`` in the root state). - -If the `RegexLexer` encounters a newline that is flagged as an error token, the -stack is emptied and the lexer continues scanning in the ``'root'`` state. This -helps producing error-tolerant highlighting for erroneous input, e.g. when a -single-line string is not closed. - - -Advanced state tricks -===================== - -There are a few more things you can do with states: - -- You can push multiple states onto the stack if you give a tuple instead of a - simple string as the third item in a rule tuple. For example, if you want to - match a comment containing a directive, something like:: - - /* rest of comment */ - - you can use this rule: - - .. sourcecode:: python - - tokens = { - 'root': [ - (r'/\* <', Comment, ('comment', 'directive')), - ... - ], - 'directive': [ - (r'[^>]*', Comment.Directive), - (r'>', Comment, '#pop'), - ], - 'comment': [ - (r'[^*]+', Comment), - (r'\*/', Comment, '#pop'), - (r'\*', Comment), - ] - } - - When this encounters the above sample, first ``'comment'`` and ``'directive'`` - are pushed onto the stack, then the lexer continues in the directive state - until it finds the closing ``>``, then it continues in the comment state until - the closing ``*/``. Then, both states are popped from the stack again and - lexing continues in the root state. - - .. versionadded:: 0.9 - The tuple can contain the special ``'#push'`` and ``'#pop'`` (but not - ``'#pop:n'``) directives. - - -- You can include the rules of a state in the definition of another. This is - done by using `include` from `pygments.lexer`: - - .. sourcecode:: python - - from pygments.lexer import RegexLexer, bygroups, include - from pygments.token import * - - class ExampleLexer(RegexLexer): - tokens = { - 'comments': [ - (r'/\*.*?\*/', Comment), - (r'//.*?\n', Comment), - ], - 'root': [ - include('comments'), - (r'(function )(\w+)( {)', - bygroups(Keyword, Name, Keyword), 'function'), - (r'.', Text), - ], - 'function': [ - (r'[^}/]+', Text), - include('comments'), - (r'/', Text), - (r'}', Keyword, '#pop'), - ] - } - - This is a hypothetical lexer for a language that consist of functions and - comments. Because comments can occur at toplevel and in functions, we need - rules for comments in both states. As you can see, the `include` helper saves - repeating rules that occur more than once (in this example, the state - ``'comment'`` will never be entered by the lexer, as it's only there to be - included in ``'root'`` and ``'function'``). - - -- Sometimes, you may want to "combine" a state from existing ones. This is - possible with the `combine` helper from `pygments.lexer`. - - If you, instead of a new state, write ``combined('state1', 'state2')`` as the - third item of a rule tuple, a new anonymous state will be formed from state1 - and state2 and if the rule matches, the lexer will enter this state. - - This is not used very often, but can be helpful in some cases, such as the - `PythonLexer`'s string literal processing. - -- If you want your lexer to start lexing in a different state you can modify - the stack by overloading the `get_tokens_unprocessed()` method: - - .. sourcecode:: python - - from pygments.lexer import RegexLexer - - class MyLexer(RegexLexer): - tokens = {...} - - def get_tokens_unprocessed(self, text): - stack = ['root', 'otherstate'] - for item in RegexLexer.get_tokens_unprocessed(text, stack): - yield item - - Some lexers like the `PhpLexer` use this to make the leading ``', Name.Tag), - ], - 'script-content': [ - (r'(.+?)(<\s*/\s*script\s*>)', - bygroups(using(JavascriptLexer), Name.Tag), - '#pop'), - ] - } - -Here the content of a ```` end tag is processed by the `JavascriptLexer`, while the -end tag is yielded as a normal token with the `Name.Tag` type. - -As an additional goodie, if the lexer class is replaced by `this` (imported from -`pygments.lexer`), the "other" lexer will be the current one (because you cannot -refer to the current class within the code that runs at class definition time). - -Also note the ``(r'<\s*script\s*', Name.Tag, ('script-content', 'tag'))`` rule. -Here, two states are pushed onto the state stack, ``'script-content'`` and -``'tag'``. That means that first ``'tag'`` is processed, which will parse -attributes and the closing ``>``, then the ``'tag'`` state is popped and the -next state on top of the stack will be ``'script-content'``. - -The `using()` helper has a special keyword argument, `state`, which works as -follows: if given, the lexer to use initially is not in the ``"root"`` state, -but in the state given by this argument. This *only* works with a `RegexLexer`. - -Any other keywords arguments passed to `using()` are added to the keyword -arguments used to create the lexer. - - -Delegating Lexer -================ - -Another approach for nested lexers is the `DelegatingLexer` which is for -example used for the template engine lexers. It takes two lexers as -arguments on initialisation: a `root_lexer` and a `language_lexer`. - -The input is processed as follows: First, the whole text is lexed with the -`language_lexer`. All tokens yielded with a type of ``Other`` are then -concatenated and given to the `root_lexer`. The language tokens of the -`language_lexer` are then inserted into the `root_lexer`'s token stream -at the appropriate positions. - -.. sourcecode:: python - - from pygments.lexer import DelegatingLexer - from pygments.lexers.web import HtmlLexer, PhpLexer - - class HtmlPhpLexer(DelegatingLexer): - def __init__(self, **options): - super(HtmlPhpLexer, self).__init__(HtmlLexer, PhpLexer, **options) - -This procedure ensures that e.g. HTML with template tags in it is highlighted -correctly even if the template tags are put into HTML tags or attributes. - -If you want to change the needle token ``Other`` to something else, you can -give the lexer another token type as the third parameter: - -.. sourcecode:: python - - DelegatingLexer.__init__(MyLexer, OtherLexer, Text, **options) - - -Callbacks -========= - -Sometimes the grammar of a language is so complex that a lexer would be unable -to parse it just by using regular expressions and stacks. - -For this, the `RegexLexer` allows callbacks to be given in rule tuples, instead -of token types (`bygroups` and `using` are nothing else but preimplemented -callbacks). The callback must be a function taking two arguments: - -* the lexer itself -* the match object for the last matched rule - -The callback must then return an iterable of (or simply yield) ``(index, -tokentype, value)`` tuples, which are then just passed through by -`get_tokens_unprocessed()`. The ``index`` here is the position of the token in -the input string, ``tokentype`` is the normal token type (like `Name.Builtin`), -and ``value`` the associated part of the input string. - -You can see an example here: - -.. sourcecode:: python - - from pygments.lexer import RegexLexer - from pygments.token import Generic - - class HypotheticLexer(RegexLexer): - - def headline_callback(lexer, match): - equal_signs = match.group(1) - text = match.group(2) - yield match.start(), Generic.Headline, equal_signs + text + equal_signs - - tokens = { - 'root': [ - (r'(=+)(.*?)(\1)', headline_callback) - ] - } - -If the regex for the `headline_callback` matches, the function is called with the -match object. Note that after the callback is done, processing continues -normally, that is, after the end of the previous match. The callback has no -possibility to influence the position. - -There are not really any simple examples for lexer callbacks, but you can see -them in action e.g. in the `compiled.py`_ source code in the `CLexer` and -`JavaLexer` classes. - -.. _compiled.py: http://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/compiled.py - - -The ExtendedRegexLexer class -============================ - -The `RegexLexer`, even with callbacks, unfortunately isn't powerful enough for -the funky syntax rules of some languages that will go unnamed, such as Ruby. - -But fear not; even then you don't have to abandon the regular expression -approach. For Pygments has a subclass of `RegexLexer`, the `ExtendedRegexLexer`. -All features known from RegexLexers are available here too, and the tokens are -specified in exactly the same way, *except* for one detail: - -The `get_tokens_unprocessed()` method holds its internal state data not as local -variables, but in an instance of the `pygments.lexer.LexerContext` class, and -that instance is passed to callbacks as a third argument. This means that you -can modify the lexer state in callbacks. - -The `LexerContext` class has the following members: - -* `text` -- the input text -* `pos` -- the current starting position that is used for matching regexes -* `stack` -- a list containing the state stack -* `end` -- the maximum position to which regexes are matched, this defaults to - the length of `text` - -Additionally, the `get_tokens_unprocessed()` method can be given a -`LexerContext` instead of a string and will then process this context instead of -creating a new one for the string argument. - -Note that because you can set the current position to anything in the callback, -it won't be automatically be set by the caller after the callback is finished. -For example, this is how the hypothetical lexer above would be written with the -`ExtendedRegexLexer`: - -.. sourcecode:: python - - from pygments.lexer import ExtendedRegexLexer - from pygments.token import Generic - - class ExHypotheticLexer(ExtendedRegexLexer): - - def headline_callback(lexer, match, ctx): - equal_signs = match.group(1) - text = match.group(2) - yield match.start(), Generic.Headline, equal_signs + text + equal_signs - ctx.pos = match.end() - - tokens = { - 'root': [ - (r'(=+)(.*?)(\1)', headline_callback) - ] - } - -This might sound confusing (and it can really be). But it is needed, and for an -example look at the Ruby lexer in `agile.py`_. - -.. _agile.py: https://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/agile.py - - -Filtering Token Streams -======================= - -Some languages ship a lot of builtin functions (for example PHP). The total -amount of those functions differs from system to system because not everybody -has every extension installed. In the case of PHP there are over 3000 builtin -functions. That's an incredible huge amount of functions, much more than you -can put into a regular expression. - -But because only `Name` tokens can be function names it's solvable by overriding -the ``get_tokens_unprocessed()`` method. The following lexer subclasses the -`PythonLexer` so that it highlights some additional names as pseudo keywords: - -.. sourcecode:: python - - from pygments.lexers.agile import PythonLexer - from pygments.token import Name, Keyword - - class MyPythonLexer(PythonLexer): - EXTRA_KEYWORDS = ['foo', 'bar', 'foobar', 'barfoo', 'spam', 'eggs'] - - def get_tokens_unprocessed(self, text): - for index, token, value in PythonLexer.get_tokens_unprocessed(self, text): - if token is Name and value in self.EXTRA_KEYWORDS: - yield index, Keyword.Pseudo, value - else: - yield index, token, value - -The `PhpLexer` and `LuaLexer` use this method to resolve builtin functions. - -.. note:: Do not confuse this with the :doc:`filter ` system. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst deleted file mode 100644 index 914b53e..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/lexers.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. -*- mode: rst -*- - -================ -Available lexers -================ - -This page lists all available builtin lexers and the options they take. - -Currently, **all lexers** support these options: - -`stripnl` - Strip leading and trailing newlines from the input (default: ``True``) - -`stripall` - Strip all leading and trailing whitespace from the input (default: - ``False``). - -`ensurenl` - Make sure that the input ends with a newline (default: ``True``). This - is required for some lexers that consume input linewise. - - .. versionadded:: 1.3 - -`tabsize` - If given and greater than 0, expand tabs in the input (default: ``0``). - -`encoding` - If given, must be an encoding name (such as ``"utf-8"``). This encoding - will be used to convert the input string to Unicode (if it is not already - a Unicode string). The default is ``"latin1"``. - - If this option is set to ``"guess"``, a simple UTF-8 vs. Latin-1 - detection is used, if it is set to ``"chardet"``, the - `chardet library `__ is used to - guess the encoding of the input. - - .. versionadded:: 0.6 - - -The "Short Names" field lists the identifiers that can be used with the -`get_lexer_by_name()` function. - -These lexers are builtin and can be imported from `pygments.lexers`: - -.. pygmentsdoc:: lexers - - -Iterating over all lexers -------------------------- - -.. versionadded:: 0.6 - -To get all lexers (both the builtin and the plugin ones), you can -use the `get_all_lexers()` function from the `pygments.lexers` -module: - -.. sourcecode:: pycon - - >>> from pygments.lexers import get_all_lexers - >>> i = get_all_lexers() - >>> i.next() - ('Diff', ('diff',), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')) - >>> i.next() - ('Delphi', ('delphi', 'objectpascal', 'pas', 'pascal'), ('*.pas',), ('text/x-pascal',)) - >>> i.next() - ('XML+Ruby', ('xml+erb', 'xml+ruby'), (), ()) - -As you can see, the return value is an iterator which yields tuples -in the form ``(name, aliases, filetypes, mimetypes)``. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst deleted file mode 100644 index 8b2216b..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/moinmoin.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. -*- mode: rst -*- - -============================ -Using Pygments with MoinMoin -============================ - -From Pygments 0.7, the source distribution ships a `Moin`_ parser plugin that -can be used to get Pygments highlighting in Moin wiki pages. - -To use it, copy the file `external/moin-parser.py` from the Pygments -distribution to the `data/plugin/parser` subdirectory of your Moin instance. -Edit the options at the top of the file (currently ``ATTACHMENTS`` and -``INLINESTYLES``) and rename the file to the name that the parser directive -should have. For example, if you name the file ``code.py``, you can get a -highlighted Python code sample with this Wiki markup:: - - {{{ - #!code python - [...] - }}} - -where ``python`` is the Pygments name of the lexer to use. - -Additionally, if you set the ``ATTACHMENTS`` option to True, Pygments will also -be called for all attachments for whose filenames there is no other parser -registered. - -You are responsible for including CSS rules that will map the Pygments CSS -classes to colors. You can output a stylesheet file with `pygmentize`, put it -into the `htdocs` directory of your Moin instance and then include it in the -`stylesheets` configuration option in the Moin config, e.g.:: - - stylesheets = [('screen', '/htdocs/pygments.css')] - -If you do not want to do that and are willing to accept larger HTML output, you -can set the ``INLINESTYLES`` option to True. - - -.. _Moin: http://moinmoin.wikiwikiweb.de/ diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst deleted file mode 100644 index a6f8d7b..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/plugins.rst +++ /dev/null @@ -1,93 +0,0 @@ -================ -Register Plugins -================ - -If you want to extend Pygments without hacking the sources, but want to -use the lexer/formatter/style/filter lookup functions (`lexers.get_lexer_by_name` -et al.), you can use `setuptools`_ entrypoints to add new lexers, formatters -or styles as if they were in the Pygments core. - -.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools - -That means you can use your highlighter modules with the `pygmentize` script, -which relies on the mentioned functions. - - -Entrypoints -=========== - -Here is a list of setuptools entrypoints that Pygments understands: - -`pygments.lexers` - - This entrypoint is used for adding new lexers to the Pygments core. - The name of the entrypoint values doesn't really matter, Pygments extracts - required metadata from the class definition: - - .. sourcecode:: ini - - [pygments.lexers] - yourlexer = yourmodule:YourLexer - - Note that you have to define ``name``, ``aliases`` and ``filename`` - attributes so that you can use the highlighter from the command line: - - .. sourcecode:: python - - class YourLexer(...): - name = 'Name Of Your Lexer' - aliases = ['alias'] - filenames = ['*.ext'] - - -`pygments.formatters` - - You can use this entrypoint to add new formatters to Pygments. The - name of an entrypoint item is the name of the formatter. If you - prefix the name with a slash it's used as a filename pattern: - - .. sourcecode:: ini - - [pygments.formatters] - yourformatter = yourmodule:YourFormatter - /.ext = yourmodule:YourFormatter - - -`pygments.styles` - - To add a new style you can use this entrypoint. The name of the entrypoint - is the name of the style: - - .. sourcecode:: ini - - [pygments.styles] - yourstyle = yourmodule:YourStyle - - -`pygments.filters` - - Use this entrypoint to register a new filter. The name of the - entrypoint is the name of the filter: - - .. sourcecode:: ini - - [pygments.filters] - yourfilter = yourmodule:YourFilter - - -How To Use Entrypoints -====================== - -This documentation doesn't explain how to use those entrypoints because this is -covered in the `setuptools documentation`_. That page should cover everything -you need to write a plugin. - -.. _setuptools documentation: http://peak.telecommunity.com/DevCenter/setuptools - - -Extending The Core -================== - -If you have written a Pygments plugin that is open source, please inform us -about that. There is a high chance that we'll add it to the Pygments -distribution. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst deleted file mode 100644 index dba7698..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/quickstart.rst +++ /dev/null @@ -1,205 +0,0 @@ -.. -*- mode: rst -*- - -=========================== -Introduction and Quickstart -=========================== - - -Welcome to Pygments! This document explains the basic concepts and terms and -gives a few examples of how to use the library. - - -Architecture -============ - -There are four types of components that work together highlighting a piece of -code: - -* A **lexer** splits the source into tokens, fragments of the source that - have a token type that determines what the text represents semantically - (e.g., keyword, string, or comment). There is a lexer for every language - or markup format that Pygments supports. -* The token stream can be piped through **filters**, which usually modify - the token types or text fragments, e.g. uppercasing all keywords. -* A **formatter** then takes the token stream and writes it to an output - file, in a format such as HTML, LaTeX or RTF. -* While writing the output, a **style** determines how to highlight all the - different token types. It maps them to attributes like "red and bold". - - -Example -======= - -Here is a small example for highlighting Python code: - -.. sourcecode:: python - - from pygments import highlight - from pygments.lexers import PythonLexer - from pygments.formatters import HtmlFormatter - - code = 'print "Hello World"' - print highlight(code, PythonLexer(), HtmlFormatter()) - -which prints something like this: - -.. sourcecode:: html - -
    -
    print "Hello World"
    -
    - -As you can see, Pygments uses CSS classes (by default, but you can change that) -instead of inline styles in order to avoid outputting redundant style information over -and over. A CSS stylesheet that contains all CSS classes possibly used in the output -can be produced by: - -.. sourcecode:: python - - print HtmlFormatter().get_style_defs('.highlight') - -The argument to :func:`get_style_defs` is used as an additional CSS selector: -the output may look like this: - -.. sourcecode:: css - - .highlight .k { color: #AA22FF; font-weight: bold } - .highlight .s { color: #BB4444 } - ... - - -Options -======= - -The :func:`highlight()` function supports a fourth argument called *outfile*, it -must be a file object if given. The formatted output will then be written to -this file instead of being returned as a string. - -Lexers and formatters both support options. They are given to them as keyword -arguments either to the class or to the lookup method: - -.. sourcecode:: python - - from pygments import highlight - from pygments.lexers import get_lexer_by_name - from pygments.formatters import HtmlFormatter - - lexer = get_lexer_by_name("python", stripall=True) - formatter = HtmlFormatter(linenos=True, cssclass="source") - result = highlight(code, lexer, formatter) - -This makes the lexer strip all leading and trailing whitespace from the input -(`stripall` option), lets the formatter output line numbers (`linenos` option), -and sets the wrapping ``
    ``'s class to ``source`` (instead of -``highlight``). - -Important options include: - -`encoding` : for lexers and formatters - Since Pygments uses Unicode strings internally, this determines which - encoding will be used to convert to or from byte strings. -`style` : for formatters - The name of the style to use when writing the output. - - -For an overview of builtin lexers and formatters and their options, visit the -:doc:`lexer ` and :doc:`formatters ` lists. - -For a documentation on filters, see :doc:`this page `. - - -Lexer and formatter lookup -========================== - -If you want to lookup a built-in lexer by its alias or a filename, you can use -one of the following methods: - -.. sourcecode:: pycon - - >>> from pygments.lexers import (get_lexer_by_name, - ... get_lexer_for_filename, get_lexer_for_mimetype) - - >>> get_lexer_by_name('python') - - - >>> get_lexer_for_filename('spam.rb') - - - >>> get_lexer_for_mimetype('text/x-perl') - - -All these functions accept keyword arguments; they will be passed to the lexer -as options. - -A similar API is available for formatters: use :func:`.get_formatter_by_name()` -and :func:`.get_formatter_for_filename()` from the :mod:`pygments.formatters` -module for this purpose. - - -Guessing lexers -=============== - -If you don't know the content of the file, or you want to highlight a file -whose extension is ambiguous, such as ``.html`` (which could contain plain HTML -or some template tags), use these functions: - -.. sourcecode:: pycon - - >>> from pygments.lexers import guess_lexer, guess_lexer_for_filename - - >>> guess_lexer('#!/usr/bin/python\nprint "Hello World!"') - - - >>> guess_lexer_for_filename('test.py', 'print "Hello World!"') - - -:func:`.guess_lexer()` passes the given content to the lexer classes' -:meth:`analyse_text()` method and returns the one for which it returns the -highest number. - -All lexers have two different filename pattern lists: the primary and the -secondary one. The :func:`.get_lexer_for_filename()` function only uses the -primary list, whose entries are supposed to be unique among all lexers. -:func:`.guess_lexer_for_filename()`, however, will first loop through all lexers -and look at the primary and secondary filename patterns if the filename matches. -If only one lexer matches, it is returned, else the guessing mechanism of -:func:`.guess_lexer()` is used with the matching lexers. - -As usual, keyword arguments to these functions are given to the created lexer -as options. - - -Command line usage -================== - -You can use Pygments from the command line, using the :program:`pygmentize` -script:: - - $ pygmentize test.py - -will highlight the Python file test.py using ANSI escape sequences -(a.k.a. terminal colors) and print the result to standard output. - -To output HTML, use the ``-f`` option:: - - $ pygmentize -f html -o test.html test.py - -to write an HTML-highlighted version of test.py to the file test.html. -Note that it will only be a snippet of HTML, if you want a full HTML document, -use the "full" option:: - - $ pygmentize -f html -O full -o test.html test.py - -This will produce a full HTML document with included stylesheet. - -A style can be selected with ``-O style=``. - -If you need a stylesheet for an existing HTML file using Pygments CSS classes, -it can be created with:: - - $ pygmentize -S default -f html > style.css - -where ``default`` is the style name. - -More options and tricks and be found in the :doc:`command line reference -`. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst deleted file mode 100644 index c0d503b..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/rstdirective.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. -*- mode: rst -*- - -================================ -Using Pygments in ReST documents -================================ - -Many Python people use `ReST`_ for documentation their sourcecode, programs, -scripts et cetera. This also means that documentation often includes sourcecode -samples or snippets. - -You can easily enable Pygments support for your ReST texts using a custom -directive -- this is also how this documentation displays source code. - -From Pygments 0.9, the directive is shipped in the distribution as -`external/rst-directive.py`. You can copy and adapt this code to your liking. - -.. removed -- too confusing - *Loosely related note:* The ReST lexer now recognizes ``.. sourcecode::`` and - ``.. code::`` directives and highlights the contents in the specified language - if the `handlecodeblocks` option is true. - -.. _ReST: http://docutils.sf.net/rst.html diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst deleted file mode 100644 index 7ef4de1..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/styles.rst +++ /dev/null @@ -1,143 +0,0 @@ -.. -*- mode: rst -*- - -====== -Styles -====== - -Pygments comes with some builtin styles that work for both the HTML and -LaTeX formatter. - -The builtin styles can be looked up with the `get_style_by_name` function: - -.. sourcecode:: pycon - - >>> from pygments.styles import get_style_by_name - >>> get_style_by_name('colorful') - - -You can pass a instance of a `Style` class to a formatter as the `style` -option in form of a string: - -.. sourcecode:: pycon - - >>> from pygments.styles import get_style_by_name - >>> HtmlFormatter(style='colorful').style - - -Or you can also import your own style (which must be a subclass of -`pygments.style.Style`) and pass it to the formatter: - -.. sourcecode:: pycon - - >>> from yourapp.yourmodule import YourStyle - >>> HtmlFormatter(style=YourStyle).style - - - -Creating Own Styles -=================== - -So, how to create a style? All you have to do is to subclass `Style` and -define some styles: - -.. sourcecode:: python - - from pygments.style import Style - from pygments.token import Keyword, Name, Comment, String, Error, \ - Number, Operator, Generic - - class YourStyle(Style): - default_style = "" - styles = { - Comment: 'italic #888', - Keyword: 'bold #005', - Name: '#f00', - Name.Function: '#0f0', - Name.Class: 'bold #0f0', - String: 'bg:#eee #111' - } - -That's it. There are just a few rules. When you define a style for `Name` -the style automatically also affects `Name.Function` and so on. If you -defined ``'bold'`` and you don't want boldface for a subtoken use ``'nobold'``. - -(Philosophy: the styles aren't written in CSS syntax since this way -they can be used for a variety of formatters.) - -`default_style` is the style inherited by all token types. - -To make the style usable for Pygments, you must - -* either register it as a plugin (see :doc:`the plugin docs `) -* or drop it into the `styles` subpackage of your Pygments distribution one style - class per style, where the file name is the style name and the class name is - `StylenameClass`. For example, if your style should be called - ``"mondrian"``, name the class `MondrianStyle`, put it into the file - ``mondrian.py`` and this file into the ``pygments.styles`` subpackage - directory. - - -Style Rules -=========== - -Here a small overview of all allowed styles: - -``bold`` - render text as bold -``nobold`` - don't render text as bold (to prevent subtokens being highlighted bold) -``italic`` - render text italic -``noitalic`` - don't render text as italic -``underline`` - render text underlined -``nounderline`` - don't render text underlined -``bg:`` - transparent background -``bg:#000000`` - background color (black) -``border:`` - no border -``border:#ffffff`` - border color (white) -``#ff0000`` - text color (red) -``noinherit`` - don't inherit styles from supertoken - -Note that there may not be a space between ``bg:`` and the color value -since the style definition string is split at whitespace. -Also, using named colors is not allowed since the supported color names -vary for different formatters. - -Furthermore, not all lexers might support every style. - - -Builtin Styles -============== - -Pygments ships some builtin styles which are maintained by the Pygments team. - -To get a list of known styles you can use this snippet: - -.. sourcecode:: pycon - - >>> from pygments.styles import STYLE_MAP - >>> STYLE_MAP.keys() - ['default', 'emacs', 'friendly', 'colorful'] - - -Getting a list of available styles -================================== - -.. versionadded:: 0.6 - -Because it could be that a plugin registered a style, there is -a way to iterate over all styles: - -.. sourcecode:: pycon - - >>> from pygments.styles import get_all_styles - >>> styles = list(get_all_styles()) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst deleted file mode 100644 index 9193d5f..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/docs/tokens.rst +++ /dev/null @@ -1,352 +0,0 @@ -.. -*- mode: rst -*- - -============== -Builtin Tokens -============== - -.. module:: pygments.token - -In the :mod:`pygments.token` module, there is a special object called `Token` -that is used to create token types. - -You can create a new token type by accessing an attribute of `Token`: - -.. sourcecode:: pycon - - >>> from pygments.token import Token - >>> Token.String - Token.String - >>> Token.String is Token.String - True - -Note that tokens are singletons so you can use the ``is`` operator for comparing -token types. - -As of Pygments 0.7 you can also use the ``in`` operator to perform set tests: - -.. sourcecode:: pycon - - >>> from pygments.token import Comment - >>> Comment.Single in Comment - True - >>> Comment in Comment.Multi - False - -This can be useful in :doc:`filters ` and if you write lexers on your -own without using the base lexers. - -You can also split a token type into a hierarchy, and get the parent of it: - -.. sourcecode:: pycon - - >>> String.split() - [Token, Token.Literal, Token.Literal.String] - >>> String.parent - Token.Literal - -In principle, you can create an unlimited number of token types but nobody can -guarantee that a style would define style rules for a token type. Because of -that, Pygments proposes some global token types defined in the -`pygments.token.STANDARD_TYPES` dict. - -For some tokens aliases are already defined: - -.. sourcecode:: pycon - - >>> from pygments.token import String - >>> String - Token.Literal.String - -Inside the :mod:`pygments.token` module the following aliases are defined: - -============= ============================ ==================================== -`Text` `Token.Text` for any type of text data -`Whitespace` `Token.Text.Whitespace` for specially highlighted whitespace -`Error` `Token.Error` represents lexer errors -`Other` `Token.Other` special token for data not - matched by a parser (e.g. HTML - markup in PHP code) -`Keyword` `Token.Keyword` any kind of keywords -`Name` `Token.Name` variable/function names -`Literal` `Token.Literal` Any literals -`String` `Token.Literal.String` string literals -`Number` `Token.Literal.Number` number literals -`Operator` `Token.Operator` operators (``+``, ``not``...) -`Punctuation` `Token.Punctuation` punctuation (``[``, ``(``...) -`Comment` `Token.Comment` any kind of comments -`Generic` `Token.Generic` generic tokens (have a look at - the explanation below) -============= ============================ ==================================== - -The `Whitespace` token type is new in Pygments 0.8. It is used only by the -`VisibleWhitespaceFilter` currently. - -Normally you just create token types using the already defined aliases. For each -of those token aliases, a number of subtypes exists (excluding the special tokens -`Token.Text`, `Token.Error` and `Token.Other`) - -The `is_token_subtype()` function in the `pygments.token` module can be used to -test if a token type is a subtype of another (such as `Name.Tag` and `Name`). -(This is the same as ``Name.Tag in Name``. The overloaded `in` operator was newly -introduced in Pygments 0.7, the function still exists for backwards -compatiblity.) - -With Pygments 0.7, it's also possible to convert strings to token types (for example -if you want to supply a token from the command line): - -.. sourcecode:: pycon - - >>> from pygments.token import String, string_to_tokentype - >>> string_to_tokentype("String") - Token.Literal.String - >>> string_to_tokentype("Token.Literal.String") - Token.Literal.String - >>> string_to_tokentype(String) - Token.Literal.String - - -Keyword Tokens -============== - -`Keyword` - For any kind of keyword (especially if it doesn't match any of the - subtypes of course). - -`Keyword.Constant` - For keywords that are constants (e.g. ``None`` in future Python versions). - -`Keyword.Declaration` - For keywords used for variable declaration (e.g. ``var`` in some programming - languages like JavaScript). - -`Keyword.Namespace` - For keywords used for namespace declarations (e.g. ``import`` in Python and - Java and ``package`` in Java). - -`Keyword.Pseudo` - For keywords that aren't really keywords (e.g. ``None`` in old Python - versions). - -`Keyword.Reserved` - For reserved keywords. - -`Keyword.Type` - For builtin types that can't be used as identifiers (e.g. ``int``, - ``char`` etc. in C). - - -Name Tokens -=========== - -`Name` - For any name (variable names, function names, classes). - -`Name.Attribute` - For all attributes (e.g. in HTML tags). - -`Name.Builtin` - Builtin names; names that are available in the global namespace. - -`Name.Builtin.Pseudo` - Builtin names that are implicit (e.g. ``self`` in Ruby, ``this`` in Java). - -`Name.Class` - Class names. Because no lexer can know if a name is a class or a function - or something else this token is meant for class declarations. - -`Name.Constant` - Token type for constants. In some languages you can recognise a token by the - way it's defined (the value after a ``const`` keyword for example). In - other languages constants are uppercase by definition (Ruby). - -`Name.Decorator` - Token type for decorators. Decorators are synatic elements in the Python - language. Similar syntax elements exist in C# and Java. - -`Name.Entity` - Token type for special entities. (e.g. `` `` in HTML). - -`Name.Exception` - Token type for exception names (e.g. ``RuntimeError`` in Python). Some languages - define exceptions in the function signature (Java). You can highlight - the name of that exception using this token then. - -`Name.Function` - Token type for function names. - -`Name.Label` - Token type for label names (e.g. in languages that support ``goto``). - -`Name.Namespace` - Token type for namespaces. (e.g. import paths in Java/Python), names following - the ``module``/``namespace`` keyword in other languages. - -`Name.Other` - Other names. Normally unused. - -`Name.Tag` - Tag names (in HTML/XML markup or configuration files). - -`Name.Variable` - Token type for variables. Some languages have prefixes for variable names - (PHP, Ruby, Perl). You can highlight them using this token. - -`Name.Variable.Class` - same as `Name.Variable` but for class variables (also static variables). - -`Name.Variable.Global` - same as `Name.Variable` but for global variables (used in Ruby, for - example). - -`Name.Variable.Instance` - same as `Name.Variable` but for instance variables. - - -Literals -======== - -`Literal` - For any literal (if not further defined). - -`Literal.Date` - for date literals (e.g. ``42d`` in Boo). - - -`String` - For any string literal. - -`String.Backtick` - Token type for strings enclosed in backticks. - -`String.Char` - Token type for single characters (e.g. Java, C). - -`String.Doc` - Token type for documentation strings (for example Python). - -`String.Double` - Double quoted strings. - -`String.Escape` - Token type for escape sequences in strings. - -`String.Heredoc` - Token type for "heredoc" strings (e.g. in Ruby or Perl). - -`String.Interpol` - Token type for interpolated parts in strings (e.g. ``#{foo}`` in Ruby). - -`String.Other` - Token type for any other strings (for example ``%q{foo}`` string constructs - in Ruby). - -`String.Regex` - Token type for regular expression literals (e.g. ``/foo/`` in JavaScript). - -`String.Single` - Token type for single quoted strings. - -`String.Symbol` - Token type for symbols (e.g. ``:foo`` in LISP or Ruby). - - -`Number` - Token type for any number literal. - -`Number.Bin` - Token type for binary literals (e.g. ``0b101010``). - -`Number.Float` - Token type for float literals (e.g. ``42.0``). - -`Number.Hex` - Token type for hexadecimal number literals (e.g. ``0xdeadbeef``). - -`Number.Integer` - Token type for integer literals (e.g. ``42``). - -`Number.Integer.Long` - Token type for long integer literals (e.g. ``42L`` in Python). - -`Number.Oct` - Token type for octal literals. - - -Operators -========= - -`Operator` - For any punctuation operator (e.g. ``+``, ``-``). - -`Operator.Word` - For any operator that is a word (e.g. ``not``). - - -Punctuation -=========== - -.. versionadded:: 0.7 - -`Punctuation` - For any punctuation which is not an operator (e.g. ``[``, ``(``...) - - -Comments -======== - -`Comment` - Token type for any comment. - -`Comment.Multiline` - Token type for multiline comments. - -`Comment.Preproc` - Token type for preprocessor comments (also ```. - -.. versionadded:: 0.7 - The formatters now also accept an `outencoding` option which will override - the `encoding` option if given. This makes it possible to use a single - options dict with lexers and formatters, and still have different input and - output encodings. - -.. _chardet: http://chardet.feedparser.org/ diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst deleted file mode 100644 index cf32f48..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/download.rst +++ /dev/null @@ -1,41 +0,0 @@ -Download and installation -========================= - -The current release is version |version|. - -Packaged versions ------------------ - -You can download it `from the Python Package Index -`_. For installation of packages from -PyPI, we recommend `Pip `_, which works on all -major platforms. - -Under Linux, most distributions include a package for Pygments, usually called -``pygments`` or ``python-pygments``. You can install it with the package -manager as usual. - -Development sources -------------------- - -We're using the `Mercurial `_ version control -system. You can get the development source using this command:: - - hg clone http://bitbucket.org/birkenfeld/pygments-main pygments - -Development takes place at `Bitbucket -`_, you can browse the source -online `here `_. - -The latest changes in the development source code are listed in the `changelog -`_. - -.. Documentation - ------------- - -.. XXX todo - - You can download the documentation either as - a bunch of rst files from the Mercurial repository, see above, or - as a tar.gz containing rendered HTML files:

    -

    pygmentsdocs.tar.gz

    diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst deleted file mode 100644 index 0f65b9f..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/faq.rst +++ /dev/null @@ -1,143 +0,0 @@ -:orphan: - -Pygments FAQ -============= - -What is Pygments? ------------------ - -Pygments is a syntax highlighting engine written in Python. That means, it will -take source code (or other markup) in a supported language and output a -processed version (in different formats) containing syntax highlighting markup. - -Its features include: - -* a wide range of common languages and markup formats is supported (look here - for a list) -* new languages and formats are added easily -* a number of output formats is available, including: - - - HTML - - ANSI sequences (console output) - - LaTeX - - RTF - -* it is usable as a command-line tool and as a library -* parsing and formatting is fast - -Pygments is licensed under the BSD license. - -Where does the name Pygments come from? ---------------------------------------- - -*Py* of course stands for Python, while *pigments* are used for coloring paint, -and in this case, source code! - -What are the system requirements? ---------------------------------- - -Pygments only needs a standard Python install, version 2.6 or higher or version -3.3 or higher for Python 3. No additional libraries are needed. - -How can I use Pygments? ------------------------ - -Pygments is usable as a command-line tool as well as a library. - -From the command-line, usage looks like this (assuming the pygmentize script is -properly installed):: - - pygmentize -f html /path/to/file.py - -This will print a HTML-highlighted version of /path/to/file.py to standard output. - -For a complete help, please run ``pygmentize -h``. - -Usage as a library is thoroughly demonstrated in the Documentation section. - -How do I make a new style? --------------------------- - -Please see the documentation on styles. - -How can I report a bug or suggest a feature? --------------------------------------------- - -Please report bugs and feature wishes in the tracker at Bitbucket. - -You can also e-mail the author or use IRC, see the contact details. - -I want this support for this language! --------------------------------------- - -Instead of waiting for others to include language support, why not write it -yourself? All you have to know is :doc:`outlined in the docs -`. - -Can I use Pygments for programming language processing? -------------------------------------------------------- - -The Pygments lexing machinery is quite powerful can be used to build lexers for -basically all languages. However, parsing them is not possible, though some -lexers go some steps in this direction in order to e.g. highlight function names -differently. - -Also, error reporting is not the scope of Pygments. It focuses on correctly -highlighting syntactically valid documents, not finding and compensating errors. - -Who uses Pygments? ------------------- - -This is an (incomplete) list of projects and sites known to use the Pygments highlighter. - -* `Pygments API `_, a HTTP POST interface to Pygments -* `The Sphinx documentation builder `_, for embedded source examples -* `rst2pdf `_, a reStructuredText to PDF converter -* `Zine `_, a Python blogging system -* `Trac `_, the universal project management tool -* `Bruce `_, a reStructuredText presentation tool -* `AsciiDoc `_, a text-based documentation generator -* `ActiveState Code `_, the Python Cookbook successor -* `ViewVC `_, a web-based version control repository browser -* `BzrFruit `_, a Bazaar branch viewer -* `QBzr `_, a cross-platform Qt-based GUI front end for Bazaar -* `BitBucket `_, a Mercurial and Git hosting site -* `GitHub `_, a site offering secure Git hosting and collaborative development -* `Review Board `_, a collaborative code reviewing tool -* `skeletonz `_, a Python powered content management system -* `Diamanda `_, a Django powered wiki system with support for Pygments -* `Progopedia `_ (`English `_), - an encyclopedia of programming languages -* `Postmarkup `_, a BBCode to XHTML generator -* `Language Comparison `_, a site that compares different programming languages -* `BPython `_, a curses-based intelligent Python shell -* `Challenge-You! `_, a site offering programming challenges -* `PIDA `_, a universal IDE written in Python -* `PuDB `_, a console Python debugger -* `XWiki `_, a wiki-based development framework in Java, using Jython -* `roux `_, a script for running R scripts - and creating beautiful output including graphs -* `hurl `_, a web service for making HTTP requests -* `wxHTMLPygmentizer `_ is - a GUI utility, used to make code-colorization easier -* `WpPygments `_, a highlighter plugin for WordPress -* `LodgeIt `_, a pastebin with XMLRPC support and diffs -* `SpammCan `_, a pastebin (demo see - `here `_) -* `WowAce.com pastes `_, a pastebin -* `Siafoo `_, a tool for sharing and storing useful code and programming experience -* `D source `_, a community for the D programming language -* `dumpz.org `_, a pastebin -* `dpaste.com `_, another Django pastebin -* `PylonsHQ Pasties `_, a pastebin -* `Django snippets `_, a pastebin for Django code -* `Fayaa `_, a Chinese pastebin -* `Incollo.com `_, a free collaborative debugging tool -* `PasteBox `_, a pastebin focused on privacy -* `xinotes.org `_, a site to share notes, code snippets etc. -* `hilite.me `_, a site to highlight code snippets -* `patx.me `_, a pastebin - -If you have a project or web site using Pygments, drop me a line, and I'll add a -link here. - diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst deleted file mode 100644 index a0e4121..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/index.rst +++ /dev/null @@ -1,53 +0,0 @@ -Welcome! -======== - -This is the home of Pygments. It is a generic syntax highlighter for general use -in all kinds of software such as forum systems, wikis or other applications that -need to prettify source code. Highlights are: - -* a wide range of common languages and markup formats is supported -* special attention is paid to details that increase highlighting quality -* support for new languages and formats are added easily; most languages use a simple regex-based lexing mechanism -* a number of output formats is available, among them HTML, RTF, LaTeX and ANSI sequences -* it is usable as a command-line tool and as a library -* ... and it highlights even Brainf*ck! - -Read more in the FAQ list or the documentation, or download the latest release. - -Though Pygments has not yet won an award, we trust that you will notice it's a top quality product . - -.. _contribute: - -Contribute ----------- - -Like every open-source project, we are always looking for volunteers to help us -with programming. Python knowledge is required, but don't fear: Python is a very -clear and easy to learn language. - -Development takes place on `Bitbucket -`_, where the Mercurial -repository, tickets and pull requests can be viewed. - -Our primary communication instrument is the IRC channel **#pocoo** on the -Freenode network. To join it, let your IRC client connect to -``irc.freenode.net`` and do ``/join #pocoo``. - -If you found a bug, just open a ticket in the Bitbucket tracker. Be sure to log -in to be notified when the issue is fixed -- development is not fast-paced as -the library is quite stable. You can also send an e-mail to the developers, see -below. - -The authors ------------ - -Pygments is maintained by **Georg Brandl**, e-mail address *georg*\ *@*\ *python.org*. - -Many lexers and fixes have been contributed by **Armin Ronacher**, the rest of -the `Pocoo `_ team and **Tim Hatch**. - -.. toctree:: - :maxdepth: 1 - :hidden: - - docs/index diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst deleted file mode 100644 index 0f98c58..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/languages.rst +++ /dev/null @@ -1,151 +0,0 @@ -:orphan: - -Supported languages -=================== - -Pygments supports an ever-growing range of languages. Watch this space... - -Programming languages ---------------------- - -* ActionScript -* Ada -* ANTLR -* AppleScript -* Assembly (various) -* Asymptote -* Awk -* Befunge -* Boo -* BrainFuck -* C, C++ -* C# -* Clojure -* CoffeeScript -* ColdFusion -* Common Lisp -* Coq -* Cryptol (incl. Literate Cryptol) -* `Cython `_ -* `D `_ -* Dart -* Delphi -* Dylan -* Erlang -* Factor -* Fancy -* Fortran -* F# -* GAP -* Gherkin (Cucumber) -* GL shaders -* Groovy -* `Haskell `_ (incl. Literate Haskell) -* IDL -* Io -* Java -* JavaScript -* LLVM -* Logtalk -* `Lua `_ -* Matlab -* MiniD -* Modelica -* Modula-2 -* MuPad -* Nemerle -* Nimrod -* Objective-C -* Objective-J -* Octave -* OCaml -* PHP -* `Perl `_ -* PovRay -* PostScript -* PowerShell -* Prolog -* `Python `_ 2.x and 3.x (incl. console sessions and tracebacks) -* `REBOL `_ -* `Red `_ -* Redcode -* `Ruby `_ (incl. irb sessions) -* Rust -* S, S-Plus, R -* Scala -* Scheme -* Scilab -* Smalltalk -* SNOBOL -* Tcl -* Vala -* Verilog -* VHDL -* Visual Basic.NET -* Visual FoxPro -* XQuery -* Zephir -
- -Template languages ------------------- - -* Cheetah templates -* `Django `_ / `Jinja - `_ templates -* ERB (Ruby templating) -* `Genshi `_ (the Trac template language) -* JSP (Java Server Pages) -* `Myghty `_ (the HTML::Mason based framework) -* `Mako `_ (the Myghty successor) -* `Smarty `_ templates (PHP templating) -* Tea - -Other markup ------------- - -* Apache config files -* Bash shell scripts -* BBCode -* CMake -* CSS -* Debian control files -* Diff files -* DTD -* Gettext catalogs -* Gnuplot script -* Groff markup -* HTML -* HTTP sessions -* INI-style config files -* IRC logs (irssi style) -* Lighttpd config files -* Makefiles -* MoinMoin/Trac Wiki markup -* MySQL -* Nginx config files -* POV-Ray scenes -* Ragel -* Redcode -* ReST -* Robot Framework -* RPM spec files -* SQL, also MySQL, SQLite -* Squid configuration -* TeX -* tcsh -* Vim Script -* Windows batch files -* XML -* XSLT -* YAML - -... that's all? ---------------- - -Well, why not write your own? Contributing to Pygments is easy and fun. Look -:doc:`here ` for the docs on lexer development and -:ref:`here ` for contact details. - -Note: the languages listed here are supported in the development version. The -latest release may lack a few of them. diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat deleted file mode 100644 index 8803c98..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/make.bat +++ /dev/null @@ -1,190 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=_build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . -set I18NSPHINXOPTS=%SPHINXOPTS% . -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Pygments.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Pygments.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 deleted file mode 100644 index 71bb6f9..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/doc/pygmentize.1 +++ /dev/null @@ -1,94 +0,0 @@ -.TH PYGMENTIZE 1 "February 15, 2007" - -.SH NAME -pygmentize \- highlights the input file - -.SH SYNOPSIS -.B \fBpygmentize\fP -.RI [-l\ \fI\fP]\ [-F\ \fI\fP[:\fI\fP]]\ [-f\ \fI\fP] -.RI [-O\ \fI\fP]\ [-P\ \fI\fP]\ [-o\ \fI\fP]\ [\fI\fP] -.br -.B \fBpygmentize\fP -.RI -S\ \fI - - -

%(title)s

- -''' - -DOC_HEADER_EXTERNALCSS = '''\ - - - - - %(title)s - - - - -

%(title)s

- -''' - -DOC_FOOTER = '''\ - - -''' - - -class HtmlFormatter(Formatter): - r""" - Format tokens as HTML 4 ```` tags within a ``
`` tag, wrapped
-    in a ``
`` tag. The ``
``'s CSS class can be set by the `cssclass` - option. - - If the `linenos` option is set to ``"table"``, the ``
`` is
-    additionally wrapped inside a ```` which has one row and two
-    cells: one containing the line numbers and one containing the code.
-    Example:
-
-    .. sourcecode:: html
-
-        
-
- - -
-
1
-            2
-
-
def foo(bar):
-              pass
-            
-
- - (whitespace added to improve clarity). - - Wrapping can be disabled using the `nowrap` option. - - A list of lines can be specified using the `hl_lines` option to make these - lines highlighted (as of Pygments 0.11). - - With the `full` option, a complete HTML 4 document is output, including - the style definitions inside a `` - - -

Code tags report for %s

- - -%s -
LineTagWhoDescription
- - -''' - - TABLE = '\nFile: %s\n' - - TR = ('%%(lno)d' - '%%(tag)s' - '%%(who)s%%(what)s') - - f = open(output, 'w') - table = '\n'.join(TABLE % fname + - '\n'.join(TR % (no % 2,) % entry - for no, entry in enumerate(store[fname])) - for fname in sorted(store)) - f.write(HTML % (', '.join(map(abspath, args)), table)) - f.close() - - print("Report written to %s." % output) - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py deleted file mode 100755 index 7aaa9be..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/find_error.py +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -""" - Lexing error finder - ~~~~~~~~~~~~~~~~~~~ - - For the source files given on the command line, display - the text where Error tokens are being generated, along - with some context. - - :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from __future__ import print_function - -import os -import sys - -# always prefer Pygments from source if exists -srcpath = os.path.join(os.path.dirname(__file__), '..') -if os.path.isdir(os.path.join(srcpath, 'pygments')): - sys.path.insert(0, srcpath) - - -from pygments.lexer import RegexLexer -from pygments.lexers import get_lexer_for_filename, get_lexer_by_name -from pygments.token import Error, Text, _TokenType -from pygments.cmdline import _parse_options - - -class DebuggingRegexLexer(RegexLexer): - """Make the state stack, position and current match instance attributes.""" - - def get_tokens_unprocessed(self, text, stack=('root',)): - """ - Split ``text`` into (tokentype, text) pairs. - - ``stack`` is the inital stack (default: ``['root']``) - """ - self.pos = 0 - tokendefs = self._tokens - self.statestack = list(stack) - statetokens = tokendefs[self.statestack[-1]] - while 1: - for rexmatch, action, new_state in statetokens: - self.m = m = rexmatch(text, self.pos) - if m: - if type(action) is _TokenType: - yield self.pos, action, m.group() - else: - for item in action(self, m): - yield item - self.pos = m.end() - if new_state is not None: - # state transition - if isinstance(new_state, tuple): - for state in new_state: - if state == '#pop': - self.statestack.pop() - elif state == '#push': - self.statestack.append(self.statestack[-1]) - else: - self.statestack.append(state) - elif isinstance(new_state, int): - # pop - del self.statestack[new_state:] - elif new_state == '#push': - self.statestack.append(self.statestack[-1]) - else: - assert False, 'wrong state def: %r' % new_state - statetokens = tokendefs[self.statestack[-1]] - break - else: - try: - if text[self.pos] == '\n': - # at EOL, reset state to 'root' - self.pos += 1 - self.statestack = ['root'] - statetokens = tokendefs['root'] - yield self.pos, Text, u'\n' - continue - yield self.pos, Error, text[self.pos] - self.pos += 1 - except IndexError: - break - - -def main(fn, lexer=None, options={}): - if lexer is not None: - lx = get_lexer_by_name(lexer) - else: - try: - lx = get_lexer_for_filename(os.path.basename(fn), **options) - except ValueError: - try: - name, rest = fn.split('_', 1) - lx = get_lexer_by_name(name, **options) - except ValueError: - raise AssertionError('no lexer found for file %r' % fn) - debug_lexer = False - # does not work for e.g. ExtendedRegexLexers - if lx.__class__.__bases__ == (RegexLexer,): - lx.__class__.__bases__ = (DebuggingRegexLexer,) - debug_lexer = True - elif lx.__class__.__bases__ == (DebuggingRegexLexer,): - # already debugged before - debug_lexer = True - lno = 1 - text = open(fn, 'U').read() - text = text.strip('\n') + '\n' - tokens = [] - states = [] - - def show_token(tok, state): - reprs = map(repr, tok) - print(' ' + reprs[1] + ' ' + ' ' * (29-len(reprs[1])) + reprs[0], end=' ') - if debug_lexer: - print(' ' + ' ' * (29-len(reprs[0])) + repr(state), end=' ') - print() - - for type, val in lx.get_tokens(text): - lno += val.count('\n') - if type == Error: - print('Error parsing', fn, 'on line', lno) - print('Previous tokens' + (debug_lexer and ' and states' or '') + ':') - if showall: - for tok, state in map(None, tokens, states): - show_token(tok, state) - else: - for i in range(max(len(tokens) - num, 0), len(tokens)): - show_token(tokens[i], states[i]) - print('Error token:') - l = len(repr(val)) - print(' ' + repr(val), end=' ') - if debug_lexer and hasattr(lx, 'statestack'): - print(' ' * (60-l) + repr(lx.statestack), end=' ') - print() - print() - return 1 - tokens.append((type, val)) - if debug_lexer: - if hasattr(lx, 'statestack'): - states.append(lx.statestack[:]) - else: - states.append(None) - if showall: - for tok, state in map(None, tokens, states): - show_token(tok, state) - return 0 - - -num = 10 -showall = False -lexer = None -options = {} - -if __name__ == '__main__': - import getopt - opts, args = getopt.getopt(sys.argv[1:], 'n:l:aO:') - for opt, val in opts: - if opt == '-n': - num = int(val) - elif opt == '-a': - showall = True - elif opt == '-l': - lexer = val - elif opt == '-O': - options = _parse_options([val]) - ret = 0 - for f in args: - ret += main(f, lexer, options) - sys.exit(bool(ret)) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py deleted file mode 100644 index 4ea302f..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/get_vimkw.py +++ /dev/null @@ -1,43 +0,0 @@ -from __future__ import print_function -import re - -r_line = re.compile(r"^(syn keyword vimCommand contained|syn keyword vimOption " - r"contained|syn keyword vimAutoEvent contained)\s+(.*)") -r_item = re.compile(r"(\w+)(?:\[(\w+)\])?") - -def getkw(input, output): - out = file(output, 'w') - - output_info = {'command': [], 'option': [], 'auto': []} - for line in file(input): - m = r_line.match(line) - if m: - # Decide which output gets mapped to d - if 'vimCommand' in m.group(1): - d = output_info['command'] - elif 'AutoEvent' in m.group(1): - d = output_info['auto'] - else: - d = output_info['option'] - - # Extract all the shortened versions - for i in r_item.finditer(m.group(2)): - d.append('(%r,%r)' % - (i.group(1), "%s%s" % (i.group(1), i.group(2) or ''))) - - output_info['option'].append("('nnoremap','nnoremap')") - output_info['option'].append("('inoremap','inoremap')") - output_info['option'].append("('vnoremap','vnoremap')") - - for a, b in output_info.items(): - b.sort() - print('%s=[%s]' % (a, ','.join(b)), file=out) - -def is_keyword(w, keywords): - for i in range(len(w), 0, -1): - if w[:i] in keywords: - return keywords[w[:i]][:len(w)] == w - return False - -if __name__ == "__main__": - getkw("/usr/share/vim/vim73/syntax/vim.vim", "temp.py") diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc deleted file mode 100644 index aa04e12..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/pylintrc +++ /dev/null @@ -1,301 +0,0 @@ -# lint Python modules using external checkers. -# -# This is the main checker controling the other ones and the reports -# generation. It is itself both a raw checker and an astng checker in order -# to: -# * handle message activation / deactivation at the module level -# * handle some basic but necessary stats'data (number of classes, methods...) -# -[MASTER] - -# Specify a configuration file. -#rcfile= - -# Profiled execution. -profile=no - -# Add to the black list. It should be a base name, not a -# path. You may set this option multiple times. -ignore=.svn - -# Pickle collected data for later comparisons. -persistent=yes - -# Set the cache size for astng objects. -cache-size=500 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - - -[MESSAGES CONTROL] - -# Enable only checker(s) with the given id(s). This option conflict with the -# disable-checker option -#enable-checker= - -# Enable all checker(s) except those with the given id(s). This option conflict -# with the disable-checker option -#disable-checker= - -# Enable all messages in the listed categories. -#enable-msg-cat= - -# Disable all messages in the listed categories. -#disable-msg-cat= - -# Enable the message(s) with the given id(s). -#enable-msg= - -# Disable the message(s) with the given id(s). -disable-msg=C0323,W0142,C0301,C0103,C0111,E0213,C0302,C0203,W0703,R0201 - - -[REPORTS] - -# set the output format. Available formats are text, parseable, colorized and -# html -output-format=colorized - -# Include message's id in output -include-ids=yes - -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". -files-output=no - -# Tells wether to display a full report or only the messages -reports=yes - -# Python expression which should return a note less than 10 (10 is the highest -# note).You have access to the variables errors warning, statement which -# respectivly contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (R0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Add a comment according to your evaluation note. This is used by the global -# evaluation report (R0004). -comment=no - -# Enable the report(s) with the given id(s). -#enable-report= - -# Disable the report(s) with the given id(s). -#disable-report= - - -# checks for -# * unused variables / imports -# * undefined variables -# * redefinition of variable from builtins or from an outer scope -# * use of variable before assigment -# -[VARIABLES] - -# Tells wether we should check for unused import in __init__ files. -init-import=no - -# A regular expression matching names used for dummy variables (i.e. not used). -dummy-variables-rgx=_|dummy - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= - - -# try to find bugs in the code using type inference -# -[TYPECHECK] - -# Tells wether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# When zope mode is activated, consider the acquired-members option to ignore -# access to some undefined attributes. -zope=no - -# List of members which are usually get through zope's acquisition mecanism and -# so shouldn't trigger E0201 when accessed (need zope=yes to be considered). -acquired-members=REQUEST,acl_users,aq_parent - - -# checks for : -# * doc strings -# * modules / classes / functions / methods / arguments / variables name -# * number of arguments, local variables, branchs, returns and statements in -# functions, methods -# * required module attributes -# * dangerous default values as arguments -# * redefinition of function / method / class -# * uses of the global statement -# -[BASIC] - -# Required attributes for module, separated by a comma -required-attributes= - -# Regular expression which should only match functions or classes name which do -# not require a docstring -no-docstring-rgx=__.*__ - -# Regular expression which should only match correct module names -module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ - -# Regular expression which should only match correct module level names -const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__))$ - -# Regular expression which should only match correct class names -class-rgx=[A-Z_][a-zA-Z0-9]+$ - -# Regular expression which should only match correct function names -function-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression which should only match correct method names -method-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression which should only match correct instance attribute names -attr-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression which should only match correct argument names -argument-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression which should only match correct variable names -variable-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression which should only match correct list comprehension / -# generator expression variable names -inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ - -# Good variable names which should always be accepted, separated by a comma -good-names=i,j,k,ex,Run,_ - -# Bad variable names which should always be refused, separated by a comma -bad-names=foo,bar,baz,toto,tutu,tata - -# List of builtins function names that should not be used, separated by a comma -bad-functions=apply,input - - -# checks for sign of poor/misdesign: -# * number of methods, attributes, local variables... -# * size, complexity of functions, methods -# -[DESIGN] - -# Maximum number of arguments for function / method -max-args=12 - -# Maximum number of locals for function / method body -max-locals=30 - -# Maximum number of return / yield for function / method body -max-returns=12 - -# Maximum number of branch for function / method body -max-branchs=30 - -# Maximum number of statements in function / method body -max-statements=60 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of attributes for a class (see R0902). -max-attributes=20 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=0 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - - -# checks for -# * external modules dependencies -# * relative / wildcard imports -# * cyclic imports -# * uses of deprecated modules -# -[IMPORTS] - -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=regsub,string,TERMIOS,Bastion,rexec - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report R0402 must not be disabled) -import-graph= - -# Create a graph of external dependencies in the given file (report R0402 must -# not be disabled) -ext-import-graph= - -# Create a graph of internal dependencies in the given file (report R0402 must -# not be disabled) -int-import-graph= - - -# checks for : -# * methods without self as first argument -# * overridden methods signature -# * access only to existant members via self -# * attributes not defined in the __init__ method -# * supported interfaces implementation -# * unreachable code -# -[CLASSES] - -# List of interface methods to ignore, separated by a comma. This is used for -# instance to not check methods defines in Zope's Interface base class. -ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__,__new__,setUp - - -# checks for similarities and duplicated code. This computation may be -# memory / CPU intensive, so you should disable it if you experiments some -# problems. -# -[SIMILARITIES] - -# Minimum lines number of a similarity. -min-similarity-lines=10 - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - - -# checks for: -# * warning notes in the code like FIXME, XXX -# * PEP 263: source code with non ascii character but no encoding declaration -# -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME,XXX,TODO - - -# checks for : -# * unauthorized constructions -# * strict indentation -# * line length -# * use of <> instead of != -# -[FORMAT] - -# Maximum number of characters on a single line. -max-line-length=90 - -# Maximum number of lines in a module -max-module-lines=1000 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py deleted file mode 100755 index 42af0bb..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/scripts/vim2pygments.py +++ /dev/null @@ -1,935 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - Vim Colorscheme Converter - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - This script converts vim colorscheme files to valid pygments - style classes meant for putting into modules. - - :copyright 2006 by Armin Ronacher. - :license: BSD, see LICENSE for details. -""" - -from __future__ import print_function - -import sys -import re -from os import path -from io import StringIO - -split_re = re.compile(r'(? 2 and \ - len(parts[0]) >= 2 and \ - 'highlight'.startswith(parts[0]): - token = parts[1].lower() - if token not in TOKENS: - continue - for item in parts[2:]: - p = item.split('=', 1) - if not len(p) == 2: - continue - key, value = p - if key in ('ctermfg', 'guifg'): - color = get_vim_color(value) - if color: - set('color', color) - elif key in ('ctermbg', 'guibg'): - color = get_vim_color(value) - if color: - set('bgcolor', color) - elif key in ('term', 'cterm', 'gui'): - items = value.split(',') - for item in items: - item = item.lower() - if item == 'none': - set('noinherit', True) - elif item == 'bold': - set('bold', True) - elif item == 'underline': - set('underline', True) - elif item == 'italic': - set('italic', True) - - if bg_color is not None and not colors['Normal'].get('bgcolor'): - colors['Normal']['bgcolor'] = bg_color - - color_map = {} - for token, styles in colors.items(): - if token in TOKENS: - tmp = [] - if styles.get('noinherit'): - tmp.append('noinherit') - if 'color' in styles: - tmp.append(styles['color']) - if 'bgcolor' in styles: - tmp.append('bg:' + styles['bgcolor']) - if styles.get('bold'): - tmp.append('bold') - if styles.get('italic'): - tmp.append('italic') - if styles.get('underline'): - tmp.append('underline') - tokens = TOKENS[token] - if not isinstance(tokens, tuple): - tokens = (tokens,) - for token in tokens: - color_map[token] = ' '.join(tmp) - - default_token = color_map.pop('') - return default_token, color_map - - -class StyleWriter(object): - - def __init__(self, code, name): - self.code = code - self.name = name.lower() - - def write_header(self, out): - out.write('# -*- coding: utf-8 -*-\n"""\n') - out.write(' %s Colorscheme\n' % self.name.title()) - out.write(' %s\n\n' % ('~' * (len(self.name) + 12))) - out.write(' Converted by %s\n' % SCRIPT_NAME) - out.write('"""\nfrom pygments.style import Style\n') - out.write('from pygments.token import Token, %s\n\n' % ', '.join(TOKEN_TYPES)) - out.write('class %sStyle(Style):\n\n' % self.name.title()) - - def write(self, out): - self.write_header(out) - default_token, tokens = find_colors(self.code) - tokens = list(tokens.items()) - tokens.sort(lambda a, b: cmp(len(a[0]), len(a[1]))) - bg_color = [x[3:] for x in default_token.split() if x.startswith('bg:')] - if bg_color: - out.write(' background_color = %r\n' % bg_color[0]) - out.write(' styles = {\n') - out.write(' %-20s%r,\n' % ('Token:', default_token)) - for token, definition in tokens: - if definition: - out.write(' %-20s%r,\n' % (token + ':', definition)) - out.write(' }') - - def __repr__(self): - out = StringIO() - self.write_style(out) - return out.getvalue() - - -def convert(filename, stream=None): - name = path.basename(filename) - if name.endswith('.vim'): - name = name[:-4] - f = file(filename) - code = f.read() - f.close() - writer = StyleWriter(code, name) - if stream is not None: - out = stream - else: - out = StringIO() - writer.write(out) - if stream is None: - return out.getvalue() - - -def main(): - if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'): - print('Usage: %s ' % sys.argv[0]) - return 2 - if sys.argv[1] in ('-v', '--version'): - print('%s %s' % (SCRIPT_NAME, SCRIPT_VERSION)) - return - filename = sys.argv[1] - if not (path.exists(filename) and path.isfile(filename)): - print('Error: %s not found' % filename) - return 1 - convert(filename, sys.stdout) - sys.stdout.write('\n') - - -if __name__ == '__main__': - sys.exit(main() or 0) diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg deleted file mode 100644 index abca6bc..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[egg_info] -tag_build = dev -tag_date = true - -[aliases] -release = egg_info -RDb '' -upload = upload --sign --identity=36580288 diff --git a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py b/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py deleted file mode 100755 index a0b2e90..0000000 --- a/node_modules/pryjs/node_modules/pygmentize-bundled/vendor/pygments/setup.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - Pygments - ~~~~~~~~ - - Pygments is a syntax highlighting package written in Python. - - It is a generic syntax highlighter for general use in all kinds of software - such as forum systems, wikis or other applications that need to prettify - source code. Highlights are: - - * a wide range of common languages and markup formats is supported - * special attention is paid to details, increasing quality by a fair amount - * support for new languages and formats are added easily - * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image \ - formats that PIL supports and ANSI sequences - * it is usable as a command-line tool and as a library - * ... and it highlights even Brainfuck! - - The `Pygments tip`_ is installable with ``easy_install Pygments==dev``. - - .. _Pygments tip: - http://bitbucket.org/birkenfeld/pygments-main/get/default.zip#egg=Pygments-dev - - :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -try: - from setuptools import setup, find_packages - have_setuptools = True -except ImportError: - try: - import ez_setup - ez_setup.use_setuptools() - from setuptools import setup, find_packages - have_setuptools = True - except ImportError: - from distutils.core import setup - def find_packages(*args, **kwargs): - return [ - 'pygments', - 'pygments.lexers', - 'pygments.formatters', - 'pygments.styles', - 'pygments.filters', - ] - have_setuptools = False - -if have_setuptools: - add_keywords = dict( - entry_points = { - 'console_scripts': ['pygmentize = pygments.cmdline:main'], - }, - ) -else: - add_keywords = dict( - scripts = ['pygmentize'], - ) - -setup( - name = 'Pygments', - version = '2.0pre', - url = 'http://pygments.org/', - license = 'BSD License', - author = 'Georg Brandl', - author_email = 'georg@python.org', - description = 'Pygments is a syntax highlighting package written in Python.', - long_description = __doc__, - keywords = 'syntax highlighting', - packages = find_packages(exclude=['ez_setup']), - platforms = 'any', - zip_safe = False, - include_package_data = True, - classifiers = [ - 'License :: OSI Approved :: BSD License', - 'Intended Audience :: Developers', - 'Intended Audience :: End Users/Desktop', - 'Intended Audience :: System Administrators', - 'Development Status :: 6 - Mature', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 3', - 'Operating System :: OS Independent', - 'Topic :: Text Processing :: Filters', - 'Topic :: Utilities', - ], - **add_keywords -) diff --git a/node_modules/pryjs/node_modules/underscore/LICENSE b/node_modules/pryjs/node_modules/underscore/LICENSE deleted file mode 100644 index ad0e71b..0000000 --- a/node_modules/pryjs/node_modules/underscore/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative -Reporters & Editors - -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. diff --git a/node_modules/pryjs/node_modules/underscore/README.md b/node_modules/pryjs/node_modules/underscore/README.md deleted file mode 100644 index c2ba259..0000000 --- a/node_modules/pryjs/node_modules/underscore/README.md +++ /dev/null @@ -1,22 +0,0 @@ - __ - /\ \ __ - __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ - /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ - \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ - \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ - \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ - \ \____/ - \/___/ - -Underscore.js is a utility-belt library for JavaScript that provides -support for the usual functional suspects (each, map, reduce, filter...) -without extending any core JavaScript objects. - -For Docs, License, Tests, and pre-packed downloads, see: -http://underscorejs.org - -Underscore is an open-sourced component of DocumentCloud: -https://github.com/documentcloud - -Many thanks to our contributors: -https://github.com/jashkenas/underscore/contributors diff --git a/node_modules/pryjs/node_modules/underscore/package.json b/node_modules/pryjs/node_modules/underscore/package.json deleted file mode 100644 index 122e455..0000000 --- a/node_modules/pryjs/node_modules/underscore/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "underscore", - "description": "JavaScript's functional programming helper library.", - "homepage": "http://underscorejs.org", - "keywords": [ - "util", - "functional", - "server", - "client", - "browser" - ], - "author": { - "name": "Jeremy Ashkenas", - "email": "jeremy@documentcloud.org" - }, - "repository": { - "type": "git", - "url": "git://github.com/jashkenas/underscore.git" - }, - "main": "underscore.js", - "version": "1.8.3", - "devDependencies": { - "docco": "*", - "eslint": "0.6.x", - "karma": "~0.12.31", - "karma-qunit": "~0.1.4", - "qunit-cli": "~0.2.0", - "uglify-js": "2.4.x" - }, - "scripts": { - "test": "npm run test-node && npm run lint", - "lint": "eslint underscore.js test/*.js", - "test-node": "qunit-cli test/*.js", - "test-browser": "npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start", - "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", - "doc": "docco underscore.js" - }, - "license": "MIT", - "files": [ - "underscore.js", - "underscore-min.js", - "underscore-min.map", - "LICENSE" - ], - "gitHead": "e4743ab712b8ab42ad4ccb48b155034d02394e4d", - "bugs": { - "url": "https://github.com/jashkenas/underscore/issues" - }, - "_id": "underscore@1.8.3", - "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022", - "_from": "underscore@>=1.7.0 <2.0.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "jashkenas", - "email": "jashkenas@gmail.com" - }, - "maintainers": [ - { - "name": "jashkenas", - "email": "jashkenas@gmail.com" - } - ], - "dist": { - "shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022", - "tarball": "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/node_modules/underscore/underscore-min.js b/node_modules/pryjs/node_modules/underscore/underscore-min.js deleted file mode 100644 index f01025b..0000000 --- a/node_modules/pryjs/node_modules/underscore/underscore-min.js +++ /dev/null @@ -1,6 +0,0 @@ -// Underscore.js 1.8.3 -// http://underscorejs.org -// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); -//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/underscore/underscore-min.map b/node_modules/pryjs/node_modules/underscore/underscore-min.map deleted file mode 100644 index cf356bf..0000000 --- a/node_modules/pryjs/node_modules/underscore/underscore-min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WA4KC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+ZtD,QAASO,GAA2Bd,GAClC,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAASW,EAAUH,GACnBT,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAsBZ,QAASa,GAAkBnB,EAAKoB,EAAeC,GAC7C,MAAO,UAASN,EAAOO,EAAMC,GAC3B,GAAIC,GAAI,EAAGjB,EAASW,EAAUH,EAC9B,IAAkB,gBAAPQ,GACLvB,EAAM,EACNwB,EAAID,GAAO,EAAIA,EAAME,KAAKC,IAAIH,EAAMhB,EAAQiB,GAE5CjB,EAASgB,GAAO,EAAIE,KAAKE,IAAIJ,EAAM,EAAGhB,GAAUgB,EAAMhB,EAAS,MAE9D,IAAIc,GAAeE,GAAOhB,EAE/B,MADAgB,GAAMF,EAAYN,EAAOO,GAClBP,EAAMQ,KAASD,EAAOC,GAAO,CAEtC,IAAID,IAASA,EAEX,MADAC,GAAMH,EAAcQ,EAAMC,KAAKd,EAAOS,EAAGjB,GAASK,EAAEkB,OAC7CP,GAAO,EAAIA,EAAMC,GAAK,CAE/B,KAAKD,EAAMvB,EAAM,EAAIwB,EAAIjB,EAAS,EAAGgB,GAAO,GAAWhB,EAANgB,EAAcA,GAAOvB,EACpE,GAAIe,EAAMQ,KAASD,EAAM,MAAOC,EAElC,QAAQ,GAqPZ,QAASQ,GAAoB7B,EAAKG,GAChC,GAAI2B,GAAaC,EAAmB1B,OAChC2B,EAAchC,EAAIgC,YAClBC,EAASvB,EAAEwB,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFI3B,EAAE4B,IAAItC,EAAKqC,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAAOlC,EAAKqC,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQrC,IAAOA,EAAIqC,KAAUJ,EAAMI,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAChElC,EAAKqC,KAAKH,GA74BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAK/B,EAG1BkC,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9Bd,EAAmBkB,EAAWlB,MAC9BuB,EAAmBb,EAASa,SAC5BC,EAAmBd,EAASc,eAK5BC,EAAqBN,MAAMO,QAC3BC,EAAqBP,OAAO3C,KAC5BmD,EAAqBP,EAAUQ,KAC/BC,EAAqBV,OAAOW,OAG1BC,EAAO,aAGPhD,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB0C,eAAgBhC,QACtBgC,KAAKiB,SAAW3D,GADiB,GAAIU,GAAEV,GAOlB,oBAAZ4D,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUlD,GAE7BkD,QAAQlD,EAAIA,GAEZ+B,EAAK/B,EAAIA,EAIXA,EAAEoD,QAAU,OAKZ,IAAItD,GAAa,SAASuD,EAAMxD,EAASyD,GACvC,GAAIzD,QAAiB,GAAG,MAAOwD,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKpC,KAAKpB,EAAS0D,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOC,GAC7B,MAAOH,GAAKpC,KAAKpB,EAAS0D,EAAOC,GAEnC,KAAK,GAAG,MAAO,UAASD,EAAO7D,EAAO+D,GACpC,MAAOJ,GAAKpC,KAAKpB,EAAS0D,EAAO7D,EAAO+D,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaH,EAAO7D,EAAO+D,GACjD,MAAOJ,GAAKpC,KAAKpB,EAAS6D,EAAaH,EAAO7D,EAAO+D,IAGzD,MAAO,YACL,MAAOJ,GAAKM,MAAM9D,EAASI,aAO3BI,EAAK,SAASkD,EAAO1D,EAASyD,GAChC,MAAa,OAATC,EAAsBvD,EAAE4D,SACxB5D,EAAEwB,WAAW+B,GAAezD,EAAWyD,EAAO1D,EAASyD,GACvDtD,EAAE6D,SAASN,GAAevD,EAAE8D,QAAQP,GACjCvD,EAAE+D,SAASR,GAEpBvD,GAAET,SAAW,SAASgE,EAAO1D,GAC3B,MAAOQ,GAAGkD,EAAO1D,EAASmE,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAAS7E,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD0E,GAASnE,UAAUP,GACnBD,EAAOyE,EAASE,GAChBC,EAAI5E,EAAKE,OACJiB,EAAI,EAAOyD,EAAJzD,EAAOA,IAAK,CAC1B,GAAI0D,GAAM7E,EAAKmB,EACVuD,IAAiB7E,EAAIgF,SAAc,KAAGhF,EAAIgF,GAAOF,EAAOE,IAGjE,MAAOhF,KAKPiF,EAAa,SAAS9C,GACxB,IAAKzB,EAAE6D,SAASpC,GAAY,QAC5B,IAAIqB,EAAc,MAAOA,GAAarB,EACtCuB,GAAKvB,UAAYA,CACjB,IAAI+C,GAAS,GAAIxB,EAEjB,OADAA,GAAKvB,UAAY,KACV+C,GAGLT,EAAW,SAASO,GACtB,MAAO,UAAShF,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIgF,KAQlCG,EAAkB5D,KAAK6D,IAAI,EAAG,IAAM,EACpCpE,EAAYyD,EAAS,UACrBhE,EAAc,SAAS0D,GACzB,GAAI9D,GAASW,EAAUmD,EACvB,OAAwB,gBAAV9D,IAAsBA,GAAU,GAAe8E,GAAV9E,EASrDK,GAAE2E,KAAO3E,EAAE4E,QAAU,SAAStF,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAIe,GAAGjB,CACP,IAAII,EAAYT,GACd,IAAKsB,EAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC3CrB,EAASD,EAAIsB,GAAIA,EAAGtB,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAC5CrB,EAASD,EAAIG,EAAKmB,IAAKnB,EAAKmB,GAAItB,GAGpC,MAAOA,IAITU,EAAE6E,IAAM7E,EAAE8E,QAAU,SAASxF,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBoF,EAAU5C,MAAMxC,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtCqF,GAAQrF,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOyF,IA+BT/E,EAAEgF,OAAShF,EAAEiF,MAAQjF,EAAEkF,OAAS/F,EAAa,GAG7Ca,EAAEmF,YAAcnF,EAAEoF,MAAQjG,GAAc,GAGxCa,EAAEqF,KAAOrF,EAAEsF,OAAS,SAAShG,EAAKc,EAAWP,GAC3C,GAAIyE,EAMJ,OAJEA,GADEvE,EAAYT,GACRU,EAAEuF,UAAUjG,EAAKc,EAAWP,GAE5BG,EAAEwF,QAAQlG,EAAKc,EAAWP,GAE9ByE,QAAa,IAAKA,KAAS,EAAUhF,EAAIgF,GAA7C,QAKFtE,EAAEyF,OAASzF,EAAE0F,OAAS,SAASpG,EAAKc,EAAWP,GAC7C,GAAIkF,KAKJ,OAJA3E,GAAYC,EAAGD,EAAWP,GAC1BG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC7BvF,EAAUmD,EAAO7D,EAAOiG,IAAOZ,EAAQjD,KAAKyB,KAE3CwB,GAIT/E,EAAE4F,OAAS,SAAStG,EAAKc,EAAWP,GAClC,MAAOG,GAAEyF,OAAOnG,EAAKU,EAAE6F,OAAOxF,EAAGD,IAAaP,IAKhDG,EAAE8F,MAAQ9F,EAAE+F,IAAM,SAASzG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEgG,KAAOhG,EAAEiG,IAAM,SAAS3G,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAE6B,SAAW7B,EAAEkG,SAAWlG,EAAEmG,QAAU,SAAS7G,EAAKoB,EAAM0F,EAAWC,GAGnE,MAFKtG,GAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,KACd,gBAAb8G,IAAyBC,KAAOD,EAAY,GAChDpG,EAAEuG,QAAQjH,EAAKoB,EAAM0F,IAAc,GAI5CpG,EAAEwG,OAAS,SAASlH,EAAKmH,GACvB,GAAIC,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7B0G,EAAS3G,EAAEwB,WAAWiF,EAC1B,OAAOzG,GAAE6E,IAAIvF,EAAK,SAASiE,GACzB,GAAIF,GAAOsD,EAASF,EAASlD,EAAMkD,EACnC,OAAe,OAARpD,EAAeA,EAAOA,EAAKM,MAAMJ,EAAOmD,MAKnD1G,EAAE4G,MAAQ,SAAStH,EAAKgF,GACtB,MAAOtE,GAAE6E,IAAIvF,EAAKU,EAAE+D,SAASO,KAK/BtE,EAAE6G,MAAQ,SAASvH,EAAKwH,GACtB,MAAO9G,GAAEyF,OAAOnG,EAAKU,EAAE8D,QAAQgD,KAKjC9G,EAAE+G,UAAY,SAASzH,EAAKwH,GAC1B,MAAO9G,GAAEqF,KAAK/F,EAAKU,EAAE8D,QAAQgD,KAI/B9G,EAAEc,IAAM,SAASxB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,GAAUR,IAAUiD,GAAgBjD,GAExC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACR2C,EAAQiB,IACVA,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IAC9BqB,EAAWC,GAAgBD,KAAchD,KAAYQ,KAAYR,OACnEQ,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAITxE,EAAEe,IAAM,SAASzB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,EAASR,IAAUiD,EAAejD,GAEtC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACA4D,EAARjB,IACFiB,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IACnBsB,EAAXD,GAAwChD,MAAbgD,GAAoChD,MAAXQ,KACtDA,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAKTxE,EAAEkH,QAAU,SAAS5H,GAInB,IAAK,GAAe6H,GAHhBC,EAAMrH,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,GACxCK,EAASyH,EAAIzH,OACb0H,EAAWlF,MAAMxC,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCyH,EAAOnH,EAAEsH,OAAO,EAAG5H,GACfyH,IAASzH,IAAO2H,EAAS3H,GAAS2H,EAASF,IAC/CE,EAASF,GAAQC,EAAI1H,EAEvB,OAAO2H,IAMTrH,EAAEuH,OAAS,SAASjI,EAAKkI,EAAGnB,GAC1B,MAAS,OAALmB,GAAanB,GACVtG,EAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,IAC/BA,EAAIU,EAAEsH,OAAOhI,EAAIK,OAAS,KAE5BK,EAAEkH,QAAQ5H,GAAK0B,MAAM,EAAGH,KAAKC,IAAI,EAAG0G,KAI7CxH,EAAEyH,OAAS,SAASnI,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAE4G,MAAM5G,EAAE6E,IAAIvF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC/C,OACEpC,MAAOA,EACP7D,MAAOA,EACPgI,SAAUnI,EAASgE,EAAO7D,EAAOiG,MAElCgC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAKlI,MAAQmI,EAAMnI,QACxB,SAIN,IAAIsI,GAAQ,SAASC,GACnB,MAAO,UAAS3I,EAAKC,EAAUM,GAC7B,GAAI2E,KAMJ,OALAjF,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,GAC1B,GAAI4E,GAAM/E,EAASgE,EAAO7D,EAAOJ,EACjC2I,GAASzD,EAAQjB,EAAOe,KAEnBE,GAMXxE,GAAEkI,QAAUF,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,GAAKxC,KAAKyB,GAAaiB,EAAOF,IAAQf,KAKvEvD,EAAEmI,QAAUH,EAAM,SAASxD,EAAQjB,EAAOe,GACxCE,EAAOF,GAAOf,IAMhBvD,EAAEoI,QAAUJ,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5DtE,EAAEqI,QAAU,SAAS/I,GACnB,MAAKA,GACDU,EAAE0C,QAAQpD,GAAa0B,EAAMC,KAAK3B,GAClCS,EAAYT,GAAaU,EAAE6E,IAAIvF,EAAKU,EAAE4D,UACnC5D,EAAEsG,OAAOhH,OAIlBU,EAAEsI,KAAO,SAAShJ,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEuI,UAAY,SAASjJ,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAI2I,MAAWC,IAIf,OAHAzI,GAAE2E,KAAKrF,EAAK,SAASiE,EAAOe,EAAKhF,IAC9Bc,EAAUmD,EAAOe,EAAKhF,GAAOkJ,EAAOC,GAAM3G,KAAKyB,MAE1CiF,EAAMC,IAShBzI,EAAE0I,MAAQ1I,EAAE2I,KAAO3I,EAAE4I,KAAO,SAASzI,EAAOqH,EAAGnB,GAC7C,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAM,GAC9BH,EAAE6I,QAAQ1I,EAAOA,EAAMR,OAAS6H,IAMzCxH,EAAE6I,QAAU,SAAS1I,EAAOqH,EAAGnB,GAC7B,MAAOrF,GAAMC,KAAKd,EAAO,EAAGU,KAAKC,IAAI,EAAGX,EAAMR,QAAe,MAAL6H,GAAanB,EAAQ,EAAImB,MAKnFxH,EAAE8I,KAAO,SAAS3I,EAAOqH,EAAGnB,GAC1B,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAMA,EAAMR,OAAS,GAC7CK,EAAE+I,KAAK5I,EAAOU,KAAKC,IAAI,EAAGX,EAAMR,OAAS6H,KAMlDxH,EAAE+I,KAAO/I,EAAEgJ,KAAOhJ,EAAEiJ,KAAO,SAAS9I,EAAOqH,EAAGnB,GAC5C,MAAOrF,GAAMC,KAAKd,EAAY,MAALqH,GAAanB,EAAQ,EAAImB,IAIpDxH,EAAEkJ,QAAU,SAAS/I,GACnB,MAAOH,GAAEyF,OAAOtF,EAAOH,EAAE4D,UAI3B,IAAIuF,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAa7I,EAAM,EACdC,EAAI2I,GAAc,EAAG5J,EAASW,EAAU8I,GAAYzJ,EAAJiB,EAAYA,IAAK,CACxE,GAAI2C,GAAQ6F,EAAMxI,EAClB,IAAIb,EAAYwD,KAAWvD,EAAE0C,QAAQa,IAAUvD,EAAEyJ,YAAYlG,IAAS,CAE/D8F,IAAS9F,EAAQ4F,EAAQ5F,EAAO8F,EAASC,GAC9C,IAAII,GAAI,EAAGC,EAAMpG,EAAM5D,MAEvB,KADA6J,EAAO7J,QAAUgK,EACNA,EAAJD,GACLF,EAAO7I,KAAS4C,EAAMmG,SAEdJ,KACVE,EAAO7I,KAAS4C,GAGpB,MAAOiG,GAITxJ,GAAEmJ,QAAU,SAAShJ,EAAOkJ,GAC1B,MAAOF,GAAQhJ,EAAOkJ,GAAS,IAIjCrJ,EAAE4J,QAAU,SAASzJ,GACnB,MAAOH,GAAE6J,WAAW1J,EAAOa,EAAMC,KAAKhB,UAAW,KAMnDD,EAAE8J,KAAO9J,EAAE+J,OAAS,SAAS5J,EAAO6J,EAAUzK,EAAUM,GACjDG,EAAEiK,UAAUD,KACfnK,EAAUN,EACVA,EAAWyK,EACXA,GAAW,GAEG,MAAZzK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFD2E,MACA0F,KACKtJ,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAI2C,GAAQpD,EAAMS,GACdoG,EAAWzH,EAAWA,EAASgE,EAAO3C,EAAGT,GAASoD,CAClDyG,IACGpJ,GAAKsJ,IAASlD,GAAUxC,EAAO1C,KAAKyB,GACzC2G,EAAOlD,GACEzH,EACJS,EAAE6B,SAASqI,EAAMlD,KACpBkD,EAAKpI,KAAKkF,GACVxC,EAAO1C,KAAKyB,IAEJvD,EAAE6B,SAAS2C,EAAQjB,IAC7BiB,EAAO1C,KAAKyB,GAGhB,MAAOiB,IAKTxE,EAAEmK,MAAQ,WACR,MAAOnK,GAAE8J,KAAKX,EAAQlJ,WAAW,GAAM,KAKzCD,EAAEoK,aAAe,SAASjK,GAGxB,IAAK,GAFDqE,MACA6F,EAAapK,UAAUN,OAClBiB,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAIF,GAAOP,EAAMS,EACjB,KAAIZ,EAAE6B,SAAS2C,EAAQ9D,GAAvB,CACA,IAAK,GAAIgJ,GAAI,EAAOW,EAAJX,GACT1J,EAAE6B,SAAS5B,UAAUyJ,GAAIhJ,GADAgJ,KAG5BA,IAAMW,GAAY7F,EAAO1C,KAAKpB,IAEpC,MAAO8D,IAKTxE,EAAE6J,WAAa,SAAS1J,GACtB,GAAI4I,GAAOI,EAAQlJ,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEyF,OAAOtF,EAAO,SAASoD,GAC9B,OAAQvD,EAAE6B,SAASkH,EAAMxF,MAM7BvD,EAAEsK,IAAM,WACN,MAAOtK,GAAEuK,MAAMtK,YAKjBD,EAAEuK,MAAQ,SAASpK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEc,IAAIX,EAAOG,GAAWX,QAAU,EACpD6E,EAASrC,MAAMxC,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClC8E,EAAO9E,GAASM,EAAE4G,MAAMzG,EAAOT,EAEjC,OAAO8E,IAMTxE,EAAEwK,OAAS,SAAS7E,EAAMW,GAExB,IAAK,GADD9B,MACK5D,EAAI,EAAGjB,EAASW,EAAUqF,GAAWhG,EAAJiB,EAAYA,IAChD0F,EACF9B,EAAOmB,EAAK/E,IAAM0F,EAAO1F,GAEzB4D,EAAOmB,EAAK/E,GAAG,IAAM+E,EAAK/E,GAAG,EAGjC,OAAO4D,IAiBTxE,EAAEuF,UAAYrF,EAA2B,GACzCF,EAAEyK,cAAgBvK,GAA4B,GAI9CF,EAAES,YAAc,SAASN,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI0D,GAAQhE,EAASD,GACjBoL,EAAM,EAAGC,EAAOrK,EAAUH,GACjBwK,EAAND,GAAY,CACjB,GAAIE,GAAM/J,KAAKgK,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQrH,EAAOmH,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAgCT1K,EAAEuG,QAAUhG,EAAkB,EAAGP,EAAEuF,UAAWvF,EAAES,aAChDT,EAAE8K,YAAcvK,GAAmB,EAAGP,EAAEyK,eAKxCzK,EAAE+K,MAAQ,SAASC,EAAOC,EAAMC,GAClB,MAARD,IACFA,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDvL,GAASkB,KAAKC,IAAID,KAAKsK,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQ5I,MAAMxC,GAETgB,EAAM,EAAShB,EAANgB,EAAcA,IAAOqK,GAASE,EAC9CH,EAAMpK,GAAOqK,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWzL,EAAS0L,EAAgB7E,GAC1E,KAAM6E,YAA0BD,IAAY,MAAOD,GAAW1H,MAAM9D,EAAS6G,EAC7E,IAAI8E,GAAOjH,EAAW8G,EAAW5J,WAC7B+C,EAAS6G,EAAW1H,MAAM6H,EAAM9E,EACpC,OAAI1G,GAAE6D,SAASW,GAAgBA,EACxBgH,EAMTxL,GAAE6C,KAAO,SAASQ,EAAMxD,GACtB,GAAI+C,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWe,MAAMN,EAAMrC,EAAMC,KAAKhB,UAAW,GAChG,KAAKD,EAAEwB,WAAW6B,GAAO,KAAM,IAAIoI,WAAU,oCAC7C,IAAI/E,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7ByL,EAAQ,WACV,MAAON,GAAa/H,EAAMqI,EAAO7L,EAASmC,KAAM0E,EAAKiF,OAAO3K,EAAMC,KAAKhB,aAEzE,OAAOyL,IAMT1L,EAAE4L,QAAU,SAASvI,GACnB,GAAIwI,GAAY7K,EAAMC,KAAKhB,UAAW,GAClCyL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGnM,EAASkM,EAAUlM,OACjC+G,EAAOvE,MAAMxC,GACRiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B8F,EAAK9F,GAAKiL,EAAUjL,KAAOZ,EAAIC,UAAU6L,KAAcD,EAAUjL,EAEnE,MAAOkL,EAAW7L,UAAUN,QAAQ+G,EAAK5E,KAAK7B,UAAU6L,KACxD,OAAOV,GAAa/H,EAAMqI,EAAO1J,KAAMA,KAAM0E,GAE/C,OAAOgF,IAMT1L,EAAE+L,QAAU,SAASzM,GACnB,GAAIsB,GAA8B0D,EAA3B3E,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIqM,OAAM,wCACjC,KAAKpL,EAAI,EAAOjB,EAAJiB,EAAYA,IACtB0D,EAAMrE,UAAUW,GAChBtB,EAAIgF,GAAOtE,EAAE6C,KAAKvD,EAAIgF,GAAMhF,EAE9B,OAAOA,IAITU,EAAEiM,QAAU,SAAS5I,EAAM6I,GACzB,GAAID,GAAU,SAAS3H,GACrB,GAAI6H,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOvI,MAAM3B,KAAM/B,WAAaqE,EAE7D,OADKtE,GAAE4B,IAAIuK,EAAOC,KAAUD,EAAMC,GAAW/I,EAAKM,MAAM3B,KAAM/B,YACvDkM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKTjM,EAAEqM,MAAQ,SAAShJ,EAAMiJ,GACvB,GAAI5F,GAAO1F,EAAMC,KAAKhB,UAAW,EACjC,OAAOsM,YAAW,WAChB,MAAOlJ,GAAKM,MAAM,KAAM+C,IACvB4F,IAKLtM,EAAEwM,MAAQxM,EAAE4L,QAAQ5L,EAAEqM,MAAOrM,EAAG,GAOhCA,EAAEyM,SAAW,SAASpJ,EAAMiJ,EAAMI,GAChC,GAAI7M,GAAS6G,EAAMlC,EACfmI,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI9M,EAAE+M,MAC7CJ,EAAU,KACVnI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,MAEjC,OAAO,YACL,GAAIqG,GAAM/M,EAAE+M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA/M,GAAUmC,KACV0E,EAAOzG,UACU,GAAb+M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXvI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,OACrBiG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBxI,IAQXxE,EAAEmN,SAAW,SAAS9J,EAAMiJ,EAAMc,GAChC,GAAIT,GAASjG,EAAM7G,EAASwN,EAAW7I,EAEnCqI,EAAQ,WACV,GAAI/D,GAAO9I,EAAE+M,MAAQM,CAEVf,GAAPxD,GAAeA,GAAQ,EACzB6D,EAAUJ,WAAWM,EAAOP,EAAOxD,IAEnC6D,EAAU,KACLS,IACH5I,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,QAKrC,OAAO,YACL7G,EAAUmC,KACV0E,EAAOzG,UACPoN,EAAYrN,EAAE+M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACF9I,EAASnB,EAAKM,MAAM9D,EAAS6G,GAC7B7G,EAAU6G,EAAO,MAGZlC,IAOXxE,EAAEuN,KAAO,SAASlK,EAAMmK,GACtB,MAAOxN,GAAE4L,QAAQ4B,EAASnK,IAI5BrD,EAAE6F,OAAS,SAASzF,GAClB,MAAO,YACL,OAAQA,EAAUuD,MAAM3B,KAAM/B,aAMlCD,EAAEyN,QAAU,WACV,GAAI/G,GAAOzG,UACP+K,EAAQtE,EAAK/G,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIiB,GAAIoK,EACJxG,EAASkC,EAAKsE,GAAOrH,MAAM3B,KAAM/B,WAC9BW,KAAK4D,EAASkC,EAAK9F,GAAGK,KAAKe,KAAMwC,EACxC,OAAOA,KAKXxE,EAAE0N,MAAQ,SAASC,EAAOtK,GACxB,MAAO,YACL,QAAMsK,EAAQ,EACLtK,EAAKM,MAAM3B,KAAM/B,WAD1B,SAOJD,EAAE4N,OAAS,SAASD,EAAOtK,GACzB,GAAI7D,EACJ,OAAO,YAKL,QAJMmO,EAAQ,IACZnO,EAAO6D,EAAKM,MAAM3B,KAAM/B,YAEb,GAAT0N,IAAYtK,EAAO,MAChB7D,IAMXQ,EAAE6N,KAAO7N,EAAE4L,QAAQ5L,EAAE4N,OAAQ,EAM7B,IAAIE,KAAevL,SAAU,MAAMwL,qBAAqB,YACpD1M,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DrB,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIqD,EAAY,MAAOA,GAAWrD,EAClC,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAASU,EAAE4B,IAAItC,EAAKgF,IAAM7E,EAAKqC,KAAKwC,EAGpD,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEgO,QAAU,SAAS1O,GACnB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAAKG,EAAKqC,KAAKwC,EAG/B,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEsG,OAAS,SAAShH,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACd2G,EAASnE,MAAMxC,GACViB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B0F,EAAO1F,GAAKtB,EAAIG,EAAKmB,GAEvB,OAAO0F,IAKTtG,EAAEiO,UAAY,SAAS3O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACdoF,KAEKrF,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClBqF,EAAQnF,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOyF,IAIX/E,EAAEkO,MAAQ,SAAS5O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACduO,EAAQ/L,MAAMxC,GACTiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1BsN,EAAMtN,IAAMnB,EAAKmB,GAAItB,EAAIG,EAAKmB,IAEhC,OAAOsN,IAITlO,EAAEmO,OAAS,SAAS7O,GAGlB,IAAK,GAFDkF,MACA/E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAChD4D,EAAOlF,EAAIG,EAAKmB,KAAOnB,EAAKmB,EAE9B,OAAO4D,IAKTxE,EAAEoO,UAAYpO,EAAEqO,QAAU,SAAS/O,GACjC,GAAIgP,KACJ,KAAK,GAAIhK,KAAOhF,GACVU,EAAEwB,WAAWlC,EAAIgF,KAAOgK,EAAMxM,KAAKwC,EAEzC,OAAOgK,GAAM3G,QAIf3H,EAAEuO,OAAStK,EAAejE,EAAEgO,SAI5BhO,EAAEwO,UAAYxO,EAAEyO,OAASxK,EAAejE,EAAEP,MAG1CO,EAAEwF,QAAU,SAASlG,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmByE,GAApB7E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAEhD,GADA0D,EAAM7E,EAAKmB,GACPR,EAAUd,EAAIgF,GAAMA,EAAKhF,GAAM,MAAOgF,IAK9CtE,EAAE0O,KAAO,SAASlE,EAAQmE,EAAW9O,GACnC,GAA+BN,GAAUE,EAArC+E,KAAalF,EAAMkL,CACvB,IAAW,MAAPlL,EAAa,MAAOkF,EACpBxE,GAAEwB,WAAWmN,IACflP,EAAOO,EAAEgO,QAAQ1O,GACjBC,EAAWO,EAAW6O,EAAW9O,KAEjCJ,EAAO0J,EAAQlJ,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASgE,EAAOe,EAAKhF,GAAO,MAAOgF,KAAOhF,IACrDA,EAAM8C,OAAO9C,GAEf,KAAK,GAAIsB,GAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAAK,CACrD,GAAI0D,GAAM7E,EAAKmB,GACX2C,EAAQjE,EAAIgF,EACZ/E,GAASgE,EAAOe,EAAKhF,KAAMkF,EAAOF,GAAOf,GAE/C,MAAOiB,IAITxE,EAAE4O,KAAO,SAAStP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEwB,WAAWjC,GACfA,EAAWS,EAAE6F,OAAOtG,OACf,CACL,GAAIE,GAAOO,EAAE6E,IAAIsE,EAAQlJ,WAAW,GAAO,EAAO,GAAI4O,OACtDtP,GAAW,SAASgE,EAAOe,GACzB,OAAQtE,EAAE6B,SAASpC,EAAM6E,IAG7B,MAAOtE,GAAE0O,KAAKpP,EAAKC,EAAUM,IAI/BG,EAAE8O,SAAW7K,EAAejE,EAAEgO,SAAS,GAKvChO,EAAE+C,OAAS,SAAStB,EAAWsN,GAC7B,GAAIvK,GAASD,EAAW9C,EAExB,OADIsN,IAAO/O,EAAEwO,UAAUhK,EAAQuK,GACxBvK,GAITxE,EAAEgP,MAAQ,SAAS1P,GACjB,MAAKU,GAAE6D,SAASvE,GACTU,EAAE0C,QAAQpD,GAAOA,EAAI0B,QAAUhB,EAAEuO,UAAWjP,GADtBA,GAO/BU,EAAEiP,IAAM,SAAS3P,EAAK4P,GAEpB,MADAA,GAAY5P,GACLA,GAITU,EAAEmP,QAAU,SAAS3E,EAAQ1D,GAC3B,GAAIrH,GAAOO,EAAEP,KAAKqH,GAAQnH,EAASF,EAAKE,MACxC,IAAc,MAAV6K,EAAgB,OAAQ7K,CAE5B,KAAK,GADDL,GAAM8C,OAAOoI,GACR5J,EAAI,EAAOjB,EAAJiB,EAAYA,IAAK,CAC/B,GAAI0D,GAAM7E,EAAKmB,EACf,IAAIkG,EAAMxC,KAAShF,EAAIgF,MAAUA,IAAOhF,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI8P,GAAK,SAAStH,EAAGC,EAAGsH,EAAQC,GAG9B,GAAIxH,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAa9H,KAAG8H,EAAIA,EAAE7E,UACtB8E,YAAa/H,KAAG+H,EAAIA,EAAE9E,SAE1B,IAAIsM,GAAYhN,EAAStB,KAAK6G,EAC9B,IAAIyH,IAAchN,EAAStB,KAAK8G,GAAI,OAAO,CAC3C,QAAQwH,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKzH,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAIyH,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL1H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI0H,GAAQ3H,EAAExG,YAAaoO,EAAQ3H,EAAEzG,WACrC,IAAImO,IAAUC,KAAW1P,EAAEwB,WAAWiO,IAAUA,YAAiBA,IACxCzP,EAAEwB,WAAWkO,IAAUA,YAAiBA,KACzC,eAAiB5H,IAAK,eAAiBC,GAC7D,OAAO,EAQXsH,EAASA,MACTC,EAASA,KAET,KADA,GAAI3P,GAAS0P,EAAO1P,OACbA,KAGL,GAAI0P,EAAO1P,KAAYmI,EAAG,MAAOwH,GAAO3P,KAAYoI,CAQtD,IAJAsH,EAAOvN,KAAKgG,GACZwH,EAAOxN,KAAKiG,GAGRyH,EAAW,CAGb,GADA7P,EAASmI,EAAEnI,OACPA,IAAWoI,EAAEpI,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKyP,EAAGtH,EAAEnI,GAASoI,EAAEpI,GAAS0P,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBhL,GAAlB7E,EAAOO,EAAEP,KAAKqI,EAGlB,IAFAnI,EAASF,EAAKE,OAEVK,EAAEP,KAAKsI,GAAGpI,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADA2E,EAAM7E,EAAKE,IACLK,EAAE4B,IAAImG,EAAGzD,KAAQ8K,EAAGtH,EAAExD,GAAMyD,EAAEzD,GAAM+K,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAIT3P,GAAE4P,QAAU,SAAS9H,EAAGC,GACtB,MAAOqH,GAAGtH,EAAGC,IAKf/H,EAAE6P,QAAU,SAASvQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE0C,QAAQpD,IAAQU,EAAE8P,SAASxQ,IAAQU,EAAEyJ,YAAYnK,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE+P,UAAY,SAASzQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAI0Q,WAKvBhQ,EAAE0C,QAAUD,GAAiB,SAASnD,GACpC,MAA8B,mBAAvBiD,EAAStB,KAAK3B,IAIvBU,EAAE6D,SAAW,SAASvE,GACpB,GAAI2Q,SAAc3Q,EAClB,OAAgB,aAAT2Q,GAAgC,WAATA,KAAuB3Q,GAIvDU,EAAE2E,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAASuL,GACxFlQ,EAAE,KAAOkQ,GAAQ,SAAS5Q,GACxB,MAAOiD,GAAStB,KAAK3B,KAAS,WAAa4Q,EAAO,OAMjDlQ,EAAEyJ,YAAYxJ,aACjBD,EAAEyJ,YAAc,SAASnK,GACvB,MAAOU,GAAE4B,IAAItC,EAAK,YAMJ,kBAAP,KAAyC,gBAAb6Q,aACrCnQ,EAAEwB,WAAa,SAASlC,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEoQ,SAAW,SAAS9Q,GACpB,MAAO8Q,UAAS9Q,KAAS4B,MAAMmP,WAAW/Q,KAI5CU,EAAEkB,MAAQ,SAAS5B,GACjB,MAAOU,GAAEsQ,SAAShR,IAAQA,KAASA,GAIrCU,EAAEiK,UAAY,SAAS3K,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBiD,EAAStB,KAAK3B,IAIxDU,EAAEuQ,OAAS,SAASjR,GAClB,MAAe,QAARA,GAITU,EAAEwQ,YAAc,SAASlR,GACvB,MAAOA,SAAa,IAKtBU,EAAE4B,IAAM,SAAStC,EAAKgF,GACpB,MAAc,OAAPhF,GAAekD,EAAevB,KAAK3B,EAAKgF,IAQjDtE,EAAEyQ,WAAa,WAEb,MADA1O,GAAK/B,EAAIiC,EACFD,MAIThC,EAAE4D,SAAW,SAASL,GACpB,MAAOA,IAITvD,EAAE0Q,SAAW,SAASnN,GACpB,MAAO,YACL,MAAOA,KAIXvD,EAAE2Q,KAAO,aAET3Q,EAAE+D,SAAWA,EAGb/D,EAAE4Q,WAAa,SAAStR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASgF,GAC3C,MAAOhF,GAAIgF,KAMftE,EAAE8D,QAAU9D,EAAE6Q,QAAU,SAAS/J,GAE/B,MADAA,GAAQ9G,EAAEwO,aAAc1H,GACjB,SAASxH,GACd,MAAOU,GAAEmP,QAAQ7P,EAAKwH,KAK1B9G,EAAE2N,MAAQ,SAASnG,EAAGjI,EAAUM,GAC9B,GAAIiR,GAAQ3O,MAAMtB,KAAKC,IAAI,EAAG0G,GAC9BjI,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAIe,GAAI,EAAO4G,EAAJ5G,EAAOA,IAAKkQ,EAAMlQ,GAAKrB,EAASqB,EAChD,OAAOkQ,IAIT9Q,EAAEsH,OAAS,SAASvG,EAAKD,GAKvB,MAJW,OAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAMF,KAAKgK,MAAMhK,KAAKyG,UAAYxG,EAAMC,EAAM,KAIvDf,EAAE+M,IAAMgE,KAAKhE,KAAO,WAClB,OAAO,GAAIgE,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAcxR,EAAEmO,OAAO8C,GAGvBQ,EAAgB,SAAS5M,GAC3B,GAAI6M,GAAU,SAASC,GACrB,MAAO9M,GAAI8M,IAGTvN,EAAS,MAAQpE,EAAEP,KAAKoF,GAAK+M,KAAK,KAAO,IACzCC,EAAaC,OAAO1N,GACpB2N,EAAgBD,OAAO1N,EAAQ,IACnC,OAAO,UAAS4N,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9EhS,GAAEmS,OAASV,EAAcR,GACzBjR,EAAEoS,SAAWX,EAAcD,GAI3BxR,EAAEwE,OAAS,SAASgG,EAAQzG,EAAUsO,GACpC,GAAI9O,GAAkB,MAAViH,MAAsB,GAAIA,EAAOzG,EAI7C,OAHIR,SAAe,KACjBA,EAAQ8O,GAEHrS,EAAEwB,WAAW+B,GAASA,EAAMtC,KAAKuJ,GAAUjH,EAKpD,IAAI+O,GAAY,CAChBtS,GAAEuS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCzS,EAAE0S,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxB3R,GAAEqT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWvT,EAAE8O,YAAayE,EAAUvT,EAAE0S,iBAGtC,IAAI5O,GAAUgO,SACXyB,EAASpB,QAAUU,GAASzO,QAC5BmP,EAASX,aAAeC,GAASzO,QACjCmP,EAASZ,UAAYE,GAASzO,QAC/BwN,KAAK,KAAO,KAAM,KAGhBlS,EAAQ,EACR0E,EAAS,QACbkP,GAAKpB,QAAQpO,EAAS,SAAS6N,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZArP,IAAUkP,EAAKtS,MAAMtB,EAAO+T,GAAQvB,QAAQR,EAAS0B,GACrD1T,EAAQ+T,EAAS9B,EAAMhS,OAEnBwS,EACF/N,GAAU,cAAgB+N,EAAS,iCAC1BS,EACTxO,GAAU,cAAgBwO,EAAc,uBAC/BD,IACTvO,GAAU,OAASuO,EAAW,YAIzBhB,IAETvN,GAAU,OAGLmP,EAASG,WAAUtP,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIuP,GAAS,GAAIrR,UAASiR,EAASG,UAAY,MAAO,IAAKtP,GAC3D,MAAOwP,GAEP,KADAA,GAAExP,OAASA,EACLwP,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO1S,KAAKe,KAAM6R,EAAM7T,IAI7B8T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAASjP,OAAS,YAAc0P,EAAW,OAAS1P,EAAS,IAEtDiP,GAITrT,EAAE+T,MAAQ,SAASzU,GACjB,GAAI0U,GAAWhU,EAAEV,EAEjB,OADA0U,GAASC,QAAS,EACXD,EAUT,IAAIxP,GAAS,SAASwP,EAAU1U,GAC9B,MAAO0U,GAASC,OAASjU,EAAEV,GAAKyU,QAAUzU,EAI5CU,GAAEkU,MAAQ,SAAS5U,GACjBU,EAAE2E,KAAK3E,EAAEoO,UAAU9O,GAAM,SAAS4Q,GAChC,GAAI7M,GAAOrD,EAAEkQ,GAAQ5Q,EAAI4Q,EACzBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAIxJ,IAAQ1E,KAAKiB,SAEjB,OADAnB,GAAK6B,MAAM+C,EAAMzG,WACVuE,EAAOxC,KAAMqB,EAAKM,MAAM3D,EAAG0G,QAMxC1G,EAAEkU,MAAMlU,GAGRA,EAAE2E,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAASuL,GAChF,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAI5Q,GAAM0C,KAAKiB,QAGf,OAFAwD,GAAO9C,MAAMrE,EAAKW,WACJ,UAATiQ,GAA6B,WAATA,GAAqC,IAAf5Q,EAAIK,cAAqBL,GAAI,GACrEkF,EAAOxC,KAAM1C,MAKxBU,EAAE2E,MAAM,SAAU,OAAQ,SAAU,SAASuL,GAC3C,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,MAAO1L,GAAOxC,KAAMyE,EAAO9C,MAAM3B,KAAKiB,SAAUhD,eAKpDD,EAAEyB,UAAU8B,MAAQ,WAClB,MAAOvB,MAAKiB,UAKdjD,EAAEyB,UAAU0S,QAAUnU,EAAEyB,UAAU2S,OAASpU,EAAEyB,UAAU8B,MAEvDvD,EAAEyB,UAAUc,SAAW,WACrB,MAAO,GAAKP,KAAKiB,UAUG,kBAAXoR,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOrU,OAGXiB,KAAKe"} \ No newline at end of file diff --git a/node_modules/pryjs/node_modules/underscore/underscore.js b/node_modules/pryjs/node_modules/underscore/underscore.js deleted file mode 100644 index b29332f..0000000 --- a/node_modules/pryjs/node_modules/underscore/underscore.js +++ /dev/null @@ -1,1548 +0,0 @@ -// Underscore.js 1.8.3 -// http://underscorejs.org -// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `exports` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var - push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind, - nativeCreate = Object.create; - - // Naked function reference for surrogate-prototype-swapping. - var Ctor = function(){}; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.8.3'; - - // Internal function that returns an efficient (for current engines) version - // of the passed-in callback, to be repeatedly applied in other Underscore - // functions. - var optimizeCb = function(func, context, argCount) { - if (context === void 0) return func; - switch (argCount == null ? 3 : argCount) { - case 1: return function(value) { - return func.call(context, value); - }; - case 2: return function(value, other) { - return func.call(context, value, other); - }; - case 3: return function(value, index, collection) { - return func.call(context, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(context, accumulator, value, index, collection); - }; - } - return function() { - return func.apply(context, arguments); - }; - }; - - // A mostly-internal function to generate callbacks that can be applied - // to each element in a collection, returning the desired result — either - // identity, an arbitrary callback, a property matcher, or a property accessor. - var cb = function(value, context, argCount) { - if (value == null) return _.identity; - if (_.isFunction(value)) return optimizeCb(value, context, argCount); - if (_.isObject(value)) return _.matcher(value); - return _.property(value); - }; - _.iteratee = function(value, context) { - return cb(value, context, Infinity); - }; - - // An internal function for creating assigner functions. - var createAssigner = function(keysFunc, undefinedOnly) { - return function(obj) { - var length = arguments.length; - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; - }; - - // An internal function for creating a new object that inherits from another. - var baseCreate = function(prototype) { - if (!_.isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; - }; - - var property = function(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; - }; - - // Helper for collection methods to determine whether a collection - // should be iterated as an array or as an object - // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength - // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 - var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; - var getLength = property('length'); - var isArrayLike = function(collection) { - var length = getLength(collection); - return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; - }; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles raw objects in addition to array-likes. Treats all - // sparse array-likes as if they were dense. - _.each = _.forEach = function(obj, iteratee, context) { - iteratee = optimizeCb(iteratee, context); - var i, length; - if (isArrayLike(obj)) { - for (i = 0, length = obj.length; i < length; i++) { - iteratee(obj[i], i, obj); - } - } else { - var keys = _.keys(obj); - for (i = 0, length = keys.length; i < length; i++) { - iteratee(obj[keys[i]], keys[i], obj); - } - } - return obj; - }; - - // Return the results of applying the iteratee to each element. - _.map = _.collect = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - results = Array(length); - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - results[index] = iteratee(obj[currentKey], currentKey, obj); - } - return results; - }; - - // Create a reducing function iterating left or right. - function createReduce(dir) { - // Optimized iterator function as using arguments.length - // in the main function will deoptimize the, see #1991. - function iterator(obj, iteratee, memo, keys, index, length) { - for (; index >= 0 && index < length; index += dir) { - var currentKey = keys ? keys[index] : index; - memo = iteratee(memo, obj[currentKey], currentKey, obj); - } - return memo; - } - - return function(obj, iteratee, memo, context) { - iteratee = optimizeCb(iteratee, context, 4); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - index = dir > 0 ? 0 : length - 1; - // Determine the initial value if none is provided. - if (arguments.length < 3) { - memo = obj[keys ? keys[index] : index]; - index += dir; - } - return iterator(obj, iteratee, memo, keys, index, length); - }; - } - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. - _.reduce = _.foldl = _.inject = createReduce(1); - - // The right-associative version of reduce, also known as `foldr`. - _.reduceRight = _.foldr = createReduce(-1); - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, predicate, context) { - var key; - if (isArrayLike(obj)) { - key = _.findIndex(obj, predicate, context); - } else { - key = _.findKey(obj, predicate, context); - } - if (key !== void 0 && key !== -1) return obj[key]; - }; - - // Return all the elements that pass a truth test. - // Aliased as `select`. - _.filter = _.select = function(obj, predicate, context) { - var results = []; - predicate = cb(predicate, context); - _.each(obj, function(value, index, list) { - if (predicate(value, index, list)) results.push(value); - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, predicate, context) { - return _.filter(obj, _.negate(cb(predicate)), context); - }; - - // Determine whether all of the elements match a truth test. - // Aliased as `all`. - _.every = _.all = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (!predicate(obj[currentKey], currentKey, obj)) return false; - } - return true; - }; - - // Determine if at least one element in the object matches a truth test. - // Aliased as `any`. - _.some = _.any = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (predicate(obj[currentKey], currentKey, obj)) return true; - } - return false; - }; - - // Determine if the array or object contains a given item (using `===`). - // Aliased as `includes` and `include`. - _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - if (typeof fromIndex != 'number' || guard) fromIndex = 0; - return _.indexOf(obj, item, fromIndex) >= 0; - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - var func = isFunc ? method : value[method]; - return func == null ? func : func.apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, _.property(key)); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs) { - return _.filter(obj, _.matcher(attrs)); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.find(obj, _.matcher(attrs)); - }; - - // Return the maximum element (or element-based computation). - _.max = function(obj, iteratee, context) { - var result = -Infinity, lastComputed = -Infinity, - value, computed; - if (iteratee == null && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value > result) { - result = value; - } - } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(value, index, list) { - computed = iteratee(value, index, list); - if (computed > lastComputed || computed === -Infinity && result === -Infinity) { - result = value; - lastComputed = computed; - } - }); - } - return result; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iteratee, context) { - var result = Infinity, lastComputed = Infinity, - value, computed; - if (iteratee == null && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value < result) { - result = value; - } - } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(value, index, list) { - computed = iteratee(value, index, list); - if (computed < lastComputed || computed === Infinity && result === Infinity) { - result = value; - lastComputed = computed; - } - }); - } - return result; - }; - - // Shuffle a collection, using the modern version of the - // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). - _.shuffle = function(obj) { - var set = isArrayLike(obj) ? obj : _.values(obj); - var length = set.length; - var shuffled = Array(length); - for (var index = 0, rand; index < length; index++) { - rand = _.random(0, index); - if (rand !== index) shuffled[index] = shuffled[rand]; - shuffled[rand] = set[index]; - } - return shuffled; - }; - - // Sample **n** random values from a collection. - // If **n** is not specified, returns a single random element. - // The internal `guard` argument allows it to work with `map`. - _.sample = function(obj, n, guard) { - if (n == null || guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - return obj[_.random(obj.length - 1)]; - } - return _.shuffle(obj).slice(0, Math.max(0, n)); - }; - - // Sort the object's values by a criterion produced by an iteratee. - _.sortBy = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value: value, - index: index, - criteria: iteratee(value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index - right.index; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(behavior) { - return function(obj, iteratee, context) { - var result = {}; - iteratee = cb(iteratee, context); - _.each(obj, function(value, index) { - var key = iteratee(value, index, obj); - behavior(result, value, key); - }); - return result; - }; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = group(function(result, value, key) { - if (_.has(result, key)) result[key].push(value); else result[key] = [value]; - }); - - // Indexes the object's values by a criterion, similar to `groupBy`, but for - // when you know that your index values will be unique. - _.indexBy = group(function(result, value, key) { - result[key] = value; - }); - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = group(function(result, value, key) { - if (_.has(result, key)) result[key]++; else result[key] = 1; - }); - - // Safely create a real, live array from anything iterable. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (isArrayLike(obj)) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : _.keys(obj).length; - }; - - // Split a collection into two arrays: one whose elements all satisfy the given - // predicate, and one whose elements all do not satisfy the predicate. - _.partition = function(obj, predicate, context) { - predicate = cb(predicate, context); - var pass = [], fail = []; - _.each(obj, function(value, key, obj) { - (predicate(value, key, obj) ? pass : fail).push(value); - }); - return [pass, fail]; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - if (n == null || guard) return array[0]; - return _.initial(array, array.length - n); - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. - _.initial = function(array, n, guard) { - return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if (n == null || guard) return array[array.length - 1]; - return _.rest(array, Math.max(0, array.length - n)); - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, strict, startIndex) { - var output = [], idx = 0; - for (var i = startIndex || 0, length = getLength(input); i < length; i++) { - var value = input[i]; - if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { - //flatten current level of array or arguments object - if (!shallow) value = flatten(value, shallow, strict); - var j = 0, len = value.length; - output.length += len; - while (j < len) { - output[idx++] = value[j++]; - } - } else if (!strict) { - output[idx++] = value; - } - } - return output; - }; - - // Flatten out an array, either recursively (by default), or just one level. - _.flatten = function(array, shallow) { - return flatten(array, shallow, false); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iteratee, context) { - if (!_.isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!_.contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!_.contains(result, value)) { - result.push(value); - } - } - return result; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(flatten(arguments, true, true)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (_.contains(result, item)) continue; - for (var j = 1; j < argsLength; j++) { - if (!_.contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = flatten(arguments, true, true, 1); - return _.filter(array, function(value){ - return !_.contains(rest, value); - }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - return _.unzip(arguments); - }; - - // Complement of _.zip. Unzip accepts an array of arrays and groups - // each array's elements on shared indices - _.unzip = function(array) { - var length = array && _.max(array, getLength).length || 0; - var result = Array(length); - - for (var index = 0; index < length; index++) { - result[index] = _.pluck(array, index); - } - return result; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // Generator function to create the findIndex and findLastIndex functions - function createPredicateIndexFinder(dir) { - return function(array, predicate, context) { - predicate = cb(predicate, context); - var length = getLength(array); - var index = dir > 0 ? 0 : length - 1; - for (; index >= 0 && index < length; index += dir) { - if (predicate(array[index], index, array)) return index; - } - return -1; - }; - } - - // Returns the first index on an array-like that passes a predicate test - _.findIndex = createPredicateIndexFinder(1); - _.findLastIndex = createPredicateIndexFinder(-1); - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iteratee, context) { - iteratee = cb(iteratee, context, 1); - var value = iteratee(obj); - var low = 0, high = getLength(array); - while (low < high) { - var mid = Math.floor((low + high) / 2); - if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; - } - return low; - }; - - // Generator function to create the indexOf and lastIndexOf functions - function createIndexFinder(dir, predicateFind, sortedIndex) { - return function(array, item, idx) { - var i = 0, length = getLength(array); - if (typeof idx == 'number') { - if (dir > 0) { - i = idx >= 0 ? idx : Math.max(idx + length, i); - } else { - length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; - } - } else if (sortedIndex && idx && length) { - idx = sortedIndex(array, item); - return array[idx] === item ? idx : -1; - } - if (item !== item) { - idx = predicateFind(slice.call(array, i, length), _.isNaN); - return idx >= 0 ? idx + i : -1; - } - for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { - if (array[idx] === item) return idx; - } - return -1; - }; - } - - // Return the position of the first occurrence of an item in an array, - // or -1 if the item is not included in the array. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); - _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - step = step || 1; - - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Determines whether to execute a function as a constructor - // or a normal function with the provided arguments - var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { - if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); - var self = baseCreate(sourceFunc.prototype); - var result = sourceFunc.apply(self, args); - if (_.isObject(result)) return result; - return self; - }; - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); - var args = slice.call(arguments, 2); - var bound = function() { - return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); - }; - return bound; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. _ acts - // as a placeholder, allowing any combination of arguments to be pre-filled. - _.partial = function(func) { - var boundArgs = slice.call(arguments, 1); - var bound = function() { - var position = 0, length = boundArgs.length; - var args = Array(length); - for (var i = 0; i < length; i++) { - args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; - } - while (position < arguments.length) args.push(arguments[position++]); - return executeBound(func, bound, this, this, args); - }; - return bound; - }; - - // Bind a number of an object's methods to that object. Remaining arguments - // are the method names to be bound. Useful for ensuring that all callbacks - // defined on an object belong to it. - _.bindAll = function(obj) { - var i, length = arguments.length, key; - if (length <= 1) throw new Error('bindAll must be passed function names'); - for (i = 1; i < length; i++) { - key = arguments[i]; - obj[key] = _.bind(obj[key], obj); - } - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memoize = function(key) { - var cache = memoize.cache; - var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); - return cache[address]; - }; - memoize.cache = {}; - return memoize; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ - return func.apply(null, args); - }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = _.partial(_.delay, _, 1); - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. Normally, the throttled function will run - // as much as it can, without ever going more than once per `wait` duration; - // but if you'd like to disable the execution on the leading edge, pass - // `{leading: false}`. To disable execution on the trailing edge, ditto. - _.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - if (!options) options = {}; - var later = function() { - previous = options.leading === false ? 0 : _.now(); - timeout = null; - result = func.apply(context, args); - if (!timeout) context = args = null; - }; - return function() { - var now = _.now(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - previous = now; - result = func.apply(context, args); - if (!timeout) context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, args, context, timestamp, result; - - var later = function() { - var last = _.now() - timestamp; - - if (last < wait && last >= 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - if (!timeout) context = args = null; - } - } - }; - - return function() { - context = this; - args = arguments; - timestamp = _.now(); - var callNow = immediate && !timeout; - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } - - return result; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return _.partial(wrapper, func); - }; - - // Returns a negated version of the passed-in predicate. - _.negate = function(predicate) { - return function() { - return !predicate.apply(this, arguments); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var args = arguments; - var start = args.length - 1; - return function() { - var i = start; - var result = args[start].apply(this, arguments); - while (i--) result = args[i].call(this, result); - return result; - }; - }; - - // Returns a function that will only be executed on and after the Nth call. - _.after = function(times, func) { - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Returns a function that will only be executed up to (but not including) the Nth call. - _.before = function(times, func) { - var memo; - return function() { - if (--times > 0) { - memo = func.apply(this, arguments); - } - if (times <= 1) func = null; - return memo; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = _.partial(_.before, 2); - - // Object Functions - // ---------------- - - // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. - var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); - var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; - - function collectNonEnumProps(obj, keys) { - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; - - // Constructor is a special case. - var prop = 'constructor'; - if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); - - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { - keys.push(prop); - } - } - } - - // Retrieve the names of an object's own properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = function(obj) { - if (!_.isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; - }; - - // Retrieve all the property names of an object. - _.allKeys = function(obj) { - if (!_.isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[keys[i]]; - } - return values; - }; - - // Returns the results of applying the iteratee to each element of the object - // In contrast to _.map it returns an object - _.mapObject = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = _.keys(obj), - length = keys.length, - results = {}, - currentKey; - for (var index = 0; index < length; index++) { - currentKey = keys[index]; - results[currentKey] = iteratee(obj[currentKey], currentKey, obj); - } - return results; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [keys[i], obj[keys[i]]]; - } - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - var keys = _.keys(obj); - for (var i = 0, length = keys.length; i < length; i++) { - result[obj[keys[i]]] = keys[i]; - } - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = createAssigner(_.allKeys); - - // Assigns a given object with all the own properties in the passed-in object(s) - // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) - _.extendOwn = _.assign = createAssigner(_.keys); - - // Returns the first key on an object that passes a predicate test - _.findKey = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = _.keys(obj), key; - for (var i = 0, length = keys.length; i < length; i++) { - key = keys[i]; - if (predicate(obj[key], key, obj)) return key; - } - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(object, oiteratee, context) { - var result = {}, obj = object, iteratee, keys; - if (obj == null) return result; - if (_.isFunction(oiteratee)) { - keys = _.allKeys(obj); - iteratee = optimizeCb(oiteratee, context); - } else { - keys = flatten(arguments, false, false, 1); - iteratee = function(value, key, obj) { return key in obj; }; - obj = Object(obj); - } - for (var i = 0, length = keys.length; i < length; i++) { - var key = keys[i]; - var value = obj[key]; - if (iteratee(value, key, obj)) result[key] = value; - } - return result; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj, iteratee, context) { - if (_.isFunction(iteratee)) { - iteratee = _.negate(iteratee); - } else { - var keys = _.map(flatten(arguments, false, false, 1), String); - iteratee = function(value, key) { - return !_.contains(keys, key); - }; - } - return _.pick(obj, iteratee, context); - }; - - // Fill in a given object with default properties. - _.defaults = createAssigner(_.allKeys, true); - - // Creates an object that inherits from the given prototype object. - // If additional properties are provided then they will be added to the - // created object. - _.create = function(prototype, props) { - var result = baseCreate(prototype); - if (props) _.extendOwn(result, props); - return result; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Returns whether an object has a given set of `key:value` pairs. - _.isMatch = function(object, attrs) { - var keys = _.keys(attrs), length = keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; - }; - - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - switch (className) { - // Strings, numbers, regular expressions, dates, and booleans are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - } - - var areArrays = className === '[object Array]'; - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && - _.isFunction(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var keys = _.keys(a), key; - length = keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (_.keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = keys[length]; - if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; - return _.keys(obj).length === 0; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) === '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. - _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) === '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE < 9), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return _.has(obj, 'callee'); - }; - } - - // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, - // IE 11 (#1621), and in Safari 8 (#1929). - if (typeof /./ != 'function' && typeof Int8Array != 'object') { - _.isFunction = function(obj) { - return typeof obj == 'function' || false; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj !== +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iteratees. - _.identity = function(value) { - return value; - }; - - // Predicate-generating functions. Often useful outside of Underscore. - _.constant = function(value) { - return function() { - return value; - }; - }; - - _.noop = function(){}; - - _.property = property; - - // Generates a function for a given object that returns a given property. - _.propertyOf = function(obj) { - return obj == null ? function(){} : function(key) { - return obj[key]; - }; - }; - - // Returns a predicate for checking whether an object has a given set of - // `key:value` pairs. - _.matcher = _.matches = function(attrs) { - attrs = _.extendOwn({}, attrs); - return function(obj) { - return _.isMatch(obj, attrs); - }; - }; - - // Run a function **n** times. - _.times = function(n, iteratee, context) { - var accum = Array(Math.max(0, n)); - iteratee = optimizeCb(iteratee, context, 1); - for (var i = 0; i < n; i++) accum[i] = iteratee(i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // A (possibly faster) way to get the current timestamp as an integer. - _.now = Date.now || function() { - return new Date().getTime(); - }; - - // List of HTML entities for escaping. - var escapeMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - var unescapeMap = _.invert(escapeMap); - - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function(map) { - var escaper = function(match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped - var source = '(?:' + _.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function(string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; - _.escape = createEscaper(escapeMap); - _.unescape = createEscaper(unescapeMap); - - // If the value of the named `property` is a function then invoke it with the - // `object` as context; otherwise, return it. - _.result = function(object, property, fallback) { - var value = object == null ? void 0 : object[property]; - if (value === void 0) { - value = fallback; - } - return _.isFunction(value) ? value.call(object) : value; - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\u2028|\u2029/g; - - var escapeChar = function(match) { - return '\\' + escapes[match]; - }; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - // NB: `oldSettings` only exists for backwards compatibility. - _.template = function(text, settings, oldSettings) { - if (!settings && oldSettings) settings = oldSettings; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset).replace(escaper, escapeChar); - index = offset + match.length; - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } else if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } else if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - - // Adobe VMs need the match returned to produce the correct offest. - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + 'return __p;\n'; - - try { - var render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled source as a convenience for precompilation. - var argument = settings.variable || 'obj'; - template.source = 'function(' + argument + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function. Start chaining a wrapped Underscore object. - _.chain = function(obj) { - var instance = _(obj); - instance._chain = true; - return instance; - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(instance, obj) { - return instance._chain ? _(obj).chain() : obj; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - _.each(_.functions(obj), function(name) { - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result(this, func.apply(_, args)); - }; - }); - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; - return result(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - _.each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result(this, method.apply(this._wrapped, arguments)); - }; - }); - - // Extracts the result from a wrapped and chained object. - _.prototype.value = function() { - return this._wrapped; - }; - - // Provide unwrapping proxy for some methods used in engine operations - // such as arithmetic and JSON stringification. - _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; - - _.prototype.toString = function() { - return '' + this._wrapped; - }; - - // AMD registration happens at the end for compatibility with AMD loaders - // that may not enforce next-turn semantics on modules. Even though general - // practice for AMD registration is to be anonymous, underscore registers - // as a named module because, like jQuery, it is a base library that is - // popular enough to be bundled in a third party lib, but not be part of - // an AMD load request. Those cases could generate an error when an - // anonymous define() is called outside of a loader request. - if (typeof define === 'function' && define.amd) { - define('underscore', [], function() { - return _; - }); - } -}.call(this)); diff --git a/node_modules/pryjs/package.json b/node_modules/pryjs/package.json deleted file mode 100644 index 4d8ff85..0000000 --- a/node_modules/pryjs/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "pryjs", - "version": "0.1.3", - "description": "Pry like ability in javascript.", - "main": "lib/pry.js", - "scripts": { - "test": "mocha --recursive --reporter=mocha-pride --compilers coffee:coffee-script/register ./tests && ./node_modules/.bin/cucumber.js" - }, - "author": { - "name": "blainesch" - }, - "license": "MIT", - "dependencies": { - "chalk": "^0.5.1", - "coffee-script": "^1.8.0", - "deasync": "~0.1.2", - "pygmentize-bundled": "^2.3.0", - "underscore": "^1.7.0" - }, - "devDependencies": { - "chai": "^1.10.0", - "cucumber": "^0.4.7", - "grunt": "^0.4.5", - "grunt-contrib-clean": "^0.6.0", - "grunt-contrib-coffee": "^0.12.0", - "mocha": "^2.3.3", - "mocha-pride": "0.0.2", - "sinon": "^1.12.1" - }, - "directories": { - "example": "examples", - "test": "test" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/blainesch/pry.js.git" - }, - "bugs": { - "url": "https://github.com/blainesch/pry.js/issues" - }, - "homepage": "https://github.com/blainesch/pry.js", - "gitHead": "96a13672fe5fbc3ba8e147273dba859fb2ae06de", - "_id": "pryjs@0.1.3", - "_shasum": "c53f5f70500c32f21e83a62d89d683272cdbfc21", - "_from": "pryjs@*", - "_npmVersion": "2.14.4", - "_nodeVersion": "4.1.1", - "_npmUser": { - "name": "blainesch", - "email": "blainesch@gmail.com" - }, - "maintainers": [ - { - "name": "blainesch", - "email": "blainesch@gmail.com" - } - ], - "dist": { - "shasum": "c53f5f70500c32f21e83a62d89d683272cdbfc21", - "tarball": "http://registry.npmjs.org/pryjs/-/pryjs-0.1.3.tgz" - }, - "_resolved": "https://registry.npmjs.org/pryjs/-/pryjs-0.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/pryjs/readme.md b/node_modules/pryjs/readme.md deleted file mode 100644 index 83d01b3..0000000 --- a/node_modules/pryjs/readme.md +++ /dev/null @@ -1,40 +0,0 @@ -## Pryjs - -A interactive repl for node, inspired by [pry](https://github.com/pry/pry). - -[![Build Status](https://travis-ci.org/blainesch/pry.js.svg?branch=master)](https://travis-ci.org/blainesch/pry.js) - -### Installing - -~~~ -npm install --save pryjs -~~~ - -### Usage - -Throw this beautiful snippet in the middle of your code: - -~~~ javascript -pry = require('pryjs') -eval(pry.it) -~~~ - -### Extra Commands - -While you are in the prompt there are a few things you might want to do: -* `help` display all the available commands. -* `kill` completely stop the script. -* `mode` switch between javascript and coffeescript mode. Defaults to javascript. -* `play` play lines of code as if you had entered them. Accepts two integers: start and end. End defaults to start. -* `stop` will exit the pryjs prompt and continue through the app. -* `version` display the current version. -* `whereami` will show you exactly where you are in the code. Accepts two integers to replace the default 5 before and 5 after. -* `wtf` display the last caught exception. - -### Examples - -Examples can be found in the [examples directory](./examples). - -### Screenshots - -![pryjs](./assets/demo.png) diff --git a/node_modules/pryjs/src/pry.coffee b/node_modules/pryjs/src/pry.coffee deleted file mode 100644 index 0ff3082..0000000 --- a/node_modules/pryjs/src/pry.coffee +++ /dev/null @@ -1,18 +0,0 @@ -App = require('./pry/app') - -class Pry - - constructor: -> - @it = "(#{@_pry.toString()}).call(this)" - - _pry: -> - _ = null - pry.open ((input) -> - _ = eval(input) - ).bind(@) - - open: (scope) -> - app = new App(scope) - app.open() - -module.exports = new Pry diff --git a/node_modules/pryjs/src/pry/app.coffee b/node_modules/pryjs/src/pry/app.coffee deleted file mode 100644 index 0565067..0000000 --- a/node_modules/pryjs/src/pry/app.coffee +++ /dev/null @@ -1,41 +0,0 @@ -SyncPrompt = require('./sync_prompt') -Output = require('./output/local_output') -commands = require('./commands') - -class App - - _commands: [] - - constructor: (@scope) -> - @output = new Output() - @prompt = new SyncPrompt({ - typeahead: @typeahead - }) - @prompt.on('data', @find_command) - - commands: -> - if @_commands.length is 0 - @_commands.push new command({@output, @scope}) for i,command of commands - @_commands - - typeahead: (input = '') => - items = [] - for command in @commands() - items = items.concat(command.typeahead(input)) - if input - items = items.filter (item) -> - item.indexOf(input) is 0 - [items, input] - - find_command: (input, chain) => - for command in @commands() - if match = command.match(input.trim()) - args = String(match[1]).trim().split(' ') - return command.execute.call command, args, chain - false - - open: -> - @prompt.type('whereami') - @prompt.open() - -module.exports = App diff --git a/node_modules/pryjs/src/pry/command.coffee b/node_modules/pryjs/src/pry/command.coffee deleted file mode 100644 index f525825..0000000 --- a/node_modules/pryjs/src/pry/command.coffee +++ /dev/null @@ -1,61 +0,0 @@ -File = require('./file') -Range = require('./range') - -class Command - - # List of all initialized commands - @commands = {} - - # The name of your command - name: '' - - # Aliases of the command - aliases: [] - - # Standard definition of your command - definition: '' - - # Additional help information and usage. - help: '' - - # How many arguments you want. Number or range. - args: new Range(0, 0) - - constructor: ({@scope, @output}) -> - @stack = new Error().stack - @constructor.commands[@constructor.name] = @ - - command: (input) -> - for name, command of @commands() - return command if command.constructor.name.match(new RegExp(input, 'i')) - - commands: -> - @constructor.commands - - typeahead: -> - items = @aliases.slice(0) - items.push(@name) - items - - # Generates a regex based on the info given - command_regex: -> - subject = "^(?:#{@name}" - if @aliases.length > 0 - subject += "|#{@aliases.join('|')}" - subject += ")((?: (?:[^ ]+))#{@args.to_regex()})$" - new RegExp(subject) - - match: (input) -> - input.match(@command_regex()) - - find_file: -> - foundCall = false - for item in @stack.split('\n') - if foundCall - [_, file, line] = item.match(/([^ (:]+):(\d+):\d+/) - return new File(file, line) if file isnt '' - else if item.match /Pry\.open/ - foundCall = true - new File(__filename, 1) - -module.exports = Command diff --git a/node_modules/pryjs/src/pry/commands/help.coffee b/node_modules/pryjs/src/pry/commands/help.coffee deleted file mode 100644 index a0522ff..0000000 --- a/node_modules/pryjs/src/pry/commands/help.coffee +++ /dev/null @@ -1,34 +0,0 @@ -Command = require('../command') -Range = require('../range') -chalk = require('chalk') - -class Help extends Command - - name: 'help' - aliases: ['\\?'] - definition: 'Shows a list of commands. Type `help foo` for help on the `foo` command.' - help: 'You just lost the game.' - args: new Range(0, 1) - - typeahead: (input = '') -> - if input.indexOf('help') is 0 - items = [] - for name,command of @commands() - items.push "help #{command.name}" if command.name - items - else - ['help'] - - execute: ([name], chain) -> - if name - command = @command(name) - @output.add(chalk.blue(command.name), '-', command.definition) - @output.add(command.help) - @output.sendAll() - else - for name, command of @commands() - @output.add(chalk.blue(command.name), '-', command.definition) if command.name - @output.sendAll() - chain.next() - -module.exports = Help diff --git a/node_modules/pryjs/src/pry/commands/index.coffee b/node_modules/pryjs/src/pry/commands/index.coffee deleted file mode 100644 index f2f5916..0000000 --- a/node_modules/pryjs/src/pry/commands/index.coffee +++ /dev/null @@ -1,7 +0,0 @@ -fs = require 'fs' - -for file in fs.readdirSync(__dirname) - if file.match(/\.(coffee|js)$/) && !file.match(/index\.(js|coffee)/) - file = file.substr 0, file.indexOf('.') - name = file.substring(0, 1).toUpperCase() + file.substring(1) - exports[name] = require("./#{file}") diff --git a/node_modules/pryjs/src/pry/commands/kill.coffee b/node_modules/pryjs/src/pry/commands/kill.coffee deleted file mode 100644 index 9d7278f..0000000 --- a/node_modules/pryjs/src/pry/commands/kill.coffee +++ /dev/null @@ -1,14 +0,0 @@ -Command = require('../command') - -class Kill extends Command - - name: 'kill!' - aliases: ['kill', 'exit!', 'quit!', 'stop!'] - definition: 'Exits from the entire script.' - - execute: (args, chain) -> - chain.stop() - process.kill() - false - -module.exports = Kill diff --git a/node_modules/pryjs/src/pry/commands/play.coffee b/node_modules/pryjs/src/pry/commands/play.coffee deleted file mode 100644 index f11334d..0000000 --- a/node_modules/pryjs/src/pry/commands/play.coffee +++ /dev/null @@ -1,20 +0,0 @@ -Command = require('../command') -Range = require('../range') - -class Play extends Command - - name: 'play' - definition: 'Play a specific line, or set of lines in the file you are in.' - help: '`play 1 2` will play lines 1 and 2.\n`play 1` will just play line 1.' - args: new Range(1, 2) - - constructor: -> - super - @file = @find_file() - - execute: ([start, end], chain) -> - end ||= start - @command('xecute').execute_code(@file.by_lines(start, end), @file.type()) - chain.next() - -module.exports = Play diff --git a/node_modules/pryjs/src/pry/commands/stop.coffee b/node_modules/pryjs/src/pry/commands/stop.coffee deleted file mode 100644 index 6b827fa..0000000 --- a/node_modules/pryjs/src/pry/commands/stop.coffee +++ /dev/null @@ -1,12 +0,0 @@ -Command = require('../command') - -class Stop extends Command - - name: 'stop' - aliases: ['exit', 'quit'] - definition: 'Ends the current prompt and continues running the rest of the code.' - - execute: (args, chain) -> - chain.stop() - -module.exports = Stop diff --git a/node_modules/pryjs/src/pry/commands/version.coffee b/node_modules/pryjs/src/pry/commands/version.coffee deleted file mode 100644 index 0a4b923..0000000 --- a/node_modules/pryjs/src/pry/commands/version.coffee +++ /dev/null @@ -1,13 +0,0 @@ -Command = require('../command') - -class Version extends Command - - name: 'version' - definition: 'Shows the current version or pry.js you are using.' - - execute: (args, chain) -> - content = require('fs').readFileSync("#{__dirname}/../../../package.json") - @output.send(JSON.parse(content)['version']) - chain.next() - -module.exports = Version diff --git a/node_modules/pryjs/src/pry/commands/whereami.coffee b/node_modules/pryjs/src/pry/commands/whereami.coffee deleted file mode 100644 index 7d0fdd7..0000000 --- a/node_modules/pryjs/src/pry/commands/whereami.coffee +++ /dev/null @@ -1,25 +0,0 @@ -Command = require('../command') -Range = require('../range') - -class Whereami extends Command - - name: 'whereami' - definition: 'Shows you exactly where you are in the code.' - help: '`whereami` - Shows you where you are. -\n`whereami 6` - Gives you 6 lines before instead of 5. -\n`whereami 6 8` - Gives you 6 lines before instead of 5, and 8 lines after.' - args: new Range(0, 2) - - constructor: -> - super - @file = @find_file() - - execute: ([before, after], chain) -> - before ||= 5 - after ||= 5 - start = @file.line - parseInt(before, 10) - end = @file.line + parseInt(after, 10) - @output.send(@file.formatted_content_by_line(start, end)) - chain.next() - -module.exports = Whereami diff --git a/node_modules/pryjs/src/pry/commands/wtf.coffee b/node_modules/pryjs/src/pry/commands/wtf.coffee deleted file mode 100644 index 59a2c99..0000000 --- a/node_modules/pryjs/src/pry/commands/wtf.coffee +++ /dev/null @@ -1,16 +0,0 @@ -Command = require('../command') - -class Wtf extends Command - - name: 'wtf' - definition: 'Shows the last caught exception.' - help: '`wtf` will show you the last caught exception.' - - execute: (args, chain) -> - if @command('xecute').last_error - @output.send(@command('xecute').last_error.stack) - else - @output.send('No errors') - chain.next() - -module.exports = Wtf diff --git a/node_modules/pryjs/src/pry/commands/xecute.coffee b/node_modules/pryjs/src/pry/commands/xecute.coffee deleted file mode 100644 index b309f67..0000000 --- a/node_modules/pryjs/src/pry/commands/xecute.coffee +++ /dev/null @@ -1,38 +0,0 @@ -Command = require('../command') -Range = require('../range') -Compiler = require('../compiler') - -class Xecute extends Command - - name: '' - - last_error: null - - args: new Range(1, Infinity) - - constructor: -> - super - @compiler = new Compiler({@scope}) - - execute: (input, chain) -> - return @switch_mode(chain) if input[0] == 'mode' - @execute_code input.join(' ') - chain.next() - - execute_code: (code, language = null) -> - try - @output.send @compiler.execute(code, language) - catch err - @last_error = err - @output.send err - - switch_mode: (chain) -> - @compiler.toggle_mode() - @output.send "Switched mode to '#{@compiler.mode()}'." - chain.next() - - # Should always fallback to this - match: (input) -> - [input, input] - -module.exports = Xecute diff --git a/node_modules/pryjs/src/pry/compiler.coffee b/node_modules/pryjs/src/pry/compiler.coffee deleted file mode 100644 index 6c3b20f..0000000 --- a/node_modules/pryjs/src/pry/compiler.coffee +++ /dev/null @@ -1,31 +0,0 @@ -coffee = require('coffee-script') -pry = require('../pry') - -class Compiler - - mode_id: 0 - - noVarPattern: /^\s*var .*$/gm - - modes: ['js', 'coffee'] - - constructor: ({@scope}) -> - - mode: -> - @modes[@mode_id] - - toggle_mode: -> - @mode_id = (@mode_id + 1) % @modes.length - - execute: (code, language = @modes[@mode_id]) -> - @["execute_#{language}"](code) - - execute_coffee: (code) -> - @execute_js(coffee - .compile(code, bare: true) - .replace(@noVarPattern, '')) - - execute_js: (code) -> - @scope(code) - -module.exports = Compiler diff --git a/node_modules/pryjs/src/pry/file.coffee b/node_modules/pryjs/src/pry/file.coffee deleted file mode 100644 index 6e13a23..0000000 --- a/node_modules/pryjs/src/pry/file.coffee +++ /dev/null @@ -1,25 +0,0 @@ -fs = require('fs') -SyncHighlight = require('./sync_highlight') - -class File - - constructor: (@name, @line) -> - @line = parseInt(@line) - - type: -> - if @name.match /coffee$/ - 'coffee' - else - 'js' - - by_lines: (start, end = start) -> - @content().split('\n').slice(start - 1, end).join('\n') - - content: -> - @_content ||= fs.readFileSync(@name).toString() - - formatted_content_by_line: (start, end = start, line = @line) -> - start = (if start < 0 then 0 else start) - new SyncHighlight(@content(), @type()).code_snippet(start, end, line) - -module.exports = File diff --git a/node_modules/pryjs/src/pry/output/local_output.coffee b/node_modules/pryjs/src/pry/output/local_output.coffee deleted file mode 100644 index e8da5c3..0000000 --- a/node_modules/pryjs/src/pry/output/local_output.coffee +++ /dev/null @@ -1,16 +0,0 @@ -class LocalOutput - - output: [] - - send: -> - console.log.apply(console.log, arguments) - - add: (args...) -> - @output.push args.join(' ') - - sendAll: -> - @send(@output.join('\n')) - @output = [] - - -module.exports = LocalOutput diff --git a/node_modules/pryjs/src/pry/range.coffee b/node_modules/pryjs/src/pry/range.coffee deleted file mode 100644 index 6ca3624..0000000 --- a/node_modules/pryjs/src/pry/range.coffee +++ /dev/null @@ -1,18 +0,0 @@ -class Range - - start: 0 - end: 0 - - constructor: (@start, @end) -> - throw "Start must be smaller than end" if @start > @end - - includes: (i) -> - @start <= i and i <= @end - - to_regex: -> - if @end == Infinity - "{#{@start},}" - else - "{#{@start},#{@end}}" - -module.exports = Range diff --git a/node_modules/pryjs/src/pry/sync_highlight.coffee b/node_modules/pryjs/src/pry/sync_highlight.coffee deleted file mode 100644 index 04bd18f..0000000 --- a/node_modules/pryjs/src/pry/sync_highlight.coffee +++ /dev/null @@ -1,55 +0,0 @@ -pygmentize = require 'pygmentize-bundled' -deasync = require 'deasync' -chalk = require 'chalk' -util = require 'util' - -class SyncHighlight - - content: null - - type: null - - constructor: (obj, @type = 'javascript') -> - if typeof obj == 'function' - @content = obj.toString() - else if typeof obj == 'string' - @content = obj - else - @content = JSON.stringify(obj, @stringify, "\t") - - stringify: (key, value) -> - return util.inspect(value) if typeof value == 'function' - value - - highlight: -> - if chalk.supportsColor - done = data = false - pygmentize - lang: @type - format: "terminal" - , @content, (err, res) => - done = true - data = res.toString() - deasync.runLoopOnce() until done - else - data = @content - data - - code_snippet: (start, end, line_number, line_pointer = ' => ') -> - lines = @highlight().split('\n') - for line,key in lines - if key+1 == line_number - pointer = line_pointer - else - pointer = @_spaces(line_pointer.length) - lines[key] = "#{pointer}#{@_space(key+1)}#{chalk.cyan(key+1)}: #{line}" - lines.slice(start - 1, end).join('\n') - - # Assumes the biggest line number is 9999 - _space: (line) -> - @_spaces(4 - String(line).length) - - _spaces: (length, char = ' ') -> - new Array(length + 1).join(char) - -module.exports = SyncHighlight diff --git a/node_modules/pryjs/src/pry/sync_prompt.coffee b/node_modules/pryjs/src/pry/sync_prompt.coffee deleted file mode 100644 index 95b777d..0000000 --- a/node_modules/pryjs/src/pry/sync_prompt.coffee +++ /dev/null @@ -1,96 +0,0 @@ -readline = require('readline') -EventEmitter = require('events').EventEmitter -deasync = require('deasync') -_ = require('underscore') - -class MultilineState - - data: '' - - keypress: (input, chars) -> - @data += chars - if @data.match(/(\r|\n)\1$/) - @data = '' - input.state('single') - input.send_data() - else if chars.match(/(\r|\n)$/) - input.prompt() - - prompt: (input, prompt) -> - if @data == '' - input.cli.setPrompt(prompt.replace(/[^>](?!$)/g, '-')) - else - input.cli.setPrompt(prompt.replace(/.(?!$)/g, '.')) - input.cli.prompt() - -class SinglelineState - - keypress: (input, chars) -> - if chars is '\u0016' - input.state('multi') - input.prompt() - else if chars.match(/(\r|\n)$/) - input.send_data() - - prompt: (input, prompt) -> - input.cli.setPrompt(prompt) - input.cli.prompt() - -class SyncPrompt extends EventEmitter - - lines: '' - - count: 0 - - states: - multi: new MultilineState - single: new SinglelineState - - _state: 'single' - - done: false - - constructor: (@options = {}) -> - @options = _.extend(_.pick(process, 'stdin', 'stdout'), @options) - @cli = readline.createInterface - input: @options.stdin - output: @options.stdout - completer: @options.typeahead - @cli.on('line', @line) - @options.stdin.on('data', @keypress) - - state: (state) => - @_state = state if state - @states[@_state] - - line: (line) => - line = line.slice(1) if line.charCodeAt(0) is 22 - @lines += '\n' + line - - keypress: (chars) => - @state().keypress(@, chars.toString()) - - send_data: => - @count++ - @emit('data', @lines.trim(), next: @prompt, stop: @close) - @lines = '' - - prompt: => - @state().prompt(@, "[#{@count}] pryjs> ") - - open: -> - @done = false - @prompt() - deasync.runLoopOnce() until @done - - # Manually trigger input - type: (input) => - @lines = input - @send_data() - - close: => - @done = true - @options.stdin.removeListener('data', @keypress) - @cli.close() - -module.exports = SyncPrompt diff --git a/node_modules/pryjs/tests/app_spec.coffee b/node_modules/pryjs/tests/app_spec.coffee deleted file mode 100644 index f0bb3c5..0000000 --- a/node_modules/pryjs/tests/app_spec.coffee +++ /dev/null @@ -1,69 +0,0 @@ -expect = require('chai').expect -sinon = require('sinon') -App = require('../src/pry/app') - -describe 'app', -> - - subject = null - - command = (ret_match, ret_execute) -> - match: sinon.stub().returns(ret_match) - execute: sinon.stub().returns(ret_execute) - - before (complete) -> - subject = new App - complete() - - describe '#find_command', -> - - describe 'given three commands', -> - - response = null - - before (complete) -> - subject._commands = [ - command(false, false) - command(true, true) - command(true, false) - ] - response = subject.find_command('foo') - complete() - - it 'returns true', -> - expect(response).to.equal true - - it 'calls the second command', -> - expect(subject.commands()[1].execute.calledOnce).to.equal true - - it 'doesnt call the first and third command', -> - expect(subject.commands()[0].execute.calledOnce).to.equal false - expect(subject.commands()[2].execute.calledOnce).to.equal false - - describe '#typeahead', -> - - describe 'given three commands', -> - - before (complete) -> - subject._commands = [ - typeahead: -> ['foo'] - , - typeahead: -> ['bar'] - , - typeahead: -> ['baz'] - ] - complete() - - describe 'given no input', -> - - it 'returns all items', -> - expect(subject.typeahead()[0]).to.deep.equal ['foo', 'bar', 'baz'] - - describe 'given input of "f"', -> - - it 'returns all items', -> - expect(subject.typeahead('f')[0]).to.deep.equal ['foo'] - - describe 'given input of "github"', -> - - it 'returns all items', -> - expect(subject.typeahead('github')[0]).to.deep.equal [] diff --git a/node_modules/pryjs/tests/command_spec.coffee b/node_modules/pryjs/tests/command_spec.coffee deleted file mode 100644 index 7657015..0000000 --- a/node_modules/pryjs/tests/command_spec.coffee +++ /dev/null @@ -1,107 +0,0 @@ -expect = require('chai').expect -Command = require('../src/pry/command') -Range = require('../src/pry/range') - -describe 'Command', -> - - subject = null - - beforeEach (complete) -> - subject = new Command - scope: (p) -> p - output: - send: -> true - complete() - - describe '#command', -> - - beforeEach (complete) -> - subject.constructor.commands = - one: - constructor: - name: 'Blaine' - two: - constructor: - name: 'Sch' - complete() - - it 'matches case insensitive strings', -> - expect(subject.command('blaine').constructor.name).to.equal 'Blaine' - - describe '#typeahead', -> - - describe 'given a name and aliases', -> - - beforeEach (complete) -> - subject.name = 'foobar' - subject.aliases = ['fb', 'gh'] - complete() - - it 'matches case insensitive strings', -> - expect(subject.typeahead()).to.deep.equal ['fb', 'gh', 'foobar'] - - describe '#command_regex', -> - - describe 'given a name of foo and 1-3 arguments', -> - - beforeEach (complete) -> - subject.name = 'foo' - subject.args = new Range(0, 3) - complete() - - it 'matches foo', -> - expect('foo').to.match subject.command_regex() - - it 'matches foo bar', -> - expect('foo bar').to.match subject.command_regex() - - it 'matches foo bar baz guz', -> - expect('foo bar baz guz').to.match subject.command_regex() - - it 'doesnt matches foo bar baz guz gul', -> - expect('foo bar baz guz gul').to.not.match subject.command_regex() - - describe '#find_file', -> - - describe 'given a valid backtrace', -> - - beforeEach (complete) -> - subject.stack = 'ReferenceError: Position is not defined\n - at new Presenter (~/sites/devup/apps/pry.js/src/pry/presenter.coffee:14:16)\n - at Pry.open (~/sites/devup/apps/pry.js/src/pry.coffee:13:17)\n - at eval (:2:18)\n - at eval (:5:7)\n - at fizzBuzz (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:6:5)\n - at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:16:1)\n - at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:1:1)\n - at Module._compile (module.js:456:26)\n - at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:119:23)\n - at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:208:29)' - complete() - - it 'find the fizzBugg file', -> - expect(subject.find_file().name).to.eq '~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee' - - it 'find the fizzBugg line', -> - expect(subject.find_file().line).to.eq 6 - - describe 'given a invalid backtrace', -> - - beforeEach (complete) -> - subject.stack = 'ReferenceError: Position is not defined\n - at new Presenter (~/sites/devup/apps/pry.js/src/pry/presenter.coffee:14:16)\n - at eval (:2:18)\n - at eval (:5:7)\n - at fizzBuzz (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:6:5)\n - at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:16:1)\n - at Object. (~/sites/devup/apps/pry.js/examples/fizzbuzz.coffee:1:1)\n - at Module._compile (module.js:456:26)\n - at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:119:23)\n - at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:208:29)' - complete() - - it 'find the default command file', -> - expect(subject.find_file().name).to.match /command\.(coffee|js)$/ - - it 'finds the first line', -> - expect(subject.find_file().line).to.eq 1 diff --git a/node_modules/pryjs/tests/commands/help_spec.coffee b/node_modules/pryjs/tests/commands/help_spec.coffee deleted file mode 100644 index 38962f2..0000000 --- a/node_modules/pryjs/tests/commands/help_spec.coffee +++ /dev/null @@ -1,25 +0,0 @@ -expect = require('chai').expect -sinon = require('sinon') -Help = require('../../src/pry/commands/help') - -describe 'Help', -> - - subject = null - spy = sinon.spy() - - before (complete) -> - subject = new Help - scope: (p) -> p - complete() - - describe '#typeahead', -> - - describe 'given I type nothing', -> - - it 'stops on the first index', -> - expect(subject.typeahead()).to.deep.equal ['help'] - - describe 'given I type "help"', -> - - it 'it gives me all the help commands', -> - expect(subject.typeahead('help')).to.deep.equal ['help help'] diff --git a/node_modules/pryjs/tests/commands/whereami_spec.coffee b/node_modules/pryjs/tests/commands/whereami_spec.coffee deleted file mode 100644 index c910ecb..0000000 --- a/node_modules/pryjs/tests/commands/whereami_spec.coffee +++ /dev/null @@ -1,45 +0,0 @@ -expect = require('chai').expect -sinon = require('sinon') -Whereami = require('../../src/pry/commands/whereami') - -describe 'Whereami', -> - - subject = null - spy = sinon.spy() - - before (complete) -> - subject = new Whereami - scope: (p) -> p - output: - send: -> true - subject.file = - formatted_content_by_line: spy - content: -> - 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' - complete() - - describe '#execute', -> - - describe 'given I am on line 3', -> - - before (complete) -> - subject.file.line = 3 - complete() - - describe 'given I call it with the default arguments', -> - - before (complete) -> - subject.execute([], next: sinon.spy()) - complete() - - it 'stops on the first index', -> - expect(spy.calledWith(-2, 8)).to.equal true - - describe 'given I call it with a long tail', -> - - before (complete) -> - subject.execute([1, 100], next: sinon.spy()) - complete() - - it 'bleeds past the last index', -> - expect(spy.calledWith(2, 103)).to.equal true diff --git a/node_modules/pryjs/tests/compiler_spec.coffee b/node_modules/pryjs/tests/compiler_spec.coffee deleted file mode 100644 index 11d5e3f..0000000 --- a/node_modules/pryjs/tests/compiler_spec.coffee +++ /dev/null @@ -1,46 +0,0 @@ -expect = require('chai').expect -Compiler = require('../src/pry/compiler') - -describe 'Compiler', -> - - subject = null - - beforeEach (complete) -> - subject = new Compiler - scope: (input) -> - eval(input) - output: - send: -> - arguments - complete() - - describe '#toggle_mode', -> - - beforeEach (complete) -> - expect(subject.mode_id).to.equal 0 - subject.toggle_mode() - complete() - - it 'switches the mode to coffeescript', -> - expect(subject.mode_id).to.equal 1 - - it 'switches back to javascript', -> - subject.toggle_mode() - expect(subject.mode_id).to.equal 0 - - describe '#execute', -> - - describe 'in javascript mode', -> - - it 'can add numbers together', -> - expect(subject.execute('var i = 0;++i;')).to.equal 1 - - describe 'in coffee mode', -> - - beforeEach (complete) -> - subject.toggle_mode() - expect(subject.mode_id).to.equal 1 - complete() - - it 'can add numbers together', -> - expect(subject.execute('i = 0\n++i')).to.equal 1 diff --git a/node_modules/pryjs/tests/file_spec.coffee b/node_modules/pryjs/tests/file_spec.coffee deleted file mode 100644 index 5d4c26c..0000000 --- a/node_modules/pryjs/tests/file_spec.coffee +++ /dev/null @@ -1,46 +0,0 @@ -expect = require('chai').expect -File = require('../src/pry/file') - -describe 'File', -> - - subject = null - - beforeEach (complete) -> - subject = new File('foo.coffee', 1) - subject.content = -> - 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' - complete() - - describe '#by_lines', -> - - it 'gives me the correct lines', -> - expect(subject.by_lines(1,2)).to.equal 'The\nquick' - - describe '#type', -> - - describe 'given a coffee file', -> - - beforeEach (complete) -> - subject.name = 'file.coffee' - complete() - - it 'returns coffee for a coffee file', -> - expect(subject.type()).to.equal 'coffee' - - describe 'given a js file', -> - - beforeEach (complete) -> - subject.name = 'file.js' - complete() - - it 'returns js', -> - expect(subject.type()).to.equal 'js' - - describe 'given a text file', -> - - beforeEach (complete) -> - subject.name = 'file.txt' - complete() - - it 'returns js', -> - expect(subject.type()).to.equal 'js' diff --git a/node_modules/pryjs/tests/range_spec.coffee b/node_modules/pryjs/tests/range_spec.coffee deleted file mode 100644 index 2f59610..0000000 --- a/node_modules/pryjs/tests/range_spec.coffee +++ /dev/null @@ -1,49 +0,0 @@ -expect = require('chai').expect -Range = require('../src/pry/range') - -describe 'Range', -> - - subject = null - - describe '#includes', -> - - describe 'given a range of 1 to 100', -> - - beforeEach (complete) -> - subject = new Range(1, 100) - complete() - - it 'includes 1', -> - expect(subject.includes(1)).to.equal true - - it 'includes 100', -> - expect(subject.includes(100)).to.equal true - - it 'includes 50', -> - expect(subject.includes(50)).to.equal true - - it 'doesnt include 101', -> - expect(subject.includes(101)).to.equal false - - it 'doesnt include 0', -> - expect(subject.includes(0)).to.equal false - - describe '#to_regex', -> - - describe 'given a range of 1 to 100', -> - - beforeEach (complete) -> - subject = new Range(1, 100) - complete() - - it 'gives back the correct regex', -> - expect(subject.to_regex()).to.equal '{1,100}' - - describe 'given a range of 1 to Infinity', -> - - beforeEach (complete) -> - subject = new Range(1, Infinity) - complete() - - it 'gives back the correct regex', -> - expect(subject.to_regex()).to.equal '{1,}' diff --git a/node_modules/pryjs/tests/sync_highlight_spec.coffee b/node_modules/pryjs/tests/sync_highlight_spec.coffee deleted file mode 100644 index 67486b4..0000000 --- a/node_modules/pryjs/tests/sync_highlight_spec.coffee +++ /dev/null @@ -1,23 +0,0 @@ -expect = require('chai').expect -chalk = require('chalk') -SyncHighlight = require('../src/pry/sync_highlight') - -describe 'SyncHighlight', -> - - subject = null - - beforeEach (complete) -> - subject = new SyncHighlight('foo.coffee', 'javascript') - subject.content = 'The\nquick\nbrown\nfox\njumps\nover\nthe\nlazy\ndog' - subject.highlight = -> - subject.content - complete() - - describe '#code_snippet', -> - - it 'contains a pointer on the correct line', -> - expect(subject.code_snippet(1, 9, 3).split('\n')[2]).to.match new RegExp('=>') - - it 'gives me the correct lines', -> - expect(subject.code_snippet(4, 5).split('\n')[0]).to.match /fox/ - expect(subject.code_snippet(4, 5).split('\n')[1]).to.match /jumps/ diff --git a/tasks.txt b/tasks.txt deleted file mode 100644 index bb1aed3..0000000 --- a/tasks.txt +++ /dev/null @@ -1,2 +0,0 @@ - -- From e3bc1c2383304bdc92db9ca3ab1903adc7338486 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 11:10:15 -0800 Subject: [PATCH 13/21] Fixed the color switching issue --- tic-tac-toe.js | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index a5dc792..648a138 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -11,19 +11,20 @@ TicTacToe.prototype = { pickSpaces: function(){ var self = this; - var player = 0; + var player = 1; self.board_spaces.forEach(function(box) { $("." + box).click(function() { if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { - if(player === 0){ + if(player === 1){ $("." + box).css('background-color', 'red'); - player = 1; + self.updateScore(box, player); + player = 2; } else { $("." + box).css('background-color', 'yellow'); - player = 0; + self.updateScore(box, player); + player = 1; } } - self.updateScore(box, player); self.gameOver(); }); }); @@ -32,7 +33,9 @@ TicTacToe.prototype = { resetBoard: function(){ this.board_spaces.forEach(function(box) { $("." + box).css('background-color', 'blue'); + $("." + box).off('click'); }); + this.pickSpaces(); this.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; this.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; }, @@ -61,52 +64,52 @@ TicTacToe.prototype = { updateScore: function(space, player) { var self = this; if(space.substring(0,2) == "r1") { - if (player === 0) { + if (player === 1) { self.player_1_score[0]++; } else { self.player_2_score[0]++; } } else if (space.substring(0,2) == "r2") { - if (player === 0) { + if (player === 1) { self.player_1_score[1]++; } else { self.player_2_score[1]++; } } else if (space.substring(0,2) == "r3") { - if (player === 0) { + if (player === 1) { self.player_1_score[2]++; } else { self.player_2_score[2]++; } } if (space.substring(2,4) == "c1") { - if (player === 0) { + if (player === 1) { self.player_1_score[3]++; } else { self.player_2_score[3]++; } } else if (space.substring(2,4) == "c2") { - if (player === 0) { + if (player === 1) { self.player_1_score[4]++; } else { self.player_2_score[4]++; } } else if (space.substring(2,4) == "c3") { - if (player === 0) { + if (player === 1) { self.player_1_score[5]++; } else { self.player_2_score[5]++; } } if (["r1c1", "r2c2", "r3c3"].includes(space)) { - if (player === 0) { + if (player === 1) { self.player_1_score[6]++; } else { self.player_2_score[6]++; } } if (["r1c3", "r2c2", "r3c1"].includes(space)) { - if (player === 0) { + if (player === 1) { self.player_1_score[7]++; } else { self.player_2_score[7]++; From 0658598904d4e164c6a7ab61b6add4fa7060823a Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 11:16:53 -0800 Subject: [PATCH 14/21] Keeping track of number of wins for each player --- index.html | 10 ++++++++++ tic-tac-toe.js | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/index.html b/index.html index 7818149..e78bb43 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,16 @@

Tic Tac Toe

var game = new TicTacToe(); }) + +
+

Player 1

+

+
+ +
+

Player 2

+

+
diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 648a138..8d12bb2 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -8,10 +8,14 @@ TicTacToe.prototype = { board_spaces: ["r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3"], player_1_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], player_2_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], + player_1_wins: 0, + player_2_wins: 0, pickSpaces: function(){ var self = this; var player = 1; + $("#player-1-wins").html(this.player_1_wins); + $("#player-2-wins").html(this.player_2_wins); self.board_spaces.forEach(function(box) { $("." + box).click(function() { if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { @@ -124,15 +128,27 @@ TicTacToe.prototype = { if (score == 3) { alert("Player 1 wins!"); self.resetBoard(); + self.trackWins(1); } }); self.player_2_score.forEach(function(score) { if (score == 3) { alert("Player 2 wins!"); self.resetBoard(); + self.trackWins(2); } }); // player_1_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] // player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] }, + + trackWins: function(player) { + if (player == 1) { + this.player_1_wins++; + $("#player-1-wins").html(this.player_1_wins); + } else { + this.player_2_wins++; + $("#player-2-wins").html(this.player_2_wins); + } + }, }; From 0fd64336c90647fe74ab01fc87d5baf2e45ecccb Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 11:23:44 -0800 Subject: [PATCH 15/21] Small performance improvement --- tic-tac-toe.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 8d12bb2..30448c9 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -10,6 +10,7 @@ TicTacToe.prototype = { player_2_score: [ 0, 0, 0, 0, 0, 0, 0, 0 ], player_1_wins: 0, player_2_wins: 0, + moves: 0, pickSpaces: function(){ var self = this; @@ -21,15 +22,20 @@ TicTacToe.prototype = { if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { if(player === 1){ $("." + box).css('background-color', 'red'); + self.moves++; self.updateScore(box, player); player = 2; } else { $("." + box).css('background-color', 'yellow'); + self.moves++; self.updateScore(box, player); player = 1; } } - self.gameOver(); + if (self.moves == 9) { + alert("It's a tie!"); + self.resetBoard(); + } }); }); }, @@ -42,6 +48,7 @@ TicTacToe.prototype = { this.pickSpaces(); this.player_1_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; this.player_2_score = [ 0, 0, 0, 0, 0, 0, 0, 0 ]; + this.moves = 0; }, resetButton: function(){ @@ -51,20 +58,6 @@ TicTacToe.prototype = { }); }, - gameOver: function() { - var self = this; - var count = 0; - self.board_spaces.forEach(function(box) { - if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { - count++; - } - }); - if (count === 0){ - alert("It's a tie!"); - self.resetBoard(); - } - }, - updateScore: function(space, player) { var self = this; if(space.substring(0,2) == "r1") { @@ -119,7 +112,9 @@ TicTacToe.prototype = { self.player_2_score[7]++; } } - self.checkForWinner(); + if (self.moves >= 5) { + self.checkForWinner(); + } }, checkForWinner: function() { From 80e5b1a6e730d014dd8ed0c61187bea817308ee5 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 11:32:25 -0800 Subject: [PATCH 16/21] DRYed up scoring logic --- tic-tac-toe.js | 56 +++++++++++++++----------------------------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 30448c9..f99bbca 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -58,59 +58,35 @@ TicTacToe.prototype = { }); }, + incrementScore: function(index, player) { + if (player == 1) { + self.player_1_score[index]++; + } else { + self.player_2_score[index]++; + } + }, + updateScore: function(space, player) { var self = this; if(space.substring(0,2) == "r1") { - if (player === 1) { - self.player_1_score[0]++; - } else { - self.player_2_score[0]++; - } + incrementScore(0, player); } else if (space.substring(0,2) == "r2") { - if (player === 1) { - self.player_1_score[1]++; - } else { - self.player_2_score[1]++; - } + incrementScore(1, player); } else if (space.substring(0,2) == "r3") { - if (player === 1) { - self.player_1_score[2]++; - } else { - self.player_2_score[2]++; - } + incrementScore(2, player); } if (space.substring(2,4) == "c1") { - if (player === 1) { - self.player_1_score[3]++; - } else { - self.player_2_score[3]++; - } + incrementScore(3, player); } else if (space.substring(2,4) == "c2") { - if (player === 1) { - self.player_1_score[4]++; - } else { - self.player_2_score[4]++; - } + incrementScore(4, player); } else if (space.substring(2,4) == "c3") { - if (player === 1) { - self.player_1_score[5]++; - } else { - self.player_2_score[5]++; - } + incrementScore(5, player); } if (["r1c1", "r2c2", "r3c3"].includes(space)) { - if (player === 1) { - self.player_1_score[6]++; - } else { - self.player_2_score[6]++; - } + incrementScore(6, player); } if (["r1c3", "r2c2", "r3c1"].includes(space)) { - if (player === 1) { - self.player_1_score[7]++; - } else { - self.player_2_score[7]++; - } + incrementScore(7, player); } if (self.moves >= 5) { self.checkForWinner(); From 13a67c6b21b5887c99e21bfe26f9c53dd4f4b8e8 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 11:50:04 -0800 Subject: [PATCH 17/21] Further DRYing of code --- tic-tac-toe.js | 52 ++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index f99bbca..329df99 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -59,60 +59,50 @@ TicTacToe.prototype = { }, incrementScore: function(index, player) { + var self = this; if (player == 1) { self.player_1_score[index]++; + if (self.player_1_score[index] == 3) { + self.playerWin(1); + } } else { self.player_2_score[index]++; + if (self.player_2_score[index] == 3) { + self.playerWin(2); + } } }, + playerWin: function(player) { + alert("Player " + player + " wins!"); + this.resetBoard(); + this.trackWins(player); + }, + updateScore: function(space, player) { var self = this; if(space.substring(0,2) == "r1") { - incrementScore(0, player); + self.incrementScore(0, player); } else if (space.substring(0,2) == "r2") { - incrementScore(1, player); + self.incrementScore(1, player); } else if (space.substring(0,2) == "r3") { - incrementScore(2, player); + self.incrementScore(2, player); } if (space.substring(2,4) == "c1") { - incrementScore(3, player); + self.incrementScore(3, player); } else if (space.substring(2,4) == "c2") { - incrementScore(4, player); + self.incrementScore(4, player); } else if (space.substring(2,4) == "c3") { - incrementScore(5, player); + self.incrementScore(5, player); } if (["r1c1", "r2c2", "r3c3"].includes(space)) { - incrementScore(6, player); + self.incrementScore(6, player); } if (["r1c3", "r2c2", "r3c1"].includes(space)) { - incrementScore(7, player); - } - if (self.moves >= 5) { - self.checkForWinner(); + self.incrementScore(7, player); } }, - checkForWinner: function() { - var self = this; - self.player_1_score.forEach(function(score) { - if (score == 3) { - alert("Player 1 wins!"); - self.resetBoard(); - self.trackWins(1); - } - }); - self.player_2_score.forEach(function(score) { - if (score == 3) { - alert("Player 2 wins!"); - self.resetBoard(); - self.trackWins(2); - } - }); - // player_1_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] - // player_2_score = [ row1, row2, row3, col1, col2, col3, diagleft, diagright ] - }, - trackWins: function(player) { if (player == 1) { this.player_1_wins++; From ec62df1073122efa7d1dd21429b98b3a2d4fa8ab Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 12:11:26 -0800 Subject: [PATCH 18/21] CSS fixes --- index.css | 19 +++++++++---------- index.html | 3 ++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/index.css b/index.css index 8ba622c..9c81b69 100644 --- a/index.css +++ b/index.css @@ -1,5 +1,5 @@ html { - + font-family: 'Poiret One', cursive; } h1 { @@ -8,24 +8,23 @@ h1 { #tictactoe { width: 80%; - margin: auto; + margin-left: auto; + margin-right: auto; } .box { - width: 200px; - height: 200px; + width: 32%; + height: 100%; display:inline-block; background-color: blue; } -#row1 { - width: 100%; -} - -#row2 { +#row1, #row2, #row3 { + margin-top: 5px; width: 100%; + height: 200px; } .c1 { - margin-left: 200px; + margin-left: 10px; } diff --git a/index.html b/index.html index e78bb43..e09f0ef 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ Tic Tac Toe! + @@ -27,8 +28,8 @@

Player 1

Player 2

+
-
From e93c0cd8ed929850b8af139359b10d3db71f92a6 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 12:23:21 -0800 Subject: [PATCH 19/21] Additional CSS styling --- index.css | 40 ++++++++++++++++++++++++++++++++++++++++ index.html | 24 +++++++++++++++--------- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/index.css b/index.css index 9c81b69..eee2c38 100644 --- a/index.css +++ b/index.css @@ -4,6 +4,8 @@ html { h1 { text-align: center; + font-size: 80px; + margin: 0; } #tictactoe { @@ -28,3 +30,41 @@ h1 { .c1 { margin-left: 10px; } + +#player-1-score, #player-2-score { + display: inline-block; + text-align: center; +} + +#player-1-score { + margin-right: 40px; +} + +#player-2-score { + margin-left: 40px; +} + +#player-scores { + width: 600px; + margin: auto; + text-align: center; + font-size: 30px; +} + +#reset-button { + font-family: 'Poiret One', cursive; + font-size: 30px; + width: 200px; + height:50px; + text-align: center; + margin:0 auto; + padding: 10px; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + +#button-holder { + text-align: center; + margin-bottom: 30px; +} diff --git a/index.html b/index.html index e09f0ef..a826eef 100644 --- a/index.html +++ b/index.html @@ -19,16 +19,22 @@

Tic Tac Toe

}) -
-

Player 1

-

-
+
+
+

Player 1

+

+
-
-

Player 2

-

+
+

Player 2

+

+
+
+
+
- + +
@@ -50,6 +56,6 @@

Player 2

- + From b157dc18cfc78b7292fdbc08789946d972076e08 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 14:12:18 -0800 Subject: [PATCH 20/21] CSS --- index.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.css b/index.css index eee2c38..ec76ddc 100644 --- a/index.css +++ b/index.css @@ -9,7 +9,7 @@ h1 { } #tictactoe { - width: 80%; + width: 60%; margin-left: auto; margin-right: auto; } From 15426793958d5c24ddae728730b37ecbf5e1c799 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 29 Jan 2016 15:15:09 -0800 Subject: [PATCH 21/21] More refactoring --- tic-tac-toe.js | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/tic-tac-toe.js b/tic-tac-toe.js index 329df99..cec2a1b 100644 --- a/tic-tac-toe.js +++ b/tic-tac-toe.js @@ -11,26 +11,16 @@ TicTacToe.prototype = { player_1_wins: 0, player_2_wins: 0, moves: 0, + player: 1, pickSpaces: function(){ var self = this; - var player = 1; $("#player-1-wins").html(this.player_1_wins); $("#player-2-wins").html(this.player_2_wins); self.board_spaces.forEach(function(box) { $("." + box).click(function() { if ($("." + box).css('background-color') == 'rgb(0, 0, 255)') { - if(player === 1){ - $("." + box).css('background-color', 'red'); - self.moves++; - self.updateScore(box, player); - player = 2; - } else { - $("." + box).css('background-color', 'yellow'); - self.moves++; - self.updateScore(box, player); - player = 1; - } + self.markSpaces(self.player, box); } if (self.moves == 9) { alert("It's a tie!"); @@ -40,6 +30,14 @@ TicTacToe.prototype = { }); }, + markSpaces: function(player, box) { + var color = (player == 1 ? 'red' : 'yellow'); + $("." + box).css('background-color', color); + this.moves++; + this.updateScore(box, player); + this.player = (player == 1 ? 2 : 1); + }, + resetBoard: function(){ this.board_spaces.forEach(function(box) { $("." + box).css('background-color', 'blue'); @@ -80,25 +78,26 @@ TicTacToe.prototype = { }, updateScore: function(space, player) { + var track_space = space.toString(); var self = this; - if(space.substring(0,2) == "r1") { + if(track_space.substring(0,2) == "r1") { self.incrementScore(0, player); - } else if (space.substring(0,2) == "r2") { + } else if (track_space.substring(0,2) == "r2") { self.incrementScore(1, player); - } else if (space.substring(0,2) == "r3") { + } else if (track_space.substring(0,2) == "r3") { self.incrementScore(2, player); } - if (space.substring(2,4) == "c1") { + if (track_space.substring(2,4) == "c1") { self.incrementScore(3, player); - } else if (space.substring(2,4) == "c2") { + } else if (track_space.substring(2,4) == "c2") { self.incrementScore(4, player); - } else if (space.substring(2,4) == "c3") { + } else if (track_space.substring(2,4) == "c3") { self.incrementScore(5, player); } - if (["r1c1", "r2c2", "r3c3"].includes(space)) { + if (["r1c1", "r2c2", "r3c3"].includes(track_space)) { self.incrementScore(6, player); } - if (["r1c3", "r2c2", "r3c1"].includes(space)) { + if (["r1c3", "r2c2", "r3c1"].includes(track_space)) { self.incrementScore(7, player); } },