How to use pn - 10 common examples

To help you get started, we’ve selected a few pn examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github wikimedia / parsoid / tests / mocha / foma.js View on Github external
describe(`Compiling ${l.base}.foma`, function() {
			this.timeout(100000); /* compilation can take a while */
			const fomaFile = `${l.base}${l.examples ? '-examples' : ''}.foma`;
			// This has to be sync, since we're going to create test cases
			// based on the result of this, and mocha doesn't support async
			// test case generation.
			// XXX skip this if `foma` isn't on the path.
			let result = childProcess.execFileSync('foma', ['-f', fomaFile], {
				cwd: fstDir,
				encoding: 'utf8',
			});
			// Count the number of tests expected
			let expectedTests = 0;
			result = result.replace(
				/^EXPECT\s+(\d+)\s*$/mg,
				(m, num) => {
					expectedTests += Number.parseInt(num, 10);
					return '';
				});

			// EXPECT: is a shorthand for one-line tests
			result = result.replace(
				/^EXPECT(?:\[(.*)\])?: (.*)$/mg,
				(m, name, out) => `\n${out}\n`
github wikimedia / parsoid / tools / js2php.js View on Github external
console.assert(yield fs.exists(oldFile));
		if (!(yield fs.exists(newFile))) { continue; /* Skip this */ }
		/* check for the watermark string; only overwrite if it is present */
		/* this ensures we don't overwrite actually-ported files */
		if (!WATERMARK_RE.test(yield fs.readFile(newFile, 'utf8'))) { continue; }

		/* run our translation tool! */
		var isPeg = /\.pegjs$/.test(oldFile);
		try {
			var args = (isPeg ? [ '--braced' ] : [])
				.concat([
					'--namespace', 'Parsoid',
					'--watermark', WATERMARK,
					oldFile, newFile,
				]);
			yield childProcess.execFile(
				path.join(BASEDIR, 'node_modules', '.bin', 'js2php'), args, {
					cwd: BASEDIR,
					env: process.env,
				}).promise;
		} catch (e1) {
			console.log(`SKIPPING ${oldFile}`);
			continue;
		}
		if (isPeg) { continue; }
		// Now run phpcbf, but it's allowed to return non-zero
		try {
			yield childProcess.execFile(
				path.join(BASEDIR, 'vendor', 'bin', 'phpcbf'), [
					newFile,
				]).promise;
		} catch (e2) { /* of course there were code style issues */ }
github wikimedia / parsoid / tools / sync-parserTests.js View on Github external
stdio: 'inherit',
			}).on('close', function(code) {
				if (code === 0) {
					resolve(code);
				} else {
					reject(code);
				}
			}).on('error', reject);
		});
	};

	var pPARSERTESTS = path.join(__dirname, '..', 'tests', 'parser', targetName);
	var mwPARSERTESTS = path.join(mwpath, file.path);

	// Fetch current Parsoid git hash.
	var result = yield childProcess.execFile(
		'git', ['log', '--max-count=1', '--pretty=format:%H'], {
			cwd: __dirname,
			env: process.env,
		}).promise;
	var phash = strip(result.stdout);

	// A bit of user-friendly logging.
	console.log('Parsoid git HEAD is', phash);
	console.log('>>> cd', mwpath);

	// Create a new mediawiki/core branch, based on the previous sync point.
	yield mwexec('git fetch origin'.split(' '));
	yield mwexec(['git', 'checkout', '-b', branch, oldhash]);

	// Copy our locally-modified parser tests over to mediawiki/core.
	// cp __dirname/tests/parser/parserTests.txt $mwpath/tests/parser
