把注释写到函数内部 -- 轻松生成 JavaScript API Doc

在线演示 http://runjs.cn/detail/bjk0zqfl

(function () {
    // 用闭包写 js 是最常规的方法
    var api = this.Api = {};
    // 这个简单正则下面要要用
    var ez = /^function.+\((.*)\)\s*{\s*\/\*+([\S\s]*)\*+\//;

    // 一些私有方法, 不暴露到 api 给用户使用
    function private(){
        // something
    }

    // 下面的 api.show 是用户可见的, 我们把注释写到 函数里面

    api.show = function(msg){
        /* alert msg */
        alert(msg)
    }

    // 下面是最简单的 API Doc 生成方法

    api.docez = docez

    function docez(obj){
        /**
            docez 生成 JavaScript API Doc 数据
            与直接从源码提取注释不同, 直接忽略了私有方法.
        */
        var comment,api = Object.create(null);
        obj = obj || this;
        for (var name in obj){
            if(typeof obj[name]!==‘function‘){
                continue
            }
            comment = ez.exec(obj[name].toString())
            // 无注释, 简单跳过
            if(!comment) continue
            api[name]={
                params: comment[1],
                desc: comment[2]
            }
        }
        return api
    }

    // 下面提取 api 文档并以 JSON 显示出来
    document.getElementById(‘ApiDoc‘).innerText = JSON.stringify(api.docez(),null,4)

})()
时间: 2024-10-16 13:28:13

把注释写到函数内部 -- 轻松生成 JavaScript API Doc的相关文章

写一个函数,随机生成N条不重复的手机号

方法一:import random def phone(count): results = [] while len(results)!=count: starts = [138,156,130,170,188,189] start = random.choice(starts) end = random.randint(0,99999999) res = '%s%08d\n'%(start,end) # 格式化字符串.%08d,获取8位的数字,并换行 if res not in results

jsdoc注释规范工具(使用 JSDoc 3 自动生成 JavaScript API 文档)

安装和使用规范见:http://moodpo.com/archives/jsdoc3-tutorial.html 实例: /** * 模块调用方法 * * * @param {string} moduleName 模块名称 * @param {Function} callback 模块加载完成的回调,回调函数中会返回模块对象,方便内部调用 * @param {Boolean} isQueue 是否加入队列:在队列中的文件逐个加载(非异步) * @param {date} timeout 延时加载

python递归练习:生成一个n级深度的字典,例如:[1,2,3,4,5,6] 可以生成{1: {2: {3: {4: {6: 5}}}}},写一个函数定义n级

结果#encoding = utf-8#题目:#生成一个n级深度的字典,例如:[1,2,3,4,5,6] 可以生成{1: {2: {3: {4: {6: 5}}}}},写一个函数定义n级a=[1,2,3,4,5,6] def fun(n,i=0,dict1={}): if i ==n-1: dict1[a[i]] = a[i+1:] if i < n-1: dict1[a[i]] = fun(n,i+1,dict1={}) #print "dict1:",dict1 return

写一个函数,输入一个数,随机生成N条邮箱

写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的手机号不能重复.邮箱前面的长度是6 - 12之间,产生的邮箱必须包含大写字母.小写字母.数字和特殊字符 import random import string def email2(count): emails = set() while len(emails)!=count: email_len = random.randint(6,12) email_end = ('@163.com', '@qq.com', '@sina.co

计算机图形学(二)输出图元_6_OpenGL曲线函数_1_圆生成算法

OpenGL曲线函数 生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中.但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式.OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集.我们可以使用有理B样条显示圆.椭圆和其他二维曲线.此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面.锥面和其他形体)的函数.然而,所有这些函数比本章中介绍的基本图元应用得更多

JavaScript函数内部属性和函数方法

函数是对象,有自己的属性和方法 .首先通过console下输出的函数属性方法来直观的看一下: 函数内部属性只要包括两个特殊的对象:arguments和this. 函数属性包括:length和prototype 函数方法(非继承)包括:apply()和call() 继承而来的函数方法:bind().toString().toLocaleString().valueOf() 其他的目前不熟,后面再补充 1. 函数内部属性 在函数内部,有两个特殊的对象,arguments和this. argument

python中修改函数内部的变量会发生什么

最近写python遇到个函数内部变量使用外部变量的问题,现在总结下吧 #!/usr/bin/env python a = 100def su(): a = a + 1 print(a) s = su() #执行这段代码会报错(如果只是调用不修改是不会报错的) 更改为: #!/usr/bin/env python a = 100def su(): global a a = a + 1 print(a) s = su() 总结: 在python的函数中和全局同名的变量,如果修改变量的值就会变成局部变

轻松学习JavaScript八:JavaScript函数

函数是一组可以随时随地运行的语句,函数作为ECMAScript的核心是很重要的.函数是由事件驱动的或者当它被 调用时执行的可重复使用的代码块.也就是函数是定义一次但却可以调用或执行任意多次的一段JavaScript代码.函 数有时会有参数,即函数被调用时指定了值的局部变量.函数常常使用这些参数来计算一个返回值,这个值也成为函 数调用表达式的值. 一函数声明 函数对于任何语言来说都是一个核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方,任何时候 调用执行.JS中的函数使用functio

TFS 签入时,提示“变更集注释策略 中的内部错误……”

提示: 变更集注释策略 中的内部错误.加载 变更集注释策略 策略时出错(策略程序集"Microsoft.TeamFoundation.PowerTools.CheckinPolicies.ChangesetComments, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"未注册.). 需要安装--TFS Power Tools 插件,签入时需要强制写注释的一个管理插件: