From e3c977934b882b63b41a7dbcffa77f7ad7f96613 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 31 Jan 2017 18:24:56 +0000 Subject: [PATCH] Variable names changed from underscore to CamelCase. Eslint rules updated. #64 --- Gruntfile.js | 66 +- build/prod/cyberchef.htm | 26 +- build/prod/index.html | 2 +- build/prod/scripts.js | 22 +- build/prod/styles.css | 2 +- src/css/structure/layout.css | 10 +- src/css/themes/classic.css | 4 +- src/html/index.html | 8 +- src/js/.eslintrc.json | 3 + src/js/config/OperationConfig.js | 1316 ++++++++++++------------ src/js/core/Chef.js | 52 +- src/js/core/Dish.js | 44 +- src/js/core/FlowControl.js | 96 +- src/js/core/Ingredient.js | 32 +- src/js/core/Operation.js | 104 +- src/js/core/Recipe.js | 126 +-- src/js/core/Utils.js | 378 +++---- src/js/operations/Base.js | 4 +- src/js/operations/Base64.js | 116 +-- src/js/operations/BitwiseOp.js | 112 +- src/js/operations/ByteRepr.js | 120 +-- src/js/operations/CharEnc.js | 16 +- src/js/operations/Checksum.js | 44 +- src/js/operations/Cipher.js | 140 +-- src/js/operations/Code.js | 84 +- src/js/operations/Compress.js | 78 +- src/js/operations/Convert.js | 50 +- src/js/operations/DateTime.js | 26 +- src/js/operations/Endian.js | 30 +- src/js/operations/Entropy.js | 50 +- src/js/operations/Extract.js | 134 +-- src/js/operations/FileType.js | 38 +- src/js/operations/HTML.js | 62 +- src/js/operations/HTTP.js | 12 +- src/js/operations/Hash.js | 128 +-- src/js/operations/Hexdump.js | 56 +- src/js/operations/IP.js | 426 ++++---- src/js/operations/JS.js | 44 +- src/js/operations/MAC.js | 46 +- src/js/operations/OS.js | 14 +- src/js/operations/PublicKey.js | 202 ++-- src/js/operations/Punycode.js | 4 +- src/js/operations/QuotedPrintable.js | 14 +- src/js/operations/Rotate.js | 80 +- src/js/operations/SeqUtils.js | 38 +- src/js/operations/StrUtils.js | 138 +-- src/js/operations/Tidy.js | 58 +- src/js/operations/URL.js | 26 +- src/js/operations/UUID.js | 2 +- src/js/operations/Unicode.js | 6 +- src/js/views/html/ControlsWaiter.js | 235 ++--- src/js/views/html/HTMLApp.js | 332 +++--- src/js/views/html/HTMLCategory.js | 20 +- src/js/views/html/HTMLIngredient.js | 74 +- src/js/views/html/HTMLOperation.js | 40 +- src/js/views/html/HighlighterWaiter.js | 176 ++-- src/js/views/html/InputWaiter.js | 58 +- src/js/views/html/Manager.js | 188 ++-- src/js/views/html/OperationsWaiter.js | 148 +-- src/js/views/html/OptionsWaiter.js | 16 +- src/js/views/html/OutputWaiter.js | 118 +-- src/js/views/html/RecipeWaiter.js | 144 +-- src/js/views/html/SeasonalWaiter.js | 58 +- src/js/views/html/WindowWaiter.js | 18 +- src/js/views/html/main.js | 28 +- src/static/stats.txt | 6 +- 66 files changed, 3176 insertions(+), 3172 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 92eefb1f..5ec73d08 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -7,12 +7,12 @@ module.exports = function(grunt) { // Tasks grunt.registerTask("dev", "A persistent task which creates a development build whenever source files are modified.", - ["clean:dev", "concat:css", "concat:js", "copy:html_dev", "copy:static_dev", "chmod:build", "watch"]); + ["clean:dev", "concat:css", "concat:js", "copy:htmlDev", "copy:staticDev", "chmod:build", "watch"]); grunt.registerTask("prod", "Creates a production-ready build. Use the --msg flag to add a compile message.", - ["eslint", "exec:stats", "clean", "jsdoc", "concat", "copy:html_dev", "copy:html_prod", "copy:html_inline", - "copy:static_dev", "copy:static_prod", "cssmin", "uglify:prod", "inline", "htmlmin", "chmod"]); + ["eslint", "exec:stats", "clean", "jsdoc", "concat", "copy:htmlDev", "copy:htmlProd", "copy:htmlInline", + "copy:staticDev", "copy:staticProd", "cssmin", "uglify:prod", "inline", "htmlmin", "chmod"]); grunt.registerTask("docs", "Compiles documentation in the /docs directory.", @@ -20,15 +20,15 @@ module.exports = function(grunt) { grunt.registerTask("stats", "Provides statistics about the code base such as how many lines there are as well as details of file sizes before and after compression.", - ["concat:js", "uglify:prod", "exec:stats", "exec:repo_size", "exec:display_stats"]); + ["concat:js", "uglify:prod", "exec:stats", "exec:repoSize", "exec:displayStats"]); grunt.registerTask("release", "Prepares and deploys a production version of CyberChef to the gh-pages branch.", - ["copy:gh_pages", "exec:deploy_gh_pages"]); + ["copy:ghPages", "exec:deployGhPages"]); grunt.registerTask("default", "Lints the code base and shows stats", - ["eslint", "exec:stats", "exec:display_stats"]); + ["eslint", "exec:stats", "exec:displayStats"]); grunt.registerTask("doc", "docs"); grunt.registerTask("lint", "eslint"); @@ -50,7 +50,7 @@ module.exports = function(grunt) { // JS includes - var js_files = [ + var jsFiles = [ // Third party framework libraries "src/js/lib/jquery-2.1.1.js", "src/js/lib/bootstrap-3.3.6.js", @@ -179,10 +179,10 @@ module.exports = function(grunt) { * limitations under the License.\n\ */\n'; - var template_options = { + var templateOptions = { data: { - compile_msg: grunt.option("compile-msg") || grunt.option("msg") || "", - codebase_stats: grunt.file.read("src/static/stats.txt").split("\n").join("
") + compileMsg: grunt.option("compile-msg") || grunt.option("msg") || "", + codebaseStats: grunt.file.read("src/static/stats.txt").split("\n").join("
") } }; @@ -220,7 +220,7 @@ module.exports = function(grunt) { }, concat: { options: { - process: template_options + process: templateOptions }, css: { options: { @@ -242,43 +242,43 @@ module.exports = function(grunt) { options: { banner: '"use strict";\n' }, - src: js_files, + src: jsFiles, dest: "build/dev/scripts.js" } }, copy: { - html_dev: { + htmlDev: { options: { process: function(content, srcpath) { - return grunt.template.process(content, template_options); + return grunt.template.process(content, templateOptions); } }, src: "src/html/index.html", dest: "build/dev/index.html" }, - html_prod: { + htmlProd: { options: { process: function(content, srcpath) { - return grunt.template.process(content, template_options); + return grunt.template.process(content, templateOptions); } }, src: "src/html/index.html", dest: "build/prod/index.html" }, - html_inline: { + htmlInline: { options: { process: function(content, srcpath) { // TODO: Do all this in Jade content = content.replace( 'Download CyberChef', 'Compile time: ' + grunt.template.today("dd/mm/yyyy HH:MM:ss") + " UTC"); - return grunt.template.process(content, template_options); + return grunt.template.process(content, templateOptions); } }, src: "src/html/index.html", dest: "build/prod/cyberchef.htm" }, - static_dev: { + staticDev: { files: [ { expand: true, @@ -293,7 +293,7 @@ module.exports = function(grunt) { } ] }, - static_prod: { + staticProd: { files: [ { expand: true, @@ -308,13 +308,13 @@ module.exports = function(grunt) { } ] }, - gh_pages: { + ghPages: { options: { process: function(content, srcpath) { // Add Google Analytics code to index.html content = content.replace("", grunt.file.read("src/static/ga.html") + ""); - return grunt.template.process(content, template_options); + return grunt.template.process(content, templateOptions); } }, src: "build/prod/index.html", @@ -331,12 +331,12 @@ module.exports = function(grunt) { ASCIIOnly: true, beautify: { beautify: false, - inline_script: true, - ascii_only: true, - screw_ie8: true + inline_script: true, // eslint-disable-line camelcase + ascii_only: true, // eslint-disable-line camelcase + screw_ie8: true // eslint-disable-line camelcase }, compress: { - screw_ie8: true + screw_ie8: true // eslint-disable-line camelcase }, banner: banner }, @@ -408,7 +408,7 @@ module.exports = function(grunt) { } }, exec: { - repo_size: { + repoSize: { command: [ "git ls-files | wc -l | xargs printf '\n%b\ttracked files\n'", "du -hs | egrep -o '^[^\t]*' | xargs printf '%b\trepository size\n'" @@ -443,13 +443,13 @@ module.exports = function(grunt) { ].join(" >> src/static/stats.txt;") + " >> src/static/stats.txt;", stderr: false }, - display_stats: { + displayStats: { command: "cat src/static/stats.txt" }, - clean_git: { + cleanGit: { command: "git gc --prune=now --aggressive" }, - deploy_gh_pages: { + deployGhPages: { command: [ "git add build/prod/index.html -v", "COMMIT_HASH=$(git rev-parse HEAD)", @@ -471,15 +471,15 @@ module.exports = function(grunt) { }, html: { files: "src/html/**/*.html", - tasks: ["copy:html_dev", "chmod:build"] + tasks: ["copy:htmlDev", "chmod:build"] }, static: { files: ["src/static/**/*", "src/static/**/.*"], - tasks: ["copy:static_dev", "chmod:build"] + tasks: ["copy:staticDev", "chmod:build"] }, grunt: { files: "Gruntfile.js", - tasks: ["clean:dev", "concat:css", "concat:js", "copy:html_dev", "copy:static_dev", "chmod:build"] + tasks: ["clean:dev", "concat:css", "concat:js", "copy:htmlDev", "copy:staticDev", "chmod:build"] } }, }); diff --git a/build/prod/cyberchef.htm b/build/prod/cyberchef.htm index d590b2c2..ade09941 100755 --- a/build/prod/cyberchef.htm +++ b/build/prod/cyberchef.htm @@ -85,11 +85,11 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;width:100%;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0;width:100%}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdjlJbkJh0MksSb3Jvk9H0gjZFu9YWH83LO7zn/3nNCSincJobAeP1sEDBFi6J50UyPy4l2RNuioz756Ts0tt1OB4jH2a52Ne2HGh9PwrJm2EcxZx/HyPRYMDgB2u02/N3d1c7w8BZMM1ptNJBPp3GwsUExB/s4RoYsPf0JOkFgdoH34YkJ/D48xC/HyTTOzl5ayWSIktwxqlVo0SjIkKWnP0Hg+4swjGitVMJFNpu5o+svptfXv6DZBDIZezoWS3Db3A0ZsvRcH8H354dGR9EoFHA3EvlorqycwvOAXM4G8Pav+f7YmEOGLD1gsIzl54+V+vBK/Yw9ZAv1LQW1FrdFSnKVfQTK5liPUfRI9I8ArqiPjLAF9vcHVybyzlpasgcZeq7voNXKNSsV3DMMXB4fp/8xLyzYuLri2DIZsvQM3sFOzXURiUR4zsQNcyrFleFVKpNyP2/IkKVnsArbF65bbkqplJSJZrl5x5qbs7G3h3artSyV+arr+lMyZOnpP2Wp6ZFos3R+vvUgCGDNzgKalkA4rECIr07662J2i0X4nrfJJ33jJT6Zmvpcr9XWCicn5WI+j7rrAmKgmLOPY2TI0sPgb8TBZOi/PpN1qnDr7/wH3jxgB/FKIXkAAAAASUVORK5CYII=) no-repeat}.breakpoint{float:right;width:14px;height:14px;background-color:#eee;border:1px solid #aaa}.breakpoint-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEXIUkvzUVHzTEzzn5785eXrbW24BgbzWVnze3vzVVXzY2Pyion509PzbW3zXV1UMxj0l5f1srKbRTRgOxzJDg796ur74ODfIyP5zs6LLx3pNTXYGxuxdkVZNhn////sCC1eAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAABWSURBVBjTnc+7EoAgDERRTOQVxMEZFAf//z8FjAUFDbfb060QU2FwxngimxnCea3bjegSgz+0tguAfBgIy64QGfZQdg91dgAtqUZgnfz6IacYVWvu2AvR4wNAv0nxrAAAAABJRU5ErkJggg==) -2px -2px no-repeat #eee}.banner-right{float:right;margin-right:10px}#banner img{margin-bottom:2px;margin-left:8px}.category-title{display:block;padding:10px}.category{margin:0!important;border-radius:0!important;border:none}#search{border-radius:0;border:none}.loading_file{background:url(data:image/gif;base64,R0lGODlhPAA8APcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQhCAD/ACwAAAAAPAA8AAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAZ9puy5VjEixj/hZsAAECGfhlDFrSl5hPBdCA6dgxSkF26dyIfItox48aXgfk+qASQYiC/dOXKmXMXkyGxJDOS9pA1cMyBjhLUDJQXNOg5fkUV+hqStGaoqY4+dBBEMF7Vcuj2ZVVIpasRfwXrwS14rmq7tQTLzR0oRokWePoa7kt3jh1Igf7mxcMXEp+dx4wJ7sMK8fBAd+aEWoZ4To6Zz3nY4f2HL7NVjMPWfDazpthos1XPqY2oLs5qOeVG/6sbFF3Gcp7l/NL9b945c+j2XuR2Kxxxgf3ubX5OXSG9dsqrG5xXbyGvUqRO/mk/qA+d0HeUDUoDlak9qvEFgVaNh5BW+/ak5sGHzjvo3YPGbHIfKfsNpM5Z+h00Ty6eaHLKOQUaaI45+MyG0DXPRCiZPYFp6OGHBvWTHYj8TPdPP/w0www0IF6GDjqRDdQPMzQy40yLBwZljnLZ1EhjOh/2Y15VRA3kjY/MAOmhP0MGBQ9B/vgoTYvx8OZbQf5I0ww2LQokzzrvWNjlmGSS2U887tjz4TzqrNNdQu3omN5+9Jh2zogC4XPWnQUKeZZoB8FmlZja+VmVOgk1eWWBglKYUD3nnJOch+2gkw6KCvmTD55ldopRPPJQJ89LIe3DmzqchhRnbxnJF1SCh2vd0185RULkz6yAxjprqBflKBSsa7nKJ0bsRLpOQfl06JA/+ExXKaqpLhRdPgWtIyk90cp43FXw+WoOsP/Ig55kppUjm3ZM/plXVZbVc1Y59BS6q4HvDmRqVeYQStytQSkpULlBpWeqOefoYyJx9rwTz2bs1CtZPfp62F+2LfYDD0yeZkxmQAAh+QQhCAD/ACwCAAIAKQAfAAAI/gD/CRxIsKDBgv3q8JF2sKHDhwLNCZkx40g/iBgJInt0i2C7JhQpninIpIWbjAVLrTGT5tBAfUtCzqAysFwMAAAcdEEpcNodM0DbEBsoKAdFIYgGGjKAE0CHdTydyQHKMtdAeqSYKNlEsI+Aph648fz3hyodfwXvoS3ooekViO7WDkx0Z9C8fRnDufDAxJ1DfaMC6yvI7+LYeg/fhcrEuJS8sZD/XePEOFMnbJHHxgNVOVS7zGPdLQZFDTRkdM+gml7N+mA+e3JbP+wmLdo02RBRM9t9G3fDbLt3R8vn+6C44MyiFXe9zRmzafOWN1xnTrr167j9xcber1+5ctWxHwv0/h28+H/ryn+Pjr2d+nL0xPtTf+78P3/oyqkWHxAAIfkEIQgA/wAsBAACAC8AFgAACP4A/wkcSLCgwYH9LnHqdrChw4cN2ckxY6ZOP4gYH2qj9YxgvDwUKTIqCOeKoowQh3HKpOnVwH14Qpr5M1CdlhkzfPRB2TAcqUxAO2EbGEoNxTilBnq6gXOGknc8DXoLBZQltIH3duW5Q4vgpRpNl4yLajBVVVH+CuZLW3BJUzxk7bEdCIvUqnv8MprDsgROPISU9PhqyC+a4bwE+12Meq8gGAgAHsAzeO8Zs8vS8JGF2KsBgM8bDK5rdplZs3WbH+r5/JkDt4L4LF9+Zi/1Qw+sQRy0Z/lZOtsPH12wIAKxwXnm6gGHCE8XveXQDfLTNzd61HbozqGzHlWfPHPlwiRv554xHbvw4veRh9jvHDz05c6tx6huXzvw6DTPz0hP3v6MAQEAIfkEIQgA/wAsCQACAC8AFgAACP4A/wkcSLAgQX+6eqEzyLChw4cC5YHKlGmUP4gYH7LLdo6gvVIUKc4qSCnQqYwQwzVjxszaQH4gQ6Ya+G6QGTNuPKFsCC8aS2bO1g0EtokiqGEDbaW5aebOvJ0G3T37yayjwHzRSpFqRjDWGaZ41EE1SO0ntIsE96EliIepprH61gq8Fo2avn4Z2QXCM4newH6pKC1r2O+cYbwH5WbMVxAQkBk/nhbUZ66cZXT7xkJU1mOG5yQG6VkeXU/zQ0qeP48ruK+yZXP6TD9kkpoJQ8rlzkmW3bBUkSJO+DXMJ48x74fzkNk7zry584GSRj0f262EAQhmzC2cjvEFgO8JACFh5v6wXofv36FYJe+wBnoClfCxh4gDwoRg2eanRFVNYEAAIfkEIQgA/wAsEQACACkAOAAACP4A/wkcSPCfP27e5hVcyLChw3/4njFjFs3fw4sL67GTR1CftIkTsRW8tYoYxoXvyqlUN7DfR5DUBtJjlSmTJ18nB947p7KcOXoDvzWb+CzcQGebamYidS/nP3s8e3IUyA+dtGjmCC5TmqlUPKf/0vU8Z5Fgv7IESyndBVbgOnTo+KF9KG9VqVv4Wvp6JfKiv7kn9xX8BMfMG3ttE19zY6axncRtXzVufIclZKd4Jue5DHbXnDl6+nEGa69a3tGoUzs9VUs1xnFRcAAptM61QywzcuvIZJvhPSW5c8vpzbBLcBuqiDMEA0RIM3DKF57L1S269eu2z03FLhDMhxDFuN//mwGgfAXR1995KF++C3Z968sHgMO9z4byKMT/S/TDzDb9AAYoIEHzqLNOPeLRY45KZGHXDzo9lcOOgxD2ZNl18fRkzmnYtYNOOv3wM+CIysmTzjv6tdMTOtztFKE72LkoFXdiMQhYQfnoA5Y/+KA3kIfq/OXQOuegQ8+NDPVzjjnniAiWOhoqRFA+9zgp0D4LMihYTv5UqNKEA6lzzjnpEFRPhOUAlZOSEW4HT4RlXhmVT1tyGVWcAkE5lo/7LHmOPj7mZM878QQqD5wF7VNPnaq1syQ6SBLnzz2IuRYQACH5BCEIAP8ALBoAAgAgADgAAAj+AP/989fOXT6BCBMqXMhwn7ly5c75Y0ix4j9+6CBCXKdwG7VwFhn6y6gxHcJ81Zgxc+Yt5MJ3Gs29Q2hOpcpo+1wm7DcP3Tl5CcvZZBYNn06F/SYqlGaz21Gd+KpF25ZToD9qyco9ZdhP4a9PmT4d3FqRnKdMaEmRrZgMbdp4aymWclsqLkVpokKZ6mqXYb5x+voKHvyvFzLCCdXxSfNmFDzE/wSZmbxmFuJ8dyZPrgS5kGY0vyD/OwQnTjZ0otst0yq6teuQ6+i5BsSkCTTRXGboJsJ3sLwlunX3QbwPuG4ajSBbQqJbSmtQZgqJe029umtJM3acEv2JAgAAGHqGC6YH4vt3J4jflTePA/KdBN8ZEBONRcSKeuqs648rL93M1Bqhhtg952hUjjsDFqgRUIilo5FEcfmDj3j/tIOOOv4otVU/55hzDj/8vQMiQg49WNVTBvZWj4HlyPaUOiySqGA55pyo00MGjvjPPh2eow+FIbETY0L71GPjUzNqSFg/8PyHWEAAIfkEIQgA/wAsJAAEABYALgAACP4A//1jl+6dwIMIEx7kl65cOXPuFEo8KM+hw3P8JkqMZ7Ecun0aJZ6z2C6kxH3pzrHrd9BfOnLyTP5jifDbM2bPMso8GM8Zs5/Rdh4k9xMoPqECoxWVhlQgOmjQpPlrKpBfPJ1Us4acpi1rPFSbPgWr13RVprOcmCHdR+rsWVxNXbnVRI3qq0+gzBlsOo9bRK2AAyeEd0/rJzx5tlElZKbxHJo76+Fp3LgTUn6TKadqCstOYz9ZcTEalU6w6dM7T3ERA7eprCEzZhiBLNMek9ix4yCV1wT3jC9NJemI3QMaVT1OrNj7i7r5wUMx0mSNUgBAgBFNcWUAwN2AGaSxMBdwB2AAUVMY4zfQTugP33ooIWbwm6owIAAh+QQhCAD/ACwkAAkAFgAvAAAI/gD/7Ut3jl2/fwj9zYuHD6HDhw4PPnRnrpw5iRAzOsRXsVy5cxpD/ovn0eO5fSI1niuJLqXGeefMofPnUmO/exhr6twJER07ng7vTWvmDJw+oNWYKW1Wjme/aEqVbgNqLSqzdED/XXv2TN69rPna2ctKtmzNevnK/iplCiTQVpnihqK5E1+puHF9Ob2LtxhQZaPioiL7TFYweGYTKy7bq1CiZFmLyTFjhk5Ol/jyUKZciWc9zZsPvV1Duc1UoJv0AMInb7FrkZ+0iM4658YMGk+AGjsyo/cNQjyBGek94wYooFmIJ7n80N6v1g/nNNnCj25GdhkqaFgHVJsEAOA3H3jj6UkBeAAIOPH8duG8A2xAw2lYgMFau6zbQoHLGhAAIfkEIQgA/wAsGwARAB8AKQAACP4A/wkcSLCgQYLz6h1cyHCgPnTlzL3j17AiwXTlMpaLZ9Fiv3May7XraFFdyHkkS5ozh29fyor77Ol7SbOmzZsOKeI0+E2aNHk7CVpjRhSav6D/9kkjStQbUn9LmYpD+o9cNKLTqAo8hw3cPa1gw4pdOK0VrG1asYXKlEnU0aD6SrFliwspPlNzM72iiowTW0/ntPIypUqfvbGId94aVAqspTRmzOyhSq1OZDNpRiGFRudymrpIB12206/mPWb0ClrKQ6jf25TvjhBB8q5mMFfrCIYLMqN3EnIvaVyoUKK0wFg7es/IASvlmwMAoqsYWK6Ich/fUsaIHl3DyK1HdhwY8QYv5aEB3E0UFEfLXE0pFyB8MI60HytSYAMCACH5BCEIAP8ALBEAGgApACAAAAj+AP8JHEiwoMGDCP/x65ewoUOE7tChw/ewokN15TKa82exY8F+6DJmdOex5D9/IUXCM1ky3rmM6FialLfu3T6ZOHPq3MlTJzpr19r1bLjuGTNm0DgONchP2tGj25Ya3Of0qTWpBsc1O+psHlaD3aRR46fvq9mzJZ2xEoZ2YC5NmTKdaitOVNxMmoKh/WY37qZnbVndJaUUITLAHfNhu1cwl6lW/Qob9MFBRCaKD+fVmWPHq8ccAEJLiFSQGa93BNHBMcPazrqO9zyEDs2EIJciQ6AwFFhsDWszaoZ1pDdi9oBGAxfhmMGcysB1dH67OecxHwcABFoQzMKc+ZGVAtsk1WFDxxy9krDSAKpHsFON7lEKpjPGbumcIkCW7Ebbb1etoQEBACH5BCEIAP8ALAkAJAAvABYAAAj+AP8JHEiwoMGDCA3OU7eu3j9+CSNKjEjPXLly5/xlnMiRYz90Fy+yO7evo8mEH0OWU4fupMuD8UKaw+fvpU2C7dCl6wfxps+fQCP6QRQUoblq4BB6+yAgQY57RQlyY0Z12sEXALIWWBRVIDxoVKkmJYivQ9asTLr+ewc27DmDO846mKT2X7Ww0WoaPIKBQ5CC07Cd3FcuX0Fu0qz501vQXS5mBckkcdLK8MR7o0KNgvoTzIzPQk4VvLZsHkF4oDKpJhXPJ74lnz/DIThoTpw9/QZi66Q6E6drPu09iV2D1EBTacwo9zNQnqjent791Jdkho0rBAMpV07HtMB5ozokiXLH2ScwQ5nK/6N1ZvuegvCyyatbkJKcN3dy05fYT5mxogEBACH5BCEIAP8ALAQAJAAvABYAAAj+AP/RA0TG1b+DCBMqXMiwIUMtCwAsUOewosWK9IBFBABAg76LIEH2QweII0cO2kKqdDjynwiTIVbKZBjv3ygMGkD0m8lzoT5lO3sKHUq0IiZQRRvKS/euITkmNXSEwZc0YbtyWNExzDKj641QVQ/eO4cVqzuF+ZR07fom7L+xZcvJWyhmrQ9Ubv+lK3vOH0M2RpKcUehN3Mp+8vgpbIdOnT+/C+Mds6Zw0R09wj5e3BcNWrR9RBGZGR2nl0Jx2u4lvPeMmetoVHvqwzN6NKWEq0CBKhX037pmrpk1WycUn57aZ3QhDLYpk/NTCPFBC+5MtdB9dsygCZRQlXPnoawp/8sXrRk0e6CHPiMlK19CZd8zmVJ4j13svAhtgfI0CjL+iv1oQxlPAQEAIfkEIQgA/wAsAgAaACkAIAAACP4A//3L50+gwYMIEypcKHDfvRIbhDCcSDEhPwwAAAiQWLEjQ0MHMgLgoMyjSYSZEIjcYOyky3/+NmQsgOXlS35LQLSxybOnz59Agy60l2mQL6EU9fCYwcMd0oXMls6YgWTf04SZpk5NEu5qQidam3hNWMsIEib9xibcRy2t2rc2Y92Ca3AdnjNrEOmjK8iM3zS54Oq749fvJLqJCrs5ShcSnTuNEKZbd9IfPrcM6VUDhzAWKVPW+HXsd87cOdEnX2VaDUoaQnborBrcZ66c7XOyO+4rtXr1XIPSnDmDhrme7eP0TOoz1VtTNIPdmEln9rzhuePmcnfkRyqTplUHpSVNZ/Zsr3XT+jB7/CaMmXZw46Eh3FdPO9Brzpo9K0i3X7pzFQUEACH5BCEIAP8ALAIAEQAgACkAAAj+AP8J/EeOmr+BCBMqXDgQy4cOIxhKnOhoAoCLKCZqTFjk4sUO4TaKnFPAoweRIsNBaTBgRDGUKDclgkmzps2bC/UdxLlwHz4oSMzwVMivyIwZNIQOHcgJx9EZSKYtFbgqx1Mk0Kb+84fk6A08WgXyc8NkZtizaNPCxCdLlDO0m9iYYSMvbDa5ZszU4adVVt68d9CF1fNXz9ljdOrk6YeW3zfGaiMnXPYMbbxSmTi92heWVabPmrJO5Ufq8+dbYWGZ9iQ1bC1RpGQlpFePJ75x6hJiiyZNHeSp15gJfyYYobx3fGn2kyZc+DaE5aKX+y2SH/Pm5waqkx69Zr9owqsZITTHvVxymO/ATUfIrvzZc9J3au0H793AgAAh+QQhCAD/ACwCAAkAFgAvAAAI/gD/CRxIsJo/gv/WoUPH7yBCgfQ2SKSH0J/Dh/+uUQDA8QM4jCA5JeAIQMEnkBi7TSBZgRpKjNUqAKBQ6SVIY4ia2dzJMx23izwF5mGi5EnQgaWEzFg65eg/NUuXKjl31NGNqEucnpvTo8YTaE4FvgIVtqxZkPuABuWXb0+dRWH5zTFDF+7RWWnomqnD7agvNXrraDvqrw5dNJjC9ouEp9TZx5Aj62MWzFtZXp0ydbLntFzmTJlG9TvKDDRoUvCcmjJtKqw2UaNKqeXZL93syGXLUQ2LTxqzZtdGH63GrDiz3bSjGWe2zek1487SuYYWDRvCfPps7otHkeC6c+joId1Gqa6ceXPzCKMzb57d0X7n2JeT59Rf/HLSw9p7F290QAAh+QQhCAD/ACwCAAQAFgAvAAAI/gD/CRxIsKBAUkUOGVxYUE0CAAVwMGRoiwOAiww+TTToisJFiIo2GlTxEYO/jd1OEtzRAUa7fAztIUGSxF7BffwmfhsyoycTcyIJwtLRc8YOWUEHjhNSlAi3pAO7EZkxRBVUgtE+XbvKtaC7ciq5bspzZ0/XXXHMqO3D9ZFatXfaXVWF5u0dru0stUGz52nXYbi6Ch7MkF/Yq/z2lRIFq2u/UJkiN76aTFPkTKKAQo226bKoclf9iYqsKTDXfrRIBSPMurVrfuXAuRPczRkzZ/q4yrPNjFm0wyLL9e4d7R5XacOldWUHLZo04En90YPuWnA8eYL3nStXTh31iem4IXOfF3q7eHZc1Yk3R54ru3Pn1hXMl3tjv3swCa47h256QAA7) center center no-repeat #f5f5f5}#alert{position:fixed;width:30%;margin:30px auto;top:10px;left:0;right:0;z-index:2000;display:none}#alert a{text-decoration:underline}.option-item .bootstrap-switch{margin:15px 10px}.option-item button{margin:10px}.option-item input[type=number]{margin:15px 10px;width:80px;height:28px;padding:3px 10px;vertical-align:middle}.option-item select{margin:10px;display:inline-block}button img,span.btn img{margin-right:3px;margin-bottom:1px}#edit-favourites{float:right;margin-top:-5px}#edit-favourites-list{margin:10px}.about-img-left{float:left;margin:10px 20px 20px 0}.about-img-right{float:right;margin:10px 0 20px 20px}.save-link-options{float:right}.save-link-options input{margin-left:10px}#save-footer{border-top:none;margin-top:0}a:focus,button{outline:0;-moz-outline-style:none}.btn-default{border-color:#ddd}.btn-default:focus{background-color:#fff;border-color:#adadad}.btn-default:active,.btn-default:hover{background-color:#ebebeb;border-color:#adadad}.alert,.btn,.btn-lg,.dropdown-menu,.form-control,.modal-content,.nav-tabs>li>a,.popover,.tooltip-inner{border-radius:0!important}input[type=search]{-webkit-appearance:searchfield;box-shadow:none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.modal{overflow-y:auto}.form-control{background-color:transparent}code{border:0;white-space:pre-wrap}.bootstrap-switch,.bootstrap-switch-container,.bootstrap-switch-handle-off,.bootstrap-switch-handle-on,.bootstrap-switch-label,pre{border-radius:0!important}#banner,.title{border-bottom:1px solid #ddd}blockquote{font-size:inherit}blockquote a{cursor:pointer}.panel-body:after,.panel-body:before{content:""}.sortable-ghost{opacity:.6}.colorpicker-element{float:left;margin-right:15px}.colorpicker-color,.colorpicker-color div{height:100px}.word-wrap{white-space:pre!important;word-wrap:normal!important;overflow-x:scroll!important}.clearfix{height:0}.blur{color:transparent!important;text-shadow:rgba(0,0,0,.95) 0 0 10px!important}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.konami{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg);-moz-transform:rotate(180deg)}.hl1,.hlyellow{background-color:#fff000}.hl2,.hlblue{background-color:#95dfff}.hl3,.hlred{background-color:#ffb6b6}.hl4,.hlorange{background-color:#fcf8e3}.hl5,.hlgreen{background-color:#8de768}.title{color:#424242;background-color:#fafafa}.gutter{background-color:#eee;background-repeat:no-repeat;background-position:50%}.gutter.gutter-horizontal{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeCAYAAAAGos/EAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAlSURBVChTYzxz5sx/BiBgAhEgwPju3TtUEZZ79+6BGcNcDQMDACWJMFs4hNOSAAAAAElFTkSuQmCC);cursor:ew-resize}.gutter.gutter-vertical{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAACCAYAAABPJGxCAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTDSGXqTLjCA9C4gHQRRGGYGGMoAwwxNbIioQEQREQFFkKCAAaOhSKyIYiEoqGAPSBBQYjCKqKhkRtZKfHl57+Xl98e939pn73P32XuftS4AJE8fLi8FlgIgmSfgB3o401eFR9Cx/QAGeIABpgAwWempvkHuwUAkLzcXerrICfyL3gwBSPy+ZejpT6eD/0/SrFS+AADIX8TmbE46S8T5Ik7KFKSK7TMipsYkihlGiZkvSlDEcmKOW+Sln30W2VHM7GQeW8TinFPZyWwx94h4e4aQI2LER8QFGVxOpohvi1gzSZjMFfFbcWwyh5kOAIoktgs4rHgRm4iYxA8OdBHxcgBwpLgvOOYLFnCyBOJDuaSkZvO5cfECui5Lj25qbc2ge3IykzgCgaE/k5XI5LPpLinJqUxeNgCLZ/4sGXFt6aIiW5paW1oamhmZflGo/7r4NyXu7SK9CvjcM4jW94ftr/xS6gBgzIpqs+sPW8x+ADq2AiB3/w+b5iEAJEV9a7/xxXlo4nmJFwhSbYyNMzMzjbgclpG4oL/rfzr8DX3xPSPxdr+Xh+7KiWUKkwR0cd1YKUkpQj49PZXJ4tAN/zzE/zjwr/NYGsiJ5fA5PFFEqGjKuLw4Ubt5bK6Am8Kjc3n/qYn/MOxPWpxrkSj1nwA1yghI3aAC5Oc+gKIQARJ5UNz13/vmgw8F4psXpjqxOPefBf37rnCJ+JHOjfsc5xIYTGcJ+RmLa+JrCdCAACQBFcgDFaABdIEhMANWwBY4AjewAviBYBAO1gIWiAfJgA8yQS7YDApAEdgF9oJKUAPqQSNoASdABzgNLoDL4Dq4Ce6AB2AEjIPnYAa8AfMQBGEhMkSB5CFVSAsygMwgBmQPuUE+UCAUDkVDcRAPEkK50BaoCCqFKqFaqBH6FjoFXYCuQgPQPWgUmoJ+hd7DCEyCqbAyrA0bwwzYCfaGg+E1cBycBufA+fBOuAKug4/B7fAF+Dp8Bx6Bn8OzCECICA1RQwwRBuKC+CERSCzCRzYghUg5Uoe0IF1IL3ILGUGmkXcoDIqCoqMMUbYoT1QIioVKQ21AFaMqUUdR7age1C3UKGoG9QlNRiuhDdA2aC/0KnQcOhNdgC5HN6Db0JfQd9Dj6DcYDIaG0cFYYTwx4ZgEzDpMMeYAphVzHjOAGcPMYrFYeawB1g7rh2ViBdgC7H7sMew57CB2HPsWR8Sp4sxw7rgIHA+XhyvHNeHO4gZxE7h5vBReC2+D98Oz8dn4Enw9vgt/Az+OnydIE3QIdoRgQgJhM6GC0EK4RHhIeEUkEtWJ1sQAIpe4iVhBPE68QhwlviPJkPRJLqRIkpC0k3SEdJ50j/SKTCZrkx3JEWQBeSe5kXyR/Jj8VoIiYSThJcGW2ChRJdEuMSjxQhIvqSXpJLlWMkeyXPKk5A3JaSm8lLaUixRTaoNUldQpqWGpWWmKtKm0n3SydLF0k/RV6UkZrIy2jJsMWyZf5rDMRZkxCkLRoLhQWJQtlHrKJco4FUPVoXpRE6hF1G+o/dQZWRnZZbKhslmyVbJnZEdoCE2b5kVLopXQTtCGaO+XKC9xWsJZsmNJy5LBJXNyinKOchy5QrlWuTty7+Xp8m7yifK75TvkHymgFPQVAhQyFQ4qXFKYVqQq2iqyFAsVTyjeV4KV9JUCldYpHVbqU5pVVlH2UE5V3q98UXlahabiqJKgUqZyVmVKlaJqr8pVLVM9p/qMLkt3oifRK+g99Bk1JTVPNaFarVq/2ry6jnqIep56q/ojDYIGQyNWo0yjW2NGU1XTVzNXs1nzvhZei6EVr7VPq1drTltHO0x7m3aH9qSOnI6XTo5Os85DXbKug26abp3ubT2MHkMvUe+A3k19WN9CP16/Sv+GAWxgacA1OGAwsBS91Hopb2nd0mFDkqGTYYZhs+GoEc3IxyjPqMPohbGmcYTxbuNe408mFiZJJvUmD0xlTFeY5pl2mf5qpm/GMqsyu21ONnc332jeaf5ymcEyzrKDy+5aUCx8LbZZdFt8tLSy5Fu2WE5ZaVpFW1VbDTOoDH9GMeOKNdra2Xqj9WnrdzaWNgKbEza/2BraJto22U4u11nOWV6/fMxO3Y5pV2s3Yk+3j7Y/ZD/ioObAdKhzeOKo4ch2bHCccNJzSnA65vTC2cSZ79zmPOdi47Le5bwr4urhWuja7ybjFuJW6fbYXd09zr3ZfcbDwmOdx3lPtKe3527PYS9lL5ZXo9fMCqsV61f0eJO8g7wrvZ/46Pvwfbp8Yd8Vvnt8H67UWslb2eEH/Lz89vg98tfxT/P/PgAT4B9QFfA00DQwN7A3iBIUFdQU9CbYObgk+EGIbogwpDtUMjQytDF0Lsw1rDRsZJXxqvWrrocrhHPDOyOwEaERDRGzq91W7109HmkRWRA5tEZnTdaaq2sV1iatPRMlGcWMOhmNjg6Lbor+wPRj1jFnY7xiqmNmWC6sfaznbEd2GXuKY8cp5UzE2sWWxk7G2cXtiZuKd4gvj5/munAruS8TPBNqEuYS/RKPJC4khSW1JuOSo5NP8WR4ibyeFJWUrJSBVIPUgtSRNJu0vWkzfG9+QzqUvia9U0AV/Uz1CXWFW4WjGfYZVRlvM0MzT2ZJZ/Gy+rL1s3dkT+S453y9DrWOta47Vy13c+7oeqf1tRugDTEbujdqbMzfOL7JY9PRzYTNiZt/yDPJK817vSVsS1e+cv6m/LGtHlubCyQK+AXD22y31WxHbedu799hvmP/jk+F7MJrRSZF5UUfilnF174y/ariq4WdsTv7SyxLDu7C7OLtGtrtsPtoqXRpTunYHt897WX0ssKy13uj9l4tX1Zes4+wT7hvpMKnonO/5v5d+z9UxlfeqXKuaq1Wqt5RPXeAfWDwoOPBlhrlmqKa94e4h+7WetS212nXlR/GHM44/LQ+tL73a8bXjQ0KDUUNH4/wjowcDTza02jV2Nik1FTSDDcLm6eORR67+Y3rN50thi21rbTWouPguPD4s2+jvx064X2i+yTjZMt3Wt9Vt1HaCtuh9uz2mY74jpHO8M6BUytOdXfZdrV9b/T9kdNqp6vOyJ4pOUs4m3924VzOudnzqeenL8RdGOuO6n5wcdXF2z0BPf2XvC9duex++WKvU++5K3ZXTl+1uXrqGuNax3XL6+19Fn1tP1j80NZv2d9+w+pG503rm10DywfODjoMXrjleuvyba/b1++svDMwFDJ0dzhyeOQu++7kvaR7L+9n3J9/sOkh+mHhI6lH5Y+VHtf9qPdj64jlyJlR19G+J0FPHoyxxp7/lP7Th/H8p+Sn5ROqE42TZpOnp9ynbj5b/Wz8eerz+emCn6V/rn6h++K7Xxx/6ZtZNTP+kv9y4dfiV/Kvjrxe9rp71n/28ZvkN/NzhW/l3x59x3jX+z7s/cR85gfsh4qPeh+7Pnl/eriQvLDwG/eE8/s3BCkeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAI0lEQVQYV2M8c+bMfwYgUFJSAlEM9+7dA9O05jOBSboDBgYAtPcYZ1oUA30AAAAASUVORK5CYII=);cursor:ns-resize}.operation{border:1px solid #999;border-top-width:0}.op_list .operation{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#rec_list .operation{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.arg-input,select{height:34px;border:1px solid #ddd;background-color:#fff;color:#424242}#controls{border-top:1px solid #ddd;background-color:#fafafa}.textarea-wrapper div,.textarea-wrapper textarea{font-family:Consolas,monospace;font-size:inherit}.io-info{font-weight:400;font-size:8pt}.arg-title,.category-title{font-weight:700}.arg-input{font-size:15px;line-height:1.428571429}select{padding:6px 8px}.arg[disabled]{background-color:#eee}textarea.arg{color:#424242}.break{color:#b94a48!important;background-color:#f2dede!important;border-color:#eed3d7!important}.category-title{background-color:#fafafa;border-bottom:1px solid #eee}.category-title[aria-expanded=true],.category-title[href='#catFavourites']{border-bottom-color:#ddd}.category-title.collapsed{border-bottom-color:#eee}.category-title:hover{color:#3a87ad}#search{border-bottom:1px solid #e3e3e3}.dropping-file{border:5px dashed #3a87ad!important}.selected-op{color:#c09853!important;background-color:#fcf8e3!important;border-color:#fbeed5!important}.option-item input[type=number]{font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;border:1px solid #ccc}.favourites-hover{color:#468847;background-color:#dff0d8;border:2px dashed #468847!important;padding:8px 8px 9px}#edit-favourites-list{border:1px solid #bce8f1}#edit-favourites-list .operation{border-left:none;border-right:none}#edit-favourites-list .operation:last-child{border-bottom:none}.subtext{font-style:italic;font-size:13px;color:#999}#save-footer{border-bottom:1px solid #e5e5e5}.flow-control-op{color:#396f3a!important;background-color:#c7e4ba!important;border-color:#b3dba2!important}.flow-control-op.break{color:#94312f!important;background-color:#eabfbf!important;border-color:#e2aeb5!important}#support-modal textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#load-text,#save-text{font-family:Consolas,monospace}button.dropdown-toggle{background-color:#f4f4f4}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#fafafa}::-webkit-scrollbar-thumb{background-color:#ccc}::-webkit-scrollbar-thumb:hover{background-color:#bbb}::-webkit-scrollbar-corner{background-color:#fafafa}.disabled{color:#999!important;background-color:#dfdfdf!important;border-color:#cdcdcd!important}.grey{color:#333;background-color:#f5f5f5;border-color:#ddd}.dark-blue{color:#fff;background-color:#428bca;border-color:#428bca}.red{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.amber{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.green{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.blue{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1} Edit
Operations
    Recipe
      Input
      Output
      Operations
        Recipe
          Input
          Output
          \ No newline at end of file +Ob.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=255)return new Ob(c.value);throw new a("FORG0001")},g("unsignedByte",Ob),Pb.prototype=new ub,Pb.prototype.builtInKind=j.NORMALIZEDSTRING_DT,Pb.cast=function(a){return new Pb(Ac(a))},g("normalizedString",Pb),Qb.prototype=new Pb,Qb.prototype.builtInKind=j.TOKEN_DT,Qb.cast=function(a){return new Qb(Ac(a))},g("token",Qb),Rb.prototype=new Qb,Rb.prototype.builtInKind=j.NAME_DT,Rb.cast=function(a){return new Rb(Ac(a))},g("Name",Rb),Sb.prototype=new Rb,Sb.prototype.builtInKind=j.NCNAME_DT,Sb.cast=function(a){return new Sb(Ac(a))},g("NCName",Sb),Tb.prototype=new Sb,Tb.prototype.builtInKind=j.ENTITY_DT,Tb.cast=function(a){return new Tb(Ac(a))},g("ENTITY",Tb),Ub.prototype=new Sb,Ub.prototype.builtInKind=j.ID_DT,Ub.cast=function(a){return new Ub(Ac(a))},g("ID",Ub),Vb.prototype=new Sb,Vb.prototype.builtInKind=j.IDREF_DT,Vb.cast=function(a){return new Vb(Ac(a))},g("IDREF",Vb),Wb.prototype=new Qb,Wb.prototype.builtInKind=j.LANGUAGE_DT,Wb.cast=function(a){return new Wb(Ac(a))},g("language",Wb),Xb.prototype=new Qb,Xb.prototype.builtInKind=j.NMTOKEN_DT,Xb.cast=function(a){return new Xb(Ac(a))},g("NMTOKEN",Xb),Zb.prototype=new Yb,$b.prototype=new Zb,_b.prototype=new Zb,ac.prototype=new Zb,bc.prototype=new Zb,cc.prototype=new Zb,dc.prototype=new Zb,$c["hexBinary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["base64Binary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-less-than"]=function(a,b){return new Xa(a.valueOf()b.valueOf())},$c["yearMonthDuration-less-than"]=function(a,b){return new Xa(lc(a)lc(b))},$c["dayTimeDuration-less-than"]=function(a,b){return new Xa(jc(a)jc(b))},$c["duration-equal"]=function(a,b){return new Xa(a.negative==b.negative&&lc(a)==lc(b)&&jc(a)==jc(b))},$c["dateTime-equal"]=function(a,b){return gc(a,b,"eq")},$c["dateTime-less-than"]=function(a,b){return gc(a,b,"lt")},$c["dateTime-greater-than"]=function(a,b){return gc(a,b,"gt")},$c["date-equal"]=function(a,b){return fc(a,b,"eq")},$c["date-less-than"]=function(a,b){return fc(a,b,"lt")},$c["date-greater-than"]=function(a,b){return fc(a,b,"gt")},$c["time-equal"]=function(a,b){return ec(a,b,"eq")},$c["time-less-than"]=function(a,b){return ec(a,b,"lt")},$c["time-greater-than"]=function(a,b){return ec(a,b,"gt")},$c["gYearMonth-equal"]=function(a,b){return gc(new _a(a.year,a.month,Za(a.year,a.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,b.month,Za(b.year,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gYear-equal"]=function(a,b){return gc(new _a(a.year,1,1,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,1,1,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonthDay-equal"]=function(a,b){return gc(new _a(1972,a.month,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonth-equal"]=function(a,b){return gc(new _a(1972,a.month,Za(1972,b.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,Za(1972,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gDay-equal"]=function(a,b){return gc(new _a(1972,12,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,12,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["add-yearMonthDurations"]=function(a,b){return mc(lc(a)+lc(b))},$c["subtract-yearMonthDurations"]=function(a,b){return mc(lc(a)-lc(b))},$c["multiply-yearMonthDuration"]=function(a,b){return mc(lc(a)*b)},$c["divide-yearMonthDuration"]=function(a,b){return mc(lc(a)/b)},$c["divide-yearMonthDuration-by-yearMonthDuration"]=function(a,b){return new fb(lc(a)/lc(b))},$c["add-dayTimeDurations"]=function(a,b){return kc(jc(a)+jc(b))},$c["subtract-dayTimeDurations"]=function(a,b){return kc(jc(a)-jc(b))},$c["multiply-dayTimeDuration"]=function(a,b){return kc(jc(a)*b)},$c["divide-dayTimeDuration"]=function(a,b){return kc(jc(a)/b)},$c["divide-dayTimeDuration-by-dayTimeDuration"]=function(a,b){return new fb(jc(a)/jc(b))},$c["subtract-dateTimes"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-dates"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-times"]=function(a,b){return kc(nc(a)-nc(b))},$c["add-yearMonthDuration-to-dateTime"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-dateTime"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-dateTime"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-dateTime"]=function(a,b){return ic(a,b,"-")},$c["add-yearMonthDuration-to-date"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-date"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-date"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-date"]=function(a,b){return ic(a,b,"-")},$c["add-dayTimeDuration-to-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours+=b.hours,c.minutes+=b.minutes,c.seconds+=b.seconds,wb(c)},$c["subtract-dayTimeDuration-from-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours-=b.hours,c.minutes-=b.minutes,c.seconds-=b.seconds,wb(c)},$c["is-same-node"]=function(a,b){return new Xa(this.DOMAdapter.isSameNode(a,b))},$c["node-before"]=function(a,b){return new Xa(!!(4&this.DOMAdapter.compareDocumentPosition(a,b)))},$c["node-after"]=function(a,b){return new Xa(!!(2&this.DOMAdapter.compareDocumentPosition(a,b)))},$c["numeric-add"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e+d*e)/e)},$c["numeric-subtract"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e-d*e)/e)},$c["numeric-multiply"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e*(d*e)/(e*e))},$c["numeric-divide"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,a*e/(b*e))},$c["numeric-integer-divide"]=function(a,b){var c=a/b;return new Cb(Gc.floor(c)+(c<0))},$c["numeric-mod"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e%(d*e)/e)},$c["numeric-unary-plus"]=function(a){return a},$c["numeric-unary-minus"]=function(a){return a.value*=-1,a},$c["numeric-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["numeric-less-than"]=function(a,b){return new Xa(a.valueOf()b.valueOf())},$c["QName-equal"]=function(a,b){return new Xa(a.localName==b.localName&&a.namespaceURI==b.namespaceURI)},$c.concatenate=function(a,b){return a.concat(b)},$c.union=function(b,c){for(var d,e=[],f=0,g=b.length;fh?g.pop():(g.push(f[i]),h++):"."!=f[i]&&g.push(f[i]);".."!=f[--i]&&"."!=f[i]||g.push(""),d.path=g.join("/")}return d}),f("true",[],function(){return new Xa(!0)}),f("false",[],function(){return new Xa(!1)}),f("not",[[Yb,"*"]],function(a){return new Xa(!uc(a,this))}),f("position",[],function(){return new Cb(this.position)}),f("last",[],function(){return new Cb(this.size)}),f("current-dateTime",[],function(){return this.dateTime}),f("current-date",[],function(){return Ya.cast(this.dateTime)}),f("current-time",[],function(){return vb.cast(this.dateTime)}),f("implicit-timezone",[],function(){return this.timezone}),f("default-collation",[],function(){return new ub(this.staticContext.defaultCollationName)}),f("static-base-uri",[],function(){return Va.cast(new ub(this.staticContext.baseURI||""))}),f("years-from-duration",[[hb,"?"]],function(a){return rc(a,"year")}),f("months-from-duration",[[hb,"?"]],function(a){return rc(a,"month")}),f("days-from-duration",[[hb,"?"]],function(a){return rc(a,"day")}),f("hours-from-duration",[[hb,"?"]],function(a){return rc(a,"hours")}),f("minutes-from-duration",[[hb,"?"]],function(a){return rc(a,"minutes")}),f("seconds-from-duration",[[hb,"?"]],function(a){return rc(a,"seconds")}),f("year-from-dateTime",[[_a,"?"]],function(a){return sc(a,"year")}),f("month-from-dateTime",[[_a,"?"]],function(a){return sc(a,"month")}),f("day-from-dateTime",[[_a,"?"]],function(a){return sc(a,"day")}),f("hours-from-dateTime",[[_a,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-dateTime",[[_a,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-dateTime",[[_a,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-dateTime",[[_a,"?"]],function(a){return sc(a,"timezone")}),f("year-from-date",[[Ya,"?"]],function(a){return sc(a,"year")}),f("month-from-date",[[Ya,"?"]],function(a){return sc(a,"month")}),f("day-from-date",[[Ya,"?"]],function(a){return sc(a,"day")}),f("timezone-from-date",[[Ya,"?"]],function(a){return sc(a,"timezone")}),f("hours-from-time",[[vb,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-time",[[vb,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-time",[[vb,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-time",[[vb,"?"]],function(a){return sc(a,"timezone")}),f("adjust-dateTime-to-timezone",[[_a,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)});f("adjust-date-to-timezone",[[Ya,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)});f("adjust-time-to-timezone",[[vb,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=Xc["node-name"].call(this,b);return new ub(null==c?"":c.toString())}),f("local-name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return new ub(this.DOMAdapter.getProperty(b,"localName")||"")}),f("namespace-uri",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return Va.cast(new ub(""))}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"namespaceURI")||""))}),f("number",[[Ta,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=vc([this.item],this)[0]}var c=new gb(Kc);if(null!=b)try{c=gb.cast(b)}catch(a){}return c}),f("lang",[[ub,"?"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=this.DOMAdapter.getProperty;2==d(c,"nodeType")&&(c=d(c,"ownerElement"));for(var e;c;c=d(c,"parentNode"))if(e=d(c,"attributes"))for(var f=0,g=e.length;f1?b.valueOf():0;if(c<0){var d=new Cb(Gc.pow(10,-c)),e=Gc.round($c["numeric-divide"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-divide"].call(this,a,d))),$c["numeric-multiply"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}var d=new Cb(Gc.pow(10,c)),e=Gc.round($c["numeric-multiply"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-multiply"].call(this,a,d))),$c["numeric-divide"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}),f("resolve-QName",[[ub,"?"],[bc]],function(b,c){if(null==b)return null;var d=b.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");var f=e[1]||null,g=e[2],h=this.DOMAdapter.lookupNamespaceURI(c,f);if(null!=f&&!h)throw new a("FONS0004");return new tb(f,g,h||null)}),f("QName",[[ub,"?"],[ub]],function(b,c){var d=c.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");return new tb(e[1]||null,e[2]||null,null==b?"":b.valueOf())}),f("prefix-from-QName",[[tb,"?"]],function(a){return null!=a&&a.prefix?new Sb(a.prefix):null}),f("local-name-from-QName",[[tb,"?"]],function(a){return null==a?null:new Sb(a.localName)}),f("namespace-uri-from-QName",[[tb,"?"]],function(a){return null==a?null:Va.cast(new ub(a.namespaceURI||""))}),f("namespace-uri-for-prefix",[[ub,"?"],[bc]],function(a,b){var c=null==a?"":a.valueOf(),d=this.DOMAdapter.lookupNamespaceURI(b,c||null);return null==d?null:Va.cast(new ub(d))}),f("in-scope-prefixes",[[bc]],function(a){throw"Function 'in-scope-prefixes' not implemented"}),f("boolean",[[Yb,"*"]],function(a){return new Xa(uc(a,this))}),f("index-of",[[Ta,"*"],[Ta],[ub,"",!0]],function(a,b,c){if(!a.length||null==b)return[];var d=b;d instanceof xb&&(d=ub.cast(d));for(var e,f=[],g=0,h=a.length;g1)throw"Collation parameter in function 'distinct-values' is not implemented";if(!a.length)return null;for(var c,d=[],e=0,f=a.length;ed&&(e=d+1);for(var f=[],g=0;gc)return a;for(var e=[],f=0;f2?Gc.round(c):a.length-d+1;return a.slice(d-1,d-1+e)}),f("unordered",[[Yb,"*"]],function(a){return a}),f("zero-or-one",[[Yb,"*"]],function(b){if(b.length>1)throw new a("FORG0003");return b}),f("one-or-more",[[Yb,"*"]],function(b){if(!b.length)throw new a("FORG0004");return b}),f("exactly-one",[[Yb,"*"]],function(b){if(1!=b.length)throw new a("FORG0005");return b}),f("deep-equal",[[Yb,"*"],[Yb,"*"],[ub,"",!0]],function(a,b,c){throw"Function 'deep-equal' not implemented"}),f("count",[[Yb,"*"]],function(a){return new Cb(a.length)}),f("avg",[[Ta,"*"]],function(b){if(!b.length)return null;try{var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e=1,f=b.length;e1?c:new gb(0);try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f2&&(f=d.valueOf()),e=f==Sc+"/collation/codepoint"?Gd:this.staticContext.getCollation(f),!e)throw new a("FOCH0002");return new Cb(e.compare(b.valueOf(),c.valueOf()))}),f("codepoint-equal",[[ub,"?"],[ub,"?"]],function(a,b){return null==a||null==b?null:new Xa(a.valueOf()==b.valueOf())}),f("concat",null,function(){if(arguments.length<2)throw new a("XPST0017");for(var b,c=[],d=0,e=arguments.length;d2?e+Gc.round(c):d.length;return new ub(f>e?d.substring(e,f):"")}),f("string-length",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new Cb(null==b?0:b.valueOf().length)}),f("normalize-space",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new ub(null==b?"":Pc(b).replace(/\s\s+/g," "))}),f("normalize-unicode",[[ub,"?"],[ub,"",!0]],function(a,b){throw"Function 'normalize-unicode' not implemented"}),f("upper-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toUpperCase())}),f("lower-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toLowerCase())}),f("translate",[[ub,"?"],[ub],[ub]],function(a,b,c){if(null==a)return new ub("");for(var d,e=a.valueOf().split(""),f=b.valueOf().split(""),g=c.valueOf().split(""),h=g.length,i=[],j=0,k=e.length;j126)&&(c[d]=window.encodeURIComponent(c[d]));return new ub(c.join(""))}),f("contains",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'contains' is not implemented";return new Xa((null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf())>=0)}),f("starts-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'starts-with' is not implemented";return new Xa(0==(null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf()))}),f("ends-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'ends-with' is not implemented";var d=null==a?"":a.valueOf(),e=null==b?"":b.valueOf();return new Xa(d.indexOf(e)==d.length-e.length)}),f("substring-before",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-before' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(0,d):"")}),f("substring-after",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-after' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(d+f.length):"")}),f("matches",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():"");return new Xa(e.test(d))}),f("replace",[[ub,"?"],[ub],[ub],[ub,"",!0]],function(a,b,c,d){var e=null==a?"":a.valueOf(),f=xc(b.valueOf(),arguments.length>3?d.valueOf():"");return new Xa(e.replace(f,c.valueOf()))}),f("tokenize",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){for(var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():""),f=[],g=0,h=d.split(e),i=h.length;gb?1:-1},yc.prototype=new c;var Hd=new e;yc.prototype.getProperty=function(a,b){if(b in a)return a[b];if("baseURI"==b){for(var c,d="",e=Hd.getFunction("{http://www.w3.org/2005/xpath-functions}resolve-uri"),f=Hd.getDataType("{http://www.w3.org/2001/XMLSchema}string"),g=a;g;g=g.parentNode)1==g.nodeType&&(c=g.getAttribute("xml:base"))&&(d=e(new f(c),new f(d)).toString());return d}if("textContent"==b){var h=[];return function(a){for(var b,c=0;b=a.childNodes[c];c++)3==b.nodeType||4==b.nodeType?h.push(b.data):1==b.nodeType&&b.firstChild&&arguments.callee(b)}(a),h.join("")}},yc.prototype.compareDocumentPosition=function(a,b){if("compareDocumentPosition"in a)return a.compareDocumentPosition(b);if(b==a)return 0;var c,d,e,f,g,h=null,i=null;if(2==a.nodeType&&(h=a,a=this.getProperty(h,"ownerElement")),2==b.nodeType&&(i=b,b=this.getProperty(i,"ownerElement")),h&&i&&a&&a==b)for(f=0,c=this.getProperty(a,"attributes"),g=c.length;fMath.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b);h.fillStyle="green";for(var u=0;u=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},padLeft:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.lengthb&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treatAsUtf8&&(a=Utils.byteArrayToChars(Utils.strToByteArray(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parseEscapedChars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expandAlphRange:function(a){for(var b=[],c=0;c255)return Utils.strToUtf8ByteArray(a);return c},strToUtf8ByteArray:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.wordArrayToByteArray(b);return a.length!==b.sigBytes&&(window.app.options.attemptHighlight=!1),c},strToCharcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byteArrayToUtf8:function(a){try{for(var b=[],c=0;c>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attemptHighlight=!1),e}catch(b){return Utils.byteArrayToChars(a)}},byteArrayToChars:function(a){if(!a)return"";for(var b="",c=0;c>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicodeToWin1251:function(a){for(var b=[],c=0;c>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},fromBase64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expandAlphRange(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byteArrayToUtf8(l):l},toHex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},fromHex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regexRep[b];a=a.replace(d,"")}for(var e=[],f=0;f]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escapeHtml:function(a){return a.replace(/>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,runTo:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},runFrom:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],runTo:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.toBase64(a,c)},REMOVE_NON_ALPH_CHARS:!0,runFrom:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.fromBase64(a,c,"byteArray",d)},BASE32_ALPHABET:"A-Z2-7=",runTo32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expandAlphRange(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},runFrom32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expandAlphRange(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,runOffsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.toBase64(a,c),f=Utils.toBase64([0].concat(a),c),g=Utils.toBase64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k=" \ No newline at end of file diff --git a/build/prod/index.html b/build/prod/index.html index 824ff968..3909d7d5 100755 --- a/build/prod/index.html +++ b/build/prod/index.html @@ -18,4 +18,4 @@ See the License for the specific language governing permissions and limitations under the License. --> -CyberChef Edit
          Operations
            Recipe
              Input
              Output
              \ No newline at end of file +CyberChef Edit
              Operations
                Recipe
                  Input
                  Output
                  \ No newline at end of file diff --git a/build/prod/scripts.js b/build/prod/scripts.js index 29232a45..1923acc1 100755 --- a/build/prod/scripts.js +++ b/build/prod/scripts.js @@ -278,14 +278,14 @@ function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof */ function(){function a(a){this.code=a,this.message=Vc[a]}function b(b){var c=b.match(/\$?(?:(?![0-9-])(?:\w[\w.-]*|\*):)?(?![0-9-])(?:\w[\w.-]*|\*)|\(:|:\)|\/\/|\.\.|::|\d+(?:\.\d*)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?|"[^"]*(?:""[^"]*)*"|'[^']*(?:''[^']*)*'|<<|>>|[!<>]=|(?![0-9-])[\w-]+:\*|\s+|./g);if(c){for(var d=0,e=0,f=c.length;e0)}function e(){this.dataTypes={},this.documents={},this.functions={},this.collations={},this.collections={}}function f(a,b,c){Xc[a]=c,Yc[a]=b}function g(a,b){Zc[a]=b}function h(c,d){var e=new b(c),f=l(e,d);if(!e.eof())throw new a("XPST0003");if(!f)throw new a("XPST0003");this.internalExpression=f}function i(){}function j(){}function k(){this.items=[]}function l(b,c){var d;if(!b.eof()&&(d=m(b,c))){var e=new k;for(e.items.push(d);","==b.peek();){if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");e.items.push(d)}return e}}function m(a,b){if(!a.eof())return s(a,b)||o(a,b)||u(a,b)||K(a,b)}function n(){this.bindings=[],this.returnExpr=null}function o(b,c){if("for"==b.peek()&&"$"==b.peek(1).substr(0,1)){b.next();var d,e=new n;do e.bindings.push(q(b,c));while(","==b.peek()&&b.next());if("return"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(d=m(b,c)))throw new a("XPST0003");return e.returnExpr=d,e}}function p(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function q(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new p(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function r(a,b,c){this.condExpr=a,this.thenExpr=b,this.elseExpr=c}function s(b,c){var d,e,f;if("if"==b.peek()&&"("==b.peek(1)){if(b.next(2),b.eof()||!(d=l(b,c)))throw new a("XPST0003");if(")"!=b.peek())throw new a("XPST0003");if(b.next(),"then"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");if("else"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(f=m(b,c)))throw new a("XPST0003");return new r(d,e,f)}}function t(a){this.quantifier=a,this.bindings=[],this.satisfiesExpr=null}function u(b,c){var d=b.peek();if(("some"==d||"every"==d)&&"$"==b.peek(1).substr(0,1)){b.next();var e,f=new t(d);do f.bindings.push(w(b,c));while(","==b.peek()&&b.next());if("satisfies"!=b.peek())throw new a("XPST0003");if(b.next(),b.eof()||!(e=m(b,c)))throw new a("XPST0003");return f.satisfiesExpr=e,f}}function v(a,b,c,d){this.prefix=a,this.localName=b,this.namespaceURI=c,this.inExpr=d}function w(b,c){var d=b.peek().substr(1).match(id);if(!d)throw new a("XPST0003");if("*"==d[1]||"*"==d[2])throw new a("XPST0003");if(b.next(),"in"!=b.peek())throw new a("XPST0003");b.next();var e;if(b.eof()||!(e=m(b,c)))throw new a("XPST0003");return new v(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null,e)}function x(a,b,c){this.left=a,this.right=b,this.operator=c}function y(b,c){var d,e;if(!b.eof()&&(d=ya(b,c))){if(!(b.peek()in cd))return d;var f=b.peek();if(b.next(),b.eof()||!(e=ya(b,c)))throw new a("XPST0003");return new x(d,e,f)}}function z(a,b){var c=vc(a.left.evaluate(b),b);if(!c.length)return new Xa(!1);var d=vc(a.right.evaluate(b),b);if(!d.length)return new Xa(!1);for(var e,f,g=!1,h=0,i=c.length;hj)throw new a("XPST0017");if(i1)throw new a("XPTY0004")}else if("+"==d){if(e<1)throw new a("XPTY0004")}else if("*"!=d&&1!=e)throw new a("XPTY0004")}function va(a){this.left=a,this.items=[]}function wa(b,c){var d,e;if(!b.eof()&&(d=Ca(b,c))){if("intersect"!=(e=b.peek())&&"except"!=e)return d;for(var f=new va(d);"intersect"==(e=b.peek())||"except"==e;){if(b.next(),b.eof()||!(d=Ca(b,c)))throw new a("XPST0003");f.items.push([e,d])}return f}}function xa(a,b){this.left=a,this.right=b}function ya(b,c){var d,e;if(!b.eof()&&(d=D(b,c))){if("to"!=b.peek())return d;if(b.next(),b.eof()||!(e=D(b,c)))throw new a("XPST0003");return new xa(d,e)}}function za(a){this.left=a,this.items=[]}function Aa(b,c){var d,e;if(!b.eof()&&(d=wa(b,c))){if("|"!=(e=b.peek())&&"union"!=e)return d;for(var f=new za(d);"|"==(e=b.peek())||"union"==e;){if(b.next(),b.eof()||!(d=wa(b,c)))throw new a("XPST0003");f.items.push(d)}return f}}function Ba(a,b){this.expression=a,this.type=b}function Ca(b,c){var d,e;if(!b.eof()&&(d=Ea(b,c))){if("instance"!=b.peek()||"of"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Ba(d,e)}}function Da(a,b){this.expression=a,this.type=b}function Ea(b,c){var d,e;if(!b.eof()&&(d=Ga(b,c))){if("treat"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Oa(b,c)))throw new a("XPST0003");return new Da(d,e)}}function Fa(a,b){this.expression=a,this.type=b}function Ga(b,c){var d,e;if(!b.eof()&&(d=Ia(b,c))){if("castable"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Fa(d,e)}}function Ha(a,b){this.expression=a,this.type=b}function Ia(b,c){var d,e;if(!b.eof()&&(d=H(b,c))){if("cast"!=b.peek()||"as"!=b.peek(1))return d;if(b.next(2),b.eof()||!(e=Qa(b,c)))throw new a("XPST0003");return new Ha(d,e)}}function Ja(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function Ka(b,c){var d=b.peek().match(id);if(d){if("*"==d[1]||"*"==d[2])throw new a("XPST0003");return b.next(),new Ja(d[1]||null,d[2],d[1]?c.getURIForPrefix(d[1]):null)}}function La(a){this.test=a}function Ma(b,c){if(!b.eof()){var d;if("item"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new La}return(d=Z(b,c))?new La(d):(d=Ka(b,c))?new La(d):void 0}}function Na(a,b){this.itemType=a||null,this.occurence=b||null}function Oa(b,c){if(!b.eof()){if("empty-sequence"==b.peek()&&"("==b.peek(1)){if(b.next(2),")"!=b.peek())throw new a("XPST0003");return b.next(),new Na}var d,e;return!b.eof()&&(d=Ma(b,c))?(e=b.peek(),"?"==e||"*"==e||"+"==e?b.next():e=null,new Na(d,e)):void 0}}function Pa(a,b){this.itemType=a||null,this.occurence=b||null}function Qa(a,b){var c,d;if(!a.eof()&&(c=Ka(a,b)))return d=a.peek(),"?"==d?a.next():d=null,new Pa(c,d)}function Ra(){}function Sa(){}function Ta(){}function Ua(a){return a instanceof lb||a instanceof gb||a instanceof fb}function Va(a,b,c,d,e){this.scheme=a,this.authority=b,this.path=c,this.query=d,this.fragment=e}function Wa(a){this.value=a}function Xa(a){this.value=a}function Ya(a,b,c,d,e){this.year=a,this.month=b,this.day=c,this.timezone=d,this.negative=e}function Za(a,b){return 2==b&&(a%400==0||a%100!=0&&a%4==0)?29:pd[b-1]}function $a(a,b){if(!b){var c=Za(a.year,a.month);if(a.day>c)for(;a.day>c;)a.month+=1,a.month>12&&(a.year+=1,0==a.year&&(a.year=1),a.month=1),a.day-=c,c=Za(a.year,a.month);else if(a.day<1)for(;a.day<1;)a.month-=1,a.month<1&&(a.year-=1,0==a.year&&(a.year=-1),a.month=12),c=Za(a.year,a.month),a.day+=c}return a.month>12?(a.year+=~~(a.month/12),0==a.year&&(a.year=1),a.month=a.month%12):a.month<1&&(a.year+=~~(a.month/12)-1,0==a.year&&(a.year=-1),a.month=a.month%12+12),a}function _a(a,b,c,d,e,f,g,h){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.timezone=g,this.negative=h}function ab(a,b){var c=Ac(a);return arguments.length<2&&(b=2),(c.length0?"+":"-")+ab(Gc.abs(~~(b/60)))+":"+ab(Gc.abs(b%60)):"Z"}function cb(a){return(a.negative?"-":"")+ab(a.year,4)+"-"+ab(a.month)+"-"+ab(a.day)}function db(a){var b=Ac(a.seconds).split(".");return ab(a.hours)+":"+ab(a.minutes)+":"+ab(b[0])+(b.length>1?"."+b[1]:"")}function eb(a){return $a(wb(a))}function fb(a){this.value=a}function gb(a){this.value=a}function hb(a,b,c,d,e,f,g){this.year=a,this.month=b,this.day=c,this.hours=d,this.minutes=e,this.seconds=f,this.negative=g}function ib(a){return(a.year?a.year+"Y":"")+(a.month?a.month+"M":"")}function jb(a){return(a.day?a.day+"D":"")+(a.hours||a.minutes||a.seconds?"T"+(a.hours?a.hours+"H":"")+(a.minutes?a.minutes+"M":"")+(a.seconds?a.seconds+"S":""):"")}function kb(a){return zb(Bb(a))}function lb(a){this.value=a}function mb(a,b){this.day=a,this.timezone=b}function nb(a,b){this.month=a,this.timezone=b}function ob(a,b,c){this.month=a,this.day=b,this.timezone=c}function pb(a,b){this.year=a,this.timezone=b}function qb(a,b,c){this.year=a,this.month=b,this.timezone=c}function rb(a){this.value=a}function sb(){}function tb(a,b,c){this.prefix=a,this.localName=b,this.namespaceURI=c}function ub(a){this.value=a}function vb(a,b,c,d){this.hours=a,this.minutes=b,this.seconds=c,this.timezone=d}function wb(a){return(a.seconds>=60||a.seconds<0)&&(a.minutes+=~~(a.seconds/60)-(a.seconds<0&&a.seconds%60?1:0),a.seconds=a.seconds%60+(a.seconds<0&&a.seconds%60?60:0)),(a.minutes>=60||a.minutes<0)&&(a.hours+=~~(a.minutes/60)-(a.minutes<0&&a.minutes%60?1:0),a.minutes=a.minutes%60+(a.minutes<0&&a.minutes%60?60:0)),(a.hours>=24||a.hours<0)&&(a instanceof _a&&(a.day+=~~(a.hours/24)-(a.hours<0&&a.hours%24?1:0)),a.hours=a.hours%24+(a.hours<0&&a.hours%24?24:0)),a}function xb(a){this.value=a}function yb(a,b,c){hb.call(this,a,b,0,0,0,0,c)}function zb(a){return a.month>=12&&(a.year+=~~(a.month/12),a.month%=12),a}function Ab(a,b,c,d,e){hb.call(this,0,0,a,b,c,d,e)}function Bb(a){return a.seconds>=60&&(a.minutes+=~~(a.seconds/60),a.seconds%=60),a.minutes>=60&&(a.hours+=~~(a.minutes/60),a.minutes%=60),a.hours>=24&&(a.day+=~~(a.hours/24),a.hours%=24),a}function Cb(a){this.value=a}function Db(a){this.value=a}function Eb(a){this.value=a}function Fb(a){this.value=a}function Gb(a){this.value=a}function Hb(a){this.value=a}function Ib(a){this.value=a}function Jb(a){this.value=a}function Kb(a){this.value=a}function Lb(a){this.value=a}function Mb(a){this.value=a}function Nb(a){this.value=a}function Ob(a){this.value=a}function Pb(a){this.value=a}function Qb(a){this.value=a}function Rb(a){this.value=a}function Sb(a){this.value=a}function Tb(a){this.value=a}function Ub(a){this.value=a}function Vb(a){this.value=a}function Wb(a){this.value=a}function Xb(a){this.value=a}function Yb(){}function Zb(){}function $b(){}function _b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(a,b,c){var d=nc(a),e=nc(b);return new Xa("lt"==c?de:d==e)}function fc(a,b,c){return gc(_a.cast(a),_a.cast(b),c)}function gc(a,b,c){var d=new Ab(0,0,0,0),e=tc(a,d).toString(),f=tc(b,d).toString();return new Xa("lt"==c?ef:e==f)}function hc(a,b,c){var d;a instanceof Ya?d=new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative)),d.year=d.year+b.year*("-"==c?-1:1),d.month=d.month+b.month*("-"==c?-1:1),$a(d,!0);var e=Za(d.year,d.month);return d.day>e&&(d.day=e),d}function ic(a,b,c){var d;if(a instanceof Ya){var e=60*(60*b.hours+b.minutes)+b.seconds;d=new Ya(a.year,a.month,a.day,a.timezone,a.negative),d.day=d.day+b.day*("-"==c?-1:1)-1*(e&&"-"==c),$a(d)}else a instanceof _a&&(d=new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),d.seconds=d.seconds+b.seconds*("-"==c?-1:1),d.minutes=d.minutes+b.minutes*("-"==c?-1:1),d.hours=d.hours+b.hours*("-"==c?-1:1),d.day=d.day+b.day*("-"==c?-1:1),eb(d));return d}function jc(a){return(60*(60*(24*a.day+a.hours)+a.minutes)+a.seconds)*(a.negative?-1:1)}function kc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/86400),d=~~((a-=3600*c*24)/3600),e=~~((a-=3600*d)/60),f=a-=60*e;return new Ab(c,d,e,f,b)}function lc(a){return(12*a.year+a.month)*(a.negative?-1:1)}function mc(a){var b=(a=Gc.round(a))<0,c=~~((a=Gc.abs(a))/12),d=a-=12*c;return new yb(c,d,b)}function nc(a){return a.seconds+60*(a.minutes-(null!=a.timezone?a.timezone%60:0)+60*(a.hours-(null!=a.timezone?~~(a.timezone/60):0)))}function oc(a){var b=new Ec((a.negative?-1:1)*a.year,a.month,a.day,0,0,0,0);return a instanceof _a&&(b.setHours(a.hours),b.setMinutes(a.minutes),b.setSeconds(a.seconds)),null!=a.timezone&&b.setMinutes(b.getMinutes()-a.timezone),b.getTime()/1e3}function pc(a,b){if(Ic(a)||Gc.abs(a)==Lc||Ic(b)||Gc.abs(b)==Lc)return 0;var c=Ac(a).match(jd),d=Ac(b).match(jd),e=Gc.max(1,(c[2]||c[3]||"").length+(c[5]||0)*("+"==c[4]?-1:1),(d[2]||d[3]||"").length+(d[5]||0)*("+"==d[4]?-1:1));return e+(e%2?0:1)}function qc(a,b,c){return new(a instanceof Cb&&b instanceof Cb&&c==Gc.round(c)?Cb:fb)(c)}function rc(a,b){if(null==a)return null;var c=a[b]*(a.negative?-1:1);return"seconds"==b?new fb(c):new Cb(c)}function sc(a,b){if(null==a)return null;if("timezone"==b){var c=a.timezone;return null==c?null:new Ab(0,Gc.abs(~~(c/60)),Gc.abs(c%60),0,c<0)}var d=a[b];return a instanceof Ya||"hours"==b&&24==d&&(d=0),a instanceof vb||(d*=a.negative?-1:1),"seconds"==b?new fb(d):new Cb(d)}function tc(a,b){if(null==a)return null;var c;if(c=a instanceof Ya?new Ya(a.year,a.month,a.day,a.timezone,a.negative):a instanceof vb?new vb(a.hours,a.minutes,a.seconds,a.timezone,a.negative):new _a(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.timezone,a.negative),null==b)c.timezone=null;else{var d=jc(b)/60;if(null!=a.timezone){var e=d-a.timezone;a instanceof Ya?e<0&&c.day--:(c.minutes+=e%60,c.hours+=~~(e/60)),eb(c)}c.timezone=d}return c}function uc(b,c){if(!b.length)return!1;var d=b[0];if(c.DOMAdapter.isNode(d))return!0;if(1==b.length){if(d instanceof Xa)return d.value.valueOf();if(d instanceof ub)return!!d.valueOf().length;if(Ua(d))return!(Ic(d.valueOf())||0==d.valueOf());throw new a("FORG0006")}throw new a("FORG0006")}function vc(a,b){for(var c,d,e=[],f=0,g=a.length;f=0,j=c.indexOf("x")>=0;if(i||j){c=c.replace(/[sx]/g,"");for(var k,l=[],m=/\s/,n=0,o=b.length,p=!1,q="";n0},b.prototype.eof=function(){return this.index>=this.length},c.prototype.isNode=function(a){return a&&!!a.nodeType},c.prototype.getProperty=function(a,b){return a[b]},c.prototype.isSameNode=function(a,b){return a==b},c.prototype.compareDocumentPosition=function(a,b){return a.compareDocumentPosition(b)},c.prototype.lookupNamespaceURI=function(a,b){return a.lookupNamespaceURI(b)},c.prototype.getElementById=function(a,b){return a.getElementById(b)},c.prototype.getElementsByTagNameNS=function(a,b,c){return a.getElementsByTagNameNS(b,c)},d.prototype.item=null,d.prototype.position=0,d.prototype.size=0,d.prototype.scope=null,d.prototype.stack=null,d.prototype.dateTime=null,d.prototype.timezone=null,d.prototype.staticContext=null,d.prototype.pushVariable=function(a,b){this.stack.hasOwnProperty(a)||(this.stack[a]=[]),this.stack[a].push(this.scope[a]),this.scope[a]=b},d.prototype.popVariable=function(a){this.stack.hasOwnProperty(a)&&(this.scope[a]=this.stack[a].pop(),this.stack[a].length||(delete this.stack[a],"undefined"==typeof this.scope[a]&&delete this.scope[a]))},e.prototype.baseURI=null,e.prototype.dataTypes=null,e.prototype.documents=null,e.prototype.functions=null,e.prototype.defaultFunctionNamespace=null,e.prototype.collations=null,e.prototype.defaultCollationName=Sc+"/collation/codepoint",e.prototype.collections=null,e.prototype.namespaceResolver=null,e.prototype.defaultElementNamespace=null;var Wc=/^(?:\{([^\}]+)\})?(.+)$/;e.prototype.setDataType=function(a,b){var c=a.match(Wc);c&&c[1]!=Rc&&(this.dataTypes[a]=b)},e.prototype.getDataType=function(a){var b=a.match(Wc);if(b)return b[1]==Rc?Zc[b[2]]:this.dataTypes[a]},e.prototype.setDocument=function(a,b){this.documents[a]=b},e.prototype.getDocument=function(a){return this.documents[a]},e.prototype.setFunction=function(a,b){var c=a.match(Wc);c&&c[1]!=Sc&&(this.functions[a]=b)},e.prototype.getFunction=function(a){var b=a.match(Wc);if(b)return b[1]==Sc?Xc[b[2]]:this.functions[a]},e.prototype.setCollation=function(a,b){this.collations[a]=b},e.prototype.getCollation=function(a){return this.collations[a]},e.prototype.setCollection=function(a,b){this.collections[a]=b},e.prototype.getCollection=function(a){return this.collections[a]},e.prototype.getURIForPrefix=function(b){var c,d=this.namespaceResolver,e=d&&d.lookupNamespaceURI?d.lookupNamespaceURI:d;if(e instanceof Fc&&(c=e.call(d,b)))return c;if("fn"==b)return Sc;if("xs"==b)return Rc;if("xml"==b)return Uc;if("xmlns"==b)return Tc;throw new a("XPST0081")},e.js2xs=function(a){return a="boolean"==typeof a?new Xa(a):"number"==typeof a?Ic(a)||!Jc(a)?new gb(a):ja(Ac(a)):new ub(Ac(a))},e.xs2js=function(a){return a=a instanceof Xa?a.valueOf():Ua(a)?a.valueOf():a.toString()};var Xc={},Yc={},Zc={},$c={};h.prototype.internalExpression=null,h.prototype.evaluate=function(a){return this.internalExpression.evaluate(a)},i.prototype.equals=function(a,b){throw"Not implemented"},i.prototype.compare=function(a,b){throw"Not implemented"},j.ANYSIMPLETYPE_DT=1,j.STRING_DT=2,j.BOOLEAN_DT=3,j.DECIMAL_DT=4,j.FLOAT_DT=5,j.DOUBLE_DT=6,j.DURATION_DT=7,j.DATETIME_DT=8,j.TIME_DT=9,j.DATE_DT=10,j.GYEARMONTH_DT=11,j.GYEAR_DT=12,j.GMONTHDAY_DT=13,j.GDAY_DT=14,j.GMONTH_DT=15,j.HEXBINARY_DT=16,j.BASE64BINARY_DT=17,j.ANYURI_DT=18,j.QNAME_DT=19,j.NOTATION_DT=20,j.NORMALIZEDSTRING_DT=21,j.TOKEN_DT=22,j.LANGUAGE_DT=23,j.NMTOKEN_DT=24,j.NAME_DT=25,j.NCNAME_DT=26,j.ID_DT=27,j.IDREF_DT=28,j.ENTITY_DT=29,j.INTEGER_DT=30,j.NONPOSITIVEINTEGER_DT=31,j.NEGATIVEINTEGER_DT=32,j.LONG_DT=33,j.INT_DT=34,j.SHORT_DT=35,j.BYTE_DT=36,j.NONNEGATIVEINTEGER_DT=37,j.UNSIGNEDLONG_DT=38,j.UNSIGNEDINT_DT=39,j.UNSIGNEDSHORT_DT=40,j.UNSIGNEDBYTE_DT=41,j.POSITIVEINTEGER_DT=42,j.LISTOFUNION_DT=43,j.LIST_DT=44,j.UNAVAILABLE_DT=45,j.DATETIMESTAMP_DT=46,j.DAYMONTHDURATION_DT=47,j.DAYTIMEDURATION_DT=48,j.PRECISIONDECIMAL_DT=49,j.ANYATOMICTYPE_DT=50,j.ANYTYPE_DT=51,j.XT_YEARMONTHDURATION_DT=-1,j.XT_UNTYPEDATOMIC_DT=-2,k.prototype.items=null,k.prototype.evaluate=function(a){for(var b=[],c=0,d=this.items.length;c":"gt","<":"lt",">=":"ge","<=":"le"},ad={};ad.eq=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-equal");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-equal");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-equal"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-equal"):b instanceof vb?c instanceof vb&&(e="time-equal"):b instanceof _a?c instanceof _a&&(e="dateTime-equal"):b instanceof hb?c instanceof hb&&(e="duration-equal"):b instanceof qb?c instanceof qb&&(e="gYearMonth-equal"):b instanceof pb?c instanceof pb&&(e="gYear-equal"):b instanceof ob?c instanceof ob&&(e="gMonthDay-equal"):b instanceof nb?c instanceof nb&&(e="gMonth-equal"):b instanceof mb?c instanceof mb&&(e="gDay-equal"):b instanceof tb?c instanceof tb&&(e="QName-equal"):b instanceof rb?c instanceof rb&&(e="hexBinary-equal"):b instanceof Wa&&c instanceof Wa&&(e="base64Binary-equal");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ne=function(a,b,c){return new Xa(!ad.eq(a,b,c).valueOf())},ad.gt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than"); if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.lt=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(0))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return $c[e].call(d,b,c);throw new a("XPTY0004")},ad.ge=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-less-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-less-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-greater-than"].call(d,Xc.compare.call(d,b,c),new Cb(-1))}else b instanceof Ya?c instanceof Ya&&(e="date-less-than"):b instanceof vb?c instanceof vb&&(e="time-less-than"):b instanceof _a?c instanceof _a&&(e="dateTime-less-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-less-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-less-than");if(e)return new Xa(!$c[e].call(d,b,c).valueOf());throw new a("XPTY0004")},ad.le=function(b,c,d){var e="";if(Ua(b))Ua(c)&&(e="numeric-greater-than");else if(b instanceof Xa)c instanceof Xa&&(e="boolean-greater-than");else if(b instanceof ub){if(c instanceof ub)return $c["numeric-less-than"].call(d,Xc.compare.call(d,b,c),new Cb(1))}else b instanceof Ya?c instanceof Ya&&(e="date-greater-than"):b instanceof vb?c instanceof vb&&(e="time-greater-than"):b instanceof _a?c instanceof _a&&(e="dateTime-greater-than"):b instanceof yb?c instanceof yb&&(e="yearMonthDuration-greater-than"):b instanceof Ab&&c instanceof Ab&&(e="dayTimeDuration-greater-than");if(e)return new Xa(!$c[e].call(d,b,c).valueOf());throw new a("XPTY0004")};var bd={};bd.is=function(a,b,c){return $c["is-same-node"].call(c,a,b)},bd[">>"]=function(a,b,c){return $c["node-after"].call(c,a,b)},bd["<<"]=function(a,b,c){return $c["node-before"].call(c,a,b)};var cd={"=":z,"!=":z,"<":z,"<=":z,">":z,">=":z,eq:A,ne:A,lt:A,le:A,gt:A,ge:A,is:B,">>":B,"<<":B};C.prototype.left=null,C.prototype.items=null;var dd={};dd["+"]=function(b,c,d){var e="",f=!1;if(Ua(b)?Ua(c)&&(e="numeric-add"):b instanceof Ya?c instanceof yb?e="add-yearMonthDuration-to-date":c instanceof Ab&&(e="add-dayTimeDuration-to-date"):b instanceof yb?c instanceof Ya?(e="add-yearMonthDuration-to-date",f=!0):c instanceof _a?(e="add-yearMonthDuration-to-dateTime",f=!0):c instanceof yb&&(e="add-yearMonthDurations"):b instanceof Ab?c instanceof Ya?(e="add-dayTimeDuration-to-date",f=!0):c instanceof vb?(e="add-dayTimeDuration-to-time",f=!0):c instanceof _a?(e="add-dayTimeDuration-to-dateTime",f=!0):c instanceof Ab&&(e="add-dayTimeDurations"):b instanceof vb?c instanceof Ab&&(e="add-dayTimeDuration-to-time"):b instanceof _a&&(c instanceof yb?e="add-yearMonthDuration-to-dateTime":c instanceof Ab&&(e="add-dayTimeDuration-to-dateTime")),e)return $c[e].call(d,f?c:b,f?b:c);throw new a("XPTY0004")},dd["-"]=function(b,c,d){var e="";if(Ua(b)?Ua(c)&&(e="numeric-subtract"):b instanceof Ya?c instanceof Ya?e="subtract-dates":c instanceof yb?e="subtract-yearMonthDuration-from-date":c instanceof Ab&&(e="subtract-dayTimeDuration-from-date"):b instanceof vb?c instanceof vb?e="subtract-times":c instanceof Ab&&(e="subtract-dayTimeDuration-from-time"):b instanceof _a?c instanceof _a?e="subtract-dateTimes":c instanceof yb?e="subtract-yearMonthDuration-from-dateTime":c instanceof Ab&&(e="subtract-dayTimeDuration-from-dateTime"):b instanceof yb?c instanceof yb&&(e="subtract-yearMonthDurations"):b instanceof Ab&&c instanceof Ab&&(e="subtract-dayTimeDurations"),e)return $c[e].call(d,b,c);throw new a("XPTY0004")},C.prototype.evaluate=function(a){var b=vc(this.left.evaluate(a),a);if(!b.length)return[];ua(a,b,"?");var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e,f=0,g=this.items.length;f1)return[new Xa(!1)];if(!c.length)return[new Xa("?"==e)];try{d.cast(vc(c,b)[0])}catch(b){if("XPST0051"==b.code)throw b;if("XPST0017"==b.code)throw new a("XPST0080");return[new Xa(!1)]}return[new Xa(!0)]},Ha.prototype.expression=null,Ha.prototype.type=null,Ha.prototype.evaluate=function(a){var b=this.expression.evaluate(a);return ua(a,b,this.type.occurence),b.length?[this.type.itemType.cast(vc(b,a)[0],a)]:[]},Ja.prototype.prefix=null,Ja.prototype.localName=null,Ja.prototype.namespaceURI=null,Ja.prototype.test=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return b instanceof e;throw new a("XPST0051")},Ja.prototype.cast=function(b,c){var d=(this.namespaceURI?"{"+this.namespaceURI+"}":"")+this.localName,e=this.namespaceURI==Rc?Zc[this.localName]:c.staticContext.getDataType(d);if(e)return e.cast(b);throw new a("XPST0051")},La.prototype.test=null,Na.prototype.itemType=null,Na.prototype.occurence=null,Pa.prototype.itemType=null,Pa.prototype.occurence=null,Ra.prototype.builtInKind=j.ANYTYPE_DT,Sa.prototype=new Ra,Sa.prototype.builtInKind=j.ANYSIMPLETYPE_DT,Sa.prototype.primitiveKind=null,Sa.PRIMITIVE_ANYURI="anyURI",Sa.PRIMITIVE_BASE64BINARY="base64Binary",Sa.PRIMITIVE_BOOLEAN="boolean",Sa.PRIMITIVE_DATE="date",Sa.PRIMITIVE_DATETIME="dateTime",Sa.PRIMITIVE_DECIMAL="decimal",Sa.PRIMITIVE_DOUBLE="double",Sa.PRIMITIVE_DURATION="duration",Sa.PRIMITIVE_FLOAT="float",Sa.PRIMITIVE_GDAY="gDay",Sa.PRIMITIVE_GMONTH="gMonth",Sa.PRIMITIVE_GMONTHDAY="gMonthDay",Sa.PRIMITIVE_GYEAR="gYear",Sa.PRIMITIVE_GYEARMONTH="gYearMonth",Sa.PRIMITIVE_HEXBINARY="hexBinary",Sa.PRIMITIVE_NOTATION="NOTATION",Sa.PRIMITIVE_QNAME="QName",Sa.PRIMITIVE_STRING="string",Sa.PRIMITIVE_TIME="time",Ta.prototype=new Sa,Ta.prototype.builtInKind=j.ANYATOMICTYPE_DT,Ta.cast=function(b){throw new a("XPST0017")},g("anyAtomicType",Ta),Va.prototype=new Ta,Va.prototype.builtInKind=j.ANYURI_DT,Va.prototype.primitiveKind=Sa.PRIMITIVE_ANYURI,Va.prototype.scheme=null,Va.prototype.authority=null,Va.prototype.path=null,Va.prototype.query=null,Va.prototype.fragment=null,Va.prototype.toString=function(){return(this.scheme?this.scheme+":":"")+(this.authority?"//"+this.authority:"")+(this.path?this.path:"")+(this.query?"?"+this.query:"")+(this.fragment?"#"+this.fragment:"")};var ld=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;Va.cast=function(b){if(b instanceof Va)return b;if(b instanceof ub||b instanceof xb){var c;if(c=Pc(b).match(ld))return new Va(c[2],c[4],c[5],c[7],c[9]);throw new a("FORG0001")}throw new a("XPTY0004")},g("anyURI",Va),Wa.prototype=new Ta,Wa.prototype.builtInKind=j.BASE64BINARY_DT,Wa.prototype.primitiveKind=Sa.PRIMITIVE_BASE64BINARY,Wa.prototype.value=null,Wa.prototype.valueOf=function(){return this.value},Wa.prototype.toString=function(){return this.value};var md=/^((([A-Za-z0-9+\/]\s*){4})*(([A-Za-z0-9+\/]\s*){3}[A-Za-z0-9+\/]|([A-Za-z0-9+\/]\s*){2}[AEIMQUYcgkosw048]\s*=|[A-Za-z0-9+\/]\s*[AQgw]\s*=\s*=))?$/;Wa.cast=function(b){if(b instanceof Wa)return b;if(b instanceof ub||b instanceof xb){var c=Pc(b).match(md);if(c)return new Wa(c[0]);throw new a("FORG0001")}if(b instanceof rb){for(var c=b.valueOf().match(/.{2}/g),d=[],e=0,f=c.length;e=-0x8000000000000000)return new Fb(c.value);throw new a("FORG0001")},g("long",Fb),Gb.prototype=new Fb,Gb.prototype.builtInKind=j.INT_DT,Gb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=2147483647&&c.value>=-2147483648)return new Gb(c.value);throw new a("FORG0001")},g("int",Gb),Hb.prototype=new Gb,Hb.prototype.builtInKind=j.SHORT_DT,Hb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=32767&&c.value>=-32768)return new Hb(c.value);throw new a("FORG0001")},g("short",Hb),Ib.prototype=new Hb,Ib.prototype.builtInKind=j.BYTE_DT,Ib.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value<=127&&c.value>=-128)return new Ib(c.value);throw new a("FORG0001")},g("byte",Ib),Jb.prototype=new Cb,Jb.prototype.builtInKind=j.NONNEGATIVEINTEGER_DT,Jb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=0)return new Jb(c.value);throw new a("FORG0001")},g("nonNegativeInteger",Jb),Kb.prototype=new Jb,Kb.prototype.builtInKind=j.POSITIVEINTEGER_DT,Kb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1)return new Kb(c.value);throw new a("FORG0001")},g("positiveInteger",Kb),Lb.prototype=new Jb,Lb.prototype.builtInKind=j.UNSIGNEDLONG_DT,Lb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=0x10000000000000000)return new Lb(c.value);throw new a("FORG0001")},g("unsignedLong",Lb),Mb.prototype=new Jb,Mb.prototype.builtInKind=j.UNSIGNEDINT_DT,Mb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=4294967295)return new Mb(c.value);throw new a("FORG0001")},g("unsignedInt",Mb),Nb.prototype=new Mb,Nb.prototype.builtInKind=j.UNSIGNEDSHORT_DT,Nb.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=65535)return new Nb(c.value);throw new a("FORG0001")},g("unsignedShort",Nb),Ob.prototype=new Nb,Ob.prototype.builtInKind=j.UNSIGNEDBYTE_DT, -Ob.cast=function(b){var c;try{c=Cb.cast(b)}catch(a){throw a}if(c.value>=1&&c.value<=255)return new Ob(c.value);throw new a("FORG0001")},g("unsignedByte",Ob),Pb.prototype=new ub,Pb.prototype.builtInKind=j.NORMALIZEDSTRING_DT,Pb.cast=function(a){return new Pb(Ac(a))},g("normalizedString",Pb),Qb.prototype=new Pb,Qb.prototype.builtInKind=j.TOKEN_DT,Qb.cast=function(a){return new Qb(Ac(a))},g("token",Qb),Rb.prototype=new Qb,Rb.prototype.builtInKind=j.NAME_DT,Rb.cast=function(a){return new Rb(Ac(a))},g("Name",Rb),Sb.prototype=new Rb,Sb.prototype.builtInKind=j.NCNAME_DT,Sb.cast=function(a){return new Sb(Ac(a))},g("NCName",Sb),Tb.prototype=new Sb,Tb.prototype.builtInKind=j.ENTITY_DT,Tb.cast=function(a){return new Tb(Ac(a))},g("ENTITY",Tb),Ub.prototype=new Sb,Ub.prototype.builtInKind=j.ID_DT,Ub.cast=function(a){return new Ub(Ac(a))},g("ID",Ub),Vb.prototype=new Sb,Vb.prototype.builtInKind=j.IDREF_DT,Vb.cast=function(a){return new Vb(Ac(a))},g("IDREF",Vb),Wb.prototype=new Qb,Wb.prototype.builtInKind=j.LANGUAGE_DT,Wb.cast=function(a){return new Wb(Ac(a))},g("language",Wb),Xb.prototype=new Qb,Xb.prototype.builtInKind=j.NMTOKEN_DT,Xb.cast=function(a){return new Xb(Ac(a))},g("NMTOKEN",Xb),Zb.prototype=new Yb,$b.prototype=new Zb,_b.prototype=new Zb,ac.prototype=new Zb,bc.prototype=new Zb,cc.prototype=new Zb,dc.prototype=new Zb,$c["hexBinary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["base64Binary-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["boolean-less-than"]=function(a,b){return new Xa(a.valueOf()b.valueOf())},$c["yearMonthDuration-less-than"]=function(a,b){return new Xa(lc(a)lc(b))},$c["dayTimeDuration-less-than"]=function(a,b){return new Xa(jc(a)jc(b))},$c["duration-equal"]=function(a,b){return new Xa(a.negative==b.negative&&lc(a)==lc(b)&&jc(a)==jc(b))},$c["dateTime-equal"]=function(a,b){return gc(a,b,"eq")},$c["dateTime-less-than"]=function(a,b){return gc(a,b,"lt")},$c["dateTime-greater-than"]=function(a,b){return gc(a,b,"gt")},$c["date-equal"]=function(a,b){return fc(a,b,"eq")},$c["date-less-than"]=function(a,b){return fc(a,b,"lt")},$c["date-greater-than"]=function(a,b){return fc(a,b,"gt")},$c["time-equal"]=function(a,b){return ec(a,b,"eq")},$c["time-less-than"]=function(a,b){return ec(a,b,"lt")},$c["time-greater-than"]=function(a,b){return ec(a,b,"gt")},$c["gYearMonth-equal"]=function(a,b){return gc(new _a(a.year,a.month,Za(a.year,a.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,b.month,Za(b.year,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gYear-equal"]=function(a,b){return gc(new _a(a.year,1,1,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(b.year,1,1,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonthDay-equal"]=function(a,b){return gc(new _a(1972,a.month,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gMonth-equal"]=function(a,b){return gc(new _a(1972,a.month,Za(1972,b.month),0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,b.month,Za(1972,b.month),0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["gDay-equal"]=function(a,b){return gc(new _a(1972,12,a.day,0,0,0,null==a.timezone?this.timezone:a.timezone),new _a(1972,12,b.day,0,0,0,null==b.timezone?this.timezone:b.timezone),"eq")},$c["add-yearMonthDurations"]=function(a,b){return mc(lc(a)+lc(b))},$c["subtract-yearMonthDurations"]=function(a,b){return mc(lc(a)-lc(b))},$c["multiply-yearMonthDuration"]=function(a,b){return mc(lc(a)*b)},$c["divide-yearMonthDuration"]=function(a,b){return mc(lc(a)/b)},$c["divide-yearMonthDuration-by-yearMonthDuration"]=function(a,b){return new fb(lc(a)/lc(b))},$c["add-dayTimeDurations"]=function(a,b){return kc(jc(a)+jc(b))},$c["subtract-dayTimeDurations"]=function(a,b){return kc(jc(a)-jc(b))},$c["multiply-dayTimeDuration"]=function(a,b){return kc(jc(a)*b)},$c["divide-dayTimeDuration"]=function(a,b){return kc(jc(a)/b)},$c["divide-dayTimeDuration-by-dayTimeDuration"]=function(a,b){return new fb(jc(a)/jc(b))},$c["subtract-dateTimes"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-dates"]=function(a,b){return kc(oc(a)-oc(b))},$c["subtract-times"]=function(a,b){return kc(nc(a)-nc(b))},$c["add-yearMonthDuration-to-dateTime"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-dateTime"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-dateTime"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-dateTime"]=function(a,b){return ic(a,b,"-")},$c["add-yearMonthDuration-to-date"]=function(a,b){return hc(a,b,"+")},$c["add-dayTimeDuration-to-date"]=function(a,b){return ic(a,b,"+")},$c["subtract-yearMonthDuration-from-date"]=function(a,b){return hc(a,b,"-")},$c["subtract-dayTimeDuration-from-date"]=function(a,b){return ic(a,b,"-")},$c["add-dayTimeDuration-to-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours+=b.hours,c.minutes+=b.minutes,c.seconds+=b.seconds,wb(c)},$c["subtract-dayTimeDuration-from-time"]=function(a,b){var c=new vb(a.hours,a.minutes,a.seconds,a.timezone);return c.hours-=b.hours,c.minutes-=b.minutes,c.seconds-=b.seconds,wb(c)},$c["is-same-node"]=function(a,b){return new Xa(this.DOMAdapter.isSameNode(a,b))},$c["node-before"]=function(a,b){return new Xa(!!(4&this.DOMAdapter.compareDocumentPosition(a,b)))},$c["node-after"]=function(a,b){return new Xa(!!(2&this.DOMAdapter.compareDocumentPosition(a,b)))},$c["numeric-add"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e+d*e)/e)},$c["numeric-subtract"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,(c*e-d*e)/e)},$c["numeric-multiply"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e*(d*e)/(e*e))},$c["numeric-divide"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,a*e/(b*e))},$c["numeric-integer-divide"]=function(a,b){var c=a/b;return new Cb(Gc.floor(c)+(c<0))},$c["numeric-mod"]=function(a,b){var c=a.valueOf(),d=b.valueOf(),e=Gc.pow(10,pc(c,d));return qc(a,b,c*e%(d*e)/e)},$c["numeric-unary-plus"]=function(a){return a},$c["numeric-unary-minus"]=function(a){return a.value*=-1,a},$c["numeric-equal"]=function(a,b){return new Xa(a.valueOf()==b.valueOf())},$c["numeric-less-than"]=function(a,b){return new Xa(a.valueOf()b.valueOf())},$c["QName-equal"]=function(a,b){return new Xa(a.localName==b.localName&&a.namespaceURI==b.namespaceURI)},$c.concatenate=function(a,b){return a.concat(b)},$c.union=function(b,c){for(var d,e=[],f=0,g=b.length;fh?g.pop():(g.push(f[i]),h++):"."!=f[i]&&g.push(f[i]);".."!=f[--i]&&"."!=f[i]||g.push(""),d.path=g.join("/")}return d}),f("true",[],function(){return new Xa(!0)}),f("false",[],function(){return new Xa(!1)}),f("not",[[Yb,"*"]],function(a){return new Xa(!uc(a,this))}),f("position",[],function(){return new Cb(this.position)}),f("last",[],function(){return new Cb(this.size)}),f("current-dateTime",[],function(){return this.dateTime}),f("current-date",[],function(){return Ya.cast(this.dateTime)}),f("current-time",[],function(){return vb.cast(this.dateTime)}),f("implicit-timezone",[],function(){return this.timezone}),f("default-collation",[],function(){return new ub(this.staticContext.defaultCollationName)}),f("static-base-uri",[],function(){return Va.cast(new ub(this.staticContext.baseURI||""))}),f("years-from-duration",[[hb,"?"]],function(a){return rc(a,"year")}),f("months-from-duration",[[hb,"?"]],function(a){return rc(a,"month")}),f("days-from-duration",[[hb,"?"]],function(a){return rc(a,"day")}),f("hours-from-duration",[[hb,"?"]],function(a){return rc(a,"hours")}),f("minutes-from-duration",[[hb,"?"]],function(a){return rc(a,"minutes")}),f("seconds-from-duration",[[hb,"?"]],function(a){return rc(a,"seconds")}),f("year-from-dateTime",[[_a,"?"]],function(a){return sc(a,"year")}),f("month-from-dateTime",[[_a,"?"]],function(a){return sc(a,"month")}),f("day-from-dateTime",[[_a,"?"]],function(a){return sc(a,"day")}),f("hours-from-dateTime",[[_a,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-dateTime",[[_a,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-dateTime",[[_a,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-dateTime",[[_a,"?"]],function(a){return sc(a,"timezone")}),f("year-from-date",[[Ya,"?"]],function(a){return sc(a,"year")}),f("month-from-date",[[Ya,"?"]],function(a){return sc(a,"month")}),f("day-from-date",[[Ya,"?"]],function(a){return sc(a,"day")}),f("timezone-from-date",[[Ya,"?"]],function(a){return sc(a,"timezone")}),f("hours-from-time",[[vb,"?"]],function(a){return sc(a,"hours")}),f("minutes-from-time",[[vb,"?"]],function(a){return sc(a,"minutes")}),f("seconds-from-time",[[vb,"?"]],function(a){return sc(a,"seconds")}),f("timezone-from-time",[[vb,"?"]],function(a){return sc(a,"timezone")}),f("adjust-dateTime-to-timezone",[[_a,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)});f("adjust-date-to-timezone",[[Ya,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)});f("adjust-time-to-timezone",[[vb,"?"],[Ab,"?",!0]],function(a,b){return tc(a,arguments.length>1&&null!=b?arguments.length>1?b:this.timezone:null)}),f("name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}var c=Xc["node-name"].call(this,b);return new ub(null==c?"":c.toString())}),f("local-name",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return new ub("")}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return new ub(this.DOMAdapter.getProperty(b,"localName")||"")}),f("namespace-uri",[[Zb,"?",!0]],function(b){if(arguments.length){if(null==b)return Va.cast(new ub(""))}else{if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");b=this.item}return Va.cast(new ub(this.DOMAdapter.getProperty(b,"namespaceURI")||""))}),f("number",[[Ta,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=vc([this.item],this)[0]}var c=new gb(Kc);if(null!=b)try{c=gb.cast(b)}catch(a){}return c}),f("lang",[[ub,"?"],[Zb,"",!0]],function(b,c){if(arguments.length<2){if(!this.DOMAdapter.isNode(this.item))throw new a("XPTY0004");c=this.item}var d=this.DOMAdapter.getProperty;2==d(c,"nodeType")&&(c=d(c,"ownerElement"));for(var e;c;c=d(c,"parentNode"))if(e=d(c,"attributes"))for(var f=0,g=e.length;f1?b.valueOf():0;if(c<0){var d=new Cb(Gc.pow(10,-c)),e=Gc.round($c["numeric-divide"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-divide"].call(this,a,d))),$c["numeric-multiply"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}var d=new Cb(Gc.pow(10,c)),e=Gc.round($c["numeric-multiply"].call(this,a,d)),f=new Cb(e);return nDecimal=Gc.abs($c["numeric-subtract"].call(this,f,$c["numeric-multiply"].call(this,a,d))),$c["numeric-divide"].call(this,$c["numeric-add"].call(this,f,new fb(.5==nDecimal&&e%2?-1:0)),d)}),f("resolve-QName",[[ub,"?"],[bc]],function(b,c){if(null==b)return null;var d=b.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");var f=e[1]||null,g=e[2],h=this.DOMAdapter.lookupNamespaceURI(c,f);if(null!=f&&!h)throw new a("FONS0004");return new tb(f,g,h||null)}),f("QName",[[ub,"?"],[ub]],function(b,c){var d=c.valueOf(),e=d.match(Bd);if(!e)throw new a("FOCA0002");return new tb(e[1]||null,e[2]||null,null==b?"":b.valueOf())}),f("prefix-from-QName",[[tb,"?"]],function(a){return null!=a&&a.prefix?new Sb(a.prefix):null}),f("local-name-from-QName",[[tb,"?"]],function(a){return null==a?null:new Sb(a.localName)}),f("namespace-uri-from-QName",[[tb,"?"]],function(a){return null==a?null:Va.cast(new ub(a.namespaceURI||""))}),f("namespace-uri-for-prefix",[[ub,"?"],[bc]],function(a,b){var c=null==a?"":a.valueOf(),d=this.DOMAdapter.lookupNamespaceURI(b,c||null);return null==d?null:Va.cast(new ub(d))}),f("in-scope-prefixes",[[bc]],function(a){throw"Function 'in-scope-prefixes' not implemented"}),f("boolean",[[Yb,"*"]],function(a){return new Xa(uc(a,this))}),f("index-of",[[Ta,"*"],[Ta],[ub,"",!0]],function(a,b,c){if(!a.length||null==b)return[];var d=b;d instanceof xb&&(d=ub.cast(d));for(var e,f=[],g=0,h=a.length;g1)throw"Collation parameter in function 'distinct-values' is not implemented";if(!a.length)return null;for(var c,d=[],e=0,f=a.length;ed&&(e=d+1);for(var f=[],g=0;gc)return a;for(var e=[],f=0;f2?Gc.round(c):a.length-d+1;return a.slice(d-1,d-1+e)}),f("unordered",[[Yb,"*"]],function(a){return a}),f("zero-or-one",[[Yb,"*"]],function(b){if(b.length>1)throw new a("FORG0003");return b}),f("one-or-more",[[Yb,"*"]],function(b){if(!b.length)throw new a("FORG0004");return b}),f("exactly-one",[[Yb,"*"]],function(b){if(1!=b.length)throw new a("FORG0005");return b}),f("deep-equal",[[Yb,"*"],[Yb,"*"],[ub,"",!0]],function(a,b,c){throw"Function 'deep-equal' not implemented"}),f("count",[[Yb,"*"]],function(a){return new Cb(a.length)}),f("avg",[[Ta,"*"]],function(b){if(!b.length)return null;try{var c=b[0];c instanceof xb&&(c=gb.cast(c));for(var d,e=1,f=b.length;e1?c:new gb(0);try{var d=b[0];d instanceof xb&&(d=gb.cast(d));for(var e,f=1,g=b.length;f2&&(f=d.valueOf()),e=f==Sc+"/collation/codepoint"?Gd:this.staticContext.getCollation(f),!e)throw new a("FOCH0002");return new Cb(e.compare(b.valueOf(),c.valueOf()))}),f("codepoint-equal",[[ub,"?"],[ub,"?"]],function(a,b){return null==a||null==b?null:new Xa(a.valueOf()==b.valueOf())}),f("concat",null,function(){if(arguments.length<2)throw new a("XPST0017");for(var b,c=[],d=0,e=arguments.length;d2?e+Gc.round(c):d.length;return new ub(f>e?d.substring(e,f):"")}),f("string-length",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new Cb(null==b?0:b.valueOf().length)}),f("normalize-space",[[ub,"?",!0]],function(b){if(!arguments.length){if(!this.item)throw new a("XPDY0002");b=ub.cast(vc([this.item],this)[0])}return new ub(null==b?"":Pc(b).replace(/\s\s+/g," "))}),f("normalize-unicode",[[ub,"?"],[ub,"",!0]],function(a,b){throw"Function 'normalize-unicode' not implemented"}),f("upper-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toUpperCase())}),f("lower-case",[[ub,"?"]],function(a){return new ub(null==a?"":a.valueOf().toLowerCase())}),f("translate",[[ub,"?"],[ub],[ub]],function(a,b,c){if(null==a)return new ub("");for(var d,e=a.valueOf().split(""),f=b.valueOf().split(""),g=c.valueOf().split(""),h=g.length,i=[],j=0,k=e.length;j126)&&(c[d]=window.encodeURIComponent(c[d]));return new ub(c.join(""))}),f("contains",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'contains' is not implemented";return new Xa((null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf())>=0)}),f("starts-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'starts-with' is not implemented";return new Xa(0==(null==a?"":a.valueOf()).indexOf(null==b?"":b.valueOf()))}),f("ends-with",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'ends-with' is not implemented";var d=null==a?"":a.valueOf(),e=null==b?"":b.valueOf();return new Xa(d.indexOf(e)==d.length-e.length)}),f("substring-before",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-before' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(0,d):"")}),f("substring-after",[[ub,"?"],[ub,"?"],[ub,"",!0]],function(a,b,c){if(arguments.length>2)throw"Collation parameter in function 'substring-after' is not implemented";var d,e=null==a?"":a.valueOf(),f=null==b?"":b.valueOf();return new ub((d=e.indexOf(f))>=0?e.substring(d+f.length):"")}),f("matches",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():"");return new Xa(e.test(d))}),f("replace",[[ub,"?"],[ub],[ub],[ub,"",!0]],function(a,b,c,d){var e=null==a?"":a.valueOf(),f=xc(b.valueOf(),arguments.length>3?d.valueOf():"");return new Xa(e.replace(f,c.valueOf()))}),f("tokenize",[[ub,"?"],[ub],[ub,"",!0]],function(a,b,c){for(var d=null==a?"":a.valueOf(),e=xc(b.valueOf(),arguments.length>2?c.valueOf():""),f=[],g=0,h=d.split(e),i=h.length;gb?1:-1},yc.prototype=new c;var Hd=new e;yc.prototype.getProperty=function(a,b){if(b in a)return a[b];if("baseURI"==b){for(var c,d="",e=Hd.getFunction("{http://www.w3.org/2005/xpath-functions}resolve-uri"),f=Hd.getDataType("{http://www.w3.org/2001/XMLSchema}string"),g=a;g;g=g.parentNode)1==g.nodeType&&(c=g.getAttribute("xml:base"))&&(d=e(new f(c),new f(d)).toString());return d}if("textContent"==b){var h=[];return function(a){for(var b,c=0;b=a.childNodes[c];c++)3==b.nodeType||4==b.nodeType?h.push(b.data):1==b.nodeType&&b.firstChild&&arguments.callee(b)}(a),h.join("")}},yc.prototype.compareDocumentPosition=function(a,b){if("compareDocumentPosition"in a)return a.compareDocumentPosition(b);if(b==a)return 0;var c,d,e,f,g,h=null,i=null;if(2==a.nodeType&&(h=a,a=this.getProperty(h,"ownerElement")),2==b.nodeType&&(i=b,b=this.getProperty(i,"ownerElement")),h&&i&&a&&a==b)for(f=0,c=this.getProperty(a,"attributes"),g=c.length;fMath.round(a.width/50))&&(e=Math.round(a.width/50)),(!f||f>Math.round(a.width/50))&&(f=Math.round(a.height/50));var h=a.getContext("2d"),i=.08*a.width,j=.03*a.width,k=.08*a.height,l=.15*a.height,m=a.height-k-l,n=a.width-i-j,o=k+m,p=k;h.font=g+"px Arial",h.lineWidth="1.0",h.strokeStyle="#444",CanvasComponents.draw_line(h,i,o,n+i,o),CanvasComponents.draw_line(h,i,o,i,p);var q=.003*n,r=(n-q*b.length)/b.length,s=i+q,t=Math.max.apply(Math,b);h.fillStyle="green";for(var u=0;u=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.lengthb&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,d=/[\x09-\x10\x0D\u2028\u2029]/g;return a=a.replace(c,"."),b||(a=a.replace(d,".")),a},parse_escaped_chars:function(a){return a.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g,function(a,b,c){if("\\"===b)return"\\"+c;switch(c[0]){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"f":return"\f";case"x":return Utils.chr(parseInt(c.substr(1),16))}})},expand_alph_range:function(a){for(var b=[],c=0;c255)return Utils.str_to_utf8_byte_array(a);return c},str_to_utf8_byte_array:function(a){var b=CryptoJS.enc.Utf8.parse(a),c=Utils.word_array_to_byte_array(b);return a.length!==b.sigBytes&&(window.app.options.attempt_highlight=!1),c},str_to_charcode:function(a){for(var b=new Array(a.length),c=a.length;c--;)b[c]=a.charCodeAt(c);return b},byte_array_to_utf8:function(a){try{for(var b=[],c=0;c>>2]|=a[c]<<24-c%4*8;var d=new CryptoJS.lib.WordArray.init(b,a.length),e=CryptoJS.enc.Utf8.stringify(d);return e.length!==d.sigBytes&&(window.app.options.attempt_highlight=!1),e}catch(b){return Utils.byte_array_to_chars(a)}},byte_array_to_chars:function(a){if(!a)return"";for(var b="",c=0;c>>2]>>>24-d%4*8&255);return c},UNIC_WIN1251_MAP:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,1027:129,8225:135,1046:198,8222:132,1047:199,1168:165,1048:200,1113:154,1049:201,1045:197,1050:202,1028:170,160:160,1040:192,1051:203,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,1053:205,176:176,177:177,1114:156,181:181,182:182,183:183,8221:148,187:187,1029:189,1056:208,1057:209,1058:210,8364:136,1112:188,1115:158,1059:211,1060:212,1030:178,1061:213,1062:214,1063:215,1116:157,1064:216,1065:217,1031:175,1066:218,1067:219,1068:220,1069:221,1070:222,1032:163,8226:149,1071:223,1072:224,8482:153,1073:225,8240:137,1118:162,1074:226,1110:179,8230:133,1075:227,1033:138,1076:228,1077:229,8211:150,1078:230,1119:159,1079:231,1042:194,1080:232,1034:140,1025:168,1081:233,1082:234,8212:151,1083:235,1169:180,1084:236,1052:204,1085:237,1035:142,1086:238,1087:239,1088:240,1089:241,1090:242,1036:141,1041:193,1091:243,1092:244,8224:134,1093:245,8470:185,1094:246,1054:206,1095:247,1096:248,8249:139,1097:249,1098:250,1044:196,1099:251,1111:191,1055:207,1100:252,1038:161,8220:147,1101:253,8250:155,1102:254,8216:145,1103:255,1043:195,1105:184,1039:143,1026:128,1106:144,8218:130,1107:131,8217:146,1108:186,1109:190},WIN1251_UNIC_MAP:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,160:160,164:164,166:166,167:167,169:169,171:171,172:172,173:173,174:174,176:176,177:177,181:181,182:182,183:183,187:187,168:1025,128:1026,129:1027,170:1028,189:1029,178:1030,175:1031,163:1032,138:1033,140:1034,142:1035,141:1036,161:1038,143:1039,192:1040,193:1041,194:1042,195:1043,196:1044,197:1045,198:1046,199:1047,200:1048,201:1049,202:1050,203:1051,204:1052,205:1053,206:1054,207:1055,208:1056,209:1057,210:1058,211:1059,212:1060,213:1061,214:1062,215:1063,216:1064,217:1065,218:1066,219:1067,220:1068,221:1069,222:1070,223:1071,224:1072,225:1073,226:1074,227:1075,228:1076,229:1077,230:1078,231:1079,232:1080,233:1081,234:1082,235:1083,236:1084,237:1085,238:1086,239:1087,240:1088,241:1089,242:1090,243:1091,244:1092,245:1093,246:1094,247:1095,248:1096,249:1097,250:1098,251:1099,252:1100,253:1101,254:1102,255:1103,184:1105,144:1106,131:1107,186:1108,190:1109,179:1110,191:1111,188:1112,154:1113,156:1114,158:1115,157:1116,162:1118,159:1119,165:1168,180:1169,150:8211,151:8212,145:8216,146:8217,130:8218,147:8220,148:8221,132:8222,134:8224,135:8225,149:8226,133:8230,137:8240,139:8249,155:8250,136:8364,185:8470,153:8482},unicode_to_win1251:function(a){for(var b=[],c=0;c>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j+=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);return j},from_base64:function(a,b,c,d){if(c=c||"string",!a)return"string"===c?"":[];b=b?Utils.expand_alph_range(b).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",void 0===d&&(d=!0);var e,f,g,h,i,j,k,l=[],m=0;if(d){var n=new RegExp("[^"+b.replace(/[\[\]\\\-^$]/g,"\\$&")+"]","g");a=a.replace(n,"")}for(;m>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,l.push(e),64!==j&&l.push(f),64!==k&&l.push(g);return"string"===c?Utils.byte_array_to_utf8(l):l},to_hex:function(a,b,c){if(!a)return"";b="string"==typeof b?b:" ",c=c||2;for(var d="",e=0;e>>4).toString(16)),b.push((15&a[c]).toString(16));return b.join("")},from_hex:function(a,b,c){if(b=b||(a.indexOf(" ")>=0?"Space":"None"),c=c||2,"None"!==b){var d=Utils.regex_rep[b];a=a.replace(d,"")}for(var e=[],f=0;f]*>.*<\/(script|style)>/gim,"")),a.replace(/<[^>\n]+>/g,"")},escape_html:function(a){return a.replace(/>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new CryptoJS.lib.WordArray.init(c,b/2)};var Base={DEFAULT_RADIX:36,run_to:function(a,b){if(!a)throw"Error: Input must be a number";var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return a.toString(c)},run_from:function(a,b){var c=b[0]||Base.DEFAULT_RADIX;if(c<2||c>36)throw"Error: Radix argument must be between 2 and 36";return parseInt(a.replace(/\s/g,""),c)}},Base64={ALPHABET:"A-Za-z0-9+/=",ALPHABET_OPTIONS:[{name:"Standard: A-Za-z0-9+/=",value:"A-Za-z0-9+/="},{name:"URL safe: A-Za-z0-9-_",value:"A-Za-z0-9-_"},{name:"Filename safe: A-Za-z0-9+-=",value:"A-Za-z0-9+\\-="},{name:"itoa64: ./0-9A-Za-z=",value:"./0-9A-Za-z="},{name:"XML: A-Za-z0-9_.",value:"A-Za-z0-9_."},{name:"y64: A-Za-z0-9._-",value:"A-Za-z0-9._-"},{name:"z64: 0-9a-zA-Z+/=",value:"0-9a-zA-Z+/="},{name:"Radix-64: 0-9A-Za-z+/=",value:"0-9A-Za-z+/="},{name:"Uuencoding: [space]-_",value:" -_"},{name:"Xxencoding: +-0-9A-Za-z",value:"+\\-0-9A-Za-z"},{name:"BinHex: !-,-0-689@A-NP-VX-Z[`a-fh-mp-r",value:"!-,-0-689@A-NP-VX-Z[`a-fh-mp-r"},{name:"ROT13: N-ZA-Mn-za-m0-9+/=",value:"N-ZA-Mn-za-m0-9+/="}],run_to:function(a,b){var c=b[0]||Base64.ALPHABET;return Utils.to_base64(a,c)},REMOVE_NON_ALPH_CHARS:!0,run_from:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1];return Utils.from_base64(a,c,"byte_array",d)},BASE32_ALPHABET:"A-Z2-7=",run_to_32:function(a,b){if(!a)return"";for(var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q="",r=0;r>3,i=(7&c)<<2|d>>6,j=d>>1&31,k=(1&d)<<4|e>>4,l=(15&e)<<1|f>>7,m=f>>2&63,n=(3&f)<<3|g>>5,o=31&g,isNaN(d)?j=k=l=m=n=o=32:isNaN(e)?l=m=n=o=32:isNaN(f)?m=n=o=32:isNaN(g)&&(o=32),q+=p.charAt(h)+p.charAt(i)+p.charAt(j)+p.charAt(k)+p.charAt(l)+p.charAt(m)+p.charAt(n)+p.charAt(o);return q},run_from_32:function(a,b){if(!a)return[];var c,d,e,f,g,h,i,j,k,l,m,n,o,p=b[0]?Utils.expand_alph_range(b[0]).join(""):"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",q=b[0],r=[],s=0;if(q){var t=new RegExp("[^"+p.replace(/[\]\\\-^]/g,"\\$&")+"]","g");a=a.replace(t,"")}for(;s>2,d=(3&i)<<6|j<<1|k>>4,e=(15&k)<<4|l>>1,f=(1&l)<<7|m<<2|n>>3,g=(7&n)<<5|o,r.push(c),(i&!0||32!==j)&&r.push(d),(k&!0||32!==l)&&r.push(e),(l&!0||32!==m)&&r.push(f),(n&!0||32!==o)&&r.push(g);return r},SHOW_IN_BINARY:!1,OFFSETS_SHOW_VARIABLE:!0,run_offsets:function(a,b){var c=b[0]||Base64.ALPHABET,d=b[1],e=Utils.to_base64(a,c),f=Utils.to_base64([0].concat(a),c),g=Utils.to_base64([0,0].concat(a),c),h=e.indexOf("="),i=f.indexOf("="),j=g.indexOf("="),k="", - static_section = "", + staticSection = "", padding = ""; if (input.length < 1) { @@ -213,28 +213,28 @@ var Base64 = { // Highlight offset 0 if (len0 % 4 === 2) { - static_section = offset0.slice(0, -3); + staticSection = offset0.slice(0, -3); offset0 = "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64(staticSection, alphabet).slice(0, -2)) + "'>" + + staticSection + "" + "" + offset0.substr(offset0.length - 3, 1) + "" + "" + offset0.substr(offset0.length - 2) + ""; } else if (len0 % 4 === 3) { - static_section = offset0.slice(0, -2); + staticSection = offset0.slice(0, -2); offset0 = "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64(staticSection, alphabet).slice(0, -1)) + "'>" + + staticSection + "" + "" + offset0.substr(offset0.length - 2, 1) + "" + "" + offset0.substr(offset0.length - 1) + ""; } else { - static_section = offset0; + staticSection = offset0; offset0 = "" + - static_section + ""; + Utils.escapeHtml(Utils.fromBase64(staticSection, alphabet)) + "'>" + + staticSection + ""; } - if (!show_variable) { - offset0 = static_section; + if (!showVariable) { + offset0 = staticSection; } @@ -243,28 +243,28 @@ var Base64 = { "" + offset1.substr(1, 1) + ""; offset1 = offset1.substr(2); if (len1 % 4 === 2) { - static_section = offset1.slice(0, -3); + staticSection = offset1.slice(0, -3); offset1 = padding + "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64("AA" + staticSection, alphabet).slice(1, -2)) + "'>" + + staticSection + "" + "" + offset1.substr(offset1.length - 3, 1) + "" + "" + offset1.substr(offset1.length - 2) + ""; } else if (len1 % 4 === 3) { - static_section = offset1.slice(0, -2); + staticSection = offset1.slice(0, -2); offset1 = padding + "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64("AA" + staticSection, alphabet).slice(1, -1)) + "'>" + + staticSection + "" + "" + offset1.substr(offset1.length - 2, 1) + "" + "" + offset1.substr(offset1.length - 1) + ""; } else { - static_section = offset1; + staticSection = offset1; offset1 = padding + "" + - static_section + ""; + Utils.escapeHtml(Utils.fromBase64("AA" + staticSection, alphabet).slice(1)) + "'>" + + staticSection + ""; } - if (!show_variable) { - offset1 = static_section; + if (!showVariable) { + offset1 = staticSection; } // Highlight offset 2 @@ -272,31 +272,31 @@ var Base64 = { "" + offset2.substr(2, 1) + ""; offset2 = offset2.substr(3); if (len2 % 4 === 2) { - static_section = offset2.slice(0, -3); + staticSection = offset2.slice(0, -3); offset2 = padding + "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64("AAA" + staticSection, alphabet).slice(2, -2)) + "'>" + + staticSection + "" + "" + offset2.substr(offset2.length - 3, 1) + "" + "" + offset2.substr(offset2.length - 2) + ""; } else if (len2 % 4 === 3) { - static_section = offset2.slice(0, -2); + staticSection = offset2.slice(0, -2); offset2 = padding + "" + - static_section + "" + + Utils.escapeHtml(Utils.fromBase64("AAA" + staticSection, alphabet).slice(2, -2)) + "'>" + + staticSection + "" + "" + offset2.substr(offset2.length - 2, 1) + "" + "" + offset2.substr(offset2.length - 1) + ""; } else { - static_section = offset2; + staticSection = offset2; offset2 = padding + "" + - static_section + ""; + Utils.escapeHtml(Utils.fromBase64("AAA" + staticSection, alphabet).slice(2)) + "'>" + + staticSection + ""; } - if (!show_variable) { - offset2 = static_section; + if (!showVariable) { + offset2 = staticSection; } - return (show_variable ? "Characters highlighted in green could change if the input is surrounded by more data." + + return (showVariable ? "Characters highlighted in green could change if the input is surrounded by more data." + "\nCharacters highlighted in red are for padding purposes only." + "\nUnhighlighted characters are static." + "\nHover over the static sections to see what they decode to on their own.\n" + @@ -317,7 +317,7 @@ var Base64 = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_to: function(pos, args) { + highlightTo: function(pos, args) { pos[0].start = Math.floor(pos[0].start / 3 * 4); pos[0].end = Math.ceil(pos[0].end / 3 * 4); return pos; @@ -332,7 +332,7 @@ var Base64 = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_from: function(pos, args) { + highlightFrom: function(pos, args) { pos[0].start = Math.ceil(pos[0].start / 4 * 3); pos[0].end = Math.floor(pos[0].end / 4 * 3); return pos; diff --git a/src/js/operations/BitwiseOp.js b/src/js/operations/BitwiseOp.js index 3f5d0fa9..95944733 100755 --- a/src/js/operations/BitwiseOp.js +++ b/src/js/operations/BitwiseOp.js @@ -15,14 +15,14 @@ var BitwiseOp = { * Runs bitwise operations across the input data. * * @private - * @param {byte_array} input - * @param {byte_array} key + * @param {byteArray} input + * @param {byteArray} key * @param {function} func - The bitwise calculation to carry out - * @param {boolean} null_preserving + * @param {boolean} nullPreserving * @param {string} scheme - * @returns {byte_array} + * @returns {byteArray} */ - _bit_op: function (input, key, func, null_preserving, scheme) { + _bitOp: function (input, key, func, nullPreserving, scheme) { if (!key || !key.length) key = [0]; var result = [], x = null, @@ -32,9 +32,9 @@ var BitwiseOp = { for (var i = 0; i < input.length; i++) { k = key[i % key.length]; o = input[i]; - x = null_preserving && (o === 0 || o === k) ? o : func(o, k); + x = nullPreserving && (o === 0 || o === k) ? o : func(o, k); result.push(x); - if (scheme !== "Standard" && !(null_preserving && (o === 0 || o === k))) { + if (scheme !== "Standard" && !(nullPreserving && (o === 0 || o === k))) { switch (scheme) { case "Input differential": key[i % key.length] = x; @@ -69,18 +69,18 @@ var BitwiseOp = { /** * XOR operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_xor: function (input, args) { + runXor: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string || ""), scheme = args[1], - null_preserving = args[2]; + nullPreserving = args[2]; - key = Utils.word_array_to_byte_array(key); + key = Utils.wordArrayToByteArray(key); - return BitwiseOp._bit_op(input, key, BitwiseOp._xor, null_preserving, scheme); + return BitwiseOp._bitOp(input, key, BitwiseOp._xor, nullPreserving, scheme); }, @@ -113,42 +113,42 @@ var BitwiseOp = { /** * XOR Brute Force operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_xor_brute: function (input, args) { - var key_length = parseInt(args[0], 10), - sample_length = args[1], - sample_offset = args[2], - null_preserving = args[3], + runXorBrute: function (input, args) { + var keyLength = parseInt(args[0], 10), + sampleLength = args[1], + sampleOffset = args[2], + nullPreserving = args[3], differential = args[4], crib = args[5], - print_key = args[6], - output_hex = args[7], + printKey = args[6], + outputHex = args[7], regex; var output = "", result, - result_utf8; + resultUtf8; - input = input.slice(sample_offset, sample_offset + sample_length); + input = input.slice(sampleOffset, sampleOffset + sampleLength); if (crib !== "") { regex = new RegExp(crib, "im"); } - for (var key = 1, l = Math.pow(256, key_length); key < l; key++) { - result = BitwiseOp._bit_op(input, Utils.hex_to_byte_array(key.toString(16)), BitwiseOp._xor, null_preserving, differential); - result_utf8 = Utils.byte_array_to_utf8(result); - if (crib !== "" && result_utf8.search(regex) === -1) continue; - if (print_key) output += "Key = " + Utils.hex(key, (2*key_length)) + ": "; - if (output_hex) - output += Utils.byte_array_to_hex(result) + "\n"; + for (var key = 1, l = Math.pow(256, keyLength); key < l; key++) { + result = BitwiseOp._bitOp(input, Utils.hexToByteArray(key.toString(16)), BitwiseOp._xor, nullPreserving, differential); + resultUtf8 = Utils.byteArrayToUtf8(result); + if (crib !== "" && resultUtf8.search(regex) === -1) continue; + if (printKey) output += "Key = " + Utils.hex(key, (2*keyLength)) + ": "; + if (outputHex) + output += Utils.byteArrayToHex(result) + "\n"; else - output += Utils.printable(result_utf8, false) + "\n"; - if (print_key) output += "\n"; + output += Utils.printable(resultUtf8, false) + "\n"; + if (printKey) output += "\n"; } return output; }, @@ -157,72 +157,72 @@ var BitwiseOp = { /** * NOT operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_not: function (input, args) { - return BitwiseOp._bit_op(input, null, BitwiseOp._not); + runNot: function (input, args) { + return BitwiseOp._bitOp(input, null, BitwiseOp._not); }, /** * AND operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_and: function (input, args) { + runAnd: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string || ""); - key = Utils.word_array_to_byte_array(key); + key = Utils.wordArrayToByteArray(key); - return BitwiseOp._bit_op(input, key, BitwiseOp._and); + return BitwiseOp._bitOp(input, key, BitwiseOp._and); }, /** * OR operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_or: function (input, args) { + runOr: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string || ""); - key = Utils.word_array_to_byte_array(key); + key = Utils.wordArrayToByteArray(key); - return BitwiseOp._bit_op(input, key, BitwiseOp._or); + return BitwiseOp._bitOp(input, key, BitwiseOp._or); }, /** * ADD operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_add: function (input, args) { + runAdd: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string || ""); - key = Utils.word_array_to_byte_array(key); + key = Utils.wordArrayToByteArray(key); - return BitwiseOp._bit_op(input, key, BitwiseOp._add); + return BitwiseOp._bitOp(input, key, BitwiseOp._add); }, /** * SUB operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_sub: function (input, args) { + runSub: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string || ""); - key = Utils.word_array_to_byte_array(key); + key = Utils.wordArrayToByteArray(key); - return BitwiseOp._bit_op(input, key, BitwiseOp._sub); + return BitwiseOp._bitOp(input, key, BitwiseOp._sub); }, diff --git a/src/js/operations/ByteRepr.js b/src/js/operations/ByteRepr.js index 87f11e48..2130409d 100755 --- a/src/js/operations/ByteRepr.js +++ b/src/js/operations/ByteRepr.js @@ -30,13 +30,13 @@ var ByteRepr = { /** * To Hex operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to_hex: function(input, args) { - var delim = Utils.char_rep[args[0] || "Space"]; - return Utils.to_hex(input, delim, 2); + runToHex: function(input, args) { + var delim = Utils.charRep[args[0] || "Space"]; + return Utils.toHex(input, delim, 2); }, @@ -45,11 +45,11 @@ var ByteRepr = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from_hex: function(input, args) { + runFromHex: function(input, args) { var delim = args[0] || "Space"; - return Utils.from_hex(input, delim, 2); + return Utils.fromHex(input, delim, 2); }, @@ -66,8 +66,8 @@ var ByteRepr = { * @param {Object[]} args * @returns {string} */ - run_to_charcode: function(input, args) { - var delim = Utils.char_rep[args[0] || "Space"], + runToCharcode: function(input, args) { + var delim = Utils.charRep[args[0] || "Space"], base = args[1], output = "", padding = 2, @@ -87,11 +87,11 @@ var ByteRepr = { else if (ordinal < 4294967296) padding = 8; else padding = 2; - if (padding > 2) app.options.attempt_highlight = false; + if (padding > 2) app.options.attemptHighlight = false; output += Utils.hex(ordinal, padding) + delim; } else { - app.options.attempt_highlight = false; + app.options.attemptHighlight = false; output += ordinal.toString(base) + delim; } } @@ -105,10 +105,10 @@ var ByteRepr = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from_charcode: function(input, args) { - var delim = Utils.char_rep[args[0] || "Space"], + runFromCharcode: function(input, args) { + var delim = Utils.charRep[args[0] || "Space"], base = args[1], bites = input.split(delim), i = 0; @@ -118,7 +118,7 @@ var ByteRepr = { } if (base !== 16) { - app.options.attempt_highlight = false; + app.options.attemptHighlight = false; } // Split into groups of 2 if the whole string is concatenated and @@ -134,7 +134,7 @@ var ByteRepr = { for (i = 0; i < bites.length; i++) { latin1 += Utils.chr(parseInt(bites[i], base)); } - return Utils.str_to_byte_array(latin1); + return Utils.strToByteArray(latin1); }, @@ -147,8 +147,8 @@ var ByteRepr = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_to: function(pos, args) { - var delim = Utils.char_rep[args[0] || "Space"], + highlightTo: function(pos, args) { + var delim = Utils.charRep[args[0] || "Space"], len = delim === "\r\n" ? 1 : delim.length; pos[0].start = pos[0].start * (2 + len); @@ -172,8 +172,8 @@ var ByteRepr = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_from: function(pos, args) { - var delim = Utils.char_rep[args[0] || "Space"], + highlightFrom: function(pos, args) { + var delim = Utils.charRep[args[0] || "Space"], len = delim === "\r\n" ? 1 : delim.length, width = len + 2; @@ -194,12 +194,12 @@ var ByteRepr = { /** * To Decimal operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to_decimal: function(input, args) { - var delim = Utils.char_rep[args[0]]; + runToDecimal: function(input, args) { + var delim = Utils.charRep[args[0]]; return input.join(delim); }, @@ -209,16 +209,16 @@ var ByteRepr = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from_decimal: function(input, args) { - var delim = Utils.char_rep[args[0]]; - var byte_str = input.split(delim), output = []; - if (byte_str[byte_str.length-1] === "") - byte_str = byte_str.slice(0, byte_str.length-1); + runFromDecimal: function(input, args) { + var delim = Utils.charRep[args[0]]; + var byteStr = input.split(delim), output = []; + if (byteStr[byteStr.length-1] === "") + byteStr = byteStr.slice(0, byteStr.length-1); - for (var i = 0; i < byte_str.length; i++) { - output[i] = parseInt(byte_str[i], 10); + for (var i = 0; i < byteStr.length; i++) { + output[i] = parseInt(byteStr[i], 10); } return output; }, @@ -227,12 +227,12 @@ var ByteRepr = { /** * To Binary operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to_binary: function(input, args) { - var delim = Utils.char_rep[args[0] || "Space"], + runToBinary: function(input, args) { + var delim = Utils.charRep[args[0] || "Space"], output = "", padding = 8; @@ -253,18 +253,18 @@ var ByteRepr = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from_binary: function(input, args) { + runFromBinary: function(input, args) { if (args[0] !== "None") { - var delim_regex = Utils.regex_rep[args[0] || "Space"]; - input = input.replace(delim_regex, ""); + var delimRegex = Utils.regexRep[args[0] || "Space"]; + input = input.replace(delimRegex, ""); } var output = []; - var byte_len = 8; - for (var i = 0; i < input.length; i += byte_len) { - output.push(parseInt(input.substr(i, byte_len), 2)); + var byteLen = 8; + for (var i = 0; i < input.length; i += byteLen) { + output.push(parseInt(input.substr(i, byteLen), 2)); } return output; }, @@ -279,8 +279,8 @@ var ByteRepr = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_to_binary: function(pos, args) { - var delim = Utils.char_rep[args[0] || "Space"]; + highlightToBinary: function(pos, args) { + var delim = Utils.charRep[args[0] || "Space"]; pos[0].start = pos[0].start * (8 + delim.length); pos[0].end = pos[0].end * (8 + delim.length) - delim.length; return pos; @@ -296,8 +296,8 @@ var ByteRepr = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_from_binary: function(pos, args) { - var delim = Utils.char_rep[args[0] || "Space"]; + highlightFromBinary: function(pos, args) { + var delim = Utils.charRep[args[0] || "Space"]; pos[0].start = pos[0].start === 0 ? 0 : Math.floor(pos[0].start / (8 + delim.length)); pos[0].end = pos[0].end === 0 ? 0 : Math.ceil(pos[0].end / (8 + delim.length)); return pos; @@ -318,40 +318,40 @@ var ByteRepr = { /** * To Hex Content operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to_hex_content: function(input, args) { + runToHexContent: function(input, args) { var convert = args[0]; var spaces = args[1]; if (convert === "All chars") { - var result = "|" + Utils.to_hex(input) + "|"; + var result = "|" + Utils.toHex(input) + "|"; if (!spaces) result = result.replace(/ /g, ""); return result; } var output = "", - in_hex = false, - convert_spaces = convert === "Only special chars including spaces", + inHex = false, + convertSpaces = convert === "Only special chars including spaces", b; for (var i = 0; i < input.length; i++) { b = input[i]; - if ((b === 32 && convert_spaces) || (b < 48 && b !== 32) || (b > 57 && b < 65) || (b > 90 && b < 97) || b > 122) { - if (!in_hex) { + if ((b === 32 && convertSpaces) || (b < 48 && b !== 32) || (b > 57 && b < 65) || (b > 90 && b < 97) || b > 122) { + if (!inHex) { output += "|"; - in_hex = true; + inHex = true; } else if (spaces) output += " "; - output += Utils.to_hex([b]); + output += Utils.toHex([b]); } else { - if (in_hex) { + if (inHex) { output += "|"; - in_hex = false; + inHex = false; } output += Utils.chr(input[i]); } } - if (in_hex) output += "|"; + if (inHex) output += "|"; return output; }, @@ -361,9 +361,9 @@ var ByteRepr = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from_hex_content: function(input, args) { + runFromHexContent: function(input, args) { var regex = /\|([a-f\d ]{2,})\|/gi; var output = [], m, i = 0; while ((m = regex.exec(input))) { @@ -372,7 +372,7 @@ var ByteRepr = { output.push(Utils.ord(input[i++])); // Add match - var bytes = Utils.from_hex(m[1]); + var bytes = Utils.fromHex(m[1]); if (bytes) { for (var a = 0; a < bytes.length;) output.push(bytes[a++]); diff --git a/src/js/operations/CharEnc.js b/src/js/operations/CharEnc.js index 3dd31aab..72b5ea6f 100755 --- a/src/js/operations/CharEnc.js +++ b/src/js/operations/CharEnc.js @@ -25,21 +25,21 @@ var CharEnc = { * @returns {string} */ run: function(input, args) { - var input_format = args[0], - output_format = args[1]; + var inputFormat = args[0], + outputFormat = args[1]; - if (input_format === "Windows-1251") { - input = Utils.win1251_to_unicode(input); + if (inputFormat === "Windows-1251") { + input = Utils.win1251ToUnicode(input); input = CryptoJS.enc.Utf8.parse(input); } else { - input = Utils.format[input_format].parse(input); + input = Utils.format[inputFormat].parse(input); } - if (output_format === "Windows-1251") { + if (outputFormat === "Windows-1251") { input = CryptoJS.enc.Utf8.stringify(input); - return Utils.unicode_to_win1251(input); + return Utils.unicodeToWin1251(input); } else { - return Utils.format[output_format].stringify(input); + return Utils.format[outputFormat].stringify(input); } }, diff --git a/src/js/operations/Checksum.js b/src/js/operations/Checksum.js index 7f55cf4b..8e2a4b7e 100755 --- a/src/js/operations/Checksum.js +++ b/src/js/operations/Checksum.js @@ -12,11 +12,11 @@ var Checksum = { /** * Fletcher-8 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_fletcher8: function(input, args) { + runFletcher8: function(input, args) { var a = 0, b = 0; @@ -32,11 +32,11 @@ var Checksum = { /** * Fletcher-16 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_fletcher16: function(input, args) { + runFletcher16: function(input, args) { var a = 0, b = 0; @@ -52,11 +52,11 @@ var Checksum = { /** * Fletcher-32 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_fletcher32: function(input, args) { + runFletcher32: function(input, args) { var a = 0, b = 0; @@ -72,11 +72,11 @@ var Checksum = { /** * Fletcher-64 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_fletcher64: function(input, args) { + runFletcher64: function(input, args) { var a = 0, b = 0; @@ -92,11 +92,11 @@ var Checksum = { /** * Adler-32 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_adler32: function(input, args) { + runAdler32: function(input, args) { var MOD_ADLER = 65521, a = 1, b = 0; @@ -116,16 +116,16 @@ var Checksum = { /** * CRC-32 Checksum operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_crc32: function(input, args) { - var crc_table = window.crc_table || (window.crc_table = Checksum._gen_crc_table()), + runCRC32: function(input, args) { + var crcTable = window.crcTable || (window.crcTable = Checksum._genCRCTable()), crc = 0 ^ (-1); for (var i = 0; i < input.length; i++) { - crc = (crc >>> 8) ^ crc_table[(crc ^ input[i]) & 0xff]; + crc = (crc >>> 8) ^ crcTable[(crc ^ input[i]) & 0xff]; } return Utils.hex((crc ^ (-1)) >>> 0); @@ -136,20 +136,20 @@ var Checksum = { * TCP/IP Checksum operation. * * @author GCHQ Contributor [1] - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} * * @example * // returns '3f2c' - * Checksum.run_tcp_ip([0x45,0x00,0x00,0x87,0xa3,0x1b,0x40,0x00,0x40,0x06, + * Checksum.runTcpIp([0x45,0x00,0x00,0x87,0xa3,0x1b,0x40,0x00,0x40,0x06, * 0x00,0x00,0xac,0x11,0x00,0x04,0xac,0x11,0x00,0x03]) * * // returns 'a249' - * Checksum.run_tcp_ip([0x45,0x00,0x01,0x11,0x3f,0x74,0x40,0x00,0x40,0x06, + * Checksum.runTcpIp([0x45,0x00,0x01,0x11,0x3f,0x74,0x40,0x00,0x40,0x06, * 0x00,0x00,0xac,0x11,0x00,0x03,0xac,0x11,0x00,0x04]) */ - run_tcp_ip: function(input, args) { + runTCPIP: function(input, args) { var csum = 0; for (var i = 0; i < input.length; i++) { @@ -172,19 +172,19 @@ var Checksum = { * @private * @returns {array} */ - _gen_crc_table: function() { + _genCRCTable: function() { var c, - crc_table = []; + crcTable = []; for (var n = 0; n < 256; n++) { c = n; for (var k = 0; k < 8; k++) { c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); } - crc_table[n] = c; + crcTable[n] = c; } - return crc_table; + return crcTable; }, }; diff --git a/src/js/operations/Cipher.js b/src/js/operations/Cipher.js index 4f6d7316..d204d6cd 100755 --- a/src/js/operations/Cipher.js +++ b/src/js/operations/Cipher.js @@ -53,7 +53,7 @@ var Cipher = { * * @private * @param {function} algo - The CryptoJS algorithm to use - * @param {byte_array} input + * @param {byteArray} input * @param {function} args * @returns {string} */ @@ -63,8 +63,8 @@ var Cipher = { salt = Utils.format[args[2].option].parse(args[2].string || ""), mode = CryptoJS.mode[args[3]], padding = CryptoJS.pad[args[4]], - result_option = args[5].toLowerCase(), - output_format = args[6]; + resultOption = args[5].toLowerCase(), + outputFormat = args[6]; if (iv.sigBytes === 0) { // Use passphrase rather than key. Need to convert it to a string. @@ -79,13 +79,13 @@ var Cipher = { }); var result = ""; - if (result_option === "show all") { - result += "Key: " + encrypted.key.toString(Utils.format[output_format]); - result += "\nIV: " + encrypted.iv.toString(Utils.format[output_format]); - if (encrypted.salt) result += "\nSalt: " + encrypted.salt.toString(Utils.format[output_format]); - result += "\n\nCiphertext: " + encrypted.ciphertext.toString(Utils.format[output_format]); + if (resultOption === "show all") { + result += "Key: " + encrypted.key.toString(Utils.format[outputFormat]); + result += "\nIV: " + encrypted.iv.toString(Utils.format[outputFormat]); + if (encrypted.salt) result += "\nSalt: " + encrypted.salt.toString(Utils.format[outputFormat]); + result += "\n\nCiphertext: " + encrypted.ciphertext.toString(Utils.format[outputFormat]); } else { - result = encrypted[result_option].toString(Utils.format[output_format]); + result = encrypted[resultOption].toString(Utils.format[outputFormat]); } return result; @@ -97,7 +97,7 @@ var Cipher = { * * @private * @param {function} algo - The CryptoJS algorithm to use - * @param {byte_array} input + * @param {byteArray} input * @param {function} args * @returns {string} */ @@ -107,15 +107,15 @@ var Cipher = { salt = Utils.format[args[2].option].parse(args[2].string || ""), mode = CryptoJS.mode[args[3]], padding = CryptoJS.pad[args[4]], - input_format = args[5], - output_format = args[6]; + inputFormat = args[5], + outputFormat = args[6]; // The ZeroPadding option causes a crash when the input length is 0 if (!input.length) { return "No input"; } - var ciphertext = Utils.format[input_format].parse(input); + var ciphertext = Utils.format[inputFormat].parse(input); if (iv.sigBytes === 0) { // Use passphrase rather than key. Need to convert it to a string. @@ -133,7 +133,7 @@ var Cipher = { var result; try { - result = decrypted.toString(Utils.format[output_format]); + result = decrypted.toString(Utils.format[outputFormat]); } catch (err) { result = "Decrypt error: " + err.message; } @@ -149,7 +149,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_aes_enc: function (input, args) { + runAesEnc: function (input, args) { return Cipher._enc(CryptoJS.AES, input, args); }, @@ -161,7 +161,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_aes_dec: function (input, args) { + runAesDec: function (input, args) { return Cipher._dec(CryptoJS.AES, input, args); }, @@ -173,7 +173,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_des_enc: function (input, args) { + runDesEnc: function (input, args) { return Cipher._enc(CryptoJS.DES, input, args); }, @@ -185,7 +185,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_des_dec: function (input, args) { + runDesDec: function (input, args) { return Cipher._dec(CryptoJS.DES, input, args); }, @@ -197,7 +197,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_triple_des_enc: function (input, args) { + runTripleDesEnc: function (input, args) { return Cipher._enc(CryptoJS.TripleDES, input, args); }, @@ -209,7 +209,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_triple_des_dec: function (input, args) { + runTripleDesDec: function (input, args) { return Cipher._dec(CryptoJS.TripleDES, input, args); }, @@ -221,7 +221,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_rabbit_enc: function (input, args) { + runRabbitEnc: function (input, args) { return Cipher._enc(CryptoJS.Rabbit, input, args); }, @@ -233,7 +233,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_rabbit_dec: function (input, args) { + runRabbitDec: function (input, args) { return Cipher._dec(CryptoJS.Rabbit, input, args); }, @@ -256,20 +256,20 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_blowfish_enc: function (input, args) { + runBlowfishEnc: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string).toString(Utils.format.Latin1), mode = args[1], - output_format = args[2]; + outputFormat = args[2]; if (key.length === 0) return "Enter a key"; - var enc_hex = blowfish.encrypt(input, key, { + var encHex = blowfish.encrypt(input, key, { outputType: 1, cipherMode: Cipher.BLOWFISH_MODES.indexOf(mode) }), - enc = CryptoJS.enc.Hex.parse(enc_hex); + enc = CryptoJS.enc.Hex.parse(encHex); - return enc.toString(Utils.format[output_format]); + return enc.toString(Utils.format[outputFormat]); }, @@ -280,14 +280,14 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_blowfish_dec: function (input, args) { + runBlowfishDec: function (input, args) { var key = Utils.format[args[0].option].parse(args[0].string).toString(Utils.format.Latin1), mode = args[1], - input_format = args[2]; + inputFormat = args[2]; if (key.length === 0) return "Enter a key"; - input = Utils.format[input_format].parse(input); + input = Utils.format[inputFormat].parse(input); return blowfish.decrypt(input.toString(CryptoJS.enc.Base64), key, { outputType: 0, // This actually means inputType. The library is weird. @@ -314,16 +314,16 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_pbkdf2: function (input, args) { - var key_size = args[0] / 32, + runPbkdf2: function (input, args) { + var keySize = args[0] / 32, iterations = args[1], salt = CryptoJS.enc.Hex.parse(args[2] || ""), - input_format = args[3], - output_format = args[4], - passphrase = Utils.format[input_format].parse(input), - key = CryptoJS.PBKDF2(passphrase, salt, { keySize: key_size, iterations: iterations }); + inputFormat = args[3], + outputFormat = args[4], + passphrase = Utils.format[inputFormat].parse(input), + key = CryptoJS.PBKDF2(passphrase, salt, { keySize: keySize, iterations: iterations }); - return key.toString(Utils.format[output_format]); + return key.toString(Utils.format[outputFormat]); }, @@ -334,16 +334,16 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_evpkdf: function (input, args) { - var key_size = args[0] / 32, + runEvpkdf: function (input, args) { + var keySize = args[0] / 32, iterations = args[1], salt = CryptoJS.enc.Hex.parse(args[2] || ""), - input_format = args[3], - output_format = args[4], - passphrase = Utils.format[input_format].parse(input), - key = CryptoJS.EvpKDF(passphrase, salt, { keySize: key_size, iterations: iterations }); + inputFormat = args[3], + outputFormat = args[4], + passphrase = Utils.format[inputFormat].parse(input), + key = CryptoJS.EvpKDF(passphrase, salt, { keySize: keySize, iterations: iterations }); - return key.toString(Utils.format[output_format]); + return key.toString(Utils.format[outputFormat]); }, @@ -354,7 +354,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_rc4: function (input, args) { + runRc4: function (input, args) { var message = Utils.format[args[1]].parse(input), passphrase = Utils.format[args[0].option].parse(args[0].string), encrypted = CryptoJS.RC4.encrypt(message, passphrase); @@ -376,7 +376,7 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_rc4drop: function (input, args) { + runRc4drop: function (input, args) { var message = Utils.format[args[1]].parse(input), passphrase = Utils.format[args[0].option].parse(args[0].string), drop = args[3], @@ -394,13 +394,13 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_vigenere_enc: function (input, args) { + runVigenereEnc: function (input, args) { var alphabet = "abcdefghijklmnopqrstuvwxyz", key = args[0].toLowerCase(), output = "", fail = 0, - key_index, - msg_index, + keyIndex, + msgIndex, chr; if (!key) return "No key entered"; @@ -412,17 +412,17 @@ var Cipher = { // for chars not in alphabet chr = key[(i - fail) % key.length]; // Get the location in the vigenere square of the key char - key_index = alphabet.indexOf(chr); + keyIndex = alphabet.indexOf(chr); // Get the location in the vigenere square of the message char - msg_index = alphabet.indexOf(input[i]); + msgIndex = alphabet.indexOf(input[i]); // Get the encoded letter by finding the sum of indexes modulo 26 and finding // the letter corresponding to that - output += alphabet[(key_index + msg_index) % 26]; + output += alphabet[(keyIndex + msgIndex) % 26]; } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) { chr = key[(i - fail) % key.length].toLowerCase(); - key_index = alphabet.indexOf(chr); - msg_index = alphabet.indexOf(input[i].toLowerCase()); - output += alphabet[(key_index + msg_index) % 26].toUpperCase(); + keyIndex = alphabet.indexOf(chr); + msgIndex = alphabet.indexOf(input[i].toLowerCase()); + output += alphabet[(keyIndex + msgIndex) % 26].toUpperCase(); } else { output += input[i]; fail++; @@ -441,13 +441,13 @@ var Cipher = { * @param {Object[]} args * @returns {string} */ - run_vigenere_dec: function (input, args) { + runVigenereDec: function (input, args) { var alphabet = "abcdefghijklmnopqrstuvwxyz", key = args[0].toLowerCase(), output = "", fail = 0, - key_index, - msg_index, + keyIndex, + msgIndex, chr; if (!key) return "No key entered"; @@ -456,16 +456,16 @@ var Cipher = { for (var i = 0; i < input.length; i++) { if (alphabet.indexOf(input[i]) >= 0) { chr = key[(i - fail) % key.length]; - key_index = alphabet.indexOf(chr); - msg_index = alphabet.indexOf(input[i]); + keyIndex = alphabet.indexOf(chr); + msgIndex = alphabet.indexOf(input[i]); // Subtract indexes from each other, add 26 just in case the value is negative, // modulo to remove if neccessary - output += alphabet[(msg_index - key_index + alphabet.length ) % 26]; + output += alphabet[(msgIndex - keyIndex + alphabet.length ) % 26]; } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) { chr = key[(i - fail) % key.length].toLowerCase(); - key_index = alphabet.indexOf(chr); - msg_index = alphabet.indexOf(input[i].toLowerCase()); - output += alphabet[(msg_index + alphabet.length - key_index) % 26].toUpperCase(); + keyIndex = alphabet.indexOf(chr); + msgIndex = alphabet.indexOf(input[i].toLowerCase()); + output += alphabet[(msgIndex + alphabet.length - keyIndex) % 26].toUpperCase(); } else { output += input[i]; fail++; @@ -490,18 +490,18 @@ var Cipher = { /** * Substitute operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_substitute: function (input, args) { - var plaintext = Utils.str_to_byte_array(Utils.expand_alph_range(args[0]).join()), - ciphertext = Utils.str_to_byte_array(Utils.expand_alph_range(args[1]).join()), + runSubstitute: function (input, args) { + var plaintext = Utils.strToByteArray(Utils.expandAlphRange(args[0]).join()), + ciphertext = Utils.strToByteArray(Utils.expandAlphRange(args[1]).join()), output = [], index = -1; if (plaintext.length !== ciphertext.length) { - output = Utils.str_to_byte_array("Warning: Plaintext and Ciphertext lengths differ\n\n"); + output = Utils.strToByteArray("Warning: Plaintext and Ciphertext lengths differ\n\n"); } for (var i = 0; i < input.length; i++) { diff --git a/src/js/operations/Code.js b/src/js/operations/Code.js index 3bea92a6..5213d950 100755 --- a/src/js/operations/Code.js +++ b/src/js/operations/Code.js @@ -29,10 +29,10 @@ var Code = { * @param {Object[]} args * @returns {html} */ - run_syntax_highlight: function(input, args) { + runSyntaxHighlight: function(input, args) { var language = args[0], - line_nums = args[1]; - return "" + prettyPrintOne(Utils.escape_html(input), language, line_nums) + ""; + lineNums = args[1]; + return "" + prettyPrintOne(Utils.escapeHtml(input), language, lineNums) + ""; }, @@ -49,9 +49,9 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_xml_beautify: function(input, args) { - var indent_str = args[0]; - return vkbeautify.xml(input, indent_str); + runXmlBeautify: function(input, args) { + var indentStr = args[0]; + return vkbeautify.xml(input, indentStr); }, @@ -62,10 +62,10 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_json_beautify: function(input, args) { - var indent_str = args[0]; + runJsonBeautify: function(input, args) { + var indentStr = args[0]; if (!input) return ""; - return vkbeautify.json(input, indent_str); + return vkbeautify.json(input, indentStr); }, @@ -76,9 +76,9 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_css_beautify: function(input, args) { - var indent_str = args[0]; - return vkbeautify.css(input, indent_str); + runCssBeautify: function(input, args) { + var indentStr = args[0]; + return vkbeautify.css(input, indentStr); }, @@ -89,9 +89,9 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_sql_beautify: function(input, args) { - var indent_str = args[0]; - return vkbeautify.sql(input, indent_str); + runSqlBeautify: function(input, args) { + var indentStr = args[0]; + return vkbeautify.sql(input, indentStr); }, @@ -108,9 +108,9 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_xml_minify: function(input, args) { - var preserve_comments = args[0]; - return vkbeautify.xmlmin(input, preserve_comments); + runXmlMinify: function(input, args) { + var preserveComments = args[0]; + return vkbeautify.xmlmin(input, preserveComments); }, @@ -121,7 +121,7 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_json_minify: function(input, args) { + runJsonMinify: function(input, args) { if (!input) return ""; return vkbeautify.jsonmin(input); }, @@ -134,9 +134,9 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_css_minify: function(input, args) { - var preserve_comments = args[0]; - return vkbeautify.cssmin(input, preserve_comments); + runCssMinify: function(input, args) { + var preserveComments = args[0]; + return vkbeautify.cssmin(input, preserveComments); }, @@ -147,7 +147,7 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_sql_minify: function(input, args) { + runSqlMinify: function(input, args) { return vkbeautify.sqlmin(input); }, @@ -175,48 +175,48 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_generic_beautify: function(input, args) { + runGenericBeautify: function(input, args) { var code = input, t = 0, - preserved_tokens = [], + preservedTokens = [], m; // Remove strings var sstrings = /'([^'\\]|\\.)*'/g; while ((m = sstrings.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); sstrings.lastIndex = m.index; } var dstrings = /"([^"\\]|\\.)*"/g; while ((m = dstrings.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); dstrings.lastIndex = m.index; } // Remove comments var scomments = /\/\/[^\n\r]*/g; while ((m = scomments.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); scomments.lastIndex = m.index; } var mcomments = /\/\*[\s\S]*?\*\//gm; while ((m = mcomments.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); mcomments.lastIndex = m.index; } var hcomments = /(^|\n)#[^\n\r#]+/g; while ((m = hcomments.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); hcomments.lastIndex = m.index; } // Remove regexes var regexes = /\/.*?[^\\]\/[gim]{0,3}/gi; while ((m = regexes.exec(code))) { - code = preserve_token(code, m, t++); + code = preserveToken(code, m, t++); regexes.lastIndex = m.index; } @@ -287,19 +287,19 @@ var Code = { // Replace preserved tokens - var ptokens = /###preserved_token(\d+)###/g; + var ptokens = /###preservedToken(\d+)###/g; while ((m = ptokens.exec(code))) { var ti = parseInt(m[1], 10); - code = code.substring(0, m.index) + preserved_tokens[ti] + code.substring(m.index + m[0].length); + code = code.substring(0, m.index) + preservedTokens[ti] + code.substring(m.index + m[0].length); ptokens.lastIndex = m.index; } return code; - function preserve_token(str, match, t) { - preserved_tokens[t] = match[0]; + function preserveToken(str, match, t) { + preservedTokens[t] = match[0]; return str.substring(0, match.index) + - "###preserved_token" + t + "###" + + "###preservedToken" + t + "###" + str.substring(match.index + match[0].length); } }, @@ -325,7 +325,7 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_xpath:function(input, args) { + runXpath:function(input, args) { var query = args[0], delimiter = args[1]; @@ -344,7 +344,7 @@ var Code = { } var serializer = new XMLSerializer(); - var node_to_string = function(node) { + var nodeToString = function(node) { switch (node.nodeType) { case Node.ELEMENT_NODE: return serializer.serializeToString(node); case Node.ATTRIBUTE_NODE: return node.value; @@ -357,7 +357,7 @@ var Code = { return Object.keys(result).map(function(key) { return result[key]; }).slice(0, -1) // all values except last (length) - .map(node_to_string) + .map(nodeToString) .join(delimiter); }, @@ -382,7 +382,7 @@ var Code = { * @param {Object[]} args * @returns {string} */ - run_css_query: function(input, args) { + runCssQuery: function(input, args) { var query = args[0], delimiter = args[1]; @@ -400,7 +400,7 @@ var Code = { return "Invalid CSS Selector. Details:\n" + err.message; } - var node_to_string = function(node) { + var nodeToString = function(node) { switch (node.nodeType) { case Node.ELEMENT_NODE: return node.outerHTML; case Node.ATTRIBUTE_NODE: return node.value; @@ -415,7 +415,7 @@ var Code = { .map(function(_, i) { return result[i]; }) - .map(node_to_string) + .map(nodeToString) .join(delimiter); }, diff --git a/src/js/operations/Compress.js b/src/js/operations/Compress.js index 785f3633..b5a2e6a1 100755 --- a/src/js/operations/Compress.js +++ b/src/js/operations/Compress.js @@ -44,11 +44,11 @@ var Compress = { /** * Raw Deflate operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_raw_deflate: function(input, args) { + runRawDeflate: function(input, args) { var deflate = new Zlib.RawDeflate(input, { compressionType: Compress.RAW_COMPRESSION_TYPE_LOOKUP[args[0]] }); @@ -81,20 +81,20 @@ var Compress = { * @default */ RAW_BUFFER_TYPE_LOOKUP: { - "Adaptive" : Zlib.RawInflate.BufferType.ADAPTIVE, - "Block" : Zlib.RawInflate.BufferType.BLOCK, + "Adaptive" : Zlib.RawInflate.BufferType.ADAPTIVE, + "Block" : Zlib.RawInflate.BufferType.BLOCK, }, /** * Raw Inflate operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_raw_inflate: function(input, args) { + runRawInflate: function(input, args) { // Deal with character encoding issues - input = Utils.str_to_byte_array(Utils.byte_array_to_utf8(input)); + input = Utils.strToByteArray(Utils.byteArrayToUtf8(input)); var inflate = new Zlib.RawInflate(input, { index: args[0], bufferSize: args[1], @@ -140,11 +140,11 @@ var Compress = { /** * Zlib Deflate operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_zlib_deflate: function(input, args) { + runZlibDeflate: function(input, args) { var deflate = new Zlib.Deflate(input, { compressionType: Compress.ZLIB_COMPRESSION_TYPE_LOOKUP[args[0]] }); @@ -164,13 +164,13 @@ var Compress = { /** * Zlib Inflate operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_zlib_inflate: function(input, args) { + runZlibInflate: function(input, args) { // Deal with character encoding issues - input = Utils.str_to_byte_array(Utils.byte_array_to_utf8(input)); + input = Utils.strToByteArray(Utils.byteArrayToUtf8(input)); var inflate = new Zlib.Inflate(input, { index: args[0], bufferSize: args[1], @@ -191,11 +191,11 @@ var Compress = { /** * Gzip operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_gzip: function(input, args) { + runGzip: function(input, args) { var filename = args[1], comment = args[2], options = { @@ -224,13 +224,13 @@ var Compress = { /** * Gunzip operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_gunzip: function(input, args) { + runGunzip: function(input, args) { // Deal with character encoding issues - input = Utils.str_to_byte_array(Utils.byte_array_to_utf8(input)); + input = Utils.strToByteArray(Utils.byteArrayToUtf8(input)); var gunzip = new Zlib.Gunzip(input); return Array.prototype.slice.call(gunzip.decompress()); }, @@ -262,15 +262,15 @@ var Compress = { /** * Zip operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_pkzip: function(input, args) { - var password = Utils.str_to_byte_array(args[2]), + runPkzip: function(input, args) { + var password = Utils.strToByteArray(args[2]), options = { - filename: Utils.str_to_byte_array(args[0]), - comment: Utils.str_to_byte_array(args[1]), + filename: Utils.strToByteArray(args[0]), + comment: Utils.strToByteArray(args[1]), compressionMethod: Compress.ZIP_COMPRESSION_METHOD_LOOKUP[args[3]], os: Compress.ZIP_OS_LOOKUP[args[4]], deflateOption: { @@ -295,13 +295,13 @@ var Compress = { /** * Unzip operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_pkunzip: function(input, args) { + runPkunzip: function(input, args) { var options = { - password: Utils.str_to_byte_array(args[0]), + password: Utils.strToByteArray(args[0]), verify: args[1] }, file = "", @@ -313,7 +313,7 @@ var Compress = { window.uzip = unzip; for (var i = 0; i < filenames.length; i++) { - file = Utils.byte_array_to_utf8(unzip.decompress(filenames[i])); + file = Utils.byteArrayToUtf8(unzip.decompress(filenames[i])); output += "
                  " + "" + "
                  " + "
                  " + - Utils.escape_html(file) + "
                  "; + Utils.escapeHtml(file) + ""; } return output + ""; @@ -332,17 +332,17 @@ var Compress = { /** * Bzip2 Decompress operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_bzip2_decompress: function(input, args) { + runBzip2Decompress: function(input, args) { var compressed = new Uint8Array(input), - bzip2_reader, + bzip2Reader, plain = ""; - bzip2_reader = bzip2.array(compressed); - plain = bzip2.simple(bzip2_reader); + bzip2Reader = bzip2.array(compressed); + plain = bzip2.simple(bzip2Reader); return plain; }, diff --git a/src/js/operations/Convert.js b/src/js/operations/Convert.js index 72e1a6e9..e10360ba 100755 --- a/src/js/operations/Convert.js +++ b/src/js/operations/Convert.js @@ -64,12 +64,12 @@ var Convert = { * @param {Object[]} args * @returns {number} */ - run_distance: function (input, args) { - var input_units = args[0], - output_units = args[1]; + runDistance: function (input, args) { + var inputUnits = args[0], + outputUnits = args[1]; - input = input * Convert.DISTANCE_FACTOR[input_units]; - return input / Convert.DISTANCE_FACTOR[output_units]; + input = input * Convert.DISTANCE_FACTOR[inputUnits]; + return input / Convert.DISTANCE_FACTOR[outputUnits]; // TODO Remove rounding errors (e.g. 1.000000000001) }, @@ -145,12 +145,12 @@ var Convert = { * @param {Object[]} args * @returns {number} */ - run_data_size: function (input, args) { - var input_units = args[0], - output_units = args[1]; + runDataSize: function (input, args) { + var inputUnits = args[0], + outputUnits = args[1]; - input = input * Convert.DATA_FACTOR[input_units]; - return input / Convert.DATA_FACTOR[output_units]; + input = input * Convert.DATA_FACTOR[inputUnits]; + return input / Convert.DATA_FACTOR[outputUnits]; }, @@ -225,12 +225,12 @@ var Convert = { * @param {Object[]} args * @returns {number} */ - run_area: function (input, args) { - var input_units = args[0], - output_units = args[1]; + runArea: function (input, args) { + var inputUnits = args[0], + outputUnits = args[1]; - input = input * Convert.AREA_FACTOR[input_units]; - return input / Convert.AREA_FACTOR[output_units]; + input = input * Convert.AREA_FACTOR[inputUnits]; + return input / Convert.AREA_FACTOR[outputUnits]; }, @@ -336,12 +336,12 @@ var Convert = { * @param {Object[]} args * @returns {number} */ - run_mass: function (input, args) { - var input_units = args[0], - output_units = args[1]; + runMass: function (input, args) { + var inputUnits = args[0], + outputUnits = args[1]; - input = input * Convert.MASS_FACTOR[input_units]; - return input / Convert.MASS_FACTOR[output_units]; + input = input * Convert.MASS_FACTOR[inputUnits]; + return input / Convert.MASS_FACTOR[outputUnits]; }, @@ -401,12 +401,12 @@ var Convert = { * @param {Object[]} args * @returns {number} */ - run_speed: function (input, args) { - var input_units = args[0], - output_units = args[1]; + runSpeed: function (input, args) { + var inputUnits = args[0], + outputUnits = args[1]; - input = input * Convert.SPEED_FACTOR[input_units]; - return input / Convert.SPEED_FACTOR[output_units]; + input = input * Convert.SPEED_FACTOR[inputUnits]; + return input / Convert.SPEED_FACTOR[outputUnits]; }, }; diff --git a/src/js/operations/DateTime.js b/src/js/operations/DateTime.js index f119978e..8e64f8f6 100755 --- a/src/js/operations/DateTime.js +++ b/src/js/operations/DateTime.js @@ -24,7 +24,7 @@ var DateTime = { * @param {Object[]} args * @returns {string} */ - run_from_unix_timestamp: function(input, args) { + runFromUnixTimestamp: function(input, args) { var units = args[0], d; @@ -55,7 +55,7 @@ var DateTime = { * @param {Object[]} args * @returns {number} */ - run_to_unix_timestamp: function(input, args) { + runToUnixTimestamp: function(input, args) { var units = args[0], d = moment(input); @@ -130,21 +130,21 @@ var DateTime = { * @param {Object[]} args * @returns {html} */ - run_translate_format: function(input, args) { - var input_format = args[1], - input_timezone = args[2], - output_format = args[3], - output_timezone = args[4], + runTranslateFormat: function(input, args) { + var inputFormat = args[1], + inputTimezone = args[2], + outputFormat = args[3], + outputTimezone = args[4], date; try { - date = moment.tz(input, input_format, input_timezone); + date = moment.tz(input, inputFormat, inputTimezone); if (!date || date.format() === "Invalid date") throw Error; } catch(err) { return "Invalid format.\n\n" + DateTime.FORMAT_EXAMPLES; } - return date.tz(output_timezone).format(output_format); + return date.tz(outputTimezone).format(outputFormat); }, @@ -155,14 +155,14 @@ var DateTime = { * @param {Object[]} args * @returns {html} */ - run_parse: function(input, args) { - var input_format = args[1], - input_timezone = args[2], + runParse: function(input, args) { + var inputFormat = args[1], + inputTimezone = args[2], date, output = ""; try { - date = moment.tz(input, input_format, input_timezone); + date = moment.tz(input, inputFormat, inputTimezone); if (!date || date.format() === "Invalid date") throw Error; } catch(err) { return "Invalid format.\n\n" + DateTime.FORMAT_EXAMPLES; diff --git a/src/js/operations/Endian.js b/src/js/operations/Endian.js index 13ce1ce6..c7cdf81d 100755 --- a/src/js/operations/Endian.js +++ b/src/js/operations/Endian.js @@ -32,39 +32,39 @@ var Endian = { * @param {Object[]} args * @returns {string} */ - run_swap_endianness: function(input, args) { - var data_format = args[0], - word_length = args[1], - pad_incomplete_words = args[2], + runSwapEndianness: function(input, args) { + var dataFormat = args[0], + wordLength = args[1], + padIncompleteWords = args[2], data = [], result = [], words = [], i = 0, j = 0; - if (word_length <= 0) { + if (wordLength <= 0) { return "Word length must be greater than 0"; } // Convert input to raw data based on specified data format - switch (data_format) { + switch (dataFormat) { case "Hex": - data = Utils.from_hex(input); + data = Utils.fromHex(input); break; case "Raw": - data = Utils.str_to_byte_array(input); + data = Utils.strToByteArray(input); break; default: data = input; } // Split up into words - for (i = 0; i < data.length; i += word_length) { - var word = data.slice(i, i + word_length); + for (i = 0; i < data.length; i += wordLength) { + var word = data.slice(i, i + wordLength); // Pad word if too short - if (pad_incomplete_words && word.length < word_length){ - for (j = word.length; j < word_length; j++) { + if (padIncompleteWords && word.length < wordLength){ + for (j = word.length; j < wordLength; j++) { word.push(0); } } @@ -81,11 +81,11 @@ var Endian = { } // Convert data back to specified data format - switch (data_format) { + switch (dataFormat) { case "Hex": - return Utils.to_hex(result); + return Utils.toHex(result); case "Raw": - return Utils.byte_array_to_utf8(result); + return Utils.byteArrayToUtf8(result); default: return result; } diff --git a/src/js/operations/Entropy.js b/src/js/operations/Entropy.js index cec9b3a1..8724c7c2 100755 --- a/src/js/operations/Entropy.js +++ b/src/js/operations/Entropy.js @@ -18,14 +18,14 @@ var Entropy = { /** * Entropy operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {html} */ - run_entropy: function(input, args) { - var chunk_size = args[0], + runEntropy: function(input, args) { + var chunkSize = args[0], output = "", - entropy = Entropy._calc_entropy(input); + entropy = Entropy._calcEntropy(input); output += "Shannon entropy: " + entropy + "\n" + "

                  \n" + @@ -35,14 +35,14 @@ var Entropy = { "The following results show the entropy of chunks of the input data. Chunks with particularly high entropy could suggest encrypted or compressed sections.\n\n" + "
                  "; - var chunk_entropy = 0; - if (chunk_size !== 0) { - for (var i = 0; i < input.length; i += chunk_size) { - chunk_entropy = Entropy._calc_entropy(input.slice(i, i+chunk_size)); - output += "Bytes " + i + " to " + (i+chunk_size) + ": " + chunk_entropy + "\n"; + var chunkEntropy = 0; + if (chunkSize !== 0) { + for (var i = 0; i < input.length; i += chunkSize) { + chunkEntropy = Entropy._calcEntropy(input.slice(i, i+chunkSize)); + output += "Bytes " + i + " to " + (i+chunkSize) + ": " + chunkEntropy + "\n"; } } else { output += "Chunk size cannot be 0."; @@ -78,17 +78,17 @@ var Entropy = { /** * Frequency distribution operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {html} */ - run_freq_distrib: function (input, args) { + runFreqDistrib: function (input, args) { if (!input.length) return "No data"; var distrib = new Array(256), percentages = new Array(256), len = input.length, - show_zeroes = args[0]; + showZeroes = args[0]; // Initialise distrib to 0 for (var i = 0; i < 256; i++) { @@ -115,19 +115,19 @@ var Entropy = { "\n\nByte Percentage\n" + ""; for (i = 0; i < 256; i++) { - if (distrib[i] || show_zeroes) { + if (distrib[i] || showZeroes) { output += " " + Utils.hex(i, 2) + " (" + - Utils.pad_right(percentages[i].toFixed(2).replace(".00", "") + "%)", 8) + + Utils.padRight(percentages[i].toFixed(2).replace(".00", "") + "%)", 8) + Array(Math.ceil(percentages[i])+1).join("|") + "\n"; } } @@ -140,13 +140,13 @@ var Entropy = { * Calculates the Shannon entropy for a given chunk of data. * * @private - * @param {byte_array} data + * @param {byteArray} data * @returns {number} */ - _calc_entropy: function(data) { + _calcEntropy: function(data) { var prob = [], uniques = data.unique(), - str = Utils.byte_array_to_chars(data); + str = Utils.byteArrayToChars(data); for (var i = 0; i < uniques.length; i++) { prob.push(str.count(Utils.chr(uniques[i])) / data.length); diff --git a/src/js/operations/Extract.js b/src/js/operations/Extract.js index 4af520bf..64390a3c 100755 --- a/src/js/operations/Extract.js +++ b/src/js/operations/Extract.js @@ -14,25 +14,25 @@ var Extract = { * * @private * @param {string} input - * @param {RegExp} search_regex - * @param {RegExp} remove_regex - A regular expression defining results to remove from the + * @param {RegExp} searchRegex + * @param {RegExp} removeRegex - A regular expression defining results to remove from the * final list - * @param {boolean} include_total - Whether or not to include the total number of results + * @param {boolean} includeTotal - Whether or not to include the total number of results * @returns {string} */ - _search: function(input, search_regex, remove_regex, include_total) { + _search: function(input, searchRegex, removeRegex, includeTotal) { var output = "", total = 0, match; - while ((match = search_regex.exec(input))) { - if (remove_regex && remove_regex.test(match[0])) + while ((match = searchRegex.exec(input))) { + if (removeRegex && removeRegex.test(match[0])) continue; total++; output += match[0] + "\n"; } - if (include_total) + if (includeTotal) output = "Total found: " + total + "\n\n" + output; return output; @@ -57,13 +57,13 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_strings: function(input, args) { - var min_len = args[0] || Extract.MIN_STRING_LEN, - display_total = args[1], + runStrings: function(input, args) { + var minLen = args[0] || Extract.MIN_STRING_LEN, + displayTotal = args[1], strings = "[A-Z\\d/\\-:.,_$%'\"()<>= !\\[\\]{}@]", - regex = new RegExp(strings + "{" + min_len + ",}", "ig"); + regex = new RegExp(strings + "{" + minLen + ",}", "ig"); - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -90,37 +90,37 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_ip: function(input, args) { - var include_ipv4 = args[0], - include_ipv6 = args[1], - remove_local = args[2], - display_total = args[3], + runIp: function(input, args) { + var includeIpv4 = args[0], + includeIpv6 = args[1], + removeLocal = args[2], + displayTotal = args[3], ipv4 = "(?:(?:\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d|\\d)(?:\\/\\d{1,2})?", ipv6 = "((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|(?![\\dA-F])))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})", ips = ""; - if (include_ipv4 && include_ipv6) { + if (includeIpv4 && includeIpv6) { ips = ipv4 + "|" + ipv6; - } else if (include_ipv4) { + } else if (includeIpv4) { ips = ipv4; - } else if (include_ipv6) { + } else if (includeIpv6) { ips = ipv6; } if (ips) { var regex = new RegExp(ips, "ig"); - if (remove_local) { + if (removeLocal) { var ten = "10\\..+", oneninetwo = "192\\.168\\..+", oneseventwo = "172\\.(?:1[6-9]|2\\d|3[01])\\..+", onetwoseven = "127\\..+", - remove_regex = new RegExp("^(?:" + ten + "|" + oneninetwo + + removeRegex = new RegExp("^(?:" + ten + "|" + oneninetwo + "|" + oneseventwo + "|" + onetwoseven + ")"); - return Extract._search(input, regex, remove_regex, display_total); + return Extract._search(input, regex, removeRegex, displayTotal); } else { - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); } } else { return ""; @@ -135,11 +135,11 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_email: function(input, args) { - var display_total = args[0], + runEmail: function(input, args) { + var displayTotal = args[0], regex = /\w[-.\w]*@[-\w]+(?:\.[-\w]+)*\.[A-Z]{2,4}/ig; - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -150,11 +150,11 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_mac: function(input, args) { - var display_total = args[0], + runMac: function(input, args) { + var displayTotal = args[0], regex = /[A-F\d]{2}(?:[:-][A-F\d]{2}){5}/ig; - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -165,8 +165,8 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_urls: function(input, args) { - var display_total = args[0], + runUrls: function(input, args) { + var displayTotal = args[0], protocol = "[A-Z]+://", hostname = "[-\\w]+(?:\\.\\w[-\\w]*)+", port = ":\\d+", @@ -175,7 +175,7 @@ var Extract = { path += "(?:[.!,?]+[^.!,?;\"'<>()\\[\\]{}\\s\\x7F-\\xFF]+)*"; var regex = new RegExp(protocol + hostname + "(?:" + port + ")?(?:" + path + ")?", "ig"); - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -186,14 +186,14 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_domains: function(input, args) { - var display_total = args[0], + runDomains: function(input, args) { + var displayTotal = args[0], protocol = "https?://", hostname = "[-\\w\\.]+", tld = "\\.(?:com|net|org|biz|info|co|uk|onion|int|mobi|name|edu|gov|mil|eu|ac|ae|af|de|ca|ch|cn|cy|es|gb|hk|il|in|io|tv|me|nl|no|nz|ro|ru|tr|us|az|ir|kz|uz|pk)+", regex = new RegExp("(?:" + protocol + ")?" + hostname + tld, "ig"); - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -215,29 +215,29 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_file_paths: function(input, args) { - var include_win_path = args[0], - include_unix_path = args[1], - display_total = args[2], - win_drive = "[A-Z]:\\\\", - win_name = "[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}", - win_ext = "[A-Z\\d]{1,6}", - win_path = win_drive + "(?:" + win_name + "\\\\?)*" + win_name + - "(?:\\." + win_ext + ")?", - unix_path = "(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+", - file_paths = ""; + runFilePaths: function(input, args) { + var includeWinPath = args[0], + includeUnixPath = args[1], + displayTotal = args[2], + winDrive = "[A-Z]:\\\\", + winName = "[A-Z\\d][A-Z\\d\\- '_\\(\\)]{0,61}", + winExt = "[A-Z\\d]{1,6}", + winPath = winDrive + "(?:" + winName + "\\\\?)*" + winName + + "(?:\\." + winExt + ")?", + unixPath = "(?:/[A-Z\\d.][A-Z\\d\\-.]{0,61})+", + filePaths = ""; - if (include_win_path && include_unix_path) { - file_paths = win_path + "|" + unix_path; - } else if (include_win_path) { - file_paths = win_path; - } else if (include_unix_path) { - file_paths = unix_path; + if (includeWinPath && includeUnixPath) { + filePaths = winPath + "|" + unixPath; + } else if (includeWinPath) { + filePaths = winPath; + } else if (includeUnixPath) { + filePaths = unixPath; } - if (file_paths) { - var regex = new RegExp(file_paths, "ig"); - return Extract._search(input, regex, null, display_total); + if (filePaths) { + var regex = new RegExp(filePaths, "ig"); + return Extract._search(input, regex, null, displayTotal); } else { return ""; } @@ -251,14 +251,14 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_dates: function(input, args) { - var display_total = args[0], + runDates: function(input, args) { + var displayTotal = args[0], date1 = "(?:19|20)\\d\\d[- /.](?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])", // yyyy-mm-dd date2 = "(?:0[1-9]|[12][0-9]|3[01])[- /.](?:0[1-9]|1[012])[- /.](?:19|20)\\d\\d", // dd/mm/yyyy date3 = "(?:0[1-9]|1[012])[- /.](?:0[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\\d\\d", // mm/dd/yyyy regex = new RegExp(date1 + "|" + date2 + "|" + date3, "ig"); - return Extract._search(input, regex, null, display_total); + return Extract._search(input, regex, null, displayTotal); }, @@ -269,28 +269,28 @@ var Extract = { * @param {Object[]} args * @returns {string} */ - run_all_idents: function(input, args) { + runAllIdents: function(input, args) { var output = ""; output += "IP addresses\n"; - output += Extract.run_ip(input, [true, true, false]); + output += Extract.runIp(input, [true, true, false]); output += "\nEmail addresses\n"; - output += Extract.run_email(input, []); + output += Extract.runEmail(input, []); output += "\nMAC addresses\n"; - output += Extract.run_mac(input, []); + output += Extract.runMac(input, []); output += "\nURLs\n"; - output += Extract.run_urls(input, []); + output += Extract.runUrls(input, []); output += "\nDomain names\n"; - output += Extract.run_domains(input, []); + output += Extract.runDomains(input, []); output += "\nFile paths\n"; - output += Extract.run_file_paths(input, [true, true]); + output += Extract.runFilePaths(input, [true, true]); output += "\nDates\n"; - output += Extract.run_dates(input, []); + output += Extract.runDates(input, []); return output; }, diff --git a/src/js/operations/FileType.js b/src/js/operations/FileType.js index 6e2088f4..c265e418 100755 --- a/src/js/operations/FileType.js +++ b/src/js/operations/FileType.js @@ -12,12 +12,12 @@ var FileType = { /** * Detect File Type operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_detect: function(input, args) { - var type = FileType._magic_type(input); + runDetect: function(input, args) { + var type = FileType._magicType(input); if (!type) { return "Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"; @@ -43,26 +43,26 @@ var FileType = { /** * Scan for Embedded Files operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_scan_for_embedded_files: function(input, args) { + runScanForEmbeddedFiles: function(input, args) { var output = "Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n", type, - ignore_common = args[0], - common_exts = ["ico", "ttf", ""], - num_found = 0, - num_common_found = 0; + ignoreCommon = args[0], + commonExts = ["ico", "ttf", ""], + numFound = 0, + numCommonFound = 0; for (var i = 0; i < input.length; i++) { - type = FileType._magic_type(input.slice(i)); + type = FileType._magicType(input.slice(i)); if (type) { - if (ignore_common && common_exts.indexOf(type.ext) > -1) { - num_common_found++; + if (ignoreCommon && commonExts.indexOf(type.ext) > -1) { + numCommonFound++; continue; } - num_found++; + numFound++; output += "\nOffset " + i + " (0x" + Utils.hex(i) + "):\n" + " File extension: " + type.ext + "\n" + " MIME type: " + type.mime + "\n"; @@ -73,13 +73,13 @@ var FileType = { } } - if (num_found === 0) { + if (numFound === 0) { output += "\nNo embedded files were found."; } - if (num_common_found > 0) { - output += "\n\n" + num_common_found; - output += num_common_found === 1 ? + if (numCommonFound > 0) { + output += "\n\n" + numCommonFound; + output += numCommonFound === 1 ? " file type was detected that has a common byte sequence. This is likely to be a false positive." : " file types were detected that have common byte sequences. These are likely to be false positives."; output += " Run this operation with the 'Ignore common byte sequences' option unchecked to see details."; @@ -94,13 +94,13 @@ var FileType = { * extension and mime type. * * @private - * @param {byte_array} buf + * @param {byteArray} buf * @returns {Object} type * @returns {string} type.ext - File extension * @returns {string} type.mime - Mime type * @returns {string} [type.desc] - Description */ - _magic_type: function (buf) { + _magicType: function (buf) { if (!(buf && buf.length > 1)) { return null; } diff --git a/src/js/operations/HTML.js b/src/js/operations/HTML.js index 0cb7c2dc..c07d43f0 100755 --- a/src/js/operations/HTML.js +++ b/src/js/operations/HTML.js @@ -27,35 +27,35 @@ var HTML = { * @param {Object[]} args * @returns {string} */ - run_to_entity: function(input, args) { - var convert_all = args[0], + runToEntity: function(input, args) { + var convertAll = args[0], numeric = args[1] === "Numeric entities", hexa = args[1] === "Hex entities"; - var charcodes = Utils.str_to_charcode(input); + var charcodes = Utils.strToCharcode(input); var output = ""; for (var i = 0; i < charcodes.length; i++) { - if (convert_all && numeric) { + if (convertAll && numeric) { output += "&#" + charcodes[i] + ";"; - } else if (convert_all && hexa) { + } else if (convertAll && hexa) { output += "&#x" + Utils.hex(charcodes[i]) + ";"; - } else if (convert_all) { - output += HTML._byte_to_entity[charcodes[i]] || "&#" + charcodes[i] + ";"; + } else if (convertAll) { + output += HTML._byteToEntity[charcodes[i]] || "&#" + charcodes[i] + ";"; } else if (numeric) { - if (charcodes[i] > 255 || HTML._byte_to_entity.hasOwnProperty(charcodes[i])) { + if (charcodes[i] > 255 || HTML._byteToEntity.hasOwnProperty(charcodes[i])) { output += "&#" + charcodes[i] + ";"; } else { output += Utils.chr(charcodes[i]); } } else if (hexa) { - if (charcodes[i] > 255 || HTML._byte_to_entity.hasOwnProperty(charcodes[i])) { + if (charcodes[i] > 255 || HTML._byteToEntity.hasOwnProperty(charcodes[i])) { output += "&#x" + Utils.hex(charcodes[i]) + ";"; } else { output += Utils.chr(charcodes[i]); } } else { - output += HTML._byte_to_entity[charcodes[i]] || ( + output += HTML._byteToEntity[charcodes[i]] || ( charcodes[i] > 255 ? "&#" + charcodes[i] + ";" : Utils.chr(charcodes[i]) @@ -73,7 +73,7 @@ var HTML = { * @param {Object[]} args * @returns {string} */ - run_from_entity: function(input, args) { + runFromEntity: function(input, args) { var regex = /&(#?x?[a-zA-Z0-9]{1,8});/g, output = "", m, @@ -85,7 +85,7 @@ var HTML = { output += input[i++]; // Add match - var bite = HTML._entity_to_byte[m[1]]; + var bite = HTML._entityToByte[m[1]]; if (bite) { output += Utils.chr(bite); } else if (!bite && m[1][0] === "#" && m[1].length > 1 && /^#\d{1,5}$/.test(m[1])) { @@ -130,17 +130,17 @@ var HTML = { * @param {Object[]} args * @returns {string} */ - run_strip_tags: function(input, args) { - var remove_indentation = args[0], - remove_line_breaks = args[1]; + runStripTags: function(input, args) { + var removeIndentation = args[0], + removeLineBreaks = args[1]; - input = Utils.strip_html_tags(input); + input = Utils.stripHtmlTags(input); - if (remove_indentation) { + if (removeIndentation) { input = input.replace(/\n[ \f\t]+/g, "\n"); } - if (remove_line_breaks) { + if (removeLineBreaks) { input = input.replace(/^\s*\n/, "") // first line .replace(/(\n\s*){2,}/g, "\n"); // all others } @@ -156,7 +156,7 @@ var HTML = { * @param {Object[]} args * @returns {html} */ - run_parse_colour_code: function(input, args) { + runParseColourCode: function(input, args) { var m = null, r = 0, g = 0, b = 0, a = 1; @@ -177,7 +177,7 @@ var HTML = { var h_ = parseFloat(m[1]) / 360, s_ = parseFloat(m[2]) / 100, l_ = parseFloat(m[3]) / 100, - rgb_ = HTML._hsl_to_rgb(h_, s_, l_); + rgb_ = HTML._hslToRgb(h_, s_, l_); r = rgb_[0]; g = rgb_[1]; @@ -195,7 +195,7 @@ var HTML = { b = Math.round(255 * (1 - y_) * (1 - k_)); } - var hsl_ = HTML._rgb_to_hsl(r, g, b), + var hsl_ = HTML._rgbToHsl(r, g, b), h = Math.round(hsl_[0] * 360), s = Math.round(hsl_[1] * 100), l = Math.round(hsl_[2] * 100), @@ -210,9 +210,9 @@ var HTML = { k = k.toFixed(2); var hex = "#" + - Utils.pad_left(Math.round(r).toString(16), 2) + - Utils.pad_left(Math.round(g).toString(16), 2) + - Utils.pad_left(Math.round(b).toString(16), 2), + Utils.padLeft(Math.round(r).toString(16), 2) + + Utils.padLeft(Math.round(g).toString(16), 2) + + Utils.padLeft(Math.round(b).toString(16), 2), rgb = "rgb(" + r + ", " + g + ", " + b + ")", rgba = "rgba(" + r + ", " + g + ", " + b + ", " + a + ")", hsl = "hsl(" + h + ", " + s + "%, " + l + "%)", @@ -237,7 +237,7 @@ var HTML = { var color = e.color.toRGB();\ document.getElementById('input-text').value = 'rgba(' +\ color.r + ', ' + color.g + ', ' + color.b + ', ' + color.a + ')';\ - window.app.auto_bake();\ + window.app.autoBake();\ });\ "; }, @@ -246,7 +246,7 @@ var HTML = { /** * Converts an HSL color value to RGB. Conversion formula - * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * adapted from http://en.wikipedia.org/wiki/HSL_colorSpace. * Assumes h, s, and l are contained in the set [0, 1] and * returns r, g, and b in the set [0, 255]. * @@ -258,7 +258,7 @@ var HTML = { * @param {number} l - The lightness * @return {Array} The RGB representation */ - _hsl_to_rgb: function(h, s, l){ + _hslToRgb: function(h, s, l){ var r, g, b; if (s === 0){ @@ -286,7 +286,7 @@ var HTML = { /** * Converts an RGB color value to HSL. Conversion formula - * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * adapted from http://en.wikipedia.org/wiki/HSL_colorSpace. * Assumes r, g, and b are contained in the set [0, 255] and * returns h, s, and l in the set [0, 1]. * @@ -298,7 +298,7 @@ var HTML = { * @param {number} b - The blue color value * @return {Array} The HSL representation */ - _rgb_to_hsl: function(r, g, b) { + _rgbToHsl: function(r, g, b) { r /= 255; g /= 255; b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b), @@ -327,7 +327,7 @@ var HTML = { * @private * @constant */ - _byte_to_entity: { + _byteToEntity: { 34 : """, 38 : "&", 39 : "'", @@ -591,7 +591,7 @@ var HTML = { * @private * @constant */ - _entity_to_byte : { + _entityToByte : { "quot" : 34, "amp" : 38, "apos" : 39, diff --git a/src/js/operations/HTTP.js b/src/js/operations/HTTP.js index 5b3dcf2d..23ab44e8 100755 --- a/src/js/operations/HTTP.js +++ b/src/js/operations/HTTP.js @@ -18,11 +18,11 @@ var HTTP = { * @param {Object[]} args * @returns {string} */ - run_strip_headers: function(input, args) { - var header_end = input.indexOf("\r\n\r\n") + - (header_end < 0) ? input.indexOf("\n\n") + 2 : header_end + 4; + runStripHeaders: function(input, args) { + var headerEnd = input.indexOf("\r\n\r\n") + + (headerEnd < 0) ? input.indexOf("\n\n") + 2 : headerEnd + 4; - return (header_end < 2) ? input : input.slice(header_end, input.length); + return (headerEnd < 2) ? input : input.slice(headerEnd, input.length); }, @@ -33,8 +33,8 @@ var HTTP = { * @param {Object[]} args * @returns {string} */ - run_parse_user_agent: function(input, args) { - var ua = UAS_parser.parse(input); + runParseUserAgent: function(input, args) { + var ua = UAS_parser.parse(input); // eslint-disable-line camelcase return "Type: " + ua.type + "\n" + "Family: " + ua.uaFamily + "\n" + diff --git a/src/js/operations/Hash.js b/src/js/operations/Hash.js index 49725bfd..2d43e3de 100755 --- a/src/js/operations/Hash.js +++ b/src/js/operations/Hash.js @@ -18,8 +18,8 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_md2: function (input, args) { - return Utils.to_hex_fast(CryptoApi.hash("md2", input, {})); + runMD2: function (input, args) { + return Utils.toHexFast(CryptoApi.hash("md2", input, {})); }, @@ -30,8 +30,8 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_md4: function (input, args) { - return Utils.to_hex_fast(CryptoApi.hash("md4", input, {})); + runMD4: function (input, args) { + return Utils.toHexFast(CryptoApi.hash("md4", input, {})); }, @@ -42,7 +42,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_md5: function (input, args) { + runMD5: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); // Cast to WordArray return CryptoJS.MD5(input).toString(CryptoJS.enc.Hex); }, @@ -55,8 +55,8 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha0: function (input, args) { - return Utils.to_hex_fast(CryptoApi.hash("sha0", input, {})); + runSHA0: function (input, args) { + return Utils.toHexFast(CryptoApi.hash("sha0", input, {})); }, @@ -67,7 +67,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha1: function (input, args) { + runSHA1: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.SHA1(input).toString(CryptoJS.enc.Hex); }, @@ -80,7 +80,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha224: function (input, args) { + runSHA224: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.SHA224(input).toString(CryptoJS.enc.Hex); }, @@ -93,7 +93,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha256: function (input, args) { + runSHA256: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.SHA256(input).toString(CryptoJS.enc.Hex); }, @@ -106,7 +106,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha384: function (input, args) { + runSHA384: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.SHA384(input).toString(CryptoJS.enc.Hex); }, @@ -119,7 +119,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha512: function (input, args) { + runSHA512: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.SHA512(input).toString(CryptoJS.enc.Hex); }, @@ -138,11 +138,11 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_sha3: function (input, args) { + runSHA3: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); - var sha3_length = args[0], + var sha3Length = args[0], options = { - outputLength: parseInt(sha3_length, 10) + outputLength: parseInt(sha3Length, 10) }; return CryptoJS.SHA3(input, options).toString(CryptoJS.enc.Hex); }, @@ -155,7 +155,7 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_ripemd160: function (input, args) { + runRIPEMD160: function (input, args) { input = CryptoJS.enc.Latin1.parse(input); return CryptoJS.RIPEMD160(input).toString(CryptoJS.enc.Hex); }, @@ -174,8 +174,8 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_hmac: function (input, args) { - var hash_func = args[1]; + runHMAC: function (input, args) { + var hashFunc = args[1]; input = CryptoJS.enc.Latin1.parse(input); var execute = { "MD5": CryptoJS.HmacMD5(input, args[0]), @@ -187,7 +187,7 @@ var Hash = { "SHA3": CryptoJS.HmacSHA3(input, args[0]), "RIPEMD-160": CryptoJS.HmacRIPEMD160(input, args[0]), }; - return execute[hash_func].toString(CryptoJS.enc.Hex); + return execute[hashFunc].toString(CryptoJS.enc.Hex); }, @@ -198,29 +198,29 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_all: function (input, args) { - var byte_array = Utils.str_to_byte_array(input), - output = "MD2: " + Hash.run_md2(input, []) + - "\nMD4: " + Hash.run_md4(input, []) + - "\nMD5: " + Hash.run_md5(input, []) + - "\nSHA0: " + Hash.run_sha0(input, []) + - "\nSHA1: " + Hash.run_sha1(input, []) + - "\nSHA2 224: " + Hash.run_sha224(input, []) + - "\nSHA2 256: " + Hash.run_sha256(input, []) + - "\nSHA2 384: " + Hash.run_sha384(input, []) + - "\nSHA2 512: " + Hash.run_sha512(input, []) + - "\nSHA3 224: " + Hash.run_sha3(input, ["224"]) + - "\nSHA3 256: " + Hash.run_sha3(input, ["256"]) + - "\nSHA3 384: " + Hash.run_sha3(input, ["384"]) + - "\nSHA3 512: " + Hash.run_sha3(input, ["512"]) + - "\nRIPEMD-160: " + Hash.run_ripemd160(input, []) + + runAll: function (input, args) { + var byteArray = Utils.strToByteArray(input), + output = "MD2: " + Hash.runMD2(input, []) + + "\nMD4: " + Hash.runMD4(input, []) + + "\nMD5: " + Hash.runMD5(input, []) + + "\nSHA0: " + Hash.runSHA0(input, []) + + "\nSHA1: " + Hash.runSHA1(input, []) + + "\nSHA2 224: " + Hash.runSHA224(input, []) + + "\nSHA2 256: " + Hash.runSHA256(input, []) + + "\nSHA2 384: " + Hash.runSHA384(input, []) + + "\nSHA2 512: " + Hash.runSHA512(input, []) + + "\nSHA3 224: " + Hash.runSHA3(input, ["224"]) + + "\nSHA3 256: " + Hash.runSHA3(input, ["256"]) + + "\nSHA3 384: " + Hash.runSHA3(input, ["384"]) + + "\nSHA3 512: " + Hash.runSHA3(input, ["512"]) + + "\nRIPEMD-160: " + Hash.runRIPEMD160(input, []) + "\n\nChecksums:" + - "\nFletcher-8: " + Checksum.run_fletcher8(byte_array, []) + - "\nFletcher-16: " + Checksum.run_fletcher16(byte_array, []) + - "\nFletcher-32: " + Checksum.run_fletcher32(byte_array, []) + - "\nFletcher-64: " + Checksum.run_fletcher64(byte_array, []) + - "\nAdler-32: " + Checksum.run_adler32(byte_array, []) + - "\nCRC-32: " + Checksum.run_crc32(byte_array, []); + "\nFletcher-8: " + Checksum.runFletcher8(byteArray, []) + + "\nFletcher-16: " + Checksum.runFletcher16(byteArray, []) + + "\nFletcher-32: " + Checksum.runFletcher32(byteArray, []) + + "\nFletcher-64: " + Checksum.runFletcher64(byteArray, []) + + "\nAdler-32: " + Checksum.runAdler32(byteArray, []) + + "\nCRC-32: " + Checksum.runCRC32(byteArray, []); return output; }, @@ -233,38 +233,38 @@ var Hash = { * @param {Object[]} args * @returns {string} */ - run_analyse: function(input, args) { + runAnalyse: function(input, args) { input = input.replace(/\s/g, ""); var output = "", - byte_length = input.length / 2, - bit_length = byte_length * 8, - possible_hash_functions = []; + byteLength = input.length / 2, + bitLength = byteLength * 8, + possibleHashFunctions = []; if (!/^[a-f0-9]+$/i.test(input)) { return "Invalid hash"; } output += "Hash length: " + input.length + "\n" + - "Byte length: " + byte_length + "\n" + - "Bit length: " + bit_length + "\n\n" + + "Byte length: " + byteLength + "\n" + + "Bit length: " + bitLength + "\n\n" + "Based on the length, this hash could have been generated by one of the following hashing functions:\n"; - switch (bit_length) { + switch (bitLength) { case 4: - possible_hash_functions = [ + possibleHashFunctions = [ "Fletcher-4", "Luhn algorithm", "Verhoeff algorithm", ]; break; case 8: - possible_hash_functions = [ + possibleHashFunctions = [ "Fletcher-8", ]; break; case 16: - possible_hash_functions = [ + possibleHashFunctions = [ "BSD checksum", "CRC-16", "SYSV checksum", @@ -272,21 +272,21 @@ var Hash = { ]; break; case 32: - possible_hash_functions = [ + possibleHashFunctions = [ "CRC-32", "Fletcher-32", "Adler-32", ]; break; case 64: - possible_hash_functions = [ + possibleHashFunctions = [ "CRC-64", "RIPEMD-64", "SipHash", ]; break; case 128: - possible_hash_functions = [ + possibleHashFunctions = [ "MD5", "MD4", "MD2", @@ -297,7 +297,7 @@ var Hash = { ]; break; case 160: - possible_hash_functions = [ + possibleHashFunctions = [ "SHA-1", "SHA-0", "FSB-160", @@ -308,13 +308,13 @@ var Hash = { ]; break; case 192: - possible_hash_functions = [ + possibleHashFunctions = [ "Tiger", "HAVAL-192", ]; break; case 224: - possible_hash_functions = [ + possibleHashFunctions = [ "SHA-224", "SHA3-224", "ECOH-224", @@ -323,7 +323,7 @@ var Hash = { ]; break; case 256: - possible_hash_functions = [ + possibleHashFunctions = [ "SHA-256", "SHA3-256", "BLAKE-256", @@ -338,12 +338,12 @@ var Hash = { ]; break; case 320: - possible_hash_functions = [ + possibleHashFunctions = [ "RIPEMD-320", ]; break; case 384: - possible_hash_functions = [ + possibleHashFunctions = [ "SHA-384", "SHA3-384", "ECOH-384", @@ -351,7 +351,7 @@ var Hash = { ]; break; case 512: - possible_hash_functions = [ + possibleHashFunctions = [ "SHA-512", "SHA3-512", "BLAKE-512", @@ -366,18 +366,18 @@ var Hash = { ]; break; case 1024: - possible_hash_functions = [ + possibleHashFunctions = [ "Fowler-Noll-Vo", ]; break; default: - possible_hash_functions = [ + possibleHashFunctions = [ "Unknown" ]; break; } - return output + possible_hash_functions.join("\n"); + return output + possibleHashFunctions.join("\n"); }, }; diff --git a/src/js/operations/Hexdump.js b/src/js/operations/Hexdump.js index a4153811..fba95414 100755 --- a/src/js/operations/Hexdump.js +++ b/src/js/operations/Hexdump.js @@ -30,14 +30,14 @@ var Hexdump = { /** * To Hexdump operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to: function(input, args) { + runTo: function(input, args) { var length = args[0] || Hexdump.WIDTH; - var upper_case = args[1]; - var include_final_length = args[2]; + var upperCase = args[1]; + var includeFinalLength = args[2]; var output = "", padding = 2; for (var i = 0; i < input.length; i += length) { @@ -47,18 +47,18 @@ var Hexdump = { hexa += Utils.hex(buff[j], padding) + " "; } - var line_no = Utils.hex(i, 8); + var lineNo = Utils.hex(i, 8); - if (upper_case) { + if (upperCase) { hexa = hexa.toUpperCase(); - line_no = line_no.toUpperCase(); + lineNo = lineNo.toUpperCase(); } - output += line_no + " " + - Utils.pad_right(hexa, (length*(padding+1))) + - " |" + Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(buff)), buff.length) + "|\n"; + output += lineNo + " " + + Utils.padRight(hexa, (length*(padding+1))) + + " |" + Utils.padRight(Utils.printable(Utils.byteArrayToChars(buff)), buff.length) + "|\n"; - if (include_final_length && i+buff.length === input.length) { + if (includeFinalLength && i+buff.length === input.length) { output += Utils.hex(i+buff.length, 8) + "\n"; } } @@ -72,15 +72,15 @@ var Hexdump = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from: function(input, args) { + runFrom: function(input, args) { var output = [], regex = /^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/igm, block, line; while ((block = regex.exec(input))) { - line = Utils.from_hex(block[1].replace(/-/g, " ")); + line = Utils.fromHex(block[1].replace(/-/g, " ")); for (var i = 0; i < line.length; i++) { output.push(line[i]); } @@ -90,7 +90,7 @@ var Hexdump = { var w = (width - 13) / 4; // w should be the specified width of the hexdump and therefore a round number if (Math.floor(w) !== w || input.indexOf("\r") !== -1 || output.indexOf(13) !== -1) { - app.options.attempt_highlight = false; + app.options.attemptHighlight = false; } return output; }, @@ -105,7 +105,7 @@ var Hexdump = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_to: function(pos, args) { + highlightTo: function(pos, args) { // Calculate overall selection var w = args[0] || 16, width = 14 + (w*4), @@ -125,32 +125,32 @@ var Hexdump = { pos[0].end = line*width + 10 + offset*3 - 1; // Set up multiple selections for bytes - var start_line_num = Math.floor(pos[0].start / width); - var end_line_num = Math.floor(pos[0].end / width); + var startLineNum = Math.floor(pos[0].start / width); + var endLineNum = Math.floor(pos[0].end / width); - if (start_line_num === end_line_num) { + if (startLineNum === endLineNum) { pos.push(pos[0]); } else { start = pos[0].start; - end = (start_line_num+1) * width - w - 5; + end = (startLineNum+1) * width - w - 5; pos.push({ start: start, end: end }); while (end < pos[0].end) { - start_line_num++; - start = start_line_num * width + 10; - end = (start_line_num+1) * width - w - 5; + startLineNum++; + start = startLineNum * width + 10; + end = (startLineNum+1) * width - w - 5; if (end > pos[0].end) end = pos[0].end; pos.push({ start: start, end: end }); } } // Set up multiple selections for ASCII - var len = pos.length, line_num = 0; + var len = pos.length, lineNum = 0; start = 0; end = 0; for (var i = 1; i < len; i++) { - line_num = Math.floor(pos[i].start / width); - start = (((pos[i].start - (line_num * width)) - 10) / 3) + (width - w -2) + (line_num * width); - end = (((pos[i].end + 1 - (line_num * width)) - 10) / 3) + (width - w -2) + (line_num * width); + lineNum = Math.floor(pos[i].start / width); + start = (((pos[i].start - (lineNum * width)) - 10) / 3) + (width - w -2) + (lineNum * width); + end = (((pos[i].end + 1 - (lineNum * width)) - 10) / 3) + (width - w -2) + (lineNum * width); pos.push({ start: start, end: end }); } return pos; @@ -166,7 +166,7 @@ var Hexdump = { * @param {Object[]} args * @returns {Object[]} pos */ - highlight_from: function(pos, args) { + highlightFrom: function(pos, args) { var w = args[0] || 16; var width = 14 + (w*4); diff --git a/src/js/operations/IP.js b/src/js/operations/IP.js index 03155f84..122027b0 100755 --- a/src/js/operations/IP.js +++ b/src/js/operations/IP.js @@ -34,26 +34,26 @@ var IP = { * @param {Object[]} args * @returns {string} */ - run_parse_ip_range: function (input, args) { - var include_network_info = args[0], - enumerate_addresses = args[1], - allow_large_list = args[2]; + runParseIpRange: function (input, args) { + var includeNetworkInfo = args[0], + enumerateAddresses = args[1], + allowLargeList = args[2]; // Check what type of input we are looking at - var ipv4_cidr_regex = /^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/, - ipv4_range_regex = /^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/, - ipv6_cidr_regex = /^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i, - ipv6_range_regex = /^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i, + var ipv4CidrRegex = /^\s*((?:\d{1,3}\.){3}\d{1,3})\/(\d\d?)\s*$/, + ipv4RangeRegex = /^\s*((?:\d{1,3}\.){3}\d{1,3})\s*-\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/, + ipv6CidrRegex = /^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\/(\d\d?\d?)\s*$/i, + ipv6RangeRegex = /^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i, match; - if ((match = ipv4_cidr_regex.exec(input))) { - return IP._ipv4_cidr_range(match, include_network_info, enumerate_addresses, allow_large_list); - } else if ((match = ipv4_range_regex.exec(input))) { - return IP._ipv4_hyphenated_range(match, include_network_info, enumerate_addresses, allow_large_list); - } else if ((match = ipv6_cidr_regex.exec(input))) { - return IP._ipv6_cidr_range(match, include_network_info); - } else if ((match = ipv6_range_regex.exec(input))) { - return IP._ipv6_hyphenated_range(match, include_network_info); + if ((match = ipv4CidrRegex.exec(input))) { + return IP._ipv4CidrRange(match, includeNetworkInfo, enumerateAddresses, allowLargeList); + } else if ((match = ipv4RangeRegex.exec(input))) { + return IP._ipv4HyphenatedRange(match, includeNetworkInfo, enumerateAddresses, allowLargeList); + } else if ((match = ipv6CidrRegex.exec(input))) { + return IP._ipv6CidrRange(match, includeNetworkInfo); + } else if ((match = ipv6RangeRegex.exec(input))) { + return IP._ipv6HyphenatedRange(match, includeNetworkInfo); } else { return "Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported."; } @@ -64,12 +64,12 @@ var IP = { * @constant * @default */ - IPv4_REGEX: /^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/, + IPV4_REGEX: /^\s*((?:\d{1,3}\.){3}\d{1,3})\s*$/, /** * @constant * @default */ - IPv6_REGEX: /^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i, + IPV6_REGEX: /^\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i, /** * Parse IPv6 address operation. @@ -78,14 +78,14 @@ var IP = { * @param {Object[]} args * @returns {string} */ - run_parse_ipv6: function (input, args) { + runParseIpv6: function (input, args) { var match, output = ""; - if ((match = IP.IPv6_REGEX.exec(input))) { - var ipv6 = IP._str_to_ipv6(match[1]), - longhand = IP._ipv6_to_str(ipv6), - shorthand = IP._ipv6_to_str(ipv6, true); + if ((match = IP.IPV6_REGEX.exec(input))) { + var ipv6 = IP._strToIpv6(match[1]), + longhand = IP._ipv6ToStr(ipv6), + shorthand = IP._ipv6ToStr(ipv6, true); output += "Longhand: " + longhand + "\nShorthand: " + shorthand + "\n"; @@ -102,13 +102,13 @@ var IP = { ipv6[3] === 0 && ipv6[4] === 0 && ipv6[5] === 0xffff) { // IPv4-mapped IPv6 address output += "\nIPv4-mapped IPv6 address detected. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address."; - output += "\nMapped IPv4 address: " + IP._ipv4_to_str((ipv6[6] << 16) + ipv6[7]); + output += "\nMapped IPv4 address: " + IP._ipv4ToStr((ipv6[6] << 16) + ipv6[7]); output += "\nIPv4-mapped IPv6 addresses range: ::ffff:0:0/96"; } else if (ipv6[0] === 0 && ipv6[1] === 0 && ipv6[2] === 0 && ipv6[3] === 0 && ipv6[4] === 0xffff && ipv6[5] === 0) { // IPv4-translated address output += "\nIPv4-translated address detected. Used by Stateless IP/ICMP Translation (SIIT). See RFCs 6145 and 6052 for more details."; - output += "\nTranslated IPv4 address: " + IP._ipv4_to_str((ipv6[6] << 16) + ipv6[7]); + output += "\nTranslated IPv4 address: " + IP._ipv4ToStr((ipv6[6] << 16) + ipv6[7]); output += "\nIPv4-translated addresses range: ::ffff:0:0:0/96"; } else if (ipv6[0] === 0x100) { // Discard prefix per RFC 6666 @@ -118,50 +118,50 @@ var IP = { ipv6[3] === 0 && ipv6[4] === 0 && ipv6[5] === 0) { // IPv4/IPv6 translation per RFC 6052 output += "\n'Well-Known' prefix for IPv4/IPv6 translation detected. See RFC 6052 for more details."; - output += "\nTranslated IPv4 address: " + IP._ipv4_to_str((ipv6[6] << 16) + ipv6[7]); + output += "\nTranslated IPv4 address: " + IP._ipv4ToStr((ipv6[6] << 16) + ipv6[7]); output += "\n'Well-Known prefix range: 64:ff9b::/96"; } else if (ipv6[0] === 0x2001 && ipv6[1] === 0) { // Teredo tunneling output += "\nTeredo tunneling IPv6 address detected\n"; - var server_ipv4 = (ipv6[2] << 16) + ipv6[3], - udp_port = (~ipv6[5]) & 0xffff, - client_ipv4 = ~((ipv6[6] << 16) + ipv6[7]), - flag_cone = (ipv6[4] >>> 15) & 1, - flag_r = (ipv6[4] >>> 14) & 1, - flag_random1 = (ipv6[4] >>> 10) & 15, - flag_ug = (ipv6[4] >>> 8) & 3, - flag_random2 = ipv6[4] & 255; + var serverIpv4 = (ipv6[2] << 16) + ipv6[3], + udpPort = (~ipv6[5]) & 0xffff, + clientIpv4 = ~((ipv6[6] << 16) + ipv6[7]), + flagCone = (ipv6[4] >>> 15) & 1, + flagR = (ipv6[4] >>> 14) & 1, + flagRandom1 = (ipv6[4] >>> 10) & 15, + flagUg = (ipv6[4] >>> 8) & 3, + flagRandom2 = ipv6[4] & 255; - output += "\nServer IPv4 address: " + IP._ipv4_to_str(server_ipv4) + - "\nClient IPv4 address: " + IP._ipv4_to_str(client_ipv4) + - "\nClient UDP port: " + udp_port + + output += "\nServer IPv4 address: " + IP._ipv4ToStr(serverIpv4) + + "\nClient IPv4 address: " + IP._ipv4ToStr(clientIpv4) + + "\nClient UDP port: " + udpPort + "\nFlags:" + - "\n\tCone: " + flag_cone; + "\n\tCone: " + flagCone; - if (flag_cone) { + if (flagCone) { output += " (Client is behind a cone NAT)"; } else { output += " (Client is not behind a cone NAT)"; } - output += "\n\tR: " + flag_r; + output += "\n\tR: " + flagR; - if (flag_r) { + if (flagR) { output += " Error: This flag should be set to 0. See RFC 5991 and RFC 4380."; } - output += "\n\tRandom1: " + Utils.bin(flag_random1, 4) + - "\n\tUG: " + Utils.bin(flag_ug, 2); + output += "\n\tRandom1: " + Utils.bin(flagRandom1, 4) + + "\n\tUG: " + Utils.bin(flagUg, 2); - if (flag_ug) { + if (flagUg) { output += " Error: This flag should be set to 00. See RFC 4380."; } - output += "\n\tRandom2: " + Utils.bin(flag_random2, 8); + output += "\n\tRandom2: " + Utils.bin(flagRandom2, 8); - if (!flag_r && !flag_ug && flag_random1 && flag_random2) { + if (!flagR && !flagUg && flagRandom1 && flagRandom2) { output += "\n\nThis is a valid Teredo address which complies with RFC 4380 and RFC 5991."; - } else if (!flag_r && !flag_ug) { + } else if (!flagR && !flagUg) { output += "\n\nThis is a valid Teredo address which complies with RFC 4380, however it does not comply with RFC 5991 (Teredo Security Updates) as there are no randomised bits in the flag field."; } else { output += "\n\nThis is an invalid Teredo address."; @@ -187,15 +187,15 @@ var IP = { output += "\n6to4 transition IPv6 address detected. See RFC 3056 for more details." + "\n6to4 prefix range: 2002::/16"; - var v4_addr = IP._ipv4_to_str((ipv6[1] << 16) + ipv6[2]), - sla_id = ipv6[3], - interface_id_str = ipv6[4].toString(16) + ipv6[5].toString(16) + ipv6[6].toString(16) + ipv6[7].toString(16), - interface_id = new BigInteger(interface_id_str, 16); + var v4Addr = IP._ipv4ToStr((ipv6[1] << 16) + ipv6[2]), + slaId = ipv6[3], + interfaceIdStr = ipv6[4].toString(16) + ipv6[5].toString(16) + ipv6[6].toString(16) + ipv6[7].toString(16), + interfaceId = new BigInteger(interfaceIdStr, 16); - output += "\n\nEncapsulated IPv4 address: " + v4_addr + - "\nSLA ID: " + sla_id + - "\nInterface ID (base 16): " + interface_id_str + - "\nInterface ID (base 10): " + interface_id.toString(); + output += "\n\nEncapsulated IPv4 address: " + v4Addr + + "\nSLA ID: " + slaId + + "\nInterface ID (base 16): " + interfaceIdStr + + "\nInterface ID (base 10): " + interfaceId.toString(); } else if (ipv6[0] >= 0xfc00 && ipv6[0] <= 0xfdff) { // Unique local address output += "\nThis is a unique local address comparable to the IPv4 private addresses 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. See RFC 4193 for more details."; @@ -229,9 +229,9 @@ var IP = { * @param {Object[]} args * @returns {string} */ - run_change_ip_format: function(input, args) { - var in_format = args[0], - out_format = args[1], + runChangeIpFormat: function(input, args) { + var inFormat = args[0], + outFormat = args[1], lines = input.split("\n"), output = "", j = 0; @@ -239,54 +239,54 @@ var IP = { for (var i = 0; i < lines.length; i++) { if (lines[i] === "") continue; - var ba_ip = []; + var baIp = []; - if (in_format === out_format) { + if (inFormat === outFormat) { output += lines[i] + "\n"; continue; } // Convert to byte array IP from input format - switch (in_format) { + switch (inFormat) { case "Dotted Decimal": var octets = lines[i].split("."); for (j = 0; j < octets.length; j++) { - ba_ip.push(parseInt(octets[j], 10)); + baIp.push(parseInt(octets[j], 10)); } break; case "Decimal": var decimal = lines[i].toString(); - ba_ip.push(decimal >> 24 & 255); - ba_ip.push(decimal >> 16 & 255); - ba_ip.push(decimal >> 8 & 255); - ba_ip.push(decimal & 255); + baIp.push(decimal >> 24 & 255); + baIp.push(decimal >> 16 & 255); + baIp.push(decimal >> 8 & 255); + baIp.push(decimal & 255); break; case "Hex": - ba_ip = Utils.hex_to_byte_array(lines[i]); + baIp = Utils.hexToByteArray(lines[i]); break; default: throw "Unsupported input IP format"; } // Convert byte array IP to output format - switch (out_format) { + switch (outFormat) { case "Dotted Decimal": - var dd_ip = ""; - for (j = 0; j < ba_ip.length; j++) { - dd_ip += ba_ip[j] + "."; + var ddIp = ""; + for (j = 0; j < baIp.length; j++) { + ddIp += baIp[j] + "."; } - output += dd_ip.slice(0, dd_ip.length-1) + "\n"; + output += ddIp.slice(0, ddIp.length-1) + "\n"; break; case "Decimal": - var dec_ip = ((ba_ip[0] << 24) | (ba_ip[1] << 16) | (ba_ip[2] << 8) | ba_ip[3]) >>> 0; - output += dec_ip.toString() + "\n"; + var decIp = ((baIp[0] << 24) | (baIp[1] << 16) | (baIp[2] << 8) | baIp[3]) >>> 0; + output += decIp.toString() + "\n"; break; case "Hex": - var hex_ip = ""; - for (j = 0; j < ba_ip.length; j++) { - hex_ip += Utils.hex(ba_ip[j]); + var hexIp = ""; + for (j = 0; j < baIp.length; j++) { + hexIp += Utils.hex(baIp[j]); } - output += hex_ip + "\n"; + output += hexIp + "\n"; break; default: throw "Unsupported output IP format"; @@ -320,20 +320,20 @@ var IP = { * @param {Object[]} args * @returns {string} */ - run_group_ips: function(input, args) { - var delim = Utils.char_rep[args[0]], + runGroupIps: function(input, args) { + var delim = Utils.charRep[args[0]], cidr = args[1], - only_subnets = args[2], - ipv4_mask = cidr < 32 ? ~(0xFFFFFFFF >>> cidr) : 0xFFFFFFFF, - ipv6_mask = IP._gen_ipv6_mask(cidr), + onlySubnets = args[2], + ipv4Mask = cidr < 32 ? ~(0xFFFFFFFF >>> cidr) : 0xFFFFFFFF, + ipv6Mask = IP._genIpv6Mask(cidr), ips = input.split(delim), - ipv4_networks = {}, - ipv6_networks = {}, + ipv4Networks = {}, + ipv6Networks = {}, match = null, output = "", ip = null, network = null, - network_str = ""; + networkStr = ""; if (cidr < 0 || cidr > 127) { return "CIDR must be less than 32 for IPv4 or 128 for IPv6"; @@ -341,57 +341,57 @@ var IP = { // Parse all IPs and add to network dictionary for (var i = 0; i < ips.length; i++) { - if ((match = IP.IPv4_REGEX.exec(ips[i]))) { - ip = IP._str_to_ipv4(match[1]) >>> 0; - network = ip & ipv4_mask; + if ((match = IP.IPV4_REGEX.exec(ips[i]))) { + ip = IP._strToIpv4(match[1]) >>> 0; + network = ip & ipv4Mask; - if (ipv4_networks.hasOwnProperty(network)) { - ipv4_networks[network].push(ip); + if (ipv4Networks.hasOwnProperty(network)) { + ipv4Networks[network].push(ip); } else { - ipv4_networks[network] = [ip]; + ipv4Networks[network] = [ip]; } - } else if ((match = IP.IPv6_REGEX.exec(ips[i]))) { - ip = IP._str_to_ipv6(match[1]); + } else if ((match = IP.IPV6_REGEX.exec(ips[i]))) { + ip = IP._strToIpv6(match[1]); network = []; - network_str = ""; + networkStr = ""; for (var j = 0; j < 8; j++) { - network.push(ip[j] & ipv6_mask[j]); + network.push(ip[j] & ipv6Mask[j]); } - network_str = IP._ipv6_to_str(network, true); + networkStr = IP._ipv6ToStr(network, true); - if (ipv6_networks.hasOwnProperty(network_str)) { - ipv6_networks[network_str].push(ip); + if (ipv6Networks.hasOwnProperty(networkStr)) { + ipv6Networks[networkStr].push(ip); } else { - ipv6_networks[network_str] = [ip]; + ipv6Networks[networkStr] = [ip]; } } } // Sort IPv4 network dictionaries and print - for (network in ipv4_networks) { - ipv4_networks[network] = ipv4_networks[network].sort(); + for (network in ipv4Networks) { + ipv4Networks[network] = ipv4Networks[network].sort(); - output += IP._ipv4_to_str(network) + "/" + cidr + "\n"; + output += IP._ipv4ToStr(network) + "/" + cidr + "\n"; - if (!only_subnets) { - for (i = 0; i < ipv4_networks[network].length; i++) { - output += " " + IP._ipv4_to_str(ipv4_networks[network][i]) + "\n"; + if (!onlySubnets) { + for (i = 0; i < ipv4Networks[network].length; i++) { + output += " " + IP._ipv4ToStr(ipv4Networks[network][i]) + "\n"; } output += "\n"; } } // Sort IPv6 network dictionaries and print - for (network_str in ipv6_networks) { - //ipv6_networks[network_str] = ipv6_networks[network_str].sort(); TODO + for (networkStr in ipv6Networks) { + //ipv6Networks[networkStr] = ipv6Networks[networkStr].sort(); TODO - output += network_str + "/" + cidr + "\n"; + output += networkStr + "/" + cidr + "\n"; - if (!only_subnets) { - for (i = 0; i < ipv6_networks[network_str].length; i++) { - output += " " + IP._ipv6_to_str(ipv6_networks[network_str][i], true) + "\n"; + if (!onlySubnets) { + for (i = 0; i < ipv6Networks[networkStr].length; i++) { + output += " " + IP._ipv6ToStr(ipv6Networks[networkStr][i], true) + "\n"; } output += "\n"; } @@ -413,35 +413,35 @@ var IP = { * * @private * @param {RegExp} cidr - * @param {boolean} include_network_info - * @param {boolean} enumerate_addresses - * @param {boolean} allow_large_list + * @param {boolean} includeNetworkInfo + * @param {boolean} enumerateAddresses + * @param {boolean} allowLargeList * @returns {string} */ - _ipv4_cidr_range: function(cidr, include_network_info, enumerate_addresses, allow_large_list) { + _ipv4CidrRange: function(cidr, includeNetworkInfo, enumerateAddresses, allowLargeList) { var output = "", - network = IP._str_to_ipv4(cidr[1]), - cidr_range = parseInt(cidr[2], 10); + network = IP._strToIpv4(cidr[1]), + cidrRange = parseInt(cidr[2], 10); - if (cidr_range < 0 || cidr_range > 31) { + if (cidrRange < 0 || cidrRange > 31) { return "IPv4 CIDR must be less than 32"; } - var mask = ~(0xFFFFFFFF >>> cidr_range), + var mask = ~(0xFFFFFFFF >>> cidrRange), ip1 = network & mask, ip2 = ip1 | ~mask; - if (include_network_info) { - output += "Network: " + IP._ipv4_to_str(network) + "\n"; - output += "CIDR: " + cidr_range + "\n"; - output += "Mask: " + IP._ipv4_to_str(mask) + "\n"; - output += "Range: " + IP._ipv4_to_str(ip1) + " - " + IP._ipv4_to_str(ip2) + "\n"; + if (includeNetworkInfo) { + output += "Network: " + IP._ipv4ToStr(network) + "\n"; + output += "CIDR: " + cidrRange + "\n"; + output += "Mask: " + IP._ipv4ToStr(mask) + "\n"; + output += "Range: " + IP._ipv4ToStr(ip1) + " - " + IP._ipv4ToStr(ip2) + "\n"; output += "Total addresses in range: " + (((ip2 - ip1) >>> 0) + 1) + "\n\n"; } - if (enumerate_addresses) { - if (cidr_range >= 16 || allow_large_list) { - output += IP._generate_ipv4_range(ip1, ip2).join("\n"); + if (enumerateAddresses) { + if (cidrRange >= 16 || allowLargeList) { + output += IP._generateIpv4Range(ip1, ip2).join("\n"); } else { output += IP._LARGE_RANGE_ERROR; } @@ -455,42 +455,42 @@ var IP = { * * @private * @param {RegExp} cidr - * @param {boolean} include_network_info + * @param {boolean} includeNetworkInfo * @returns {string} */ - _ipv6_cidr_range: function(cidr, include_network_info) { + _ipv6CidrRange: function(cidr, includeNetworkInfo) { var output = "", - network = IP._str_to_ipv6(cidr[1]), - cidr_range = parseInt(cidr[cidr.length-1], 10); + network = IP._strToIpv6(cidr[1]), + cidrRange = parseInt(cidr[cidr.length-1], 10); - if (cidr_range < 0 || cidr_range > 127) { + if (cidrRange < 0 || cidrRange > 127) { return "IPv6 CIDR must be less than 128"; } - var mask = IP._gen_ipv6_mask(cidr_range), + var mask = IP._genIpv6Mask(cidrRange), ip1 = new Array(8), ip2 = new Array(8), - total_diff = "", + totalDiff = "", total = new Array(128); for (var i = 0; i < 8; i++) { ip1[i] = network[i] & mask[i]; ip2[i] = ip1[i] | (~mask[i] & 0x0000FFFF); - total_diff = (ip2[i] - ip1[i]).toString(2); + totalDiff = (ip2[i] - ip1[i]).toString(2); - if (total_diff !== "0") { - for (var n = 0; n < total_diff.length; n++) { - total[i*16 + 16-(total_diff.length-n)] = total_diff[n]; + if (totalDiff !== "0") { + for (var n = 0; n < totalDiff.length; n++) { + total[i*16 + 16-(totalDiff.length-n)] = totalDiff[n]; } } } - if (include_network_info) { - output += "Network: " + IP._ipv6_to_str(network) + "\n"; - output += "Shorthand: " + IP._ipv6_to_str(network, true) + "\n"; - output += "CIDR: " + cidr_range + "\n"; - output += "Mask: " + IP._ipv6_to_str(mask) + "\n"; - output += "Range: " + IP._ipv6_to_str(ip1) + " - " + IP._ipv6_to_str(ip2) + "\n"; + if (includeNetworkInfo) { + output += "Network: " + IP._ipv6ToStr(network) + "\n"; + output += "Shorthand: " + IP._ipv6ToStr(network, true) + "\n"; + output += "CIDR: " + cidrRange + "\n"; + output += "Mask: " + IP._ipv6ToStr(mask) + "\n"; + output += "Range: " + IP._ipv6ToStr(ip1) + " - " + IP._ipv6ToStr(ip2) + "\n"; output += "Total addresses in range: " + (parseInt(total.join(""), 2) + 1) + "\n\n"; } @@ -505,7 +505,7 @@ var IP = { * @param {number} cidr * @returns {number[]} */ - _gen_ipv6_mask: function(cidr) { + _genIpv6Mask: function(cidr) { var mask = new Array(8), shift; @@ -529,15 +529,15 @@ var IP = { * * @private * @param {RegExp} range - * @param {boolean} include_network_info - * @param {boolean} enumerate_addresses - * @param {boolean} allow_large_list + * @param {boolean} includeNetworkInfo + * @param {boolean} enumerateAddresses + * @param {boolean} allowLargeList * @returns {string} */ - _ipv4_hyphenated_range: function(range, include_network_info, enumerate_addresses, allow_large_list) { + _ipv4HyphenatedRange: function(range, includeNetworkInfo, enumerateAddresses, allowLargeList) { var output = "", - ip1 = IP._str_to_ipv4(range[1]), - ip2 = IP._str_to_ipv4(range[2]); + ip1 = IP._strToIpv4(range[1]), + ip2 = IP._strToIpv4(range[2]); // Calculate mask var diff = ip1 ^ ip2, @@ -552,23 +552,23 @@ var IP = { mask = ~mask >>> 0; var network = ip1 & mask, - sub_ip1 = network & mask, - sub_ip2 = sub_ip1 | ~mask; + subIp1 = network & mask, + subIp2 = subIp1 | ~mask; - if (include_network_info) { + if (includeNetworkInfo) { output += "Minimum subnet required to hold this range:\n"; - output += "\tNetwork: " + IP._ipv4_to_str(network) + "\n"; + output += "\tNetwork: " + IP._ipv4ToStr(network) + "\n"; output += "\tCIDR: " + cidr + "\n"; - output += "\tMask: " + IP._ipv4_to_str(mask) + "\n"; - output += "\tSubnet range: " + IP._ipv4_to_str(sub_ip1) + " - " + IP._ipv4_to_str(sub_ip2) + "\n"; - output += "\tTotal addresses in subnet: " + (((sub_ip2 - sub_ip1) >>> 0) + 1) + "\n\n"; - output += "Range: " + IP._ipv4_to_str(ip1) + " - " + IP._ipv4_to_str(ip2) + "\n"; + output += "\tMask: " + IP._ipv4ToStr(mask) + "\n"; + output += "\tSubnet range: " + IP._ipv4ToStr(subIp1) + " - " + IP._ipv4ToStr(subIp2) + "\n"; + output += "\tTotal addresses in subnet: " + (((subIp2 - subIp1) >>> 0) + 1) + "\n\n"; + output += "Range: " + IP._ipv4ToStr(ip1) + " - " + IP._ipv4ToStr(ip2) + "\n"; output += "Total addresses in range: " + (((ip2 - ip1) >>> 0) + 1) + "\n\n"; } - if (enumerate_addresses) { - if (((ip2 - ip1) >>> 0) <= 65536 || allow_large_list) { - output += IP._generate_ipv4_range(ip1, ip2).join("\n"); + if (enumerateAddresses) { + if (((ip2 - ip1) >>> 0) <= 65536 || allowLargeList) { + output += IP._generateIpv4Range(ip1, ip2).join("\n"); } else { output += IP._LARGE_RANGE_ERROR; } @@ -582,13 +582,13 @@ var IP = { * * @private * @param {RegExp} range - * @param {boolean} include_network_info + * @param {boolean} includeNetworkInfo * @returns {string} */ - _ipv6_hyphenated_range: function(range, include_network_info) { + _ipv6HyphenatedRange: function(range, includeNetworkInfo) { var output = "", - ip1 = IP._str_to_ipv6(range[1]), - ip2 = IP._str_to_ipv6(range[14]); + ip1 = IP._strToIpv6(range[1]), + ip2 = IP._strToIpv6(range[14]); var t = "", total = new Array(128); @@ -606,9 +606,9 @@ var IP = { } } - if (include_network_info) { - output += "Range: " + IP._ipv6_to_str(ip1) + " - " + IP._ipv6_to_str(ip2) + "\n"; - output += "Shorthand range: " + IP._ipv6_to_str(ip1, true) + " - " + IP._ipv6_to_str(ip2, true) + "\n"; + if (includeNetworkInfo) { + output += "Range: " + IP._ipv6ToStr(ip1) + " - " + IP._ipv6ToStr(ip2) + "\n"; + output += "Shorthand range: " + IP._ipv6ToStr(ip1, true) + " - " + IP._ipv6ToStr(ip2, true) + "\n"; output += "Total addresses in range: " + (parseInt(total.join(""), 2) + 1) + "\n\n"; } @@ -620,36 +620,36 @@ var IP = { * Converts an IPv4 address from string format to numerical format. * * @private - * @param {string} ip_str + * @param {string} ipStr * @returns {number} * * @example * // returns 168427520 - * IP._str_to_ipv4("10.10.0.0"); + * IP._strToIpv4("10.10.0.0"); */ - _str_to_ipv4: function (ip_str) { - var blocks = ip_str.split("."), - num_blocks = parse_blocks(blocks), + _strToIpv4: function (ipStr) { + var blocks = ipStr.split("."), + numBlocks = parseBlocks(blocks), result = 0; - result += num_blocks[0] << 24; - result += num_blocks[1] << 16; - result += num_blocks[2] << 8; - result += num_blocks[3]; + result += numBlocks[0] << 24; + result += numBlocks[1] << 16; + result += numBlocks[2] << 8; + result += numBlocks[3]; return result; - function parse_blocks(blocks) { + function parseBlocks(blocks) { if (blocks.length !== 4) throw "More than 4 blocks."; - var num_blocks = []; + var numBlocks = []; for (var i = 0; i < 4; i++) { - num_blocks[i] = parseInt(blocks[i], 10); - if (num_blocks[i] < 0 || num_blocks[i] > 255) + numBlocks[i] = parseInt(blocks[i], 10); + if (numBlocks[i] < 0 || numBlocks[i] > 255) throw "Block out of range."; } - return num_blocks; + return numBlocks; } }, @@ -658,18 +658,18 @@ var IP = { * Converts an IPv4 address from numerical format to string format. * * @private - * @param {number} ip_int + * @param {number} ipInt * @returns {string} * * @example * // returns "10.10.0.0" - * IP._ipv4_to_str(168427520); + * IP._ipv4ToStr(168427520); */ - _ipv4_to_str: function(ip_int) { - var blockA = (ip_int >> 24) & 255, - blockB = (ip_int >> 16) & 255, - blockC = (ip_int >> 8) & 255, - blockD = ip_int & 255; + _ipv4ToStr: function(ipInt) { + var blockA = (ipInt >> 24) & 255, + blockB = (ipInt >> 16) & 255, + blockC = (ipInt >> 8) & 255, + blockD = ipInt & 255; return blockA + "." + blockB + "." + blockC + "." + blockD; }, @@ -679,40 +679,40 @@ var IP = { * Converts an IPv6 address from string format to numerical array format. * * @private - * @param {string} ip_str + * @param {string} ipStr * @returns {number[]} * * @example * // returns [65280, 0, 0, 0, 0, 0, 4369, 8738] - * IP._str_to_ipv6("ff00::1111:2222"); + * IP._strToIpv6("ff00::1111:2222"); */ - _str_to_ipv6: function(ip_str) { - var blocks = ip_str.split(":"), - num_blocks = parse_blocks(blocks), + _strToIpv6: function(ipStr) { + var blocks = ipStr.split(":"), + numBlocks = parseBlocks(blocks), j = 0, ipv6 = new Array(8); for (var i = 0; i < 8; i++) { - if (isNaN(num_blocks[j])) { + if (isNaN(numBlocks[j])) { ipv6[i] = 0; - if (i === (8-num_blocks.slice(j).length)) j++; + if (i === (8-numBlocks.slice(j).length)) j++; } else { - ipv6[i] = num_blocks[j]; + ipv6[i] = numBlocks[j]; j++; } } return ipv6; - function parse_blocks(blocks) { + function parseBlocks(blocks) { if (blocks.length < 3 || blocks.length > 8) throw "Badly formatted IPv6 address."; - var num_blocks = []; + var numBlocks = []; for (var i = 0; i < blocks.length; i++) { - num_blocks[i] = parseInt(blocks[i], 16); - if (num_blocks[i] < 0 || num_blocks[i] > 65535) + numBlocks[i] = parseInt(blocks[i], 16); + if (numBlocks[i] < 0 || numBlocks[i] > 65535) throw "Block out of range."; } - return num_blocks; + return numBlocks; } }, @@ -727,12 +727,12 @@ var IP = { * * @example * // returns "ff00::1111:2222" - * IP._ipv6_to_str([65280, 0, 0, 0, 0, 0, 4369, 8738], true); + * IP._ipv6ToStr([65280, 0, 0, 0, 0, 0, 4369, 8738], true); * * // returns "ff00:0000:0000:0000:0000:0000:1111:2222" - * IP._ipv6_to_str([65280, 0, 0, 0, 0, 0, 4369, 8738], false); + * IP._ipv6ToStr([65280, 0, 0, 0, 0, 0, 4369, 8738], false); */ - _ipv6_to_str: function(ipv6, compact) { + _ipv6ToStr: function(ipv6, compact) { var output = "", i = 0; @@ -779,18 +779,18 @@ var IP = { * * @private * @param {number} ip - * @param {number} end_ip + * @param {number} endIp * @returns {string[]} * * @example * // returns ["0.0.0.1", "0.0.0.2", "0.0.0.3"] - * IP._generate_ipv4_range(1, 3); + * IP._generateIpv4Range(1, 3); */ - _generate_ipv4_range: function(ip, end_ip) { + _generateIpv4Range: function(ip, endIp) { var range = []; - if (end_ip >= ip) { - for (; ip <= end_ip; ip++) { - range.push(IP._ipv4_to_str(ip)); + if (endIp >= ip) { + for (; ip <= endIp; ip++) { + range.push(IP._ipv4ToStr(ip)); } } else { range[0] = "Second IP address smaller than first."; diff --git a/src/js/operations/JS.js b/src/js/operations/JS.js index 076c6321..0f109eee 100755 --- a/src/js/operations/JS.js +++ b/src/js/operations/JS.js @@ -44,19 +44,19 @@ var JS = { * @param {Object[]} args * @returns {string} */ - run_parse: function (input, args) { - var parse_loc = args[0], - parse_range = args[1], - parse_tokens = args[2], - parse_comment = args[3], - parse_tolerant = args[4], + runParse: function (input, args) { + var parseLoc = args[0], + parseRange = args[1], + parseTokens = args[2], + parseComment = args[3], + parseTolerant = args[4], result = {}, options = { - loc: parse_loc, - range: parse_range, - tokens: parse_tokens, - comment: parse_comment, - tolerant: parse_tolerant + loc: parseLoc, + range: parseRange, + tokens: parseTokens, + comment: parseComment, + tolerant: parseTolerant }; result = esprima.parse(input, options); @@ -92,11 +92,11 @@ var JS = { * @param {Object[]} args * @returns {string} */ - run_beautify: function(input, args) { - var beautify_indent = args[0] || JS.BEAUTIFY_INDENT, + runBeautify: function(input, args) { + var beautifyIndent = args[0] || JS.BEAUTIFY_INDENT, quotes = args[1].toLowerCase(), - beautify_semicolons = args[2], - beautify_comment = args[3], + beautifySemicolons = args[2], + beautifyComment = args[3], result = "", AST; @@ -110,12 +110,12 @@ var JS = { var options = { format: { indent: { - style: beautify_indent + style: beautifyIndent }, quotes: quotes, - semicolons: beautify_semicolons, + semicolons: beautifySemicolons, }, - comment: beautify_comment + comment: beautifyComment }; if (options.comment) @@ -137,13 +137,13 @@ var JS = { * @param {Object[]} args * @returns {string} */ - run_minify: function(input, args) { + runMinify: function(input, args) { var result = "", AST = esprima.parse(input), - optimised_AST = esmangle.optimize(AST, null), - mangled_AST = esmangle.mangle(optimised_AST); + optimisedAST = esmangle.optimize(AST, null), + mangledAST = esmangle.mangle(optimisedAST); - result = escodegen.generate(mangled_AST, { + result = escodegen.generate(mangledAST, { format: { renumber: true, hexadecimal: true, diff --git a/src/js/operations/MAC.js b/src/js/operations/MAC.js index 752304b3..8fdd0906 100755 --- a/src/js/operations/MAC.js +++ b/src/js/operations/MAC.js @@ -42,15 +42,15 @@ var MAC = { * @param {Object[]} args * @returns {string} */ - run_format: function(input, args) { + runFormat: function(input, args) { if (!input) return ""; - var output_case = args[0], - no_delim = args[1], - dash_delim = args[2], - colon_delim = args[3], - cisco_style = args[4], - output_list = [], + var outputCase = args[0], + noDelim = args[1], + dashDelim = args[2], + colonDelim = args[3], + ciscoStyle = args[4], + outputList = [], macs = input.toLowerCase().split(/[,\s\r\n]+/); macs.forEach(function(mac) { @@ -59,30 +59,30 @@ var MAC = { macColon = cleanMac.replace(/(.{2}(?=.))/g, "$1:"), macCisco = cleanMac.replace(/(.{4}(?=.))/g, "$1."); - if (output_case === "Lower only") { - if (no_delim) output_list.push(cleanMac); - if (dash_delim) output_list.push(macHyphen); - if (colon_delim) output_list.push(macColon); - if (cisco_style) output_list.push(macCisco); - } else if (output_case === "Upper only") { - if (no_delim) output_list.push(cleanMac.toUpperCase()); - if (dash_delim) output_list.push(macHyphen.toUpperCase()); - if (colon_delim) output_list.push(macColon.toUpperCase()); - if (cisco_style) output_list.push(macCisco.toUpperCase()); + if (outputCase === "Lower only") { + if (noDelim) outputList.push(cleanMac); + if (dashDelim) outputList.push(macHyphen); + if (colonDelim) outputList.push(macColon); + if (ciscoStyle) outputList.push(macCisco); + } else if (outputCase === "Upper only") { + if (noDelim) outputList.push(cleanMac.toUpperCase()); + if (dashDelim) outputList.push(macHyphen.toUpperCase()); + if (colonDelim) outputList.push(macColon.toUpperCase()); + if (ciscoStyle) outputList.push(macCisco.toUpperCase()); } else { - if (no_delim) output_list.push(cleanMac, cleanMac.toUpperCase()); - if (dash_delim) output_list.push(macHyphen, macHyphen.toUpperCase()); - if (colon_delim) output_list.push(macColon, macColon.toUpperCase()); - if (cisco_style) output_list.push(macCisco, macCisco.toUpperCase()); + if (noDelim) outputList.push(cleanMac, cleanMac.toUpperCase()); + if (dashDelim) outputList.push(macHyphen, macHyphen.toUpperCase()); + if (colonDelim) outputList.push(macColon, macColon.toUpperCase()); + if (ciscoStyle) outputList.push(macCisco, macCisco.toUpperCase()); } - output_list.push( + outputList.push( "" // Empty line to delimit groups ); }); // Return the data as a string - return output_list.join("\n"); + return outputList.join("\n"); }, }; diff --git a/src/js/operations/OS.js b/src/js/operations/OS.js index 48cedeb4..6b89627a 100755 --- a/src/js/operations/OS.js +++ b/src/js/operations/OS.js @@ -16,7 +16,7 @@ var OS = { * @param {Object[]} args * @returns {string} */ - run_parse_unix_perms: function(input, args) { + runParseUnixPerms: function(input, args) { var perms = { d : false, // directory sl : false, // symbolic link @@ -158,12 +158,12 @@ var OS = { return "Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format."; } - output += "Textual representation: " + OS._perms_to_str(perms); - output += "\nOctal representation: " + OS._perms_to_octal(perms); + output += "Textual representation: " + OS._permsToStr(perms); + output += "\nOctal representation: " + OS._permsToOctal(perms); // File type if (textual) { - output += "\nFile type: " + OS._ft_from_perms(perms); + output += "\nFile type: " + OS._ftFromPerms(perms); } // setuid, setgid @@ -201,7 +201,7 @@ var OS = { * @param {Object} perms * @returns {string} */ - _perms_to_str: function(perms) { + _permsToStr: function(perms) { var str = "", type = "-"; @@ -262,7 +262,7 @@ var OS = { * @param {Object} perms * @returns {string} */ - _perms_to_octal: function(perms) { + _permsToOctal: function(perms) { var d = 0, u = 0, g = 0, @@ -295,7 +295,7 @@ var OS = { * @param {Object} perms * @returns {string} */ - _ft_from_perms: function(perms) { + _ftFromPerms: function(perms) { if (perms.d) return "Directory"; if (perms.sl) return "Symbolic link"; if (perms.np) return "Named pipe"; diff --git a/src/js/operations/PublicKey.js b/src/js/operations/PublicKey.js index 96b13c27..d73ca286 100755 --- a/src/js/operations/PublicKey.js +++ b/src/js/operations/PublicKey.js @@ -24,15 +24,15 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_parse_x509: function (input, args) { + runParseX509: function (input, args) { var cert = new X509(), - input_format = args[0]; + inputFormat = args[0]; if (!input.length) { return "No input"; } - switch (input_format) { + switch (inputFormat) { case "DER Hex": input = input.replace(/\s/g, ""); cert.hex = input; @@ -43,11 +43,11 @@ var PublicKey = { cert.pem = input; break; case "Base64": - cert.hex = Utils.to_hex(Utils.from_base64(input, null, "byte_array"), ""); + cert.hex = Utils.toHex(Utils.fromBase64(input, null, "byteArray"), ""); cert.pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(cert.hex, "CERTIFICATE"); break; case "Raw": - cert.hex = Utils.to_hex(Utils.str_to_byte_array(input), ""); + cert.hex = Utils.toHex(Utils.strToByteArray(input), ""); cert.pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(cert.hex, "CERTIFICATE"); break; default: @@ -58,108 +58,108 @@ var PublicKey = { sn = cert.getSerialNumberHex(), algorithm = KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [0, 2, 0]))), issuer = cert.getIssuerString(), - not_before = cert.getNotBefore(), - not_after = cert.getNotAfter(), + notBefore = cert.getNotBefore(), + notAfter = cert.getNotAfter(), subject = cert.getSubjectString(), - pk_algorithm = KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [0, 6, 0, 0]))), + pkAlgorithm = KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [0, 6, 0, 0]))), pk = X509.getPublicKeyFromCertPEM(cert.pem), - pk_fields = [], - pk_str = "", - cert_sig_alg = KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [1, 0]))), - cert_sig = ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [2]).substr(2), - sig_str = "", + pkFields = [], + pkStr = "", + certSigAlg = KJUR.asn1.x509.OID.oid2name(KJUR.asn1.ASN1Util.oidHexToInt(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [1, 0]))), + certSig = ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [2]).substr(2), + sigStr = "", extensions = ASN1HEX.dump(ASN1HEX.getDecendantHexVByNthList(cert.hex, 0, [0, 7])); // Public Key fields if (pk.type === "EC") { // ECDSA - pk_fields.push({ + pkFields.push({ key: "Curve Name", value: pk.curveName }); - pk_fields.push({ + pkFields.push({ key: "Length", value: (((new BigInteger(pk.pubKeyHex, 16)).bitLength()-3) /2) + " bits" }); - pk_fields.push({ + pkFields.push({ key: "pub", - value: PublicKey._format_byte_str(pk.pubKeyHex, 16, 18) + value: PublicKey._formatByteStr(pk.pubKeyHex, 16, 18) }); } else if (pk.type === "DSA") { // DSA - pk_fields.push({ + pkFields.push({ key: "pub", - value: PublicKey._format_byte_str(pk.y.toString(16), 16, 18) + value: PublicKey._formatByteStr(pk.y.toString(16), 16, 18) }); - pk_fields.push({ + pkFields.push({ key: "P", - value: PublicKey._format_byte_str(pk.p.toString(16), 16, 18) + value: PublicKey._formatByteStr(pk.p.toString(16), 16, 18) }); - pk_fields.push({ + pkFields.push({ key: "Q", - value: PublicKey._format_byte_str(pk.q.toString(16), 16, 18) + value: PublicKey._formatByteStr(pk.q.toString(16), 16, 18) }); - pk_fields.push({ + pkFields.push({ key: "G", - value: PublicKey._format_byte_str(pk.g.toString(16), 16, 18) + value: PublicKey._formatByteStr(pk.g.toString(16), 16, 18) }); } else if (pk.e) { // RSA - pk_fields.push({ + pkFields.push({ key: "Length", value: pk.n.bitLength() + " bits" }); - pk_fields.push({ + pkFields.push({ key: "Modulus", - value: PublicKey._format_byte_str(pk.n.toString(16), 16, 18) + value: PublicKey._formatByteStr(pk.n.toString(16), 16, 18) }); - pk_fields.push({ + pkFields.push({ key: "Exponent", value: pk.e + " (0x" + pk.e.toString(16) + ")" }); } else { - pk_fields.push({ + pkFields.push({ key: "Error", value: "Unknown Public Key type" }); } // Signature fields - if (ASN1HEX.dump(cert_sig).indexOf("SEQUENCE") === 0) { // DSA or ECDSA - sig_str = " r: " + PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(cert_sig, 0, [0]), 16, 18) + "\n" + - " s: " + PublicKey._format_byte_str(ASN1HEX.getDecendantHexVByNthList(cert_sig, 0, [1]), 16, 18) + "\n"; + if (ASN1HEX.dump(certSig).indexOf("SEQUENCE") === 0) { // DSA or ECDSA + sigStr = " r: " + PublicKey._formatByteStr(ASN1HEX.getDecendantHexVByNthList(certSig, 0, [0]), 16, 18) + "\n" + + " s: " + PublicKey._formatByteStr(ASN1HEX.getDecendantHexVByNthList(certSig, 0, [1]), 16, 18) + "\n"; } else { // RSA - sig_str = " Signature: " + PublicKey._format_byte_str(cert_sig, 16, 18) + "\n"; + sigStr = " Signature: " + PublicKey._formatByteStr(certSig, 16, 18) + "\n"; } // Format Public Key fields - for (var i = 0; i < pk_fields.length; i++) { - pk_str += " " + pk_fields[i].key + ":" + - Utils.pad_left( - pk_fields[i].value + "\n", - 18 - (pk_fields[i].key.length + 3) + pk_fields[i].value.length + 1, + for (var i = 0; i < pkFields.length; i++) { + pkStr += " " + pkFields[i].key + ":" + + Utils.padLeft( + pkFields[i].value + "\n", + 18 - (pkFields[i].key.length + 3) + pkFields[i].value.length + 1, " " ); } - var issuer_str = PublicKey._format_dn_str(issuer, 2), - nb_date = PublicKey._format_date(not_before), - na_date = PublicKey._format_date(not_after), - subject_str = PublicKey._format_dn_str(subject, 2); + var issuerStr = PublicKey._formatDnStr(issuer, 2), + nbDate = PublicKey._formatDate(notBefore), + naDate = PublicKey._formatDate(notAfter), + subjectStr = PublicKey._formatDnStr(subject, 2); var output = "Version: " + (parseInt(version, 16) + 1) + " (0x" + version + ")\n" + "Serial number: " + new BigInteger(sn, 16).toString() + " (0x" + sn + ")\n" + "Algorithm ID: " + algorithm + "\n" + "Validity\n" + - " Not Before: " + nb_date + " (dd-mm-yy hh:mm:ss) (" + not_before + ")\n" + - " Not After: " + na_date + " (dd-mm-yy hh:mm:ss) (" + not_after + ")\n" + + " Not Before: " + nbDate + " (dd-mm-yy hh:mm:ss) (" + notBefore + ")\n" + + " Not After: " + naDate + " (dd-mm-yy hh:mm:ss) (" + notAfter + ")\n" + "Issuer\n" + - issuer_str + + issuerStr + "Subject\n" + - subject_str + + subjectStr + "Public Key\n" + - " Algorithm: " + pk_algorithm + "\n" + - pk_str + + " Algorithm: " + pkAlgorithm + "\n" + + pkStr + "Certificate Signature\n" + - " Algorithm: " + cert_sig_alg + "\n" + - sig_str + + " Algorithm: " + certSigAlg + "\n" + + sigStr + "\nExtensions (parsed ASN.1)\n" + extensions; @@ -174,7 +174,7 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_pem_to_hex: function(input, args) { + runPemToHex: function(input, args) { if (input.indexOf("-----BEGIN") < 0) { // Add header so that the KEYUTIL function works input = "-----BEGIN CERTIFICATE-----" + input; @@ -200,7 +200,7 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_hex_to_pem: function(input, args) { + runHexToPem: function(input, args) { return KJUR.asn1.ASN1Util.getPEMStringFromHex(input.replace(/\s/g, ""), args[0]); }, @@ -212,7 +212,7 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_hex_to_object_identifier: function(input, args) { + runHexToObjectIdentifier: function(input, args) { return KJUR.asn1.ASN1Util.oidHexToInt(input.replace(/\s/g, "")); }, @@ -224,7 +224,7 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_object_identifier_to_hex: function(input, args) { + runObjectIdentifierToHex: function(input, args) { return KJUR.asn1.ASN1Util.oidIntToHex(input); }, @@ -242,11 +242,11 @@ var PublicKey = { * @param {Object[]} args * @returns {string} */ - run_parse_asn1_hex_string: function(input, args) { - var truncate_len = args[1], + runParseAsn1HexString: function(input, args) { + var truncateLen = args[1], index = args[0]; return ASN1HEX.dump(input.replace(/\s/g, ""), { - "ommit_long_octet": truncate_len + "ommitLongOctet": truncateLen }, index); }, @@ -255,14 +255,14 @@ var PublicKey = { * Formats Distinguished Name (DN) strings. * * @private - * @param {string} dn_str + * @param {string} dnStr * @param {number} indent * @returns {string} */ - _format_dn_str: function(dn_str, indent) { + _formatDnStr: function(dnStr, indent) { var output = "", - fields = dn_str.split(",/|"), - max_key_len = 0, + fields = dnStr.split(",/|"), + maxKeyLen = 0, key, value, str; @@ -272,7 +272,7 @@ var PublicKey = { key = fields[i].split("=")[0]; - max_key_len = key.length > max_key_len ? key.length : max_key_len; + maxKeyLen = key.length > maxKeyLen ? key.length : maxKeyLen; } for (i = 0; i < fields.length; i++) { @@ -280,9 +280,9 @@ var PublicKey = { key = fields[i].split("=")[0]; value = fields[i].split("=")[1]; - str = Utils.pad_right(key, max_key_len) + " = " + value + "\n"; + str = Utils.padRight(key, maxKeyLen) + " = " + value + "\n"; - output += Utils.pad_left(str, indent + str.length, " "); + output += Utils.padLeft(str, indent + str.length, " "); } return output; @@ -293,22 +293,22 @@ var PublicKey = { * Formats byte strings by adding line breaks and delimiters. * * @private - * @param {string} byte_str + * @param {string} byteStr * @param {number} length - Line width * @param {number} indent * @returns {string} */ - _format_byte_str: function(byte_str, length, indent) { - byte_str = Utils.to_hex(Utils.from_hex(byte_str), ":"); + _formatByteStr: function(byteStr, length, indent) { + byteStr = Utils.toHex(Utils.fromHex(byteStr), ":"); length = length * 3; var output = ""; - for (var i = 0; i < byte_str.length; i += length) { - var str = byte_str.slice(i, i + length) + "\n"; + for (var i = 0; i < byteStr.length; i += length) { + var str = byteStr.slice(i, i + length) + "\n"; if (i === 0) { output += str; } else { - output += Utils.pad_left(str, indent + str.length, " "); + output += Utils.padLeft(str, indent + str.length, " "); } } @@ -320,16 +320,16 @@ var PublicKey = { * Formats dates. * * @private - * @param {string} date_str + * @param {string} dateStr * @returns {string} */ - _format_date: function(date_str) { - return date_str[4] + date_str[5] + "/" + - date_str[2] + date_str[3] + "/" + - date_str[0] + date_str[1] + " " + - date_str[6] + date_str[7] + ":" + - date_str[8] + date_str[9] + ":" + - date_str[10] + date_str[11]; + _formatDate: function(dateStr) { + return dateStr[4] + dateStr[5] + "/" + + dateStr[2] + dateStr[3] + "/" + + dateStr[0] + dateStr[1] + " " + + dateStr[6] + dateStr[7] + ":" + + dateStr[8] + dateStr[9] + ":" + + dateStr[10] + dateStr[11]; }, }; @@ -388,9 +388,9 @@ X509.DN_ATTRHEX = { // "06032a864886f70d010104" : "md5withRSAEncryption", // "06032a864886f70d010105" : "SHA-1WithRSAEncryption", // "06032a8648ce380403" : "id-dsa-with-sha-1", - // "06032b06010505070302" : "id_kp_clientAuth", - // "06032b06010505070304" : "id_kp_securityemail", - "06032b06010505070201" : "id_certificatePolicies", + // "06032b06010505070302" : "idKpClientAuth", + // "06032b06010505070304" : "idKpSecurityemail", + "06032b06010505070201" : "idCertificatePolicies", "06036086480186f8420101" : "netscape-cert-type", "06036086480186f8420102" : "netscape-base-url", "06036086480186f8420103" : "netscape-revocation-url", @@ -867,25 +867,25 @@ X509.DN_ATTRHEX = { "06036086480186f8450107010101" : "Unknown Verisign policy qualifier", "06036086480186f8450107010102" : "Unknown Verisign policy qualifier", "0603678105" : "TCPA", - "060367810501" : "tcpa_specVersion", - "060367810502" : "tcpa_attribute", - "06036781050201" : "tcpa_at_tpmManufacturer", - "0603678105020a" : "tcpa_at_securityQualities", - "0603678105020b" : "tcpa_at_tpmProtectionProfile", - "0603678105020c" : "tcpa_at_tpmSecurityTarget", - "0603678105020d" : "tcpa_at_foundationProtectionProfile", - "0603678105020e" : "tcpa_at_foundationSecurityTarget", - "0603678105020f" : "tcpa_at_tpmIdLabel", - "06036781050202" : "tcpa_at_tpmModel", - "06036781050203" : "tcpa_at_tpmVersion", - "06036781050204" : "tcpa_at_platformManufacturer", - "06036781050205" : "tcpa_at_platformModel", - "06036781050206" : "tcpa_at_platformVersion", - "06036781050207" : "tcpa_at_componentManufacturer", - "06036781050208" : "tcpa_at_componentModel", - "06036781050209" : "tcpa_at_componentVersion", - "060367810503" : "tcpa_protocol", - "06036781050301" : "tcpa_prtt_tpmIdProtocol", + "060367810501" : "tcpaSpecVersion", + "060367810502" : "tcpaAttribute", + "06036781050201" : "tcpaAtTpmManufacturer", + "0603678105020a" : "tcpaAtSecurityQualities", + "0603678105020b" : "tcpaAtTpmProtectionProfile", + "0603678105020c" : "tcpaAtTpmSecurityTarget", + "0603678105020d" : "tcpaAtFoundationProtectionProfile", + "0603678105020e" : "tcpaAtFoundationSecurityTarget", + "0603678105020f" : "tcpaAtTpmIdLabel", + "06036781050202" : "tcpaAtTpmModel", + "06036781050203" : "tcpaAtTpmVersion", + "06036781050204" : "tcpaAtPlatformManufacturer", + "06036781050205" : "tcpaAtPlatformModel", + "06036781050206" : "tcpaAtPlatformVersion", + "06036781050207" : "tcpaAtComponentManufacturer", + "06036781050208" : "tcpaAtComponentModel", + "06036781050209" : "tcpaAtComponentVersion", + "060367810503" : "tcpaProtocol", + "06036781050301" : "tcpaPrttTpmIdProtocol", "0603672a00" : "contentType", "0603672a0000" : "PANData", "0603672a0001" : "PANToken", diff --git a/src/js/operations/Punycode.js b/src/js/operations/Punycode.js index cf58a8f1..edc1293a 100755 --- a/src/js/operations/Punycode.js +++ b/src/js/operations/Punycode.js @@ -24,7 +24,7 @@ var Punycode = { * @param {Object[]} args * @returns {string} */ - run_to_ascii: function(input, args) { + runToAscii: function(input, args) { var idn = args[0]; if (idn) { @@ -42,7 +42,7 @@ var Punycode = { * @param {Object[]} args * @returns {string} */ - run_to_unicode: function(input, args) { + runToUnicode: function(input, args) { var idn = args[0]; if (idn) { diff --git a/src/js/operations/QuotedPrintable.js b/src/js/operations/QuotedPrintable.js index 8dd9299e..7e3645e8 100755 --- a/src/js/operations/QuotedPrintable.js +++ b/src/js/operations/QuotedPrintable.js @@ -35,11 +35,11 @@ var QuotedPrintable = { /** * To Quoted Printable operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args * @returns {string} */ - run_to: function (input, args) { + runTo: function (input, args) { var mimeEncodedStr = QuotedPrintable.mimeEncode(input); // fix line breaks @@ -58,9 +58,9 @@ var QuotedPrintable = { * * @param {string} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_from: function (input, args) { + runFrom: function (input, args) { var str = input.replace(/\=(?:\r?\n|$)/g, ""); return QuotedPrintable.mimeDecode(str); }, @@ -70,7 +70,7 @@ var QuotedPrintable = { * Decodes mime-encoded data. * * @param {string} str - * @returns {byte_array} + * @returns {byteArray} */ mimeDecode: function(str) { var encodedBytesCount = (str.match(/\=[\da-fA-F]{2}/g) || []).length, @@ -96,7 +96,7 @@ var QuotedPrintable = { /** * Encodes mime data. * - * @param {byte_array} buffer + * @param {byteArray} buffer * @returns {string} */ mimeEncode: function(buffer) { @@ -130,7 +130,7 @@ var QuotedPrintable = { * * @private * @param {number} nr - * @param {byte_array[]} ranges + * @param {byteArray[]} ranges * @returns {bolean} */ _checkRanges: function(nr, ranges) { diff --git a/src/js/operations/Rotate.js b/src/js/operations/Rotate.js index 8b6edf54..4a423cae 100755 --- a/src/js/operations/Rotate.js +++ b/src/js/operations/Rotate.js @@ -26,10 +26,10 @@ var Rotate = { * Runs rotation operations across the input data. * * @private - * @param {byte_array} data + * @param {byteArray} data * @param {number} amount * @param {function} algo - The rotation operation to carry out - * @returns {byte_array} + * @returns {byteArray} */ _rot: function(data, amount, algo) { var result = []; @@ -47,13 +47,13 @@ var Rotate = { /** * Rotate right operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_rotr: function(input, args) { + runRotr: function(input, args) { if (args[1]) { - return Rotate._rotr_whole(input, args[0]); + return Rotate._rotrWhole(input, args[0]); } else { return Rotate._rot(input, args[0], Rotate._rotr); } @@ -63,13 +63,13 @@ var Rotate = { /** * Rotate left operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_rotl: function(input, args) { + runRotl: function(input, args) { if (args[1]) { - return Rotate._rotl_whole(input, args[0]); + return Rotate._rotlWhole(input, args[0]); } else { return Rotate._rot(input, args[0], Rotate._rotl); } @@ -95,16 +95,16 @@ var Rotate = { /** * ROT13 operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_rot13: function(input, args) { + runRot13: function(input, args) { var amount = args[2], output = input, chr, - rot13_lowercase = args[0], - rot13_upperacse = args[1]; + rot13Lowercase = args[0], + rot13Upperacse = args[1]; if (amount) { if (amount < 0) { @@ -113,10 +113,10 @@ var Rotate = { for (var i = 0; i < input.length; i++) { chr = input[i]; - if (rot13_upperacse && chr >= 65 && chr <= 90) { // Upper case + if (rot13Upperacse && chr >= 65 && chr <= 90) { // Upper case chr = (chr - 65 + amount) % 26; output[i] = chr + 65; - } else if (rot13_lowercase && chr >= 97 && chr <= 122) { // Lower case + } else if (rot13Lowercase && chr >= 97 && chr <= 122) { // Lower case chr = (chr - 97 + amount) % 26; output[i] = chr + 97; } @@ -136,11 +136,11 @@ var Rotate = { * ROT47 operation. * * @author Matt C [matt@artemisbot.pw] - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_rot47: function(input, args) { + runRot47: function(input, args) { var amount = args[0], output = input, chr; @@ -193,23 +193,23 @@ var Rotate = { * from the end of the array to the beginning. * * @private - * @param {byte_array} data + * @param {byteArray} data * @param {number} amount - * @returns {byte_array} + * @returns {byteArray} */ - _rotr_whole: function(data, amount) { - var carry_bits = 0, - new_byte, + _rotrWhole: function(data, amount) { + var carryBits = 0, + newByte, result = []; amount = amount % 8; for (var i = 0; i < data.length; i++) { - var old_byte = data[i] >>> 0; - new_byte = (old_byte >> amount) | carry_bits; - carry_bits = (old_byte & (Math.pow(2, amount)-1)) << (8-amount); - result.push(new_byte); + var oldByte = data[i] >>> 0; + newByte = (oldByte >> amount) | carryBits; + carryBits = (oldByte & (Math.pow(2, amount)-1)) << (8-amount); + result.push(newByte); } - result[0] |= carry_bits; + result[0] |= carryBits; return result; }, @@ -219,23 +219,23 @@ var Rotate = { * from the beginning of the array to the end. * * @private - * @param {byte_array} data + * @param {byteArray} data * @param {number} amount - * @returns {byte_array} + * @returns {byteArray} */ - _rotl_whole: function(data, amount) { - var carry_bits = 0, - new_byte, + _rotlWhole: function(data, amount) { + var carryBits = 0, + newByte, result = []; amount = amount % 8; for (var i = data.length-1; i >= 0; i--) { - var old_byte = data[i]; - new_byte = ((old_byte << amount) | carry_bits) & 0xFF; - carry_bits = (old_byte >> (8-amount)) & (Math.pow(2, amount)-1); - result[i] = (new_byte); + var oldByte = data[i]; + newByte = ((oldByte << amount) | carryBits) & 0xFF; + carryBits = (oldByte >> (8-amount)) & (Math.pow(2, amount)-1); + result[i] = (newByte); } - result[data.length-1] = result[data.length-1] | carry_bits; + result[data.length-1] = result[data.length-1] | carryBits; return result; }, diff --git a/src/js/operations/SeqUtils.js b/src/js/operations/SeqUtils.js index 40fc67f1..7100d5c5 100755 --- a/src/js/operations/SeqUtils.js +++ b/src/js/operations/SeqUtils.js @@ -32,21 +32,21 @@ var SeqUtils = { * @param {Object[]} args * @returns {string} */ - run_sort: function (input, args) { - var delim = Utils.char_rep[args[0]], - sort_reverse = args[1], + runSort: function (input, args) { + var delim = Utils.charRep[args[0]], + sortReverse = args[1], order = args[2], sorted = input.split(delim); if (order === "Alphabetical (case sensitive)") { sorted = sorted.sort(); } else if (order === "Alphabetical (case insensitive)") { - sorted = sorted.sort(SeqUtils._case_insensitive_sort); + sorted = sorted.sort(SeqUtils._caseInsensitiveSort); } else if (order === "IP address") { - sorted = sorted.sort(SeqUtils._ip_sort); + sorted = sorted.sort(SeqUtils._ipSort); } - if (sort_reverse) sorted.reverse(); + if (sortReverse) sorted.reverse(); return sorted.join(delim); }, @@ -58,8 +58,8 @@ var SeqUtils = { * @param {Object[]} args * @returns {string} */ - run_unique: function (input, args) { - var delim = Utils.char_rep[args[0]]; + runUnique: function (input, args) { + var delim = Utils.charRep[args[0]]; return input.split(delim).unique().join(delim); }, @@ -77,7 +77,7 @@ var SeqUtils = { * @param {Object[]} args * @returns {number} */ - run_count: function(input, args) { + runCount: function(input, args) { var search = args[0].string, type = args[0].option; @@ -91,7 +91,7 @@ var SeqUtils = { } } else if (search) { if (type.indexOf("Extended") === 0) { - search = Utils.parse_escaped_chars(search); + search = Utils.parseEscapedChars(search); } return input.count(search); } else { @@ -109,11 +109,11 @@ var SeqUtils = { /** * Reverse operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_reverse: function (input, args) { + runReverse: function (input, args) { if (args[0] === "Line") { var lines = [], line = [], @@ -146,7 +146,7 @@ var SeqUtils = { * @param {Object[]} args * @returns {string} */ - run_add_line_numbers: function(input, args) { + runAddLineNumbers: function(input, args) { var lines = input.split("\n"), output = "", width = lines.length.toString().length; @@ -165,7 +165,7 @@ var SeqUtils = { * @param {Object[]} args * @returns {string} */ - run_remove_line_numbers: function(input, args) { + runRemoveLineNumbers: function(input, args) { return input.replace(/^[ \t]{0,5}\d+[\s:|\-,.)\]]/gm, ""); }, @@ -177,8 +177,8 @@ var SeqUtils = { * @param {Object[]} args * @returns {string} */ - run_expand_alph_range: function(input, args) { - return Utils.expand_alph_range(input).join(args[0]); + runExpandAlphRange: function(input, args) { + return Utils.expandAlphRange(input).join(args[0]); }, @@ -190,7 +190,7 @@ var SeqUtils = { * @param {string} b * @returns {number} */ - _case_insensitive_sort: function(a, b) { + _caseInsensitiveSort: function(a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }, @@ -203,7 +203,7 @@ var SeqUtils = { * @param {string} b * @returns {number} */ - _ip_sort: function(a, b) { + _ipSort: function(a, b) { var a_ = a.split("."), b_ = b.split("."); diff --git a/src/js/operations/StrUtils.js b/src/js/operations/StrUtils.js index 8ba065b8..8f13e28a 100755 --- a/src/js/operations/StrUtils.js +++ b/src/js/operations/StrUtils.js @@ -97,30 +97,30 @@ var StrUtils = { * @param {Object[]} args * @returns {html} */ - run_regex: function(input, args) { - var user_regex = args[1], + runRegex: function(input, args) { + var userRegex = args[1], i = args[2], m = args[3], - display_total = args[4], - output_format = args[5], + displayTotal = args[4], + outputFormat = args[5], modifiers = "g"; if (i) modifiers += "i"; if (m) modifiers += "m"; - if (user_regex && user_regex !== "^" && user_regex !== "$") { + if (userRegex && userRegex !== "^" && userRegex !== "$") { try { - var regex = new RegExp(user_regex, modifiers); + var regex = new RegExp(userRegex, modifiers); - switch (output_format) { + switch (outputFormat) { case "Highlight matches": - return StrUtils._regex_highlight(input, regex, display_total); + return StrUtils._regexHighlight(input, regex, displayTotal); case "List matches": - return Utils.escape_html(StrUtils._regex_list(input, regex, display_total, true, false)); + return Utils.escapeHtml(StrUtils._regexList(input, regex, displayTotal, true, false)); case "List capture groups": - return Utils.escape_html(StrUtils._regex_list(input, regex, display_total, false, true)); + return Utils.escapeHtml(StrUtils._regexList(input, regex, displayTotal, false, true)); case "List matches with capture groups": - return Utils.escape_html(StrUtils._regex_list(input, regex, display_total, true, true)); + return Utils.escapeHtml(StrUtils._regexList(input, regex, displayTotal, true, true)); default: return "Error: Invalid output format"; } @@ -128,7 +128,7 @@ var StrUtils = { return "Invalid regex. Details: " + err.message; } } else { - return Utils.escape_html(input); + return Utils.escapeHtml(input); } }, @@ -146,7 +146,7 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_upper: function (input, args) { + runUpper: function (input, args) { var scope = args[0]; switch (scope) { @@ -177,7 +177,7 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_lower: function (input, args) { + runLower: function (input, args) { return input.toLowerCase(); }, @@ -210,7 +210,7 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_find_replace: function(input, args) { + runFindReplace: function(input, args) { var find = args[0].string, type = args[0].option, replace = args[1], @@ -226,7 +226,7 @@ var StrUtils = { if (type === "Regex") { find = new RegExp(find, modifiers); } else if (type.indexOf("Extended") === 0) { - find = Utils.parse_escaped_chars(find); + find = Utils.parseEscapedChars(find); } return input.replace(find, replace, modifiers); @@ -254,12 +254,12 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_split: function(input, args) { - var split_delim = args[0] || StrUtils.SPLIT_DELIM, - join_delim = Utils.char_rep[args[1]], - sections = input.split(split_delim); + runSplit: function(input, args) { + var splitDelim = args[0] || StrUtils.SPLIT_DELIM, + joinDelim = Utils.charRep[args[1]], + sections = input.split(splitDelim); - return sections.join(join_delim); + return sections.join(joinDelim); }, @@ -271,8 +271,8 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_filter: function(input, args) { - var delim = Utils.char_rep[args[0]], + runFilter: function(input, args) { + var delim = Utils.charRep[args[0]], reverse = args[2]; try { @@ -281,11 +281,11 @@ var StrUtils = { return "Invalid regex. Details: " + err.message; } - var regex_filter = function(value) { + var regexFilter = function(value) { return reverse ^ regex.test(value); }; - return input.split(delim).filter(regex_filter).join(delim); + return input.split(delim).filter(regexFilter).join(delim); }, @@ -307,13 +307,13 @@ var StrUtils = { * @param {Object[]} args * @returns {html} */ - run_diff: function(input, args) { - var sample_delim = args[0], - diff_by = args[1], - show_added = args[2], - show_removed = args[3], - ignore_whitespace = args[4], - samples = input.split(sample_delim), + runDiff: function(input, args) { + var sampleDelim = args[0], + diffBy = args[1], + showAdded = args[2], + showRemoved = args[3], + ignoreWhitespace = args[4], + samples = input.split(sampleDelim), output = "", diff; @@ -321,19 +321,19 @@ var StrUtils = { return "Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?"; } - switch (diff_by) { + switch (diffBy) { case "Character": diff = JsDiff.diffChars(samples[0], samples[1]); break; case "Word": - if (ignore_whitespace) { + if (ignoreWhitespace) { diff = JsDiff.diffWords(samples[0], samples[1]); } else { diff = JsDiff.diffWordsWithSpace(samples[0], samples[1]); } break; case "Line": - if (ignore_whitespace) { + if (ignoreWhitespace) { diff = JsDiff.diffTrimmedLines(samples[0], samples[1]); } else { diff = JsDiff.diffLines(samples[0], samples[1]); @@ -354,11 +354,11 @@ var StrUtils = { for (var i = 0; i < diff.length; i++) { if (diff[i].added) { - if (show_added) output += "" + Utils.escape_html(diff[i].value) + ""; + if (showAdded) output += "" + Utils.escapeHtml(diff[i].value) + ""; } else if (diff[i].removed) { - if (show_removed) output += "" + Utils.escape_html(diff[i].value) + ""; + if (showRemoved) output += "" + Utils.escapeHtml(diff[i].value) + ""; } else { - output += Utils.escape_html(diff[i].value); + output += Utils.escapeHtml(diff[i].value); } } @@ -379,14 +379,14 @@ var StrUtils = { * @param {Object[]} args * @returns {html} */ - run_offset_checker: function(input, args) { - var sample_delim = args[0], - samples = input.split(sample_delim), + runOffsetChecker: function(input, args) { + var sampleDelim = args[0], + samples = input.split(sampleDelim), outputs = [], i = 0, s = 0, match = false, - in_match = false, + inMatch = false, chr; if (!samples || samples.length < 2) { @@ -415,34 +415,34 @@ var StrUtils = { // Write output for each sample for (s = 0; s < samples.length; s++) { if (samples[s].length <= i) { - if (in_match) outputs[s] += ""; - if (s === samples.length - 1) in_match = false; + if (inMatch) outputs[s] += ""; + if (s === samples.length - 1) inMatch = false; continue; } - if (match && !in_match) { - outputs[s] += "" + Utils.escape_html(samples[s][i]); + if (match && !inMatch) { + outputs[s] += "" + Utils.escapeHtml(samples[s][i]); if (samples[s].length === i + 1) outputs[s] += ""; - if (s === samples.length - 1) in_match = true; - } else if (!match && in_match) { - outputs[s] += "" + Utils.escape_html(samples[s][i]); - if (s === samples.length - 1) in_match = false; + if (s === samples.length - 1) inMatch = true; + } else if (!match && inMatch) { + outputs[s] += "" + Utils.escapeHtml(samples[s][i]); + if (s === samples.length - 1) inMatch = false; } else { - outputs[s] += Utils.escape_html(samples[s][i]); - if (in_match && samples[s].length === i + 1) { + outputs[s] += Utils.escapeHtml(samples[s][i]); + if (inMatch && samples[s].length === i + 1) { outputs[s] += ""; - if (samples[s].length - 1 !== i) in_match = false; + if (samples[s].length - 1 !== i) inMatch = false; } } if (samples[0].length - 1 === i) { - if (in_match) outputs[s] += ""; - outputs[s] += Utils.escape_html(samples[s].substring(i + 1)); + if (inMatch) outputs[s] += ""; + outputs[s] += Utils.escapeHtml(samples[s].substring(i + 1)); } } } - return outputs.join(sample_delim); + return outputs.join(sampleDelim); }, @@ -453,8 +453,8 @@ var StrUtils = { * @param {Object[]} args * @returns {string} */ - run_parse_escaped_string: function(input, args) { - return Utils.parse_escaped_chars(input); + runParseEscapedString: function(input, args) { + return Utils.parseEscapedChars(input); }, @@ -464,10 +464,10 @@ var StrUtils = { * @private * @param {string} input * @param {RegExp} regex - * @param {boolean} display_total + * @param {boolean} displayTotal * @returns {string} */ - _regex_highlight: function(input, regex, display_total) { + _regexHighlight: function(input, regex, displayTotal) { var output = "", m, hl = 1, @@ -476,10 +476,10 @@ var StrUtils = { while ((m = regex.exec(input))) { // Add up to match - output += Utils.escape_html(input.slice(i, m.index)); + output += Utils.escapeHtml(input.slice(i, m.index)); // Add match with highlighting - output += "" + Utils.escape_html(m[0]) + ""; + output += "" + Utils.escapeHtml(m[0]) + ""; // Switch highlight hl = hl === 1 ? 2 : 1; @@ -489,9 +489,9 @@ var StrUtils = { } // Add all after final match - output += Utils.escape_html(input.slice(i, input.length)); + output += Utils.escapeHtml(input.slice(i, input.length)); - if (display_total) + if (displayTotal) output = "Total found: " + total + "\n\n" + output; return output; @@ -504,12 +504,12 @@ var StrUtils = { * @private * @param {string} input * @param {RegExp} regex - * @param {boolean} display_total + * @param {boolean} displayTotal * @param {boolean} matches - Display full match - * @param {boolean} capture_groups - Display each of the capture groups separately + * @param {boolean} captureGroups - Display each of the capture groups separately * @returns {string} */ - _regex_list: function(input, regex, display_total, matches, capture_groups) { + _regexList: function(input, regex, displayTotal, matches, captureGroups) { var output = "", total = 0, match; @@ -519,7 +519,7 @@ var StrUtils = { if (matches) { output += match[0] + "\n"; } - if (capture_groups) { + if (captureGroups) { for (var i = 1; i < match.length; i++) { if (matches) { output += " Group " + i + ": "; @@ -529,7 +529,7 @@ var StrUtils = { } } - if (display_total) + if (displayTotal) output = "Total found: " + total + "\n\n" + output; return output; diff --git a/src/js/operations/Tidy.js b/src/js/operations/Tidy.js index a06f722a..8b708c89 100755 --- a/src/js/operations/Tidy.js +++ b/src/js/operations/Tidy.js @@ -47,21 +47,21 @@ var Tidy = { * @param {Object[]} args * @returns {string} */ - run_remove_whitespace: function (input, args) { - var remove_spaces = args[0], - remove_cariage_returns = args[1], - remove_line_feeds = args[2], - remove_tabs = args[3], - remove_form_feeds = args[4], - remove_full_stops = args[5], + runRemoveWhitespace: function (input, args) { + var removeSpaces = args[0], + removeCariageReturns = args[1], + removeLineFeeds = args[2], + removeTabs = args[3], + removeFormFeeds = args[4], + removeFullStops = args[5], data = input; - if (remove_spaces) data = data.replace(/ /g, ""); - if (remove_cariage_returns) data = data.replace(/\r/g, ""); - if (remove_line_feeds) data = data.replace(/\n/g, ""); - if (remove_tabs) data = data.replace(/\t/g, ""); - if (remove_form_feeds) data = data.replace(/\f/g, ""); - if (remove_full_stops) data = data.replace(/\./g, ""); + if (removeSpaces) data = data.replace(/ /g, ""); + if (removeCariageReturns) data = data.replace(/\r/g, ""); + if (removeLineFeeds) data = data.replace(/\n/g, ""); + if (removeTabs) data = data.replace(/\t/g, ""); + if (removeFormFeeds) data = data.replace(/\f/g, ""); + if (removeFullStops) data = data.replace(/\./g, ""); return data; }, @@ -69,11 +69,11 @@ var Tidy = { /** * Remove null bytes operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_remove_nulls: function (input, args) { + runRemoveNulls: function (input, args) { var output = []; for (var i = 0; i < input.length; i++) { if (input[i] !== 0) output.push(input[i]); @@ -101,19 +101,19 @@ var Tidy = { /** * Drop bytes operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_drop_bytes: function(input, args) { + runDropBytes: function(input, args) { var start = args[0], length = args[1], - apply_to_each_line = args[2]; + applyToEachLine = args[2]; if (start < 0 || length < 0) throw "Error: Invalid value"; - if (!apply_to_each_line) + if (!applyToEachLine) return input.slice(0, start).concat(input.slice(start+length, input.length)); // Split input into lines @@ -153,19 +153,19 @@ var Tidy = { /** * Take bytes operation. * - * @param {byte_array} input + * @param {byteArray} input * @param {Object[]} args - * @returns {byte_array} + * @returns {byteArray} */ - run_take_bytes: function(input, args) { + runTakeBytes: function(input, args) { var start = args[0], length = args[1], - apply_to_each_line = args[2]; + applyToEachLine = args[2]; if (start < 0 || length < 0) throw "Error: Invalid value"; - if (!apply_to_each_line) + if (!applyToEachLine) return input.slice(start, start+length); // Split input into lines @@ -214,7 +214,7 @@ var Tidy = { * @param {Object[]} args * @returns {string} */ - run_pad: function(input, args) { + runPad: function(input, args) { var position = args[0], len = args[1], chr = args[2], @@ -224,11 +224,11 @@ var Tidy = { if (position === "Start") { for (i = 0; i < lines.length; i++) { - output += Utils.pad_left(lines[i], lines[i].length+len, chr) + "\n"; + output += Utils.padLeft(lines[i], lines[i].length+len, chr) + "\n"; } } else if (position === "End") { for (i = 0; i < lines.length; i++) { - output += Utils.pad_right(lines[i], lines[i].length+len, chr) + "\n"; + output += Utils.padRight(lines[i], lines[i].length+len, chr) + "\n"; } } diff --git a/src/js/operations/URL.js b/src/js/operations/URL.js index 6f0c69d1..4ed0f923 100755 --- a/src/js/operations/URL.js +++ b/src/js/operations/URL.js @@ -25,9 +25,9 @@ var URL_ = { * @param {Object[]} args * @returns {string} */ - run_to: function(input, args) { - var encode_all = args[0]; - return encode_all ? URL_._encode_all_chars(input) : encodeURI(input); + runTo: function(input, args) { + var encodeAll = args[0]; + return encodeAll ? URL_._encodeAllChars(input) : encodeURI(input); }, @@ -38,7 +38,7 @@ var URL_ = { * @param {Object[]} args * @returns {string} */ - run_from: function(input, args) { + runFrom: function(input, args) { var data = input.replace(/\+/g, "%20"); try { return decodeURIComponent(data); @@ -55,7 +55,7 @@ var URL_ = { * @param {Object[]} args * @returns {string} */ - run_parse: function(input, args) { + runParse: function(input, args) { var a = document.createElement("a"); // Overwrite base href which will be the current CyberChef URL to reduce confusion. @@ -85,15 +85,15 @@ var URL_ = { if (a.search && a.search !== window.location.search) { output += "Arguments:\n"; var args_ = (a.search.slice(1, a.search.length)).split("&"); - var split_args = [], padding = 0; + var splitArgs = [], padding = 0; for (var i = 0; i < args_.length; i++) { - split_args.push(args_[i].split("=")); - padding = (split_args[i][0].length > padding) ? split_args[i][0].length : padding; + splitArgs.push(args_[i].split("=")); + padding = (splitArgs[i][0].length > padding) ? splitArgs[i][0].length : padding; } - for (i = 0; i < split_args.length; i++) { - output += "\t" + Utils.pad_right(split_args[i][0], padding); - if (split_args[i].length > 1 && split_args[i][1].length) - output += " = " + split_args[i][1] + "\n"; + for (i = 0; i < splitArgs.length; i++) { + output += "\t" + Utils.padRight(splitArgs[i][0], padding); + if (splitArgs[i].length > 1 && splitArgs[i][1].length) + output += " = " + splitArgs[i][1] + "\n"; else output += "\n"; } } @@ -112,7 +112,7 @@ var URL_ = { * @param {string} str * @returns {string} */ - _encode_all_chars: function(str) { + _encodeAllChars: function(str) { //TODO Do this programatically return encodeURIComponent(str) .replace(/!/g, "%21") diff --git a/src/js/operations/UUID.js b/src/js/operations/UUID.js index c175f509..2248eb63 100755 --- a/src/js/operations/UUID.js +++ b/src/js/operations/UUID.js @@ -16,7 +16,7 @@ var UUID = { * @param {Object[]} args * @returns {string} */ - run_generate_v4: function(input, args) { + runGenerateV4: function(input, args) { if (typeof(window.crypto) !== "undefined" && typeof(window.crypto.getRandomValues) !== "undefined") { var buf = new Uint32Array(4), i = 0; diff --git a/src/js/operations/Unicode.js b/src/js/operations/Unicode.js index 6a850c0d..d93ed9e5 100755 --- a/src/js/operations/Unicode.js +++ b/src/js/operations/Unicode.js @@ -22,8 +22,8 @@ var Unicode = { * @param {Object[]} args * @returns {string} */ - run_unescape: function(input, args) { - var prefix = Unicode._prefix_to_regex[args[0]], + runUnescape: function(input, args) { + var prefix = Unicode._prefixToRegex[args[0]], regex = new RegExp(prefix+"([a-f\\d]{4,6})", "ig"), output = "", m, @@ -53,7 +53,7 @@ var Unicode = { * @private * @constant */ - _prefix_to_regex: { + _prefixToRegex: { "\\u": "\\\\u", "%u": "%u", "U+": "U\\+" diff --git a/src/js/views/html/ControlsWaiter.js b/src/js/views/html/ControlsWaiter.js index 6ddc08d1..aefa4292 100755 --- a/src/js/views/html/ControlsWaiter.js +++ b/src/js/views/html/ControlsWaiter.js @@ -19,15 +19,15 @@ var ControlsWaiter = function(app, manager) { * Adjusts the display properties of the control buttons so that they fit within the current width * without wrapping or overflowing. */ -ControlsWaiter.prototype.adjust_width = function() { - var controls = document.getElementById("controls"), - step = document.getElementById("step"), - clr_breaks = document.getElementById("clr-breaks"), - save_img = document.querySelector("#save img"), - load_img = document.querySelector("#load img"), - step_img = document.querySelector("#step img"), - clr_recip_img = document.querySelector("#clr-recipe img"), - clr_breaks_img = document.querySelector("#clr-breaks img"); +ControlsWaiter.prototype.adjustWidth = function() { + var controls = document.getElementById("controls"), + step = document.getElementById("step"), + clrBreaks = document.getElementById("clr-breaks"), + saveImg = document.querySelector("#save img"), + loadImg = document.querySelector("#load img"), + stepImg = document.querySelector("#step img"), + clrRecipImg = document.querySelector("#clr-recipe img"), + clrBreaksImg = document.querySelector("#clr-breaks img"); if (controls.clientWidth < 470) { step.childNodes[1].nodeValue = " Step"; @@ -36,23 +36,23 @@ ControlsWaiter.prototype.adjust_width = function() { } if (controls.clientWidth < 400) { - save_img.style.display = "none"; - load_img.style.display = "none"; - step_img.style.display = "none"; - clr_recip_img.style.display = "none"; - clr_breaks_img.style.display = "none"; + saveImg.style.display = "none"; + loadImg.style.display = "none"; + stepImg.style.display = "none"; + clrRecipImg.style.display = "none"; + clrBreaksImg.style.display = "none"; } else { - save_img.style.display = "inline"; - load_img.style.display = "inline"; - step_img.style.display = "inline"; - clr_recip_img.style.display = "inline"; - clr_breaks_img.style.display = "inline"; + saveImg.style.display = "inline"; + loadImg.style.display = "inline"; + stepImg.style.display = "inline"; + clrRecipImg.style.display = "inline"; + clrBreaksImg.style.display = "inline"; } if (controls.clientWidth < 330) { - clr_breaks.childNodes[1].nodeValue = " Clear breaks"; + clrBreaks.childNodes[1].nodeValue = " Clear breaks"; } else { - clr_breaks.childNodes[1].nodeValue = " Clear breakpoints"; + clrBreaks.childNodes[1].nodeValue = " Clear breakpoints"; } }; @@ -62,11 +62,11 @@ ControlsWaiter.prototype.adjust_width = function() { * * @param {boolean} value - The new value for Auto Bake. */ -ControlsWaiter.prototype.set_auto_bake = function(value) { - var auto_bake_checkbox = document.getElementById("auto-bake"); +ControlsWaiter.prototype.setAutoBake = function(value) { + var autoBakeCheckbox = document.getElementById("auto-bake"); - if (auto_bake_checkbox.checked !== value) { - auto_bake_checkbox.click(); + if (autoBakeCheckbox.checked !== value) { + autoBakeCheckbox.click(); } }; @@ -74,7 +74,7 @@ ControlsWaiter.prototype.set_auto_bake = function(value) { /** * Handler to trigger baking. */ -ControlsWaiter.prototype.bake_click = function() { +ControlsWaiter.prototype.bakeClick = function() { this.app.bake(); $("#output-text").selectRange(0); }; @@ -83,7 +83,7 @@ ControlsWaiter.prototype.bake_click = function() { /** * Handler for the 'Step through' command. Executes the next step of the recipe. */ -ControlsWaiter.prototype.step_click = function() { +ControlsWaiter.prototype.stepClick = function() { this.app.bake(true); $("#output-text").selectRange(0); }; @@ -92,18 +92,18 @@ ControlsWaiter.prototype.step_click = function() { /** * Handler for changes made to the Auto Bake checkbox. */ -ControlsWaiter.prototype.auto_bake_change = function() { - var auto_bake_label = document.getElementById("auto-bake-label"), - auto_bake_checkbox = document.getElementById("auto-bake"); +ControlsWaiter.prototype.autoBakeChange = function() { + var autoBakeLabel = document.getElementById("auto-bake-label"), + autoBakeCheckbox = document.getElementById("auto-bake"); - this.app.auto_bake_ = auto_bake_checkbox.checked; + this.app.autoBake_ = autoBakeCheckbox.checked; - if (auto_bake_checkbox.checked) { - auto_bake_label.classList.remove("btn-default"); - auto_bake_label.classList.add("btn-success"); + if (autoBakeCheckbox.checked) { + autoBakeLabel.classList.remove("btn-default"); + autoBakeLabel.classList.add("btn-success"); } else { - auto_bake_label.classList.remove("btn-success"); - auto_bake_label.classList.add("btn-default"); + autoBakeLabel.classList.remove("btn-success"); + autoBakeLabel.classList.add("btn-default"); } }; @@ -111,8 +111,8 @@ ControlsWaiter.prototype.auto_bake_change = function() { /** * Handler for the 'Clear recipe' command. Removes all operations from the recipe. */ -ControlsWaiter.prototype.clear_recipe_click = function() { - this.manager.recipe.clear_recipe(); +ControlsWaiter.prototype.clearRecipeClick = function() { + this.manager.recipe.clearRecipe(); }; @@ -120,8 +120,8 @@ ControlsWaiter.prototype.clear_recipe_click = function() { * Handler for the 'Clear breakpoints' command. Removes all breakpoints from operations in the * recipe. */ -ControlsWaiter.prototype.clear_breaks_click = function() { - var bps = document.querySelectorAll("#rec_list li.operation .breakpoint"); +ControlsWaiter.prototype.clearBreaksClick = function() { + var bps = document.querySelectorAll("#rec-list li.operation .breakpoint"); for (var i = 0; i < bps.length; i++) { bps[i].setAttribute("break", "false"); @@ -133,49 +133,49 @@ ControlsWaiter.prototype.clear_breaks_click = function() { /** * Populates the save disalog box with a URL incorporating the recipe and input. * - * @param {Object[]} [recipe_config] - The recipe configuration object array. + * @param {Object[]} [recipeConfig] - The recipe configuration object array. */ -ControlsWaiter.prototype.initialise_save_link = function(recipe_config) { - recipe_config = recipe_config || this.app.get_recipe_config(); +ControlsWaiter.prototype.initialiseSaveLink = function(recipeConfig) { + recipeConfig = recipeConfig || this.app.getRecipeConfig(); - var include_recipe = document.getElementById("save-link-recipe-checkbox").checked, - include_input = document.getElementById("save-link-input-checkbox").checked, - save_link_el = document.getElementById("save-link"), - save_link = this.generate_state_url(include_recipe, include_input, recipe_config); + var includeRecipe = document.getElementById("save-link-recipe-checkbox").checked, + includeInput = document.getElementById("save-link-input-checkbox").checked, + saveLinkEl = document.getElementById("save-link"), + saveLink = this.generateStateUrl(includeRecipe, includeInput, recipeConfig); - save_link_el.innerHTML = Utils.truncate(save_link, 120); - save_link_el.setAttribute("href", save_link); + saveLinkEl.innerHTML = Utils.truncate(saveLink, 120); + saveLinkEl.setAttribute("href", saveLink); }; /** * Generates a URL containing the current recipe and input state. * - * @param {boolean} include_recipe - Whether to include the recipe in the URL. - * @param {boolean} include_input - Whether to include the input in the URL. - * @param {Object[]} [recipe_config] - The recipe configuration object array. + * @param {boolean} includeRecipe - Whether to include the recipe in the URL. + * @param {boolean} includeInput - Whether to include the input in the URL. + * @param {Object[]} [recipeConfig] - The recipe configuration object array. * @returns {string} */ -ControlsWaiter.prototype.generate_state_url = function(include_recipe, include_input, recipe_config) { - recipe_config = recipe_config || this.app.get_recipe_config(); +ControlsWaiter.prototype.generateStateUrl = function(includeRecipe, includeInput, recipeConfig) { + recipeConfig = recipeConfig || this.app.getRecipeConfig(); var link = window.location.protocol + "//" + window.location.host + window.location.pathname, - recipe_str = JSON.stringify(recipe_config), - input_str = Utils.to_base64(this.app.get_input(), "A-Za-z0-9+/"); // B64 alphabet with no padding + recipeStr = JSON.stringify(recipeConfig), + inputStr = Utils.toBase64(this.app.getInput(), "A-Za-z0-9+/"); // B64 alphabet with no padding - include_recipe = include_recipe && (recipe_config.length > 0); - include_input = include_input && (input_str.length > 0) && (input_str.length < 8000); + includeRecipe = includeRecipe && (recipeConfig.length > 0); + includeInput = includeInput && (inputStr.length > 0) && (inputStr.length < 8000); - if (include_recipe) { - link += "?recipe=" + encodeURIComponent(recipe_str); + if (includeRecipe) { + link += "?recipe=" + encodeURIComponent(recipeStr); } - if (include_recipe && include_input) { - link += "&input=" + encodeURIComponent(input_str); - } else if (include_input) { - link += "?input=" + encodeURIComponent(input_str); + if (includeRecipe && includeInput) { + link += "&input=" + encodeURIComponent(inputStr); + } else if (includeInput) { + link += "?input=" + encodeURIComponent(inputStr); } return link; @@ -185,10 +185,10 @@ ControlsWaiter.prototype.generate_state_url = function(include_recipe, include_i /** * Handler for changes made to the save dialog text area. Re-initialises the save link. */ -ControlsWaiter.prototype.save_text_change = function() { +ControlsWaiter.prototype.saveTextChange = function() { try { - var recipe_config = JSON.parse(document.getElementById("save-text").value); - this.initialise_save_link(recipe_config); + var recipeConfig = JSON.parse(document.getElementById("save-text").value); + this.initialiseSaveLink(recipeConfig); } catch(err) {} }; @@ -196,12 +196,13 @@ ControlsWaiter.prototype.save_text_change = function() { /** * Handler for the 'Save' command. Pops up the save dialog box. */ -ControlsWaiter.prototype.save_click = function() { - var recipe_config = this.app.get_recipe_config(); - var recipe_str = JSON.stringify(recipe_config).replace(/},{/g, "},\n{"); - document.getElementById("save-text").value = recipe_str; +ControlsWaiter.prototype.saveClick = function() { + var recipeConfig = this.app.getRecipeConfig(), + recipeStr = JSON.stringify(recipeConfig).replace(/},{/g, "},\n{"); + + document.getElementById("save-text").value = recipeStr; - this.initialise_save_link(recipe_config); + this.initialiseSaveLink(recipeConfig); $("#save-modal").modal(); }; @@ -209,24 +210,24 @@ ControlsWaiter.prototype.save_click = function() { /** * Handler for the save link recipe checkbox change event. */ -ControlsWaiter.prototype.slr_check_change = function() { - this.initialise_save_link(); +ControlsWaiter.prototype.slrCheckChange = function() { + this.initialiseSaveLink(); }; /** * Handler for the save link input checkbox change event. */ -ControlsWaiter.prototype.sli_check_change = function() { - this.initialise_save_link(); +ControlsWaiter.prototype.sliCheckChange = function() { + this.initialiseSaveLink(); }; /** * Handler for the 'Load' command. Pops up the load dialog box. */ -ControlsWaiter.prototype.load_click = function() { - this.populate_load_recipes_list(); +ControlsWaiter.prototype.loadClick = function() { + this.populateLoadRecipesList(); $("#load-modal").modal(); }; @@ -234,88 +235,88 @@ ControlsWaiter.prototype.load_click = function() { /** * Saves the recipe specified in the save textarea to local storage. */ -ControlsWaiter.prototype.save_button_click = function() { - var recipe_name = document.getElementById("save-name").value, - recipe_str = document.getElementById("save-text").value; +ControlsWaiter.prototype.saveButtonClick = function() { + var recipeName = document.getElementById("save-name").value, + recipeStr = document.getElementById("save-text").value; - if (!recipe_name) { + if (!recipeName) { this.app.alert("Please enter a recipe name", "danger", 2000); return; } - var saved_recipes = localStorage.saved_recipes ? - JSON.parse(localStorage.saved_recipes) : [], - recipe_id = localStorage.recipe_id || 0; + var savedRecipes = localStorage.savedRecipes ? + JSON.parse(localStorage.savedRecipes) : [], + recipeId = localStorage.recipeId || 0; - saved_recipes.push({ - id: ++recipe_id, - name: recipe_name, - recipe: recipe_str + savedRecipes.push({ + id: ++recipeId, + name: recipeName, + recipe: recipeStr }); - localStorage.saved_recipes = JSON.stringify(saved_recipes); - localStorage.recipe_id = recipe_id; + localStorage.savedRecipes = JSON.stringify(savedRecipes); + localStorage.recipeId = recipeId; - this.app.alert("Recipe saved as \"" + recipe_name + "\".", "success", 2000); + this.app.alert("Recipe saved as \"" + recipeName + "\".", "success", 2000); }; /** * Populates the list of saved recipes in the load dialog box from local storage. */ -ControlsWaiter.prototype.populate_load_recipes_list = function() { - var load_name_el = document.getElementById("load-name"); +ControlsWaiter.prototype.populateLoadRecipesList = function() { + var loadNameEl = document.getElementById("load-name"); // Remove current recipes from select - var i = load_name_el.options.length; + var i = loadNameEl.options.length; while (i--) { - load_name_el.remove(i); + loadNameEl.remove(i); } // Add recipes to select - var saved_recipes = localStorage.saved_recipes ? - JSON.parse(localStorage.saved_recipes) : []; + var savedRecipes = localStorage.savedRecipes ? + JSON.parse(localStorage.savedRecipes) : []; - for (i = 0; i < saved_recipes.length; i++) { + for (i = 0; i < savedRecipes.length; i++) { var opt = document.createElement("option"); - opt.value = saved_recipes[i].id; - opt.innerHTML = saved_recipes[i].name; + opt.value = savedRecipes[i].id; + opt.innerHTML = savedRecipes[i].name; - load_name_el.appendChild(opt); + loadNameEl.appendChild(opt); } // Populate textarea with first recipe - document.getElementById("load-text").value = saved_recipes.length ? saved_recipes[0].recipe : ""; + document.getElementById("load-text").value = savedRecipes.length ? savedRecipes[0].recipe : ""; }; /** * Removes the currently selected recipe from local storage. */ -ControlsWaiter.prototype.load_delete_click = function() { +ControlsWaiter.prototype.loadDeleteClick = function() { var id = parseInt(document.getElementById("load-name").value, 10), - saved_recipes = localStorage.saved_recipes ? - JSON.parse(localStorage.saved_recipes) : []; + savedRecipes = localStorage.savedRecipes ? + JSON.parse(localStorage.savedRecipes) : []; - saved_recipes = saved_recipes.filter(function(r) { + savedRecipes = savedRecipes.filter(function(r) { return r.id !== id; }); - localStorage.saved_recipes = JSON.stringify(saved_recipes); - this.populate_load_recipes_list(); + localStorage.savedRecipes = JSON.stringify(savedRecipes); + this.populateLoadRecipesList(); }; /** * Displays the selected recipe in the load text box. */ -ControlsWaiter.prototype.load_name_change = function(e) { +ControlsWaiter.prototype.loadNameChange = function(e) { var el = e.target, - saved_recipes = localStorage.saved_recipes ? - JSON.parse(localStorage.saved_recipes) : [], + savedRecipes = localStorage.savedRecipes ? + JSON.parse(localStorage.savedRecipes) : [], id = parseInt(el.value, 10); - var recipe = saved_recipes.filter(function(r) { + var recipe = savedRecipes.filter(function(r) { return r.id === id; })[0]; @@ -326,12 +327,12 @@ ControlsWaiter.prototype.load_name_change = function(e) { /** * Loads the selected recipe and populates the Recipe with its operations. */ -ControlsWaiter.prototype.load_button_click = function() { +ControlsWaiter.prototype.loadButtonClick = function() { try { - var recipe_config = JSON.parse(document.getElementById("load-text").value); - this.app.set_recipe_config(recipe_config); + var recipeConfig = JSON.parse(document.getElementById("load-text").value); + this.app.setRecipeConfig(recipeConfig); - $("#rec_list [data-toggle=popover]").popover(); + $("#rec-list [data-toggle=popover]").popover(); } catch(e) { this.app.alert("Invalid recipe", "danger", 2000); } diff --git a/src/js/views/html/HTMLApp.js b/src/js/views/html/HTMLApp.js index 4440a88b..b4930da4 100755 --- a/src/js/views/html/HTMLApp.js +++ b/src/js/views/html/HTMLApp.js @@ -11,22 +11,22 @@ * @constructor * @param {CatConf[]} categories - The list of categories and operations to be populated. * @param {Object.} operations - The list of operation configuration objects. - * @param {String[]} default_favourites - A list of default favourite operations. + * @param {String[]} defaultFavourites - A list of default favourite operations. * @param {Object} options - Default setting for app options. */ -var HTMLApp = function(categories, operations, default_favourites, default_options) { +var HTMLApp = function(categories, operations, defaultFavourites, defaultOptions) { this.categories = categories; this.operations = operations; - this.dfavourites = default_favourites; - this.doptions = default_options; - this.options = Utils.extend({}, default_options); + this.dfavourites = defaultFavourites; + this.doptions = defaultOptions; + this.options = Utils.extend({}, defaultOptions); this.chef = new Chef(); this.manager = new Manager(this); - this.auto_bake_ = false; + this.autoBake_ = false; this.progress = 0; - this.ing_id = 0; + this.ingId = 0; window.chef = this.chef; }; @@ -39,13 +39,13 @@ var HTMLApp = function(categories, operations, default_favourites, default_optio */ HTMLApp.prototype.setup = function() { document.dispatchEvent(this.manager.appstart); - this.initialise_splitter(); - this.load_local_storage(); - this.populate_operations_list(); + this.initialiseSplitter(); + this.loadLocalStorage(); + this.populateOperationsList(); this.manager.setup(); - this.reset_layout(); - this.set_compile_message(); - this.load_URI_params(); + this.resetLayout(); + this.setCompileMessage(); + this.loadURIParams(); }; @@ -54,10 +54,10 @@ HTMLApp.prototype.setup = function() { * * @param {Error} err */ -HTMLApp.prototype.handle_error = function(err) { +HTMLApp.prototype.handleError = function(err) { console.error(err); - var msg = err.display_str || err.toString(); - this.alert(msg, "danger", this.options.error_timeout, !this.options.show_errors); + var msg = err.displayStr || err.toString(); + this.alert(msg, "danger", this.options.errorTimeout, !this.options.showErrors); }; @@ -72,32 +72,32 @@ HTMLApp.prototype.bake = function(step) { try { response = this.chef.bake( - this.get_input(), // The user's input - this.get_recipe_config(), // The configuration of the recipe + this.getInput(), // The user's input + this.getRecipeConfig(), // The configuration of the recipe this.options, // Options set by the user this.progress, // The current position in the recipe step // Whether or not to take one step or execute the whole recipe ); } catch (err) { - this.handle_error(err); + this.handleError(err); } if (!response) return; if (response.error) { - this.handle_error(response.error); + this.handleError(response.error); } this.options = response.options; - this.dish_str = response.type === "html" ? Utils.strip_html_tags(response.result, true) : response.result; + this.dishStr = response.type === "html" ? Utils.stripHtmlTags(response.result, true) : response.result; this.progress = response.progress; - this.manager.recipe.update_breakpoint_indicator(response.progress); + this.manager.recipe.updateBreakpointIndicator(response.progress); this.manager.output.set(response.result, response.type, response.duration); // If baking took too long, disable auto-bake - if (response.duration > this.options.auto_bake_threshold && this.auto_bake_) { - this.manager.controls.set_auto_bake(false); - this.alert("Baking took longer than " + this.options.auto_bake_threshold + + if (response.duration > this.options.autoBakeThreshold && this.autoBake_) { + this.manager.controls.setAutoBake(false); + this.alert("Baking took longer than " + this.options.autoBakeThreshold + "ms, Auto Bake has been disabled.", "warning", 5000); } }; @@ -106,8 +106,8 @@ HTMLApp.prototype.bake = function(step) { /** * Runs Auto Bake if it is set. */ -HTMLApp.prototype.auto_bake = function() { - if (this.auto_bake_) { +HTMLApp.prototype.autoBake = function() { + if (this.autoBake_) { this.bake(); } }; @@ -122,15 +122,15 @@ HTMLApp.prototype.auto_bake = function() { * * @returns {number} - The number of miliseconds it took to run the silent bake. */ -HTMLApp.prototype.silent_bake = function() { - var start_time = new Date().getTime(), - recipe_config = this.get_recipe_config(); +HTMLApp.prototype.silentBake = function() { + var startTime = new Date().getTime(), + recipeConfig = this.getRecipeConfig(); - if (this.auto_bake_) { - this.chef.silent_bake(recipe_config); + if (this.autoBake_) { + this.chef.silentBake(recipeConfig); } - return new Date().getTime() - start_time; + return new Date().getTime() - startTime; }; @@ -139,11 +139,11 @@ HTMLApp.prototype.silent_bake = function() { * * @returns {string} */ -HTMLApp.prototype.get_input = function() { +HTMLApp.prototype.getInput = function() { var input = this.manager.input.get(); // Save to session storage in case we need to restore it later - sessionStorage.setItem("input_length", input.length); + sessionStorage.setItem("inputLength", input.length); sessionStorage.setItem("input", input); return input; @@ -155,8 +155,8 @@ HTMLApp.prototype.get_input = function() { * * @param {string} input - The string to set the input to */ -HTMLApp.prototype.set_input = function(input) { - sessionStorage.setItem("input_length", input.length); +HTMLApp.prototype.setInput = function(input) { + sessionStorage.setItem("inputLength", input.length); sessionStorage.setItem("input", input); this.manager.input.set(input); }; @@ -168,32 +168,32 @@ HTMLApp.prototype.set_input = function(input) { * * @fires Manager#oplistcreate */ -HTMLApp.prototype.populate_operations_list = function() { +HTMLApp.prototype.populateOperationsList = function() { // Move edit button away before we overwrite it document.body.appendChild(document.getElementById("edit-favourites")); var html = ""; for (var i = 0; i < this.categories.length; i++) { - var cat_conf = this.categories[i], + var catConf = this.categories[i], selected = i === 0, - cat = new HTMLCategory(cat_conf.name, selected); + cat = new HTMLCategory(catConf.name, selected); - for (var j = 0; j < cat_conf.ops.length; j++) { - var op_name = cat_conf.ops[j], - op = new HTMLOperation(op_name, this.operations[op_name], this, this.manager); - cat.add_operation(op); + for (var j = 0; j < catConf.ops.length; j++) { + var opName = catConf.ops[j], + op = new HTMLOperation(opName, this.operations[opName], this, this.manager); + cat.addOperation(op); } - html += cat.to_html(); + html += cat.toHtml(); } document.getElementById("categories").innerHTML = html; - var op_lists = document.querySelectorAll("#categories .op_list"); + var opLists = document.querySelectorAll("#categories .op-list"); - for (i = 0; i < op_lists.length; i++) { - op_lists[i].dispatchEvent(this.manager.oplistcreate); + for (i = 0; i < opLists.length; i++) { + opLists[i].dispatchEvent(this.manager.oplistcreate); } // Add edit button to first category (Favourites) @@ -204,23 +204,23 @@ HTMLApp.prototype.populate_operations_list = function() { /** * Sets up the adjustable splitter to allow the user to resize areas of the page. */ -HTMLApp.prototype.initialise_splitter = function() { - this.column_splitter = Split(["#operations", "#recipe", "#IO"], { +HTMLApp.prototype.initialiseSplitter = function() { + this.columnSplitter = Split(["#operations", "#recipe", "#IO"], { sizes: [20, 30, 50], minSize: [240, 325, 440], gutterSize: 4, onDrag: function() { - this.manager.controls.adjust_width(); - this.manager.output.adjust_width(); + this.manager.controls.adjustWidth(); + this.manager.output.adjustWidth(); }.bind(this) }); - this.io_splitter = Split(["#input", "#output"], { + this.ioSplitter = Split(["#input", "#output"], { direction: "vertical", gutterSize: 4, }); - this.reset_layout(); + this.resetLayout(); }; @@ -228,16 +228,16 @@ HTMLApp.prototype.initialise_splitter = function() { * Loads the information previously saved to the HTML5 local storage object so that user options * and favourites can be restored. */ -HTMLApp.prototype.load_local_storage = function() { +HTMLApp.prototype.loadLocalStorage = function() { // Load options - var l_options; + var lOptions; if (localStorage.options !== undefined) { - l_options = JSON.parse(localStorage.options); + lOptions = JSON.parse(localStorage.options); } - this.manager.options.load(l_options); + this.manager.options.load(lOptions); // Load favourites - this.load_favourites(); + this.loadFavourites(); }; @@ -246,21 +246,21 @@ HTMLApp.prototype.load_local_storage = function() { * Favourites category with them. * If the user currently has no saved favourites, the defaults from the view constructor are used. */ -HTMLApp.prototype.load_favourites = function() { +HTMLApp.prototype.loadFavourites = function() { var favourites = localStorage.favourites && localStorage.favourites.length > 2 ? JSON.parse(localStorage.favourites) : this.dfavourites; - favourites = this.valid_favourites(favourites); - this.save_favourites(favourites); + favourites = this.validFavourites(favourites); + this.saveFavourites(favourites); - var fav_cat = this.categories.filter(function(c) { + var favCat = this.categories.filter(function(c) { return c.name === "Favourites"; })[0]; - if (fav_cat) { - fav_cat.ops = favourites; + if (favCat) { + favCat.ops = favourites; } else { this.categories.unshift({ name: "Favourites", @@ -277,17 +277,17 @@ HTMLApp.prototype.load_favourites = function() { * @param {string[]} favourites - A list of the user's favourite operations * @returns {string[]} A list of the valid favourites */ -HTMLApp.prototype.valid_favourites = function(favourites) { - var valid_favs = []; +HTMLApp.prototype.validFavourites = function(favourites) { + var validFavs = []; for (var i = 0; i < favourites.length; i++) { if (this.operations.hasOwnProperty(favourites[i])) { - valid_favs.push(favourites[i]); + validFavs.push(favourites[i]); } else { - this.alert("The operation \"" + Utils.escape_html(favourites[i]) + + this.alert("The operation \"" + Utils.escapeHtml(favourites[i]) + "\" is no longer available. It has been removed from your favourites.", "info"); } } - return valid_favs; + return validFavs; }; @@ -296,8 +296,8 @@ HTMLApp.prototype.valid_favourites = function(favourites) { * * @param {string[]} favourites - A list of the user's favourite operations */ -HTMLApp.prototype.save_favourites = function(favourites) { - localStorage.setItem("favourites", JSON.stringify(this.valid_favourites(favourites))); +HTMLApp.prototype.saveFavourites = function(favourites) { + localStorage.setItem("favourites", JSON.stringify(this.validFavourites(favourites))); }; @@ -305,11 +305,11 @@ HTMLApp.prototype.save_favourites = function(favourites) { * Resets favourite operations back to the default as specified in the view constructor and * refreshes the operation list. */ -HTMLApp.prototype.reset_favourites = function() { - this.save_favourites(this.dfavourites); - this.load_favourites(); - this.populate_operations_list(); - this.manager.recipe.initialise_operation_drag_n_drop(); +HTMLApp.prototype.resetFavourites = function() { + this.saveFavourites(this.dfavourites); + this.loadFavourites(); + this.populateOperationsList(); + this.manager.recipe.initialiseOperationDragNDrop(); }; @@ -318,7 +318,7 @@ HTMLApp.prototype.reset_favourites = function() { * * @param {string} name - The name of the operation */ -HTMLApp.prototype.add_favourite = function(name) { +HTMLApp.prototype.addFavourite = function(name) { var favourites = JSON.parse(localStorage.favourites); if (favourites.indexOf(name) >= 0) { @@ -327,19 +327,19 @@ HTMLApp.prototype.add_favourite = function(name) { } favourites.push(name); - this.save_favourites(favourites); - this.load_favourites(); - this.populate_operations_list(); - this.manager.recipe.initialise_operation_drag_n_drop(); + this.saveFavourites(favourites); + this.loadFavourites(); + this.populateOperationsList(); + this.manager.recipe.initialiseOperationDragNDrop(); }; /** * Checks for input and recipe in the URI parameters and loads them if present. */ -HTMLApp.prototype.load_URI_params = function() { +HTMLApp.prototype.loadURIParams = function() { // Load query string from URI - this.query_string = (function(a) { + this.queryString = (function(a) { if (a === "") return {}; var b = {}; for (var i = 0; i < a.length; i++) { @@ -354,46 +354,46 @@ HTMLApp.prototype.load_URI_params = function() { })(window.location.search.substr(1).split("&")); // Turn off auto-bake while loading - var auto_bake_val = this.auto_bake_; - this.auto_bake_ = false; + var autoBakeVal = this.autoBake_; + this.autoBake_ = false; // Read in recipe from query string - if (this.query_string.recipe) { + if (this.queryString.recipe) { try { - var recipe_config = JSON.parse(this.query_string.recipe); - this.set_recipe_config(recipe_config); + var recipeConfig = JSON.parse(this.queryString.recipe); + this.setRecipeConfig(recipeConfig); } catch(err) {} - } else if (this.query_string.op) { + } else if (this.queryString.op) { // If there's no recipe, look for single operations - this.manager.recipe.clear_recipe(); + this.manager.recipe.clearRecipe(); try { - this.manager.recipe.add_operation(this.query_string.op); + this.manager.recipe.addOperation(this.queryString.op); } catch(err) { // If no exact match, search for nearest match and add that - var matched_ops = this.manager.ops.filter_operations(this.query_string.op, false); - if (matched_ops.length) { - this.manager.recipe.add_operation(matched_ops[0].name); + var matchedOps = this.manager.ops.filterOperations(this.queryString.op, false); + if (matchedOps.length) { + this.manager.recipe.addOperation(matchedOps[0].name); } // Populate search with the string var search = document.getElementById("search"); - search.value = this.query_string.op; + search.value = this.queryString.op; search.dispatchEvent(new Event("search")); } } // Read in input data from query string - if (this.query_string.input) { + if (this.queryString.input) { try { - var input_data = Utils.from_base64(this.query_string.input); - this.set_input(input_data); + var inputData = Utils.fromBase64(this.queryString.input); + this.setInput(inputData); } catch(err) {} } // Restore auto-bake state - this.auto_bake_ = auto_bake_val; - this.auto_bake(); + this.autoBake_ = autoBakeVal; + this.autoBake(); }; @@ -402,8 +402,8 @@ HTMLApp.prototype.load_URI_params = function() { * * @returns {number} */ -HTMLApp.prototype.next_ing_id = function() { - return this.ing_id++; +HTMLApp.prototype.nextIngId = function() { + return this.ingId++; }; @@ -412,48 +412,48 @@ HTMLApp.prototype.next_ing_id = function() { * * @returns {Object[]} */ -HTMLApp.prototype.get_recipe_config = function() { - var recipe_config = this.manager.recipe.get_config(); - sessionStorage.setItem("recipe_config", JSON.stringify(recipe_config)); - return recipe_config; +HTMLApp.prototype.getRecipeConfig = function() { + var recipeConfig = this.manager.recipe.getConfig(); + sessionStorage.setItem("recipeConfig", JSON.stringify(recipeConfig)); + return recipeConfig; }; /** * Given a recipe configuration, sets the recipe to that configuration. * - * @param {Object[]} recipe_config - The recipe configuration + * @param {Object[]} recipeConfig - The recipe configuration */ -HTMLApp.prototype.set_recipe_config = function(recipe_config) { - sessionStorage.setItem("recipe_config", JSON.stringify(recipe_config)); - document.getElementById("rec_list").innerHTML = null; +HTMLApp.prototype.setRecipeConfig = function(recipeConfig) { + sessionStorage.setItem("recipeConfig", JSON.stringify(recipeConfig)); + document.getElementById("rec-list").innerHTML = null; - for (var i = 0; i < recipe_config.length; i++) { - var item = this.manager.recipe.add_operation(recipe_config[i].op); + for (var i = 0; i < recipeConfig.length; i++) { + var item = this.manager.recipe.addOperation(recipeConfig[i].op); // Populate arguments var args = item.querySelectorAll(".arg"); for (var j = 0; j < args.length; j++) { if (args[j].getAttribute("type") === "checkbox") { // checkbox - args[j].checked = recipe_config[i].args[j]; + args[j].checked = recipeConfig[i].args[j]; } else if (args[j].classList.contains("toggle-string")) { - // toggle_string - args[j].value = recipe_config[i].args[j].string; + // toggleString + args[j].value = recipeConfig[i].args[j].string; args[j].previousSibling.children[0].innerHTML = - Utils.escape_html(recipe_config[i].args[j].option) + + Utils.escapeHtml(recipeConfig[i].args[j].option) + " "; } else { // all others - args[j].value = recipe_config[i].args[j]; + args[j].value = recipeConfig[i].args[j]; } } // Set disabled and breakpoint - if (recipe_config[i].disabled) { + if (recipeConfig[i].disabled) { item.querySelector(".disable-icon").click(); } - if (recipe_config[i].breakpoint) { + if (recipeConfig[i].breakpoint) { item.querySelector(".breakpoint").click(); } @@ -465,31 +465,31 @@ HTMLApp.prototype.set_recipe_config = function(recipe_config) { /** * Resets the splitter positions to default. */ -HTMLApp.prototype.reset_layout = function() { - this.column_splitter.setSizes([20, 30, 50]); - this.io_splitter.setSizes([50, 50]); +HTMLApp.prototype.resetLayout = function() { + this.columnSplitter.setSizes([20, 30, 50]); + this.ioSplitter.setSizes([50, 50]); - this.manager.controls.adjust_width(); - this.manager.output.adjust_width(); + this.manager.controls.adjustWidth(); + this.manager.output.adjustWidth(); }; /** * Sets the compile message. */ -HTMLApp.prototype.set_compile_message = function() { +HTMLApp.prototype.setCompileMessage = function() { // Display time since last build and compile message var now = new Date(), - time_since_compile = Utils.fuzzy_time(now.getTime() - window.compile_time), - compile_info = "Last build: " + - time_since_compile.substr(0, 1).toUpperCase() + time_since_compile.substr(1) + " ago"; + timeSinceCompile = Utils.fuzzyTime(now.getTime() - window.compileTime), + compileInfo = "Last build: " + + timeSinceCompile.substr(0, 1).toUpperCase() + timeSinceCompile.substr(1) + " ago"; - if (window.compile_message !== "") { - compile_info += " - " + window.compile_message; + if (window.compileMessage !== "") { + compileInfo += " - " + window.compileMessage; } - compile_info += ""; - document.getElementById("notice").innerHTML = compile_info; + compileInfo += ""; + document.getElementById("notice").innerHTML = compileInfo; }; @@ -525,32 +525,32 @@ HTMLApp.prototype.alert = function(str, style, timeout, silent) { style = style || "danger"; timeout = timeout || 0; - var alert_el = document.getElementById("alert"), - alert_content = document.getElementById("alert-content"); + var alertEl = document.getElementById("alert"), + alertContent = document.getElementById("alert-content"); - alert_el.classList.remove("alert-danger"); - alert_el.classList.remove("alert-warning"); - alert_el.classList.remove("alert-info"); - alert_el.classList.remove("alert-success"); - alert_el.classList.add("alert-" + style); + alertEl.classList.remove("alert-danger"); + alertEl.classList.remove("alert-warning"); + alertEl.classList.remove("alert-info"); + alertEl.classList.remove("alert-success"); + alertEl.classList.add("alert-" + style); // If the box hasn't been closed, append to it rather than replacing - if (alert_el.style.display === "block") { - alert_content.innerHTML += + if (alertEl.style.display === "block") { + alertContent.innerHTML += "

                  [" + time.toLocaleTimeString() + "] " + str; } else { - alert_content.innerHTML = + alertContent.innerHTML = "[" + time.toLocaleTimeString() + "] " + str; } // Stop the animation if it is in progress $("#alert").stop(); - alert_el.style.display = "block"; - alert_el.style.opacity = 1; + alertEl.style.display = "block"; + alertEl.style.opacity = 1; if (timeout > 0) { - clearTimeout(this.alert_timeout); - this.alert_timeout = setTimeout(function(){ + clearTimeout(this.alertTimeout); + this.alertTimeout = setTimeout(function(){ $("#alert").slideUp(100); }, timeout); } @@ -576,20 +576,20 @@ HTMLApp.prototype.confirm = function(title, body, callback, scope) { document.getElementById("confirm-body").innerHTML = body; document.getElementById("confirm-modal").style.display = "block"; - this.confirm_closed = false; + this.confirmClosed = false; $("#confirm-modal").modal() .one("show.bs.modal", function(e) { - this.confirm_closed = false; + this.confirmClosed = false; }.bind(this)) .one("click", "#confirm-yes", function() { - this.confirm_closed = true; + this.confirmClosed = true; callback.bind(scope)(true); $("#confirm-modal").modal("hide"); }.bind(this)) .one("hide.bs.modal", function(e) { - if (!this.confirm_closed) + if (!this.confirmClosed) callback.bind(scope)(false); - this.confirm_closed = true; + this.confirmClosed = true; }.bind(this)); }; @@ -598,7 +598,7 @@ HTMLApp.prototype.confirm = function(title, body, callback, scope) { * Handler for the alert close button click event. * Closes the alert box. */ -HTMLApp.prototype.alert_close_click = function() { +HTMLApp.prototype.alertCloseClick = function() { document.getElementById("alert").style.display = "none"; }; @@ -610,13 +610,13 @@ HTMLApp.prototype.alert_close_click = function() { * @listens Manager#statechange * @param {event} e */ -HTMLApp.prototype.state_change = function(e) { - this.auto_bake(); +HTMLApp.prototype.stateChange = function(e) { + this.autoBake(); // Update the current history state (not creating a new one) - if (this.options.update_url) { - this.last_state_url = this.manager.controls.generate_state_url(true, true); - window.history.replaceState({}, "CyberChef", this.last_state_url); + if (this.options.updateUrl) { + this.lastStateUrl = this.manager.controls.generateStateUrl(true, true); + window.history.replaceState({}, "CyberChef", this.lastStateUrl); } }; @@ -627,9 +627,9 @@ HTMLApp.prototype.state_change = function(e) { * * @param {event} e */ -HTMLApp.prototype.pop_state = function(e) { - if (window.location.href.split("#")[0] !== this.last_state_url) { - this.load_URI_params(); +HTMLApp.prototype.popState = function(e) { + if (window.location.href.split("#")[0] !== this.lastStateUrl) { + this.loadURIParams(); } }; @@ -637,11 +637,11 @@ HTMLApp.prototype.pop_state = function(e) { /** * Function to call an external API from this view. */ -HTMLApp.prototype.call_api = function(url, type, data, data_type, content_type) { +HTMLApp.prototype.callApi = function(url, type, data, dataType, contentType) { type = type || "POST"; data = data || {}; - data_type = data_type || undefined; - content_type = content_type || "application/json"; + dataType = dataType || undefined; + contentType = contentType || "application/json"; var response = null, success = false; @@ -651,8 +651,8 @@ HTMLApp.prototype.call_api = function(url, type, data, data_type, content_type) async: false, type: type, data: data, - dataType: data_type, - contentType: content_type, + dataType: dataType, + contentType: contentType, success: function(data) { success = true; response = data; diff --git a/src/js/views/html/HTMLCategory.js b/src/js/views/html/HTMLCategory.js index 83909d50..071d3b81 100755 --- a/src/js/views/html/HTMLCategory.js +++ b/src/js/views/html/HTMLCategory.js @@ -12,7 +12,7 @@ var HTMLCategory = function(name, selected) { this.name = name; this.selected = selected; - this.op_list = []; + this.opList = []; }; @@ -21,8 +21,8 @@ var HTMLCategory = function(name, selected) { * * @param {HTMLOperation} operation - The operation to add. */ -HTMLCategory.prototype.add_operation = function(operation) { - this.op_list.push(operation); +HTMLCategory.prototype.addOperation = function(operation) { + this.opList.push(operation); }; @@ -31,18 +31,18 @@ HTMLCategory.prototype.add_operation = function(operation) { * * @returns {string} */ -HTMLCategory.prototype.to_html = function() { - var cat_name = "cat" + this.name.replace(/[\s/-:_]/g, ""); +HTMLCategory.prototype.toHtml = function() { + var catName = "cat" + this.name.replace(/[\s/-:_]/g, ""); var html = "
                  \ \ + data-parent='#categories' href='#" + catName + "'>\ " + this.name + "\ \ -
                    "; +
                      "; - for (var i = 0; i < this.op_list.length; i++) { - html += this.op_list[i].to_stub_html(); + for (var i = 0; i < this.opList.length; i++) { + html += this.opList[i].toStubHtml(); } html += "
                  "; diff --git a/src/js/views/html/HTMLIngredient.js b/src/js/views/html/HTMLIngredient.js index 086a7089..909b16cd 100755 --- a/src/js/views/html/HTMLIngredient.js +++ b/src/js/views/html/HTMLIngredient.js @@ -18,11 +18,11 @@ var HTMLIngredient = function(config, app, manager) { this.type = config.type; this.value = config.value; this.disabled = config.disabled || false; - this.disable_args = config.disable_args || false; + this.disableArgs = config.disableArgs || false; this.placeholder = config.placeholder || false; this.target = config.target; - this.toggle_values = config.toggle_values; - this.id = "ing-" + this.app.next_ing_id(); + this.toggleValues = config.toggleValues; + this.id = "ing-" + this.app.nextIngId(); }; @@ -31,12 +31,12 @@ var HTMLIngredient = function(config, app, manager) { * * @returns {string} */ -HTMLIngredient.prototype.to_html = function() { +HTMLIngredient.prototype.toHtml = function() { var inline = (this.type === "boolean" || this.type === "number" || this.type === "option" || - this.type === "short_string" || - this.type === "binary_short_string"), + this.type === "shortString" || + this.type === "binaryShortString"), html = inline ? "" : "
                   
                  ", i, m; @@ -46,50 +46,50 @@ HTMLIngredient.prototype.to_html = function() { switch (this.type) { case "string": - case "binary_string": - case "byte_array": - html += ""; break; - case "short_string": - case "binary_short_string": + case "shortString": + case "binaryShortString": html += ""; break; - case "toggle_string": + case "toggleString": html += "
                  \
                  "; break; case "number": - html += ""; break; case "boolean": - html += ""; - if (this.disable_args) { - this.manager.add_dynamic_listener("#" + this.id, "click", this.toggle_disable_args, this); + if (this.disableArgs) { + this.manager.addDynamicListener("#" + this.id, "click", this.toggleDisableArgs, this); } break; case "option": - html += ""; break; - case "populate_option": - html += ""; - this.manager.add_dynamic_listener("#" + this.id, "change", this.populate_option_change, this); + this.manager.addDynamicListener("#" + this.id, "change", this.populateOptionChange, this); break; - case "editable_option": + case "editableOption": html += "
                  "; html += ""; html += ""; html += "
                  "; - this.manager.add_dynamic_listener("#sel-" + this.id, "change", this.editable_option_change, this); + this.manager.addDynamicListener("#sel-" + this.id, "change", this.editableOptionChange, this); break; case "text": - html += ""; @@ -153,18 +153,18 @@ HTMLIngredient.prototype.to_html = function() { /** * Handler for argument disable toggle. - * Toggles disabled state for all arguments in the disable_args list for this ingredient. + * Toggles disabled state for all arguments in the disableArgs list for this ingredient. * * @param {event} e */ -HTMLIngredient.prototype.toggle_disable_args = function(e) { +HTMLIngredient.prototype.toggleDisableArgs = function(e) { var el = e.target, op = el.parentNode.parentNode, args = op.querySelectorAll(".arg-group"), els; - for (var i = 0; i < this.disable_args.length; i++) { - els = args[this.disable_args[i]].querySelectorAll("input, select, button"); + for (var i = 0; i < this.disableArgs.length; i++) { + els = args[this.disableArgs[i]].querySelectorAll("input, select, button"); for (var j = 0; j < els.length; j++) { if (els[j].getAttribute("disabled")) { @@ -175,7 +175,7 @@ HTMLIngredient.prototype.toggle_disable_args = function(e) { } } - this.manager.recipe.ing_change(); + this.manager.recipe.ingChange(); }; @@ -185,14 +185,14 @@ HTMLIngredient.prototype.toggle_disable_args = function(e) { * * @param {event} e */ -HTMLIngredient.prototype.populate_option_change = function(e) { +HTMLIngredient.prototype.populateOptionChange = function(e) { var el = e.target, op = el.parentNode.parentNode, target = op.querySelectorAll(".arg-group")[this.target].querySelector("input, select, textarea"); target.value = el.childNodes[el.selectedIndex].getAttribute("populate-value"); - this.manager.recipe.ing_change(); + this.manager.recipe.ingChange(); }; @@ -202,11 +202,11 @@ HTMLIngredient.prototype.populate_option_change = function(e) { * * @param {event} e */ -HTMLIngredient.prototype.editable_option_change = function(e) { +HTMLIngredient.prototype.editableOptionChange = function(e) { var select = e.target, input = select.nextSibling; input.value = select.childNodes[select.selectedIndex].value; - this.manager.recipe.ing_change(); + this.manager.recipe.ingChange(); }; diff --git a/src/js/views/html/HTMLOperation.js b/src/js/views/html/HTMLOperation.js index 1bf9849d..48a33661 100755 --- a/src/js/views/html/HTMLOperation.js +++ b/src/js/views/html/HTMLOperation.js @@ -17,13 +17,13 @@ var HTMLOperation = function(name, config, app, manager) { this.name = name; this.description = config.description; - this.manual_bake = config.manual_bake || false; + this.manualBake = config.manualBake || false; this.config = config; - this.ing_list = []; + this.ingList = []; for (var i = 0; i < config.args.length; i++) { var ing = new HTMLIngredient(config.args[i], this.app, this.manager); - this.ing_list.push(ing); + this.ingList.push(ing); } }; @@ -43,7 +43,7 @@ HTMLOperation.REMOVE_ICON = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwkl * * @returns {string} */ -HTMLOperation.prototype.to_stub_html = function(remove_icon) { +HTMLOperation.prototype.toStubHtml = function(removeIcon) { var html = "
                • "; } @@ -73,11 +73,11 @@ HTMLOperation.prototype.to_stub_html = function(remove_icon) { * * @returns {string} */ -HTMLOperation.prototype.to_full_html = function() { +HTMLOperation.prototype.toFullHtml = function() { var html = "
                  " + this.name + "
                  "; - for (var i = 0; i < this.ing_list.length; i++) { - html += this.ing_list[i].to_html(); + for (var i = 0; i < this.ingList.length; i++) { + html += this.ingList[i].toHtml(); } html += "
                  \ @@ -95,20 +95,20 @@ HTMLOperation.prototype.to_full_html = function() { /** * Highlights the searched string in the name and description of the operation. * - * @param {string} search_str - * @param {number} name_pos - The position of the search string in the operation name - * @param {number} desc_pos - The position of the search string in the operation description + * @param {string} searchStr + * @param {number} namePos - The position of the search string in the operation name + * @param {number} descPos - The position of the search string in the operation description */ -HTMLOperation.prototype.highlight_search_string = function(search_str, name_pos, desc_pos) { - if (name_pos >= 0) { - this.name = this.name.slice(0, name_pos) + "" + - this.name.slice(name_pos, name_pos + search_str.length) + "" + - this.name.slice(name_pos + search_str.length); +HTMLOperation.prototype.highlightSearchString = function(searchStr, namePos, descPos) { + if (namePos >= 0) { + this.name = this.name.slice(0, namePos) + "" + + this.name.slice(namePos, namePos + searchStr.length) + "" + + this.name.slice(namePos + searchStr.length); } - if (this.description && desc_pos >= 0) { - this.description = this.description.slice(0, desc_pos) + "" + - this.description.slice(desc_pos, desc_pos + search_str.length) + "" + - this.description.slice(desc_pos + search_str.length); + if (this.description && descPos >= 0) { + this.description = this.description.slice(0, descPos) + "" + + this.description.slice(descPos, descPos + searchStr.length) + "" + + this.description.slice(descPos + searchStr.length); } }; diff --git a/src/js/views/html/HighlighterWaiter.js b/src/js/views/html/HighlighterWaiter.js index 26cb46c0..506b8175 100755 --- a/src/js/views/html/HighlighterWaiter.js +++ b/src/js/views/html/HighlighterWaiter.js @@ -11,8 +11,8 @@ var HighlighterWaiter = function(app) { this.app = app; - this.mouse_button_down = false; - this.mouse_target = null; + this.mouseButtonDown = false; + this.mouseTarget = null; }; @@ -37,7 +37,7 @@ HighlighterWaiter.OUTPUT = 1; * @private * @returns {boolean} */ -HighlighterWaiter.prototype._is_selection_backwards = function() { +HighlighterWaiter.prototype._isSelectionBackwards = function() { var backwards = false, sel = window.getSelection(); @@ -60,7 +60,7 @@ HighlighterWaiter.prototype._is_selection_backwards = function() { * @param {number} offset - The offset since the last HTML element. * @returns {number} */ -HighlighterWaiter.prototype._get_output_html_offset = function(node, offset) { +HighlighterWaiter.prototype._getOutputHtmlOffset = function(node, offset) { var sel = window.getSelection(), range = document.createRange(); @@ -81,7 +81,7 @@ HighlighterWaiter.prototype._get_output_html_offset = function(node, offset) { * @returns {number} pos.start * @returns {number} pos.end */ -HighlighterWaiter.prototype._get_output_html_selection_offsets = function() { +HighlighterWaiter.prototype._getOutputHtmlSelectionOffsets = function() { var sel = window.getSelection(), range, start = 0, @@ -90,9 +90,9 @@ HighlighterWaiter.prototype._get_output_html_selection_offsets = function() { if (sel.rangeCount) { range = sel.getRangeAt(sel.rangeCount - 1); - backwards = this._is_selection_backwards(); - start = this._get_output_html_offset(range.startContainer, range.startOffset); - end = this._get_output_html_offset(range.endContainer, range.endOffset); + backwards = this._isSelectionBackwards(); + start = this._getOutputHtmlOffset(range.startContainer, range.startOffset); + end = this._getOutputHtmlOffset(range.endContainer, range.endOffset); sel.removeAllRanges(); sel.addRange(range); @@ -117,7 +117,7 @@ HighlighterWaiter.prototype._get_output_html_selection_offsets = function() { * * @param {event} e */ -HighlighterWaiter.prototype.input_scroll = function(e) { +HighlighterWaiter.prototype.inputScroll = function(e) { var el = e.target; document.getElementById("input-highlighter").scrollTop = el.scrollTop; document.getElementById("input-highlighter").scrollLeft = el.scrollLeft; @@ -130,7 +130,7 @@ HighlighterWaiter.prototype.input_scroll = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_scroll = function(e) { +HighlighterWaiter.prototype.outputScroll = function(e) { var el = e.target; document.getElementById("output-highlighter").scrollTop = el.scrollTop; document.getElementById("output-highlighter").scrollLeft = el.scrollLeft; @@ -143,18 +143,18 @@ HighlighterWaiter.prototype.output_scroll = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.input_mousedown = function(e) { - this.mouse_button_down = true; - this.mouse_target = HighlighterWaiter.INPUT; - this.remove_highlights(); +HighlighterWaiter.prototype.inputMousedown = function(e) { + this.mouseButtonDown = true; + this.mouseTarget = HighlighterWaiter.INPUT; + this.removeHighlights(); var el = e.target, start = el.selectionStart, end = el.selectionEnd; if (start !== 0 || end !== 0) { - document.getElementById("input-selection-info").innerHTML = this.selection_info(start, end); - this.highlight_output([{start: start, end: end}]); + document.getElementById("input-selection-info").innerHTML = this.selectionInfo(start, end); + this.highlightOutput([{start: start, end: end}]); } }; @@ -165,18 +165,18 @@ HighlighterWaiter.prototype.input_mousedown = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_mousedown = function(e) { - this.mouse_button_down = true; - this.mouse_target = HighlighterWaiter.OUTPUT; - this.remove_highlights(); +HighlighterWaiter.prototype.outputMousedown = function(e) { + this.mouseButtonDown = true; + this.mouseTarget = HighlighterWaiter.OUTPUT; + this.removeHighlights(); var el = e.target, start = el.selectionStart, end = el.selectionEnd; if (start !== 0 || end !== 0) { - document.getElementById("output-selection-info").innerHTML = this.selection_info(start, end); - this.highlight_input([{start: start, end: end}]); + document.getElementById("output-selection-info").innerHTML = this.selectionInfo(start, end); + this.highlightInput([{start: start, end: end}]); } }; @@ -187,13 +187,13 @@ HighlighterWaiter.prototype.output_mousedown = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_html_mousedown = function(e) { - this.mouse_button_down = true; - this.mouse_target = HighlighterWaiter.OUTPUT; +HighlighterWaiter.prototype.outputHtmlMousedown = function(e) { + this.mouseButtonDown = true; + this.mouseTarget = HighlighterWaiter.OUTPUT; - var sel = this._get_output_html_selection_offsets(); + var sel = this._getOutputHtmlSelectionOffsets(); if (sel.start !== 0 || sel.end !== 0) { - document.getElementById("output-selection-info").innerHTML = this.selection_info(sel.start, sel.end); + document.getElementById("output-selection-info").innerHTML = this.selectionInfo(sel.start, sel.end); } }; @@ -203,8 +203,8 @@ HighlighterWaiter.prototype.output_html_mousedown = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.input_mouseup = function(e) { - this.mouse_button_down = false; +HighlighterWaiter.prototype.inputMouseup = function(e) { + this.mouseButtonDown = false; }; @@ -213,8 +213,8 @@ HighlighterWaiter.prototype.input_mouseup = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_mouseup = function(e) { - this.mouse_button_down = false; +HighlighterWaiter.prototype.outputMouseup = function(e) { + this.mouseButtonDown = false; }; @@ -223,8 +223,8 @@ HighlighterWaiter.prototype.output_mouseup = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_html_mouseup = function(e) { - this.mouse_button_down = false; +HighlighterWaiter.prototype.outputHtmlMouseup = function(e) { + this.mouseButtonDown = false; }; @@ -234,11 +234,11 @@ HighlighterWaiter.prototype.output_html_mouseup = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.input_mousemove = function(e) { +HighlighterWaiter.prototype.inputMousemove = function(e) { // Check that the left mouse button is pressed - if (!this.mouse_button_down || + if (!this.mouseButtonDown || e.which !== 1 || - this.mouse_target !== HighlighterWaiter.INPUT) + this.mouseTarget !== HighlighterWaiter.INPUT) return; var el = e.target, @@ -246,8 +246,8 @@ HighlighterWaiter.prototype.input_mousemove = function(e) { end = el.selectionEnd; if (start !== 0 || end !== 0) { - document.getElementById("input-selection-info").innerHTML = this.selection_info(start, end); - this.highlight_output([{start: start, end: end}]); + document.getElementById("input-selection-info").innerHTML = this.selectionInfo(start, end); + this.highlightOutput([{start: start, end: end}]); } }; @@ -258,11 +258,11 @@ HighlighterWaiter.prototype.input_mousemove = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_mousemove = function(e) { +HighlighterWaiter.prototype.outputMousemove = function(e) { // Check that the left mouse button is pressed - if (!this.mouse_button_down || + if (!this.mouseButtonDown || e.which !== 1 || - this.mouse_target !== HighlighterWaiter.OUTPUT) + this.mouseTarget !== HighlighterWaiter.OUTPUT) return; var el = e.target, @@ -270,8 +270,8 @@ HighlighterWaiter.prototype.output_mousemove = function(e) { end = el.selectionEnd; if (start !== 0 || end !== 0) { - document.getElementById("output-selection-info").innerHTML = this.selection_info(start, end); - this.highlight_input([{start: start, end: end}]); + document.getElementById("output-selection-info").innerHTML = this.selectionInfo(start, end); + this.highlightInput([{start: start, end: end}]); } }; @@ -282,16 +282,16 @@ HighlighterWaiter.prototype.output_mousemove = function(e) { * * @param {event} e */ -HighlighterWaiter.prototype.output_html_mousemove = function(e) { +HighlighterWaiter.prototype.outputHtmlMousemove = function(e) { // Check that the left mouse button is pressed - if (!this.mouse_button_down || + if (!this.mouseButtonDown || e.which !== 1 || - this.mouse_target !== HighlighterWaiter.OUTPUT) + this.mouseTarget !== HighlighterWaiter.OUTPUT) return; - var sel = this._get_output_html_selection_offsets(); + var sel = this._getOutputHtmlSelectionOffsets(); if (sel.start !== 0 || sel.end !== 0) { - document.getElementById("output-selection-info").innerHTML = this.selection_info(sel.start, sel.end); + document.getElementById("output-selection-info").innerHTML = this.selectionInfo(sel.start, sel.end); } }; @@ -304,21 +304,21 @@ HighlighterWaiter.prototype.output_html_mousemove = function(e) { * @param {number} end - The end offset. * @returns {string} */ -HighlighterWaiter.prototype.selection_info = function(start, end) { +HighlighterWaiter.prototype.selectionInfo = function(start, end) { var width = end.toString().length; width = width < 2 ? 2 : width; - var start_str = Utils.pad(start.toString(), width, " ").replace(/ /g, " "), - end_str = Utils.pad(end.toString(), width, " ").replace(/ /g, " "), - len_str = Utils.pad((end-start).toString(), width, " ").replace(/ /g, " "); + var startStr = Utils.pad(start.toString(), width, " ").replace(/ /g, " "), + endStr = Utils.pad(end.toString(), width, " ").replace(/ /g, " "), + lenStr = Utils.pad((end-start).toString(), width, " ").replace(/ /g, " "); - return "start: " + start_str + "
                  end: " + end_str + "
                  length: " + len_str; + return "start: " + startStr + "
                  end: " + endStr + "
                  length: " + lenStr; }; /** * Removes highlighting and selection information. */ -HighlighterWaiter.prototype.remove_highlights = function() { +HighlighterWaiter.prototype.removeHighlights = function() { document.getElementById("input-highlighter").innerHTML = ""; document.getElementById("output-highlighter").innerHTML = ""; document.getElementById("input-selection-info").innerHTML = ""; @@ -335,25 +335,25 @@ HighlighterWaiter.prototype.remove_highlights = function() { * @returns {function} highlights[].b * @returns {Object[]} highlights[].args */ -HighlighterWaiter.prototype.generate_highlight_list = function() { - var recipe_config = this.app.get_recipe_config(), +HighlighterWaiter.prototype.generateHighlightList = function() { + var recipeConfig = this.app.getRecipeConfig(), highlights = []; - for (var i = 0; i < recipe_config.length; i++) { - if (recipe_config[i].disabled) continue; + for (var i = 0; i < recipeConfig.length; i++) { + if (recipeConfig[i].disabled) continue; // If any breakpoints are set, do not attempt to highlight - if (recipe_config[i].breakpoint) return false; + if (recipeConfig[i].breakpoint) return false; - var op = this.app.operations[recipe_config[i].op]; + var op = this.app.operations[recipeConfig[i].op]; // If any of the operations do not support highlighting, fail immediately. if (op.highlight === false || op.highlight === undefined) return false; highlights.push({ f: op.highlight, - b: op.highlight_reverse, - args: recipe_config[i].args + b: op.highlightReverse, + args: recipeConfig[i].args }); } @@ -372,10 +372,10 @@ HighlighterWaiter.prototype.generate_highlight_list = function() { * @param {number} pos.start - The start offset. * @param {number} pos.end - The end offset. */ -HighlighterWaiter.prototype.highlight_output = function(pos) { - var highlights = this.generate_highlight_list(); +HighlighterWaiter.prototype.highlightOutput = function(pos) { + var highlights = this.generateHighlightList(); - if (!highlights || !this.app.auto_bake_) { + if (!highlights || !this.app.autoBake_) { return false; } @@ -388,7 +388,7 @@ HighlighterWaiter.prototype.highlight_output = function(pos) { } } - document.getElementById("output-selection-info").innerHTML = this.selection_info(pos[0].start, pos[0].end); + document.getElementById("output-selection-info").innerHTML = this.selectionInfo(pos[0].start, pos[0].end); this.highlight( document.getElementById("output-text"), document.getElementById("output-highlighter"), @@ -407,10 +407,10 @@ HighlighterWaiter.prototype.highlight_output = function(pos) { * @param {number} pos.start - The start offset. * @param {number} pos.end - The end offset. */ -HighlighterWaiter.prototype.highlight_input = function(pos) { - var highlights = this.generate_highlight_list(); +HighlighterWaiter.prototype.highlightInput = function(pos) { + var highlights = this.generateHighlightList(); - if (!highlights || !this.app.auto_bake_) { + if (!highlights || !this.app.autoBake_) { return false; } @@ -423,7 +423,7 @@ HighlighterWaiter.prototype.highlight_input = function(pos) { } } - document.getElementById("input-selection-info").innerHTML = this.selection_info(pos[0].start, pos[0].end); + document.getElementById("input-selection-info").innerHTML = this.selectionInfo(pos[0].start, pos[0].end); this.highlight( document.getElementById("input-text"), document.getElementById("input-highlighter"), @@ -442,17 +442,17 @@ HighlighterWaiter.prototype.highlight_input = function(pos) { * @param {number} pos.end - The end offset. */ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) { - if (!this.app.options.show_highlighter) return false; - if (!this.app.options.attempt_highlight) return false; + if (!this.app.options.showHighlighter) return false; + if (!this.app.options.attemptHighlight) return false; // Check if there is a carriage return in the output dish as this will not // be displayed by the HTML textarea and will mess up highlighting offsets. - if (!this.app.dish_str || this.app.dish_str.indexOf("\r") >= 0) return false; + if (!this.app.dishStr || this.app.dishStr.indexOf("\r") >= 0) return false; - var start_placeholder = "[start_highlight]", - start_placeholder_regex = /\[start_highlight\]/g, - end_placeholder = "[end_highlight]", - end_placeholder_regex = /\[end_highlight\]/g, + var startPlaceholder = "[startHighlight]", + startPlaceholderRegex = /\[startHighlight\]/g, + endPlaceholder = "[endHighlight]", + endPlaceholderRegex = /\[endHighlight\]/g, text = textarea.value; // Put placeholders in position @@ -461,33 +461,33 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) { if (pos.length === 1) { if (pos[0].end < pos[0].start) return; text = text.slice(0, pos[0].start) + - start_placeholder + text.slice(pos[0].start, pos[0].end) + end_placeholder + + startPlaceholder + text.slice(pos[0].start, pos[0].end) + endPlaceholder + text.slice(pos[0].end, text.length); } else { // O(n^2) - Can anyone improve this without overwriting placeholders? var result = "", - end_placed = true; + endPlaced = true; for (var i = 0; i < text.length; i++) { for (var j = 1; j < pos.length; j++) { if (pos[j].end < pos[j].start) continue; if (pos[j].start === i) { - result += start_placeholder; - end_placed = false; + result += startPlaceholder; + endPlaced = false; } if (pos[j].end === i) { - result += end_placeholder; - end_placed = true; + result += endPlaceholder; + endPlaced = true; } } result += text[i]; } - if (!end_placed) result += end_placeholder; + if (!endPlaced) result += endPlaceholder; text = result; } - var css_class = "hl1"; - //if (colour) css_class += "-"+colour; + var cssClass = "hl1"; + //if (colour) cssClass += "-"+colour; // Remove HTML tags text = text.replace(/&/g, "&") @@ -495,8 +495,8 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) { .replace(/>/g, ">") .replace(/\n/g, " ") // Convert placeholders to tags - .replace(start_placeholder_regex, "") - .replace(end_placeholder_regex, "") + " "; + .replace(startPlaceholderRegex, "") + .replace(endPlaceholderRegex, "") + " "; // Adjust width to allow for scrollbars highlighter.style.width = textarea.clientWidth + "px"; diff --git a/src/js/views/html/InputWaiter.js b/src/js/views/html/InputWaiter.js index 73cfe792..6ffc498f 100755 --- a/src/js/views/html/InputWaiter.js +++ b/src/js/views/html/InputWaiter.js @@ -14,7 +14,7 @@ var InputWaiter = function(app, manager) { this.manager = manager; // Define keys that don't change the input so we don't have to autobake when they are pressed - this.bad_keys = [ + this.badKeys = [ 16, //Shift 17, //Ctrl 18, //Alt @@ -62,14 +62,14 @@ InputWaiter.prototype.set = function(input) { * @param {number} length - The length of the current input string * @param {number} lines - The number of the lines in the current input string */ -InputWaiter.prototype.set_input_info = function(length, lines) { +InputWaiter.prototype.setInputInfo = function(length, lines) { var width = length.toString().length; width = width < 2 ? 2 : width; - var length_str = Utils.pad(length.toString(), width, " ").replace(/ /g, " "); - var lines_str = Utils.pad(lines.toString(), width, " ").replace(/ /g, " "); + var lengthStr = Utils.pad(length.toString(), width, " ").replace(/ /g, " "); + var linesStr = Utils.pad(lines.toString(), width, " ").replace(/ /g, " "); - document.getElementById("input-info").innerHTML = "length: " + length_str + "
                  lines: " + lines_str; + document.getElementById("input-info").innerHTML = "length: " + lengthStr + "
                  lines: " + linesStr; }; @@ -81,21 +81,21 @@ InputWaiter.prototype.set_input_info = function(length, lines) { * * @fires Manager#statechange */ -InputWaiter.prototype.input_change = function(e) { +InputWaiter.prototype.inputChange = function(e) { // Remove highlighting from input and output panes as the offsets might be different now - this.manager.highlighter.remove_highlights(); + this.manager.highlighter.removeHighlights(); // Reset recipe progress as any previous processing will be redundant now this.app.progress = 0; // Update the input metadata info - var input_text = this.get(), - lines = input_text.count("\n") + 1; + var inputText = this.get(), + lines = inputText.count("\n") + 1; - this.set_input_info(input_text.length, lines); + this.setInputInfo(inputText.length, lines); - if (this.bad_keys.indexOf(e.keyCode) < 0) { + if (this.badKeys.indexOf(e.keyCode) < 0) { // Fire the statechange event as the input has been modified window.dispatchEvent(this.manager.statechange); } @@ -108,7 +108,7 @@ InputWaiter.prototype.input_change = function(e) { * * @param {event} e */ -InputWaiter.prototype.input_dragover = function(e) { +InputWaiter.prototype.inputDragover = function(e) { // This will be set if we're dragging an operation if (e.dataTransfer.effectAllowed === "move") return false; @@ -125,7 +125,7 @@ InputWaiter.prototype.input_dragover = function(e) { * * @param {event} e */ -InputWaiter.prototype.input_dragleave = function(e) { +InputWaiter.prototype.inputDragleave = function(e) { e.stopPropagation(); e.preventDefault(); e.target.classList.remove("dropping-file"); @@ -138,7 +138,7 @@ InputWaiter.prototype.input_dragleave = function(e) { * * @param {event} e */ -InputWaiter.prototype.input_drop = function(e) { +InputWaiter.prototype.inputDrop = function(e) { // This will be set if we're dragging an operation if (e.dataTransfer.effectAllowed === "move") return false; @@ -150,29 +150,29 @@ InputWaiter.prototype.input_drop = function(e) { file = e.dataTransfer.files[0], text = e.dataTransfer.getData("Text"), reader = new FileReader(), - input_charcode = "", + inputCharcode = "", offset = 0, CHUNK_SIZE = 20480; // 20KB - var set_input = function() { - if (input_charcode.length > 100000 && this.app.auto_bake_) { - this.manager.controls.set_auto_bake(false); + var setInput = function() { + if (inputCharcode.length > 100000 && this.app.autoBake_) { + this.manager.controls.setAutoBake(false); this.app.alert("Turned off Auto Bake as the input is large", "warning", 5000); } - this.set(input_charcode); - var recipe_config = this.app.get_recipe_config(); - if (!recipe_config[0] || recipe_config[0].op !== "From Hex") { - recipe_config.unshift({op:"From Hex", args:["Space"]}); - this.app.set_recipe_config(recipe_config); + this.set(inputCharcode); + var recipeConfig = this.app.getRecipeConfig(); + if (!recipeConfig[0] || recipeConfig[0].op !== "From Hex") { + recipeConfig.unshift({op:"From Hex", args:["Space"]}); + this.app.setRecipeConfig(recipeConfig); } - el.classList.remove("loading_file"); + el.classList.remove("loadingFile"); }.bind(this); var seek = function() { if (offset >= file.size) { - set_input(); + setInput(); return; } el.value = "Processing... " + Math.round(offset / file.size * 100) + "%"; @@ -182,7 +182,7 @@ InputWaiter.prototype.input_drop = function(e) { reader.onload = function(e) { var data = new Uint8Array(reader.result); - input_charcode += Utils.to_hex_fast(data); + inputCharcode += Utils.toHexFast(data); offset += CHUNK_SIZE; seek(); }; @@ -191,7 +191,7 @@ InputWaiter.prototype.input_drop = function(e) { el.classList.remove("dropping-file"); if (file) { - el.classList.add("loading_file"); + el.classList.add("loadingFile"); seek(); } else if (text) { this.set(text); @@ -205,8 +205,8 @@ InputWaiter.prototype.input_drop = function(e) { * * @fires Manager#statechange */ -InputWaiter.prototype.clear_io_click = function() { - this.manager.highlighter.remove_highlights(); +InputWaiter.prototype.clearIoClick = function() { + this.manager.highlighter.removeHighlights(); document.getElementById("input-text").value = ""; document.getElementById("output-text").value = ""; document.getElementById("input-info").innerHTML = ""; diff --git a/src/js/views/html/Manager.js b/src/js/views/html/Manager.js index b139a444..90a9b4cc 100755 --- a/src/js/views/html/Manager.js +++ b/src/js/views/html/Manager.js @@ -45,9 +45,9 @@ var Manager = function(app) { this.seasonal = new SeasonalWaiter(this.app, this); // Object to store dynamic handlers to fire on elements that may not exist yet - this.dynamic_handlers = {}; + this.dynamicHandlers = {}; - this.initialise_event_listeners(); + this.initialiseEventListeners(); }; @@ -55,8 +55,8 @@ var Manager = function(app) { * Sets up the various components and listeners. */ Manager.prototype.setup = function() { - this.recipe.initialise_operation_drag_n_drop(); - this.controls.auto_bake_change(); + this.recipe.initialiseOperationDragNDrop(); + this.controls.autoBakeChange(); this.seasonal.load(); }; @@ -64,87 +64,87 @@ Manager.prototype.setup = function() { /** * Main function to handle the creation of the event listeners. */ -Manager.prototype.initialise_event_listeners = function() { +Manager.prototype.initialiseEventListeners = function() { // Global - window.addEventListener("resize", this.window.window_resize.bind(this.window)); - window.addEventListener("blur", this.window.window_blur.bind(this.window)); - window.addEventListener("focus", this.window.window_focus.bind(this.window)); - window.addEventListener("statechange", this.app.state_change.bind(this.app)); - window.addEventListener("popstate", this.app.pop_state.bind(this.app)); + window.addEventListener("resize", this.window.windowResize.bind(this.window)); + window.addEventListener("blur", this.window.windowBlur.bind(this.window)); + window.addEventListener("focus", this.window.windowFocus.bind(this.window)); + window.addEventListener("statechange", this.app.stateChange.bind(this.app)); + window.addEventListener("popstate", this.app.popState.bind(this.app)); // Controls - document.getElementById("bake").addEventListener("click", this.controls.bake_click.bind(this.controls)); - document.getElementById("auto-bake").addEventListener("change", this.controls.auto_bake_change.bind(this.controls)); - document.getElementById("step").addEventListener("click", this.controls.step_click.bind(this.controls)); - document.getElementById("clr-recipe").addEventListener("click", this.controls.clear_recipe_click.bind(this.controls)); - document.getElementById("clr-breaks").addEventListener("click", this.controls.clear_breaks_click.bind(this.controls)); - document.getElementById("save").addEventListener("click", this.controls.save_click.bind(this.controls)); - document.getElementById("save-button").addEventListener("click", this.controls.save_button_click.bind(this.controls)); - document.getElementById("save-link-recipe-checkbox").addEventListener("change", this.controls.slr_check_change.bind(this.controls)); - document.getElementById("save-link-input-checkbox").addEventListener("change", this.controls.sli_check_change.bind(this.controls)); - document.getElementById("load").addEventListener("click", this.controls.load_click.bind(this.controls)); - document.getElementById("load-delete-button").addEventListener("click", this.controls.load_delete_click.bind(this.controls)); - document.getElementById("load-name").addEventListener("change", this.controls.load_name_change.bind(this.controls)); - document.getElementById("load-button").addEventListener("click", this.controls.load_button_click.bind(this.controls)); - this.add_multi_event_listener("#save-text", "keyup paste", this.controls.save_text_change, this.controls); + document.getElementById("bake").addEventListener("click", this.controls.bakeClick.bind(this.controls)); + document.getElementById("auto-bake").addEventListener("change", this.controls.autoBakeChange.bind(this.controls)); + document.getElementById("step").addEventListener("click", this.controls.stepClick.bind(this.controls)); + document.getElementById("clr-recipe").addEventListener("click", this.controls.clearRecipeClick.bind(this.controls)); + document.getElementById("clr-breaks").addEventListener("click", this.controls.clearBreaksClick.bind(this.controls)); + document.getElementById("save").addEventListener("click", this.controls.saveClick.bind(this.controls)); + document.getElementById("save-button").addEventListener("click", this.controls.saveButtonClick.bind(this.controls)); + document.getElementById("save-link-recipe-checkbox").addEventListener("change", this.controls.slrCheckChange.bind(this.controls)); + document.getElementById("save-link-input-checkbox").addEventListener("change", this.controls.sliCheckChange.bind(this.controls)); + document.getElementById("load").addEventListener("click", this.controls.loadClick.bind(this.controls)); + document.getElementById("load-delete-button").addEventListener("click", this.controls.loadDeleteClick.bind(this.controls)); + document.getElementById("load-name").addEventListener("change", this.controls.loadNameChange.bind(this.controls)); + document.getElementById("load-button").addEventListener("click", this.controls.loadButtonClick.bind(this.controls)); + this.addMultiEventListener("#save-text", "keyup paste", this.controls.saveTextChange, this.controls); // Operations - this.add_multi_event_listener("#search", "keyup paste search", this.ops.search_operations, this.ops); - this.add_dynamic_listener(".op_list li.operation", "dblclick", this.ops.operation_dblclick, this.ops); - document.getElementById("edit-favourites").addEventListener("click", this.ops.edit_favourites_click.bind(this.ops)); - document.getElementById("save-favourites").addEventListener("click", this.ops.save_favourites_click.bind(this.ops)); - document.getElementById("reset-favourites").addEventListener("click", this.ops.reset_favourites_click.bind(this.ops)); - this.add_dynamic_listener(".op_list .op-icon", "mouseover", this.ops.op_icon_mouseover, this.ops); - this.add_dynamic_listener(".op_list .op-icon", "mouseleave", this.ops.op_icon_mouseleave, this.ops); - this.add_dynamic_listener(".op_list", "oplistcreate", this.ops.op_list_create, this.ops); - this.add_dynamic_listener("li.operation", "operationadd", this.recipe.op_add.bind(this.recipe)); + this.addMultiEventListener("#search", "keyup paste search", this.ops.searchOperations, this.ops); + this.addDynamicListener(".op-list li.operation", "dblclick", this.ops.operationDblclick, this.ops); + document.getElementById("edit-favourites").addEventListener("click", this.ops.editFavouritesClick.bind(this.ops)); + document.getElementById("save-favourites").addEventListener("click", this.ops.saveFavouritesClick.bind(this.ops)); + document.getElementById("reset-favourites").addEventListener("click", this.ops.resetFavouritesClick.bind(this.ops)); + this.addDynamicListener(".op-list .op-icon", "mouseover", this.ops.opIconMouseover, this.ops); + this.addDynamicListener(".op-list .op-icon", "mouseleave", this.ops.opIconMouseleave, this.ops); + this.addDynamicListener(".op-list", "oplistcreate", this.ops.opListCreate, this.ops); + this.addDynamicListener("li.operation", "operationadd", this.recipe.opAdd.bind(this.recipe)); // Recipe - this.add_dynamic_listener(".arg", "keyup", this.recipe.ing_change, this.recipe); - this.add_dynamic_listener(".arg", "change", this.recipe.ing_change, this.recipe); - this.add_dynamic_listener(".disable-icon", "click", this.recipe.disable_click, this.recipe); - this.add_dynamic_listener(".breakpoint", "click", this.recipe.breakpoint_click, this.recipe); - this.add_dynamic_listener("#rec_list li.operation", "dblclick", this.recipe.operation_dblclick, this.recipe); - this.add_dynamic_listener("#rec_list li.operation > div", "dblclick", this.recipe.operation_child_dblclick, this.recipe); - this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a", "click", this.recipe.dropdown_toggle_click, this.recipe); - this.add_dynamic_listener("#rec_list", "operationremove", this.recipe.op_remove.bind(this.recipe)); + this.addDynamicListener(".arg", "keyup", this.recipe.ingChange, this.recipe); + this.addDynamicListener(".arg", "change", this.recipe.ingChange, this.recipe); + this.addDynamicListener(".disable-icon", "click", this.recipe.disableClick, this.recipe); + this.addDynamicListener(".breakpoint", "click", this.recipe.breakpointClick, this.recipe); + this.addDynamicListener("#rec-list li.operation", "dblclick", this.recipe.operationDblclick, this.recipe); + this.addDynamicListener("#rec-list li.operation > div", "dblclick", this.recipe.operationChildDblclick, this.recipe); + this.addDynamicListener("#rec-list .input-group .dropdown-menu a", "click", this.recipe.dropdownToggleClick, this.recipe); + this.addDynamicListener("#rec-list", "operationremove", this.recipe.opRemove.bind(this.recipe)); // Input - this.add_multi_event_listener("#input-text", "keyup paste", this.input.input_change, this.input); - document.getElementById("reset-layout").addEventListener("click", this.app.reset_layout.bind(this.app)); - document.getElementById("clr-io").addEventListener("click", this.input.clear_io_click.bind(this.input)); - document.getElementById("input-text").addEventListener("dragover", this.input.input_dragover.bind(this.input)); - document.getElementById("input-text").addEventListener("dragleave", this.input.input_dragleave.bind(this.input)); - document.getElementById("input-text").addEventListener("drop", this.input.input_drop.bind(this.input)); - document.getElementById("input-text").addEventListener("scroll", this.highlighter.input_scroll.bind(this.highlighter)); - document.getElementById("input-text").addEventListener("mouseup", this.highlighter.input_mouseup.bind(this.highlighter)); - document.getElementById("input-text").addEventListener("mousemove", this.highlighter.input_mousemove.bind(this.highlighter)); - this.add_multi_event_listener("#input-text", "mousedown dblclick select", this.highlighter.input_mousedown, this.highlighter); + this.addMultiEventListener("#input-text", "keyup paste", this.input.inputChange, this.input); + document.getElementById("reset-layout").addEventListener("click", this.app.resetLayout.bind(this.app)); + document.getElementById("clr-io").addEventListener("click", this.input.clearIoClick.bind(this.input)); + document.getElementById("input-text").addEventListener("dragover", this.input.inputDragover.bind(this.input)); + document.getElementById("input-text").addEventListener("dragleave", this.input.inputDragleave.bind(this.input)); + document.getElementById("input-text").addEventListener("drop", this.input.inputDrop.bind(this.input)); + document.getElementById("input-text").addEventListener("scroll", this.highlighter.inputScroll.bind(this.highlighter)); + document.getElementById("input-text").addEventListener("mouseup", this.highlighter.inputMouseup.bind(this.highlighter)); + document.getElementById("input-text").addEventListener("mousemove", this.highlighter.inputMousemove.bind(this.highlighter)); + this.addMultiEventListener("#input-text", "mousedown dblclick select", this.highlighter.inputMousedown, this.highlighter); // Output - document.getElementById("save-to-file").addEventListener("click", this.output.save_click.bind(this.output)); - document.getElementById("switch").addEventListener("click", this.output.switch_click.bind(this.output)); - document.getElementById("undo-switch").addEventListener("click", this.output.undo_switch_click.bind(this.output)); - document.getElementById("maximise-output").addEventListener("click", this.output.maximise_output_click.bind(this.output)); - document.getElementById("output-text").addEventListener("scroll", this.highlighter.output_scroll.bind(this.highlighter)); - document.getElementById("output-text").addEventListener("mouseup", this.highlighter.output_mouseup.bind(this.highlighter)); - document.getElementById("output-text").addEventListener("mousemove", this.highlighter.output_mousemove.bind(this.highlighter)); - document.getElementById("output-html").addEventListener("mouseup", this.highlighter.output_html_mouseup.bind(this.highlighter)); - document.getElementById("output-html").addEventListener("mousemove", this.highlighter.output_html_mousemove.bind(this.highlighter)); - this.add_multi_event_listener("#output-text", "mousedown dblclick select", this.highlighter.output_mousedown, this.highlighter); - this.add_multi_event_listener("#output-html", "mousedown dblclick select", this.highlighter.output_html_mousedown, this.highlighter); + document.getElementById("save-to-file").addEventListener("click", this.output.saveClick.bind(this.output)); + document.getElementById("switch").addEventListener("click", this.output.switchClick.bind(this.output)); + document.getElementById("undo-switch").addEventListener("click", this.output.undoSwitchClick.bind(this.output)); + document.getElementById("maximise-output").addEventListener("click", this.output.maximiseOutputClick.bind(this.output)); + document.getElementById("output-text").addEventListener("scroll", this.highlighter.outputScroll.bind(this.highlighter)); + document.getElementById("output-text").addEventListener("mouseup", this.highlighter.outputMouseup.bind(this.highlighter)); + document.getElementById("output-text").addEventListener("mousemove", this.highlighter.outputMousemove.bind(this.highlighter)); + document.getElementById("output-html").addEventListener("mouseup", this.highlighter.outputHtmlMouseup.bind(this.highlighter)); + document.getElementById("output-html").addEventListener("mousemove", this.highlighter.outputHtmlMousemove.bind(this.highlighter)); + this.addMultiEventListener("#output-text", "mousedown dblclick select", this.highlighter.outputMousedown, this.highlighter); + this.addMultiEventListener("#output-html", "mousedown dblclick select", this.highlighter.outputHtmlMousedown, this.highlighter); // Options - document.getElementById("options").addEventListener("click", this.options.options_click.bind(this.options)); - document.getElementById("reset-options").addEventListener("click", this.options.reset_options_click.bind(this.options)); - $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.switch_change.bind(this.options)); - $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.set_word_wrap.bind(this.options)); - this.add_dynamic_listener(".option-item input[type=number]", "keyup", this.options.number_change, this.options); - this.add_dynamic_listener(".option-item input[type=number]", "change", this.options.number_change, this.options); - this.add_dynamic_listener(".option-item select", "change", this.options.select_change, this.options); + document.getElementById("options").addEventListener("click", this.options.optionsClick.bind(this.options)); + document.getElementById("reset-options").addEventListener("click", this.options.resetOptionsClick.bind(this.options)); + $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.switchChange.bind(this.options)); + $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.setWordWrap.bind(this.options)); + this.addDynamicListener(".option-item input[type=number]", "keyup", this.options.numberChange, this.options); + this.addDynamicListener(".option-item input[type=number]", "change", this.options.numberChange, this.options); + this.addDynamicListener(".option-item select", "change", this.options.selectChange, this.options); // Misc - document.getElementById("alert-close").addEventListener("click", this.app.alert_close_click.bind(this.app)); + document.getElementById("alert-close").addEventListener("click", this.app.alertCloseClick.bind(this.app)); }; @@ -152,19 +152,19 @@ Manager.prototype.initialise_event_listeners = function() { * Adds an event listener to each element in the specified group. * * @param {string} selector - A selector string for the element group to add the event to, see - * this.get_all() - * @param {string} event_type - The event to listen for + * this.getAll() + * @param {string} eventType - The event to listen for * @param {function} callback - The function to execute when the event is triggered * @param {Object} [scope=this] - The object to bind to the callback function * * @example * // Calls the clickable function whenever any element with the .clickable class is clicked - * this.add_listeners(".clickable", "click", this.clickable, this); + * this.addListeners(".clickable", "click", this.clickable, this); */ -Manager.prototype.add_listeners = function(selector, event_type, callback, scope) { +Manager.prototype.addListeners = function(selector, eventType, callback, scope) { scope = scope || this; [].forEach.call(document.querySelectorAll(selector), function(el) { - el.addEventListener(event_type, callback.bind(scope)); + el.addEventListener(eventType, callback.bind(scope)); }); }; @@ -173,17 +173,17 @@ Manager.prototype.add_listeners = function(selector, event_type, callback, scope * Adds multiple event listeners to the specified element. * * @param {string} selector - A selector string for the element to add the events to - * @param {string} event_types - A space-separated string of all the event types to listen for + * @param {string} eventTypes - A space-separated string of all the event types to listen for * @param {function} callback - The function to execute when the events are triggered * @param {Object} [scope=this] - The object to bind to the callback function * * @example * // Calls the search function whenever the the keyup, paste or search events are triggered on the * // search element - * this.add_multi_event_listener("search", "keyup paste search", this.search, this); + * this.addMultiEventListener("search", "keyup paste search", this.search, this); */ -Manager.prototype.add_multi_event_listener = function(selector, event_types, callback, scope) { - var evs = event_types.split(" "); +Manager.prototype.addMultiEventListener = function(selector, eventTypes, callback, scope) { + var evs = eventTypes.split(" "); for (var i = 0; i < evs.length; i++) { document.querySelector(selector).addEventListener(evs[i], callback.bind(scope)); } @@ -194,19 +194,19 @@ Manager.prototype.add_multi_event_listener = function(selector, event_types, cal * Adds multiple event listeners to each element in the specified group. * * @param {string} selector - A selector string for the element group to add the events to - * @param {string} event_types - A space-separated string of all the event types to listen for + * @param {string} eventTypes - A space-separated string of all the event types to listen for * @param {function} callback - The function to execute when the events are triggered * @param {Object} [scope=this] - The object to bind to the callback function * * @example * // Calls the save function whenever the the keyup or paste events are triggered on any element * // with the .saveable class - * this.add_multi_event_listener(".saveable", "keyup paste", this.save, this); + * this.addMultiEventListener(".saveable", "keyup paste", this.save, this); */ -Manager.prototype.add_multi_event_listeners = function(selector, event_types, callback, scope) { - var evs = event_types.split(" "); +Manager.prototype.addMultiEventListeners = function(selector, eventTypes, callback, scope) { + var evs = eventTypes.split(" "); for (var i = 0; i < evs.length; i++) { - this.add_listeners(selector, evs[i], callback, scope); + this.addListeners(selector, evs[i], callback, scope); } }; @@ -216,28 +216,28 @@ Manager.prototype.add_multi_event_listeners = function(selector, event_types, ca * may not exist in the DOM yet. * * @param {string} selector - A selector string for the element(s) to add the event to - * @param {string} event_type - The event(s) to listen for + * @param {string} eventType - The event(s) to listen for * @param {function} callback - The function to execute when the event(s) is/are triggered * @param {Object} [scope=this] - The object to bind to the callback function * * @example * // Pops up an alert whenever any button is clicked, even if it is added to the DOM after this * // listener is created - * this.add_dynamic_listener("button", "click", alert, this); + * this.addDynamicListener("button", "click", alert, this); */ -Manager.prototype.add_dynamic_listener = function(selector, event_type, callback, scope) { - var event_config = { +Manager.prototype.addDynamicListener = function(selector, eventType, callback, scope) { + var eventConfig = { selector: selector, callback: callback.bind(scope || this) }; - if (this.dynamic_handlers.hasOwnProperty(event_type)) { + if (this.dynamicHandlers.hasOwnProperty(eventType)) { // Listener already exists, add new handler to the appropriate list - this.dynamic_handlers[event_type].push(event_config); + this.dynamicHandlers[eventType].push(eventConfig); } else { - this.dynamic_handlers[event_type] = [event_config]; + this.dynamicHandlers[eventType] = [eventConfig]; // Set up listener for this new type - document.addEventListener(event_type, this.dynamic_listener_handler.bind(this)); + document.addEventListener(eventType, this.dynamicListenerHandler.bind(this)); } }; @@ -248,8 +248,8 @@ Manager.prototype.add_dynamic_listener = function(selector, event_type, callback * * @param {Event} e - The event to be handled */ -Manager.prototype.dynamic_listener_handler = function(e) { - var handlers = this.dynamic_handlers[e.type], +Manager.prototype.dynamicListenerHandler = function(e) { + var handlers = this.dynamicHandlers[e.type], matches = e.target.matches || e.target.webkitMatchesSelector || e.target.mozMatchesSelector || diff --git a/src/js/views/html/OperationsWaiter.js b/src/js/views/html/OperationsWaiter.js index 11d7aa7f..3b9b4e2d 100755 --- a/src/js/views/html/OperationsWaiter.js +++ b/src/js/views/html/OperationsWaiter.js @@ -16,7 +16,7 @@ var OperationsWaiter = function(app, manager) { this.manager = manager; this.options = {}; - this.remove_intent = false; + this.removeIntent = false; }; @@ -26,17 +26,17 @@ var OperationsWaiter = function(app, manager) { * * @param {event} e */ -OperationsWaiter.prototype.search_operations = function(e) { +OperationsWaiter.prototype.searchOperations = function(e) { var ops, selected; if (e.type === "search") { // Search e.preventDefault(); ops = document.querySelectorAll("#search-results li"); if (ops.length) { - selected = this.get_selected_op(ops); + selected = this.getSelectedOp(ops); if (selected > -1) { - this.manager.recipe.add_operation(ops[selected].innerHTML); - this.app.auto_bake(); + this.manager.recipe.addOperation(ops[selected].innerHTML); + this.app.autoBake(); } } } @@ -47,7 +47,7 @@ OperationsWaiter.prototype.search_operations = function(e) { e.preventDefault(); ops = document.querySelectorAll("#search-results li"); if (ops.length) { - selected = this.get_selected_op(ops); + selected = this.getSelectedOp(ops); if (selected > -1) { ops[selected].classList.remove("selected-op"); } @@ -58,7 +58,7 @@ OperationsWaiter.prototype.search_operations = function(e) { e.preventDefault(); ops = document.querySelectorAll("#search-results li"); if (ops.length) { - selected = this.get_selected_op(ops); + selected = this.getSelectedOp(ops); if (selected > -1) { ops[selected].classList.remove("selected-op"); } @@ -66,26 +66,26 @@ OperationsWaiter.prototype.search_operations = function(e) { ops[selected-1].classList.add("selected-op"); } } else { - var search_results_el = document.getElementById("search-results"), + var searchResultsEl = document.getElementById("search-results"), el = e.target, str = el.value; - while (search_results_el.firstChild) { - $(search_results_el.firstChild).popover("destroy"); - search_results_el.removeChild(search_results_el.firstChild); + while (searchResultsEl.firstChild) { + $(searchResultsEl.firstChild).popover("destroy"); + searchResultsEl.removeChild(searchResultsEl.firstChild); } $("#categories .in").collapse("hide"); if (str) { - var matched_ops = this.filter_operations(str, true), - matched_ops_html = ""; + var matchedOps = this.filterOperations(str, true), + matchedOpsHtml = ""; - for (var i = 0; i < matched_ops.length; i++) { - matched_ops_html += matched_ops[i].to_stub_html(); + for (var i = 0; i < matchedOps.length; i++) { + matchedOpsHtml += matchedOps[i].toStubHtml(); } - search_results_el.innerHTML = matched_ops_html; - search_results_el.dispatchEvent(this.manager.oplistcreate); + searchResultsEl.innerHTML = matchedOpsHtml; + searchResultsEl.dispatchEvent(this.manager.oplistcreate); } } }; @@ -94,37 +94,37 @@ OperationsWaiter.prototype.search_operations = function(e) { /** * Filters operations based on the search string and returns the matching ones. * - * @param {string} search_str + * @param {string} searchStr * @param {boolean} highlight - Whether or not to highlight the matching string in the operation * name and description * @returns {string[]} */ -OperationsWaiter.prototype.filter_operations = function(search_str, highlight) { - var matched_ops = [], - matched_descs = []; +OperationsWaiter.prototype.filterOperations = function(searchStr, highlight) { + var matchedOps = [], + matchedDescs = []; - search_str = search_str.toLowerCase(); + searchStr = searchStr.toLowerCase(); - for (var op_name in this.app.operations) { - var op = this.app.operations[op_name], - name_pos = op_name.toLowerCase().indexOf(search_str), - desc_pos = op.description.toLowerCase().indexOf(search_str); + for (var opName in this.app.operations) { + var op = this.app.operations[opName], + namePos = opName.toLowerCase().indexOf(searchStr), + descPos = op.description.toLowerCase().indexOf(searchStr); - if (name_pos >= 0 || desc_pos >= 0) { - var operation = new HTMLOperation(op_name, this.app.operations[op_name], this.app, this.manager); + if (namePos >= 0 || descPos >= 0) { + var operation = new HTMLOperation(opName, this.app.operations[opName], this.app, this.manager); if (highlight) { - operation.highlight_search_string(search_str, name_pos, desc_pos); + operation.highlightSearchString(searchStr, namePos, descPos); } - if (name_pos < 0) { - matched_ops.push(operation); + if (namePos < 0) { + matchedOps.push(operation); } else { - matched_descs.push(operation); + matchedDescs.push(operation); } } } - return matched_descs.concat(matched_ops); + return matchedDescs.concat(matchedOps); }; @@ -135,7 +135,7 @@ OperationsWaiter.prototype.filter_operations = function(search_str, highlight) { * @param {element[]} ops * @returns {number} */ -OperationsWaiter.prototype.get_selected_op = function(ops) { +OperationsWaiter.prototype.getSelectedOp = function(ops) { for (var i = 0; i < ops.length; i++) { if (ops[i].classList.contains("selected-op")) { return i; @@ -151,8 +151,8 @@ OperationsWaiter.prototype.get_selected_op = function(ops) { * @listens Manager#oplistcreate * @param {event} e */ -OperationsWaiter.prototype.op_list_create = function(e) { - this.manager.recipe.create_sortable_seed_list(e.target); +OperationsWaiter.prototype.opListCreate = function(e) { + this.manager.recipe.createSortableSeedList(e.target); $("[data-toggle=popover]").popover(); }; @@ -163,11 +163,11 @@ OperationsWaiter.prototype.op_list_create = function(e) { * * @param {event} e */ -OperationsWaiter.prototype.operation_dblclick = function(e) { +OperationsWaiter.prototype.operationDblclick = function(e) { var li = e.target; - this.manager.recipe.add_operation(li.textContent); - this.app.auto_bake(); + this.manager.recipe.addOperation(li.textContent); + this.app.autoBake(); }; @@ -177,46 +177,46 @@ OperationsWaiter.prototype.operation_dblclick = function(e) { * * @param {event} e */ -OperationsWaiter.prototype.edit_favourites_click = function(e) { +OperationsWaiter.prototype.editFavouritesClick = function(e) { e.preventDefault(); e.stopPropagation(); // Add favourites to modal - var fav_cat = this.app.categories.filter(function(c) { + var favCat = this.app.categories.filter(function(c) { return c.name === "Favourites"; })[0]; var html = ""; - for (var i = 0; i < fav_cat.ops.length; i++) { - var op_name = fav_cat.ops[i]; - var operation = new HTMLOperation(op_name, this.app.operations[op_name], this.app, this.manager); - html += operation.to_stub_html(true); + for (var i = 0; i < favCat.ops.length; i++) { + var opName = favCat.ops[i]; + var operation = new HTMLOperation(opName, this.app.operations[opName], this.app, this.manager); + html += operation.toStubHtml(true); } - var edit_favourites_list = document.getElementById("edit-favourites-list"); - edit_favourites_list.innerHTML = html; - this.remove_intent = false; + var editFavouritesList = document.getElementById("edit-favourites-list"); + editFavouritesList.innerHTML = html; + this.removeIntent = false; - var editable_list = Sortable.create(edit_favourites_list, { + var editableList = Sortable.create(editFavouritesList, { filter: ".remove-icon", onFilter: function (evt) { - var el = editable_list.closest(evt.item); + var el = editableList.closest(evt.item); if (el) { $(el).popover("destroy"); el.parentNode.removeChild(el); } }, onEnd: function(evt) { - if (this.remove_intent) evt.item.remove(); + if (this.removeIntent) evt.item.remove(); }.bind(this), }); - Sortable.utils.on(edit_favourites_list, "dragleave", function() { - this.remove_intent = true; + Sortable.utils.on(editFavouritesList, "dragleave", function() { + this.removeIntent = true; }.bind(this)); - Sortable.utils.on(edit_favourites_list, "dragover", function() { - this.remove_intent = false; + Sortable.utils.on(editFavouritesList, "dragover", function() { + this.removeIntent = false; }.bind(this)); $("#edit-favourites-list [data-toggle=popover]").popover(); @@ -228,18 +228,18 @@ OperationsWaiter.prototype.edit_favourites_click = function(e) { * Handler for save favourites click events. * Saves the selected favourites and reloads them. */ -OperationsWaiter.prototype.save_favourites_click = function() { - var favourites_list = [], +OperationsWaiter.prototype.saveFavouritesClick = function() { + var favouritesList = [], favs = document.querySelectorAll("#edit-favourites-list li"); for (var i = 0; i < favs.length; i++) { - favourites_list.push(favs[i].textContent); + favouritesList.push(favs[i].textContent); } - this.app.save_favourites(favourites_list); - this.app.load_favourites(); - this.app.populate_operations_list(); - this.manager.recipe.initialise_operation_drag_n_drop(); + this.app.saveFavourites(favouritesList); + this.app.loadFavourites(); + this.app.populateOperationsList(); + this.manager.recipe.initialiseOperationDragNDrop(); }; @@ -247,37 +247,37 @@ OperationsWaiter.prototype.save_favourites_click = function() { * Handler for reset favourites click events. * Resets favourites to their defaults. */ -OperationsWaiter.prototype.reset_favourites_click = function() { - this.app.reset_favourites(); +OperationsWaiter.prototype.resetFavouritesClick = function() { + this.app.resetFavourites(); }; /** - * Handler for op_icon mouseover events. + * Handler for opIcon mouseover events. * Hides any popovers already showing on the operation so that there aren't two at once. * * @param {event} e */ -OperationsWaiter.prototype.op_icon_mouseover = function(e) { - var op_el = e.target.parentNode; +OperationsWaiter.prototype.opIconMouseover = function(e) { + var opEl = e.target.parentNode; if (e.target.getAttribute("data-toggle") === "popover") { - $(op_el).popover("hide"); + $(opEl).popover("hide"); } }; /** - * Handler for op_icon mouseleave events. + * Handler for opIcon mouseleave events. * If this icon created a popover and we're moving back to the operation element, display the * operation popover again. * * @param {event} e */ -OperationsWaiter.prototype.op_icon_mouseleave = function(e) { - var op_el = e.target.parentNode, - to_el = e.toElement || e.relatedElement; +OperationsWaiter.prototype.opIconMouseleave = function(e) { + var opEl = e.target.parentNode, + toEl = e.toElement || e.relatedElement; - if (e.target.getAttribute("data-toggle") === "popover" && to_el === op_el) { - $(op_el).popover("show"); + if (e.target.getAttribute("data-toggle") === "popover" && toEl === opEl) { + $(opEl).popover("show"); } }; diff --git a/src/js/views/html/OptionsWaiter.js b/src/js/views/html/OptionsWaiter.js index 05d80185..3650fce5 100755 --- a/src/js/views/html/OptionsWaiter.js +++ b/src/js/views/html/OptionsWaiter.js @@ -52,7 +52,7 @@ OptionsWaiter.prototype.load = function(options) { * Handler for options click events. * Dispays the options pane. */ -OptionsWaiter.prototype.options_click = function() { +OptionsWaiter.prototype.optionsClick = function() { $("#options-modal").modal(); }; @@ -61,7 +61,7 @@ OptionsWaiter.prototype.options_click = function() { * Handler for reset options click events. * Resets options back to their default values. */ -OptionsWaiter.prototype.reset_options_click = function() { +OptionsWaiter.prototype.resetOptionsClick = function() { this.load(this.app.doptions); }; @@ -73,7 +73,7 @@ OptionsWaiter.prototype.reset_options_click = function() { * @param {event} e * @param {boolean} state */ -OptionsWaiter.prototype.switch_change = function(e, state) { +OptionsWaiter.prototype.switchChange = function(e, state) { var el = e.target, option = el.getAttribute("option"); @@ -88,7 +88,7 @@ OptionsWaiter.prototype.switch_change = function(e, state) { * * @param {event} e */ -OptionsWaiter.prototype.number_change = function(e) { +OptionsWaiter.prototype.numberChange = function(e) { var el = e.target, option = el.getAttribute("option"); @@ -103,7 +103,7 @@ OptionsWaiter.prototype.number_change = function(e) { * * @param {event} e */ -OptionsWaiter.prototype.select_change = function(e) { +OptionsWaiter.prototype.selectChange = function(e) { var el = e.target, option = el.getAttribute("option"); @@ -113,16 +113,16 @@ OptionsWaiter.prototype.select_change = function(e) { /** - * Sets or unsets word wrap on the input and output depending on the word_wrap option value. + * Sets or unsets word wrap on the input and output depending on the wordWrap option value. */ -OptionsWaiter.prototype.set_word_wrap = function() { +OptionsWaiter.prototype.setWordWrap = function() { document.getElementById("input-text").classList.remove("word-wrap"); document.getElementById("output-text").classList.remove("word-wrap"); document.getElementById("output-html").classList.remove("word-wrap"); document.getElementById("input-highlighter").classList.remove("word-wrap"); document.getElementById("output-highlighter").classList.remove("word-wrap"); - if (!this.app.options.word_wrap) { + if (!this.app.options.wordWrap) { document.getElementById("input-text").classList.add("word-wrap"); document.getElementById("output-text").classList.add("word-wrap"); document.getElementById("output-html").classList.add("word-wrap"); diff --git a/src/js/views/html/OutputWaiter.js b/src/js/views/html/OutputWaiter.js index 38f93708..b7bb3d74 100755 --- a/src/js/views/html/OutputWaiter.js +++ b/src/js/views/html/OutputWaiter.js @@ -28,47 +28,47 @@ OutputWaiter.prototype.get = function() { /** * Sets the output in the output textarea. * - * @param {string} data_str - The output string/HTML + * @param {string} dataStr - The output string/HTML * @param {string} type - The data type of the output * @param {number} duration - The length of time (ms) it took to generate the output */ -OutputWaiter.prototype.set = function(data_str, type, duration) { - var output_text = document.getElementById("output-text"), - output_html = document.getElementById("output-html"), - output_highlighter = document.getElementById("output-highlighter"), - input_highlighter = document.getElementById("input-highlighter"); +OutputWaiter.prototype.set = function(dataStr, type, duration) { + var outputText = document.getElementById("output-text"), + outputHtml = document.getElementById("output-html"), + outputHighlighter = document.getElementById("output-highlighter"), + inputHighlighter = document.getElementById("input-highlighter"); if (type === "html") { - output_text.style.display = "none"; - output_html.style.display = "block"; - output_highlighter.display = "none"; - input_highlighter.display = "none"; + outputText.style.display = "none"; + outputHtml.style.display = "block"; + outputHighlighter.display = "none"; + inputHighlighter.display = "none"; - output_text.value = ""; - output_html.innerHTML = data_str; + outputText.value = ""; + outputHtml.innerHTML = dataStr; // Execute script sections - var script_elements = output_html.querySelectorAll("script"); - for (var i = 0; i < script_elements.length; i++) { + var scriptElements = outputHtml.querySelectorAll("script"); + for (var i = 0; i < scriptElements.length; i++) { try { - eval(script_elements[i].innerHTML); // eslint-disable-line no-eval + eval(scriptElements[i].innerHTML); // eslint-disable-line no-eval } catch (err) { console.error(err); } } } else { - output_text.style.display = "block"; - output_html.style.display = "none"; - output_highlighter.display = "block"; - input_highlighter.display = "block"; + outputText.style.display = "block"; + outputHtml.style.display = "none"; + outputHighlighter.display = "block"; + inputHighlighter.display = "block"; - output_text.value = Utils.printable(data_str, true); - output_html.innerHTML = ""; + outputText.value = Utils.printable(dataStr, true); + outputHtml.innerHTML = ""; } - this.manager.highlighter.remove_highlights(); - var lines = data_str.count("\n") + 1; - this.set_output_info(data_str.length, lines, duration); + this.manager.highlighter.removeHighlights(); + var lines = dataStr.count("\n") + 1; + this.setOutputInfo(dataStr.length, lines, duration); }; @@ -79,17 +79,17 @@ OutputWaiter.prototype.set = function(data_str, type, duration) { * @param {number} lines - The number of the lines in the current output string * @param {number} duration - The length of time (ms) it took to generate the output */ -OutputWaiter.prototype.set_output_info = function(length, lines, duration) { +OutputWaiter.prototype.setOutputInfo = function(length, lines, duration) { var width = length.toString().length; width = width < 4 ? 4 : width; - var length_str = Utils.pad(length.toString(), width, " ").replace(/ /g, " "); - var lines_str = Utils.pad(lines.toString(), width, " ").replace(/ /g, " "); - var time_str = Utils.pad(duration.toString() + "ms", width, " ").replace(/ /g, " "); + var lengthStr = Utils.pad(length.toString(), width, " ").replace(/ /g, " "); + var linesStr = Utils.pad(lines.toString(), width, " ").replace(/ /g, " "); + var timeStr = Utils.pad(duration.toString() + "ms", width, " ").replace(/ /g, " "); - document.getElementById("output-info").innerHTML = "time: " + time_str + - "
                  length: " + length_str + - "
                  lines: " + lines_str; + document.getElementById("output-info").innerHTML = "time: " + timeStr + + "
                  length: " + lengthStr + + "
                  lines: " + linesStr; document.getElementById("input-selection-info").innerHTML = ""; document.getElementById("output-selection-info").innerHTML = ""; }; @@ -99,24 +99,24 @@ OutputWaiter.prototype.set_output_info = function(length, lines, duration) { * Adjusts the display properties of the output buttons so that they fit within the current width * without wrapping or overflowing. */ -OutputWaiter.prototype.adjust_width = function() { - var output = document.getElementById("output"), - save_to_file = document.getElementById("save-to-file"), - switch_io = document.getElementById("switch"), - undo_switch = document.getElementById("undo-switch"), - maximise_output = document.getElementById("maximise-output"); +OutputWaiter.prototype.adjustWidth = function() { + var output = document.getElementById("output"), + saveToFile = document.getElementById("save-to-file"), + switchIO = document.getElementById("switch"), + undoSwitch = document.getElementById("undo-switch"), + maximiseOutput = document.getElementById("maximise-output"); if (output.clientWidth < 680) { - save_to_file.childNodes[1].nodeValue = ""; - switch_io.childNodes[1].nodeValue = ""; - undo_switch.childNodes[1].nodeValue = ""; - maximise_output.childNodes[1].nodeValue = ""; + saveToFile.childNodes[1].nodeValue = ""; + switchIO.childNodes[1].nodeValue = ""; + undoSwitch.childNodes[1].nodeValue = ""; + maximiseOutput.childNodes[1].nodeValue = ""; } else { - save_to_file.childNodes[1].nodeValue = " Save to file"; - switch_io.childNodes[1].nodeValue = " Move output to input"; - undo_switch.childNodes[1].nodeValue = " Undo"; - maximise_output.childNodes[1].nodeValue = - maximise_output.getAttribute("title") === "Maximise" ? " Max" : " Restore"; + saveToFile.childNodes[1].nodeValue = " Save to file"; + switchIO.childNodes[1].nodeValue = " Move output to input"; + undoSwitch.childNodes[1].nodeValue = " Undo"; + maximiseOutput.childNodes[1].nodeValue = + maximiseOutput.getAttribute("title") === "Maximise" ? " Max" : " Restore"; } }; @@ -125,8 +125,8 @@ OutputWaiter.prototype.adjust_width = function() { * Handler for save click events. * Saves the current output to a file, downloaded as a URL octet stream. */ -OutputWaiter.prototype.save_click = function() { - var data = Utils.to_base64(this.app.dish_str), +OutputWaiter.prototype.saveClick = function() { + var data = Utils.toBase64(this.app.dishStr), filename = window.prompt("Please enter a filename:", "download.dat"); if (filename) { @@ -148,10 +148,10 @@ OutputWaiter.prototype.save_click = function() { * Handler for switch click events. * Moves the current output into the input textarea. */ -OutputWaiter.prototype.switch_click = function() { - this.switch_orig_data = this.manager.input.get(); +OutputWaiter.prototype.switchClick = function() { + this.switchOrigData = this.manager.input.get(); document.getElementById("undo-switch").disabled = false; - this.app.set_input(this.app.dish_str); + this.app.setInput(this.app.dishStr); }; @@ -159,8 +159,8 @@ OutputWaiter.prototype.switch_click = function() { * Handler for undo switch click events. * Removes the output from the input and replaces the input that was removed. */ -OutputWaiter.prototype.undo_switch_click = function() { - this.app.set_input(this.switch_orig_data); +OutputWaiter.prototype.undoSwitchClick = function() { + this.app.setInput(this.switchOrigData); document.getElementById("undo-switch").disabled = true; }; @@ -169,20 +169,20 @@ OutputWaiter.prototype.undo_switch_click = function() { * Handler for maximise output click events. * Resizes the output frame to be as large as possible, or restores it to its original size. */ -OutputWaiter.prototype.maximise_output_click = function(e) { +OutputWaiter.prototype.maximiseOutputClick = function(e) { var el = e.target.id === "maximise-output" ? e.target : e.target.parentNode; if (el.getAttribute("title") === "Maximise") { - this.app.column_splitter.collapse(0); - this.app.column_splitter.collapse(1); - this.app.io_splitter.collapse(0); + this.app.columnSplitter.collapse(0); + this.app.columnSplitter.collapse(1); + this.app.ioSplitter.collapse(0); el.setAttribute("title", "Restore"); el.innerHTML = " Restore"; - this.adjust_width(); + this.adjustWidth(); } else { el.setAttribute("title", "Maximise"); el.innerHTML = " Max"; - this.app.reset_layout(); + this.app.resetLayout(); } }; diff --git a/src/js/views/html/RecipeWaiter.js b/src/js/views/html/RecipeWaiter.js index 3d59c84e..1d259474 100755 --- a/src/js/views/html/RecipeWaiter.js +++ b/src/js/views/html/RecipeWaiter.js @@ -14,79 +14,79 @@ var RecipeWaiter = function(app, manager) { this.app = app; this.manager = manager; - this.remove_intent = false; + this.removeIntent = false; }; /** * Sets up the drag and drop capability for operations in the operations and recipe areas. */ -RecipeWaiter.prototype.initialise_operation_drag_n_drop = function() { - var rec_list = document.getElementById("rec_list"); +RecipeWaiter.prototype.initialiseOperationDragNDrop = function() { + var recList = document.getElementById("rec-list"); // Recipe list - Sortable.create(rec_list, { + Sortable.create(recList, { group: "recipe", sort: true, animation: 0, delay: 0, filter: ".arg-input,.arg", // Relies on commenting out a line in Sortable.js which calls evt.preventDefault() - setData: function(dataTransfer, drag_el) { - dataTransfer.setData("Text", drag_el.querySelector(".arg-title").textContent); + setData: function(dataTransfer, dragEl) { + dataTransfer.setData("Text", dragEl.querySelector(".arg-title").textContent); }, onEnd: function(evt) { - if (this.remove_intent) { + if (this.removeIntent) { evt.item.remove(); evt.target.dispatchEvent(this.manager.operationremove); } }.bind(this) }); - Sortable.utils.on(rec_list, "dragover", function() { - this.remove_intent = false; + Sortable.utils.on(recList, "dragover", function() { + this.removeIntent = false; }.bind(this)); - Sortable.utils.on(rec_list, "dragleave", function() { - this.remove_intent = true; + Sortable.utils.on(recList, "dragleave", function() { + this.removeIntent = true; this.app.progress = 0; }.bind(this)); - Sortable.utils.on(rec_list, "touchend", function(e) { + Sortable.utils.on(recList, "touchend", function(e) { var loc = e.changedTouches[0], target = document.elementFromPoint(loc.clientX, loc.clientY); - this.remove_intent = !rec_list.contains(target); + this.removeIntent = !recList.contains(target); }.bind(this)); // Favourites category - document.querySelector("#categories a").addEventListener("dragover", this.fav_dragover.bind(this)); - document.querySelector("#categories a").addEventListener("dragleave", this.fav_dragleave.bind(this)); - document.querySelector("#categories a").addEventListener("drop", this.fav_drop.bind(this)); + document.querySelector("#categories a").addEventListener("dragover", this.favDragover.bind(this)); + document.querySelector("#categories a").addEventListener("dragleave", this.favDragleave.bind(this)); + document.querySelector("#categories a").addEventListener("drop", this.favDrop.bind(this)); }; /** * Creates a drag-n-droppable seed list of operations. * - * @param {element} list_el - The list the initialise + * @param {element} listEl - The list the initialise */ -RecipeWaiter.prototype.create_sortable_seed_list = function(list_el) { - Sortable.create(list_el, { +RecipeWaiter.prototype.createSortableSeedList = function(listEl) { + Sortable.create(listEl, { group: { name: "recipe", pull: "clone", put: false }, sort: false, - setData: function(dataTransfer, drag_el) { - dataTransfer.setData("Text", drag_el.textContent); + setData: function(dataTransfer, dragEl) { + dataTransfer.setData("Text", dragEl.textContent); }, onStart: function(evt) { $(evt.item).popover("destroy"); evt.item.setAttribute("data-toggle", "popover-disabled"); }, - onEnd: this.op_sort_end.bind(this) + onEnd: this.opSortEnd.bind(this) }); }; @@ -99,9 +99,9 @@ RecipeWaiter.prototype.create_sortable_seed_list = function(list_el) { * @fires Manager#operationadd * @param {event} evt */ -RecipeWaiter.prototype.op_sort_end = function(evt) { - if (this.remove_intent) { - if (evt.item.parentNode.id === "rec_list") { +RecipeWaiter.prototype.opSortEnd = function(evt) { + if (this.removeIntent) { + if (evt.item.parentNode.id === "rec-list") { evt.item.remove(); } return; @@ -112,11 +112,11 @@ RecipeWaiter.prototype.op_sort_end = function(evt) { $(evt.clone).popover(); $(evt.clone).children("[data-toggle=popover]").popover(); - if (evt.item.parentNode.id !== "rec_list") { + if (evt.item.parentNode.id !== "rec-list") { return; } - this.build_recipe_operation(evt.item); + this.buildRecipeOperation(evt.item); evt.item.dispatchEvent(this.manager.operationadd); }; @@ -128,7 +128,7 @@ RecipeWaiter.prototype.op_sort_end = function(evt) { * * @param {event} e */ -RecipeWaiter.prototype.fav_dragover = function(e) { +RecipeWaiter.prototype.favDragover = function(e) { if (e.dataTransfer.effectAllowed !== "move") return false; @@ -153,7 +153,7 @@ RecipeWaiter.prototype.fav_dragover = function(e) { * * @param {event} e */ -RecipeWaiter.prototype.fav_dragleave = function(e) { +RecipeWaiter.prototype.favDragleave = function(e) { e.stopPropagation(); e.preventDefault(); document.querySelector("#categories a").classList.remove("favourites-hover"); @@ -166,13 +166,13 @@ RecipeWaiter.prototype.fav_dragleave = function(e) { * * @param {event} e */ -RecipeWaiter.prototype.fav_drop = function(e) { +RecipeWaiter.prototype.favDrop = function(e) { e.stopPropagation(); e.preventDefault(); e.target.classList.remove("favourites-hover"); - var op_name = e.dataTransfer.getData("Text"); - this.app.add_favourite(op_name); + var opName = e.dataTransfer.getData("Text"); + this.app.addFavourite(opName); }; @@ -181,7 +181,7 @@ RecipeWaiter.prototype.fav_drop = function(e) { * * @fires Manager#statechange */ -RecipeWaiter.prototype.ing_change = function() { +RecipeWaiter.prototype.ingChange = function() { window.dispatchEvent(this.manager.statechange); }; @@ -193,7 +193,7 @@ RecipeWaiter.prototype.ing_change = function() { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.disable_click = function(e) { +RecipeWaiter.prototype.disableClick = function(e) { var icon = e.target; if (icon.getAttribute("disabled") === "false") { @@ -218,7 +218,7 @@ RecipeWaiter.prototype.disable_click = function(e) { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.breakpoint_click = function(e) { +RecipeWaiter.prototype.breakpointClick = function(e) { var bp = e.target; if (bp.getAttribute("break") === "false") { @@ -240,7 +240,7 @@ RecipeWaiter.prototype.breakpoint_click = function(e) { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.operation_dblclick = function(e) { +RecipeWaiter.prototype.operationDblclick = function(e) { e.target.remove(); window.dispatchEvent(this.manager.statechange); }; @@ -253,7 +253,7 @@ RecipeWaiter.prototype.operation_dblclick = function(e) { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.operation_child_dblclick = function(e) { +RecipeWaiter.prototype.operationChildDblclick = function(e) { e.target.parentNode.remove(); window.dispatchEvent(this.manager.statechange); }; @@ -262,31 +262,31 @@ RecipeWaiter.prototype.operation_child_dblclick = function(e) { /** * Generates a configuration object to represent the current recipe. * - * @returns {recipe_config} + * @returns {recipeConfig} */ -RecipeWaiter.prototype.get_config = function() { - var config = [], ingredients, ing_list, disabled, bp, item, - operations = document.querySelectorAll("#rec_list li.operation"); +RecipeWaiter.prototype.getConfig = function() { + var config = [], ingredients, ingList, disabled, bp, item, + operations = document.querySelectorAll("#rec-list li.operation"); for (var i = 0; i < operations.length; i++) { ingredients = []; disabled = operations[i].querySelector(".disable-icon"); bp = operations[i].querySelector(".breakpoint"); - ing_list = operations[i].querySelectorAll(".arg"); + ingList = operations[i].querySelectorAll(".arg"); - for (var j = 0; j < ing_list.length; j++) { - if (ing_list[j].getAttribute("type") === "checkbox") { + for (var j = 0; j < ingList.length; j++) { + if (ingList[j].getAttribute("type") === "checkbox") { // checkbox - ingredients[j] = ing_list[j].checked; - } else if (ing_list[j].classList.contains("toggle-string")) { - // toggle_string + ingredients[j] = ingList[j].checked; + } else if (ingList[j].classList.contains("toggle-string")) { + // toggleString ingredients[j] = { - option: ing_list[j].previousSibling.children[0].textContent.slice(0, -1), - string: ing_list[j].value + option: ingList[j].previousSibling.children[0].textContent.slice(0, -1), + string: ingList[j].value }; } else { // all others - ingredients[j] = ing_list[j].value; + ingredients[j] = ingList[j].value; } } @@ -315,8 +315,8 @@ RecipeWaiter.prototype.get_config = function() { * * @param {number} position */ -RecipeWaiter.prototype.update_breakpoint_indicator = function(position) { - var operations = document.querySelectorAll("#rec_list li.operation"); +RecipeWaiter.prototype.updateBreakpointIndicator = function(position) { + var operations = document.querySelectorAll("#rec-list li.operation"); for (var i = 0; i < operations.length; i++) { if (i === position) { operations[i].classList.add("break"); @@ -333,19 +333,19 @@ RecipeWaiter.prototype.update_breakpoint_indicator = function(position) { * * @param {element} el - The operation stub element from the operations pane */ -RecipeWaiter.prototype.build_recipe_operation = function(el) { - var op_name = el.textContent; - var op = new HTMLOperation(op_name, this.app.operations[op_name], this.app, this.manager); - el.innerHTML = op.to_full_html(); +RecipeWaiter.prototype.buildRecipeOperation = function(el) { + var opName = el.textContent; + var op = new HTMLOperation(opName, this.app.operations[opName], this.app, this.manager); + el.innerHTML = op.toFullHtml(); - if (this.app.operations[op_name].flow_control) { + if (this.app.operations[opName].flowControl) { el.classList.add("flow-control-op"); } // Disable auto-bake if this is a manual op - this should be moved to the 'operationadd' // handler after event restructuring - if (op.manual_bake && this.app.auto_bake_) { - this.manager.controls.set_auto_bake(false); + if (op.manualBake && this.app.autoBake_) { + this.manager.controls.setAutoBake(false); this.app.alert("Auto-Bake is disabled by default when using this operation.", "info", 5000); } }; @@ -357,13 +357,13 @@ RecipeWaiter.prototype.build_recipe_operation = function(el) { * @param {string} name - The name of the operation to add * @returns {element} */ -RecipeWaiter.prototype.add_operation = function(name) { +RecipeWaiter.prototype.addOperation = function(name) { var item = document.createElement("li"); item.classList.add("operation"); item.innerHTML = name; - this.build_recipe_operation(item); - document.getElementById("rec_list").appendChild(item); + this.buildRecipeOperation(item); + document.getElementById("rec-list").appendChild(item); item.dispatchEvent(this.manager.operationadd); return item; @@ -375,27 +375,27 @@ RecipeWaiter.prototype.add_operation = function(name) { * * @fires Manager#operationremove */ -RecipeWaiter.prototype.clear_recipe = function() { - var rec_list = document.getElementById("rec_list"); - while (rec_list.firstChild) { - rec_list.removeChild(rec_list.firstChild); +RecipeWaiter.prototype.clearRecipe = function() { + var recList = document.getElementById("rec-list"); + while (recList.firstChild) { + recList.removeChild(recList.firstChild); } - rec_list.dispatchEvent(this.manager.operationremove); + recList.dispatchEvent(this.manager.operationremove); }; /** - * Handler for operation dropdown events from toggle_string arguments. + * Handler for operation dropdown events from toggleString arguments. * Sets the selected option as the name of the button. * * @param {event} e */ -RecipeWaiter.prototype.dropdown_toggle_click = function(e) { +RecipeWaiter.prototype.dropdownToggleClick = function(e) { var el = e.target, button = el.parentNode.parentNode.previousSibling; button.innerHTML = el.textContent + " "; - this.ing_change(); + this.ingChange(); }; @@ -406,7 +406,7 @@ RecipeWaiter.prototype.dropdown_toggle_click = function(e) { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.op_add = function(e) { +RecipeWaiter.prototype.opAdd = function(e) { window.dispatchEvent(this.manager.statechange); }; @@ -418,6 +418,6 @@ RecipeWaiter.prototype.op_add = function(e) { * @fires Manager#statechange * @param {event} e */ -RecipeWaiter.prototype.op_remove = function(e) { +RecipeWaiter.prototype.opRemove = function(e) { window.dispatchEvent(this.manager.statechange); }; diff --git a/src/js/views/html/SeasonalWaiter.js b/src/js/views/html/SeasonalWaiter.js index d480b521..a4e6cecf 100755 --- a/src/js/views/html/SeasonalWaiter.js +++ b/src/js/views/html/SeasonalWaiter.js @@ -24,22 +24,22 @@ SeasonalWaiter.prototype.load = function() { // Snowfall if (now.getMonth() === 11 && now.getDate() > 12) { // Dec 13 -> Dec 31 this.app.options.snow = false; - this.create_snow_option(); - $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox[option='snow']", this.let_it_snow.bind(this)); - window.addEventListener("resize", this.let_it_snow.bind(this)); - this.manager.add_listeners(".btn", "click", this.shake_off_snow, this); - if (now.getDate() === 25) this.let_it_snow(); + this.createSnowOption(); + $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox[option='snow']", this.letItSnow.bind(this)); + window.addEventListener("resize", this.letItSnow.bind(this)); + this.manager.addListeners(".btn", "click", this.shakeOffSnow, this); + if (now.getDate() === 25) this.letItSnow(); } // SpiderChef // if (now.getMonth() === 3 && now.getDate() === 1) { // Apr 1 - // this.insert_spider_icons(); - // this.insert_spider_text(); + // this.insertSpiderIcons(); + // this.insertSpiderText(); // } // Konami code this.kkeys = []; - window.addEventListener("keydown", this.konami_code_listener.bind(this)); + window.addEventListener("keydown", this.konamiCodeListener.bind(this)); }; @@ -47,7 +47,7 @@ SeasonalWaiter.prototype.load = function() { * Replaces chef icons with spider icons. * #spiderchef */ -SeasonalWaiter.prototype.insert_spider_icons = function() { +SeasonalWaiter.prototype.insertSpiderIcons = function() { var spider16 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC", spider32 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC", spider64 = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAJZUlEQVR42u1ZaXMU1xXlJ+gHpFITOy5sAcnIYCi2aIL2bTSSZrSP1NpHK41kISQBHgFaQIJBCMwi4TFUGYcPzggwEMcxHVGxQaag5QR/np/QP+Hmnsdr0hpmtEACwulb9aq7p7d3zz333Pt61q2zzTbbbLPNNttss80222yzzTbbVmu7MzKcJRWVkXjntqam6jyURPeGQqeTpqbOqp+evxC5dGlam5m5rE3PzGi8Hzx/4aLzbXDe09HdYxwZHaPc4mLFXVoW9pRXGNv3pDngeHlNLfE2Ljjj4xPOUGjSYKfpq6/+TLdv36bbX39Nt27epGvXvqSLl6bp3LlPtdOnz7jWrPNZ7kLCKCovp5bOTmP/4EHq6vmYMtzuSKbbbQCAHE8Rxd47MjrmuHjxkjF3/z4tLCzQkyc6PX78mB49ekQPHjygub/P0d27f6FrX/6JpqbO0YkT48E1R/sCr9cYHZ+gqrp64mPq+riXcoqKKC0vP9q6VyV/fQOiH+LrsPVY7z82PBKZnb1Bd+7cpfn5eQbgCT1hAADC/MN5uj83R99881eanZ2lL5gN/nrxjihAXwvOJ7l9vuiBQ4dF9LEtLC0V+2rv/ijTX6luaCS3rxT57wADAMTBQ4c9PIIDg4PBwYOHaHhklM5MnSWkwLff/o0+v3qVHv34Iz344QEDc4d8VVXUEAhQXXMzVdQqzKweKq6oABARzOGNOZ+Wl6fD6T25ubQrPT0E5xF93o82tbdjkkZ+iZfAAgbD6fZ6o339A8S0p7HjJ2h4eIQOHf6EujlV9nX3UOj0JDXzfXje+KlTdOPGDeF0T1+fGHg+2JSen08tHZ0CiPySEoPn8vq1IaOgIAzneQK0UzjcQd6qaqrlCVfV1+tpubnRnv5+2p2ZqYMF/oZGPTh0xLhy5Sr9wLn9j++/p5nLn9FxBoLZQJ1dKrkys6iYNeTExEnx3PqWFuF4W9deKq2upkEGCyzyMBC709MFC7r391Fjayv9MSdHZyCU1xJ5FjrNdN6VnU1KS4CjU4Yoh/m8CsezCguFJgAMV05ueP+BfhF5OL+gL9A/f/qJ7t3TaPLMFB09eoy6mTkMGg2PjTELOsS20OcTACgMKqJugqA0NtE7ycn0202b6A+ZmYIVAAKApGZlgRHB/0lqQPAqFEVE9hntM0R0ZblTzeswWdCeU8HAtYW+Uu0AUx+0f/jwoXD+56c/073v7tHU2XMiFbrUfVTNAtfL10FIAQL2QftsBrOEnavld5kg7E7PoF+99x79ev162rJrV9RMi6a2dvKUlQsR5uAgII7/ivMsbEE4g2hggjzC7LQL1OftovoO0WJKUn0gYEAn2hmMXo4QHIXQIfLfsfOXPwuLvB86cpQqamooyEzg1BLMwv04RkoE+B3B4BBBMHEcCwIP0N+ByJdUVhpgBJ7j4WvdANDjeTUglOaWEChfJF7uJzPX2HEPaj1vg7EAbHO5QnAeIPgqKvUB7gtAdbBgcvKMqOnc/NAIVwCcq21qElFnCgvaI9cBBFKhlSPbPzBIbbzduGULpWzfLkDAdZs++sgEwSlZqoIJMg2CzFSNGzODwdBfOi26+w4YTCm9LhDQwQDzdzguFf4FALjciTws8/u1yyx2N2/dovPnL9DRY8PkZ204xtuhoSM0wI7V8DEiirQCCHD+99u2CUdx3Lmvmz7kfemoGDgPEDr4HNKAf1MlAC4wgMGLWFJXQUrklZSEX6rLE2rOyDIQGlhgBUAyYFEZkm2vAGVi4qQ+x83M0389pevXr6OToy07d4qcR+krr/KzqpeJ/IfjGO+npDx3FCKHVPjd1q2LAMBI3ryZ9vL7U56BEzLfD80ACFba876OlGCQV9dAcT0Pyw7PgWij6zPP5Xt9EYgg+n3LosdVzdfz5CI8KY1LH31+5Yro9KanZwjHmPzmHTsoOeVDemfDBuE8dGVnWpqx3unUrE4CDLCAG64XAHB88IFgQV5xMY7DFmc16A6CZvnNBYYVcW+yKj0A/VHTsQ8dwMPNc6X+Gg0VIGbVpzYGWundjRujmGQWi9Eol7+TJ0/R2Nhx2sNlM9YJRPDdDRsM5DGPJB4KHOIhngHhAwixAGAAuDZ2lsuiYnFWBQOYrdEYNochilyiV6YHoH+rRNJkAG+fUw31PzU7Z1EFKPD69CIuQ1Bm6URoh8tFmVym3nc6rZOPyi0cD8HxeHPg3x2InNrbS79JTsYzNXmPuBclsO3ZvKwAOJEGsmI5rT0M+gSf3y9K5LIA1LUEIlL1k0AhCYBH5r9TCqBqib4D+c/1PyInGOThkvuaHCYALhlpbQWBMGR/4IpzTqlpbKQyf0045vdoe0zATHagSYMeWFMkbscnHRYPZjoFJaIiUkz9EJy15j/X3qCsAIqMcFjSWrNE1Iygg0fEmrtLzEUTdT/OhBFht9fHDVCbEUt3LJxi08B8Xj6vTDESriq9lVWqBECgHujqiqAUmufb1X3cfRXoluhjZWiwkOnSUcUS6ZD8LUmmhks6b5j1ezkAkAKZBe5QvPPcNBnoCawMwT66Qxk0R2xwwRAui2iSDGuaPDcubzo3EJq8wcx/9Vmk3QryH42QBQCFF0UagIiJtjX6DskIXTLEucJSHIIIMuO0BOcjn3A3ybU/lu5RCUBc5qA0Ih0Q2EWiCPRk7VfMNhjLW1zETic1tLYZDMKyuSsdfh5l6bwho5+0il4kyA0VohlNcF5FP8DlWo/VB16HYB2hJ0pzgIe2mcXxP2IOumPRY17U0tll8KIkZNb+sppafOxYkQPSaYfchyYoL9GMqWYpTLRIq1QUcT4O3aPQgqVqPwIOIMwDhzX6mQUFIQAgo+9MzcrWrML3mj6+YIKiFCZyhL87RqVQKrEskF+P1BUvfLCAkfRwoPUtq6l5o5+lZb5SolJo6oT8avTCl+c9OTmat6pKW8mLkvBpGzlvsiGuQr4ZEEwA1EQgoR/gNtxIxKBluz+OtMJiF31jHxqXBiAqAUj4WRxpADFM0DCFlv1khvX7Wol4vF4AIldVVxdZqlrIfiCYQPHDy6bAGv7nKYRVY6JewExZVAP+ey5Rv+Ba97aaUHMW5NauLmMZFkegBb/EP14d6NoS9QLWFSzWBmuZza8CQmSpXsAqmGtVy14VALWuuYWWy+W3OteXa4jwceQX6+BKG6J1/8+2VCNkm2222WabbbbZZpttttlmm22rt38DCdA0vq3bcAkAAAAASUVORK5CYII="; @@ -67,12 +67,12 @@ SeasonalWaiter.prototype.insert_spider_icons = function() { * Replaces all instances of the word "cyber" with "spider". * #spiderchef */ -SeasonalWaiter.prototype.insert_spider_text = function() { +SeasonalWaiter.prototype.insertSpiderText = function() { // Title document.title = document.title.replace(/Cyber/g, "Spider"); // Body - SeasonalWaiter.tree_walk(document.body, function(node) { + SeasonalWaiter.treeWalk(document.body, function(node) { // process only text nodes if (node.nodeType === 3) { node.nodeValue = node.nodeValue.replace(/Cyber/g, "Spider"); @@ -80,7 +80,7 @@ SeasonalWaiter.prototype.insert_spider_text = function() { }, true); // Bake button - SeasonalWaiter.tree_walk(document.getElementById("bake-group"), function(node) { + SeasonalWaiter.treeWalk(document.getElementById("bake-group"), function(node) { // process only text nodes if (node.nodeType === 3) { node.nodeValue = node.nodeValue.replace(/Bake/g, "Spin"); @@ -96,15 +96,15 @@ SeasonalWaiter.prototype.insert_spider_text = function() { * Adds an option to make it snow. * #letitsnow */ -SeasonalWaiter.prototype.create_snow_option = function() { - var options_body = document.getElementById("options-body"), - option_item = document.createElement("div"); +SeasonalWaiter.prototype.createSnowOption = function() { + var optionsBody = document.getElementById("options-body"), + optionItem = document.createElement("div"); - option_item.className = "option-item"; - option_item.innerHTML = + optionItem.className = "option-item"; + optionItem.innerHTML = "\ Let it snow"; - options_body.appendChild(option_item); + optionsBody.appendChild(optionItem); this.manager.options.load(); }; @@ -114,14 +114,14 @@ SeasonalWaiter.prototype.create_snow_option = function() { * Initialises a snowstorm. * #letitsnow */ -SeasonalWaiter.prototype.let_it_snow = function() { +SeasonalWaiter.prototype.letItSnow = function() { $(document).snowfall("clear"); if (!this.app.options.snow) return; var options = {}, - firefox_version = navigator.userAgent.match(/Firefox\/(\d\d?)/); + firefoxVersion = navigator.userAgent.match(/Firefox\/(\d\d?)/); - if (firefox_version && parseInt(firefox_version[1], 10) < 30) { + if (firefoxVersion && parseInt(firefoxVersion[1], 10) < 30) { // Firefox < 30 options = { flakeCount: 10, @@ -163,12 +163,12 @@ SeasonalWaiter.prototype.let_it_snow = function() { * When a button is clicked, shake the snow off that button. * #letitsnow */ -SeasonalWaiter.prototype.shake_off_snow = function(e) { +SeasonalWaiter.prototype.shakeOffSnow = function(e) { var el = e.target, rect = el.getBoundingClientRect(), canvases = document.querySelectorAll("canvas.snowfall-canvas"), canvas = null, - remove_func = function() { + removeFunc = function() { ctx.clearRect(0, 0, canvas.width, canvas.height); $(this).fadeIn(); }; @@ -178,7 +178,7 @@ SeasonalWaiter.prototype.shake_off_snow = function(e) { if (canvas.style.left === rect.left + "px" && canvas.style.top === (rect.top - 20) + "px") { var ctx = canvas.getContext("2d"); - $(canvas).fadeOut("slow", remove_func); + $(canvas).fadeOut("slow", removeFunc); break; } } @@ -190,7 +190,7 @@ SeasonalWaiter.prototype.shake_off_snow = function(e) { * sequence. * #konamicode */ -SeasonalWaiter.prototype.konami_code_listener = function(e) { +SeasonalWaiter.prototype.konamiCodeListener = function(e) { this.kkeys.push(e.keyCode); var konami = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]; for (var i = 0; i < this.kkeys.length; i++) { @@ -212,20 +212,20 @@ SeasonalWaiter.prototype.konami_code_listener = function(e) { * @static * @param {element} parent - The DOM node to start from * @param {Function} fn - The callback function to operate on each node - * @param {booleam} all_nodes - Whether to operate on every node or not + * @param {booleam} allNodes - Whether to operate on every node or not */ -SeasonalWaiter.tree_walk = (function() { +SeasonalWaiter.treeWalk = (function() { // Create closure for constants var skipTags = { "SCRIPT": true, "IFRAME": true, "OBJECT": true, "EMBED": true, "STYLE": true, "LINK": true, "META": true }; - return function(parent, fn, all_nodes) { + return function(parent, fn, allNodes) { var node = parent.firstChild; while (node && node !== parent) { - if (all_nodes || node.nodeType === 1) { + if (allNodes || node.nodeType === 1) { if (fn(node) === false) { return(false); } diff --git a/src/js/views/html/WindowWaiter.js b/src/js/views/html/WindowWaiter.js index 3f905b62..6c3b427b 100755 --- a/src/js/views/html/WindowWaiter.js +++ b/src/js/views/html/WindowWaiter.js @@ -18,9 +18,9 @@ var WindowWaiter = function(app) { * Resets the layout of CyberChef's panes after 200ms (so that continuous resizing doesn't cause * continuous resetting). */ -WindowWaiter.prototype.window_resize = function() { - clearTimeout(this.reset_layout_timeout); - this.reset_layout_timeout = setTimeout(this.app.reset_layout.bind(this.app), 200); +WindowWaiter.prototype.windowResize = function() { + clearTimeout(this.resetLayoutTimeout); + this.resetLayoutTimeout = setTimeout(this.app.resetLayout.bind(this.app), 200); }; @@ -29,8 +29,8 @@ WindowWaiter.prototype.window_resize = function() { * Saves the current time so that we can calculate how long the window was unfocussed for when * focus is returned. */ -WindowWaiter.prototype.window_blur = function() { - this.window_blur_time = new Date().getTime(); +WindowWaiter.prototype.windowBlur = function() { + this.windowBlurTime = new Date().getTime(); }; @@ -44,9 +44,9 @@ WindowWaiter.prototype.window_blur = function() { * This will stop baking taking a long time when the CyberChef browser tab has been unfocused for * a long time and the browser has swapped out all its memory. */ -WindowWaiter.prototype.window_focus = function() { - var unfocused_time = new Date().getTime() - this.window_blur_time; - if (unfocused_time > 60000) { - this.app.silent_bake(); +WindowWaiter.prototype.windowFocus = function() { + var unfocusedTime = new Date().getTime() - this.windowBlurTime; + if (unfocusedTime > 60000) { + this.app.silentBake(); } }; diff --git a/src/js/views/html/main.js b/src/js/views/html/main.js index 71cbb7ad..dbe6e342 100755 --- a/src/js/views/html/main.js +++ b/src/js/views/html/main.js @@ -10,7 +10,7 @@ * Main function used to build the CyberChef web app. */ var main = function() { - var default_favourites = [ + var defaultFavourites = [ "To Base64", "From Base64", "To Hex", @@ -23,27 +23,27 @@ var main = function() { "Fork" ]; - var default_options = { - update_url : true, - show_highlighter : true, - treat_as_utf8 : true, - word_wrap : true, - show_errors : true, - error_timeout : 4000, - auto_bake_threshold : 200, - attempt_highlight : true, - snow : false, + var defaultOptions = { + updateUrl : true, + showHighlighter : true, + treatAsUtf8 : true, + wordWrap : true, + showErrors : true, + errorTimeout : 4000, + autoBakeThreshold : 200, + attemptHighlight : true, + snow : false, }; document.removeEventListener("DOMContentLoaded", main, false); - window.app = new HTMLApp(Categories, OperationConfig, default_favourites, default_options); + window.app = new HTMLApp(Categories, OperationConfig, defaultFavourites, defaultOptions); window.app.setup(); }; // Fix issues with browsers that don't support console.log() window.console = console || {log: function() {}, error: function() {}}; -window.compile_time = moment.tz("<%= grunt.template.today() %>", "ddd MMM D YYYY HH:mm:ss", "UTC").valueOf(); -window.compile_message = "<%= compile_msg %>"; +window.compileTime = moment.tz("<%= grunt.template.today() %>", "ddd MMM D YYYY HH:mm:ss", "UTC").valueOf(); +window.compileMessage = "<%= compileMsg %>"; document.addEventListener("DOMContentLoaded", main, false); diff --git a/src/static/stats.txt b/src/static/stats.txt index 211ff731..88c04a7d 100644 --- a/src/static/stats.txt +++ b/src/static/stats.txt @@ -1,9 +1,9 @@ 211 source files -114836 lines +114840 lines 4.3M size 141 JavaScript source files -105679 lines +105680 lines 3.7M size 83 third party JavaScript source files @@ -11,7 +11,7 @@ 3.0M size 58 first party JavaScript source files -19421 lines +19422 lines 732K size 3.4M uncompressed JavaScript size