Преглед на файлове

Use info.repl in updateDefineFromField, fix regex

Scott Lahteine преди 10 години
родител
ревизия
2647402095
променени са 3 файла, в които са добавени 62 реда и са изтрити 73 реда
  1. 2
    2
      Marlin/configurator/css/configurator.css
  2. 1
    1
      Marlin/configurator/index.html
  3. 59
    70
      Marlin/configurator/js/configurator.js

+ 2
- 2
Marlin/configurator/css/configurator.css Целия файл

6
 #main { max-width: 1000px; margin: 0 auto; }
6
 #main { max-width: 1000px; margin: 0 auto; }
7
 #main { padding: 0 4%; width: 92%; }
7
 #main { padding: 0 4%; width: 92%; }
8
 #main { font-family: monospace; }
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
 #message p { padding: 2px 0; }
11
 #message p { padding: 2px 0; }
12
 #message p.error, #message p.message { color: #F00; background: #FF4; font-weight: bold; border-radius: 0.8em; }
12
 #message p.error, #message p.message { color: #F00; background: #FF4; font-weight: bold; border-radius: 0.8em; }
13
 #message p.message { color: #080; background: #CFC; }
13
 #message p.message { color: #080; background: #CFC; }

+ 1
- 1
Marlin/configurator/index.html Целия файл

13
   </head>
13
   </head>
14
   <body>
14
   <body>
15
     <section id="main">
15
     <section id="main">
16
-      <h1>Marlin Configurator 0.1a</h1>
16
+      <h1>Marlin Configurator</h1>
17
 
17
 
18
       <div id="message">
18
       <div id="message">
19
         <p class="info">Enter values in the form, get a Marlin configuration.<br/>Will include a drop-down of known configurations.</p>
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
           complete: function() {
125
           complete: function() {
126
             ajax_count++;
126
             ajax_count++;
127
             if (ajax_count >= 3) {
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
               self.refreshConfigForm();
129
               self.refreshConfigForm();
130
               if (success_count < ajax_count)
130
               if (success_count < ajax_count)
131
                 self.setMessage('Unable to load configurations. Use the upload field instead.', 'error');
131
                 self.setMessage('Unable to load configurations. Use the upload field instead.', 'error');
137
 
137
 
138
     setMessage: function(msg,type) {
138
     setMessage: function(msg,type) {
139
       if (msg) {
139
       if (msg) {
140
-        if (typeof type == 'undefined') type = 'message';
140
+        if (type === undefined) type = 'message';
141
         var $err = $('<p class="'+type+'">'+msg+'</p>'), err = $err[0];
141
         var $err = $('<p class="'+type+'">'+msg+'</p>'), err = $err[0];
142
         $('#message').prepend($err);
142
         $('#message').prepend($err);
143
         var baseColor = $err.css('color').replace(/rgba?\(([^),]+,[^),]+,[^),]+).*/, 'rgba($1,');
143
         var baseColor = $err.css('color').replace(/rgba?\(([^),]+,[^),]+,[^),]+).*/, 'rgba($1,');
155
       }
155
       }
156
       else {
156
       else {
157
         $('#message p.error, #message p.warning').each(function() {
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
             clearInterval(this.pulser);
159
             clearInterval(this.pulser);
160
           $(this).remove();
160
           $(this).remove();
161
         });
161
         });
440
       switch(inf.type) {
440
       switch(inf.type) {
441
         case 'switch':
441
         case 'switch':
442
           var slash = val ? '' : '//';
442
           var slash = val ? '' : '//';
443
-          newline = (inf.pre + slash + inf.define + inf.post);
443
+          newline = inf.line.replace(inf.repl, '$1'+slash+'$3');
444
           break;
444
           break;
445
         case 'quoted':
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
         case 'plain':
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
           break;
451
           break;
465
       }
452
       }
466
-
467
       this.setDefineLine(name, newline);
453
       this.setDefineLine(name, newline);
468
     },
454
     },
469
 
455
 
536
      * Purge #define information for one of the config files
522
      * Purge #define information for one of the config files
537
      */
523
      */
538
     purgeDefineInfo: function(adv) {
524
     purgeDefineInfo: function(adv) {
539
-      if (typeof adv == 'undefined') adv = false;
525
+      if (adv === undefined) adv = false;
540
       $('[defineInfo]').each(function() {
526
       $('[defineInfo]').each(function() {
541
         if (adv === this.defineInfo.adv) $(this).removeProp('defineInfo');
527
         if (adv === this.defineInfo.adv) $(this).removeProp('defineInfo');
542
       });
528
       });
546
      * Update #define information for one of the config files
532
      * Update #define information for one of the config files
547
      */
533
      */
548
     refreshDefineInfo: function(adv) {
534
     refreshDefineInfo: function(adv) {
549
-      if (typeof adv == 'undefined') adv = false;
535
+      if (adv === undefined) adv = false;
550
       $('[defineInfo]').each(function() {
536
       $('[defineInfo]').each(function() {
551
         if (adv == this.defineInfo.adv) this.defineInfo = self.getDefineInfo(this.id, adv);
537
         if (adv == this.defineInfo.adv) this.defineInfo = self.getDefineInfo(this.id, adv);
552
       });
538
       });
561
      *   Determine the line number of the #define so it can be scrolled to.
547
      *   Determine the line number of the #define so it can be scrolled to.
562
      */
548
      */
563
     getDefineInfo: function(name, adv) {
549
     getDefineInfo: function(name, adv) {
564
-      if (typeof adv == 'undefined') adv = false;
550
+      if (adv === undefined) adv = false;
565
       this.log('getDefineInfo:'+name,4);
551
       this.log('getDefineInfo:'+name,4);
566
       var $elm = $('#'+name), elm = $elm[0];
552
       var $elm = $('#'+name), elm = $elm[0];
567
       var $c = adv ? $config_adv : $config;
553
       var $c = adv ? $config_adv : $config;
569
       // a switch line with no value
555
       // a switch line with no value
570
       var findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + ')([ \\t]*/[*/].*)?$', 'm');
556
       var findDef = new RegExp('^(.*//)?(.*#define[ \\t]+' + elm.id + ')([ \\t]*/[*/].*)?$', 'm');
571
       var result = findDef.exec($c.text());
557
       var result = findDef.exec($c.text());
558
+      var info = { type:0, adv:adv, field:$c[0], val_i: 2 };
572
       if (result !== null) {
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
           define: result[2],
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
         this.log(info,2);
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
      * Count the number of lines before a match, return -1 on fail
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
       var pos = txt.indexOf(line);
618
       var pos = txt.indexOf(line);
630
       return (pos < 0) ? pos : txt.substr(0, pos).lineCount();
619
       return (pos < 0) ? pos : txt.substr(0, pos).lineCount();
631
     },
620
     },
636
     },
625
     },
637
 
626
 
638
     logOnce: function(o) {
627
     logOnce: function(o) {
639
-      if (typeof o.didLogThisObject === 'undefined') {
628
+      if (o.didLogThisObject === undefined) {
640
         this.log(o);
629
         this.log(o);
641
         o.didLogThisObject = true;
630
         o.didLogThisObject = true;
642
       }
631
       }

Loading…
Отказ
Запис