Просмотр исходного кода

Use info.repl in updateDefineFromField, fix regex

Scott Lahteine 10 лет назад
Родитель
Сommit
2647402095

+ 2
- 2
Marlin/configurator/css/configurator.css Просмотреть файл

@@ -6,8 +6,8 @@ body { margin: 0; padding: 0; background: #56A; color: #FFC; font-family: sans-s
6 6
 #main { max-width: 1000px; margin: 0 auto; }
7 7
 #main { padding: 0 4%; width: 92%; }
8 8
 #main { font-family: monospace; }
9
-
10
-#message { width: 80%; margin: 0 auto 0.25em; color: #FF0; text-align: center; }
9
+h1, #message { text-align: center; }
10
+#message { width: 80%; margin: 0 auto 0.25em; color: #FF0; }
11 11
 #message p { padding: 2px 0; }
12 12
 #message p.error, #message p.message { color: #F00; background: #FF4; font-weight: bold; border-radius: 0.8em; }
13 13
 #message p.message { color: #080; background: #CFC; }

+ 1
- 1
Marlin/configurator/index.html Просмотреть файл

@@ -13,7 +13,7 @@
13 13
   </head>
14 14
   <body>
15 15
     <section id="main">
16
-      <h1>Marlin Configurator 0.1a</h1>
16
+      <h1>Marlin Configurator</h1>
17 17
 
18 18
       <div id="message">
19 19
         <p class="info">Enter values in the form, get a Marlin configuration.<br/>Will include a drop-down of known configurations.</p>

+ 59
- 70
Marlin/configurator/js/configurator.js Просмотреть файл

@@ -125,7 +125,7 @@ var configuratorApp = (function(){
125 125
           complete: function() {
126 126
             ajax_count++;
127 127
             if (ajax_count >= 3) {
128
-              $.each(config_files, function(i,fname){ if (typeof loaded_items[fname] != 'undefined') loaded_items[fname](); });
128
+              $.each(config_files, function(i,fname){ if (loaded_items[fname] !== undefined) loaded_items[fname](); });
129 129
               self.refreshConfigForm();
130 130
               if (success_count < ajax_count)
131 131
                 self.setMessage('Unable to load configurations. Use the upload field instead.', 'error');
@@ -137,7 +137,7 @@ var configuratorApp = (function(){
137 137
 
138 138
     setMessage: function(msg,type) {
139 139
       if (msg) {
140
-        if (typeof type == 'undefined') type = 'message';
140
+        if (type === undefined) type = 'message';
141 141
         var $err = $('<p class="'+type+'">'+msg+'</p>'), err = $err[0];
142 142
         $('#message').prepend($err);
143 143
         var baseColor = $err.css('color').replace(/rgba?\(([^),]+,[^),]+,[^),]+).*/, 'rgba($1,');
@@ -155,7 +155,7 @@ var configuratorApp = (function(){
155 155
       }
156 156
       else {
157 157
         $('#message p.error, #message p.warning').each(function() {
158
-          if (typeof this.pulser != 'undefined' && this.pulser)
158
+          if (this.pulser !== undefined && this.pulser)
159 159
             clearInterval(this.pulser);
160 160
           $(this).remove();
161 161
         });
@@ -440,30 +440,16 @@ var configuratorApp = (function(){
440 440
       switch(inf.type) {
441 441
         case 'switch':
442 442
           var slash = val ? '' : '//';
443
-          newline = (inf.pre + slash + inf.define + inf.post);
443
+          newline = inf.line.replace(inf.repl, '$1'+slash+'$3');
444 444
           break;
445 445
         case 'quoted':
446
-          if (isCheck) {
447
-            this.log(name + ' should not be a checkbox', 1);
448
-            var slash = val ? '' : '//';
449
-            newline = (inf.pre + slash + inf.define + '"'+val+'"' + inf.post);
450
-          }
451
-          else {
452
-            newline = inf.pre + inf.define + '"'+val+'"' + inf.post;
453
-          }
454
-          break;
455 446
         case 'plain':
456
-          if (isCheck) {
457
-            this.log(name + ' should not be a checkbox', 1);
458
-            var slash = val ? '' : '//';
459
-            newline = (inf.pre + slash + inf.define + val + inf.post);
460
-          }
461
-          else {
462
-            newline = inf.pre + inf.define + val + inf.post;
463
-          }
447
+          if (isCheck)
448
+            this.setMessage(name + ' should not be a checkbox!', 'error');
449
+          else
450
+            newline = inf.line.replace(inf.repl, '$1'+val.replace('$','\\$')+'$3');
464 451
           break;
465 452
       }
466
-
467 453
       this.setDefineLine(name, newline);
468 454
     },
469 455
 
@@ -536,7 +522,7 @@ var configuratorApp = (function(){
536 522
      * Purge #define information for one of the config files
537 523
      */
538 524
     purgeDefineInfo: function(adv) {
539
-      if (typeof adv == 'undefined') adv = false;
525
+      if (adv === undefined) adv = false;
540 526
       $('[defineInfo]').each(function() {
541 527
         if (adv === this.defineInfo.adv) $(this).removeProp('defineInfo');
542 528
       });
@@ -546,7 +532,7 @@ var configuratorApp = (function(){
546 532
      * Update #define information for one of the config files
547 533
      */
548 534
     refreshDefineInfo: function(adv) {
549
-      if (typeof adv == 'undefined') adv = false;
535
+      if (adv === undefined) adv = false;
550 536
       $('[defineInfo]').each(function() {
551 537
         if (adv == this.defineInfo.adv) this.defineInfo = self.getDefineInfo(this.id, adv);
552 538
       });
@@ -561,7 +547,7 @@ var configuratorApp = (function(){
561 547
      *   Determine the line number of the #define so it can be scrolled to.
562 548
      */
563 549
     getDefineInfo: function(name, adv) {
564
-      if (typeof adv == 'undefined') adv = false;
550
+      if (adv === undefined) adv = false;
565 551
       this.log('getDefineInfo:'+name,4);
566 552
       var $elm = $('#'+name), elm = $elm[0];
567 553
       var $c = adv ? $config_adv : $config;
@@ -569,63 +555,66 @@ var configuratorApp = (function(){
569 555
       // a switch line with no value
570 556
       var findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + ')([ \\t]*/[*/].*)?$', 'm');
571 557
       var result = findDef.exec($c.text());
558
+      var info = { type:0, adv:adv, field:$c[0], val_i: 2 };
572 559
       if (result !== null) {
573
-        var info = {
574
-          type:'switch', adv:adv, field:$c[0], val_i: 1,
575
-          line: result[0], // whole line
576
-          pre: result[1] === undefined ? '' : result[1].replace('//',''),
560
+        $.extend(info, {
561
+          val_i:  1,
562
+          type:   'switch',
563
+          line:   result[0], // whole line
564
+          pre:    result[1] === undefined ? '' : result[1].replace('//',''),
577 565
           define: result[2],
578
-          post: result[3] === undefined ? '' : result[3]
579
-        };
580
-        info.repl = info.regex = new RegExp('(.*//)?(.*' + info.define.regEsc() + info.post.regEsc() + ')', 'm');
581
-        info.lineNum = this.getLineInText(info.line, $c.text());
582
-        this.log(info,2);
583
-        return info;
566
+          post:   result[3] === undefined ? '' : result[3]
567
+        });
568
+        info.regex = new RegExp('( *//)?( *' + info.define.regEsc() + info.post.regEsc() + ')', 'm');
569
+        info.repl =  new RegExp('( *)(\/\/)?( *' + info.define.regEsc() + info.post.regEsc() + ')', 'm');
584 570
       }
585
-
586
-      // a define with quotes
587
-      findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)("[^"]*")([ \\t]*/[*/].*)?$', 'm');
588
-      result = findDef.exec($c.text());
589
-      if (result !== null) {
590
-        var info = {
591
-          type:'quoted', adv:adv, field:$c[0], val_i: 2,
592
-          line: result[0],
593
-          pre: result[1] === undefined ? '' : result[1].replace('//',''),
594
-          define: result[2],
595
-          post: result[4] === undefined ? '' : result[4]
596
-        };
597
-        info.regex = new RegExp('(.*//)?.*' + info.define.regEsc() + '"([^"]*)"' + info.post.regEsc(), 'm');
598
-        info.repl  = new RegExp('((.*//)?.*' + info.define.regEsc() + '")[^"]*("' + info.post.regEsc() + ')', 'm');
599
-        info.lineNum = this.getLineInText(info.line, $c.text());
600
-        this.log(info,2);
601
-        return info;
571
+      else {
572
+        // a define with quotes
573
+        findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)("[^"]*")([ \\t]*/[*/].*)?$', 'm');
574
+        result = findDef.exec($c.text());
575
+        if (result !== null) {
576
+          $.extend(info, {
577
+            type:   'quoted',
578
+            line:   result[0],
579
+            pre:    result[1] === undefined ? '' : result[1].replace('//',''),
580
+            define: result[2],
581
+            post:   result[4] === undefined ? '' : result[4]
582
+          });
583
+          info.regex = new RegExp('( *//)? *' + info.define.regEsc() + '"([^"]*)"' + info.post.regEsc(), 'm');
584
+          info.repl  = new RegExp('(( *//)? *' + info.define.regEsc() + '")[^"]*("' + info.post.regEsc() + ')', 'm');
585
+        }
586
+        else {
587
+          // a define with no quotes
588
+          findDef = new RegExp('^( *//)?( *#define[ \\t]+' + elm.id + '[ \\t]+)(\\S*)([ \\t]*/[*/].*)?$', 'm');
589
+          result = findDef.exec($c.text());
590
+          if (result !== null) {
591
+            $.extend(info, {
592
+              type:   'plain',
593
+              line:   result[0],
594
+              pre:    result[1] === undefined ? '' : result[1].replace('//',''),
595
+              define: result[2],
596
+              post:   result[4] === undefined ? '' : result[4]
597
+            });
598
+            info.regex = new RegExp('( *//)? *' + info.define.regEsc() + '(\\S*)' + info.post.regEsc(), 'm');
599
+            info.repl  = new RegExp('(( *//)? *' + info.define.regEsc() + ')\\S*(' + info.post.regEsc() + ')', 'm');
600
+          }
601
+        }
602 602
       }
603 603
 
604
-      // a define with no quotes
605
-      findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + '[ \\t]+)(\\S*)([ \\t]*/[*/].*)?$', 'm');
606
-      result = findDef.exec($c.text());
607
-      if (result !== null) {
608
-        var info = {
609
-          type:'plain', adv:adv, field:$c[0], val_i: 2,
610
-          line: result[0],
611
-          pre: result[1] === undefined ? '' : result[1].replace('//',''),
612
-          define: result[2],
613
-          post: result[4] === undefined ? '' : result[4]
614
-        };
615
-        info.regex = new RegExp('(.*//)?.*' + info.define.regEsc() + '(\\S*)' + info.post.regEsc(), 'm');
616
-        info.repl = new RegExp('((.*//)?.*' + info.define.regEsc() + ')\\S*(' + info.post.regEsc() + ')', 'm');
617
-        info.lineNum = this.getLineInText(info.line, $c.text());
604
+      if (info.type) {
605
+        info.lineNum = this.getLineNumberOfText(info.line, $c.text());
618 606
         this.log(info,2);
619
-        return info;
620 607
       }
608
+      else
609
+        info = null;
621 610
 
622
-      return null;
611
+      return info;
623 612
     },
624 613
 
625 614
     /**
626 615
      * Count the number of lines before a match, return -1 on fail
627 616
      */
628
-    getLineInText: function(line, txt) {
617
+    getLineNumberOfText: function(line, txt) {
629 618
       var pos = txt.indexOf(line);
630 619
       return (pos < 0) ? pos : txt.substr(0, pos).lineCount();
631 620
     },
@@ -636,7 +625,7 @@ var configuratorApp = (function(){
636 625
     },
637 626
 
638 627
     logOnce: function(o) {
639
-      if (typeof o.didLogThisObject === 'undefined') {
628
+      if (o.didLogThisObject === undefined) {
640 629
         this.log(o);
641 630
         o.didLogThisObject = true;
642 631
       }

Загрузка…
Отмена
Сохранить