| | import org.jetbrains.annotations.NotNull; |
| | |
| | -import java.util.*; |
| | +import java.util.ArrayList; |
| | +import java.util.HashMap; |
| | import java.util.regex.Pattern; |
| | |
| | public class BracketedSpanParser implements InlineParserExtension { |
| | private static final Pattern ATTR_PATTERN = Pattern.compile( |
| | - "(?:\\.([\\w-]+))|" + |
| | - "(?:#([\\w-]+))|" + |
| | + "\\.([\\w-]+)|" + |
| | + "#([\\w-]+)|" + |
| | "(\\w+)=\"((?:\\\\\"|[^\"])*)\"" |
| | ); |
 |
| | final var content = input.subSequence( index + 1, closingBracket ); |
| | final var span = getBracketedSpan( |
| | - input, braceStart, braceEnd, |
| | - content |
| | + input, braceStart, braceEnd, content |
| | ); |
| | |
 |
| | final BasedSequence content |
| | ) { |
| | - final var attrText = |
| | - input.subSequence( braceStart + 1, braceEnd ).toString(); |
| | + final var attrSeq = input.subSequence( braceStart + 1, braceEnd ); |
| | final var attrs = new HashMap<String, String>(); |
| | final var classes = new ArrayList<String>(); |
| | - String id = null; |
| | + String id = ""; |
| | |
| | - final var matcher = ATTR_PATTERN.matcher( attrText ); |
| | + final var matcher = ATTR_PATTERN.matcher( attrSeq.toString() ); |
| | + |
| | while( matcher.find() ) { |
| | if( matcher.group( 1 ) != null ) { |
| | classes.add( matcher.group( 1 ) ); |
| | } |
| | else if( matcher.group( 2 ) != null ) { |
| | id = matcher.group( 2 ); |
| | } |
| | else if( matcher.group( 3 ) != null && matcher.group( 4 ) != null ) { |
| | final var key = matcher.group( 3 ); |
| | - final var rawValue = matcher.group( 4 ).replace( "\\\"", "\"" ); |
| | - attrs.put( key, rawValue ); |
| | + final var value = matcher.group( 4 ).replace( "\\\"", "\"" ); |
| | + |
| | + attrs.put( key, value ); |
| | } |
| | } |
| | |
| | - final var className = classes.isEmpty() ? null : String.join( |
| | - " ", |
| | - classes |
| | - ); |
| | - return new BracketedSpanNode( className, id, attrs, content ); |
| | + return new BracketedSpanNode( classes, id, attrs, content ); |
| | } |
| | |