/** * * Copyright 2018 Paul Schaub * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Smack's API for XEP-0394: Message Markup, which can be used to style message. Message Markup is an alternative to * XHTML-im to style message, which keeps the message body and the markup information strictly separated. *

Usage

*

* The most important class is the {@link org.jivesoftware.smackx.message_markup.element.MarkupElement} class, which * contains a Builder to construct message markup.. *

*

* To start creating a Message Markup Extension, call * {@link org.jivesoftware.smackx.message_markup.element.MarkupElement#getBuilder}. (Almost) all method calls documented * below will be made on the builder. *

*

* Whenever a method call receives a `start` and `end` index, `start` represents the first character, which is affected * by the styling, while `end` is the character *after* the last affected character. *

*

Inline styling

*

* Currently there are 3 styles available: *

*

* Those styles are available by calling `builder.setEmphasis(int start, int end)`, `builder.setDeleted(int start, int * end)` and `builder.setCode(int start, int end)`. *

*

* If you want to apply multiple inline styles to a section, you can do the following: *

* *
 * {@code
 * Set spanStyles = new HashSet<>();
 * styles.add(SpanElement.SpanStyle.emphasis);
 * styles.add(SpanElement.SpanStyle.deleted);
 * builder.addSpan(start, end, spanStyles);
 * }
 * 
*

* Note, that spans cannot overlap one another. *

*

Block Level Styling

*

* Available block level styles are: * Code blocks, which should be rendered as *

* *
 * blocks
 * of
 * code
 * 
* *

* To mark a section as code block, call builder.setCodeBlock(start, end). *

*

* To create a list, call MarkupElement.Builder.ListBuilder lbuilder = builder.beginList(), which will * return a list builder. On this you can call lbuilder.addEntry(start, end) to add an entry. *

*

* Note: If you add an entry, the start value MUST be equal to the end value of the previous added entry! *

*

* To end the list, call lbuilder.endList(), which will return the MessageElement builder. *

*

* To create a block quote, call builder.setBlockQuote(start, end). *

*

* Note that block level elements MUST NOT overlap each other boundaries, but may be fully contained (nested) within * each other. *

* @see XEP-0394: Message Markup */ package org.jivesoftware.smackx.message_markup.element;