| 
						 | 
						"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");});
  |