|
Packit |
bc1512 |
#!/usr/bin/env ruby
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
# GEGL API creator Øyvind Kolås 2007,
|
|
Packit |
bc1512 |
#
|
|
Packit |
bc1512 |
# Use under a public domain license.
|
|
Packit |
bc1512 |
#
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
class Argument
|
|
Packit |
bc1512 |
attr_accessor :name, :data_type, :doc
|
|
Packit |
bc1512 |
def initialize
|
|
Packit |
bc1512 |
@data_type=""
|
|
Packit |
bc1512 |
@name=""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def data_type
|
|
Packit |
bc1512 |
type = @data_type.gsub("const", "").gsub(/\**/,"").gsub(/\s*/, "")
|
|
Packit |
bc1512 |
ret = @data_type.sub(/\s+/, " ")
|
|
Packit |
bc1512 |
url = ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
case type
|
|
Packit |
bc1512 |
when "void"
|
|
Packit |
bc1512 |
when "gint"
|
|
Packit |
bc1512 |
when "guint"
|
|
Packit |
bc1512 |
when "gchar"
|
|
Packit |
bc1512 |
when "gdouble"
|
|
Packit |
bc1512 |
when "gfloat"
|
|
Packit |
bc1512 |
when "gboolean"
|
|
Packit |
bc1512 |
when "gpointer"
|
|
Packit |
bc1512 |
when "GList"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/glib/glib-Doubly-Linked-Lists.html#GList"
|
|
Packit |
bc1512 |
when "GSList"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/glib/glib-Singly-Linked-Lists.html#GSList"
|
|
Packit |
bc1512 |
when "GParamSpec"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/gobject/gobject-GParamSpec.html#GParamSpec"
|
|
Packit |
bc1512 |
when "GOptionGroup"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.2/glib/glib-Commandline-option-parser.html#GOptionGroup"
|
|
Packit |
bc1512 |
when "GValue"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/gobject/gobject-Generic-values.html#GValue"
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
url="##{type}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
if url!=""
|
|
Packit |
bc1512 |
ret.sub(type, "#{type}")
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
ret
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
class String
|
|
Packit |
bc1512 |
def htmlify
|
|
Packit |
bc1512 |
self.gsub("\n\n","\n").gsub("XXX","XXX").gsub("NULL","NULL").gsub(/#([a-zA-Z_]*)/, "\\1").gsub(/@([a-zA-Z_]*)/, "\\1").gsub("TRUE", "TRUE")
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
class Section
|
|
Packit |
bc1512 |
attr_accessor :name, :doc, :sample
|
|
Packit |
bc1512 |
def initialize
|
|
Packit |
bc1512 |
@doc=""
|
|
Packit |
bc1512 |
@sample=""
|
|
Packit |
bc1512 |
@name=""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def menu_entry
|
|
Packit |
bc1512 |
if @name == "GeglBuffer" or
|
|
Packit |
bc1512 |
@name == "GeglNode" or
|
|
Packit |
bc1512 |
@name == "GeglColor" or
|
|
Packit |
bc1512 |
@name == "GeglRectangle" or
|
|
Packit |
bc1512 |
@name == "GeglProcessor" or
|
|
Packit |
bc1512 |
@name == "XML" or
|
|
Packit |
bc1512 |
@name == "The GEGL API" then
|
|
Packit |
bc1512 |
return "#{@name} "
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
return "#{@name}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def to_s
|
|
Packit |
bc1512 |
ret = "#{@name}\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def sample_html
|
|
Packit |
bc1512 |
@sample.gsub('&','&').gsub('<','<').gsub('>','>').gsub(/(.)(#.*)$/, "\\1\\2")
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def to_html
|
|
Packit |
bc1512 |
ret = "
|
|
Packit |
bc1512 |
#{@name}"
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += @doc.htmlify
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += "#{sample_html} "
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
class Function
|
|
Packit |
bc1512 |
attr_accessor :name, :return_type, :return_doc, :doc, :arguments, :sample
|
|
Packit |
bc1512 |
def initialize
|
|
Packit |
bc1512 |
@arguments = Array.new
|
|
Packit |
bc1512 |
@doc=""
|
|
Packit |
bc1512 |
@return_type=""
|
|
Packit |
bc1512 |
@return_doc=""
|
|
Packit |
bc1512 |
@name=""
|
|
Packit |
bc1512 |
@sample=""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def menu_entry
|
|
Packit |
bc1512 |
" #{@name}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def sample_html
|
|
Packit |
bc1512 |
@sample.gsub('&','&').gsub('<','<').gsub('>','>').gsub(/(.)(#.*)$/, "\\1\\2")
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def add_arg arg
|
|
Packit |
bc1512 |
@arguments << arg
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
def to_s
|
|
Packit |
bc1512 |
ret = "#{@return_type} #{@name}\n"
|
|
Packit |
bc1512 |
@arguments.each {|arg|
|
|
Packit |
bc1512 |
ret += "\t#{arg.data_type} #{arg.name} : #{arg.doc}\n"
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
ret += " _#{@doc}\n"
|
|
Packit |
bc1512 |
ret += " _#{@return_doc}\n"
|
|
Packit |
bc1512 |
ret += "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
def return_type
|
|
Packit |
bc1512 |
type = @return_type.gsub("const", "").gsub(/\**/,"").gsub(/\s*/, "")
|
|
Packit |
bc1512 |
ret = @return_type.sub(/\s+/, " ")
|
|
Packit |
bc1512 |
url = ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
case type
|
|
Packit |
bc1512 |
when "void"
|
|
Packit |
bc1512 |
when "gint"
|
|
Packit |
bc1512 |
when "guint"
|
|
Packit |
bc1512 |
when "gchar"
|
|
Packit |
bc1512 |
when "gdouble"
|
|
Packit |
bc1512 |
when "gfloat"
|
|
Packit |
bc1512 |
when "gboolean"
|
|
Packit |
bc1512 |
when "gpointer"
|
|
Packit |
bc1512 |
when "GList"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/glib/glib-Doubly-Linked-Lists.html#GList"
|
|
Packit |
bc1512 |
when "GSList"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/glib/glib-Singly-Linked-Lists.html#GSList"
|
|
Packit |
bc1512 |
when "GParamSpec"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/gobject/gobject-GParamSpec.html#GParamSpec"
|
|
Packit |
bc1512 |
when "GOptionGroup"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.2/glib/glib-Commandline-option-parser.html#GOptionGroup"
|
|
Packit |
bc1512 |
when "GValue"
|
|
Packit |
bc1512 |
url="http://developer.gnome.org/doc/API/2.0/gobject/gobject-Generic-values.html#GValue"
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
url="##{type}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
if url!=""
|
|
Packit |
bc1512 |
ret.sub(type, "#{type}")
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
ret
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
def to_html
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ret = "
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#{self.return_type.sub(/const/,"const").gsub("*","*")}
|
|
Packit |
bc1512 |
#{@name}
|
|
Packit |
bc1512 |
"
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
first=true
|
|
Packit |
bc1512 |
i=0
|
|
Packit |
bc1512 |
if @arguments.length==0 and @return_type!=""
|
|
Packit |
bc1512 |
ret += "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
@arguments.each {|arg|
|
|
Packit |
bc1512 |
i=i+1
|
|
Packit |
bc1512 |
if(first and i==@arguments.length)
|
|
Packit |
bc1512 |
ret += "
|
|
Packit |
bc1512 |
(#{arg.data_type.sub(/const/,"const").gsub("*","*")}
|
|
Packit |
bc1512 |
#{arg.name.sub("...","..., NULL")})
|
|
Packit |
bc1512 |
\n"
|
|
Packit |
bc1512 |
elsif(first)
|
|
Packit |
bc1512 |
first=false
|
|
Packit |
bc1512 |
ret += "
|
|
Packit |
bc1512 |
(#{arg.data_type.sub(/const/,"const").gsub("*","*")}
|
|
Packit |
bc1512 |
#{arg.name.sub("...","..., NULL")},
|
|
Packit |
bc1512 |
\n"
|
|
Packit |
bc1512 |
elsif(i==@arguments.length)
|
|
Packit |
bc1512 |
ret += "
|
|
Packit |
bc1512 |
#{arg.data_type.sub(/const/,"const").gsub("*","*")}
|
|
Packit |
bc1512 |
#{arg.name.sub("...","..., NULL")})
|
|
Packit |
bc1512 |
\n"
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
ret += "
|
|
Packit |
bc1512 |
#{arg.data_type.sub(/const/,"const").gsub("*","*")}
|
|
Packit |
bc1512 |
#{arg.name.sub("...","..., NULL")},
|
|
Packit |
bc1512 |
\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += @doc.htmlify;
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
if @arguments.length > 0
|
|
Packit |
bc1512 |
ret += "Arguments: "
|
|
Packit |
bc1512 |
ret += "\n"
|
|
Packit |
bc1512 |
@arguments.each { |arg|
|
|
Packit |
bc1512 |
ret += "#{arg.name}"
|
|
Packit |
bc1512 |
ret += "#{arg.doc.htmlify}"
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
ret += "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
ret += "#{@return_doc.htmlify.sub("Returns", "Returns")} "
|
|
Packit |
bc1512 |
ret += "#{sample_html} "
|
|
Packit |
bc1512 |
ret += ""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
CSS="div.function{
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.function_signature{
|
|
Packit |
bc1512 |
background-color: #ddd;
|
|
Packit |
bc1512 |
padding: 0.5em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.function_header{
|
|
Packit |
bc1512 |
position: relative;
|
|
Packit |
bc1512 |
top: 0;
|
|
Packit |
bc1512 |
left: 0;
|
|
Packit |
bc1512 |
display:block;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.return_type{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
font-style: italic;
|
|
Packit |
bc1512 |
color: #22F;
|
|
Packit |
bc1512 |
float:left;
|
|
Packit |
bc1512 |
padding-right: 1em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.function_name{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
float: left;
|
|
Packit |
bc1512 |
font-weight: bold;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.function_args{
|
|
Packit |
bc1512 |
float: right;
|
|
Packit |
bc1512 |
display:block;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.argument{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
clear: left;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.arg_type{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
font-style: italic;
|
|
Packit |
bc1512 |
color: #22F;
|
|
Packit |
bc1512 |
width: 11em;
|
|
Packit |
bc1512 |
float: left;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.arg_name{
|
|
Packit |
bc1512 |
color: #050;
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
float: left;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
span.arg_name{
|
|
Packit |
bc1512 |
color: #050;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.arg_doc{
|
|
Packit |
bc1512 |
display: none;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.function_doc{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.float_breaker{
|
|
Packit |
bc1512 |
clear: both;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.return_doc{
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
span.const{
|
|
Packit |
bc1512 |
color: grey;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
span.pointer{
|
|
Packit |
bc1512 |
color: red;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
span.varargs{
|
|
Packit |
bc1512 |
color: #F22;
|
|
Packit |
bc1512 |
font-style: italic;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
span.keyword {
|
|
Packit |
bc1512 |
color: #22F;
|
|
Packit |
bc1512 |
font-family: mono;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
div.sect{
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
div.sect_doc{
|
|
Packit |
bc1512 |
display: block;
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
"
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
elements = []
|
|
Packit |
bc1512 |
function = nil
|
|
Packit |
bc1512 |
state = :none
|
|
Packit |
bc1512 |
arg_no=0
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
(ARGV.length-1).times {
|
|
Packit |
bc1512 |
|file_no|
|
|
Packit |
bc1512 |
line_no=0
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
puts ARGV[file_no]
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
IO.foreach(ARGV[file_no]) {
|
|
Packit |
bc1512 |
|line|
|
|
Packit |
bc1512 |
line_no = line_no+1
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
case state
|
|
Packit |
bc1512 |
when :none
|
|
Packit |
bc1512 |
state = :start if (line =~ /\/\*\*/)
|
|
Packit |
bc1512 |
state = :section if (line =~ /\/\*\*\*/)
|
|
Packit |
bc1512 |
when :section
|
|
Packit |
bc1512 |
line =~ / \* (.*):/
|
|
Packit |
bc1512 |
elements << function if (function!=nil)
|
|
Packit |
bc1512 |
function=Section.new
|
|
Packit |
bc1512 |
function.name=$1.to_s
|
|
Packit |
bc1512 |
state = :section_doc
|
|
Packit |
bc1512 |
when :start
|
|
Packit |
bc1512 |
line =~ / \* (.*):(.*)/
|
|
Packit |
bc1512 |
elements << function if (function!=nil)
|
|
Packit |
bc1512 |
function=Function.new
|
|
Packit |
bc1512 |
function.name=$1.to_s
|
|
Packit |
bc1512 |
# $2 is the introspection annotations
|
|
Packit |
bc1512 |
state = :args
|
|
Packit |
bc1512 |
arg_no=-1
|
|
Packit |
bc1512 |
when :args
|
|
Packit |
bc1512 |
if line =~ /.*@(.*):(.*):(.*)/
|
|
Packit |
bc1512 |
arg_no=arg_no+1
|
|
Packit |
bc1512 |
argument=Argument.new
|
|
Packit |
bc1512 |
argument.name=$1
|
|
Packit |
bc1512 |
# $2 is introspection annotations
|
|
Packit |
bc1512 |
argument.doc=""+$3.to_s
|
|
Packit |
bc1512 |
function.add_arg argument
|
|
Packit |
bc1512 |
elsif line =~ /.*@(.*):(.*)/
|
|
Packit |
bc1512 |
arg_no=arg_no+1
|
|
Packit |
bc1512 |
argument=Argument.new
|
|
Packit |
bc1512 |
argument.name=$1
|
|
Packit |
bc1512 |
argument.doc=""+$2.to_s
|
|
Packit |
bc1512 |
function.add_arg argument
|
|
Packit |
bc1512 |
elsif line =~ / \*(.*)/
|
|
Packit |
bc1512 |
if $1.chomp==''
|
|
Packit |
bc1512 |
state=:more
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
function.arguments[arg_no].doc = function.arguments[arg_no].doc + $1.to_s + "\n" if arg_no != -1
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
state=:more
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
when :section_doc
|
|
Packit |
bc1512 |
if line =~ /^ \* ---/
|
|
Packit |
bc1512 |
state=:section_sample
|
|
Packit |
bc1512 |
elsif line =~ /\*\//
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
line =~ /.*\*(.*)/
|
|
Packit |
bc1512 |
function.doc = function.doc + $1.to_s + "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
when :section_sample
|
|
Packit |
bc1512 |
if line =~ /\*\//
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
line =~ /.*\* (.*)/
|
|
Packit |
bc1512 |
function.sample = function.sample + $1.to_s + "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
when :function_sample
|
|
Packit |
bc1512 |
if line =~ /\*\//
|
|
Packit |
bc1512 |
state=:fun
|
|
Packit |
bc1512 |
arg_no=0
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
line =~ /.*\* (.*)/
|
|
Packit |
bc1512 |
function.sample = function.sample + $1.to_s + "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
when :more
|
|
Packit |
bc1512 |
if line =~ /^ \* ---/
|
|
Packit |
bc1512 |
state=:function_sample
|
|
Packit |
bc1512 |
elsif line =~ /.*(Returns.*)/
|
|
Packit |
bc1512 |
function.return_doc = $1 + "\n"
|
|
Packit |
bc1512 |
state=:more_return
|
|
Packit |
bc1512 |
elsif line =~ /\*\//
|
|
Packit |
bc1512 |
state=:fun
|
|
Packit |
bc1512 |
arg_no=0
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
line =~ /.*\*(.*)/
|
|
Packit |
bc1512 |
function.doc = function.doc + $1.to_s + "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
when :more_return
|
|
Packit |
bc1512 |
if line =~ /^ \* ---/
|
|
Packit |
bc1512 |
state=:function_sample
|
|
Packit |
bc1512 |
elsif line =~ /\*\//
|
|
Packit |
bc1512 |
state=:fun
|
|
Packit |
bc1512 |
arg_no=0
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
line =~ /.*\*(.*)/
|
|
Packit |
bc1512 |
function.return_doc = function.return_doc + $1.to_s + "\n"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
when :fun # might be getting more data on current fun
|
|
Packit |
bc1512 |
if line=~ /^\s*((?:const)?\s*[a-zA-Z\d_]*\s*\**\s*)([a-z_\d]*)\s*\(\s*((?:const)?\s*[a-zA-Z\d_]*\s*\**)\s*([a-zA-Z\d_]*)(,?)/
|
|
Packit |
bc1512 |
#.*\(([a-zA-Z_\s\*])([a-zA-Z\d]*)/
|
|
Packit |
bc1512 |
function.return_type=$1
|
|
Packit |
bc1512 |
name=$2
|
|
Packit |
bc1512 |
argtype=$3
|
|
Packit |
bc1512 |
argname=$4
|
|
Packit |
bc1512 |
comma=$5
|
|
Packit |
bc1512 |
arg_no=0
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
if name!=function.name and function.name!='GeglProcessor'
|
|
Packit |
bc1512 |
puts "#{line_no}:function name mismatch #{name}!=#{function.name}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
if argtype=='void'
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
elsif argtype==''
|
|
Packit |
bc1512 |
puts "#{line_no}: empty argument list"
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
if argname==''
|
|
Packit |
bc1512 |
puts "#{line_no}: expected argument name"
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
if (function.arguments[arg_no].name!=argname)
|
|
Packit |
bc1512 |
puts "#{line_no}: #{function.arguments[arg_no].name}!=#{argname}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
function.arguments[arg_no].data_type=argtype
|
|
Packit |
bc1512 |
arg_no = arg_no+1
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
elsif line=~ /^\s*((?:const)?\s*[a-zA-Z\d_]*\s*\**\s*)([a-z_\d]*)/
|
|
Packit |
bc1512 |
argtype=$1
|
|
Packit |
bc1512 |
argname=$2
|
|
Packit |
bc1512 |
if (argtype!='' and argname!='' and function.arguments.length>arg_no)
|
|
Packit |
bc1512 |
if (function.arguments[arg_no].name!=argname)
|
|
Packit |
bc1512 |
puts "#{line_no}: #{function.arguments[arg_no].name}!=#{argname}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
function.arguments[arg_no].data_type=argtype
|
|
Packit |
bc1512 |
arg_no = arg_no+1
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
#puts "we're in fun and got: #{line}"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
state = :start if (line =~ /\/\*\*/)
|
|
Packit |
bc1512 |
state = :section if (line =~ /\/\*\*\*/)
|
|
Packit |
bc1512 |
else
|
|
Packit |
bc1512 |
state=:none
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
if ARGV.length<2
|
|
Packit |
bc1512 |
puts "usage: #{$0} <header1 [header2 ..]> <output.html>"
|
|
Packit |
bc1512 |
exit
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
=begin
|
|
Packit |
bc1512 |
File.open(ARGV[1], "w") {|file|
|
|
Packit |
bc1512 |
file.puts "<html><body><head><style type='text/css'>#{CSS}</style></head>"
|
|
Packit |
bc1512 |
elements.each {|fun| file.puts fun.to_html
|
|
Packit |
bc1512 |
file.puts "</body></html>"
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
=end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
File.open(ARGV[ARGV.length-1], "w") {|file|
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
file.puts "
|
|
Packit |
bc1512 |
<html>
|
|
Packit |
bc1512 |
<head>
|
|
Packit |
bc1512 |
<title>GEGL API</title>
|
|
Packit |
bc1512 |
<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
<style type='text/css'>
|
|
Packit |
bc1512 |
@import url(\"gegl.css\");
|
|
Packit |
bc1512 |
div#toc ul {
|
|
Packit |
bc1512 |
font-size: 70%;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
h3 {
|
|
Packit |
bc1512 |
margin-top: 2em;
|
|
Packit |
bc1512 |
margin-bottom: 0;
|
|
Packit |
bc1512 |
padding-bottom: 0;
|
|
Packit |
bc1512 |
padding-top: 0.2em;
|
|
Packit |
bc1512 |
border-top: 1px solid grey;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
h4 {
|
|
Packit |
bc1512 |
margin-top: 1.5em;
|
|
Packit |
bc1512 |
margin-bottom: 0;
|
|
Packit |
bc1512 |
padding-bottom: 0.5em;
|
|
Packit |
bc1512 |
padding-top: 0.2em;
|
|
Packit |
bc1512 |
border-top: 1px solid grey;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#{CSS}
|
|
Packit |
bc1512 |
</style>
|
|
Packit |
bc1512 |
</head>
|
|
Packit |
bc1512 |
<body>"
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
file.puts "
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
Contents
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL
|
|
Packit |
bc1512 |
Documentation
|
|
Packit |
bc1512 |
Glossary
|
|
Packit |
bc1512 |
Operations
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
"
|
|
Packit |
bc1512 |
elements.each { |element|
|
|
Packit |
bc1512 |
file.puts "#{element.menu_entry}"
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
file.puts "\n"
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
file.puts "
|
|
Packit |
bc1512 |
elements.each {|element|
|
|
Packit |
bc1512 |
if !element.name.empty?
|
|
Packit |
bc1512 |
file.puts ""
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
file.puts "
|
|
Packit |
bc1512 |
</body>
|
|
Packit |
bc1512 |
</html>"
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
File.open("gegl.devhelp", "w") {|file|
|
|
Packit |
bc1512 |
file.puts "
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
<book xmlns='http://www.devhelp.net/book' title='GEGL Reference Manual' link='api.html' author='' name='gegl'>"
|
|
Packit |
bc1512 |
file.puts "<chapters>"
|
|
Packit |
bc1512 |
elements.each { |element|
|
|
Packit |
bc1512 |
if element.is_a? Section and !element.name.empty?
|
|
Packit |
bc1512 |
file.puts "<sub name='#{element.name}' link='api.html\##{element.name.gsub(' ','_')}'/>"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
file.puts "<sub name='Operations' link='operations.html'/>"
|
|
Packit |
bc1512 |
file.puts "</chapters>"
|
|
Packit |
bc1512 |
file.puts "<functions>"
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
elements.each { |element|
|
|
Packit |
bc1512 |
if element.is_a? Function and !element.name.empty?
|
|
Packit |
bc1512 |
file.puts "<function name='#{element.name}' link='api.html\##{element.name.gsub(' ','_')}'/>"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
if element.is_a? Section and !element.name.empty? and element.name=~ /^Gegl/
|
|
Packit |
bc1512 |
file.puts "<function name='#{element.name}' link='api.html\##{element.name.gsub(' ','_')}'/>"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
IO.foreach("operations.html"){ |line|
|
|
Packit |
bc1512 |
if line =~ /^.*<\/a><\/li>/
|
|
Packit |
bc1512 |
opname=line.gsub(/.*op_/,'').gsub(/'.*/,'').strip
|
|
Packit |
bc1512 |
file.puts "<function name='#{opname}' link='operations.html#op_#{opname}'/>"
|
|
Packit |
bc1512 |
end
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
file.puts "</functions>"
|
|
Packit |
bc1512 |
file.puts "</book>"
|
|
Packit |
bc1512 |
}
|