2014-09-18 25 views
21

this esdiscuss discussion uyarınca, ECMAScript 6'da satırın en başında dizenin sonraki satırlarını yerleştirmek zorunda kalmadan çok satırlı dizeleri tanımlamak mümkündür.Girintiyi kırmayan çok satırlı dizgiler

var a = dontIndent 
     `This is a template string. 
     Even though each line is indented to keep the 
     code neat and tidy, the white space used to indent 
     is not in the resulting string`; 

birisi bu sağlanabilir nasıl açıklayabilir misiniz:

Allen Wirfs-Brock’s post

örnek bir kod içerir? Girinti için kullanılan boşlukları kaldırmak için bu dontIndent şey nasıl tanımlanır?

+2

Bunun için npm'de birden çok modül var, bunların çoğuna bir "anahtar kelime için" dedent "aramasıyla ulaşabilirsiniz. (Https://www.npmjs.com/browse/keyword/dedent) – Nickolay

cevap

13

Bu özellik, özel bir işlev tanımlayarak ve onu bir etiket olarak (dontIndent yukarıda) kullanarak uygulanır. kod darbe Zenparsing's gist dan: Ben başarıyla Firefox nightly içinde test ettik

function dedent(callSite, ...args) { 

    function format(str) { 

     let size = -1; 

     return str.replace(/\n(\s+)/g, (m, m1) => { 

      if (size < 0) 
       size = m1.replace(/\t/g, " ").length; 

      return "\n" + m1.slice(Math.min(m1.length, size)); 
     }); 
    } 

    if (typeof callSite === "string") 
     return format(callSite); 

    if (typeof callSite === "function") 
     return (...args) => format(callSite(...args)); 

    let output = callSite 
     .slice(0, args.length + 1) 
     .map((text, i) => (i === 0 ? "" : args[i - 1]) + text) 
     .join(""); 

    return format(output); 
} 

:

enter image description here

11

2016 cevap: dedent-js package bu işleyecektir. 'Dedent-js' paketi aslında sekmeleri ve boşlukları ile çalışır Not, 'dedent' sekmelerde başarısız:

var dedent = require('dedent-js'); 

var text = dedent(` 
    <div> 
    <span>OK</span> 
    <div> 
     <div></div> 
    </div> 
    </div> 
`); 

her satırda ilerleyen boşluk ve lider satırbaşını dışında şerit olacaktır. Ayrıca, daha fazla kullanıcı, bir sorun takipçisi var ve Stack Overflow'tan kopyalanmaya kıyasla daha kolay bir şekilde güncelleniyor!

+1

Çok güzel çalışıyor, teşekkürler sen –