{"version":3,"sources":["jsdelivr-header.js","/npm/yui-jsdoc@0.0.3/yuiJsDoc.js"],"names":[],"mappings":"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","file":"/npm/yui-jsdoc@0.0.3/yuiJsDoc.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/yui-jsdoc@0.0.3/yuiJsDoc.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nexports.build = function(config, callback) {\n    var Y = require('yuidocjs'),\n        fs = require(\"fs\"),\n        path = require('path'),\n        demoBuilder,\n        stat = fs.stat,\n        basePath = path.dirname(fs.realpathSync(__filename)),\n        themeDir;\n\n    var defaultThemes = {\n        'default': basePath + '/theme-smart/',\n        'ui': basePath + '/theme-smart-ui/'\n    };\n\n    extendYUIDoc();\n\n    buildDoc(getOptions());\n\n    function getOptions() {\n        if (config) {\n            return require(path.resolve(fs.realpathSync('.'),config));\n        }\n        return require(fs.realpathSync('.') + '/docConfig.js');\n    }\n\n    function buildDoc(options) {\n        var json;\n\n        if (!options) {\n            console.log('The Options of smartDoc is not be defined!');\n            return;\n        }\n\n        //混入默认设置\n        config = options = Y.mix(options, {\n            //代码扫描路径\n            paths: ['src/'],\n            //文档输出文件夹\n            outdir: 'doc/',\n            theme: 'default',\n            //主题目录\n            //themedir: themeDir,\n            //辅助js文件地址\n            //helpers: [themeDir + \"helpers/helpers.js\"],\n            //demo扫描目录\n            demoDir: \"\",\n            //demo生成器地址\n            demoBuilder: './demoBuilder.js',\n            //demo代码生成器地址\n            codeLoader: './jasmineLoader.js'\n        });\n\n        //主题判断\n        if (config.themedir) {\n             themeDir = config.themedir;\n        } else {\n            //判断是否默认主题\n            themeDir = config.themedir = defaultThemes[config.theme] || defaultThemes['default'];\n        }\n\n        if (!config.helpers)\n            config.helpers = [themeDir + \"helpers/helpers.js\"];\n\n        demoBuilder = require(config.demoBuilder);\n\n        try {\n            json = (new Y.YUIDoc(options)).run();\n        } catch (e) {\n            console.log(e);\n            return;\n        }\n        options = Y.Project.mix(json, options);\n\n        var builder = new Y.DocBuilder(options, json);\n\n        var starttime = Date.now();\n        console.log('Start SmartDoc compile...');\n        console.log('Scanning: ' + options.paths);\n        console.log('Output: ' + options.outdir);\n\n        builder.compile(function() {\n            buildDocConfig(builder.data, builder._meta, options);\n\n            builder.writeDemo(function() {\n                callback && callback();\n                console.log('SmartDoc compile completed in ' + ((Date.now() - starttime) / 1000) + ' seconds');\n            });\n        });\n    }\n\n    function buildDocConfig(data, meta, options) {\n        var items = [];\n\n        Y.each(data.modules, function(item) {\n            item.name && items.push({\n                type: 'module',\n                name: item.name\n            });\n        });\n\n        Y.each(data.classes, function(item) {\n            item.name && items.push({\n                type: 'class',\n                name: item.name\n            });\n        })\n\n        data.classitems.forEach(function(item) {\n            item.name && items.push({\n                type: item.itemtype,\n                className: item['class'],\n                name: item.name\n            });\n        })\n\n        var config = {\n            filterItems: items\n        }\n\n        fs.appendFileSync(options.outdir + 'assets/js/config.js', \"window['__docConfig'] = \" + JSON.stringify(config)) + \";\";\n    }\n\n    function extendYUIDoc() {\n        //重新模块生成\n        Y.DocBuilder.prototype.populateModules = function(opts) {\n            var self = this;\n            opts.meta.modules = [];\n            opts.meta.allModules = [];\n\n            Y.each(this.data.modules, function(v) {\n                if (v.external) {\n                    return;\n                }\n\n                var classes = [];\n\n                for (var cName in v.classes) {\n                    classes.push({\n                        name: cName\n                    });\n                }\n\n                opts.meta.allModules.push({\n                    displayName: v.displayName || v.name,\n                    name: self.filterFileName(v.name),\n                    description: v.description,\n                    classes: classes.length ? classes : null\n                });\n\n                if (!v.is_submodule) {\n                    var o = {\n                        displayName: v.displayName || v.name,\n                        name: self.filterFileName(v.name),\n                        classes: classes.length ? classes : null\n                    };\n                    if (v.submodules) {\n                        o.submodules = [];\n                        Y.each(v.submodules, function(i, k) {\n                            var moddef = self.data.modules[k];\n                            if (moddef) {\n                                o.submodules.push({\n                                    displayName: k,\n                                    description: moddef.description\n                                });\n                                // } else {\n                                //     Y.log('Submodule data missing: ' + k + ' for ' + v.name, 'warn', 'builder');\n                            }\n                        });\n                        o.submodules.sort(self.nameSort);\n                    }\n                    opts.meta.modules.push(o);\n                }\n            });\n            opts.meta.modules.sort(this.nameSort);\n            opts.meta.allModules.sort(this.nameSort);\n            return opts;\n        }\n\n        //添加demo写入功能\n        Y.DocBuilder.prototype.writeDemo = function(cb) {\n            var self = this,\n                stack = new Y.Parallel();\n\n            Y.log('Preparing demo.html', 'info', 'builder');\n\n            render(self, stack.add(function(html, view) {\n                stack.html = html;\n                stack.view = view;\n                Y.Files.writeFile(path.join(self.options.outdir + 'assets/', 'demo.html'), html, stack.add(function() {}));\n                Y.Files.writeFile(path.join(self.options.outdir + 'assets/', 'show.html'), html + \"<script src='js/show.js'></script>\", stack.add(function() {}));\n            }));\n\n            stack.done(function(html, view) {\n                Y.log('Writing demo.html', 'info', 'builder');\n                cb(stack.html, stack.view);\n            });\n        }\n\n        extendYUIBuilder();\n    }\n\n    function extendYUIBuilder(){\n        var _parseCode =  Y.DocBuilder.prototype._parseCode;\n\n        Y.DocBuilder.prototype._parseCode = function(html){\n            return '<div class=\"stdoc-code\">' + _parseCode.call(this,html) + \"</div>\";\n        }\n\n        //扩展demo标签处理\n        Y.DocParser.DIGESTERS.demo = function(tagname, value, target, block) {\n            var content = target[\"example\"],\n                data,titles = target[\"exampleTitles\"];\n\n            if(!content)\n                content = target[\"example\"] = [];\n\n             if(!titles)\n                titles = target[\"exampleTitles\"] = [];\n\n            if (value) {\n                var data = demoBuilder.build(value, config, target);\n                if(data && data.code){\n                    content.push(data.code);\n                    titles.push(data.title);\n                }\n            }\n        }\n\n        //扩展demo标签处理\n        Y.DocParser.DIGESTERS.show = function(tagname, value, target, block) {\n            target[\"show\"] = true;\n        }\n    }\n\n    function isJS(file) {\n        return path.extname(file) === '.js';\n    }\n\n    function isCss(file) {\n        return path.extname(file) === '.css';\n    }\n\n    function render(builder, cb) {\n        Y.prepare([themeDir, themeDir], builder.getProjectMeta(), function(err, opts) {\n            var css = [],\n                script = [],\n                demo = builder.options.demo;\n\n            function addRes(res) {\n                if (isJS(res)) {\n                    script.push(res);\n                } else if (isCss(res)) {\n                    css.push(res);\n                } else\n                    return false;\n                return true;\n            }\n\n            if (demo) {\n                demo.link && demo.link.forEach(addRes)\n\n                if (demo.paths) {\n                    var resPath = builder.options.outdir + 'assets/res';\n                    fs.mkdirSync(resPath);\n                    demo.paths.forEach(function(item) {\n                        if (item.charAt(item.length - 1) === '/') {\n                            copyDir(addRes, item, resPath);\n                        } else {\n                            copyRes(addRes, path.basename(item), item, resPath);\n                        }\n                    })\n                }\n\n                if (demo.autoComplete !== false && script.length) {\n                    fs.appendFile(builder.options.outdir + 'assets/code.html', '<script src=\"' + script.join('\"></script><script src=\"') + '\"></script>');\n                }\n            }\n\n            opts.meta.css = css;\n            opts.meta.script = script;\n\n            var view = new Y.DocView(opts.meta);\n\n            var tmplFn = Y.Handlebars.compile(opts.layouts.demo);\n            builder.files++;\n            cb(tmplFn(view), view);\n        });\n    }\n\n    function copyDir(addRes, src, dst) {\n         if (!fs.existsSync(src))\n        {\n            console.error(\"demo加载目录不存在：\" + src);\n            return;\n        }\n        if (!fs.existsSync(dst))\n            fs.mkdirSync(dst);\n\n        // 读取目录中的所有文件/目录\n        var paths = fs.readdirSync(src);\n\n        paths.forEach(function(fileName) {\n            copyRes(addRes, fileName, src + '/' + path, dst)\n        });\n\n    }\n\n    function copyRes(addRes, fileName, src, dst) {\n         if (!fs.existsSync(src))\n        {\n            console.error(\"demo加载文件不存在：\" + src);\n            return;\n        }\n\n        if (addRes('res/' + fileName)) {\n            var _dst = dst + '/' + fileName,\n                readable, writable;\n\n            stat(src, function(err, st) {\n                if (err) {\n                    throw err;\n                }\n\n                // 判断是否为文件\n                if (st.isFile()) {\n                    // 创建读取流\n                    readable = fs.createReadStream(src);\n                    // 创建写入流\n                    writable = fs.createWriteStream(_dst);\n                    // 通过管道来传输流\n                    readable.pipe(writable);\n                }\n                // 如果是目录则递归调用自身\n                else if (st.isDirectory()) {\n                    copyDir(addRes, src, _dst);\n                }\n            });\n        }\n    }\n}\n"]}