/** * * 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. *
* 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. *
** 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. *
** 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;