You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
(41) |
Apr
(9) |
May
|
Jun
|
Jul
(39) |
Aug
(38) |
Sep
(135) |
Oct
(220) |
Nov
(75) |
Dec
(74) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(44) |
Feb
(160) |
Mar
(49) |
Apr
(69) |
May
(40) |
Jun
(52) |
Jul
(47) |
Aug
(51) |
Sep
(19) |
Oct
(22) |
Nov
(36) |
Dec
(76) |
| 2007 |
Jan
(154) |
Feb
(165) |
Mar
(186) |
Apr
(143) |
May
(175) |
Jun
(133) |
Jul
(203) |
Aug
(177) |
Sep
(136) |
Oct
|
Nov
|
Dec
|
|
From: <caw...@us...> - 2007-03-30 15:04:08
|
Revision: 2247
http://svn.sourceforge.net/rubyeclipse/?rev=2247&view=rev
Author: cawilliams
Date: 2007-03-30 08:04:05 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
Modified Paths:
--------------
trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml
Added Paths:
-----------
trunk/org.rubypeople.rdt.doc.user/modifications/eclipse/modified_eclipse.xsl
Removed Paths:
-------------
trunk/org.rubypeople.rdt.doc.user/docbook/modified_eclipse.xsl
Modified: trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml 2007-03-30 15:03:24 UTC (rev 2246)
+++ trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml 2007-03-30 15:04:05 UTC (rev 2247)
@@ -16,7 +16,7 @@
<move file="docbook/docbook-xsl-${docbook.xsl.version}" tofile="${docbook.xsl.dir}" />
<mkdir dir="${docbook.dtd.dir}"/>
<unzip src="docbook/docbook-xml-4.2.zip" dest="${docbook.dtd.dir}"/>
- <copy file="docbook/modified_eclipse.xsl" tofile="${docbook.xsl.dir}/eclipse/eclipse.xsl"/>
+ <copy file="modifications/eclipse/modified_eclipse.xsl" tofile="${docbook.xsl.dir}/eclipse/eclipse.xsl"/>
<copy file="modifications/html/param.ent" tofile="${docbook.xsl.dir}/html/param.ent"/>
<copy file="modifications/html/param.xml" tofile="${docbook.xsl.dir}/html/param.xml"/>
<copy file="modifications/html/param.xsl" tofile="${docbook.xsl.dir}/html/param.xsl"/>
Deleted: trunk/org.rubypeople.rdt.doc.user/docbook/modified_eclipse.xsl
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/docbook/modified_eclipse.xsl 2007-03-30 15:03:24 UTC (rev 2246)
+++ trunk/org.rubypeople.rdt.doc.user/docbook/modified_eclipse.xsl 2007-03-30 15:04:05 UTC (rev 2247)
@@ -1,190 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="../html/chunk.xsl"/>
-
-<!-- ********************************************************************
- $Id: eclipse.xsl,v 1.3 2005/04/10 18:09:50 bobstayton Exp $
- ********************************************************************
-
- This file is part of the XSL DocBook Stylesheet distribution.
- See ../README or http://nwalsh.com/docbook/xsl/ for copyright
- and other information.
-
- ******************************************************************** -->
-
-<xsl:template match="/">
- <xsl:choose>
- <xsl:when test="$rootid != ''">
- <xsl:choose>
- <xsl:when test="count(key('id',$rootid)) = 0">
- <xsl:message terminate="yes">
- <xsl:text>ID '</xsl:text>
- <xsl:value-of select="$rootid"/>
- <xsl:text>' not found in document.</xsl:text>
- </xsl:message>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="$collect.xref.targets = 'yes' or
- $collect.xref.targets = 'only'">
- <xsl:apply-templates select="key('id', $rootid)"
- mode="collect.targets"/>
- </xsl:if>
- <xsl:if test="$collect.xref.targets != 'only'">
- <xsl:message>Formatting from <xsl:value-of
- select="$rootid"/></xsl:message>
- <xsl:apply-templates select="key('id',$rootid)"
- mode="process.root"/>
- <xsl:call-template name="etoc"/>
- <xsl:call-template name="plugin.xml"/>
- <xsl:call-template name="manifest.mf"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="$collect.xref.targets = 'yes' or
- $collect.xref.targets = 'only'">
- <xsl:apply-templates select="/" mode="collect.targets"/>
- </xsl:if>
- <xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="/" mode="process.root"/>
- <xsl:call-template name="etoc"/>
- <xsl:call-template name="plugin.xml"/>
- <xsl:call-template name="manifest.mf"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
-
-
-</xsl:template>
-
-<xsl:template name="etoc">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename">
- <xsl:if test="$manifest.in.base.dir != 0">
- <xsl:value-of select="$base.dir"/>
- </xsl:if>
- <xsl:value-of select="'toc.xml'"/>
- </xsl:with-param>
- <xsl:with-param name="method" select="'xml'"/>
- <xsl:with-param name="encoding" select="'utf-8'"/>
- <xsl:with-param name="indent" select="'yes'"/>
- <xsl:with-param name="content">
- <xsl:choose>
-
- <xsl:when test="$rootid != ''">
- <xsl:variable name="title">
- <xsl:if test="$eclipse.autolabel=1">
- <xsl:variable name="label.markup">
- <xsl:apply-templates select="key('id',$rootid)" mode="label.markup"/>
- </xsl:variable>
- <xsl:if test="normalize-space($label.markup)">
- <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/>
- </xsl:variable>
- <xsl:variable name="href">
- <xsl:call-template name="href.target.with.base.dir">
- <xsl:with-param name="object" select="key('id',$rootid)"/>
- </xsl:call-template>
- </xsl:variable>
-
- <toc label="{$title}" topic="{$href}">
- <xsl:apply-templates select="key('id',$rootid)/*" mode="etoc"/>
- </toc>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:variable name="title">
- <xsl:if test="$eclipse.autolabel=1">
- <xsl:variable name="label.markup">
- <xsl:apply-templates select="/*" mode="label.markup"/>
- </xsl:variable>
- <xsl:if test="normalize-space($label.markup)">
- <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates select="/*" mode="title.markup"/>
- </xsl:variable>
- <xsl:variable name="href">
- <xsl:call-template name="href.target.with.base.dir">
- <xsl:with-param name="object" select="/"/>
- </xsl:call-template>
- </xsl:variable>
-
- <toc label="{$title}" topic="{$href}">
- <xsl:apply-templates select="/*/*" mode="etoc"/>
- </toc>
- </xsl:otherwise>
-
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc">
- <xsl:variable name="title">
- <xsl:if test="$eclipse.autolabel=1">
- <xsl:variable name="label.markup">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:if test="normalize-space($label.markup)">
- <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates select="." mode="title.markup"/>
- </xsl:variable>
-
- <xsl:variable name="href">
- <xsl:call-template name="href.target.with.base.dir"/>
- </xsl:variable>
-
- <topic label="{$title}" href="{$href}">
- <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc"/>
- </topic>
-
-</xsl:template>
-
-<xsl:template match="text()" mode="etoc"/>
-
-<xsl:template name="plugin.xml">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename">
- <xsl:if test="$manifest.in.base.dir != 0">
- <xsl:value-of select="$base.dir"/>
- </xsl:if>
- <xsl:value-of select="'plugin.xml'"/>
- </xsl:with-param>
- <xsl:with-param name="method" select="'xml'"/>
- <xsl:with-param name="encoding" select="'utf-8'"/>
- <xsl:with-param name="indent" select="'yes'"/>
- <xsl:with-param name="content"><plugin>
- <extension point="org.eclipse.help.toc">
- <toc file="toc.xml" primary="true"/>
- </extension>
-</plugin>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="manifest.mf">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename">
- <xsl:value-of select="'META-INF/MANIFEST.MF'"/>
- </xsl:with-param>
- <xsl:with-param name="method" select="'text'"/>
- <xsl:with-param name="content">Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: <xsl:value-of select="$eclipse.plugin.name"/>
-Bundle-SymbolicName: <xsl:value-of select="$eclipse.plugin.id"/>;singleton:=true
-Bundle-Version: <xsl:value-of select="$eclipse.plugin.version"/>
-Bundle-Vendor: <xsl:value-of select="$eclipse.plugin.provider"/>
-Bundle-Localization: plugin
-Eclipse-LazyStart: true
-</xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-</xsl:stylesheet>
Copied: trunk/org.rubypeople.rdt.doc.user/modifications/eclipse/modified_eclipse.xsl (from rev 1781, trunk/org.rubypeople.rdt.doc.user/docbook/modified_eclipse.xsl)
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/modifications/eclipse/modified_eclipse.xsl (rev 0)
+++ trunk/org.rubypeople.rdt.doc.user/modifications/eclipse/modified_eclipse.xsl 2007-03-30 15:04:05 UTC (rev 2247)
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="../html/chunk.xsl"/>
+
+<!-- ********************************************************************
+ $Id: eclipse.xsl,v 1.3 2005/04/10 18:09:50 bobstayton Exp $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="/">
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:message>Formatting from <xsl:value-of
+ select="$rootid"/></xsl:message>
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="manifest.mf"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:call-template name="etoc"/>
+ <xsl:call-template name="plugin.xml"/>
+ <xsl:call-template name="manifest.mf"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+</xsl:template>
+
+<xsl:template name="etoc">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'toc.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+
+ <xsl:when test="$rootid != ''">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="key('id',$rootid)" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{$title}" topic="{$href}">
+ <xsl:apply-templates select="key('id',$rootid)/*" mode="etoc"/>
+ </toc>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="/*" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="/*" mode="title.markup"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir">
+ <xsl:with-param name="object" select="/"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <toc label="{$title}" topic="{$href}">
+ <xsl:apply-templates select="/*/*" mode="etoc"/>
+ </toc>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc">
+ <xsl:variable name="title">
+ <xsl:if test="$eclipse.autolabel=1">
+ <xsl:variable name="label.markup">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($label.markup)">
+ <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target.with.base.dir"/>
+ </xsl:variable>
+
+ <topic label="{$title}" href="{$href}">
+ <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="etoc"/>
+ </topic>
+
+</xsl:template>
+
+<xsl:template match="text()" mode="etoc"/>
+
+<xsl:template name="plugin.xml">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="'plugin.xml'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="content"><plugin>
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true"/>
+ </extension>
+</plugin>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="manifest.mf">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="'META-INF/MANIFEST.MF'"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: <xsl:value-of select="$eclipse.plugin.name"/>
+Bundle-SymbolicName: <xsl:value-of select="$eclipse.plugin.id"/>;singleton:=true
+Bundle-Version: <xsl:value-of select="$eclipse.plugin.version"/>
+Bundle-Vendor: <xsl:value-of select="$eclipse.plugin.provider"/>
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+</xsl:stylesheet>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-30 15:03:25
|
Revision: 2246
http://svn.sourceforge.net/rubyeclipse/?rev=2246&view=rev
Author: cawilliams
Date: 2007-03-30 08:03:24 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
Added Paths:
-----------
trunk/org.rubypeople.rdt.doc.user/modifications/eclipse/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-30 15:02:49
|
Revision: 2245
http://svn.sourceforge.net/rubyeclipse/?rev=2245&view=rev
Author: cawilliams
Date: 2007-03-30 08:02:48 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
add custom modifications to docbook xsl files so we can insert the plugin version for manifest/plugin.xml
Modified Paths:
--------------
trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml
Added Paths:
-----------
trunk/org.rubypeople.rdt.doc.user/modifications/
trunk/org.rubypeople.rdt.doc.user/modifications/html/
trunk/org.rubypeople.rdt.doc.user/modifications/html/param.ent
trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xml
trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xsl
trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xweb
trunk/org.rubypeople.rdt.doc.user/modifications/params/
trunk/org.rubypeople.rdt.doc.user/modifications/params/eclipse.plugin.version.xml
trunk/org.rubypeople.rdt.doc.user/modifications/xhtml/
trunk/org.rubypeople.rdt.doc.user/modifications/xhtml/param.xsl
Modified: trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml 2007-03-30 14:43:36 UTC (rev 2244)
+++ trunk/org.rubypeople.rdt.doc.user/buildDocbook.xml 2007-03-30 15:02:48 UTC (rev 2245)
@@ -17,6 +17,12 @@
<mkdir dir="${docbook.dtd.dir}"/>
<unzip src="docbook/docbook-xml-4.2.zip" dest="${docbook.dtd.dir}"/>
<copy file="docbook/modified_eclipse.xsl" tofile="${docbook.xsl.dir}/eclipse/eclipse.xsl"/>
+ <copy file="modifications/html/param.ent" tofile="${docbook.xsl.dir}/html/param.ent"/>
+ <copy file="modifications/html/param.xml" tofile="${docbook.xsl.dir}/html/param.xml"/>
+ <copy file="modifications/html/param.xsl" tofile="${docbook.xsl.dir}/html/param.xsl"/>
+ <copy file="modifications/html/param.xweb" tofile="${docbook.xsl.dir}/html/param.xweb"/>
+ <copy file="modifications/params/eclipse.plugin.version.xml" tofile="${docbook.xsl.dir}/params/eclipse.plugin.version.xml"/>
+ <copy file="modifications/xhtml/param.xsl" tofile="${docbook.xsl.dir}/xhtml/param.xsl"/>
</target>
<target name="init" depends="docbook.unpack">
Added: trunk/org.rubypeople.rdt.doc.user/modifications/html/param.ent
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/modifications/html/param.ent (rev 0)
+++ trunk/org.rubypeople.rdt.doc.user/modifications/html/param.ent 2007-03-30 15:02:48 UTC (rev 2245)
@@ -0,0 +1,292 @@
+<!ENTITY admon.graphics SYSTEM "../params/admon.graphics.xml">
+<!ENTITY admon.graphics.extension SYSTEM "../params/admon.graphics.extension.xml">
+<!ENTITY admon.graphics.path SYSTEM "../params/admon.graphics.path.xml">
+<!ENTITY admon.textlabel SYSTEM "../params/admon.textlabel.xml">
+<!ENTITY admon.style SYSTEM "../params/admon.style.xml">
+<!ENTITY annotate.toc SYSTEM "../params/annotate.toc.xml">
+<!ENTITY appendix.autolabel SYSTEM "../params/appendix.autolabel.xml">
+<!ENTITY author.othername.in.middle SYSTEM "../params/author.othername.in.middle.xml">
+<!ENTITY autotoc.label.separator SYSTEM "../params/autotoc.label.separator.xml">
+<!ENTITY autotoc.label.in.hyperlink SYSTEM "../params/autotoc.label.in.hyperlink.xml">
+<!ENTITY base.dir SYSTEM "../params/base.dir.xml">
+<!ENTITY biblioentry.item.separator SYSTEM "../params/biblioentry.item.separator.xml">
+<!ENTITY bibliography.collection SYSTEM "../params/bibliography.collection.xml">
+<!ENTITY bridgehead.in.toc SYSTEM "../params/bridgehead.in.toc.xml">
+<!ENTITY callout.defaultcolumn SYSTEM "../params/callout.defaultcolumn.xml">
+<!ENTITY callout.graphics SYSTEM "../params/callout.graphics.xml">
+<!ENTITY callout.graphics.extension SYSTEM "../params/callout.graphics.extension.xml">
+<!ENTITY callout.graphics.number.limit SYSTEM "../params/callout.graphics.number.limit.xml">
+<!ENTITY callout.graphics.path SYSTEM "../params/callout.graphics.path.xml">
+<!ENTITY callout.list.table SYSTEM "../params/callout.list.table.xml">
+<!ENTITY callout.unicode SYSTEM "../params/callout.unicode.xml">
+<!ENTITY callout.unicode.number.limit SYSTEM "../params/callout.unicode.number.limit.xml">
+<!ENTITY callout.unicode.start.character SYSTEM "../params/callout.unicode.start.character.xml">
+<!ENTITY callouts.extension SYSTEM "../params/callouts.extension.xml">
+<!ENTITY chapter.autolabel SYSTEM "../params/chapter.autolabel.xml">
+<!ENTITY chunk.first.sections SYSTEM "../params/chunk.first.sections.xml">
+<!ENTITY chunk.quietly SYSTEM "../params/chunk.quietly.xml">
+<!ENTITY chunk.section.depth SYSTEM "../params/chunk.section.depth.xml">
+<!ENTITY chunk.separate.lots SYSTEM "../params/chunk.separate.lots.xml">
+<!ENTITY chunk.toc SYSTEM "../params/chunk.toc.xml">
+<!ENTITY chunker.output.cdata-section-elements SYSTEM "../params/chunker.output.cdata-section-elements.xml">
+<!ENTITY chunker.output.doctype-public SYSTEM "../params/chunker.output.doctype-public.xml">
+<!ENTITY chunker.output.doctype-system SYSTEM "../params/chunker.output.doctype-system.xml">
+<!ENTITY chunker.output.encoding SYSTEM "../params/chunker.output.encoding.xml">
+<!ENTITY chunker.output.indent SYSTEM "../params/chunker.output.indent.xml">
+<!ENTITY chunker.output.media-type SYSTEM "../params/chunker.output.media-type.xml">
+<!ENTITY chunker.output.method SYSTEM "../params/chunker.output.method.xml">
+<!ENTITY chunker.output.omit-xml-declaration SYSTEM "../params/chunker.output.omit-xml-declaration.xml">
+<!ENTITY chunker.output.standalone SYSTEM "../params/chunker.output.standalone.xml">
+<!ENTITY citerefentry.link SYSTEM "../params/citerefentry.link.xml">
+<!ENTITY collect.xref.targets SYSTEM "../params/collect.xref.targets.xml">
+<!ENTITY css.decoration SYSTEM "../params/css.decoration.xml">
+<!ENTITY current.docid SYSTEM "../params/current.docid.xml">
+<!ENTITY default.table.width SYSTEM "../params/default.table.width.xml">
+<!ENTITY default.table.frame SYSTEM "../params/default.table.frame.xml">
+<!ENTITY draft.mode SYSTEM "../params/draft.mode.xml">
+<!ENTITY draft.watermark.image SYSTEM "../params/draft.watermark.image.xml">
+<!ENTITY ebnf.table.bgcolor SYSTEM "../params/ebnf.table.bgcolor.xml">
+<!ENTITY ebnf.table.border SYSTEM "../params/ebnf.table.border.xml">
+<!ENTITY emphasis.propagates.style SYSTEM "../params/emphasis.propagates.style.xml">
+<!ENTITY firstterm.only.link SYSTEM "../params/firstterm.only.link.xml">
+<!ENTITY footer.rule SYSTEM "../params/footer.rule.xml">
+<!ENTITY formal.procedures SYSTEM "../params/formal.procedures.xml">
+<!ENTITY formal.title.placement SYSTEM "../params/formal.title.placement.xml">
+<!ENTITY funcsynopsis.decoration SYSTEM "../params/funcsynopsis.decoration.xml">
+<!ENTITY funcsynopsis.style SYSTEM "../params/funcsynopsis.style.xml">
+<!ENTITY function.parens SYSTEM "../params/function.parens.xml">
+<!ENTITY generate.id.attributes SYSTEM "../params/generate.id.attributes.xml">
+<!ENTITY generate.index SYSTEM "../params/generate.index.xml">
+<!ENTITY generate.legalnotice.link SYSTEM "../params/generate.legalnotice.link.xml">
+<!ENTITY generate.revhistory.link SYSTEM "../params/generate.revhistory.link.xml">
+<!ENTITY generate.manifest SYSTEM "../params/generate.manifest.xml">
+<!ENTITY generate.meta.abstract SYSTEM "../params/generate.meta.abstract.xml">
+<!ENTITY generate.section.toc.level SYSTEM "../params/generate.section.toc.level.xml">
+<!ENTITY generate.toc SYSTEM "../params/generate.toc.xml">
+<!ENTITY glossary.collection SYSTEM "../params/glossary.collection.xml">
+<!ENTITY glossterm.auto.link SYSTEM "../params/glossterm.auto.link.xml">
+<!ENTITY graphic.default.extension SYSTEM "../params/graphic.default.extension.xml">
+<!ENTITY header.rule SYSTEM "../params/header.rule.xml">
+<!ENTITY html.base SYSTEM "../params/html.base.xml">
+<!ENTITY html.cleanup SYSTEM "../params/html.cleanup.xml">
+<!ENTITY html.ext SYSTEM "../params/html.ext.xml">
+<!ENTITY html.extra.head.links SYSTEM "../params/html.extra.head.links.xml">
+<!ENTITY html.head.legalnotice.link.types SYSTEM "../params/html.head.legalnotice.link.types.xml">
+<!ENTITY html.head.legalnotice.link.multiple SYSTEM "../params/html.head.legalnotice.link.multiple.xml">
+<!ENTITY html.longdesc SYSTEM "../params/html.longdesc.xml">
+<!ENTITY html.longdesc.link SYSTEM "../params/html.longdesc.link.xml">
+<!ENTITY html.stylesheet SYSTEM "../params/html.stylesheet.xml">
+<!ENTITY html.stylesheet.type SYSTEM "../params/html.stylesheet.type.xml">
+<!ENTITY htmlhelp.alias.file SYSTEM "../params/htmlhelp.alias.file.xml">
+<!ENTITY htmlhelp.autolabel SYSTEM "../params/htmlhelp.autolabel.xml">
+<!ENTITY htmlhelp.button.back SYSTEM "../params/htmlhelp.button.back.xml">
+<!ENTITY htmlhelp.button.forward SYSTEM "../params/htmlhelp.button.forward.xml">
+<!ENTITY htmlhelp.button.hideshow SYSTEM "../params/htmlhelp.button.hideshow.xml">
+<!ENTITY htmlhelp.button.home SYSTEM "../params/htmlhelp.button.home.xml">
+<!ENTITY htmlhelp.button.home.url SYSTEM "../params/htmlhelp.button.home.url.xml">
+<!ENTITY htmlhelp.button.jump1 SYSTEM "../params/htmlhelp.button.jump1.xml">
+<!ENTITY htmlhelp.button.jump1.title SYSTEM "../params/htmlhelp.button.jump1.title.xml">
+<!ENTITY htmlhelp.button.jump1.url SYSTEM "../params/htmlhelp.button.jump1.url.xml">
+<!ENTITY htmlhelp.button.jump2 SYSTEM "../params/htmlhelp.button.jump2.xml">
+<!ENTITY htmlhelp.button.jump2.title SYSTEM "../params/htmlhelp.button.jump2.title.xml">
+<!ENTITY htmlhelp.button.jump2.url SYSTEM "../params/htmlhelp.button.jump2.url.xml">
+<!ENTITY htmlhelp.button.locate SYSTEM "../params/htmlhelp.button.locate.xml">
+<!ENTITY htmlhelp.button.next SYSTEM "../params/htmlhelp.button.next.xml">
+<!ENTITY htmlhelp.button.options SYSTEM "../params/htmlhelp.button.options.xml">
+<!ENTITY htmlhelp.button.prev SYSTEM "../params/htmlhelp.button.prev.xml">
+<!ENTITY htmlhelp.button.print SYSTEM "../params/htmlhelp.button.print.xml">
+<!ENTITY htmlhelp.button.refresh SYSTEM "../params/htmlhelp.button.refresh.xml">
+<!ENTITY htmlhelp.button.stop SYSTEM "../params/htmlhelp.button.stop.xml">
+<!ENTITY htmlhelp.button.zoom SYSTEM "../params/htmlhelp.button.zoom.xml">
+<!ENTITY htmlhelp.chm SYSTEM "../params/htmlhelp.chm.xml">
+<!ENTITY htmlhelp.default.topic SYSTEM "../params/htmlhelp.default.topic.xml">
+<!ENTITY htmlhelp.display.progress SYSTEM "../params/htmlhelp.display.progress.xml">
+<!ENTITY htmlhelp.encoding SYSTEM "../params/htmlhelp.encoding.xml">
+<!ENTITY htmlhelp.enhanced.decompilation SYSTEM "../params/htmlhelp.enhanced.decompilation.xml">
+<!ENTITY htmlhelp.enumerate.images SYSTEM "../params/htmlhelp.enumerate.images.xml">
+<!ENTITY htmlhelp.force.map.and.alias SYSTEM "../params/htmlhelp.force.map.and.alias.xml">
+<!ENTITY htmlhelp.hhc SYSTEM "../params/htmlhelp.hhc.xml">
+<!ENTITY htmlhelp.hhc.binary SYSTEM "../params/htmlhelp.hhc.binary.xml">
+<!ENTITY htmlhelp.hhc.folders.instead.books SYSTEM "../params/htmlhelp.hhc.folders.instead.books.xml">
+<!ENTITY htmlhelp.hhc.section.depth SYSTEM "../params/htmlhelp.hhc.section.depth.xml">
+<!ENTITY htmlhelp.hhc.show.root SYSTEM "../params/htmlhelp.hhc.show.root.xml">
+<!ENTITY htmlhelp.hhc.width SYSTEM "../params/htmlhelp.hhc.width.xml">
+<!ENTITY htmlhelp.hhp.windows SYSTEM "../params/htmlhelp.hhp.windows.xml">
+<!ENTITY htmlhelp.hhk SYSTEM "../params/htmlhelp.hhk.xml">
+<!ENTITY htmlhelp.hhp SYSTEM "../params/htmlhelp.hhp.xml">
+<!ENTITY htmlhelp.hhp.tail SYSTEM "../params/htmlhelp.hhp.tail.xml">
+<!ENTITY htmlhelp.hhp.window SYSTEM "../params/htmlhelp.hhp.window.xml">
+<!ENTITY htmlhelp.map.file SYSTEM "../params/htmlhelp.map.file.xml">
+<!ENTITY htmlhelp.only SYSTEM "../params/htmlhelp.only.xml">
+<!ENTITY htmlhelp.remember.window.position SYSTEM "../params/htmlhelp.remember.window.position.xml">
+<!ENTITY htmlhelp.show.advanced.search SYSTEM "../params/htmlhelp.show.advanced.search.xml">
+<!ENTITY htmlhelp.show.favorities SYSTEM "../params/htmlhelp.show.favorities.xml">
+<!ENTITY htmlhelp.show.menu SYSTEM "../params/htmlhelp.show.menu.xml">
+<!ENTITY htmlhelp.show.toolbar.text SYSTEM "../params/htmlhelp.show.toolbar.text.xml">
+<!ENTITY htmlhelp.title SYSTEM "../params/htmlhelp.title.xml">
+<!ENTITY htmlhelp.use.hhk SYSTEM "../params/htmlhelp.use.hhk.xml">
+<!ENTITY htmlhelp.window.geometry SYSTEM "../params/htmlhelp.window.geometry.xml">
+<!ENTITY img.src.path SYSTEM "../params/img.src.path.xml">
+<!ENTITY index.on.role SYSTEM "../params/index.on.role.xml">
+<!ENTITY index.prefer.titleabbrev SYSTEM "../params/index.prefer.titleabbrev.xml">
+<!ENTITY index.on.type SYSTEM "../params/index.on.type.xml">
+<!ENTITY index.number.separator SYSTEM "../params/index.number.separator.xml">
+<!ENTITY index.term.separator SYSTEM "../params/index.term.separator.xml">
+<!ENTITY index.range.separator SYSTEM "../params/index.range.separator.xml">
+<!ENTITY inherit.keywords SYSTEM "../params/inherit.keywords.xml">
+<!ENTITY label.from.part SYSTEM "../params/label.from.part.xml">
+<!ENTITY linenumbering.everyNth SYSTEM "../params/linenumbering.everyNth.xml">
+<!ENTITY linenumbering.extension SYSTEM "../params/linenumbering.extension.xml">
+<!ENTITY linenumbering.separator SYSTEM "../params/linenumbering.separator.xml">
+<!ENTITY linenumbering.width SYSTEM "../params/linenumbering.width.xml">
+<!ENTITY link.mailto.url SYSTEM "../params/link.mailto.url.xml">
+<!ENTITY make.graphic.viewport SYSTEM "../params/make.graphic.viewport.xml">
+<!ENTITY make.single.year.ranges SYSTEM "../params/make.single.year.ranges.xml">
+<!ENTITY make.valid.html SYSTEM "../params/make.valid.html.xml">
+<!ENTITY make.year.ranges SYSTEM "../params/make.year.ranges.xml">
+<!ENTITY manifest SYSTEM "../params/manifest.xml">
+<!ENTITY manifest.in.base.dir SYSTEM "../params/manifest.in.base.dir.xml">
+<!ENTITY manual.toc SYSTEM "../params/manual.toc.xml">
+<!ENTITY navig.graphics SYSTEM "../params/navig.graphics.xml">
+<!ENTITY navig.graphics.extension SYSTEM "../params/navig.graphics.extension.xml">
+<!ENTITY navig.graphics.path SYSTEM "../params/navig.graphics.path.xml">
+<!ENTITY navig.showtitles SYSTEM "../params/navig.showtitles.xml">
+<!ENTITY nominal.image.depth SYSTEM "../params/nominal.image.depth.xml">
+<!ENTITY nominal.image.width SYSTEM "../params/nominal.image.width.xml">
+<!ENTITY nominal.table.width SYSTEM "../params/nominal.table.width.xml">
+<!ENTITY olink.base.uri SYSTEM "../params/olink.base.uri.xml">
+<!ENTITY olink.doctitle SYSTEM "../params/olink.doctitle.xml">
+<!ENTITY olink.properties SYSTEM "../params/olink.properties.xml">
+<!ENTITY olink.debug SYSTEM "../params/olink.debug.xml">
+<!ENTITY prefer.internal.olink SYSTEM "../params/prefer.internal.olink.xml">
+<!ENTITY insert.olink.page.number SYSTEM "../params/insert.olink.page.number.xml">
+<!ENTITY insert.olink.pdf.frag SYSTEM "../params/insert.olink.pdf.frag.xml">
+<!ENTITY olink.lang.fallback.sequence SYSTEM "../params/olink.lang.fallback.sequence.xml">
+<!ENTITY olink.fragid SYSTEM "../params/olink.fragid.xml">
+<!ENTITY olink.outline.ext SYSTEM "../params/olink.outline.ext.xml">
+<!ENTITY olink.pubid SYSTEM "../params/olink.pubid.xml">
+<!ENTITY olink.resolver SYSTEM "../params/olink.resolver.xml">
+<!ENTITY olink.sysid SYSTEM "../params/olink.sysid.xml">
+<!ENTITY part.autolabel SYSTEM "../params/part.autolabel.xml">
+<!ENTITY phrase.propagates.style SYSTEM "../params/phrase.propagates.style.xml">
+<!ENTITY pixels.per.inch SYSTEM "../params/pixels.per.inch.xml">
+<!ENTITY points.per.em SYSTEM "../params/points.per.em.xml">
+<!ENTITY preface.autolabel SYSTEM "../params/preface.autolabel.xml">
+<!ENTITY preferred.mediaobject.role SYSTEM "../params/preferred.mediaobject.role.xml">
+<!ENTITY process.empty.source.toc SYSTEM "../params/process.empty.source.toc.xml">
+<!ENTITY process.source.toc SYSTEM "../params/process.source.toc.xml">
+<!ENTITY profile.arch SYSTEM "../params/profile.arch.xml">
+<!ENTITY profile.attribute SYSTEM "../params/profile.attribute.xml">
+<!ENTITY profile.condition SYSTEM "../params/profile.condition.xml">
+<!ENTITY profile.conformance SYSTEM "../params/profile.conformance.xml">
+<!ENTITY profile.lang SYSTEM "../params/profile.lang.xml">
+<!ENTITY profile.os SYSTEM "../params/profile.os.xml">
+<!ENTITY profile.revision SYSTEM "../params/profile.revision.xml">
+<!ENTITY profile.revisionflag SYSTEM "../params/profile.revisionflag.xml">
+<!ENTITY profile.role SYSTEM "../params/profile.role.xml">
+<!ENTITY profile.security SYSTEM "../params/profile.security.xml">
+<!ENTITY profile.separator SYSTEM "../params/profile.separator.xml">
+<!ENTITY profile.userlevel SYSTEM "../params/profile.userlevel.xml">
+<!ENTITY profile.value SYSTEM "../params/profile.value.xml">
+<!ENTITY profile.vendor SYSTEM "../params/profile.vendor.xml">
+<!ENTITY punct.honorific SYSTEM "../params/punct.honorific.xml">
+<!ENTITY qanda.defaultlabel SYSTEM "../params/qanda.defaultlabel.xml">
+<!ENTITY qanda.inherit.numeration SYSTEM "../params/qanda.inherit.numeration.xml">
+<!ENTITY qandadiv.autolabel SYSTEM "../params/qandadiv.autolabel.xml">
+<!ENTITY refentry.generate.name SYSTEM "../params/refentry.generate.name.xml">
+<!ENTITY refentry.generate.title SYSTEM "../params/refentry.generate.title.xml">
+<!ENTITY refentry.separator SYSTEM "../params/refentry.separator.xml">
+<!ENTITY refentry.xref.manvolnum SYSTEM "../params/refentry.xref.manvolnum.xml">
+<!ENTITY refclass.suppress SYSTEM "../params/refclass.suppress.xml">
+<!ENTITY root.filename SYSTEM "../params/root.filename.xml">
+<!ENTITY rootid SYSTEM "../params/rootid.xml">
+<!ENTITY runinhead.default.title.end.punct SYSTEM "../params/runinhead.default.title.end.punct.xml">
+<!ENTITY runinhead.title.end.punct SYSTEM "../params/runinhead.title.end.punct.xml">
+<!ENTITY saxon.character.representation SYSTEM "../params/saxon.character.representation.xml">
+<!ENTITY section.autolabel SYSTEM "../params/section.autolabel.xml">
+<!ENTITY section.autolabel.max.depth SYSTEM "../params/section.autolabel.max.depth.xml">
+<!ENTITY section.label.includes.component.label SYSTEM "../params/section.label.includes.component.label.xml">
+<!ENTITY segmentedlist.as.table SYSTEM "../params/segmentedlist.as.table.xml">
+<!ENTITY shade.verbatim SYSTEM "../params/shade.verbatim.xml">
+<!ENTITY shade.verbatim.style SYSTEM "../params/shade.verbatim.style.xml">
+<!ENTITY show.comments SYSTEM "../params/show.comments.xml">
+<!ENTITY show.revisionflag SYSTEM "../params/show.revisionflag.xml">
+<!ENTITY spacing.paras SYSTEM "../params/spacing.paras.xml">
+<!ENTITY suppress.footer.navigation SYSTEM "../params/suppress.footer.navigation.xml">
+<!ENTITY suppress.header.navigation SYSTEM "../params/suppress.header.navigation.xml">
+<!ENTITY suppress.navigation SYSTEM "../params/suppress.navigation.xml">
+<!ENTITY table.borders.with.css SYSTEM "../params/table.borders.with.css.xml">
+<!ENTITY tablecolumns.extension SYSTEM "../params/tablecolumns.extension.xml">
+<!ENTITY targets.filename SYSTEM "../params/targets.filename.xml">
+<!ENTITY target.database.document SYSTEM "../params/target.database.document.xml">
+<!ENTITY tex.math.delims SYSTEM "../params/tex.math.delims.xml">
+<!ENTITY tex.math.file SYSTEM "../params/tex.math.file.xml">
+<!ENTITY tex.math.in.alt SYSTEM "../params/tex.math.in.alt.xml">
+<!ENTITY textinsert.extension SYSTEM "../params/textinsert.extension.xml">
+<!ENTITY toc.list.type SYSTEM "../params/toc.list.type.xml">
+<!ENTITY toc.section.depth SYSTEM "../params/toc.section.depth.xml">
+<!ENTITY toc.max.depth SYSTEM "../params/toc.max.depth.xml">
+<!ENTITY ulink.target SYSTEM "../params/ulink.target.xml">
+<!ENTITY use.embed.for.svg SYSTEM "../params/use.embed.for.svg.xml">
+<!ENTITY use.extensions SYSTEM "../params/use.extensions.xml">
+<!ENTITY use.id.as.filename SYSTEM "../params/use.id.as.filename.xml">
+<!ENTITY use.local.olink.style SYSTEM "../params/use.local.olink.style.xml">
+<!ENTITY use.role.as.xrefstyle SYSTEM "../params/use.role.as.xrefstyle.xml">
+<!ENTITY use.role.for.mediaobject SYSTEM "../params/use.role.for.mediaobject.xml">
+<!ENTITY use.svg SYSTEM "../params/use.svg.xml">
+<!ENTITY variablelist.as.table SYSTEM "../params/variablelist.as.table.xml">
+<!ENTITY variablelist.term.separator SYSTEM "../params/variablelist.term.separator.xml">
+<!ENTITY variablelist.term.break.after SYSTEM "../params/variablelist.term.break.after.xml">
+<!ENTITY para.propagates.style SYSTEM "../params/para.propagates.style.xml">
+<!ENTITY html.cellpadding SYSTEM "../params/html.cellpadding.xml">
+<!ENTITY html.cellspacing SYSTEM "../params/html.cellspacing.xml">
+<!ENTITY menuchoice.separator SYSTEM "../params/menuchoice.separator.xml">
+<!ENTITY menuchoice.menu.separator SYSTEM "../params/menuchoice.menu.separator.xml">
+<!ENTITY bibliography.numbered SYSTEM "../params/bibliography.numbered.xml">
+<!ENTITY chunk.tocs.and.lots SYSTEM "../params/chunk.tocs.and.lots.xml">
+<!ENTITY chunk.tocs.and.lots.has.title SYSTEM "../params/chunk.tocs.and.lots.has.title.xml">
+<!ENTITY graphicsize.extension SYSTEM "../params/graphicsize.extension.xml">
+<!ENTITY graphicsize.use.img.src.path SYSTEM "../params/graphicsize.use.img.src.path.xml">
+<!ENTITY l10n.gentext.language SYSTEM "../params/l10n.gentext.language.xml">
+<!ENTITY l10n.gentext.default.language SYSTEM "../params/l10n.gentext.default.language.xml">
+<!ENTITY l10n.gentext.use.xref.language SYSTEM "../params/l10n.gentext.use.xref.language.xml">
+<!ENTITY l10n.lang.value.rfc.compliant SYSTEM "../params/l10n.lang.value.rfc.compliant.xml">
+<!ENTITY default.image.width SYSTEM "../params/default.image.width.xml">
+<!ENTITY default.float.class SYSTEM "../params/default.float.class.xml">
+<!ENTITY funcsynopsis.tabular.threshold SYSTEM "../params/funcsynopsis.tabular.threshold.xml">
+<!ENTITY table.cell.border.color SYSTEM "../params/table.cell.border.color.xml">
+<!ENTITY table.cell.border.style SYSTEM "../params/table.cell.border.style.xml">
+<!ENTITY table.cell.border.thickness SYSTEM "../params/table.cell.border.thickness.xml">
+<!ENTITY table.frame.border.color SYSTEM "../params/table.frame.border.color.xml">
+<!ENTITY table.frame.border.style SYSTEM "../params/table.frame.border.style.xml">
+<!ENTITY table.frame.border.thickness SYSTEM "../params/table.frame.border.thickness.xml">
+<!ENTITY textdata.default.encoding SYSTEM "../params/textdata.default.encoding.xml">
+<!ENTITY ignore.image.scaling SYSTEM "../params/ignore.image.scaling.xml">
+<!ENTITY footnote.number.format SYSTEM "../params/footnote.number.format.xml">
+<!ENTITY table.footnote.number.format SYSTEM "../params/table.footnote.number.format.xml">
+<!ENTITY footnote.number.symbols SYSTEM "../params/footnote.number.symbols.xml">
+<!ENTITY table.footnote.number.symbols SYSTEM "../params/table.footnote.number.symbols.xml">
+<!ENTITY entry.propagates.style SYSTEM "../params/entry.propagates.style.xml">
+<!ENTITY glossentry.show.acronym SYSTEM "../params/glossentry.show.acronym.xml">
+<!ENTITY xref.with.number.and.title SYSTEM "../params/xref.with.number.and.title.xml">
+<!ENTITY xref.label-title.separator SYSTEM "../params/xref.label-title.separator.xml">
+<!ENTITY xref.label-page.separator SYSTEM "../params/xref.label-page.separator.xml">
+<!ENTITY xref.title-page.separator SYSTEM "../params/xref.title-page.separator.xml">
+<!ENTITY ebnf.assignment SYSTEM "../params/ebnf.assignment.xml">
+<!ENTITY ebnf.statement.terminator SYSTEM "../params/ebnf.statement.terminator.xml">
+<!ENTITY eclipse.autolabel SYSTEM "../params/eclipse.autolabel.xml">
+<!ENTITY eclipse.plugin.name SYSTEM "../params/eclipse.plugin.name.xml">
+<!ENTITY eclipse.plugin.id SYSTEM "../params/eclipse.plugin.id.xml">
+<!ENTITY eclipse.plugin.version SYSTEM "../params/eclipse.plugin.version.xml">
+<!ENTITY eclipse.plugin.provider SYSTEM "../params/eclipse.plugin.provider.xml">
+<!ENTITY insert.xref.page.number SYSTEM "../params/insert.xref.page.number.xml">
+<!ENTITY component.label.includes.part.label SYSTEM "../params/component.label.includes.part.label.xml">
+<!ENTITY simplesect.in.toc SYSTEM "../params/simplesect.in.toc.xml">
+<!ENTITY annotation.support SYSTEM "../params/annotation.support.xml">
+<!ENTITY annotation.js SYSTEM "../params/annotation.js.xml">
+<!ENTITY annotation.graphic.open SYSTEM "../params/annotation.graphic.open.xml">
+<!ENTITY annotation.graphic.close SYSTEM "../params/annotation.graphic.close.xml">
+<!ENTITY annotation.css SYSTEM "../params/annotation.css.xml">
+<!ENTITY keep.relative.image.uris SYSTEM "../params/keep.relative.image.uris.xml">
+<!ENTITY id.warnings SYSTEM "../params/id.warnings.xml">
+<!ENTITY index.method SYSTEM "../params/index.method.xml">
Added: trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xml
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xml (rev 0)
+++ trunk/org.rubypeople.rdt.doc.user/modifications/html/param.xml 2007-03-30 15:02:48 UTC (rev 2245)
@@ -0,0 +1,9426 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book
+ PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<book>
+<bookinfo>
+<title>HTML Parameter Reference</title>
+<releaseinfo role="meta">
+$Id: param.xweb,v 1.103 2006/05/14 06:22:26 bobstayton Exp $
+</releaseinfo>
+<author>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+</author>
+<copyright>
+ <year>1999</year>
+ <year>2000</year>
+ <year>2001</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+</bookinfo>
+
+<preface><title>Introduction</title>
+
+<para>This is reference documentation for all user-configurable
+parameters in the DocBook XSL HTML stylesheets (for generating
+HTML output).</para>
+
+<para>This reference describes each of the HTML Stylesheet parameters.
+These are the <quote>easily customizable</quote> parts of the stylesheet.
+If you want to specify an alternate value for one or more of these
+parameters, you can do so in a <quote>driver</quote> stylesheet.</para>
+
+<para>For example, if you want to change the <literal>html.stylesheet</literal>
+to <filename>reference.css</filename>, you might create a driver
+stylesheet like this:</para>
+
+<programlisting><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/snapshot/html/docbook.xsl"/>
+
+ <xsl:param name="html.stylesheet">reference.css</xsl:param>
+
+</xsl:stylesheet></programlisting>
+
+<para>Naturally, you have to change the
+<sgmltag class="attribute">href</sgmltag> attribute on
+<literal><xsl:import></literal> to point to
+<filename>docbook.xsl</filename> on your system. (Or
+<filename>chunk.xsl</filename>, if you're using chunking.)</para>
+</preface>
+
+<reference id="admons"><title>Admonitions</title>
+<refentry id="admon.graphics.extension">
+<refmeta>
+<refentrytitle>admon.graphics.extension</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.extension</refname>
+<refpurpose>Extension for admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.extension.frag"><xsl:param name="admon.graphics.extension" select="'.png'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Sets the extension to use on admonition graphics.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="admon.graphics.path">
+<refmeta>
+<refentrytitle>admon.graphics.path</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics.path</refname>
+<refpurpose>Path to admonition graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.path.frag"><xsl:param name="admon.graphics.path">images/</xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Sets the path, probably relative to the directory where the HTML
+files are created, to the admonition graphics.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="admon.graphics">
+<refmeta>
+<refentrytitle>admon.graphics</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.graphics</refname>
+<refpurpose>Use graphics in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.graphics.frag">
+<xsl:param name="admon.graphics" select="0"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If true (non-zero), admonitions are presented in an alternate style that uses
+a graphic. Default graphics are provided in the distribution.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="admon.textlabel">
+<refmeta>
+<refentrytitle>admon.textlabel</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.textlabel</refname>
+<refpurpose>Use text label in admonitions?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.textlabel.frag">
+<xsl:param name="admon.textlabel" select="1"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If true (non-zero), admonitions are presented with a generated
+text label such as Note or Warning in the appropriate language.
+If zero, such labels are turned off, but any title child
+of the admonition element are still output.
+The default value is 1.
+</para>
+
+</refsect1>
+</refentry>
+
+
+<refentry id="admon.style">
+<refmeta>
+<refentrytitle>admon.style</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admon.style</refname>
+<refpurpose>CSS style attributes for admonitions</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="admon.style.frag"><xsl:param name="admon.style">
+ <xsl:text>margin-left: 0.5in; margin-right: 0.5in;</xsl:text>
+</xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specifies the value of the <sgmltag class="attribute">STYLE</sgmltag>
+attribute that should be added to admonitions.
+</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference id="callouts"><title>Callouts</title>
+<refentry id="callout.defaultcolumn">
+<refmeta>
+<refentrytitle>callout.defaultcolumn</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.defaultcolumn</refname>
+<refpurpose>Indicates what column callouts appear in by default</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.defaultcolumn.frag"><xsl:param name="callout.defaultcolumn" select="'60'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If a callout does not identify a column (for example, if it uses
+the <literal>linerange</literal> <sgmltag class="attribute">unit</sgmltag>),
+it will appear in the default column.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.graphics.extension">
+<refmeta>
+<refentrytitle>callout.graphics.extension</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.extension</refname>
+<refpurpose>Extension for callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.extension.frag"><xsl:param name="callout.graphics.extension" select="'.png'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Sets the extension to use on callout graphics.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.graphics.number.limit">
+<refmeta>
+<refentrytitle>callout.graphics.number.limit</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.number.limit.frag"><xsl:param name="callout.graphics.number.limit" select="'15'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If <parameter>callout.graphics</parameter>
+is non-zero, graphics are used to represent
+callout numbers. The value of
+<parameter>callout.graphics.number.limit</parameter>
+is
+the largest number for which a graphic exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.graphics.path">
+<refmeta>
+<refentrytitle>callout.graphics.path</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics.path</refname>
+<refpurpose>Path to callout graphics</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.path.frag">
+<xsl:param name="callout.graphics.path" select="'images/callouts/'"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Sets the path, probably relative to the directory where the HTML
+files are created, to the callout graphics.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.graphics">
+<refmeta>
+<refentrytitle>callout.graphics</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.graphics</refname>
+<refpurpose>Use graphics for callouts?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.graphics.frag">
+<xsl:param name="callout.graphics" select="'1'"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, callouts are presented with graphics (e.g., reverse-video
+circled numbers instead of "(1)", "(2)", etc.).
+Default graphics are provided in the distribution.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.list.table">
+<refmeta>
+<refentrytitle>callout.list.table</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.list.table</refname>
+<refpurpose>Present callout lists using a table?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.list.table.frag"><xsl:param name="callout.list.table" select="'1'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The default presentation of <sgmltag>CalloutList</sgmltag>s uses
+an HTML <sgmltag>DL</sgmltag>. Some browsers don't align DLs very well
+if <parameter>callout.graphics</parameter> are used. With this option
+turned on, <sgmltag>CalloutList</sgmltag>s are presented in an HTML
+<sgmltag>TABLE</sgmltag>, which usually results in better alignment
+of the callout number with the callout description.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.unicode.number.limit">
+<refmeta>
+<refentrytitle>callout.unicode.number.limit</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.number.limit</refname>
+<refpurpose>Number of the largest callout graphic</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.number.limit.frag"><xsl:param name="callout.unicode.number.limit" select="'10'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.number.limit</parameter>
+is
+the largest number for which a unicode character exists. If the callout number
+exceeds this limit, the default presentation "(nnn)" will always
+be used.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.unicode.start.character">
+<refmeta>
+<refentrytitle>callout.unicode.start.character</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode.start.character</refname>
+<refpurpose>First Unicode character to use, decimal value.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.start.character.frag"><xsl:param name="callout.unicode.start.character" select="10102"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If <parameter>callout.graphics</parameter> is zero and <parameter>callout.unicode</parameter>
+is non-zero, unicode characters are used to represent
+callout numbers. The value of
+<parameter>callout.unicode.start.character</parameter>
+is the decimal unicode value used for callout number one. Currently,
+only 10102 is supported in the stylesheets for this parameter.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callout.unicode">
+<refmeta>
+<refentrytitle>callout.unicode</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callout.unicode</refname>
+<refpurpose>Use Unicode characters rather than images for callouts.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callout.unicode.frag"><xsl:param name="callout.unicode" select="0"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="callouts.extension">
+<refmeta>
+<refentrytitle>callouts.extension</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>callouts.extension</refname>
+<refpurpose>Enable the callout extension</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="callouts.extension.frag"><xsl:param name="callouts.extension" select="'1'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The callouts extension processes <sgmltag>areaset</sgmltag>
+elements in <sgmltag>ProgramListingCO</sgmltag> and other text-based
+callout elements.
+</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference id="ebnf"><title>EBNF</title>
+<refentry id="ebnf.table.bgcolor">
+<refmeta>
+<refentrytitle>ebnf.table.bgcolor</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.bgcolor</refname>
+<refpurpose>Background color for EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.table.bgcolor.frag"><xsl:param name="ebnf.table.bgcolor" select="'#F5DCB3'"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Sets the background color for EBNF tables. No <sgmltag>bgcolor</sgmltag>
+attribute is output if <varname>ebnf.table.bgcolor</varname> is set to
+the null string. The default value matches the value used in recent
+online versions of the W3C's XML Spec productions.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="ebnf.table.border">
+<refmeta>
+<refentrytitle>ebnf.table.border</refentrytitle>
+<refmiscinfo role="type"/>
+</refmeta>
+<refnamediv>
+<refname>ebnf.table.border</refname>
+<refpurpose>Selects border on EBNF tables</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.table.border.frag"><xsl:param name="ebnf.table.border" select="1"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Selects the border on EBNF tables. If non-zero, the tables have
+borders, otherwise they don't.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="ebnf.assignment">
+<refmeta>
+<refentrytitle>ebnf.assignment</refentrytitle>
+<refmiscinfo role="type">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.assignment</refname>
+<refpurpose>The EBNF production assignment operator</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.assignment.frag">
+<xsl:param name="ebnf.assignment">
+<code>::=</code>
+</xsl:param>
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The <parameter>ebnf.assignment</parameter> parameter determines what
+text is used to show <quote>assignment</quote> in <sgmltag>production</sgmltag>s
+in <sgmltag>productionset</sgmltag>s.</para>
+
+<para>While <quote><literal>::=</literal></quote> is common, so are several
+other operators.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="ebnf.statement.terminator">
+<refmeta>
+<refentrytitle>ebnf.statement.terminator</refentrytitle>
+<refmiscinfo role="type">rtf</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ebnf.statement.terminator</refname>
+<refpurpose>Punctuation that ends an EBNF statement.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="ebnf.statement.terminator.frag">
+<xsl:param name="ebnf.statement.terminator"></xsl:param>
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The <parameter>ebnf.statement.terminator</parameter> parameter determines what
+text is used to terminate each <sgmltag>production</sgmltag>
+in <sgmltag>productionset</sgmltag>.</para>
+
+<para>Some notations end each statement with a period.</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference id="toc_index"><title>ToC/LoT/Index Generation</title>
+<refentry id="annotate.toc">
+<refmeta>
+<refentrytitle>annotate.toc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>annotate.toc</refname>
+<refpurpose>Annotate the Table of Contents?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="annotate.toc.frag"><xsl:param name="annotate.toc" select="1"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If true, TOCs will be annotated. At present, this just means
+that the <sgmltag>RefPurpose</sgmltag> of <sgmltag>RefEntry</sgmltag>
+TOC entries will be displayed.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="autotoc.label.separator">
+<refmeta>
+<refentrytitle>autotoc.label.separator</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.separator</refname>
+<refpurpose>Separator between labels and titles in the ToC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autotoc.label.separator.frag"><xsl:param name="autotoc.label.separator" select="'. '"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>String to use to seperate labels and title in a table of contents.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="autotoc.label.in.hyperlink">
+<refmeta>
+<refentrytitle>autotoc.label.in.hyperlink</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>autotoc.label.in.hyperlink</refname>
+<refpurpose>Include lable in hyperlinked titles in TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="autotoc.label.in.hyperlink.frag"><xsl:param name="autotoc.label.in.hyperlink" select="1"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If the value of
+<parameter>autotoc.label.in.hyperlink</parameter> is non-zero, labels
+are included in hyperlinked titles in the TOC. If it is instead zero,
+labels are still displayed prior to the hyperlinked titles, but
+are not hyperlinked along with the titles.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="process.source.toc">
+<refmeta>
+<refentrytitle>process.source.toc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.source.toc</refname>
+<refpurpose>Process a non-empty <sgmltag>toc</sgmltag> element if it occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.source.toc.frag"><xsl:param name="process.source.toc" select="0"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specifies that the contents of a non-empty "hard-coded"
+<sgmltag>toc</sgmltag> element in a source document are processed to
+generate a TOC in output.
+<note>
+ <para>This parameter has no effect on automated generation of
+ TOCs. An automated TOC may still be generated along with the
+ "hard-coded" TOC. To suppress automated TOC generation, adjust the
+ value of the <parameter>generate.toc</parameter> paramameter.</para>
+
+ <para>The <sgmltag>process.source.toc</sgmltag> parameter also has
+ no effect if the <sgmltag>toc</sgmltag> element is empty; handling
+ for empty <sgmltag>toc</sgmltag> is controlled by the
+ <parameter>process.empty.source.toc</parameter> parameter.</para>
+</note>
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="process.empty.source.toc">
+<refmeta>
+<refentrytitle>process.empty.source.toc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>process.empty.source.toc</refname>
+<refpurpose>Generate automated TOC if <sgmltag>toc</sgmltag> element occurs in a source document?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="process.empty.source.toc.frag"><xsl:param name="process.empty.source.toc" select="0"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specifies that if an empty <sgmltag>toc</sgmltag> element is
+found in a source document, an automated TOC is generated.
+<note>
+ <para>Depending on what the value of the
+ <parameter>generate.toc</parameter> parameter is, setting this
+ parameter to <literal>1</literal> could result in generation of
+ duplicate automated TOCs. So the
+ <parameter>process.empty.source.toc</parameter> is primarily useful
+ as an "override": by placing an empty <sgmltag>toc</sgmltag> in your
+ document and setting this parameter to <literal>1</literal>, you can
+ force a TOC to be generated even if <sgmltag>generate.toc</sgmltag>
+ says not to.</para>
+</note>
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="bridgehead.in.toc">
+<refmeta>
+<refentrytitle>bridgehead.in.toc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bridgehead.in.toc</refname>
+<refpurpose>Should bridgehead elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="bridgehead.in.toc.frag"><xsl:param name="bridgehead.in.toc" select="0"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, bridgeheads appear in the TOC. Note that this option
+is not fully supported and may be removed in a future version of the
+stylesheets.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="simplesect.in.toc">
+<refmeta>
+<refentrytitle>simplesect.in.toc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>simplesect.in.toc</refname>
+<refpurpose>Should <sgmltag>simplesect</sgmltag> elements appear in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="simplesect.in.toc.frag"><xsl:param name="simplesect.in.toc" select="0"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, <sgmltag>simplesect</sgmltag>s appear in the TOC.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="manual.toc">
+<refmeta>
+<refentrytitle>manual.toc</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>manual.toc</refname>
+<refpurpose>An explicit TOC to be used for the TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="manual.toc.frag">
+<xsl:param name="manual.toc" select="''"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The <parameter>manual.toc</parameter> identifies an explicit TOC that
+will be used for building the printed TOC.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.list.type">
+<refmeta>
+<refentrytitle>toc.list.type</refentrytitle>
+<refmiscinfo role="type">list</refmiscinfo>
+<refmiscinfo role="value">dl</refmiscinfo>
+<refmiscinfo role="value">ul</refmiscinfo>
+<refmiscinfo role="value">ol</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.list.type</refname>
+<refpurpose>Type of HTML list element to use for Tables of Contents</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.list.type.frag"><xsl:param name="toc.list.type">dl</xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>When an automatically generated Table of Contents (or List of Titles)
+is produced, this HTML element will be used to make the list.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.section.depth">
+<refmeta>
+<refentrytitle>toc.section.depth</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.section.depth</refname>
+<refpurpose>How deep should recursive <sgmltag>section</sgmltag>s appear
+in the TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.section.depth.frag"><xsl:param name="toc.section.depth">2</xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specifies the depth to which recursive sections should appear in the
+TOC.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.max.depth">
+<refmeta>
+<refentrytitle>toc.max.depth</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.max.depth</refname>
+<refpurpose>How maximaly deep should be each TOC?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="toc.max.depth.frag"><xsl:param name="toc.max.depth">8</xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specifies the maximal depth of TOC on all levels.</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo role="type">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.toc.frag">
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When processing a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <sgmltag>book</sgmltag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <sgmltag>chapter</sgmltag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <sgmltag>chapter</sgmltag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+<para>If you want to leave the rule in, to make it explicit that you're turning
+something off, use the value <quote>nop</quote>. For example, the following
+entry disables ToCs and LoTs for articles:</para>
+
+<screen>article nop</screen>
+
+<para>Do not simply leave the word <quote>article</quote> in the file
+without a matching value. That'd be just begging the silly little
+path/value parser to get confused.</para>
+
+<para>Section ToCs are further controlled by the
+<parameter>generate.section.toc.level</parameter> parameter.
+For a given section level to have a ToC, it must have both an entry in
+<parameter>generate.toc</parameter> and be within the range enabled by
+<parameter>generate.section.toc.level</parameter>.</para>
+</refsect1>
+</refentry>
+
+<refentry id="generate.section.toc.level">
+<refmeta>
+<refentrytitle>generate.section.toc.level</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.section.toc.level</refname>
+<refpurpose>Control depth of TOC generation in sections</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.section.toc.level.frag">
+<xsl:param name="generate.section.toc.level" select="0"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>The <parameter>generate.section.toc.level</parameter> parameter
+controls the depth of section in which TOCs will be generated. Note
+that this is related to, but not the same as
+<parameter>toc.section.depth</parameter>, which controls the depth to
+which TOC entries will be generated in a given TOC.</para>
+<para>If, for example, <parameter>generate.section.toc.level</parameter>
+is <literal>3</literal>, TOCs will be generated in first, second, and third
+level sections, but not in fourth level sections.
+</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="generate.index">
+<refmeta>
+<refentrytitle>generate.index</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.index</refname>
+<refpurpose>Do you want an index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="generate.index.frag"><xsl:param name="generate.index" select="1"></xsl:param></programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>Specify if an index should be generated. </para>
+
+</refsect1>
+</refentry>
+
+<refentry id="index.method">
+<refmeta>
+<refentrytitle>index.method</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.method</refname>
+<refpurpose>Select method used to group index entries in an index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.method.frag">
+<xsl:param name="index.method" select="'english'"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>This parameter lets you select which method should be
+used to sort and group index entries in an index.
+Indexes in languages that have accented characters typically
+sort together accented words and unaccented words.
+So <quote>Á</quote> (A acute) would sort together
+with <quote>A</quote>, so both would appear in the <quote>A</quote>
+section of the index.
+</para>
+
+<para>The default indexing method does not sort accented characters this way.
+Words that start with an accented character will instead appear in the
+<quote>Symbols</quote> section of the index.
+As such, the default method is only suitable for
+English and other unaccented languages.
+The other indexing methods require extensions of one type or
+another, which is why there are not used by default.</para>
+
+<para>The three choices for indexing method are:</para>
+<variablelist>
+<varlistentry>
+<term><literal>english</literal></term>
+<listitem>
+<para>
+(default) Sort and groups words based only on the Latin alphabet.
+Accented words and words in non-Latin alphabets will be
+put in the <quote>Symbols</quote> section of the index.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kosek</literal></term>
+<listitem>
+<para>
+Sort and groups words based on letter groups configured in
+the DocBook locale file for the given language.
+For example, the French locale file is <filename>common/fr.xml</filename>.
+This method requires support for EXSLT extensions in
+the XSL processor. It also requires support for using
+user-defined functions in xsl:key (xsltproc does not).
+</para>
+<para>This method is suitable for any language for which you can
+list all the individual characters that should appear
+in each letter group in an index.
+It is probably not practical to use it for ideographic languages
+such as Chinese that have hundreds or thousands of characters.
+</para>
+<para>To use this method, your customization must set this
+parameter and import an additional stylesheet module:</para>
+<programlisting><xsl:import href="[path-to-stylesheets]/common/autoidx-ng.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</programlisting>
+<para>The stylesheet module defines functions and adds an xsl:key
+used by the method.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>kimber</literal></term>
+<listitem>
+<para>
+This method uses extensions to the Saxon processor to implement
+sophisticated indexing processes. It uses its own
+configuration file, which can include information for any number of
+languages. Each language's configuration can group
+words using either an
+enumerated method similar to the kosek method, or it can
+designate the first character in each group when viewed in sort order.
+The latter configuration is useful for ideographic languages
+such as Chinese, Japanese, and Korean.
+You can also define your own collation algorithms and where you
+want Latin-alphabet words sorted.</para>
+<itemizedlist>
+<listitem>
+<para>For a whitepaper describing the extensions, see:
+<ulink url="http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf"/>.
+</para>
+</listitem>
+<listitem>
+<para>To download the extension library, see
+<ulink url="http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport"/>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>To use this method, you must:</para>
+
+<orderedlist>
+<listitem>
+<para>Use Saxon as your XSLT processor.
+</para>
+</listitem>
+<listitem>
+<para>Install and configure the Innodata Isogen library, using
+the documentation that comes with it.
+</para>
+</listitem>
+<listitem>
+<para>Set this parameter's value to <quote>kimber</quote>.
+</para>
+</listitem>
+<listitem>
+<para>Import the index extensions stylesheet module
+<filename>common/autoidx-ng.xsl</filename> into your
+customization.
+</para>
+</listitem>
+</orderedlist>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1>
+</refentry>
+
+<refentry id="index.on.type">
+<refmeta>
+<refentrytitle>index.on.type</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>index.on.type</refname>
+<refpurpose>Select indexterms based on <sgmltag>type</sgmltag>
+attribute value</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="index.on.type.frag">
+<xsl:param name="index.on.type" select="0"></xsl:param>
+</programlisting>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>
+If non-zero,
+then an <sgmltag>index</sgmltag> element that has a
+<sgmltag>type</sgmltag> attribute
+value will contain only those <sgmltag>indexterm</sgmltag>
+elements with a matching <sgmltag>type</sgmltag> attribute value.
+If an <sgmltag>index</sgmltag> has no <sgmltag>type</sgmltag>
+attrib...
[truncated message content] |
|
From: <caw...@us...> - 2007-03-30 14:43:38
|
Revision: 2244
http://svn.sourceforge.net/rubyeclipse/?rev=2244&view=rev
Author: cawilliams
Date: 2007-03-30 07:43:36 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
fix references to &, < and > - use & < and >
Modified Paths:
--------------
trunk/org.rubypeople.rdt.doc.user/docbook.xml
Modified: trunk/org.rubypeople.rdt.doc.user/docbook.xml
===================================================================
--- trunk/org.rubypeople.rdt.doc.user/docbook.xml 2007-03-30 14:27:54 UTC (rev 2243)
+++ trunk/org.rubypeople.rdt.doc.user/docbook.xml 2007-03-30 14:43:36 UTC (rev 2244)
@@ -903,13 +903,13 @@
<listitem> Auto-extend comments under particular conditions (abov method/class/module definitions, above attr_, above alias, above constant assignment, as first lines of file)</listitem>
<listitem> Allow user to customize font used by Ruby Editor</listitem>
<listitem> Allow user to turn on/off smart auto-closing of strings, brackets and braces on new preference page (was always enabled by default before)</listitem>
- <listitem> A number of bugfixes (see <ulink url="http://rubyeclipse.mktec.com/cgi-bin/trac.py/query?status=closed&milestone=0.8.0&type=defect&order=priority">http://rubyeclipse.mktec.com/cgi-bin/trac.py/query?status=closed&milestone=0.8.0&type=defect&order=priority</ulink>)</listitem>
+ <listitem> A number of bugfixes (see <ulink url="http://rubyeclipse.mktec.com/cgi-bin/trac.py/query?status=closed&milestone=0.8.0&type=defect&order=priority">http://rubyeclipse.mktec.com/cgi-bin/trac.py/query?status=closed&milestone=0.8.0&type=defect&order=priority</ulink>)</listitem>
</itemizedlist>
<para>New in RDT 0.7.0:</para>
<itemizedlist>
<listitem> Multiple debugger session possible because a free port will be used for the debugger communication. The port is written to a
- temporary file and conveyed to the ruby process with "-r<tmpFile>". The fixed port used in the past (1098) is still the default
+ temporary file and conveyed to the ruby process with "-r<tmpFile>". The fixed port used in the past (1098) is still the default
port in the case that a temporary file can not be created</listitem>
<listitem> Catchpoints:
<itemizedlist>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-30 14:27:55
|
Revision: 2243
http://svn.sourceforge.net/rubyeclipse/?rev=2243&view=rev
Author: cawilliams
Date: 2007-03-30 07:27:54 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
fix missing/unused strings
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/messages.properties
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/PreferencesMessages.properties
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/messages.properties
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/messages.properties 2007-03-30 13:52:57 UTC (rev 2242)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/messages.properties 2007-03-30 14:27:54 UTC (rev 2243)
@@ -127,6 +127,7 @@
classpath_disabledInclusionExclusionPatterns = Inclusion or exclusion patterns are disabled in project {1}, cannot selectively include or exclude from entry: ''{0}''
classpath_disabledMultipleOutputLocations = Multiple output locations are disabled in project {1}, cannot associate entry: ''{0}'' with a specific output
classpath_incompatibleLibraryJDKLevel = Incompatible .class files version in required binaries. Project ''{0}'' is targeting a {1} runtime, but is compiled against ''{2}'' which requires a {3} runtime
+classpath_duplicateEntryExtraAttribute = Duplicate extra attribute: ''{0}'' in loadpath entry ''{1}'' for project {2}
### miscellaneous
file_notFound = File not found: ''{0}''
@@ -134,7 +135,8 @@
path_nullPath = Path cannot be null
path_mustBeAbsolute = Path must be absolute
cache_invalidLoadFactor = Incorrect load factor
-savedState_jobName = Processing Java changes since last activation
+savedState_jobName = Processing Ruby changes since last activation
+javamodel_initialization = Initializing Ruby tooling
### access restrictions
restrictedAccess_project = The type {0} is not imported from required project {1}
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/PreferencesMessages.properties
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/PreferencesMessages.properties 2007-03-30 13:52:57 UTC (rev 2242)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/PreferencesMessages.properties 2007-03-30 14:27:54 UTC (rev 2243)
@@ -75,7 +75,6 @@
AppearancePreferencePage_note=Note:
AppearancePreferencePage_methodtypeparams_label=Show method pa&rameter names
-AppearancePreferencePage_showMembersInPackagesView=S&how members in Package Explorer
AppearancePreferencePage_stackViewsVerticallyInTheRubyBrowsingPerspective=&Stack views vertically in the Ruby Browsing perspective
AppearancePreferencePage_preferenceOnlyEffectiveForNewPerspectives=This preference will only take effect on new perspectives
@@ -187,4 +186,8 @@
FoldingConfigurationBlock_combo_caption= Select folding to &use:
RubyBuildConfigurationBlock_empty_input=Number cannot be empty.
-RubyBuildConfigurationBlock_invalid_input={0} is not a valid number for ''{1}''.
\ No newline at end of file
+RubyBuildConfigurationBlock_invalid_input={0} is not a valid number for ''{1}''.
+
+NewJavaProjectPreferencePage_error_decode=Error while decoding RubyVM entry
+NewJavaProjectPreferencePage_jre_variable_description=RUBY_LIB variable
+NewJavaProjectPreferencePage_jre_container_description=RubyVM container
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-30 13:52:58
|
Revision: 2242
http://svn.sourceforge.net/rubyeclipse/?rev=2242&view=rev
Author: cawilliams
Date: 2007-03-30 06:52:57 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
remove a bunch of unused messages
Modified Paths:
--------------
trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/internal/testunit/ui/TestUnitMessages.properties
Modified: trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/internal/testunit/ui/TestUnitMessages.properties
===================================================================
--- trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/internal/testunit/ui/TestUnitMessages.properties 2007-03-29 23:19:25 UTC (rev 2241)
+++ trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/internal/testunit/ui/TestUnitMessages.properties 2007-03-30 13:52:57 UTC (rev 2242)
@@ -90,46 +90,12 @@
JUnitBaseLaunchConfiguration_error_novmrunner=Internal error: JRE {0} does not specify a VM Runner
JUnitBaseLaunchConfiguration_error_notests=No tests found
-JUnitMainTab_label_oneTest=&Run a single test
-JUnitMainTab_label_project=&Project:
-JUnitMainTab_label_browse=&Browse...
-JUnitMainTab_label_test=T&est class:
-JUnitMainTab_label_search=&Search...
-JUnitMainTab_label_containerTest=Run &all tests in the selected project, package or source folder:
-JUnitMainTab_label_keeprunning=&Keep Test::Unit running after a test run when debugging
-JUnitMainTab_testdialog_title=Test Selection
-JUnitMainTab_testdialog_message=Choose a test case or test suite:
-JUnitMainTab_projectdialog_title=Project Selection
-JUnitMainTab_projectdialog_message=Choose a project to constrain the search for main types:
JUnitMainTab_tab_label=Test
-JUnitMainTab_label_defaultpackage=(default package)
-JUnitMainTab_label_method=Test method:
-JUnitMainTab_folderdialog_title=Folder Selection
-JUnitMainTab_folderdialog_message=Choose a Project, Source Folder or Package:
-JUnitMainTab_error_projectnotdefined=Project not specified
-JUnitMainTab_error_projectnotexists=Project does not exist
-JUnitMainTab_error_notJavaProject=Specified project is not a Java project
-JUnitMainTab_error_testnotdefined=Test not specified
-JUnitMainTab_error_testnotexists=Test class does not exist
-JUnitMainTab_error_invalidTest=Specified class is not a valid test class
-JUnitMainTab_error_noContainer=No project, source folder or package is specified
-TestSearchEngine_message_searching=Searching suites
-LaunchTestAction_dialog_title=Test::Unit Launch
-LaunchTestAction_message_notests=No Test::Unit tests found.
-LaunchTestAction_dialog_title2=Test Selection
-LaunchTestAction_message_selectTestToRun=Select Test to debug
-LaunchTestAction_message_selectTestToDebug=Select Test to run
-LaunchTestAction_message_launchFailed=JUnit Launch Failed
LaunchTestAction_message_selectConfiguration=Select a Test Configuration
LaunchTestAction_message_selectDebugConfiguration=Select JUnit configuration to debug
LaunchTestAction_message_selectRunConfiguration=Select JUnit configuration to run
-Resources_outOfSyncResources= Some resources are out of sync
-Resources_outOfSync= Resource ''{0}'' is out of sync with file system.
-Resources_modifiedResources= There are modified resources
-Resources_fileModified= File ''{0}'' has been modified since the beginning of the operation
-
CompareResultsAction_label=Compare Result
CompareResultsAction_description=Compare the actual and expected test result
CompareResultsAction_tooltip=Compare Actual With Expected Test Result
@@ -143,7 +109,6 @@
RerunAction_label_debug=&Debug
ScrollLockAction_action_label=Scroll Lock
-ScrollLockAction_action_description=Scroll lock
ScrollLockAction_action_tooltip=Scroll Lock
ExpandAllAction_text=Expand All
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-29 23:19:26
|
Revision: 2241
http://svn.sourceforge.net/rubyeclipse/?rev=2241&view=rev
Author: cawilliams
Date: 2007-03-29 16:19:25 -0700 (Thu, 29 Mar 2007)
Log Message:
-----------
ok new fix for Ticket #249 along with test case. also tweaked code to avoid false positive tests (which this particular case presented)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-29 16:08:20 UTC (rev 2240)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-29 23:19:25 UTC (rev 2241)
@@ -154,8 +154,7 @@
return lexerSource.getOffset() + origOffset;
}
- @Override
- public Token getToken(String key) {
+ private Token doGetToken(String key) {
if (key.equals(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT)) // if we know it's a comment, force it!
return super.getToken(key);
if (isInSymbol)
@@ -174,51 +173,51 @@
|| (i == Tokens.tPLUS) || (i == Tokens.tPIPE) || (i == Tokens.tCARET)
|| (i == Tokens.tLT) || (i == Tokens.tGT) || (i == Tokens.tAMPER)
|| (i == Tokens.tSTAR2) || (i == Tokens.tDIVIDE) || (i == Tokens.tPERCENT)
- || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE) || (i == 10) /* Newline */
- || ( i >= 257 && i <= 303) /* keywords */) {
+ || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE) || (i == Tokens.tCONSTANT)
+ || (i == 10) /* Newline */ || ( i >= 257 && i <= 303) /* keywords */) {
isInSymbol = false; // we're at the end of the symbol
if (i == 10) // newline ends it and is actually default, not symbol
- return getToken(IRubyColorConstants.RUBY_DEFAULT);
- return getToken(IRubyColorConstants.RUBY_SYMBOL);
+ return doGetToken(IRubyColorConstants.RUBY_DEFAULT);
+ return doGetToken(IRubyColorConstants.RUBY_SYMBOL);
}
if (i == Tokens.tASSOC || i == 44 /* ',' */) {
isInSymbol = false;
- return getToken(IRubyColorConstants.RUBY_DEFAULT);
+ return doGetToken(IRubyColorConstants.RUBY_DEFAULT);
}
}
if (i >= 257 && i <= 303)
- return getToken(IRubyColorConstants.RUBY_KEYWORD);
+ return doGetToken(IRubyColorConstants.RUBY_KEYWORD);
switch (i) {
case Tokens.tSYMBEG:
isInSymbol = true;
- return getToken(IRubyColorConstants.RUBY_SYMBOL);
+ return doGetToken(IRubyColorConstants.RUBY_SYMBOL);
case Tokens.tGVAR:
- return getToken(IRubyColorConstants.RUBY_GLOBAL);
+ return doGetToken(IRubyColorConstants.RUBY_GLOBAL);
case Tokens.tIVAR:
case Tokens.tCVAR: // FIXME Allow for unique coloring of class variables...
- return getToken(IRubyColorConstants.RUBY_INSTANCE_VARIABLE);
+ return doGetToken(IRubyColorConstants.RUBY_INSTANCE_VARIABLE);
case Tokens.tFLOAT:
case Tokens.tINTEGER:
// A character is marked as an integer, lets check for that special case...
if ((((oldOffset - origOffset) + 1) < contents.length()) && (contents.charAt((oldOffset - origOffset) + 1) == '?'))
- return getToken(IRubyColorConstants.RUBY_CHARACTER);
- return getToken(IRubyColorConstants.RUBY_FIXNUM);
+ return doGetToken(IRubyColorConstants.RUBY_CHARACTER);
+ return doGetToken(IRubyColorConstants.RUBY_FIXNUM);
case Tokens.tSTRING_CONTENT:
- return getToken(IRubyColorConstants.RUBY_STRING);
+ return doGetToken(IRubyColorConstants.RUBY_STRING);
case Tokens.tSTRING_BEG:
isInString = true;
- return getToken(IRubyColorConstants.RUBY_STRING);
+ return doGetToken(IRubyColorConstants.RUBY_STRING);
case Tokens.tSTRING_END:
isInString = false;
- return getToken(IRubyColorConstants.RUBY_STRING);
+ return doGetToken(IRubyColorConstants.RUBY_STRING);
case Tokens.tREGEXP_BEG:
isInRegexp = true;
- return getToken(IRubyColorConstants.RUBY_REGEXP);
+ return doGetToken(IRubyColorConstants.RUBY_REGEXP);
case Tokens.tREGEXP_END:
isInRegexp = false;
- return getToken(IRubyColorConstants.RUBY_REGEXP);
+ return doGetToken(IRubyColorConstants.RUBY_REGEXP);
default:
- return getToken(IRubyColorConstants.RUBY_DEFAULT);
+ return doGetToken(IRubyColorConstants.RUBY_DEFAULT);
}
}
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-29 16:08:20 UTC (rev 2240)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-29 23:19:25 UTC (rev 2241)
@@ -32,7 +32,7 @@
IToken token = fScanner.nextToken();
assertEquals("Offsets don't match", offset, fScanner.getTokenOffset());
assertEquals("Lengths don't match", length, fScanner.getTokenLength());
- assertEquals("Colors don't match", fScanner.getToken(color), token);
+ assertEquals("Colors don't match", fScanner.getToken(color), token); // call getToken so we bypass the scanner's overriding in doGetToken
}
public void testSimpleClassDefinition() {
@@ -146,6 +146,17 @@
assertToken(IRubyColorConstants.RUBY_KEYWORD, 70, 5); // ' self'
}
+ public void testSymbolInsideParentheses() {
+ String code = "Object.const_defined?(:RedCloth)";
+ setUpScanner(code);
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 0, 6); // 'Object'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 6, 1); // '.'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 7, 14); // 'const_define?'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 21, 1); // '('
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 22, 1); // ':'
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 23, 8); // 'RedCloth'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 31, 1); // ')'
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-29 16:08:23
|
Revision: 2240
http://svn.sourceforge.net/rubyeclipse/?rev=2240&view=rev
Author: cawilliams
Date: 2007-03-29 09:08:20 -0700 (Thu, 29 Mar 2007)
Log Message:
-----------
remove unused strings
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/RubyUIMessages.properties
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/RubyUIMessages.properties
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/RubyUIMessages.properties 2007-03-29 15:11:29 UTC (rev 2239)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/RubyUIMessages.properties 2007-03-29 16:08:20 UTC (rev 2240)
@@ -99,8 +99,4 @@
CoreUtility_buildall_taskname=Build all...
CoreUtility_buildproject_taskname=Build project ''{0}''...
-RubyElementLabels_default_package=(default)
-
-ContentAssistProposal.label=Co&ntent Assist
-ContentAssistProposal.tooltip=Content Assist
-ContentAssistProposal.description=Content Assist
\ No newline at end of file
+RubyElementLabels_default_package=(default)
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-29 15:12:37
|
Revision: 2239
http://svn.sourceforge.net/rubyeclipse/?rev=2239&view=rev
Author: cawilliams
Date: 2007-03-29 08:11:29 -0700 (Thu, 29 Mar 2007)
Log Message:
-----------
set Lexer's wanrings object to NullWarnings to avoid null pointer exceptions when the lexer wants to set a warning (even though we don't want to hear about it in syntax coloring).
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-29 14:59:01 UTC (rev 2238)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-29 15:11:29 UTC (rev 2239)
@@ -10,6 +10,7 @@
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.Token;
import org.jruby.ast.CommentNode;
+import org.jruby.common.NullWarnings;
import org.jruby.lexer.yacc.LexState;
import org.jruby.lexer.yacc.LexerSource;
import org.jruby.lexer.yacc.RubyYaccLexer;
@@ -62,6 +63,7 @@
result = new RubyParserResult();
parserSupport.setResult(result);
lexer.setParserSupport(parserSupport);
+ lexer.setWarnings(new NullWarnings());
initialize();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-29 14:59:03
|
Revision: 2238
http://svn.sourceforge.net/rubyeclipse/?rev=2238&view=rev
Author: cawilliams
Date: 2007-03-29 07:59:01 -0700 (Thu, 29 Mar 2007)
Log Message:
-----------
add test and fix for consecutive single line comments who had a lot of preceding spaces. The preceding whitespace wasn't take into account before, so the end of the comments would inherit the next token's coloring.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-28 20:45:47 UTC (rev 2237)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-29 14:59:01 UTC (rev 2238)
@@ -111,14 +111,16 @@
if (comments != null && !comments.isEmpty()) {
CommentNode comment;
boolean firstComment = true;
+ int endOffset = 0;
while (!comments.isEmpty()) {
comment = (CommentNode) comments.remove(0);
if (firstComment) {
firstComment = false;
oldOffset = origOffset + comment.getPosition().getStartOffset(); // correct start offset, since when a line with nothing but spaces on it appears before comment, we get messed up positions
}
- tokenLength += comment.getContent().length() + 1;
+ endOffset = origOffset + comment.getPosition().getEndOffset();
}
+ tokenLength = endOffset - oldOffset;
fSavedToken = returnValue;
fSavedOffset = oldOffset + tokenLength;
if (!isEOF) {
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-28 20:45:47 UTC (rev 2237)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-29 14:59:01 UTC (rev 2238)
@@ -47,21 +47,21 @@
public void testMultipleCommentsInARow() {
String code = "# comment one\n#comment two\nclass Chris\nend\n";
setUpScanner(code);
- assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 0, 27);
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 27, 5);
- assertToken(IRubyColorConstants.RUBY_DEFAULT, 32, 6);
- assertToken(IRubyColorConstants.RUBY_DEFAULT, 38, 1);
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 39, 3);
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 0, 26);
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 26, 6); // '\nclass'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 32, 6); // ' Chris'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 38, 1); // '\n'
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 39, 3); // 'end'
}
public void testCommentAfterEnd() {
String code = "class Chris\nend # comment\n";
setUpScanner(code);
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 0, 5);
- assertToken(IRubyColorConstants.RUBY_DEFAULT, 5, 6);
- assertToken(IRubyColorConstants.RUBY_DEFAULT, 11, 1);
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 12, 3);
- assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 16, 10);
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 0, 5); // 'class'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 5, 6); // ' Chris'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 11, 1); // '\n'
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 12, 3); // 'end'
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 16, 9); // '# comment'
}
public void testCommentAfterEndWhileEditing() {
@@ -75,8 +75,8 @@
" end #ocmm \r\n" +
"end";
setUpScanner(code, 75, 14);
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 75, 5);
- assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 82, 7);
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 75, 5); // ' end'
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 82, 5); // '#ocmm'
}
public void testCommentAtEndOfLineWithStringAtBeginning() {
@@ -97,7 +97,7 @@
assertToken(IRubyColorConstants.RUBY_DEFAULT, 19, 3);
assertToken(IRubyColorConstants.RUBY_DEFAULT, 22, 2);
- assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 25, 10);
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 25, 9);
}
public void testLinesWithJustSpaceBeforeComment() {
@@ -107,8 +107,8 @@
" \n" +
" end";
setUpScanner(code);
- assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 5, 10); // '# comment'
- assertToken(IRubyColorConstants.RUBY_KEYWORD, 15, 5); // ' def'
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 5, 9); // '# comment'
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 14, 6); // '\n def'
assertToken(IRubyColorConstants.RUBY_DEFAULT, 20, 7); // ' method'
}
@@ -128,7 +128,6 @@
public void testSymbolInsideBrackets() {
String code = "test[:begin]";
-// test[:end] && test[:def] && other_code";
setUpScanner(code);
assertToken(IRubyColorConstants.RUBY_DEFAULT, 0, 4); // 'test'
assertToken(IRubyColorConstants.RUBY_DEFAULT, 4, 1); // '['
@@ -137,4 +136,16 @@
assertToken(IRubyColorConstants.RUBY_DEFAULT, 11, 1); // ']'
}
+ public void testCommentsWithAlotOfPrecedingSpaces() {
+ String code = " # We \n" +
+ " # caller-requested until.\n" +
+ "return self\n";
+ setUpScanner(code);
+ assertToken(IRubyColorConstants.RUBY_SINGLE_LINE_COMMENT, 16, 47); //
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 63, 7); // 'return'
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 70, 5); // ' self'
+ }
+
+
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-28 20:45:49
|
Revision: 2237
http://svn.sourceforge.net/rubyeclipse/?rev=2237&view=rev
Author: cawilliams
Date: 2007-03-28 13:45:47 -0700 (Wed, 28 Mar 2007)
Log Message:
-----------
update cache to reflect that we now have source folder roots, which should get put into their own separate cache. Looks like this might solve our problems with the RubyModelCache growing continuously to eat up tons of memory.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyModelCache.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/buffer/LRUCache.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyModelCache.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyModelCache.java 2007-03-28 15:37:53 UTC (rev 2236)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyModelCache.java 2007-03-28 20:45:47 UTC (rev 2237)
@@ -37,6 +37,11 @@
* Cache of open source folders
*/
protected ElementCache folderCache;
+
+ /**
+ * Cache of open source folder roots.
+ */
+ protected ElementCache rootCache;
/**
* Cache of open ruby script files
@@ -49,6 +54,7 @@
protected Map childrenCache;
public static final int DEFAULT_PROJECT_SIZE = 5; // average 25552 bytes per project.
+ public static final int DEFAULT_ROOT_SIZE = 50; // average 2590 bytes per root -> maximum size : 25900*BASE_VALUE bytes
public static final int DEFAULT_FOLDER_SIZE = 500; // average 1782 bytes per pkg -> maximum size : 178200*BASE_VALUE bytes
public static final int DEFAULT_OPENABLE_SIZE = 500; // average 6629 bytes per openable (includes children) -> maximum size : 662900*BASE_VALUE bytes
public static final int DEFAULT_CHILDREN_SIZE = 500*20; // average 20 children per openable
@@ -61,6 +67,7 @@
public RubyModelCache() {
// set the size of the caches in function of the maximum amount of memory available
double ratio = getMemoryRatio();
+ this.rootCache = new ElementCache((int) (DEFAULT_ROOT_SIZE * ratio));
this.projectCache = new HashMap(DEFAULT_PROJECT_SIZE); // NB: Don't use a LRUCache for projects as they are constantly reopened (e.g. during delta processing)
this.openableCache = new ElementCache((int) (DEFAULT_OPENABLE_SIZE * ratio));
this.folderCache = new ElementCache((int) (DEFAULT_FOLDER_SIZE * ratio));
@@ -86,6 +93,8 @@
return this.modelInfo;
case IRubyElement.RUBY_PROJECT:
return this.projectCache.get(element);
+ case IRubyElement.SOURCE_FOLDER_ROOT:
+ return this.rootCache.get(element);
case IRubyElement.SOURCE_FOLDER:
return this.folderCache.get(element);
case IRubyElement.SCRIPT:
@@ -104,6 +113,8 @@
return this.modelInfo;
case IRubyElement.RUBY_PROJECT:
return this.projectCache.get(element);
+ case IRubyElement.SOURCE_FOLDER_ROOT:
+ return this.rootCache.peek(element);
case IRubyElement.SOURCE_FOLDER:
return this.folderCache.peek(element);
case IRubyElement.SCRIPT:
@@ -123,6 +134,10 @@
break;
case IRubyElement.RUBY_PROJECT:
this.projectCache.put(element, info);
+ this.rootCache.ensureSpaceLimit(((RubyElementInfo) info).children.length, element);
+ break;
+ case IRubyElement.SOURCE_FOLDER_ROOT:
+ this.rootCache.put(element, info);
this.folderCache.ensureSpaceLimit(((RubyElementInfo) info).children.length, element);
break;
case IRubyElement.SOURCE_FOLDER:
@@ -147,6 +162,10 @@
break;
case IRubyElement.RUBY_PROJECT:
this.projectCache.remove(element);
+ this.rootCache.resetSpaceLimit((int) (DEFAULT_ROOT_SIZE * getMemoryRatio()), element);
+ break;
+ case IRubyElement.SOURCE_FOLDER_ROOT:
+ this.rootCache.remove(element);
this.folderCache.resetSpaceLimit((int) (DEFAULT_FOLDER_SIZE * getMemoryRatio()), element);
break;
case IRubyElement.SOURCE_FOLDER:
@@ -168,6 +187,12 @@
buffer.append(this.projectCache.size());
buffer.append(" projects\n"); //$NON-NLS-1$
buffer.append(prefix);
+ buffer.append(this.rootCache.toStringFillingRation("Root cache")); //$NON-NLS-1$
+ buffer.append('\n');
+ buffer.append(prefix);
+ buffer.append(this.folderCache.toStringFillingRation("Folder cache")); //$NON-NLS-1$
+ buffer.append('\n');
+ buffer.append(prefix);
buffer.append("Openable cache: "); //$NON-NLS-1$
buffer.append(NumberFormat.getInstance().format(this.openableCache.fillingRatio()));
buffer.append("%\n"); //$NON-NLS-1$
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/buffer/LRUCache.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/buffer/LRUCache.java 2007-03-28 15:37:53 UTC (rev 2236)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/buffer/LRUCache.java 2007-03-28 20:45:47 UTC (rev 2237)
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.rubypeople.rdt.internal.core.buffer;
+import java.text.NumberFormat;
import java.util.Enumeration;
import java.util.Hashtable;
@@ -481,6 +482,21 @@
}
return result.toString();
}
+
+public String toStringFillingRation(String cacheName) {
+ StringBuffer buffer = new StringBuffer(cacheName);
+ buffer.append('[');
+ buffer.append(getSpaceLimit());
+ buffer.append("]: "); //$NON-NLS-1$
+ buffer.append(NumberFormat.getInstance().format(fillingRatio()));
+ buffer.append("% full"); //$NON-NLS-1$
+ return buffer.toString();
+}
+
+public double fillingRatio() {
+ return (fCurrentSpace) * 100.0 / fSpaceLimit;
+}
+
/**
* Updates the timestamp for the given entry, ensuring that the queue is
* kept in correct order. The entry must exist
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-28 15:38:55
|
Revision: 2236
http://svn.sourceforge.net/rubyeclipse/?rev=2236&view=rev
Author: cawilliams
Date: 2007-03-28 08:37:53 -0700 (Wed, 28 Mar 2007)
Log Message:
-----------
modify the existing Expermintenal Index to be a bit msarter. Before it ate up memeory like crazy saving every type constant and global (and probably all their children). Now it actually is more like a real search engine and create string index keys with very basic info. Then we retrieve the names and elements using those keys.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/ExperimentalIndex.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/HandleFactory.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java 2007-03-27 18:35:40 UTC (rev 2235)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java 2007-03-28 15:37:53 UTC (rev 2236)
@@ -133,7 +133,7 @@
}
private void suggestGlobals() {
- Set<String> globals = ExperimentalIndex.getGlobalNames();
+ Set<String> globals = ExperimentalIndex.getGlobalNames(fContext.getScript());
for (String name : globals) {
if (!fContext.prefixStartsWith(name))
continue;
@@ -143,7 +143,7 @@
}
private void suggestTypeNames() {
- Set<String> types = ExperimentalIndex.getTypeNames();
+ Set<String> types = ExperimentalIndex.getTypeNames(fContext.getScript());
for (String name : types) {
if (!fContext.prefixStartsWith(name))
continue;
@@ -160,7 +160,7 @@
}
private void suggestConstantNames() {
- Set<String> types = ExperimentalIndex.getConstantNames();
+ Set<String> types = ExperimentalIndex.getConstantNames(fContext.getScript());
for (String name : types) {
if (!fContext.prefixStartsWith(name))
continue;
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/ExperimentalIndex.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/ExperimentalIndex.java 2007-03-27 18:35:40 UTC (rev 2235)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/ExperimentalIndex.java 2007-03-28 15:37:53 UTC (rev 2236)
@@ -1,77 +1,98 @@
package org.rubypeople.rdt.internal.core.search;
-import java.util.Collections;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.rubypeople.rdt.core.ElementChangedEvent;
import org.rubypeople.rdt.core.IElementChangedListener;
-import org.rubypeople.rdt.core.IField;
import org.rubypeople.rdt.core.IParent;
import org.rubypeople.rdt.core.IRubyElement;
import org.rubypeople.rdt.core.IRubyElementDelta;
import org.rubypeople.rdt.core.IRubyModel;
+import org.rubypeople.rdt.core.IRubyProject;
+import org.rubypeople.rdt.core.IRubyScript;
+import org.rubypeople.rdt.core.ISourceFolderRoot;
import org.rubypeople.rdt.core.IType;
import org.rubypeople.rdt.core.RubyCore;
import org.rubypeople.rdt.core.RubyModelException;
+import org.rubypeople.rdt.internal.core.Openable;
import org.rubypeople.rdt.internal.core.RubyModelManager;
public class ExperimentalIndex implements IElementChangedListener {
-
+
private static ExperimentalIndex fgInstance;
- private static HashSet<IField> fgConstants;
- private static HashSet<IType> fgTypes;
- private static HashSet<IField> fgGlobals;
-
+ private static Map<IPath, SearchDocument> documents;
+ private static HandleFactory factory = new HandleFactory();
+
private ExperimentalIndex() {
- fgTypes = new HashSet<IType>();
- fgConstants = new HashSet<IField>();
- fgGlobals = new HashSet<IField>();
+ documents = new HashMap<IPath, SearchDocument>();
}
-
+
public void elementChanged(ElementChangedEvent event) {
processDelta(event.getDelta());
}
+
+ // FIXME We're ding poor man's scoping by passing in the script. We should actually create scope classes which could tell if a document fell in our out of it...
+ public static Set<String> getTypeNames(IRubyScript script) {
+ return getElementNames(IRubyElement.TYPE, script);
+ }
- public static Set<String> getTypeNames() {
- Set<IType> types = Collections.unmodifiableSet((HashSet<IType>)fgTypes.clone()); // clone to avoid concurrent modification when iterating
- Set<String> names = new HashSet<String>();
- for (IType type : types) {
- names.add(type.getElementName());
+ public static Set<String> getConstantNames(IRubyScript script) {
+ return getElementNames(IRubyElement.CONSTANT, script);
+ }
+
+ private static Set<String> getElementNames(int type, IRubyScript script) {
+ Set<String> names = new HashSet<String>();
+ Collection<SearchDocument> documents = getDocumentsInScope(script);
+ for (SearchDocument doc : documents) {
+ Set<String> elements = doc.getElementNamesOfType(type);
+ for (String element : elements) {
+ names.add(element);
+ }
}
return names;
}
-
- public static Set<String> getConstantNames() {
- Set<IField> types = Collections.unmodifiableSet((HashSet<IField>)fgConstants.clone()); // clone to avoid concurrent modification when iterating
- Set<String> names = new HashSet<String>();
- for (IField type : types) {
- names.add(type.getElementName());
+
+ private static Collection<SearchDocument> getDocumentsInScope(IRubyScript script) {
+ try {
+ Set<SearchDocument> matches = new HashSet<SearchDocument>();
+ IRubyProject project = script.getRubyProject();
+ ISourceFolderRoot[] roots = project.getSourceFolderRoots();
+ for (IPath path : documents.keySet()) {
+ // If path is in loadpath of script's project, add it
+ for (int i = 0; i < roots.length; i++) {
+ if (roots[i].getPath().isPrefixOf(path)) matches.add(documents.get(path));
+ }
+ }
+ return matches;
+ } catch (RubyModelException e) {
+ // ignore?
+ return documents.values();
}
- return names;
}
-
+
public static Set<IType> findType(String name) {
- Set<IType> types = Collections.unmodifiableSet((HashSet<IType>)fgTypes.clone()); // clone to avoid concurrent modification when iterating
- Set<IType> matches = new HashSet<IType>();
- for (IType type : types) {
- if (type.getElementName().equals(name))
- matches.add(type);
+ Set<IType> types = new HashSet<IType>();
+ for (SearchDocument doc : documents.values()) {
+ IType type = doc.findType(name);
+ if (type != null)
+ types.add(type);
}
- return matches;
+ return types;
}
-
- public static Set<String> getGlobalNames() {
- Set<IField> types = Collections.unmodifiableSet((HashSet<IField>)fgGlobals.clone()); // clone to avoid concurrent modification when iterating
- Set<String> names = new HashSet<String>();
- for (IField type : types) {
- names.add(type.getElementName());
- }
- return names;
+
+ public static Set<String> getGlobalNames(IRubyScript script) {
+ return getElementNames(IRubyElement.GLOBAL, script);
}
private void processDelta(IRubyElementDelta delta) {
@@ -84,7 +105,7 @@
this.processDelta(child);
}
break;
- case IRubyElementDelta.REMOVED:
+ case IRubyElementDelta.REMOVED:
removeElement(element);
break;
case IRubyElementDelta.ADDED:
@@ -94,31 +115,31 @@
}
void removeElement(IRubyElement element) {
- switch (element.getElementType()) {
- case IRubyElement.TYPE:
- fgTypes.remove(element);
- break;
- case IRubyElement.CONSTANT:
- fgConstants.remove(element);
- break;
- case IRubyElement.GLOBAL:
- fgGlobals.remove(element);
- break;
- }
+ if ((element.isType(IRubyElement.RUBY_MODEL)) ||
+ (element.isType(IRubyElement.RUBY_PROJECT)) ||
+ (element.isType(IRubyElement.SCRIPT)) ||
+ (element.isType(IRubyElement.SOURCE_FOLDER_ROOT)) ||
+ (element.isType(IRubyElement.SOURCE_FOLDER))) return;
+ SearchDocument doc = documents.get(element.getPath());
+ if (doc == null)
+ return;
+ doc.removeElement(element);
+ if (doc.isEmpty())
+ documents.remove(element.getPath());
}
void addElement(IRubyElement element) {
- switch (element.getElementType()) {
- case IRubyElement.TYPE:
- fgTypes.add((IType)element);
- break;
- case IRubyElement.CONSTANT:
- fgConstants.add((IField)element);
- break;
- case IRubyElement.GLOBAL:
- fgGlobals.add((IField)element);
- break;
+ if ((element.isType(IRubyElement.RUBY_MODEL)) ||
+ (element.isType(IRubyElement.RUBY_PROJECT)) ||
+ (element.isType(IRubyElement.SCRIPT)) ||
+ (element.isType(IRubyElement.SOURCE_FOLDER_ROOT)) ||
+ (element.isType(IRubyElement.SOURCE_FOLDER))) return;
+ SearchDocument doc = documents.get(element.getPath());
+ if (doc == null) {
+ doc = new SearchDocument(element.getPath());
+ documents.put(element.getPath(), doc);
}
+ doc.addElement(element);
}
public static ExperimentalIndex instance() {
@@ -130,9 +151,9 @@
public static void start() {
Job job = new ExperimentalIndexJob(instance());
- job.schedule();
+ job.schedule();
}
-
+
private static class ExperimentalIndexJob extends Job {
private ExperimentalIndex index;
@@ -143,11 +164,12 @@
@Override
protected IStatus run(IProgressMonitor monitor) {
- // TODO Load up saved data if there is any, rather than starting over
+ // TODO Load up saved data if there is any, rather than starting
+ // over
// TODO Clear saved state if user cleans a project
// TODO Save state after a run
IRubyModel model = RubyModelManager.getRubyModelManager().getRubyModel();
- addChildren(model);
+ addChildren(model);
return Status.OK_STATUS;
}
@@ -163,8 +185,110 @@
}
} catch (RubyModelException e) {
RubyCore.log(e);
- }
+ }
}
-
+
}
+
+ private class SearchDocument {
+ private static final String SEPARATOR = "/";
+ private List<String> indices = new ArrayList<String>();
+ private IPath path;
+ private IRubyScript script;
+
+ SearchDocument(IPath path) {
+ this.path = path;
+ }
+
+ public Set<String> getElementNamesOfType(int type) {
+ Set<String> names = new HashSet<String>();
+ for (String indexKey : indices) {
+ if (getTypeFromKey(indexKey) != type) continue;
+ names.add(getNameFromKey(indexKey));
+ }
+ return names;
+ }
+
+ public List<IRubyElement> getElementsOfType(int type) {
+ IRubyScript script = getScript();
+ return getChildrenOfType(script, type);
+ }
+
+ private IRubyScript getScript() {
+ if (this.script == null) {
+ Openable openable = factory.createOpenable(path.toString());
+ this.script = (IRubyScript) openable;
+ }
+ return this.script;
+ }
+
+ private List<IRubyElement> getChildrenOfType(IParent parent, int type) {
+ List<IRubyElement> elements = new ArrayList<IRubyElement>();
+ if (parent == null) return elements;
+ try {
+ IRubyElement[] children = parent.getChildren();
+ if (children == null)
+ return elements;
+ for (int i = 0; i < children.length; i++) {
+ if (children[i].isType(type))
+ elements.add(children[i]);
+ if (children[i] instanceof IParent) {
+ IParent childParent = (IParent) children[i];
+ elements.addAll(getChildrenOfType(childParent, type));
+ }
+ }
+ } catch (RubyModelException e) {
+ // ignore
+ }
+ return elements;
+ }
+
+ public boolean isEmpty() {
+ return indices.isEmpty();
+ }
+
+ public void removeElement(IRubyElement element) {
+ indices.remove(createKey(element));
+ }
+
+ private String createKey(IRubyElement element) {
+ return createKey(element.getElementType(), element.getElementName());
+ }
+
+ private String createKey(int type, String name) {
+ return type + SEPARATOR + name;
+ }
+
+ public void addElement(IRubyElement element) {
+ indices.add(createKey(element));
+ }
+
+ public IType findType(String name) {
+ return (IType) findElement(createKey(IRubyElement.TYPE, name));
+ }
+
+ private IRubyElement findElement(String key) {
+ for (String indexKey : indices) {
+ if (!indexKey.equals(key))
+ continue;
+ IRubyScript script = getScript();
+ List<IRubyElement> children = getChildrenOfType(script, getTypeFromKey(key));
+ for (IRubyElement element : children) {
+ if (element.getElementName().equals(getNameFromKey(key)))
+ return element;
+ }
+ }
+ return null;
+ }
+
+ private String getNameFromKey(String key) {
+ String[] parts = key.split(SEPARATOR);
+ return parts[1];
+ }
+
+ private int getTypeFromKey(String key) {
+ String[] parts = key.split(SEPARATOR);
+ return Integer.parseInt(parts[0]);
+ }
+ }
}
Added: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/HandleFactory.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/HandleFactory.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/search/HandleFactory.java 2007-03-28 15:37:53 UTC (rev 2236)
@@ -0,0 +1,109 @@
+package org.rubypeople.rdt.internal.core.search;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.rubypeople.rdt.core.IRubyProject;
+import org.rubypeople.rdt.core.IRubyScript;
+import org.rubypeople.rdt.core.ISourceFolder;
+import org.rubypeople.rdt.core.ISourceFolderRoot;
+import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.internal.core.Openable;
+import org.rubypeople.rdt.internal.core.RubyModel;
+import org.rubypeople.rdt.internal.core.RubyModelManager;
+import org.rubypeople.rdt.internal.core.SourceFolderRoot;
+import org.rubypeople.rdt.internal.core.util.CharOperation;
+import org.rubypeople.rdt.internal.core.util.HashtableOfArrayToObject;
+import org.rubypeople.rdt.internal.core.util.Util;
+
+public class HandleFactory {
+
+ /**
+ * Cache package fragment root information to optimize speed performance.
+ */
+ private String lastSrcFolderRootPath;
+ private ISourceFolderRoot lastSrcFolderRoot;
+
+ /**
+ * Cache package handles to optimize memory.
+ */
+ private HashtableOfArrayToObject folderHandles;
+
+ private RubyModel rubyModel;
+
+ public HandleFactory() {
+ this.rubyModel = RubyModelManager.getRubyModelManager().getRubyModel();
+ }
+
+ /**
+ * Returns the source folder root that contains the given resource path.
+ */
+ private ISourceFolderRoot getSourceFolderRoot(String pathString) {
+
+ IPath path = new Path(pathString);
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ for (int i = 0, max = projects.length; i < max; i++) {
+ try {
+ IProject project = projects[i];
+ if (!project.isAccessible() || !project.hasNature(RubyCore.NATURE_ID))
+ continue;
+ IRubyProject rubyProject = this.rubyModel.getRubyProject(project);
+ ISourceFolderRoot[] roots = rubyProject.getSourceFolderRoots();
+ for (int j = 0, rootCount = roots.length; j < rootCount; j++) {
+ SourceFolderRoot root = (SourceFolderRoot) roots[j];
+ if (root.getPath().isPrefixOf(path) && !Util.isExcluded(path, root.fullInclusionPatternChars(), root.fullExclusionPatternChars(), false)) {
+ return root;
+ }
+ }
+ } catch (CoreException e) {
+ // CoreException from hasNature - should not happen since we
+ // check that the project is accessible
+ // RubyModelException from getPackageFragmentRoots - a problem
+ // occured while accessing project: nothing we can do, ignore
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Creates an Openable handle from the given resource path. The resource
+ * path can be a path to a file in the workbench.
+ */
+ public Openable createOpenable(String resourcePath) {
+ // path to a file in a directory
+ // Optimization: cache source folder root handle and package handles
+ int rootPathLength = -1;
+ if (this.lastSrcFolderRootPath == null || !(resourcePath.startsWith(this.lastSrcFolderRootPath) && (rootPathLength = this.lastSrcFolderRootPath.length()) > 0 && resourcePath.charAt(rootPathLength) == '/')) {
+ ISourceFolderRoot root = this.getSourceFolderRoot(resourcePath);
+ if (root == null)
+ return null; // match is outside loadpath
+ this.lastSrcFolderRoot = root;
+ this.lastSrcFolderRootPath = this.lastSrcFolderRoot.getPath().toString();
+ this.folderHandles = new HashtableOfArrayToObject(5);
+ }
+ // create handle
+ resourcePath = resourcePath.substring(this.lastSrcFolderRootPath.length() + 1);
+ String[] simpleNames = new Path(resourcePath).segments();
+ String[] pkgName;
+ int length = simpleNames.length - 1;
+ if (length > 0) {
+ pkgName = new String[length];
+ System.arraycopy(simpleNames, 0, pkgName, 0, length);
+ } else {
+ pkgName = CharOperation.NO_STRINGS;
+ }
+ ISourceFolder pkgFragment = (ISourceFolder) this.folderHandles.get(pkgName);
+ if (pkgFragment == null) {
+ pkgFragment = ((SourceFolderRoot) this.lastSrcFolderRoot).getSourceFolder(pkgName);
+ this.folderHandles.put(pkgName, pkgFragment);
+ }
+ String simpleName = simpleNames[length];
+ if (org.rubypeople.rdt.internal.core.util.Util.isRubyLikeFileName(simpleName)) {
+ IRubyScript unit = pkgFragment.getRubyScript(simpleName);
+ return (Openable) unit;
+ }
+ return null;
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-27 19:52:47
|
Revision: 2234
http://svn.sourceforge.net/rubyeclipse/?rev=2234&view=rev
Author: cawilliams
Date: 2007-03-27 11:28:25 -0700 (Tue, 27 Mar 2007)
Log Message:
-----------
add test and fix for Ticket #249 - (Symbol syntax highlighting isn't terminated when inside square brackets)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-27 15:28:03 UTC (rev 2233)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-27 18:28:25 UTC (rev 2234)
@@ -170,9 +170,10 @@
|| (i == Tokens.tPLUS) || (i == Tokens.tPIPE) || (i == Tokens.tCARET)
|| (i == Tokens.tLT) || (i == Tokens.tGT) || (i == Tokens.tAMPER)
|| (i == Tokens.tSTAR2) || (i == Tokens.tDIVIDE) || (i == Tokens.tPERCENT)
- || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE) || (i == 10) /* Newline? */) {
- isInSymbol = false;
- if (i == 10)
+ || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE) || (i == 10) /* Newline */
+ || ( i >= 257 && i <= 303) /* keywords */) {
+ isInSymbol = false; // we're at the end of the symbol
+ if (i == 10) // newline ends it and is actually default, not symbol
return getToken(IRubyColorConstants.RUBY_DEFAULT);
return getToken(IRubyColorConstants.RUBY_SYMBOL);
}
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-27 15:28:03 UTC (rev 2233)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-27 18:28:25 UTC (rev 2234)
@@ -121,8 +121,20 @@
assertToken(IRubyColorConstants.RUBY_DEFAULT, 0, 15); // ' helper_method'
assertToken(IRubyColorConstants.RUBY_SYMBOL, 15, 2); // ' :'
assertToken(IRubyColorConstants.RUBY_SYMBOL, 17, 10); // 'logged_in?'
- assertToken(IRubyColorConstants.RUBY_SYMBOL, 27, 1); // '\n'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 27, 1); // '\n'
assertToken(IRubyColorConstants.RUBY_KEYWORD, 28, 5); // ' def'
assertToken(IRubyColorConstants.RUBY_DEFAULT, 33, 7); // ' method'
+ }
+
+ public void testSymbolInsideBrackets() {
+ String code = "test[:begin]";
+// test[:end] && test[:def] && other_code";
+ setUpScanner(code);
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 0, 4); // 'test'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 4, 1); // '['
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 5, 1); // ' :'
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 6, 5); // 'begin'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 11, 1); // ']'
}
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-27 18:35:47
|
Revision: 2235
http://svn.sourceforge.net/rubyeclipse/?rev=2235&view=rev
Author: cawilliams
Date: 2007-03-27 11:35:40 -0700 (Tue, 27 Mar 2007)
Log Message:
-----------
apply fix for Tocket #252 - Test::Unit launches failing. This happened when you created a new Test::Unit launch config from scratch (i.e. in the run menu dialog), but not when you right clicked on a file and selected Run as.. Test::Unit.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/testunit/launcher/TestUnitMainTab.java
Modified: trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/testunit/launcher/TestUnitMainTab.java
===================================================================
--- trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/testunit/launcher/TestUnitMainTab.java 2007-03-27 18:28:25 UTC (rev 2234)
+++ trunk/org.rubypeople.rdt.testunit/src/org/rubypeople/rdt/testunit/launcher/TestUnitMainTab.java 2007-03-27 18:35:40 UTC (rev 2235)
@@ -214,6 +214,7 @@
configuration.setAttribute(TestUnitLaunchConfigurationDelegate.LAUNCH_CONTAINER_ATTR, fileName);
configuration.setAttribute(TestUnitLaunchConfigurationDelegate.TESTTYPE_ATTR, type);
configuration.setAttribute(TestUnitLaunchConfigurationDelegate.TESTNAME_ATTR, "");
+ configuration.setAttribute(IRubyLaunchConfigurationConstants.ATTR_FILE_NAME, TestUnitLaunchConfigurationDelegate.getTestRunnerPath());
// set hidden attribute
configuration.setAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID, "org.rubypeople.rdt.debug.ui.rubySourceLocator");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-27 15:28:06
|
Revision: 2233
http://svn.sourceforge.net/rubyeclipse/?rev=2233&view=rev
Author: cawilliams
Date: 2007-03-27 08:28:03 -0700 (Tue, 27 Mar 2007)
Log Message:
-----------
add test and fixe for symbols at the end of lines, also for when a single line is sent to scanner that has symbol at end.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-26 20:11:08 UTC (rev 2232)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyTokenScanner.java 2007-03-27 15:28:03 UTC (rev 2233)
@@ -170,8 +170,10 @@
|| (i == Tokens.tPLUS) || (i == Tokens.tPIPE) || (i == Tokens.tCARET)
|| (i == Tokens.tLT) || (i == Tokens.tGT) || (i == Tokens.tAMPER)
|| (i == Tokens.tSTAR2) || (i == Tokens.tDIVIDE) || (i == Tokens.tPERCENT)
- || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE)) {
+ || (i == Tokens.tBACK_REF2) || (i == Tokens.tTILDE) || (i == 10) /* Newline? */) {
isInSymbol = false;
+ if (i == 10)
+ return getToken(IRubyColorConstants.RUBY_DEFAULT);
return getToken(IRubyColorConstants.RUBY_SYMBOL);
}
if (i == Tokens.tASSOC || i == 44 /* ',' */) {
@@ -223,10 +225,10 @@
fSavedLength = -1;
fSavedToken = null;
fSavedOffset = -1;
+ isInSymbol = false;
if (offset == 0) {
isInRegexp = false;
isInString = false;
- isInSymbol = false;
}
try {
contents = document.get(offset, length);
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-26 20:11:08 UTC (rev 2232)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/ruby/TC_RubyTokenScanner.java 2007-03-27 15:28:03 UTC (rev 2233)
@@ -112,4 +112,17 @@
assertToken(IRubyColorConstants.RUBY_DEFAULT, 20, 7); // ' method'
}
+ public void testSymbolAtEndOfLine() {
+ String code = " helper_method :logged_in?\n" +
+ " def method\n" +
+ " \n" +
+ " end";
+ setUpScanner(code);
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 0, 15); // ' helper_method'
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 15, 2); // ' :'
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 17, 10); // 'logged_in?'
+ assertToken(IRubyColorConstants.RUBY_SYMBOL, 27, 1); // '\n'
+ assertToken(IRubyColorConstants.RUBY_KEYWORD, 28, 5); // ' def'
+ assertToken(IRubyColorConstants.RUBY_DEFAULT, 33, 7); // ' method'
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 20:11:11
|
Revision: 2232
http://svn.sourceforge.net/rubyeclipse/?rev=2232&view=rev
Author: cawilliams
Date: 2007-03-26 13:11:08 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScript.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScript.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScript.java 2007-03-26 19:41:19 UTC (rev 2231)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScript.java 2007-03-26 20:11:08 UTC (rev 2232)
@@ -154,8 +154,6 @@
// compute other problems if needed
if (computeProblems) {
- perWorkingCopyInfo.beginReporting();
- RubyScriptProblemFinder.process(this, contents, problems, pm);
if (problems == null) {
// report problems to the problem requestor
problems = new HashMap();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 19:41:21
|
Revision: 2231
http://svn.sourceforge.net/rubyeclipse/?rev=2231&view=rev
Author: cawilliams
Date: 2007-03-26 12:41:19 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Added Paths:
-----------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfIntValues.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfObject.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleLookupTable.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleSet.java
Added: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfIntValues.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfIntValues.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfIntValues.java 2007-03-26 19:41:19 UTC (rev 2231)
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.compiler.util;
+
+import org.rubypeople.rdt.internal.core.util.CharOperation;
+
+/**
+ * Hashtable of {char[] --> int}
+ */
+public final class HashtableOfIntValues implements Cloneable {
+
+ public static final int NO_VALUE = Integer.MIN_VALUE;
+
+ // to avoid using Enumerations, walk the individual tables skipping nulls
+ public char[] keyTable[];
+ public int valueTable[];
+
+ public int elementSize; // number of elements in the table
+ int threshold;
+
+ public HashtableOfIntValues() {
+ this(13);
+ }
+
+ public HashtableOfIntValues(int size) {
+
+ this.elementSize = 0;
+ this.threshold = size; // size represents the expected number of elements
+ int extraRoom = (int) (size * 1.75f);
+ if (this.threshold == extraRoom)
+ extraRoom++;
+ this.keyTable = new char[extraRoom][];
+ this.valueTable = new int[extraRoom];
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ HashtableOfIntValues result = (HashtableOfIntValues) super.clone();
+ result.elementSize = this.elementSize;
+ result.threshold = this.threshold;
+
+ int length = this.keyTable.length;
+ result.keyTable = new char[length][];
+ System.arraycopy(this.keyTable, 0, result.keyTable, 0, length);
+
+ length = this.valueTable.length;
+ result.valueTable = new int[length];
+ System.arraycopy(this.valueTable, 0, result.valueTable, 0, length);
+ return result;
+ }
+
+ public boolean containsKey(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return true;
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return false;
+ }
+
+ public int get(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return valueTable[index];
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return NO_VALUE;
+ }
+
+ public int put(char[] key, int value) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return valueTable[index] = value;
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ keyTable[index] = key;
+ valueTable[index] = value;
+
+ // assumes the threshold is never equal to the size of the table
+ if (++elementSize > threshold)
+ rehash();
+ return value;
+ }
+
+ public int removeKey(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key)) {
+ int value = valueTable[index];
+ elementSize--;
+ keyTable[index] = null;
+ valueTable[index] = NO_VALUE;
+ rehash();
+ return value;
+ }
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return NO_VALUE;
+ }
+
+ private void rehash() {
+
+ HashtableOfIntValues newHashtable = new HashtableOfIntValues(elementSize * 2); // double the number of expected elements
+ char[] currentKey;
+ for (int i = keyTable.length; --i >= 0;)
+ if ((currentKey = keyTable[i]) != null)
+ newHashtable.put(currentKey, valueTable[i]);
+
+ this.keyTable = newHashtable.keyTable;
+ this.valueTable = newHashtable.valueTable;
+ this.threshold = newHashtable.threshold;
+ }
+
+ public int size() {
+ return elementSize;
+ }
+
+ public String toString() {
+ String s = ""; //$NON-NLS-1$
+ char[] key;
+ for (int i = 0, length = valueTable.length; i < length; i++)
+ if ((key = keyTable[i]) != null)
+ s += new String(key) + " -> " + valueTable[i] + "\n"; //$NON-NLS-2$ //$NON-NLS-1$
+ return s;
+ }
+}
Added: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfObject.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfObject.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/HashtableOfObject.java 2007-03-26 19:41:19 UTC (rev 2231)
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.compiler.util;
+
+import org.rubypeople.rdt.internal.core.util.CharOperation;
+
+/**
+ * Hashtable of {char[] --> Object }
+ */
+public final class HashtableOfObject implements Cloneable {
+
+ // to avoid using Enumerations, walk the individual tables skipping nulls
+ public char[] keyTable[];
+ public Object valueTable[];
+
+ public int elementSize; // number of elements in the table
+ int threshold;
+
+ public HashtableOfObject() {
+ this(13);
+ }
+
+ public HashtableOfObject(int size) {
+
+ this.elementSize = 0;
+ this.threshold = size; // size represents the expected number of elements
+ int extraRoom = (int) (size * 1.75f);
+ if (this.threshold == extraRoom)
+ extraRoom++;
+ this.keyTable = new char[extraRoom][];
+ this.valueTable = new Object[extraRoom];
+ }
+
+ public void clear() {
+ for (int i = this.keyTable.length; --i >= 0;) {
+ this.keyTable[i] = null;
+ this.valueTable[i] = null;
+ }
+ this.elementSize = 0;
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ HashtableOfObject result = (HashtableOfObject) super.clone();
+ result.elementSize = this.elementSize;
+ result.threshold = this.threshold;
+
+ int length = this.keyTable.length;
+ result.keyTable = new char[length][];
+ System.arraycopy(this.keyTable, 0, result.keyTable, 0, length);
+
+ length = this.valueTable.length;
+ result.valueTable = new Object[length];
+ System.arraycopy(this.valueTable, 0, result.valueTable, 0, length);
+ return result;
+ }
+
+ public boolean containsKey(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return true;
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return false;
+ }
+
+ public Object get(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return valueTable[index];
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return null;
+ }
+
+ public Object put(char[] key, Object value) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+ return valueTable[index] = value;
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ keyTable[index] = key;
+ valueTable[index] = value;
+
+ // assumes the threshold is never equal to the size of the table
+ if (++elementSize > threshold)
+ rehash();
+ return value;
+ }
+
+ public Object removeKey(char[] key) {
+ int length = keyTable.length,
+ index = CharOperation.hashCode(key) % length;
+ int keyLength = key.length;
+ char[] currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.length == keyLength && CharOperation.equals(currentKey, key)) {
+ Object value = valueTable[index];
+ elementSize--;
+ keyTable[index] = null;
+ valueTable[index] = null;
+ rehash();
+ return value;
+ }
+ if (++index == length) {
+ index = 0;
+ }
+ }
+ return null;
+ }
+
+ private void rehash() {
+
+ HashtableOfObject newHashtable = new HashtableOfObject(elementSize * 2); // double the number of expected elements
+ char[] currentKey;
+ for (int i = keyTable.length; --i >= 0;)
+ if ((currentKey = keyTable[i]) != null)
+ newHashtable.put(currentKey, valueTable[i]);
+
+ this.keyTable = newHashtable.keyTable;
+ this.valueTable = newHashtable.valueTable;
+ this.threshold = newHashtable.threshold;
+ }
+
+ public int size() {
+ return elementSize;
+ }
+
+ public String toString() {
+ String s = ""; //$NON-NLS-1$
+ Object object;
+ for (int i = 0, length = valueTable.length; i < length; i++)
+ if ((object = valueTable[i]) != null)
+ s += new String(keyTable[i]) + " -> " + object.toString() + "\n"; //$NON-NLS-2$ //$NON-NLS-1$
+ return s;
+ }
+}
Added: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleLookupTable.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleLookupTable.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleLookupTable.java 2007-03-26 19:41:19 UTC (rev 2231)
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.compiler.util;
+
+/**
+ * A simple lookup table is a non-synchronized Hashtable, whose keys
+ * and values are Objects. It also uses linear probing to resolve collisions
+ * rather than a linked list of hash table entries.
+ */
+public final class SimpleLookupTable implements Cloneable {
+
+// to avoid using Enumerations, walk the individual tables skipping nulls
+public Object[] keyTable;
+public Object[] valueTable;
+public int elementSize; // number of elements in the table
+public int threshold;
+
+public SimpleLookupTable() {
+ this(13);
+}
+
+public SimpleLookupTable(int size) {
+ this.elementSize = 0;
+ this.threshold = size; // size represents the expected number of elements
+ int extraRoom = (int) (size * 1.5f);
+ if (this.threshold == extraRoom)
+ extraRoom++;
+ this.keyTable = new Object[extraRoom];
+ this.valueTable = new Object[extraRoom];
+}
+
+public Object clone() throws CloneNotSupportedException {
+ SimpleLookupTable result = (SimpleLookupTable) super.clone();
+ result.elementSize = this.elementSize;
+ result.threshold = this.threshold;
+
+ int length = this.keyTable.length;
+ result.keyTable = new Object[length];
+ System.arraycopy(this.keyTable, 0, result.keyTable, 0, length);
+
+ length = this.valueTable.length;
+ result.valueTable = new Object[length];
+ System.arraycopy(this.valueTable, 0, result.valueTable, 0, length);
+ return result;
+}
+
+public boolean containsKey(Object key) {
+ int length = keyTable.length;
+ int index = (key.hashCode() & 0x7FFFFFFF) % length;
+ Object currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.equals(key)) return true;
+ if (++index == length) index = 0;
+ }
+ return false;
+}
+
+public Object get(Object key) {
+ int length = keyTable.length;
+ int index = (key.hashCode() & 0x7FFFFFFF) % length;
+ Object currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.equals(key)) return valueTable[index];
+ if (++index == length) index = 0;
+ }
+ return null;
+}
+
+public Object keyForValue(Object valueToMatch) {
+ if (valueToMatch != null)
+ for (int i = 0, l = keyTable.length; i < l; i++)
+ if (keyTable[i] != null && valueToMatch.equals(valueTable[i]))
+ return keyTable[i];
+ return null;
+}
+
+public Object put(Object key, Object value) {
+ int length = keyTable.length;
+ int index = (key.hashCode() & 0x7FFFFFFF) % length;
+ Object currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.equals(key)) return valueTable[index] = value;
+ if (++index == length) index = 0;
+ }
+ keyTable[index] = key;
+ valueTable[index] = value;
+
+ // assumes the threshold is never equal to the size of the table
+ if (++elementSize > threshold) rehash();
+ return value;
+}
+
+public Object removeKey(Object key) {
+ int length = keyTable.length;
+ int index = (key.hashCode() & 0x7FFFFFFF) % length;
+ Object currentKey;
+ while ((currentKey = keyTable[index]) != null) {
+ if (currentKey.equals(key)) {
+ elementSize--;
+ Object oldValue = valueTable[index];
+ keyTable[index] = null;
+ valueTable[index] = null;
+ if (keyTable[index + 1 == length ? 0 : index + 1] != null)
+ rehash(); // only needed if a possible collision existed
+ return oldValue;
+ }
+ if (++index == length) index = 0;
+ }
+ return null;
+}
+
+public void removeValue(Object valueToRemove) {
+ boolean rehash = false;
+ for (int i = 0, l = valueTable.length; i < l; i++) {
+ Object value = valueTable[i];
+ if (value != null && value.equals(valueToRemove)) {
+ elementSize--;
+ keyTable[i] = null;
+ valueTable[i] = null;
+ if (!rehash && keyTable[i + 1 == l ? 0 : i + 1] != null)
+ rehash = true; // only needed if a possible collision existed
+ }
+ }
+ if (rehash) rehash();
+}
+
+private void rehash() {
+ SimpleLookupTable newLookupTable = new SimpleLookupTable(elementSize * 2); // double the number of expected elements
+ Object currentKey;
+ for (int i = keyTable.length; --i >= 0;)
+ if ((currentKey = keyTable[i]) != null)
+ newLookupTable.put(currentKey, valueTable[i]);
+
+ this.keyTable = newLookupTable.keyTable;
+ this.valueTable = newLookupTable.valueTable;
+ this.elementSize = newLookupTable.elementSize;
+ this.threshold = newLookupTable.threshold;
+}
+
+public String toString() {
+ String s = ""; //$NON-NLS-1$
+ Object object;
+ for (int i = 0, l = valueTable.length; i < l; i++)
+ if ((object = valueTable[i]) != null)
+ s += keyTable[i].toString() + " -> " + object.toString() + "\n"; //$NON-NLS-2$ //$NON-NLS-1$
+ return s;
+}
+}
Added: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleSet.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleSet.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/util/SimpleSet.java 2007-03-26 19:41:19 UTC (rev 2231)
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.compiler.util;
+
+/**
+ * A simple lookup table is a non-synchronized Hashtable, whose keys
+ * and values are Objects. It also uses linear probing to resolve collisions
+ * rather than a linked list of hash table entries.
+ */
+public final class SimpleSet implements Cloneable {
+
+// to avoid using Enumerations, walk the individual values skipping nulls
+public Object[] values;
+public int elementSize; // number of elements in the table
+public int threshold;
+
+public SimpleSet() {
+ this(13);
+}
+
+public SimpleSet(int size) {
+ if (size < 3) size = 3;
+ this.elementSize = 0;
+ this.threshold = size + 1; // size is the expected number of elements
+ this.values = new Object[2 * size + 1];
+}
+
+public Object add(Object object) {
+ int length = this.values.length;
+ int index = (object.hashCode() & 0x7FFFFFFF) % length;
+ Object current;
+ while ((current = this.values[index]) != null) {
+ if (current.equals(object)) return this.values[index] = object;
+ if (++index == length) index = 0;
+ }
+ this.values[index] = object;
+
+ // assumes the threshold is never equal to the size of the table
+ if (++this.elementSize > this.threshold) rehash();
+ return object;
+}
+
+public void asArray(Object[] copy) {
+ if (this.elementSize != copy.length)
+ throw new IllegalArgumentException();
+ int index = this.elementSize;
+ for (int i = 0, l = this.values.length; i < l && index > 0; i++)
+ if (this.values[i] != null)
+ copy[--index] = this.values[i];
+}
+
+public void clear() {
+ for (int i = this.values.length; --i >= 0;)
+ this.values[i] = null;
+ this.elementSize = 0;
+}
+
+public Object clone() throws CloneNotSupportedException {
+ SimpleSet result = (SimpleSet) super.clone();
+ result.elementSize = this.elementSize;
+ result.threshold = this.threshold;
+
+ int length = this.values.length;
+ result.values = new Object[length];
+ System.arraycopy(this.values, 0, result.values, 0, length);
+ return result;
+}
+
+public boolean includes(Object object) {
+ int length = values.length;
+ int index = (object.hashCode() & 0x7FFFFFFF) % length;
+ Object current;
+ while ((current = values[index]) != null) {
+ if (current.equals(object)) return true;
+ if (++index == length) index = 0;
+ }
+ return false;
+}
+
+public Object remove(Object object) {
+ int length = values.length;
+ int index = (object.hashCode() & 0x7FFFFFFF) % length;
+ Object current;
+ while ((current = values[index]) != null) {
+ if (current.equals(object)) {
+ elementSize--;
+ Object oldValue = values[index];
+ values[index] = null;
+ if (values[index + 1 == length ? 0 : index + 1] != null)
+ rehash(); // only needed if a possible collision existed
+ return oldValue;
+ }
+ if (++index == length) index = 0;
+ }
+ return null;
+}
+
+private void rehash() {
+ SimpleSet newSet = new SimpleSet(elementSize * 2); // double the number of expected elements
+ Object current;
+ for (int i = values.length; --i >= 0;)
+ if ((current = values[i]) != null)
+ newSet.add(current);
+
+ this.values = newSet.values;
+ this.elementSize = newSet.elementSize;
+ this.threshold = newSet.threshold;
+}
+
+public String toString() {
+ String s = ""; //$NON-NLS-1$
+ Object object;
+ for (int i = 0, l = values.length; i < l; i++)
+ if ((object = values[i]) != null)
+ s += object.toString() + "\n"; //$NON-NLS-1$
+ return s;
+}
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 17:33:03
|
Revision: 2230
http://svn.sourceforge.net/rubyeclipse/?rev=2230&view=rev
Author: cawilliams
Date: 2007-03-26 10:33:01 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyDocumentProvider.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java 2007-03-26 15:28:48 UTC (rev 2229)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java 2007-03-26 17:33:01 UTC (rev 2230)
@@ -16,11 +16,11 @@
import org.rubypeople.rdt.core.RubyCore;
import org.rubypeople.rdt.core.RubyModelException;
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
+import org.rubypeople.rdt.internal.core.parser.Error;
import org.rubypeople.rdt.internal.core.parser.RdtWarnings;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
import org.rubypeople.rdt.internal.core.parser.TaskParser;
import org.rubypeople.rdt.internal.core.parser.TaskTag;
-import org.rubypeople.rdt.internal.core.parser.Warning;
import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
@@ -55,8 +55,9 @@
node.accept(visitor);
return visitor.getProblems();
} catch (SyntaxException e) {
- // Eat the exception
-// problemRequestor.acceptProblem(new Error(e.getPosition(), e.getMessage()));
+ List<CategorizedProblem> list = new ArrayList<CategorizedProblem>();
+ list.add(new Error(e.getPosition(), e.getMessage()));
+ return list;
} catch (RubyModelException e) {
RubyCore.log(e);
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java 2007-03-26 15:28:48 UTC (rev 2229)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java 2007-03-26 17:33:01 UTC (rev 2230)
@@ -25,6 +25,7 @@
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.lexer.yacc.SyntaxException;
import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.internal.core.parser.Error;
import org.rubypeople.rdt.internal.core.parser.ImmediateWarnings;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
@@ -63,8 +64,7 @@
rootNode.accept(visitor);
indexUpdater.update(file, rootNode, true);
} catch (SyntaxException e) {
- // Should we really put a marker here? I think the normal parsing process will create syntax markers just fine
- markerManager.createSyntaxError(file, e);
+ markerManager.addProblem(file, new Error(e.getPosition(), e.getMessage()));
} finally {
IoUtils.closeQuietly(reader);
}
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyDocumentProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyDocumentProvider.java 2007-03-26 15:28:48 UTC (rev 2229)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyDocumentProvider.java 2007-03-26 17:33:01 UTC (rev 2230)
@@ -870,6 +870,7 @@
* Signals the end of problem reporting.
*/
private void reportProblems(List reportedProblems) {
+ // FIXME Find a way to not add annotations for problems which are duplicates of markers on the underlying file!
if (fProgressMonitor != null && fProgressMonitor.isCanceled())
return;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 15:40:54
|
Revision: 2228
http://svn.sourceforge.net/rubyeclipse/?rev=2228&view=rev
Author: cawilliams
Date: 2007-03-26 07:17:18 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
remove a fairly useless lint visitor (which was more of an example one really)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java
Removed Paths:
-------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/StaticConditionalVisitor.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java 2007-03-26 14:09:51 UTC (rev 2227)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java 2007-03-26 14:17:18 UTC (rev 2228)
@@ -1,7 +1,6 @@
package org.rubypeople.rdt.internal.core.parser.warnings;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import org.jruby.ast.AliasNode;
@@ -99,7 +98,6 @@
import org.jruby.ast.ZArrayNode;
import org.jruby.ast.ZSuperNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.core.IProblemRequestor;
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
import org.rubypeople.rdt.internal.core.parser.InOrderVisitor;
@@ -124,7 +122,6 @@
// FIXME Run through a map of keys to classes and add instances of
// classes whose key is not set to ignore
visitors.add(new EmptyStatementVisitor(contents));
- visitors.add(new StaticConditionalVisitor(contents));
visitors.add(new ConstantReassignmentVisitor(contents));
return visitors;
}
Deleted: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/StaticConditionalVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/StaticConditionalVisitor.java 2007-03-26 14:09:51 UTC (rev 2227)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/StaticConditionalVisitor.java 2007-03-26 14:17:18 UTC (rev 2228)
@@ -1,32 +0,0 @@
-package org.rubypeople.rdt.internal.core.parser.warnings;
-
-import org.jruby.ast.FalseNode;
-import org.jruby.ast.IfNode;
-import org.jruby.ast.NilNode;
-import org.jruby.ast.Node;
-import org.jruby.ast.TrueNode;
-import org.jruby.evaluator.Instruction;
-
-public class StaticConditionalVisitor extends RubyLintVisitor {
-
- public StaticConditionalVisitor(String contents) {
- super(contents);
- }
-
- @Override
- protected String getOptionKey() {
-// FIXME Set up a compiler option for this!
- return null;
- }
-
- public Instruction visitIfNode(IfNode iVisited) {
- Node condition = iVisited.getCondition();
- if (condition instanceof TrueNode) {
- createProblem(iVisited.getPosition(), "Condition is always true");
- } else if ((condition instanceof FalseNode) || (condition instanceof NilNode)) {
- createProblem(iVisited.getPosition(), "Condition is always false");
- }
- return super.visitIfNode(iVisited);
- }
-
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 15:28:50
|
Revision: 2229
http://svn.sourceforge.net/rubyeclipse/?rev=2229&view=rev
Author: cawilliams
Date: 2007-03-26 08:28:48 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java
Removed Paths:
-------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/NodeUtil.java
Deleted: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/NodeUtil.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/NodeUtil.java 2007-03-26 14:17:18 UTC (rev 2228)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/NodeUtil.java 2007-03-26 15:28:48 UTC (rev 2229)
@@ -1,14 +0,0 @@
-package org.rubypeople.rdt.internal.core.parser;
-
-import org.jruby.ast.Node;
-import org.jruby.lexer.yacc.ISourcePosition;
-
-public class NodeUtil {
-
- private NodeUtil() {}
-
- public static String getSource(String contents, Node node) {
- ISourcePosition pos = node.getPosition();
- return contents.substring(pos.getStartOffset(), pos.getEndOffset());
- }
-}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java 2007-03-26 14:17:18 UTC (rev 2228)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java 2007-03-26 15:28:48 UTC (rev 2229)
@@ -19,8 +19,8 @@
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
import org.rubypeople.rdt.core.compiler.IProblem;
import org.rubypeople.rdt.internal.core.parser.Error;
-import org.rubypeople.rdt.internal.core.parser.NodeUtil;
import org.rubypeople.rdt.internal.core.parser.Warning;
+import org.rubypeople.rdt.internal.core.util.ASTUtil;
public abstract class RubyLintVisitor extends AbstractVisitor {
@@ -33,7 +33,7 @@
}
protected String getSource(Node node) {
- return NodeUtil.getSource(contents, node);
+ return ASTUtil.getSource(contents, node);
}
public List<CategorizedProblem> getProblems() {
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java 2007-03-26 14:17:18 UTC (rev 2228)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java 2007-03-26 15:28:48 UTC (rev 2229)
@@ -7,12 +7,16 @@
import org.jruby.ast.ArgsNode;
import org.jruby.ast.ArgumentNode;
+import org.jruby.ast.AttrAssignNode;
+import org.jruby.ast.ClassVarAsgnNode;
import org.jruby.ast.Colon2Node;
import org.jruby.ast.ConstNode;
import org.jruby.ast.DStrNode;
import org.jruby.ast.FalseNode;
import org.jruby.ast.FixnumNode;
+import org.jruby.ast.GlobalAsgnNode;
import org.jruby.ast.HashNode;
+import org.jruby.ast.InstAsgnNode;
import org.jruby.ast.ListNode;
import org.jruby.ast.LocalAsgnNode;
import org.jruby.ast.NilNode;
@@ -22,6 +26,7 @@
import org.jruby.ast.TrueNode;
import org.jruby.ast.ZArrayNode;
import org.jruby.ast.types.INameNode;
+import org.jruby.lexer.yacc.ISourcePosition;
import org.jruby.parser.StaticScope;
public abstract class ASTUtil {
@@ -167,4 +172,15 @@
return name.toString();
}
+ public static boolean isAssignment(Node node) {
+ return (node instanceof LocalAsgnNode) || (node instanceof ClassVarAsgnNode)
+ || (node instanceof InstAsgnNode) || (node instanceof GlobalAsgnNode)
+ || (node instanceof AttrAssignNode);
+ }
+
+ public static String getSource(String contents, Node node) {
+ ISourcePosition pos = node.getPosition();
+ return contents.substring(pos.getStartOffset(), pos.getEndOffset());
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 14:09:52
|
Revision: 2227
http://svn.sourceforge.net/rubyeclipse/?rev=2227&view=rev
Author: cawilliams
Date: 2007-03-26 07:09:51 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
remove some partitioning stuff which no longer is hooked up.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/corext/template/ruby/RubyFormatter.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/IRubyPartitions.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/comment/CommentFormattingStrategy.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyAutoIndentStrategy.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/text/RubySourceViewerConfiguration.java
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScannerTest.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/corext/template/ruby/RubyFormatter.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/corext/template/ruby/RubyFormatter.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/corext/template/ruby/RubyFormatter.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -129,10 +129,7 @@
return partitionType != null && (
partitionType.equals(IRubyPartitions.RUBY_MULTI_LINE_COMMENT) ||
- partitionType.equals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT) ||
- partitionType.equals(IRubyPartitions.RUBY_STRING) ||
- partitionType.equals(IRubyPartitions.RUBY_CHARACTER) ||
- partitionType.equals(IRubyPartitions.RUBY_DOC));
+ partitionType.equals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT)); // FIXME How do we tell if we're in a string now?
} catch (BadLocationException e) {
return false;
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/IRubyPartitions.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/IRubyPartitions.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/IRubyPartitions.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -16,11 +16,7 @@
* @since 0.7.0
*/
public final static String RUBY_PARTITIONING= "___ruby_partitioning"; //$NON-NLS-1$
-
- public static final String RUBY_REGEX = "__ruby_regular_expression"; //$NON-NLS-1$
-
- public static final String RUBY_COMMAND = "__ruby_command"; //$NON-NLS-1$
-
+
/**
* The identifier of the single-line end comment partition content type.
*/
@@ -29,21 +25,5 @@
/**
* The identifier multi-line comment partition content type.
*/
- String RUBY_MULTI_LINE_COMMENT= "__ruby_multiline_comment"; //$NON-NLS-1$
-
- /**
- * The identifier of the Rdoc (JLS2: DocumentationComment) partition content type.
- */
- String RUBY_DOC= "__ruby_rdoc"; //$NON-NLS-1$
-
- /**
- * The identifier of the Ruby string partition content type.
- */
- String RUBY_STRING= "__ruby_string"; //$NON-NLS-1$
-
- /**
- * The identifier of the Ruby character partition content type.
- */
- String RUBY_CHARACTER= "__ruby_character"; //$NON-NLS-1$
-
+ String RUBY_MULTI_LINE_COMMENT= "__ruby_multiline_comment"; //$NON-NLS-1$
}
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/comment/CommentFormattingStrategy.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/comment/CommentFormattingStrategy.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/comment/CommentFormattingStrategy.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -136,8 +136,6 @@
return CodeFormatter.K_SINGLE_LINE_COMMENT;
if (IRubyPartitions.RUBY_MULTI_LINE_COMMENT.equals(type))
return CodeFormatter.K_MULTI_LINE_COMMENT;
- if (IRubyPartitions.RUBY_DOC.equals(type))
- return CodeFormatter.K_RUBY_DOC;
return CodeFormatter.K_UNKNOWN;
}
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyAutoIndentStrategy.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyAutoIndentStrategy.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyAutoIndentStrategy.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -92,8 +92,8 @@
int start= reg.getOffset();
ITypedRegion region= TextUtilities.getPartition(d, fPartitioning, start, true);
- if (IRubyPartitions.RUBY_DOC.equals(region.getType()))
- start= d.getLineInformationOfOffset(region.getOffset()).getOffset();
+// if (IRubyPartitions.RUBY_DOC.equals(region.getType()))
+// start= d.getLineInformationOfOffset(region.getOffset()).getOffset();
// insert closing "end" on new line after an unclosed block
if (closeBlock() && unclosedBlock(d, start, c.offset)) {
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/text/RubySourceViewerConfiguration.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/text/RubySourceViewerConfiguration.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/text/RubySourceViewerConfiguration.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -132,10 +132,8 @@
final MultiPassContentFormatter formatter = new MultiPassContentFormatter(getConfiguredDocumentPartitioning(sourceViewer), IDocument.DEFAULT_CONTENT_TYPE);
formatter.setMasterStrategy(new RubyFormattingStrategy());
- formatter.setSlaveStrategy(new CommentFormattingStrategy(), IRubyPartitions.RUBY_DOC);
formatter.setSlaveStrategy(new CommentFormattingStrategy(), IRubyPartitions.RUBY_SINGLE_LINE_COMMENT);
formatter.setSlaveStrategy(new CommentFormattingStrategy(), IRubyPartitions.RUBY_MULTI_LINE_COMMENT);
-
return formatter;
}
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScannerTest.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScannerTest.java 2007-03-26 13:53:25 UTC (rev 2226)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScannerTest.java 2007-03-26 14:09:51 UTC (rev 2227)
@@ -21,8 +21,9 @@
public void testSingleLineComment() {
setDocument("# comment");
- assertEquals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT, scanner
- .nextToken().getData());
+// assertEquals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT, scanner
+// .nextToken().getData());
+ assertNull(scanner.nextToken().getData()); // comments are default partition now
}
public void testMultiLineComment() {
@@ -43,139 +44,4 @@
assertNull(scanner.nextToken().getData());
}
- public void testDoubleQuotedString() {
- setDocument("\"double quoted string\"");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- }
-
- public void testSingleQuotedString() {
- setDocument("'single quoted string'");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testCommand() {
- setDocument("`command`");
- assertEquals(IRubyPartitions.RUBY_COMMAND, scanner.nextToken()
- .getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testRegularExpression() {
- setDocument("/regex/");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testRegularExpressionWithPercentSyntax() {
- setDocument("%r(regex)");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
-
- setDocument("%r!regex!");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
-
- setDocument("%r{regex}");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testCommandWithPercentSyntax() {
- setDocument("%x(command)");
- assertEquals(IRubyPartitions.RUBY_COMMAND, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
-
- setDocument("%x!command!");
- assertEquals(IRubyPartitions.RUBY_COMMAND, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
-
- setDocument("%x{command}");
- assertEquals(IRubyPartitions.RUBY_COMMAND, scanner.nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testStringWithPercentSyntax() {
- setDocument("%q(command) # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%q!command! # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%q{command} # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%Q(command) # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%Q!command! # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%Q[command] # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%/command/ # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%!command! # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
-
- setDocument("%[command] # Comment");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertCommentFollows();
- }
-
- private void assertCommentFollows() {
- assertNull(scanner.nextToken().getData());
- assertEquals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT, scanner
- .nextToken().getData());
- assertTrue(scanner.nextToken().isEOF());
- }
-
- public void testRegularExpressionClosesProperly() {
- setDocument("/regex/ # Comment");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertCommentFollows();
- }
-
- public void testRegularExpressionWithOptions() {
- setDocument("/regex/i");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertTrue("Failed to gobble up option/flag as part of regular expression",scanner.nextToken().isEOF());
-
- setDocument("/regex/i # Comment");
- assertEquals(IRubyPartitions.RUBY_REGEX, scanner.nextToken().getData());
- assertNull(scanner.nextToken().getData());
- assertEquals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT, scanner
- .nextToken().getData());
- }
-
- public void testStringWithEscapedEndChar() {
- setDocument("%q(ain\\)# blah)");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertTrue("failed to skip escaped end character", scanner.nextToken().isEOF());
-
- setDocument("%(ain\\)# blah)");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertTrue("failed to skip escaped end character", scanner.nextToken().isEOF());
-
- setDocument("%Q(ain\\)# blah)");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertTrue("failed to skip escaped end character", scanner.nextToken().isEOF());
- }
-
- public void testExpressionSubstitution() {
- setDocument("%{There are #{count} monkeys}");
- assertEquals(IRubyPartitions.RUBY_STRING, scanner.nextToken().getData());
- assertTrue("failed to gobble up expression substiution", scanner.nextToken().isEOF());
- }
-
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 13:53:26
|
Revision: 2226
http://svn.sourceforge.net/rubyeclipse/?rev=2226&view=rev
Author: cawilliams
Date: 2007-03-26 06:53:25 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
allow marking of method exits/returns (this only does explicit returns, we should probably also do implicit returns!)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultOccurrencesFinder.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/MarkOccurrencesConfigurationBlock.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultOccurrencesFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultOccurrencesFinder.java 2007-03-26 13:18:35 UTC (rev 2225)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultOccurrencesFinder.java 2007-03-26 13:53:25 UTC (rev 2226)
@@ -25,6 +25,7 @@
import org.jruby.ast.LocalVarNode;
import org.jruby.ast.ModuleNode;
import org.jruby.ast.Node;
+import org.jruby.ast.ReturnNode;
import org.jruby.ast.SymbolNode;
import org.jruby.lexer.yacc.ISourcePosition;
import org.jruby.lexer.yacc.SourcePosition;
@@ -138,6 +139,10 @@
if (fMarkTypeOccurrences && isTypeRef(orig)) {
pushTypeRefs(root, orig, occurrences);
}
+
+ if (fMarkMethodExitPoints) {
+ pushReturns(root, orig, occurrences);
+ }
// Convert ISourcePosition to IPosition
List<Position> positions = new LinkedList<Position>();
@@ -551,7 +556,33 @@
occurrences.add(getPositionOfName(searchResult, root));
}
}
+
+ private void pushReturns(Node root, Node orig, List<ISourcePosition> occurrences) {
+ // TODO Combine most of this stuff with the stuff in pushLocalVareRefs
+ // Find the search space
+ Node searchSpace = FirstPrecursorNodeLocator.Instance().findFirstPrecursor(root, orig.getPosition().getStartOffset(), new INodeAcceptor() {
+ public boolean doesAccept(Node node) {
+ return ((node instanceof DefnNode) || (node instanceof DefsNode) ); // TODO: Block Body?
+ }
+ });
+ // If no enclosing node found, search the entire space
+ if (searchSpace == null) {
+ searchSpace = root;
+ }
+// Find all return nodes
+ List<Node> searchResults = ScopedNodeLocator.Instance().findNodesInScope(searchSpace, new INodeAcceptor() {
+ public boolean doesAccept(Node node) {
+ return (node instanceof ReturnNode);
+ }
+ });
+
+ // Scrape position from pertinent nodes
+ for (Node searchResult : searchResults) {
+ occurrences.add(searchResult.getPosition());
+ }
+ }
+
// ****************************************************************************
// *
// * Utility methods
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/MarkOccurrencesConfigurationBlock.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/MarkOccurrencesConfigurationBlock.java 2007-03-26 13:18:35 UTC (rev 2225)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/MarkOccurrencesConfigurationBlock.java 2007-03-26 13:53:25 UTC (rev 2226)
@@ -124,9 +124,9 @@
slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES, 0);
createDependency(master, PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES, slave);
-// label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markMethodExitPoints;
-// slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, 0);
-// createDependency(master, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, slave);
+ label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markMethodExitPoints;
+ slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, 0);
+ createDependency(master, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, slave);
addFiller(composite);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 13:33:16
|
Revision: 2222
http://svn.sourceforge.net/rubyeclipse/?rev=2222&view=rev
Author: cawilliams
Date: 2007-03-26 05:37:45 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Apply Marcin's patch for Ticket #216. This is more of a temporary fix to allow JRuby. Ideally we should define an entirely new VM Type specxifically for JRuby.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java 2007-03-26 01:47:16 UTC (rev 2221)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java 2007-03-26 12:37:45 UTC (rev 2222)
@@ -38,10 +38,10 @@
private static final char fgSeparator = File.separatorChar;
/**
- * The list of locations in which to look for the java executable in candidate
+ * The list of locations in which to look for the ruby executable in candidate
* VM install locations, relative to the VM install location.
*/
- private static final String[] fgCandidateRubyFiles = {"rubyw", "rubyw.exe", "ruby", "ruby.exe"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private static final String[] fgCandidateRubyFiles = {"rubyw", "rubyw.exe", "ruby", "ruby.exe", "jrubyw", "jrubyw.bat", "jruby", "jruby.bat"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
private static final String[] fgCandidateRubyLocations = {"", "bin" + fgSeparator}; //$NON-NLS-1$ //$NON-NLS-2$
@@ -200,6 +200,7 @@
}
if (lines.size() > 0) {
String version = lines.remove(0);
+ removeNotExistingLibs(lines);
if (lines.size() > 0) {
String[] loadpath = lines.toArray(new String[lines.size()]);
return new LibraryInfo(version, loadpath);
@@ -209,6 +210,20 @@
}
/**
+ * Do not consider libraries which does not exist.
+ * @param libraries
+ */
+ private void removeNotExistingLibs(List<String> libraries) {
+ List<String> toRemove = new ArrayList<String>();
+ for (String path : libraries) {
+ File file = new File(path);
+ if (!file.exists())
+ toRemove.add(path);
+ }
+ libraries.removeAll(toRemove);
+ }
+
+ /**
* Returns default library info for the given install location.
*
* @param installLocation
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 13:21:49
|
Revision: 2224
http://svn.sourceforge.net/rubyeclipse/?rev=2224&view=rev
Author: cawilliams
Date: 2007-03-26 06:08:53 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
remove unused compiler options, add the existing markers to errorProvider extension, so they show up as configurable in preference page
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/plugin.xml
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/RubyCore.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/CompilerOptions.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java
Modified: trunk/org.rubypeople.rdt.core/plugin.xml
===================================================================
--- trunk/org.rubypeople.rdt.core/plugin.xml 2007-03-26 13:08:04 UTC (rev 2223)
+++ trunk/org.rubypeople.rdt.core/plugin.xml 2007-03-26 13:08:53 UTC (rev 2224)
@@ -116,8 +116,14 @@
<extension
point="org.rubypeople.rdt.core.errorProvider">
<category id="org.rubypeople.rdt.errors.codeComplexity" name="Code Complexity" />
+
<category id="org.rubypeople.rdt.errors.potentialProblems" name="Potential programming problems" />
+ <error prefKey="org.rubypeople.rdt.core.compiler.problem.constantReassignment"
+ label="Re-Assignment to a constant"
+ categoryId="org.rubypeople.rdt.errors.potentialProblems"/>
+
<category id="org.rubypeople.rdt.errors.unneccesaryCode" name="Unnecessary code" />
+ <error prefKey="org.rubypeople.rdt.core.compiler.problem.emptyStatement" label="Empty Statements"
+ categoryId="org.rubypeople.rdt.errors.unneccesaryCode"/>
</extension>
-
</plugin>
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/RubyCore.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/RubyCore.java 2007-03-26 13:08:04 UTC (rev 2223)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/RubyCore.java 2007-03-26 13:08:53 UTC (rev 2224)
@@ -231,52 +231,14 @@
* @see #getDefaultOptions()
* @since 0.9.0
*/
- public static final String COMPILER_PB_ENSURE_BLOCK_NOT_COMPLETING = PLUGIN_ID + ".compiler.problem.ensureBlockNotCompletingNormally"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- * @since 0.9.0
- */
public static final String COMPILER_PB_EMPTY_STATEMENT = PLUGIN_ID + ".compiler.problem.emptyStatement"; //$NON-NLS-1$
+
/**
* Possible configurable option ID.
* @see #getDefaultOptions()
- */
- public static final String COMPILER_PB_HIDDEN_RESCUE_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenRescueBlock"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
* @since 0.9.0
*/
- public static final String COMPILER_PB_FALLTHROUGH_CASE = PLUGIN_ID + ".compiler.problem.fallthroughCase"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- * @since 0.9.0
- */
- public static final String COMPILER_PB_NULL_REFERENCE = PLUGIN_ID + ".compiler.problem.nullReference"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- * @since 0.9.0
- */
- public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- * @since 0.9.0
- */
- public static final String COMPILER_PB_UNNECESSARY_ELSE = PLUGIN_ID + ".compiler.problem.unnecessaryElse"; //$NON-NLS-1$
+ public static final String COMPILER_PB_CONSTANT_REASSIGNMENT = PLUGIN_ID + ".compiler.problem.constantReassignment"; //$NON-NLS-1$
/**
* Possible configurable option ID.
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/CompilerOptions.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/CompilerOptions.java 2007-03-26 13:08:04 UTC (rev 2223)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/compiler/CompilerOptions.java 2007-03-26 13:08:53 UTC (rev 2224)
@@ -3,23 +3,26 @@
import java.util.HashMap;
import java.util.Map;
+import org.rubypeople.rdt.core.RubyCore;
+
public class CompilerOptions {
+
+ public static final long EmptyStatement = 0x01;
+ public static final long ConstantReassignment = 0x02;
- public static final String OPTION_ReportEmptyStatement = "org.rubypeople.rdt.core.compiler.problem.emptyStatement"; //$NON-NLS-1$
+ public static final String ERROR = RubyCore.ERROR; //$NON-NLS-1$
+ public static final String WARNING = RubyCore.WARNING; //$NON-NLS-1$
+ public static final String IGNORE = RubyCore.IGNORE; //$NON-NLS-1$
- public static final long EmptyStatement = 0x80000;
-
- public static final String ERROR = "error"; //$NON-NLS-1$
- public static final String WARNING = "warning"; //$NON-NLS-1$
- public static final String IGNORE = "ignore"; //$NON-NLS-1$
-
// Default severity level for handlers
public long errorThreshold = 0;
- public long warningThreshold = 0;
+ public long warningThreshold =
+ ConstantReassignment;
public Map getMap() {
Map optionsMap = new HashMap(30);
- optionsMap.put(OPTION_ReportEmptyStatement, getSeverityString(EmptyStatement));
+ optionsMap.put(RubyCore.COMPILER_PB_EMPTY_STATEMENT, getSeverityString(EmptyStatement));
+ optionsMap.put(RubyCore.COMPILER_PB_CONSTANT_REASSIGNMENT, getSeverityString(ConstantReassignment));
return optionsMap;
}
@@ -33,7 +36,8 @@
public void set(Map optionsMap) {
Object optionValue;
- if ((optionValue = optionsMap.get(OPTION_ReportEmptyStatement)) != null) updateSeverity(EmptyStatement, optionValue);
+ if ((optionValue = optionsMap.get(RubyCore.COMPILER_PB_EMPTY_STATEMENT)) != null) updateSeverity(EmptyStatement, optionValue);
+ if ((optionValue = optionsMap.get(RubyCore.COMPILER_PB_CONSTANT_REASSIGNMENT)) != null) updateSeverity(ConstantReassignment, optionValue);
}
void updateSeverity(long irritant, Object severityString) {
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java 2007-03-26 13:08:04 UTC (rev 2223)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java 2007-03-26 13:08:53 UTC (rev 2224)
@@ -5,6 +5,7 @@
import org.jruby.ast.ConstDeclNode;
import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.RubyCore;
public class ConstantReassignmentVisitor extends RubyLintVisitor {
@@ -17,8 +18,7 @@
@Override
protected String getOptionKey() {
- // FIXME Set up a compiler option for this!
- return null;
+ return RubyCore.COMPILER_PB_CONSTANT_REASSIGNMENT;
}
public Instruction visitConstDeclNode(ConstDeclNode iVisited) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-03-26 13:21:49
|
Revision: 2223
http://svn.sourceforge.net/rubyeclipse/?rev=2223&view=rev
Author: cawilliams
Date: 2007-03-26 06:08:04 -0700 (Mon, 26 Mar 2007)
Log Message:
-----------
Don't show a category if it is empty (has no error/warning marker options)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/ProblemSeveritiesConfigurationBlock.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/ProblemSeveritiesConfigurationBlock.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/ProblemSeveritiesConfigurationBlock.java 2007-03-26 12:37:45 UTC (rev 2222)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/ProblemSeveritiesConfigurationBlock.java 2007-03-26 13:08:04 UTC (rev 2223)
@@ -206,14 +206,15 @@
Composite inner;
Map<String, String> categories = getErrorCategories();
- for (String categoryId : categories.keySet()) {
+ for (String categoryId : categories.keySet()) {
+ List<Error> errors = getErrors(categoryId);
+ if (errors == null || errors.isEmpty()) continue;
excomposite= createStyleSection(composite, categories.get(categoryId), nColumns);
inner= new Composite(excomposite, SWT.NONE);
inner.setFont(composite.getFont());
inner.setLayout(new GridLayout(nColumns, false));
excomposite.setClient(inner);
- List<Error> errors = getErrors(categoryId);
for (Error error : errors) {
addComboBox(inner, error.label + ':', getKey(error.getContributor(), error.getId()), errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent);
if (error.hasArgument()) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|