github wikimedia / parsoid / tools / js2php.js View on Github external
Promise.async(function *() {
	const files = (yield childProcess.execFile(
		'git', ['ls-files'], {
			cwd: path.join(BASEDIR, 'lib'),
			env: process.env,
		}).promise).stdout.split(/\n/g).filter(s => !!s);
	for (let oldFile of files) {
		const newFile = path.join(BASEDIR, 'src', remapName(oldFile));
		oldFile = path.join(BASEDIR, 'lib', oldFile);
		console.assert(yield fs.exists(oldFile));
		if (!(yield fs.exists(newFile))) { continue; /* Skip this */ }
		/* check for the watermark string; only overwrite if it is present */
		/* this ensures we don't overwrite actually-ported files */
		if (!WATERMARK_RE.test(yield fs.readFile(newFile, 'utf8'))) { continue; }

		/* run our translation tool! */
		var isPeg = /\.pegjs$/.test(oldFile);
		try {
github wikimedia / parsoid / tools / js2php.js View on Github external
Promise.async(function *() {
	const files = (yield childProcess.execFile(
		'git', ['ls-files'], {
			cwd: path.join(BASEDIR, 'lib'),
			env: process.env,
		}).promise).stdout.split(/\n/g).filter(s => !!s);
	for (let oldFile of files) {
		const newFile = path.join(BASEDIR, 'src', remapName(oldFile));
		oldFile = path.join(BASEDIR, 'lib', oldFile);
		console.assert(yield fs.exists(oldFile));
		if (!(yield fs.exists(newFile))) { continue; /* Skip this */ }
		/* check for the watermark string; only overwrite if it is present */
		/* this ensures we don't overwrite actually-ported files */
		if (!WATERMARK_RE.test(yield fs.readFile(newFile, 'utf8'))) { continue; }

		/* run our translation tool! */
		var isPeg = /\.pegjs$/.test(oldFile);
		try {
			var args = (isPeg ? [ '--braced' ] : [])
				.concat([
					'--namespace', 'Parsoid',
					'--watermark', WATERMARK,
					oldFile, newFile,
				]);
			yield childProcess.execFile(
				path.join(BASEDIR, 'node_modules', '.bin', 'js2php'), args, {
					cwd: BASEDIR,
github wikimedia / parsoid / tools / js2php.js View on Github external
Promise.async(function *() {
	const files = (yield childProcess.execFile(
		'git', ['ls-files'], {
			cwd: path.join(BASEDIR, 'lib'),
			env: process.env,
		}).promise).stdout.split(/\n/g).filter(s => !!s);
	for (let oldFile of files) {
		const newFile = path.join(BASEDIR, 'src', remapName(oldFile));
		oldFile = path.join(BASEDIR, 'lib', oldFile);
		console.assert(yield fs.exists(oldFile));
		if (!(yield fs.exists(newFile))) { continue; /* Skip this */ }
		/* check for the watermark string; only overwrite if it is present */
		/* this ensures we don't overwrite actually-ported files */
		if (!WATERMARK_RE.test(yield fs.readFile(newFile, 'utf8'))) { continue; }

		/* run our translation tool! */
		var isPeg = /\.pegjs$/.test(oldFile);
		try {
			var args = (isPeg ? [ '--braced' ] : [])
				.concat([
					'--namespace', 'Parsoid',
					'--watermark', WATERMARK,
					oldFile, newFile,
				]);
			yield childProcess.execFile(
				path.join(BASEDIR, 'node_modules', '.bin', 'js2php'), args, {
github wikimedia / parsoid / bin / parse.js View on Github external
.then(function() {
		if (argv.inputfile) {
			// read input from the file, then process
			return fs.readFile(argv.inputfile, 'utf8');
		}

		// Send a message to stderr if there is no input for a while, since the
		// convention that --pageName must be used with 
github wikimedia / parsoid / tools / fetch-parserTests.txt.js View on Github external
result.on('data', function(data) { res += data; });
			result.on('end', function() { resolve(res); });
		}).on('error', function(err) {
			console.error(err);
			reject(err);
		});
	}))[0].sha;

	// download latest file
	yield fetch(targetName, gitCommit, true);
	var fileHash = yield computeSHA1(targetName);

	// now rewrite this file!
	file.expectedSHA1 = fileHash;
	file.latestCommit = gitCommit;
	yield fs.writeFile(testFilesPath, JSON.stringify(testFiles, null, '\t'), 'utf8');
	console.log('Updated', testFilesPath);
});
github wikimedia / parsoid / tools / fetch-revision-data.js View on Github external
var fetch = Promise.async(function *(page, revid, opts) {
	var prefix = opts.prefix || null;
	var domain = opts.domain || null;
	if (!prefix && !domain) {
		domain = "en.wikipedia.org";
	}

	var parsoidOptions = {};

	if (ScriptUtils.booleanOption(opts.config)) {
		var p = (typeof (opts.config) === 'string') ?
			path.resolve('.', opts.config) :
			path.resolve(__dirname, '../config.yaml');
		// Assuming Parsoid is the first service in the list
		parsoidOptions = yaml.load(yield fs.readFile(p, 'utf8')).services[0].conf;
	}

	ScriptUtils.setTemplatingAndProcessingFlags(parsoidOptions, opts);
	ScriptUtils.setDebuggingFlags(parsoidOptions, opts);

	if (parsoidOptions.localsettings) {
		parsoidOptions.localsettings = path.resolve(__dirname, parsoidOptions.localsettings);
	}

	var pc = new ParsoidConfig(null, parsoidOptions);
	if (!prefix) {
		// domain has been provided
		prefix = pc.getPrefixFor(domain);
	} else if (!domain) {
		// prefix has been set
		domain = pc.mwApiMap.get(prefix).domain;
github wikimedia / parsoid / bin / parse.js View on Github external
} else if (!(prefix || domain)) {
		domain = 'en.wikipedia.org';
	}

	var parsoidOptions = {
		linting: argv.linting,
		loadWMF: argv.loadWMF,
		useWorker: argv.useWorker,
	};

	if (ScriptUtils.booleanOption(argv.config)) {
		var p = (typeof (argv.config) === 'string') ?
			path.resolve('.', argv.config) :
			path.resolve(__dirname, '../config.yaml');
		// Assuming Parsoid is the first service in the list
		parsoidOptions = yaml.load(yield fs.readFile(p, 'utf8')).services[0].conf;
	}

	ScriptUtils.setTemplatingAndProcessingFlags(parsoidOptions, argv);
	ScriptUtils.setDebuggingFlags(parsoidOptions, argv);

	// Offline shortcut
	if (argv.offline) {
		parsoidOptions.fetchConfig = false;
		parsoidOptions.fetchTemplates = false;
		parsoidOptions.fetchImageInfo = false;
		parsoidOptions.usePHPPreProcessor = false;
		parsoidOptions.expandExtensions = false;
	}

	if (parsoidOptions.localsettings) {
		parsoidOptions.localsettings = path.resolve(__dirname, parsoidOptions.localsettings);