Anchors + links + refs
One-token tags
Self-closing tags
This commit is contained in:
Andrey Breslav
2011-07-13 17:40:03 +04:00
parent c9621ab19c
commit 73bb5a1d4e
8 changed files with 570 additions and 97 deletions
+35
View File
@@ -30,6 +30,41 @@
<option name="LOCALE" />
<option name="OPEN_IN_BROWSER" value="true" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/confluence-highlighting/pom.xml" />
<option value="$PROJECT_DIR$/confluence/pom.xml" />
</list>
</option>
<option name="ignoredFiles">
<set>
<option value="$PROJECT_DIR$/confluence/pom.xml" />
</set>
</option>
</component>
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="org.jetbrains.annotations.Nullable" />
<option name="myDefaultNotNull" value="org.jetbrains.annotations.NotNull" />
<option name="myNullables">
<value>
<list size="3">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="3">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
</component>
+10
View File
@@ -111,6 +111,16 @@
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="scala">
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="sql">
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<defaultAnt bundledAnt="true" />
</component>
</project>
+195
View File
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.confluence:confluence:3.5.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-api:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.collections:google-collections:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-integration-api:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: log4j:log4j:1.2.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-integration-seraph22:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-integration-client-rest:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-integration-client-common:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security:atlassian-cookie-tools:2.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-httpclient:commons-httpclient:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.core:atlassian-core:4.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.profiling:atlassian-profiling:1.8.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: javax.servlet:servlet-api:2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-io:commons-io:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: dom4j:dom4j:1.4-full" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:oscore:2.2.7-atlassian-1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: mockobjects:alt-jdk1.3:0.07" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-spi:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-api:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.spring:atlassian-spring:2.0-rc4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.event:atlassian-event:2.0.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-core:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-context:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-beans:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-web:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.util.concurrent:atlassian-util-concurrent:0.0.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:slf4j-api:1.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.mail:mail:1.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.activation:activation:1.0.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-password-encoders:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security:atlassian-password-encoder:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.security:spring-security-core:2.0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-aop:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-core:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.multitenant:multitenant-core:1.0-m14" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.jcip:jcip-annotations:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:atlassian-embedded-crowd-atlassian-user:1.2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:embedded-crowd-core:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-core:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-ldap:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-events:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-persistence:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.config:atlassian-config:0.13.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sf.ehcache:ehcache:1.2.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.transaction:jta:1.0.1B" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: cglib:cglib:2.1_3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: asm:asm:1.5.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:slf4j-log4j12:1.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: joda-time:joda-time:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:crowd-remote:2.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.ldap:spring-ldap-core:1.3.0.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security:atlassian-secure-random:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:propertyset:1.3-21Nov03" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.user:atlassian-user:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.cache:atlassian-cache-api:0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: osuser:osuser:atl.user" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-hibernate2:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: hibernate:hibernate:2.1.8-atlassian-9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-dao:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-jdbc:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sf.ldaptemplate:ldaptemplate:1.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.crowd:atlassian-embedded-crowd-hibernate2:1.2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: odmg:odmg:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.confluence:confluence-upgrade:3.5.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.confluence:confluence-bucket:3.5.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.gzipfilter:atlassian-gzipfilter:1.9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.applinks:applinks-api:3.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.applinks:applinks-spi:3.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.applinks:applinks-host:3.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.modzdetector:modz-detector:0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.mail:atlassian-mail:1.16" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.velocity:atlassian-velocity:0.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: mockobjects:mockobjects-alt-jdk1.3-j2ee1.3:0.09" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-beanutils:commons-beanutils:1.6.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-digester:commons-digester:1.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xerces:xercesImpl:2.9.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:sitemesh:2.3-atlassian" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.johnson:atlassian-johnson:0.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.spring:atlassian-spring-hibernate2:2.0-rc4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.xwork:atlassian-xwork-10:1.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.xwork:atlassian-xwork-core:1.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:xwork:1.0.3.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: opensymphony:webwork:2.1.5-atlassian-2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-fileupload:commons-fileupload:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: ognl:ognl:2.6.5-atlassian-2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: rome:rome:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: jdom:jdom:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.trackback:atlassian-trackback:0.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: oro:oro:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.extras:atlassian-extras:2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.seraph:atlassian-seraph:2.4.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-servlet:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-webfragment:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-webresource:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-osgi:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-osgi-events:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: biz.aQute:bndlib:0.0.255" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.felix:org.apache.felix.framework:3.0.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.twdata.pkgscanner:package-scanner:0.9.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.plugins:atlassian-plugins-spring:2.7.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.bandana:atlassian-bandana:3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.renderer:atlassian-renderer:7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.nekohtml:nekohtml:1.9.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: radeox:radeox:1.0b2-forked-22Apr2004" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hibernate:jtidy:r8-20060801" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.bonnie:atlassian-bonnie:4.0-beta3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-core:2.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.pdfbox:pdfbox:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.pdfbox:fontbox:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.pdfbox:jempbox:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.poi:poi:3.5-FINAL" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.poi:poi-scratchpad:3.5-FINAL" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bouncycastle:bcprov-jdk15:1.44" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bouncycastle:bcmail-jdk15:1.44" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.ibm.icu:icu4j:3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.jdk.utilities:atlassian-jdk-utilities:0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security.auth.trustedapps:atlassian-trusted-apps-core:2.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.security.auth.trustedapps:atlassian-trusted-apps-seraph-integration:2.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:jul-to-slf4j:1.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.directwebremoting:dwr:2.0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: c3p0:c3p0:0.9.1.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sun:jai_core:1.1.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sun:jai_codec:1.1.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: oscache:oscache:2.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.velocity:velocity:1.6.1-atlassian-2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-support:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-jmx:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.paddle:atlassian-paddle:5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.aspectj:aspectjweaver:1.6.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: velocity-tools:velocity-tools:view-1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-analyzers:2.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-misc:2.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-highlighter:2.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.lucene:lucene-memory:2.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: batik:batik-all:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sourceforge.cssparser:cssparser:0.9.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.w3c.css:sac:1.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.quartz-scheduler:quartz:1.8.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hsqldb:hsqldb:2.0.1-rc3-20110120" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-jrcs:commons-jrcs:diff-0.1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xmlrpc:xmlrpc:2.0+xmlrpc61.1+sbfix" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: glue:glue:5.0b2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: exml:exml:7.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: axis:axis:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: wsdl4j:wsdl4j:1.5.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-discovery:commons-discovery:0.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: axis:axis-jaxrpc:1.2.1-noqname" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: axis:axis-saaj:1.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: slide:slide:2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.thoughtworks.xstream:xstream:1.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xpp3:xpp3_min:1.1.3.4.O" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: jfree:jfreechart:1.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: jfree:jcommon:1.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xalan:xalan:2.7.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.octo.captcha:jcaptcha-all:1.0-RC6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: concurrent:concurrent:1.3.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.dev.urlrewrite:urlrewrite:2.6.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.woodstox:wstx-asl:3.2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.xfire:xfire-core:1.2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.ws.commons:XmlSchema:1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.xfire:xfire-aegis:1.2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.dev.stax-utils:stax-utils:20040917" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.sal:sal-spi:2.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.sal:sal-spring:2.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.sal:sal-api:2.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.atlassian.cache:atlassian-cache-memory:0.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.atlassian.confluence.plugin:func-test:2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.jwebunit:jwebunit-htmlunit-plugin:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.htmlunit:htmlunit:2.5" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.htmlunit:htmlunit-core-js:2.5" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sourceforge.jwebunit:jwebunit-core:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: regexp:regexp:1.3" level="project" />
</component>
</module>
@@ -0,0 +1,29 @@
package org.jetbrains.jet.lexer;
import com.atlassian.renderer.RenderContext;
import com.atlassian.renderer.v2.RenderMode;
import com.atlassian.renderer.v2.macro.BaseMacro;
import com.atlassian.renderer.v2.macro.MacroException;
import java.util.Map;
/**
* @author abreslav
*/
public class JetHTMLMacro extends BaseMacro {
@Override
public boolean hasBody() {
return true;
}
@Override
public RenderMode getBodyRenderMode() {
return RenderMode.allow(0);
}
@Override
public String execute(Map map, String code, RenderContext renderContext) throws MacroException {
return code;
}
}
@@ -19,98 +19,125 @@ import java.util.regex.Pattern;
* @author abreslav
*/
public class JetMacro extends BaseMacro {
@Override
public boolean hasBody() {
return true;
public static final StringReader DUMMY_READER = new StringReader("");
private static class TagData {
final TagType type;
final String message;
final int start;
final boolean nextToken;
int end;
TagData(TagType type, String message, int start, boolean nextToken) {
this.type = type;
this.message = message;
this.start = start;
this.nextToken = nextToken;
}
}
@Override
public RenderMode getBodyRenderMode() {
return RenderMode.allow(0);
private static abstract class TagType {
public final String tagName;
private TagType(String tagName) {
this.tagName = tagName;
}
public abstract void appendOpenTag(StringBuilder builder, TagData tagData);
public abstract void appendCloseTag(StringBuilder builder, TagData tagData);
@Override
public String toString() {
return tagName;
}
}
@Override
public String execute(Map map, String code, RenderContext renderContext) throws MacroException {
private static class StyledDivTagType extends TagType {
class ExtraTag {
final String name;
final String message;
final int start;
int end;
private StyledDivTagType(String tagName) {
super(tagName);
}
ExtraTag(String name, String message, int start) {
this.name = name;
this.message = message;
this.start = start;
@Override
public void appendOpenTag(StringBuilder builder, TagData tagData) {
assert tagData.type == this;
builder.append("<div class=\"jet ").append(tagName).append("\"");
if (tagData.message != null) {
builder.append(" title=\"");
escapeHTML(builder, tagData.message);
builder.append("\"");
}
builder.append(">");
}
String[] knownExtraTagNames = {"error", "warning", "unresolved"};
Map<String, Pattern> openTags = new HashMap<String, Pattern>();
Map<String, Pattern> closeTags = new HashMap<String, Pattern>();
for (String name : knownExtraTagNames) {
Pattern open = Pattern.compile("<" + name + "\\s*(desc=\\\"([^\n\"]*?)\\\")?>", Pattern.MULTILINE);
openTags.put(name, open);
closeTags.put(name, Pattern.compile("</" + name + ">"));
@Override
public void appendCloseTag(StringBuilder builder, TagData tagData) {
builder.append("</div>");
}
}
Stack<ExtraTag> tagStack = new Stack<ExtraTag>();
List<ExtraTag> tags = new ArrayList<ExtraTag>();
code = code.trim();
StringBuilder normalizedNewlines = new StringBuilder();
charLoop:
for (int i = 0; i < code.length(); i++) {
char c = code.charAt(i);
if (c == '\r') continue;
for (String tagName : knownExtraTagNames) {
Pattern open = openTags.get(tagName);
CharSequence remainingInput = code.subSequence(i, code.length());
Matcher openMatcher = open.matcher(remainingInput);
if (openMatcher.find() && openMatcher.start() == 0) {
tagStack.push(new ExtraTag(tagName, openMatcher.group(2), normalizedNewlines.length()));
i += openMatcher.end() - 1;
continue charLoop;
private static final TagType[] knownExtraTagTypes = {
new StyledDivTagType("error"),
new StyledDivTagType("warning"),
new StyledDivTagType("unresolved"),
new TagType("ref") {
@Override
public void appendOpenTag(StringBuilder builder, TagData tagData) {
builder.append("<a class=\"jet ref\" href=\"#");
builder.append(tagData.message);
builder.append("\">");
}
Pattern close = closeTags.get(tagName);
Matcher closeMatcher = close.matcher(remainingInput);
if (closeMatcher.find() && closeMatcher.start() == 0) {
if (tagStack.isEmpty()) {
return "<div style=\"jet error\">Error: unmatched closing tag: " + closeMatcher.group() + "</div>";
}
else {
ExtraTag tag = tagStack.pop();
if (!tagName.equals(tag.name)) {
return "<div style=\"jet error\">Error: unmatched closing tag: " + closeMatcher.group() + "</div>";
}
tag.end = normalizedNewlines.length();
tags.add(tag);
i += closeMatcher.end() - 1;
continue charLoop;
}
@Override
public void appendCloseTag(StringBuilder builder, TagData tagData) {
builder.append("</a>");
}
},
new TagType("label") {
@Override
public void appendOpenTag(StringBuilder builder, TagData tagData) {
builder.append("<a name=\"");
builder.append(tagData.message);
builder.append("\">");
}
}
normalizedNewlines.append(c);
@Override
public void appendCloseTag(StringBuilder builder, TagData tagData) {
builder.append("</a>");
}
},
new TagType("a") {
@Override
public void appendOpenTag(StringBuilder builder, TagData tagData) {
builder.append("<a class=\"jet anchor\" href=\"");
builder.append(tagData.message);
builder.append("\">");
}
@Override
public void appendCloseTag(StringBuilder builder, TagData tagData) {
builder.append("</a>");
}
},
};
private static final Map<TagType, Pattern> openTags = new HashMap<TagType, Pattern>();
private static final Map<TagType, Pattern> nextTokenTags = new HashMap<TagType, Pattern>();
private static final Map<TagType, Pattern> closedTags = new HashMap<TagType, Pattern>();
private static final Map<TagType, Pattern> closeTags = new HashMap<TagType, Pattern>();
static {
for (TagType type : knownExtraTagTypes) {
String tagName = type.tagName;
openTags.put(type, Pattern.compile("<" + tagName + "\\s*(desc=\\\"([^\n\"]*?)\\\")?>", Pattern.MULTILINE));
closeTags.put(type, Pattern.compile("</" + tagName + ">"));
nextTokenTags.put(type, Pattern.compile("<" + tagName + "\\s*(desc=\\\"([^\n\"]*?)\\\")?:>", Pattern.MULTILINE));
closedTags.put(type, Pattern.compile("<" + tagName + "\\s*(desc=\\\"([^\n\"]*?)\\\")?/>", Pattern.MULTILINE));
}
}
VelocityContext context = new VelocityContext(MacroUtils.defaultVelocityContext());
String renderedTemplate = VelocityUtils.getRenderedTemplate("template.velocity", context);
StringBuilder result = new StringBuilder(renderedTemplate);
result.append(
"<div class=\"code panel\" style=\"border-width: 1px;\">" +
"<div class=\"codeContent panelContent\">" +
"<div class=\"container\">"
);
_JetLexer jetLexer = new _JetLexer(new StringReader(""));
jetLexer.reset(normalizedNewlines, 0, normalizedNewlines.length(), _JetLexer.YYINITIAL);
Map<IElementType, String> styleMap = new HashMap<IElementType, String>();
private static final Map<IElementType, String> styleMap = new HashMap<IElementType, String>();
static {
styleMap.put(JetTokens.BLOCK_COMMENT, "comment");
styleMap.put(JetTokens.DOC_COMMENT, "comment");
styleMap.put(JetTokens.EOL_COMMENT, "comment");
@@ -131,24 +158,87 @@ public class JetMacro extends BaseMacro {
styleMap.put(JetTokens.FIELD_IDENTIFIER, "field");
styleMap.put(JetTokens.RAW_STRING_LITERAL, "string");
styleMap.put(TokenType.BAD_CHARACTER, "bad");
}
@Override
public boolean hasBody() {
return true;
}
@Override
public RenderMode getBodyRenderMode() {
return RenderMode.allow(0);
}
private static void escapeHTML(StringBuilder builder, CharSequence seq) {
if (seq == null) return;
for (int i = 0; i < seq.length(); i++) {
char c = seq.charAt(i);
switch (c) {
case '<':
builder.append("&lt;");
break;
case '>':
builder.append("&gt;");
break;
case '&':
builder.append("&amp;");
break;
case '"':
builder.append("&quot;");
break;
default:
builder.append(c);
}
}
}
@Override
public String execute(Map map, String code, RenderContext renderContext) throws MacroException {
try {
List<TagData> tags = new ArrayList<TagData>();
StringBuilder afterPreprocessing = preprocess(code.trim(), tags);
VelocityContext context = new VelocityContext(MacroUtils.defaultVelocityContext());
String renderedTemplate = VelocityUtils.getRenderedTemplate("template.velocity", context);
StringBuilder result = new StringBuilder(renderedTemplate);
result.append(
"<div class=\"code panel\" style=\"border-width: 1px;\">" +
"<div class=\"codeContent panelContent\">" +
"<div class=\"container\">"
);
_JetLexer jetLexer = new _JetLexer(DUMMY_READER);
jetLexer.reset(afterPreprocessing, 0, afterPreprocessing.length(), _JetLexer.YYINITIAL);
Iterator<TagData> iterator = tags.iterator();
TagData tag = iterator.hasNext() ? iterator.next() : null;
while (true) {
int tokenEnd = jetLexer.getTokenEnd();
while (tag != null && tag.end < tokenEnd) {
result.append("<div class=\"jet hwarning\">Skipping a tag in the middle of a token: &lt;").append(tag.type).append("&gt;</div>");
tag = iterator.hasNext() ? iterator.next() : null;
}
Iterator<ExtraTag> iterator = tags.iterator();
ExtraTag tag = iterator.hasNext() ? iterator.next() : null;
while (true) {
try {
if (tag != null) {
if (tag.start == jetLexer.getTokenEnd()) {
result.append("<div class=\"jet ").append(tag.name).append("\"");
if (tag.message != null) {
result.append(" title=\"").append(tag.message).append("\"");
}
result.append(">");
if (tag.start == tokenEnd) {
// result.append("<div class=\"jet ").append(tag.type).append("\"");
// if (tag.message != null) {
// result.append(" title=\"").append(tag.message).append("\"");
// }
// result.append(">");
tag.type.appendOpenTag(result, tag);
}
else if (tag.end == jetLexer.getTokenEnd()) {
result.append("</div>");
}
if (tag != null) {
if (tag.end == tokenEnd || (tag.nextToken && tag.start < tokenEnd)) {
tag.type.appendCloseTag(result, tag);
tag = iterator.hasNext() ? iterator.next() : null;
}
}
IElementType token = jetLexer.advance();
if (token == null) break;
CharSequence yytext = jetLexer.yytext();
@@ -168,16 +258,100 @@ public class JetMacro extends BaseMacro {
} else {
style = "plain";
}
result.append("<code class=\"jet ").append(style).append("\">").append(yytext).append("</code>");
} catch (Throwable e) {
result.append("ERROR IN HIGHLIGHTER: ").append(e.getClass().getSimpleName()).append(" : ").append(e.getMessage());
result.append("<code class=\"jet ").append(style).append("\">");
escapeHTML(result, yytext);
result.append("</code>");
}
}
result.append("</div>");
result.append("</div>");
result.append("</div>");
return result.toString();
result.append("</div>");
result.append("</div>");
result.append("</div>");
return result.toString();
} catch (Throwable e) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<div class=\"jet herror\">Jet highlighter error [").append(e.getClass().getSimpleName()).append("]: ");
escapeHTML(stringBuilder, e.getMessage());
stringBuilder.append("<br/>");
stringBuilder.append("Original text:");
stringBuilder.append("<pre>");
escapeHTML(stringBuilder, code);
stringBuilder.append("</pre>");
stringBuilder.append("</div>");
return stringBuilder.toString();
}
}
private StringBuilder preprocess(CharSequence code, Collection<TagData> tags) {
StringBuilder afterPreprocessing = new StringBuilder();
int initialLength = afterPreprocessing.length();
Stack<TagData> tagStack = new Stack<TagData>();
charLoop:
for (int i = 0; i < code.length(); i++) {
char c = code.charAt(i);
if (c == '\r') continue;
int position = afterPreprocessing.length() - initialLength;
for (TagType type : knownExtraTagTypes) {
Pattern open = openTags.get(type);
Matcher openMatcher = matchFrom(code, i, open);
if (openMatcher != null) {
tagStack.push(new TagData(type, openMatcher.group(2), position, false));
i += openMatcher.end() - 1;
continue charLoop;
}
Pattern close = closeTags.get(type);
Matcher closeMatcher = matchFrom(code, i, close);
if (closeMatcher != null) {
if (tagStack.isEmpty()) {
throw new IllegalArgumentException("Unmatched closing tag: " + closeMatcher.group());
}
else {
TagData tag = tagStack.pop();
if (type != tag.type) {
throw new IllegalArgumentException("Unmatched closing tag: " + closeMatcher.group());
}
tag.end = position;
tags.add(tag);
i += closeMatcher.end() - 1;
continue charLoop;
}
}
Pattern closed = closedTags.get(type);
Matcher closedMatcher = matchFrom(code, i, closed);
if (closedMatcher != null) {
TagData tag = new TagData(type, closedMatcher.group(2), position, false);
tag.end = position;
tags.add(tag);
i += closedMatcher.end() - 1;
continue charLoop;
}
Pattern next = nextTokenTags.get(type);
Matcher nextMatcher = matchFrom(code, i, next);
if (nextMatcher != null) {
TagData tag = new TagData(type, nextMatcher.group(2), position, true);
tags.add(tag);
tag.end = code.length();
i += nextMatcher.end() - 1;
continue charLoop;
}
}
afterPreprocessing.append(c);
}
return afterPreprocessing;
}
private Matcher matchFrom(CharSequence code, int start, Pattern pattern) {
CharSequence remainingInput = code.subSequence(start, code.length());
Matcher matcher = pattern.matcher(remainingInput);
if (matcher.find() && matcher.start() == 0) {
return matcher;
}
return null;
}
}
@@ -8,7 +8,11 @@
<macro name="jet" class="org.jetbrains.jet.lexer.JetMacro" key="jet">
<description>Highlighting for Jet language</description>
</macro>
<!--
<macro name="jet-html" class="org.jetbrains.jet.lexer.JetHTMLMacro" key="jet-html">
<description>Highlighting for Jet language</description>
</macro>
-->
<web-resource key="resources">
    <resource type="download" name="jet.css" location="jet.css"/>
    <resource type="download" name="underline.gif" location="underline.gif"/>
+19
View File
@@ -13,6 +13,7 @@
.jet.comment {
color : green;
}
.jet.number {
@@ -48,3 +49,21 @@
color : red;
display:inline;
}
.jet.herror {
background-color: #FFAAAA;
}
.jet.hwarning {
background-color: #FFAAAA;
display:inline;
}
.jet.ref:link { color: black; }
.jet.ref:visited { color: black; }
.jet.ref:hover { color:blue; text-decoration:underline; }
.jet.ref:active { color:blue; text-decoration:underline; }
.jet.anchor:link { }
.jet.anchor:visited { }
.jet.anchor:hover { color:blue; text-decoration:underline; }
.jet.anchor:active { color:blue; text-decoration:underline; }