diff --git a/core/src/main/java/hudson/MarkupText.java b/core/src/main/java/hudson/MarkupText.java index 5196fe4fe2..2a7b813659 100644 --- a/core/src/main/java/hudson/MarkupText.java +++ b/core/src/main/java/hudson/MarkupText.java @@ -119,6 +119,13 @@ public class MarkupText extends AbstractMarkupText { addMarkup(0,length(),startTag,endTag); } + /** + * Surrounds this subtext with <a>...</a>. + */ + public void href(String url) { + addHyperlink(0,length(),url); + } + /** * Gets the start index of the captured group within {@link MarkupText#getText()}. * diff --git a/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java b/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java index c4c06356b1..7cf4fd4601 100644 --- a/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java +++ b/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java @@ -23,6 +23,7 @@ */ package hudson.console; +import hudson.Extension; import hudson.ExtensionList; import hudson.ExtensionPoint; import hudson.model.Hudson; @@ -53,6 +54,9 @@ import java.net.URL; * Because of this, {@link ConsoleAnnotatorFactory} is generally suitable for peep-hole local annotation * that only requires a small contextual information, such as keyword coloring, URL hyperlinking, and so on. * + *
+ * To register, put @{@link Extension} on your {@link ConsoleAnnotatorFactory} subtype. + * * @author Kohsuke Kawaguchi * @since 1.349 */ diff --git a/core/src/main/java/hudson/console/UrlAnnotator.java b/core/src/main/java/hudson/console/UrlAnnotator.java new file mode 100644 index 0000000000..89c71c77c3 --- /dev/null +++ b/core/src/main/java/hudson/console/UrlAnnotator.java @@ -0,0 +1,31 @@ +package hudson.console; + +import hudson.Extension; +import hudson.MarkupText; +import hudson.MarkupText.SubText; + +import java.util.regex.Pattern; + +/** + * Annotates URLs in the console output to hyperlink. + * + * @author Kohsuke Kawaguchi + */ +@Extension +public class UrlAnnotator extends ConsoleAnnotatorFactory