如何使用

显然,这仅适用于代码块(<pre><code>),而不适用于内联代码。

默认情况下,该插件修剪每个代码块的所有前导和尾随空白。它还删除每一行的额外缩进和尾随空白。

可以通过向<pre><code>标记添加类no-whitespace-normalization来为特定代码块禁用该插件。

默认设置可以通过setDefaults()方法覆盖,如下所示


Prism.plugins.NormalizeWhitespace.setDefaults({
	'remove-trailing': true,
	'remove-indent': true,
	'left-trim': true,
	'right-trim': true,
	/*'break-lines': 80,
	'indent': 2,
	'remove-initial-line-feed': false,
	'tabs-to-spaces': 4,
	'spaces-to-tabs': 4*/
});

以下设置可用,并且可以通过<pre<元素上的data-[setting]属性进行设置

remove-trailing
删除所有行上的尾随空白。
remove-indent
如果整个代码块缩进太多,它会删除额外的缩进。
left-trim
删除代码块顶部的所有空白。
right-trim
删除代码块底部的所有空白。
break-lines
在特定长度(默认为80个字符)处简单地折断长行。
indent
向每一行添加一定数量的制表符。
remove-initial-line-feed
left-trim 的较不激进版本。它只从代码块顶部删除一个换行符。
tabs-to-spaces
将所有制表符转换为一定数量的空格(默认为4个空格)。
spaces-to-tabs
将一定数量的空格转换为制表符(默认为4个空格)。

示例

以下示例演示了此插件的使用



	

结果如下所示

	


		var example = {
			foo: true,

			bar: false
		};


		var
		there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
		 = true;
		
		if 
		(there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
		 === true) {
		};


	

它还与keep-markup插件兼容

	


	@media screen {
		div {
			text-decoration: underline;
			background: url('foo.png');
		}
	}


此插件还可以在服务器或使用Node.js的命令行上使用


var Prism = require('prismjs');
var Normalizer = require('prismjs/plugins/normalize-whitespace/prism-normalize-whitespace');
// Create a new Normalizer object
var nw = new Normalizer({
	'remove-trailing': true,
	'remove-indent': true,
	'left-trim': true,
	'right-trim': true,
	/*'break-lines': 80,
	'indent': 2,
	'remove-initial-line-feed': false,
	'tabs-to-spaces': 4,
	'spaces-to-tabs': 4*/
});

// ..or use the default object from Prism
nw = Prism.plugins.NormalizeWhitespace;

// The code snippet you want to highlight, as a string
var code = "\t\t\tvar data = 1;    ";

// Removes leading and trailing whitespace
// and then indents by 1 tab
code = nw.normalize(code, {
	// Extra settings
	indent: 1
});

// Returns a highlighted HTML string
var html = Prism.highlight(code, Prism.languages.javascript);