001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.juneau.marshall.markdown; 018 019import static java.lang.annotation.ElementType.*; 020import static java.lang.annotation.RetentionPolicy.*; 021 022import java.lang.annotation.*; 023 024/** 025 * Annotation for customizing Markdown serialization and parsing behavior on classes, methods, and fields. 026 * 027 * <p> 028 * Can be used in the following locations: 029 * <ul> 030 * <li>Marshalled classes/methods/fields. 031 * </ul> 032 * 033 */ 034@Documented 035@Target({ TYPE, FIELD, METHOD }) 036@Retention(RUNTIME) 037@Inherited 038public @interface Markdown { 039 040 /** 041 * Optional description for the exposed API. 042 * 043 * @return The annotation value. 044 */ 045 String[] description() default {}; 046 047 /** 048 * Rendering format override. 049 * 050 * @return The annotation value. 051 */ 052 MarkdownFormat format() default MarkdownFormat.DEFAULT; 053 054 /** 055 * Custom heading text for document-mode rendering. 056 * 057 * <p> 058 * Overrides the property name used as the heading in {@link MarkdownDocSerializer} output. 059 * 060 * @return The annotation value. 061 */ 062 String heading() default ""; 063 064 /** 065 * Suppress table rendering; force list rendering for collections. 066 * 067 * <p> 068 * Mirrors {@link org.apache.juneau.marshall.html.Html#noTables()}. 069 * 070 * @return The annotation value. 071 */ 072 boolean noTables() default false; 073 074 /** 075 * Suppress table header row rendering. 076 * 077 * @return The annotation value. 078 */ 079 boolean noHeaders() default false; 080 081 /** 082 * Render property value as inline backtick-quoted code. 083 * 084 * @return The annotation value. 085 */ 086 boolean code() default false; 087 088 /** 089 * Render property value as a Markdown link using the specified URL template. 090 * 091 * <p> 092 * The template may use <js>"{value}"</js> as a placeholder for the actual property value. 093 * 094 * @return The annotation value. 095 */ 096 String link() default ""; 097}