API 文档构建

2014年05月05日 21:03GMT+8

使用 haxe dox 来构建 API 文档. 参考这个库的 Readme 你能直接获得最新Haxe API.

  • 参考 gen.hxml 如何从 hx源码中导出 xml 文件,

  • 参考 std.hxml 如何获得 API HTML

  • dox 默认的模板使用的 CSS 框架为 bootstrap 2.3.2

  • https://github.com/dpeek/dox/wiki/Using-Dox

注释规范

这些注释规范主要针对 haxelib dox解析

  • 由于 dox 使用了 markdown 解析注释, 因此可以使用 markdown 语法

    # 表格, 好像只支持 左 或 右对齐
    First Header  | Second Header
    -----------:  | :------------
    Content Cell  | Content Cell
    Content Cell  | Content Cell
    
    # 一些基本的 HTML 标签
    To <b>edit</b> settings, press `Ctrl + ,`
    
    # URL 引用 (TODO: 如何引用当前手册中的链接?)
    [example](http://example.com)
    
  • 元数据, 大多数情况下不需要写这些, 解析器能识别各参数或回值类型

    @since name 1.2.3 aplha		# 需要正确的版本号格式 n.n.n
    @exception TypeName 描述		# 或 @throws
    @param delay 写参数名就行了
    @return 一些描述内容			# 或 @returns
    @see TypeName				#
    @deprecated 弃用描述			# 不用理会这个的顺序
    

导出XML

简单的示例

haxe -xml doc.xml --macro include('my.package') -D doc-gen -dce no

大的项目时参考 dox 下的 gen/ImportAll.hx 生成, 以及一些构建示例

读取XML

不需要做这一步, 但是如果你打算从 xml 读取一些内容时可以尝试

class DocGen {
    static function main() {
        var data = sys.io.File.getContent("doc.xml");
        var doc = Xml.parse(data).firstElement();
        var parser = new haxe.rtti.XmlParser();
        parser.process(doc,"js");	//附加的参数 "js", 表示为平台,
									//process 可以被多次调用(每个平台调用一次)
    }
}

dox 命令行

你可以不必安装这个库, 下载 theme 文件夹 和 run.n 文件就可以了, 并用 neko run.n 来替换 haxelib run dox

  • 命令为: neko run.n -i export.xml

    # 最终输出文件 e.g: -o bin/api-laster.zip 或者为目录 -o bin/docs
    [-o |  --output-path] <path>
    
    # XML 所在目录。 e.g: -i bin/xmls
    [-i | --input-path] <path>
    
    #Add template directory
    [-t | --template-path] <path>
    
    # Add a resource directory whose contents are copied to the output directory
    [-res | --resource-path] <dir>
    
    #Add a path include filter, EReg String
    [-in | --include] <path>
    
    #Add a path exclude filter, EReg String. e.g: -ex ^js -ex flash
    [-ex | --exclude] <path>
    
    #Set the page main title
    --title <name>
    
    #Set the package which serves as top-level
    --toplevel-package <dotPath>
    
    #Set the theme name or path, 设置模板
    -theme <name>
    
    #Defines key = value
    [-D  | --defines] <key> <value>
    
    # 其它
    -D source-path 	#将定义源码URL
    

模板修改

由于引用了 Google 文件,而国内却无法访问.因此可以做一些改动。

Old Makefile

由于 使用 -in 代替了 -ex , 因此不再需要这份旧的文件

CC  := neko gendoc.n

# --> 修改 TARGET_DIR 为你要输出的目录,注意: haxe dox  不支持 cygwin环境下跨磁盘的的目录
TARGET_DIR  :=  ./api-h3d

# --> 修改 FILES 为 你用 haxe -xml 生成的 xml 文件. 目录/文件名
FILES   := pkgs.xml


TARGET  :=  $(TARGET_DIR)/index.html


# 赋值空格
EMPTY:=
SPACE:= $(EMPTY) $(EMPTY)

#排除这些不要的类
EX := microsoft javax haxe flash format hxsl Array ArrayAccess Bool Class Dynamic EReg Enum EnumValue Float
EX += IMap Int Iterable Iterator Lambda List Map Math Null Reflect Std String StringBuf
EX += StringTools Type UInt ValueType Void Xml XmlType Date

EXCLUDE := $(addprefix -ex$(SPACE),$(EX))

all : $(TARGET)

$(TARGET):
    $(CC) -i $(FILES) -o $(TARGET_DIR) $(EXCLUDE)

clean:
    @echo clean...
    @rm -rf $(TARGET_DIR)