Skip to content

Commit

Permalink
Merge pull request #3912 from kmsquire/undocumented_updates
Browse files Browse the repository at this point in the history
Added doc/UNDOCUMENTED.rst, functions for generating
  • Loading branch information
JeffBezanson committed Aug 2, 2013
2 parents 3444ca7 + eba37b5 commit dee81ae
Show file tree
Hide file tree
Showing 4 changed files with 1,109 additions and 1 deletion.
2 changes: 2 additions & 0 deletions base/reflection.jl
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ end
methods(t::DataType) = (_methods(t,Tuple,0); # force constructor creation
t.env)

length(mt::MethodTable) = (n = 0; while !is(d,()); n += 1; d = d.next; end; n)

uncompressed_ast(l::LambdaStaticData) =
isa(l.ast,Expr) ? l.ast : ccall(:jl_uncompress_ast, Any, (Any,Any), l, l.ast)

Expand Down
60 changes: 59 additions & 1 deletion doc/DocCheck.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
module DocCheck

import Base.Help: init_help, FUNCTION_DICT, MODULE_DICT, CATEGORY_DICT
import Base: argtype_decl_string, uncompressed_ast

export isdeprecated, isdocumented, undefined_exports, undocumented, undocumented_by_file, undocumented_rst
export isdeprecated, isdocumented, undefined_exports, undocumented, undocumented_by_file, undocumented_rst,
gen_undocumented_template

isdeprecated(m::Module, v) = try endswith(functionloc(eval(m, v))[1], "deprecated.jl") catch return false end
isdeprecated(v) = try endswith(functionloc(eval(v))[1], "deprecated.jl") catch return false end
Expand Down Expand Up @@ -135,4 +137,60 @@ end

undocumented_rst() = println(_undocumented_rst()[1])

function gen_undocumented_template(outfile = "$JULIA_HOME/../../doc/UNDOCUMENTED.rst")
out = open(outfile, "w")
init_help()
println(out, ".. currentmodule:: Base")
println(out)
exports=[strip(x) for x in split(replace(open(readall, "$JULIA_HOME/../../base/exports.jl"),",",""),"\n")]
for line in exports
if search(line, "deprecated")!=0:-1; continue end
if haskey(MODULE_DICT, line); continue end
if length(line)>1
if line[1]=='#'
if line[2]!= ' ' continue end
println(out)
println(out, line[3:end])
println(out, repeat("-", length(line)-2))
println(out)
continue
else
s = symbol(line) # for submodules: string(:Sort) == "Base.Sort"
if !isdefined(s) continue end
if haskey(FUNCTION_DICT, line) || haskey(MODULE_DICT, line) || haskey(CATEGORY_DICT, string(s))
continue
end
if line[1]=='@'; line = line[2:end] end
sym = try eval(symbol(line)) catch :() end
if isa(sym, Function)
mt = methods(sym)
if length(mt) == 1 # easy case
m = mt.defs
li = m.func.code
e = uncompressed_ast(li)
argnames = e.args[1]
decls = map(argtype_decl_string, argnames, {m.sig...})
args = join(decls, ",")
line = line * "($args)"
else
line = line * "(...)"
end
println(out, ".. function:: "*line)
println(out)
println(out, " UNDOCUMENTED")
println(out)
elseif isa(sym, Module)
println(out, ".. module:: "*line)
println(out)
println(out, " UNDOCUMENTED (may not appear in helpdb.jl)")
println(out)
end
end
end
end

close(out)
nothing
end

end
2 changes: 2 additions & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ File layout
conf.py Sphinx configuration
helpdb.jl REPL help database
stdlib/ Julia standard library documentation
UNDOCUMENTED.rst Undocumented functions (to be filled in and copied to
the correct location in stdlib/)

Sphinx extensions and theme
---------------------------
Expand Down
Loading

0 comments on commit dee81ae

Please sign in to comment.