最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作。比如跨windows和ubuntu的目录拷贝功能等。
自己用的时候,发现没有API reference文档参考,很不方便。于是学习了如何用注释生成文档。
在Ubuntu环境下,首先要下载newlispdoc程序的源码:http://newlisp.org/syntax.cgi?code/newlispdoc.txt
将文件重命名为newlispdoc,添加执行权限,复制到/usr/bin目录下。
也可直接从我的github项目中获得:https://github.com/csfreebird/newlisp_armory.git
然后注意注释的写法,下面是个例子:
;; file.lsp
;; @module file
;; @description file module provides some file operations on both Ubuntu and Windows
;; @location file.lsp
;; @version 1.0
;; @author Dean Chen
;; @example
;; (let ((test-dir1 (append (real-path) file:file-seperator "a")) (test-dir2 (append (real-path) file:file-seperator "b")))
;; (make-dir test-dir1)
;; (make-dir test-dir2)
;; (if (directory? test-dir1)
;; (begin
;; (unless (catch (file:copy-folder test-dir1 test-dir2) 'result)
;; (println (append "catch error: " result))
;; (println "test copy-folder failed"))
;; (file:remove-folder test-dir1)
;; (file:remove-folder test-dir2))))
(context 'file)
;; @syntax (file:init)
;; @throw Throw error if environment variable NEWLISP_ARMORY_HOME does not exist or is invalid
;; @throw Throw error if OS is not Windows or UBuntu
;; @note init function will be called automatically when loading file.lsp module, don't call it manually
(define (init)
(unless (env "NEWLISP_ARMORY_HOME")
(throw-error "NEWLISP_ARMORY_HOME does not exist"))
(unless (file? (env "NEWLISP_ARMORY_HOME"))
(throw-error "NEWLISP_ARMORY_HOME points to a non-existing file"))
(unless (directory? (env "NEWLISP_ARMORY_HOME"))
(throw-error "NEWLISP_ARMORY_HOME points to a file instead of directory"))
(set 'file-folder (append (env "NEWLISP_ARMORY_HOME") "/codes/file"))
(if
(= ostype "Linux") (load (append file-folder "/file_ubuntu.lsp"))
(= ostype "Win32") (load (append file-folder "/file_win.lsp"))
(throw-error (append "file tool doesn't support this OS for now, ostype:" ostype))
))
现在运行命令产生doc:
newlispdoc file.lsp
由于我还有几个支持不同平台的文件,file_ubuntu.lsp和file.win.lsp,似乎newlispdoc没有这么智能。因此我将file_ubuntu.lsp的注释复制到file.lsp中,不复制源代码。
也能够生成。
下面的截图展示了我的doc:
点击链接后,进入详细页面:
分享到:
相关推荐
newlisp中文教程,作为lisp的后起之秀,newlisp有些理念比较有价值,值得学习,所以分享下,希望对大家有用
newlisp实验室newlisp-labs是一组示例代码,其主要目的是试验和测试newLISP # ubuntusudo apt-get install libreadline-dev libffi-dev libevent-devsudo ln -s /usr/lib/x86_64-linux-gnu/libsqlite3.so /usr/local...
MONITOR_NEWLISP 动机 需要一组 newlisp 脚本来监控不占用大量资源的 Linux 系统。 这包括: bb-base:newlisp 中的 xymon 基础脚本集。 bb-mysql:newlisp 中的 xymon mysql 监控脚本集。 bb-wx:Newlisp 脚本...
====一个newLISP-www.newlisp.org-宏,它使用户可以内联“定义”可调用的外部代码,就像他们“定义” lambda或宏一样。 C,包括汇编语言和普通对象代码插件。 对象代码插件没有外部依赖关系。 C和Assembly插件依赖...
newlisp-矩阵-客户端这是一个用于化持久通信的客户端库,主要用作机器人的基础。地位该项目处于早期开发阶段。 这是我的第一个 newlisp 项目,所以风格有时可能会改变。 一些代码是实验性的。示例用法 (load "matrix...
使用共享库的用户可能无法在64位版本上运行(例如zlib.lsp)其他用于编辑Emacs的类型确定库 --iconv库* ck解释器另一个arglist.lsp 文件生成辅助工具垃圾 导入环境pcap_findalldevs.lsp 十六进制转储scheme_button....
我想让我的newlisp程序访问MongoDB. 现在已经有MongoDB C driver,但是我没有时间去学习,只想尽快的完成工作。下面是我的方法,用C++创建一个动态库,这个动态库引用了MongoDB C++ driver. 但是会用extern "C" 导出...
适用于BSD,LINUX,MacOS X,SunOS和Win32的newLISP:小型,快速的350+功能,-C-,MySQL,PostgreSQL,SQLite,ODBC,TCP / IP,UDP,XML,Java接口,字符串处理,正则表达式,数学,财务,统计功能,Win32 DLL
因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........
它支持多种编程语言: PythonJavaScript Java走RubyPerla 瓦拉NewLisp 诡计OCaml 其他一些实验性绑定用于: 吉尔C ++ C# 该软件包还包含vdoc /子目录,该子目录包含用于生成所有的规则。依存关系要从存储库构建...
因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........
SDB(字符串数据库) sdb是基于djb的cdb磁盘... vala,luvit,newlisp和nodejs的绑定 sdb数据库的命令行前端 具有sdb后端的memcache客户端和服务器 数组支持(语法糖) json解析器/获取器(js0n.c) 裂口 基于cdb代码
newlisp.esy nice.esy nncron.esy nsis.esy opal_20051105.esy pdp11.esy php.esy php4.2.esy php5.esy php5a.esy pic16asm.esy plsql.esy postscript.esy PowerShell.esy PowerShellV2.esy ...
要在浏览器中快速记录笔记,请使用电子名片盒系统,数据库以及有关主题和时间的报告。 纯净而简单。 使用newLISP作为本地主机。
生成Java方法的AST 命令: python3 get_ast.py source.code ast.json source.code:源代码文件,每一行代表一个Java方法。 ast.json:Java方法的ast文件,每一行代表一个ast: 例如: public boolean ...
SICP-答案计算机程序的结构和解释 这个项目包含了我对本书中这些问题的答案。其中一些来自的作品,请参见
阅读更多AI阅读湖二年级项目
English-Sentence:电视连续剧《老友记》的抄本
操作系统调查 对所有世界大学运行的操作系统的调查。 用于采样框架的数据: :
百度更好的杜bdu以人类可读的格式显示文件大小,但按大小正确排序(如果有超级猫可用,则按大小)上色。依存关系系统工具 [可选]用法以递增顺序显示当前目录中所有文件的文件大小: bdu 以递增顺序显示当前目录中...