|
|
- "use strict";
-
- var os = require("os");
- var gulp = require("gulp");
- var gutil = require("gulp-util");
- var sass = require("gulp-ruby-sass");
- var jshint = require("gulp-jshint");
- var uglify = require("gulp-uglifyjs");
- var rename = require("gulp-rename");
- var concat = require("gulp-concat");
- var notify = require("gulp-notify");
- var header = require("gulp-header");
- var minifycss = require("gulp-minify-css");
- //var jsdoc = require("gulp-jsdoc");
- //var jsdoc2md = require("gulp-jsdoc-to-markdown");
- var pkg = require("./package.json");
- var dateFormat = require("dateformatter").format;
- var replace = require("gulp-replace");
-
- pkg.name = "Editor.md";
- pkg.today = dateFormat;
-
- var headerComment = ["/*",
- " * <%= pkg.name %>",
- " *",
- " * @file <%= fileName(file) %> ",
- " * @version v<%= pkg.version %> ",
- " * @description <%= pkg.description %>",
- " * @license MIT License",
- " * @author <%= pkg.author %>",
- " * {@link <%= pkg.homepage %>}",
- " * @updateTime <%= pkg.today('Y-m-d') %>",
- " */",
- "\r\n"].join("\r\n");
-
- var headerMiniComment = "/*! <%= pkg.name %> v<%= pkg.version %> | <%= fileName(file) %> | <%= pkg.description %> | MIT License | By: <%= pkg.author %> | <%= pkg.homepage %> | <%=pkg.today('Y-m-d') %> */\r\n";
-
- var scssTask = function(fileName, path) {
-
- path = path || "scss/";
-
- var distPath = "css";
-
- return sass(path + fileName + ".scss", { style: "expanded", sourcemap: false, noCache : true })
- .pipe(gulp.dest(distPath))
- .pipe(header(headerComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace("\\", "");
- }}))
- .pipe(gulp.dest(distPath))
- .pipe(rename({ suffix: ".min" }))
- .pipe(gulp.dest(distPath))
- .pipe(minifycss())
- .pipe(gulp.dest(distPath))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace("\\", "");
- }}))
- .pipe(gulp.dest(distPath))
- .pipe(notify({ message: fileName + ".scss task completed!" }));
- };
-
- gulp.task("scss", function() {
- return scssTask("editormd");
- });
-
- gulp.task("scss2", function() {
- return scssTask("editormd.preview");
- });
-
- gulp.task("scss3", function() {
- return scssTask("editormd.logo");
- });
-
- gulp.task("js", function() {
- return gulp.src("./src/editormd.js")
- .pipe(jshint("./.jshintrc"))
- .pipe(jshint.reporter("default"))
- .pipe(header(headerComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace(/[\\\/]?/, "");
- }}))
- .pipe(gulp.dest("./"))
- .pipe(rename({ suffix: ".min" }))
- .pipe(uglify()) // {outSourceMap: true, sourceRoot: './'}
- .pipe(gulp.dest("./"))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base + ( (os.platform() === "win32") ? "\\" : "/") );
- return name[1].replace(/[\\\/]?/, "");
- }}))
- .pipe(gulp.dest("./"))
- .pipe(notify({ message: "editormd.js task complete" }));
- });
-
- gulp.task("amd", function() {
- var replaceText1 = [
- 'var cmModePath = "codemirror/mode/";',
- ' var cmAddonPath = "codemirror/addon/";',
- '',
- ' var codeMirrorModules = [',
- ' "jquery", "marked", "prettify",',
- ' "katex", "raphael", "underscore", "flowchart", "jqueryflowchart", "sequenceDiagram",',
- '',
- ' "codemirror/lib/codemirror",',
- ' cmModePath + "css/css",',
- ' cmModePath + "sass/sass",',
- ' cmModePath + "shell/shell",',
- ' cmModePath + "sql/sql",',
- ' cmModePath + "clike/clike",',
- ' cmModePath + "php/php",',
- ' cmModePath + "xml/xml",',
- ' cmModePath + "markdown/markdown",',
- ' cmModePath + "javascript/javascript",',
- ' cmModePath + "htmlmixed/htmlmixed",',
- ' cmModePath + "gfm/gfm",',
- ' cmModePath + "http/http",',
- ' cmModePath + "go/go",',
- ' cmModePath + "dart/dart",',
- ' cmModePath + "coffeescript/coffeescript",',
- ' cmModePath + "nginx/nginx",',
- ' cmModePath + "python/python",',
- ' cmModePath + "perl/perl",',
- ' cmModePath + "lua/lua",',
- ' cmModePath + "r/r", ',
- ' cmModePath + "ruby/ruby", ',
- ' cmModePath + "rst/rst",',
- ' cmModePath + "smartymixed/smartymixed",',
- ' cmModePath + "vb/vb",',
- ' cmModePath + "vbscript/vbscript",',
- ' cmModePath + "velocity/velocity",',
- ' cmModePath + "xquery/xquery",',
- ' cmModePath + "yaml/yaml",',
- ' cmModePath + "erlang/erlang",',
- ' cmModePath + "jade/jade",',
- '',
- ' cmAddonPath + "edit/trailingspace", ',
- ' cmAddonPath + "dialog/dialog", ',
- ' cmAddonPath + "search/searchcursor", ',
- ' cmAddonPath + "search/search", ',
- ' cmAddonPath + "scroll/annotatescrollbar", ',
- ' cmAddonPath + "search/matchesonscrollbar", ',
- ' cmAddonPath + "display/placeholder", ',
- ' cmAddonPath + "edit/closetag", ',
- ' cmAddonPath + "fold/foldcode",',
- ' cmAddonPath + "fold/foldgutter",',
- ' cmAddonPath + "fold/indent-fold",',
- ' cmAddonPath + "fold/brace-fold",',
- ' cmAddonPath + "fold/xml-fold", ',
- ' cmAddonPath + "fold/markdown-fold",',
- ' cmAddonPath + "fold/comment-fold", ',
- ' cmAddonPath + "mode/overlay", ',
- ' cmAddonPath + "selection/active-line", ',
- ' cmAddonPath + "edit/closebrackets", ',
- ' cmAddonPath + "display/fullscreen",',
- ' cmAddonPath + "search/match-highlighter"',
- ' ];',
- '',
- ' define(codeMirrorModules, factory);'
- ].join("\r\n");
-
- var replaceText2 = [
- "if (typeof define == \"function\" && define.amd) {",
- " $ = arguments[0];",
- " marked = arguments[1];",
- " prettify = arguments[2];",
- " katex = arguments[3];",
- " Raphael = arguments[4];",
- " _ = arguments[5];",
- " flowchart = arguments[6];",
- " CodeMirror = arguments[9];",
- " }"
- ].join("\r\n");
-
- gulp.src("src/editormd.js")
- .pipe(rename({ suffix: ".amd" }))
- .pipe(gulp.dest('./'))
- .pipe(header(headerComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace(/[\\\/]?/, "");
- }}))
- .pipe(gulp.dest("./"))
- .pipe(replace("/* Require.js define replace */", replaceText1))
- .pipe(gulp.dest('./'))
- .pipe(replace("/* Require.js assignment replace */", replaceText2))
- .pipe(gulp.dest('./'))
- .pipe(rename({ suffix: ".min" }))
- .pipe(uglify()) //{outSourceMap: true, sourceRoot: './'}
- .pipe(gulp.dest("./"))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base + ( (os.platform() === "win32") ? "\\" : "/") );
- return name[1].replace(/[\\\/]?/, "");
- }}))
- .pipe(gulp.dest("./"))
- .pipe(notify({ message: "amd version task complete"}));
- });
-
-
- var codeMirror = {
- path : {
- src : {
- mode : "lib/codemirror/mode",
- addon : "lib/codemirror/addon"
- },
- dist : "lib/codemirror"
- },
- modes : [
- "css",
- "sass",
- "shell",
- "sql",
- "clike",
- "php",
- "xml",
- "markdown",
- "javascript",
- "htmlmixed",
- "gfm",
- "http",
- "go",
- "dart",
- "coffeescript",
- "nginx",
- "python",
- "perl",
- "lua",
- "r",
- "ruby",
- "rst",
- "smartymixed",
- "vb",
- "vbscript",
- "velocity",
- "xquery",
- "yaml",
- "erlang",
- "jade",
- ],
-
- addons : [
- "edit/trailingspace",
- "dialog/dialog",
- "search/searchcursor",
- "search/search",
- "scroll/annotatescrollbar",
- "search/matchesonscrollbar",
- "display/placeholder",
- "edit/closetag",
- "fold/foldcode",
- "fold/foldgutter",
- "fold/indent-fold",
- "fold/brace-fold",
- "fold/xml-fold",
- "fold/markdown-fold",
- "fold/comment-fold",
- "mode/overlay",
- "selection/active-line",
- "edit/closebrackets",
- "display/fullscreen",
- "search/match-highlighter"
- ]
- };
-
- gulp.task("cm-mode", function() {
-
- var modes = [
- codeMirror.path.src.mode + "/meta.js"
- ];
-
- for(var i in codeMirror.modes) {
- var mode = codeMirror.modes[i];
- modes.push(codeMirror.path.src.mode + "/" + mode + "/" + mode + ".js");
- }
-
- return gulp.src(modes)
- .pipe(concat("modes.min.js"))
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(uglify()) // {outSourceMap: true, sourceRoot: codeMirror.path.dist}
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base + "\\");
- return (name[1]?name[1]:name[0]).replace(/\\/g, "");
- }}))
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(notify({ message: "codemirror-mode task complete!" }));
- });
-
- gulp.task("cm-addon", function() {
-
- var addons = [];
-
- for(var i in codeMirror.addons) {
- var addon = codeMirror.addons[i];
- addons.push(codeMirror.path.src.addon + "/" + addon + ".js");
- }
-
- return gulp.src(addons)
- .pipe(concat("addons.min.js"))
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(uglify()) //{outSourceMap: true, sourceRoot: codeMirror.path.dist}
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base + "\\");
- return (name[1]?name[1]:name[0]).replace(/\\/g, "");
- }}))
- .pipe(gulp.dest(codeMirror.path.dist))
- .pipe(notify({ message: "codemirror-addon.js task complete" }));
- });
- /*
- gulp.task("jsdoc", function(){
- return gulp.src(["./src/editormd.js", "README.md"])
- .pipe(jsdoc.parser())
- .pipe(jsdoc.generator("./docs/html"));
- });
-
- gulp.task("jsdoc2md", function() {
- return gulp.src("src/js/editormd.js")
- .pipe(jsdoc2md())
- .on("error", function(err){
- gutil.log(gutil.colors.red("jsdoc2md failed"), err.message);
- })
- .pipe(rename(function(path) {
- path.extname = ".md";
- }))
- .pipe(gulp.dest("docs/markdown"));
- });
- */
- gulp.task("watch", function() {
- gulp.watch("scss/editormd.scss", ["scss"]);
- gulp.watch("scss/editormd.preview.scss", ["scss", "scss2"]);
- gulp.watch("scss/editormd.logo.scss", ["scss", "scss3"]);
- gulp.watch("src/editormd.js", ["js", "amd"]);
- });
-
- gulp.task("default", function() {
- gulp.run("scss");
- gulp.run("scss2");
- gulp.run("scss3");
- gulp.run("js");
- gulp.run("amd");
- gulp.run("cm-addon");
- gulp.run("cm-mode");
- });
|