You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.4 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
function dedent(strings) { | 
						|
 | 
						|
  var raw = void 0; | 
						|
  if (typeof strings === "string") { | 
						|
    // dedent can be used as a plain function | 
						|
    raw = [strings]; | 
						|
  } else { | 
						|
    raw = strings.raw; | 
						|
  } | 
						|
 | 
						|
  // first, perform interpolation | 
						|
  var result = ""; | 
						|
  for (var i = 0; i < raw.length; i++) { | 
						|
    result += raw[i]. | 
						|
    // join lines when there is a suppressed newline | 
						|
    replace(/\\\n[ \t]*/g, ""). | 
						|
 | 
						|
    // handle escaped backticks | 
						|
    replace(/\\`/g, "`"); | 
						|
 | 
						|
    if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) { | 
						|
      result += arguments.length <= i + 1 ? undefined : arguments[i + 1]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  // now strip indentation | 
						|
  var lines = result.split("\n"); | 
						|
  var mindent = null; | 
						|
  lines.forEach(function (l) { | 
						|
    var m = l.match(/^(\s+)\S+/); | 
						|
    if (m) { | 
						|
      var indent = m[1].length; | 
						|
      if (!mindent) { | 
						|
        // this is the first indented line | 
						|
        mindent = indent; | 
						|
      } else { | 
						|
        mindent = Math.min(mindent, indent); | 
						|
      } | 
						|
    } | 
						|
  }); | 
						|
 | 
						|
  if (mindent !== null) { | 
						|
    result = lines.map(function (l) { | 
						|
      return l[0] === " " ? l.slice(mindent) : l; | 
						|
    }).join("\n"); | 
						|
  } | 
						|
 | 
						|
  // dedent eats leading and trailing whitespace too | 
						|
  result = result.trim(); | 
						|
 | 
						|
  // handle escaped newlines at the end to ensure they don't get stripped too | 
						|
  return result.replace(/\\n/g, "\n"); | 
						|
} | 
						|
 | 
						|
if (typeof module !== "undefined") { | 
						|
  module.exports = dedent; | 
						|
}
 | 
						|
 |