From 26474020951fcf97696e99b6fa561d6b68a6e983 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 7 Feb 2015 02:04:44 -0800 Subject: [PATCH] Use info.repl in updateDefineFromField, fix regex --- Marlin/configurator/css/configurator.css | 4 +- Marlin/configurator/index.html | 2 +- Marlin/configurator/js/configurator.js | 129 +++++++++++------------ 3 files changed, 62 insertions(+), 73 deletions(-) diff --git a/Marlin/configurator/css/configurator.css b/Marlin/configurator/css/configurator.css index 2572c1c8ba..5fb1f8d582 100644 --- a/Marlin/configurator/css/configurator.css +++ b/Marlin/configurator/css/configurator.css @@ -6,8 +6,8 @@ body { margin: 0; padding: 0; background: #56A; color: #FFC; font-family: sans-s #main { max-width: 1000px; margin: 0 auto; } #main { padding: 0 4%; width: 92%; } #main { font-family: monospace; } - -#message { width: 80%; margin: 0 auto 0.25em; color: #FF0; text-align: center; } +h1, #message { text-align: center; } +#message { width: 80%; margin: 0 auto 0.25em; color: #FF0; } #message p { padding: 2px 0; } #message p.error, #message p.message { color: #F00; background: #FF4; font-weight: bold; border-radius: 0.8em; } #message p.message { color: #080; background: #CFC; } diff --git a/Marlin/configurator/index.html b/Marlin/configurator/index.html index 279f07e98f..f6c318ccf3 100644 --- a/Marlin/configurator/index.html +++ b/Marlin/configurator/index.html @@ -13,7 +13,7 @@
-

Marlin Configurator 0.1a

+

Marlin Configurator

Enter values in the form, get a Marlin configuration.
Will include a drop-down of known configurations.

diff --git a/Marlin/configurator/js/configurator.js b/Marlin/configurator/js/configurator.js index e761aecf96..5bd580025b 100644 --- a/Marlin/configurator/js/configurator.js +++ b/Marlin/configurator/js/configurator.js @@ -125,7 +125,7 @@ var configuratorApp = (function(){ complete: function() { ajax_count++; if (ajax_count >= 3) { - $.each(config_files, function(i,fname){ if (typeof loaded_items[fname] != 'undefined') loaded_items[fname](); }); + $.each(config_files, function(i,fname){ if (loaded_items[fname] !== undefined) loaded_items[fname](); }); self.refreshConfigForm(); if (success_count < ajax_count) self.setMessage('Unable to load configurations. Use the upload field instead.', 'error'); @@ -137,7 +137,7 @@ var configuratorApp = (function(){ setMessage: function(msg,type) { if (msg) { - if (typeof type == 'undefined') type = 'message'; + if (type === undefined) type = 'message'; var $err = $('

'+msg+'

'), err = $err[0]; $('#message').prepend($err); var baseColor = $err.css('color').replace(/rgba?\(([^),]+,[^),]+,[^),]+).*/, 'rgba($1,'); @@ -155,7 +155,7 @@ var configuratorApp = (function(){ } else { $('#message p.error, #message p.warning').each(function() { - if (typeof this.pulser != 'undefined' && this.pulser) + if (this.pulser !== undefined && this.pulser) clearInterval(this.pulser); $(this).remove(); }); @@ -440,30 +440,16 @@ var configuratorApp = (function(){ switch(inf.type) { case 'switch': var slash = val ? '' : '//'; - newline = (inf.pre + slash + inf.define + inf.post); + newline = inf.line.replace(inf.repl, '$1'+slash+'$3'); break; case 'quoted': - if (isCheck) { - this.log(name + ' should not be a checkbox', 1); - var slash = val ? '' : '//'; - newline = (inf.pre + slash + inf.define + '"'+val+'"' + inf.post); - } - else { - newline = inf.pre + inf.define + '"'+val+'"' + inf.post; - } - break; case 'plain': - if (isCheck) { - this.log(name + ' should not be a checkbox', 1); - var slash = val ? '' : '//'; - newline = (inf.pre + slash + inf.define + val + inf.post); - } - else { - newline = inf.pre + inf.define + val + inf.post; - } + if (isCheck) + this.setMessage(name + ' should not be a checkbox!', 'error'); + else + newline = inf.line.replace(inf.repl, '$1'+val.replace('$','\\$')+'$3'); break; } - this.setDefineLine(name, newline); }, @@ -536,7 +522,7 @@ var configuratorApp = (function(){ * Purge #define information for one of the config files */ purgeDefineInfo: function(adv) { - if (typeof adv == 'undefined') adv = false; + if (adv === undefined) adv = false; $('[defineInfo]').each(function() { if (adv === this.defineInfo.adv) $(this).removeProp('defineInfo'); }); @@ -546,7 +532,7 @@ var configuratorApp = (function(){ * Update #define information for one of the config files */ refreshDefineInfo: function(adv) { - if (typeof adv == 'undefined') adv = false; + if (adv === undefined) adv = false; $('[defineInfo]').each(function() { if (adv == this.defineInfo.adv) this.defineInfo = self.getDefineInfo(this.id, adv); }); @@ -561,7 +547,7 @@ var configuratorApp = (function(){ * Determine the line number of the #define so it can be scrolled to. */ getDefineInfo: function(name, adv) { - if (typeof adv == 'undefined') adv = false; + if (adv === undefined) adv = false; this.log('getDefineInfo:'+name,4); var $elm = $('#'+name), elm = $elm[0]; var $c = adv ? $config_adv : $config; @@ -569,63 +555,66 @@ var configuratorApp = (function(){ // a switch line with no value var findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + ')([ \\t]*/[*/].*)?$', 'm'); var result = findDef.exec($c.text()); + var info = { type:0, adv:adv, field:$c[0], val_i: 2 }; if (result !== null) { - var info = { - type:'switch', adv:adv, field:$c[0], val_i: 1, - line: result[0], // whole line - pre: result[1] === undefined ? '' : result[1].replace('//',''), + $.extend(info, { + val_i: 1, + type: 'switch', + line: result[0], // whole line + pre: result[1] === undefined ? '' : result[1].replace('//',''), define: result[2], - post: result[3] === undefined ? '' : result[3] - }; - info.repl = info.regex = new RegExp('(.*//)?(.*' + info.define.regEsc() + info.post.regEsc() + ')', 'm'); - info.lineNum = this.getLineInText(info.line, $c.text()); - this.log(info,2); - return info; + post: result[3] === undefined ? '' : result[3] + }); + info.regex = new RegExp('( *//)?( *' + info.define.regEsc() + info.post.regEsc() + ')', 'm'); + info.repl = new RegExp('( *)(\/\/)?( *' + info.define.regEsc() + info.post.regEsc() + ')', 'm'); } - - // a define with quotes - findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)("[^"]*")([ \\t]*/[*/].*)?$', 'm'); - result = findDef.exec($c.text()); - if (result !== null) { - var info = { - type:'quoted', adv:adv, field:$c[0], val_i: 2, - line: result[0], - pre: result[1] === undefined ? '' : result[1].replace('//',''), - define: result[2], - post: result[4] === undefined ? '' : result[4] - }; - info.regex = new RegExp('(.*//)?.*' + info.define.regEsc() + '"([^"]*)"' + info.post.regEsc(), 'm'); - info.repl = new RegExp('((.*//)?.*' + info.define.regEsc() + '")[^"]*("' + info.post.regEsc() + ')', 'm'); - info.lineNum = this.getLineInText(info.line, $c.text()); - this.log(info,2); - return info; + else { + // a define with quotes + findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)("[^"]*")([ \\t]*/[*/].*)?$', 'm'); + result = findDef.exec($c.text()); + if (result !== null) { + $.extend(info, { + type: 'quoted', + line: result[0], + pre: result[1] === undefined ? '' : result[1].replace('//',''), + define: result[2], + post: result[4] === undefined ? '' : result[4] + }); + info.regex = new RegExp('( *//)? *' + info.define.regEsc() + '"([^"]*)"' + info.post.regEsc(), 'm'); + info.repl = new RegExp('(( *//)? *' + info.define.regEsc() + '")[^"]*("' + info.post.regEsc() + ')', 'm'); + } + else { + // a define with no quotes + findDef = new RegExp('^( *//)?( *#define[ \\t]+' + elm.id + '[ \\t]+)(\\S*)([ \\t]*/[*/].*)?$', 'm'); + result = findDef.exec($c.text()); + if (result !== null) { + $.extend(info, { + type: 'plain', + line: result[0], + pre: result[1] === undefined ? '' : result[1].replace('//',''), + define: result[2], + post: result[4] === undefined ? '' : result[4] + }); + info.regex = new RegExp('( *//)? *' + info.define.regEsc() + '(\\S*)' + info.post.regEsc(), 'm'); + info.repl = new RegExp('(( *//)? *' + info.define.regEsc() + ')\\S*(' + info.post.regEsc() + ')', 'm'); + } + } } - // a define with no quotes - findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)(\\S*)([ \\t]*/[*/].*)?$', 'm'); - result = findDef.exec($c.text()); - if (result !== null) { - var info = { - type:'plain', adv:adv, field:$c[0], val_i: 2, - line: result[0], - pre: result[1] === undefined ? '' : result[1].replace('//',''), - define: result[2], - post: result[4] === undefined ? '' : result[4] - }; - info.regex = new RegExp('(.*//)?.*' + info.define.regEsc() + '(\\S*)' + info.post.regEsc(), 'm'); - info.repl = new RegExp('((.*//)?.*' + info.define.regEsc() + ')\\S*(' + info.post.regEsc() + ')', 'm'); - info.lineNum = this.getLineInText(info.line, $c.text()); + if (info.type) { + info.lineNum = this.getLineNumberOfText(info.line, $c.text()); this.log(info,2); - return info; } + else + info = null; - return null; + return info; }, /** * Count the number of lines before a match, return -1 on fail */ - getLineInText: function(line, txt) { + getLineNumberOfText: function(line, txt) { var pos = txt.indexOf(line); return (pos < 0) ? pos : txt.substr(0, pos).lineCount(); }, @@ -636,7 +625,7 @@ var configuratorApp = (function(){ }, logOnce: function(o) { - if (typeof o.didLogThisObject === 'undefined') { + if (o.didLogThisObject === undefined) { this.log(o); o.didLogThisObject = true; }