1
var gulp = require('gulp'),
2
rename = require('gulp-rename'),
3
uglify = require('gulp-uglify'),
4
header = require('gulp-header'),
5
concat = require('gulp-concat'),
6
replace = require('gulp-replace'),
10
componentsFile: 'components.js',
11
components: ['components/**/*.js', '!components/**/*.min.js'],
13
'components/prism-core.js',
14
'components/prism-markup.js',
15
'components/prism-css.js',
16
'components/prism-clike.js',
17
'components/prism-javascript.js',
18
'plugins/file-highlight/prism-file-highlight.js'
20
plugins: ['plugins/**/*.js', '!plugins/**/*.min.js'],
21
showLanguagePlugin: 'plugins/show-language/prism-show-language.js',
22
autoloaderPlugin: 'plugins/autoloader/prism-autoloader.js',
23
changelog: 'CHANGELOG.md'
26
gulp.task('components', function() {
27
return gulp.src(paths.components)
29
.pipe(rename({ suffix: '.min' }))
30
.pipe(gulp.dest('components'));
33
gulp.task('build', function() {
34
return gulp.src(paths.main)
35
.pipe(header('\n/* **********************************************\n' +
36
' Begin <%= file.relative %>\n' +
37
'********************************************** */\n\n'))
38
.pipe(concat('prism.js'))
39
.pipe(gulp.dest('./'));
42
gulp.task('plugins', ['languages-plugins'], function() {
43
return gulp.src(paths.plugins)
45
.pipe(rename({ suffix: '.min' }))
46
.pipe(gulp.dest('plugins'));
49
gulp.task('watch', function() {
50
gulp.watch(paths.components, ['components', 'build']);
51
gulp.watch(paths.plugins, ['plugins', 'build']);
54
gulp.task('languages-plugins', function (cb) {
55
fs.readFile(paths.componentsFile, {
57
}, function (err, data) {
59
data = data.replace(/^var\s+components\s*=\s*|;\s*$/g, '');
61
data = JSON.parse(data);
63
var languagesMap = {};
64
var dependenciesMap = {};
65
for (var p in data.languages) {
67
var title = data.languages[p].displayTitle || data.languages[p].title;
68
var ucfirst = p.substring(0, 1).toUpperCase() + p.substring(1);
69
if (title !== ucfirst) {
70
languagesMap[p] = title;
73
if(data.languages[p].require) {
74
dependenciesMap[p] = data.languages[p].require;
79
var jsonLanguagesMap = JSON.stringify(languagesMap);
80
var jsonDependenciesMap = JSON.stringify(dependenciesMap);
83
{plugin: paths.showLanguagePlugin, map: jsonLanguagesMap},
84
{plugin: paths.autoloaderPlugin, map: jsonDependenciesMap}
89
var done = function() {
96
tasks.forEach(function(task) {
97
var stream = gulp.src(task.plugin)
99
/\/\*languages_placeholder\[\*\/[\s\S]*?\/\*\]\*\//,
100
'/*languages_placeholder[*/' + task.map + '/*]*/'
102
.pipe(gulp.dest(task.plugin.substring(0, task.plugin.lastIndexOf('/'))));
104
stream.on('error', done);
105
stream.on('end', done);
117
gulp.task('changelog', function (cb) {
118
return gulp.src(paths.changelog)
121
'[#$1](https://github.com/PrismJS/prism/issues/$1)'
124
/\[[\da-f]+(?:, *[\da-f]+)*\]/g,
126
return match.replace(/([\da-f]{7})[\da-f]*/g, '[`$1`](https://github.com/PrismJS/prism/commit/$1)');
129
.pipe(gulp.dest('.'));
132
gulp.task('default', ['components', 'plugins', 'build']);