<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[168713] releases/WebKitGTK/webkit-2.4</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/168713">168713</a></dd>
<dt>Author</dt> <dd>gns@gnome.org</dd>
<dt>Date</dt> <dd>2014-05-13 12:30:17 -0700 (Tue, 13 May 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Merge 165114 - [GTK][CMake] Generate documentation for the DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=126211
Reviewed by Carlos Garcia Campos.
Source/WebCore:
* PlatformGTK.cmake: Add some files to the GObjectDOMBindings build, so that the
doc generation succeeds. Have the GObjectDOMBindings_INSTALLED_HEADERS variable contain
all installed headers and use another variable for GIR generation. Create the configuration
file for the gtkdoc generation.
Source/WebKit:
* PlatformGTK.cmake: The list of headers for GIR generation has a better name
now.
Source/WebKit2:
* PlatformGTK.cmake: The list of headers for GIR generation has a better name now.
Tools:
* gtk/GNUmakefile.am: No longer generation sections and SGML files in the makefile.
* gtk/generate-gtkdoc: Call the code from webkitdom.py to generate sections and SGML files.
* gtk/generate-webkitdom-doc-files: Removed.
* gtk/webkitdom.py: Moved WebKit GObject DOM bindings doc generation code here, so
that it can be called by generate-gtkdoc.
Conflicts:
        Source/WebCore/ChangeLog
        Source/WebKit/ChangeLog
        Source/WebKit2/ChangeLog
        Tools/ChangeLog</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit24SourceWebCorePlatformGTKcmake">releases/WebKitGTK/webkit-2.4/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#releasesWebKitGTKwebkit24SourceWebKitPlatformGTKcmake">releases/WebKitGTK/webkit-2.4/Source/WebKit/PlatformGTK.cmake</a></li>
<li><a href="#releasesWebKitGTKwebkit24SourceWebKit2PlatformGTKcmake">releases/WebKitGTK/webkit-2.4/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#releasesWebKitGTKwebkit24ToolsgtkGNUmakefileam">releases/WebKitGTK/webkit-2.4/Tools/gtk/GNUmakefile.am</a></li>
<li><a href="#releasesWebKitGTKwebkit24Toolsgtkgenerategtkdoc">releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-gtkdoc</a></li>
<li><a href="#releasesWebKitGTKwebkit24Toolsgtkwebkitdompy">releases/WebKitGTK/webkit-2.4/Tools/gtk/webkitdom.py</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit24Toolsgtkgeneratewebkitdomdocfiles">releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-webkitdom-doc-files</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit24SourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebCore/PlatformGTK.cmake (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebCore/PlatformGTK.cmake        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Source/WebCore/PlatformGTK.cmake        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -482,6 +482,7 @@
</span><span class="cx"> bindings/gobject/DOMObjectCache.cpp
</span><span class="cx"> bindings/gobject/GObjectEventListener.cpp
</span><span class="cx"> bindings/gobject/WebKitDOMCustom.cpp
</span><ins>+ bindings/gobject/WebKitDOMDeprecated.cpp
</ins><span class="cx"> bindings/gobject/WebKitDOMEventTarget.cpp
</span><span class="cx"> bindings/gobject/WebKitDOMHTMLPrivate.cpp
</span><span class="cx"> bindings/gobject/WebKitDOMObject.cpp
</span><span class="lines">@@ -668,6 +669,9 @@
</span><span class="cx"> ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdomdefines.h
</span><span class="cx"> ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/webkitdom.h
</span><span class="cx"> ${WEBCORE_DIR}/bindings/gobject/WebKitDOMCustom.h
</span><ins>+ ${WEBCORE_DIR}/bindings/gobject/WebKitDOMDeprecated.h
+ ${WEBCORE_DIR}/bindings/gobject/WebKitDOMEventTarget.h
+ ${WEBCORE_DIR}/bindings/gobject/WebKitDOMObject.h
</ins><span class="cx"> )
</span><span class="cx"> file(GLOB GObjectDOMBindingsSymbolsFiles
</span><span class="cx"> "${WEBCORE_DIR}/bindings/gobject/WebKitDOM*.symbols"
</span><span class="lines">@@ -680,9 +684,6 @@
</span><span class="cx"> list(APPEND GObjectDOMBindingsSymbolsFiles ${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/WebKitDOM${classname}.symbols)
</span><span class="cx"> endforeach ()
</span><span class="cx">
</span><del>- # Propagate this variable to the parent scope, so that it can be used in other parts of the build.
- set(GObjectDOMBindings_INSTALLED_HEADERS ${GObjectDOMBindings_INSTALLED_HEADERS} PARENT_SCOPE)
-
</del><span class="cx"> set(GOBJECT_DOM_BINDINGS_FEATURES_DEFINES "LANGUAGE_GOBJECT=1 ${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}")
</span><span class="cx"> string(REPLACE "ENABLE_INDEXED_DATABASE=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
</span><span class="cx"> string(REPLACE REGEX "ENABLE_SVG[A-Z_]+=1" "" GOBJECT_DOM_BINDINGS_FEATURES_DEFINES ${GOBJECT_DOM_BINDINGS_FEATURES_DEFINES})
</span><span class="lines">@@ -728,11 +729,33 @@
</span><span class="cx"> fake-installed-webkitdom-headers
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+ file(WRITE ${CMAKE_BINARY_DIR}/gtkdoc-webkitdom.cfg
+ "[webkitdomgtk]\n"
+ "pkgconfig_file=${WebKit2_PKGCONFIG_FILE}\n"
+ "namespace=webkit_dom\n"
+ "cflags=-I${CMAKE_SOURCE_DIR}/Source\n"
+ " -I${WEBCORE_DIR}/bindings\n"
+ " -I${WEBCORE_DIR}/bindings/gobject\n"
+ " -I${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}\n"
+ "doc_dir=${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}/docs\n"
+ "source_dirs=${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}\n"
+ " ${WEBCORE_DIR}/bindings/gobject\n"
+ "headers=${GObjectDOMBindings_INSTALLED_HEADERS}\n"
+ )
+
</ins><span class="cx"> install(FILES ${GObjectDOMBindings_INSTALLED_HEADERS}
</span><del>- bindings/gobject/WebKitDOMEventTarget.h
- bindings/gobject/WebKitDOMDeprecated.h
- bindings/gobject/WebKitDOMObject.h
</del><span class="cx"> DESTINATION "${WEBKITGTK_HEADER_INSTALL_DIR}/webkitdom"
</span><span class="cx"> )
</span><ins>+
+ # Some installed headers are not on the list of headers used for gir generation.
+ set(GObjectDOMBindings_GIR_HEADERS ${GObjectDOMBindings_INSTALLED_HEADERS})
+ list(REMOVE_ITEM GObjectDOMBindings_GIR_HEADERS
+ bindings/gobject/WebKitDOMEventTarget.h
+ bindings/gobject/WebKitDOMDeprecated.h
+ bindings/gobject/WebKitDOMObject.h)
+
+ # Propagate this variable to the parent scope, so that it can be used in other parts of the build.
+ set(GObjectDOMBindings_GIR_HEADERS ${GObjectDOMBindings_GIR_HEADERS} PARENT_SCOPE)
+
</ins><span class="cx"> endif ()
</span><span class="cx">
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24SourceWebKitPlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebKit/PlatformGTK.cmake (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebKit/PlatformGTK.cmake        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Source/WebKit/PlatformGTK.cmake        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx"> -I${DERIVED_SOURCES_DIR}
</span><span class="cx"> -I${DERIVED_SOURCES_WEBKITGTK_DIR}
</span><span class="cx"> -I${WEBCORE_DIR}/platform/gtk
</span><del>- ${GObjectDOMBindings_INSTALLED_HEADERS}
</del><ins>+ ${GObjectDOMBindings_GIR_HEADERS}
</ins><span class="cx"> ${WebKitGTK_INSTALLED_HEADERS}
</span><span class="cx"> ${WEBKIT_DIR}/gtk/webkit/*.cpp
</span><span class="cx"> )
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24SourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebKit2/PlatformGTK.cmake (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebKit2/PlatformGTK.cmake        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Source/WebKit2/PlatformGTK.cmake        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -750,7 +750,7 @@
</span><span class="cx"> -I${FORWARDING_HEADERS_WEBKIT2GTK_DIR}
</span><span class="cx"> -I${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}
</span><span class="cx"> -I${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk
</span><del>- ${GObjectDOMBindings_INSTALLED_HEADERS}
</del><ins>+ ${GObjectDOMBindings_GIR_HEADERS}
</ins><span class="cx"> ${WebKit2WebExtension_INSTALLED_HEADERS}
</span><span class="cx"> ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/*.cpp
</span><span class="cx"> )
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24ToolsgtkGNUmakefileam"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Tools/gtk/GNUmakefile.am (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Tools/gtk/GNUmakefile.am        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Tools/gtk/GNUmakefile.am        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -30,22 +30,8 @@
</span><span class="cx">         gtkdoc-webkit2gtk.cfg
</span><span class="cx"> endif
</span><span class="cx">
</span><del>-$(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-docs.sgml: $(gdom_symbol_files) $(srcdir)/Tools/gtk/generate-webkitdom-doc-files
-        $(AM_V_GEN)mkdir -p $(top_builddir)/DerivedSources/webkitdom/docs \
-        && echo $(gdom_symbol_files) | $(PYTHON) $(srcdir)/Tools/gtk/generate-webkitdom-doc-files docs > $@
-
-$(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-sections.txt: $(gdom_symbol_files) $(srcdir)/Tools/gtk/generate-webkitdom-doc-files
-        $(AM_V_GEN)mkdir -p $(top_builddir)/DerivedSources/webkitdom/docs \
-        && echo $(gdom_symbol_files) | $(PYTHON) $(srcdir)/Tools/gtk/generate-webkitdom-doc-files sections > $@
-
-BUILT_SOURCES += \
-        $(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-docs.sgml \
-        $(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-sections.txt
-
</del><span class="cx"> docs_build_dependencies += \
</span><span class="cx">         libGObjectDOMBindings.la \
</span><del>-        $(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-docs.sgml \
-        $(top_builddir)/DerivedSources/webkitdom/docs/webkitdomgtk-sections.txt \
</del><span class="cx">         gtkdoc-webkitdom.cfg
</span><span class="cx">
</span><span class="cx"> docs-build.stamp: $(docs_build_dependencies)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24Toolsgtkgenerategtkdoc"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-gtkdoc (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-gtkdoc        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-gtkdoc        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> import logging
</span><span class="cx"> import os.path
</span><span class="cx"> import sys
</span><ins>+import webkitdom
</ins><span class="cx">
</span><span class="cx"> def configure_logging(verbose):
</span><span class="cx"> level = logging.DEBUG if verbose else logging.INFO
</span><span class="lines">@@ -194,9 +195,10 @@
</span><span class="cx">
</span><span class="cx"> prepare_environment_for_gtkdoc_generation()
</span><span class="cx">
</span><ins>+ webkitdom.write_doc_files()
+ generate_documentation_for_config(common.build_path('gtkdoc-webkitdom.cfg'))
+
</ins><span class="cx"> saw_webkit1_warnings = generate_documentation_for_config(common.build_path('gtkdoc-webkitgtk.cfg'))
</span><span class="cx"> saw_webkit2_warnings = generate_documentation_for_config(common.build_path('gtkdoc-webkit2gtk.cfg'))
</span><del>- if not common.is_cmake_build():
- generate_documentation_for_config(common.build_path('gtkdoc-webkitdom.cfg'))
</del><span class="cx">
</span><span class="cx"> sys.exit(saw_webkit1_warnings or saw_webkit2_warnings)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24Toolsgtkgeneratewebkitdomdocfiles"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-webkitdom-doc-files (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-webkitdom-doc-files        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Tools/gtk/generate-webkitdom-doc-files        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -1,216 +0,0 @@
</span><del>-#!/usr/bin/env python
-# Copyright (C) 2013 Igalia S.L.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 USA
-
-import os
-import re
-import sys
-
-class WebKitDOMDocGenerator:
-
- DELETED_CLASSES = ["WebKitDOMBarInfo", "WebKitDOMHTMLPropertiesCollection", "WebKitDOMMemoryInfo", "WebKitDOMMicroDataItemValue", "WebKitDOMPropertyNodeList" ]
-
- def write_header(self):
- pass
-
- def write_section(self, symbol_file):
- raise NotImplementedError
-
- def write_deleted_classes(self):
- raise NotImplementedError
-
- def write_footer(self):
- pass
-
-class WebKitDOMDocGeneratorDocs(WebKitDOMDocGenerator):
-
- def write_header(self):
- sys.stdout.write('''<?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-<!ENTITY version SYSTEM "version.xml">
-]>
-<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
- <bookinfo>
- <title>WebKitDOMGTK+ Reference Manual</title>
- <releaseinfo>for WebKitDOMGTK+ &version;</releaseinfo>
- </bookinfo>
-
- <chapter>
- <title>Class Overview</title>
-''')
-
- def write_section(self, symbol_file):
- basename = os.path.basename(symbol_file)
- sys.stdout.write(' <xi:include href="xml/%s"/>\n' % basename.replace(".symbols", ".xml"))
-
- def write_deleted_classes(self):
- for class_name in self.DELETED_CLASSES:
- sys.stdout.write(' <xi:include href="xml/%s.xml"/>\n' % class_name)
-
- def write_footer(self):
- sys.stdout.write(''' </chapter>
-
- <index id="index-all">
- <title>Index</title>
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-deprecated" role="deprecated">
- <title>Index of deprecated symbols</title>
- <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
- </index>
-
- <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
-</book>
-''')
-
-class WebKitDOMDocGeneratorSections(WebKitDOMDocGenerator):
-
- def __init__(self, deprecated_symbol_file):
- self._first_decamelize_re = re.compile('(.)([A-Z][a-z]+)')
- self._second_decamelize_re = re.compile('([a-z0-9])([A-Z])')
- self._dom_class_re = re.compile('(^WebKitDOM)(.+)$')
- self._function_re = re.compile('^.+ (.+)\((.+)\)$')
-
- self._deprecated_symbols = self._deprecated_symbols(deprecated_symbol_file)
-
- def _dom_class(self, class_name):
- return self._dom_class_re.sub(r'\2', class_name)
-
- def _dom_class_decamelize(self, class_name):
- s1 = self._first_decamelize_re.sub(r'\1_\2', self._dom_class(class_name))
- retval = self._second_decamelize_re.sub(r'\1_\2', s1)
-
- # Fix some exceptions.
- retval = retval.replace('Web_Kit', 'WebKit')
- retval = retval.replace('X_Path', 'XPath')
- retval = retval.replace('HTMLI_Frame', 'HTML_IFrame')
-
- return retval
-
- def _deleted_class(self, function):
- for deleted_class in self.DELETED_CLASSES:
- decamelized = 'webkit_dom_%s' % self._dom_class_decamelize(deleted_class).lower()
- if function.startswith(decamelized):
- return deleted_class
- return None
-
- def _deprecated_symbols(self, symbol_file):
- retval = {}
- f = open(symbol_file, 'r')
- for line in f.readlines():
- match = self._function_re.match(line)
- if not match:
- continue
-
- function = match.group(1)
- args = match.group(2).split(', ')
- class_name = args[0].strip('*')
- if class_name == 'void':
- class_name = self._deleted_class(function)
-
- retval.setdefault(class_name, []).append(function)
-
- return retval
-
- def _symbol_list(self, symbol_file):
- retval = []
- f = open(symbol_file, 'r')
- for line in f.readlines():
- match = self._function_re.match(line)
- if not match or match.group(1).endswith('get_type'):
- continue
- retval.append(match.group(1))
-
- return retval
-
- def write_section(self, symbol_file):
- class_name = os.path.basename(symbol_file).replace(".symbols", "")
- is_custom = class_name == 'WebKitDOMCustom'
- is_interface = class_name == 'WebKitDOMEventTarget'
- is_object = class_name == 'WebKitDOMObject'
- sys.stdout.write('<SECTION>\n')
- sys.stdout.write('<FILE>%s</FILE>\n<TITLE>%s</TITLE>\n' % (class_name, class_name))
- if not is_custom:
- sys.stdout.write('%s\n' % class_name)
- sys.stdout.write('\n')
- sys.stdout.write('\n'.join(self._symbol_list(symbol_file)) + '\n')
- try:
- deprecated_functions = self._deprecated_symbols[class_name]
- sys.stdout.write('\n'.join(deprecated_functions) + '\n')
- except KeyError:
- pass
- if not is_custom:
- sys.stdout.write('\n<SUBSECTION Standard>\n')
- sys.stdout.write('%sClass\n' % class_name)
- dom_class = self._dom_class_decamelize(class_name).upper()
- sys.stdout.write('WEBKIT_TYPE_DOM_%s\n' % dom_class)
- sys.stdout.write('WEBKIT_DOM_%s\n' % dom_class)
- if is_object:
- sys.stdout.write('WEBKIT_IS_DOM_%s\n' % dom_class)
- else:
- sys.stdout.write('WEBKIT_DOM_IS_%s\n' % dom_class)
- sys.stdout.write('WEBKIT_DOM_%s_CLASS\n' % dom_class)
- if is_interface:
- sys.stdout.write('WEBKIT_DOM_%s_GET_IFACE\n' % dom_class)
- else:
- if is_object:
- sys.stdout.write('WEBKIT_IS_DOM_%s_CLASS\n' % dom_class)
- else:
- sys.stdout.write('WEBKIT_DOM_IS_%s_CLASS\n' % dom_class)
- sys.stdout.write('WEBKIT_DOM_%s_GET_CLASS\n' % dom_class)
- sys.stdout.write('\n<SUBSECTION Private>\n')
- if is_object:
- sys.stdout.write('%sPrivate\n' % class_name)
- sys.stdout.write('webkit_dom_%s_get_type\n' % dom_class.lower())
- sys.stdout.write('</SECTION>\n\n')
-
- def write_deleted_classes(self):
- for class_name in self.DELETED_CLASSES:
- sys.stdout.write('<SECTION>\n')
- sys.stdout.write('<FILE>%s</FILE>\n<TITLE>%s</TITLE>\n' % (class_name, class_name))
- sys.stdout.write('\n'.join([name for name in self._deprecated_symbols[class_name] if not name.endswith('get_type')]) + '\n')
- sys.stdout.write('\n<SUBSECTION Private>\n')
- sys.stdout.write('webkit_dom_%s_get_type\n' % self._dom_class_decamelize(class_name).lower())
- sys.stdout.write('</SECTION>\n\n')
-
- def write_footer(self):
- sys.stdout.write('<SECTION>\n')
- sys.stdout.write('<FILE>webkitdomdefines</FILE>\n<TITLE>WebKitDOMDefines</TITLE>\n')
- sys.stdout.write('<SUBSECTION Private>\n')
- sys.stdout.write('WEBKIT_API\nWEBKIT_DEPRECATED\nWEBKIT_DEPRECATED_FOR\n')
- sys.stdout.write('</SECTION>\n\n')
-
-
-symbol_files = sys.stdin.read().strip('\n').split(' ')
-if 'docs' in sys.argv[1:]:
- generator = WebKitDOMDocGeneratorDocs()
-elif 'sections' in sys.argv[1:]:
- deprecated_symbol_file = None
- for symbol_file in symbol_files:
- if 'WebKitDOMDeprecated' in symbol_file:
- deprecated_symbol_file = symbol_file
- break
- generator = WebKitDOMDocGeneratorSections(deprecated_symbol_file)
-
-generator.write_header()
-for symbol_file in symbol_files:
- if 'WebKitDOMDeprecated' in symbol_file:
- continue
- generator.write_section(symbol_file)
-generator.write_deleted_classes()
-generator.write_footer()
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit24Toolsgtkwebkitdompy"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Tools/gtk/webkitdom.py (168712 => 168713)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Tools/gtk/webkitdom.py        2014-05-13 19:29:57 UTC (rev 168712)
+++ releases/WebKitGTK/webkit-2.4/Tools/gtk/webkitdom.py        2014-05-13 19:30:17 UTC (rev 168713)
</span><span class="lines">@@ -18,11 +18,235 @@
</span><span class="cx">
</span><span class="cx"> import common
</span><span class="cx"> import os
</span><ins>+import re
</ins><span class="cx"> import sys
</span><span class="cx">
</span><span class="cx"> from ConfigParser import SafeConfigParser
</span><span class="cx">
</span><span class="cx">
</span><ins>+class WebKitDOMDocGenerator(object):
+
+ DELETED_CLASSES = [
+ "WebKitDOMBarInfo",
+ "WebKitDOMHTMLPropertiesCollection",
+ "WebKitDOMMemoryInfo",
+ "WebKitDOMMicroDataItemValue",
+ "WebKitDOMPropertyNodeList"]
+
+ def __init__(self, symbol_files, file_handle):
+ self._symbol_files = symbol_files
+ self._file_handle = file_handle
+
+ def write_header(self):
+ pass
+
+ def write_section(self, symbol_file):
+ raise NotImplementedError
+
+ def write_deleted_classes(self):
+ raise NotImplementedError
+
+ def write_footer(self):
+ pass
+
+ def write(self, string):
+ self._file_handle.write(string)
+
+ @staticmethod
+ def is_deprecated_symbol_file(file_path):
+ return 'WebKitDOMDeprecated' in file_path
+
+ def generate(self):
+ self.write_header()
+ for symbol_file in self._symbol_files:
+ if WebKitDOMDocGenerator.is_deprecated_symbol_file(symbol_file):
+ continue
+ self.write_section(symbol_file)
+ self.write_deleted_classes()
+ self.write_footer()
+
+
+class WebKitDOMDocGeneratorSGML(WebKitDOMDocGenerator):
+ def write_header(self):
+ self.write('''<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>WebKitDOMGTK+ Reference Manual</title>
+ <releaseinfo>for WebKitDOMGTK+ &version;</releaseinfo>
+ </bookinfo>
+
+ <chapter>
+ <title>Class Overview</title>
+''')
+
+ def write_section(self, symbol_file):
+ basename = os.path.basename(symbol_file)
+ self.write(' <xi:include href="xml/%s"/>\n' % basename.replace(".symbols", ".xml"))
+
+ def write_deleted_classes(self):
+ for class_name in self.DELETED_CLASSES:
+ self.write(' <xi:include href="xml/%s.xml"/>\n' % class_name)
+
+ def write_footer(self):
+ self.write(''' </chapter>
+
+ <index id="index-all">
+ <title>Index</title>
+ <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
+ </index>
+ <index id="api-index-deprecated" role="deprecated">
+ <title>Index of deprecated symbols</title>
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
+ </index>
+
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+</book>
+''')
+
+
+class WebKitDOMDocGeneratorSections(WebKitDOMDocGenerator):
+ def __init__(self, symbol_files, file_handle):
+ super(WebKitDOMDocGeneratorSections, self).__init__(symbol_files, file_handle)
+
+ self._first_decamelize_re = re.compile('(.)([A-Z][a-z]+)')
+ self._second_decamelize_re = re.compile('([a-z0-9])([A-Z])')
+ self._dom_class_re = re.compile('(^WebKitDOM)(.+)$')
+ self._function_re = re.compile('^.+ (.+)\((.+)\)$')
+
+ self.deprecated_symbosl = {}
+ for symbol_file in symbol_files:
+ if WebKitDOMDocGenerator.is_deprecated_symbol_file(symbol_file):
+ self._deprecated_symbols = self._find_deprecated_symbols(symbol_file)
+ break
+
+ def _dom_class(self, class_name):
+ return self._dom_class_re.sub(r'\2', class_name)
+
+ def _dom_class_decamelize(self, class_name):
+ s1 = self._first_decamelize_re.sub(r'\1_\2', self._dom_class(class_name))
+ retval = self._second_decamelize_re.sub(r'\1_\2', s1)
+
+ # Fix some exceptions.
+ retval = retval.replace('Web_Kit', 'WebKit')
+ retval = retval.replace('X_Path', 'XPath')
+ retval = retval.replace('HTMLI_Frame', 'HTML_IFrame')
+
+ return retval
+
+ def _deleted_class(self, function):
+ for deleted_class in self.DELETED_CLASSES:
+ decamelized = 'webkit_dom_%s' % self._dom_class_decamelize(deleted_class).lower()
+ if function.startswith(decamelized):
+ return deleted_class
+ return None
+
+ def _find_deprecated_symbols(self, symbol_file):
+ retval = {}
+ f = open(symbol_file, 'r')
+ for line in f.readlines():
+ match = self._function_re.match(line)
+ if not match:
+ continue
+
+ function = match.group(1)
+ args = match.group(2).split(', ')
+ class_name = args[0].strip('*')
+ if class_name == 'void':
+ class_name = self._deleted_class(function)
+
+ retval.setdefault(class_name, []).append(function)
+
+ return retval
+
+ def _symbol_list(self, symbol_file):
+ retval = []
+ f = open(symbol_file, 'r')
+ for line in f.readlines():
+ match = self._function_re.match(line)
+ if not match or match.group(1).endswith('get_type'):
+ continue
+ retval.append(match.group(1))
+
+ return retval
+
+ def write_section(self, symbol_file):
+ class_name = os.path.basename(symbol_file).replace(".symbols", "")
+ is_custom = class_name == 'WebKitDOMCustom'
+ is_interface = class_name == 'WebKitDOMEventTarget'
+ is_object = class_name == 'WebKitDOMObject'
+ self.write('<SECTION>\n')
+ self.write('<FILE>%s</FILE>\n<TITLE>%s</TITLE>\n' % (class_name, class_name))
+ if not is_custom:
+ self.write('%s\n' % class_name)
+ self.write('\n')
+ self.write('\n'.join(self._symbol_list(symbol_file)) + '\n')
+ try:
+ deprecated_functions = self._deprecated_symbols[class_name]
+ self.write('\n'.join(deprecated_functions) + '\n')
+ except KeyError:
+ pass
+ if not is_custom:
+ self.write('\n<SUBSECTION Standard>\n')
+ self.write('%sClass\n' % class_name)
+ dom_class = self._dom_class_decamelize(class_name).upper()
+ self.write('WEBKIT_TYPE_DOM_%s\n' % dom_class)
+ self.write('WEBKIT_DOM_%s\n' % dom_class)
+ if is_object:
+ self.write('WEBKIT_IS_DOM_%s\n' % dom_class)
+ else:
+ self.write('WEBKIT_DOM_IS_%s\n' % dom_class)
+ self.write('WEBKIT_DOM_%s_CLASS\n' % dom_class)
+ if is_interface:
+ self.write('WEBKIT_DOM_%s_GET_IFACE\n' % dom_class)
+ else:
+ if is_object:
+ self.write('WEBKIT_IS_DOM_%s_CLASS\n' % dom_class)
+ else:
+ self.write('WEBKIT_DOM_IS_%s_CLASS\n' % dom_class)
+ self.write('WEBKIT_DOM_%s_GET_CLASS\n' % dom_class)
+ self.write('\n<SUBSECTION Private>\n')
+ if is_object:
+ self.write('%sPrivate\n' % class_name)
+ self.write('webkit_dom_%s_get_type\n' % dom_class.lower())
+ self.write('</SECTION>\n\n')
+
+ def write_deleted_classes(self):
+ for class_name in self.DELETED_CLASSES:
+ self.write('<SECTION>\n')
+ self.write('<FILE>%s</FILE>\n<TITLE>%s</TITLE>\n' % (class_name, class_name))
+ self.write('\n'.join([name for name in self._deprecated_symbols[class_name] if not name.endswith('get_type')]) + '\n')
+ self.write('\n<SUBSECTION Private>\n')
+ self.write('webkit_dom_%s_get_type\n' % self._dom_class_decamelize(class_name).lower())
+ self.write('</SECTION>\n\n')
+
+ def write_footer(self):
+ self.write('<SECTION>\n')
+ self.write('<FILE>webkitdomdefines</FILE>\n<TITLE>WebKitDOMDefines</TITLE>\n')
+ self.write('<SUBSECTION Private>\n')
+ self.write('WEBKIT_API\nWEBKIT_DEPRECATED\nWEBKIT_DEPRECATED_FOR\n')
+ self.write('</SECTION>\n\n')
+
+
+def write_doc_files():
+ doc_dir = common.build_path('DerivedSources', 'webkitdom', 'docs')
+
+ try:
+ os.mkdir(doc_dir)
+ except:
+ pass # Commonly happens if the directory already exists.
+
+ with open(os.path.join(doc_dir, 'webkitdomgtk-sections.txt'), 'w') as sections_file:
+ generator = WebKitDOMDocGeneratorSections(get_all_webkitdom_symbol_files(), sections_file)
+ generator.generate()
+ with open(os.path.join(doc_dir, 'webkitdomgtk-docs.sgml'), 'w') as sgml_file:
+ generator = WebKitDOMDocGeneratorSGML(get_all_webkitdom_symbol_files(), sgml_file)
+ generator.generate()
+
+
</ins><span class="cx"> def header_name_list_from_gtkdoc_config_file():
</span><span class="cx"> config_file = common.build_path('gtkdoc-webkitdom.cfg')
</span><span class="cx"> if not os.path.isfile(config_file):
</span></span></pre>
</div>
</div>
</body>
</html>