本文整理汇总了Java中com.vladsch.flexmark.util.sequence.BasedSequence类的典型用法代码示例。如果您正苦于以下问题:Java BasedSequence类的具体用法?Java BasedSequence怎么用?Java BasedSequence使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
BasedSequence类属于com.vladsch.flexmark.util.sequence包,在下文中一共展示了BasedSequence类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: process
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void process(NodeTracker state, Node node) {
if (node instanceof Link) {
Node previous = node.getPrevious();
if (previous instanceof Text) {
final BasedSequence chars = previous.getChars();
//Se o nó anterior termina com '#' e é seguido pelo Link
if (chars.endsWith("#") && chars.isContinuedBy(node.getChars())) {
//Remove o caractere '#' do nó anterior.
previous.setChars(chars.subSequence(0, chars.length() - 1));
Twitter videoLink = new Twitter((Link) node);
videoLink.takeChildren(node);
node.unlink();
previous.insertAfter(videoLink);
state.nodeRemoved(node);
state.nodeAddedWithChildren(videoLink);
}
}
}
}
示例2: process
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void process(NodeTracker state, Node node) {
if (node instanceof Link) {
Node previous = node.getPrevious();
if (previous instanceof Text) {
final BasedSequence chars = previous.getChars();
//Se o nó anterior termina com 'B' e é seguido pelo Link
if (chars.endsWith("B") && chars.isContinuedBy(node.getChars())) {
//Remove o caractere 'B' do nó anterior.
previous.setChars(chars.subSequence(0, chars.length() - 1));
Button btn = new Button((Link) node);
btn.takeChildren(node);
node.unlink();
previous.insertAfter(btn);
state.nodeRemoved(node);
state.nodeAddedWithChildren(btn);
}
}
}
}
示例3: process
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void process(NodeTracker state, Node node) {
if (node instanceof Link) {
Node previous = node.getPrevious();
if (previous instanceof Text) {
final BasedSequence chars = previous.getChars();
//Se o nó anterior termina com '@' e é seguido pelo Link
if (chars.endsWith("@") && chars.isContinuedBy(node.getChars())) {
//Remove o caractere '@' do nó anterior.
previous.setChars(chars.subSequence(0, chars.length() - 1));
VideoLink videoLink = new VideoLink((Link) node);
videoLink.takeChildren(node);
node.unlink();
previous.insertAfter(videoLink);
state.nodeRemoved(node);
state.nodeAddedWithChildren(videoLink);
}
}
}
}
示例4: isLineCommented
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
public boolean isLineCommented(final int startOfLineOffset, final int endOfLineOffset) {
Commenter commenter = getCommenterRange(startOfLineOffset, endOfLineOffset);
if (commenter != null) {
String lineCommentPrefix = commenter.getLineCommentPrefix();
String blockCommentPrefix = commenter.getCommentedBlockCommentPrefix();
if (blockCommentPrefix == null) blockCommentPrefix = commenter.getBlockCommentPrefix();
String blockCommentSuffix = commenter.getCommentedBlockCommentSuffix();
if (blockCommentSuffix == null) blockCommentSuffix = commenter.getBlockCommentSuffix();
BasedSequence chars = myChars.subSequence(startOfLineOffset, endOfLineOffset);
BasedSequence trimmed = chars.trim();
return lineCommentPrefix != null && trimmed.startsWith(lineCommentPrefix)
|| blockCommentPrefix != null && blockCommentSuffix != null && trimmed.startsWith(blockCommentPrefix) && trimmed.endsWith(blockCommentSuffix);
} else {
return false;
}
}
示例5: insertSeparators
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
private static void insertSeparators(StringBuilder sb, @NotNull CharSequence number, int digitPos, @Nullable String separator, int separatorFrequency) {
int pos;
BasedSequence sequence = BasedSequenceImpl.of(number);
pos = number.length() - digitPos;
String out = "";
while (pos > separatorFrequency && separatorFrequency > 0) {
out = number.subSequence(pos - separatorFrequency, pos) + out;
pos -= separatorFrequency;
if (sequence.subSequence(0, pos).isBlank()) break;
out = separator + out;
}
if (pos > 0) {
out = number.subSequence(0, pos) + out;
}
sb.append(out);
}
示例6: findSequences
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public List<Range> findSequences(int startOffset, int endOffset) {
ArrayList<Range> sequences = new ArrayList<>();
Node astRoot = toAstRoot();
if (astRoot == null)
return sequences;
NodeVisitor visitor = new NodeVisitor(Collections.emptyList()) {
@Override
public void visit(Node node) {
BasedSequence chars = node.getChars();
if (isInSequence(startOffset, endOffset, chars))
sequences.add(new Range(chars.getStartOffset(), chars.getEndOffset()));
for (BasedSequence segment : node.getSegments()) {
if (isInSequence(startOffset, endOffset, segment))
sequences.add(new Range(segment.getStartOffset(), segment.getEndOffset()));
}
visitChildren(node);
}
};
visitor.visit(astRoot);
return sequences;
}
示例7: setTextChars
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void setTextChars(BasedSequence textChars) {
int textCharsLength = textChars.length();
textOpeningMarker = textChars.subSequence(0, 1);
text = textChars.subSequence(1, textCharsLength - 1).trim();
textClosingMarker = textChars.subSequence(textCharsLength - 1, textCharsLength);
}
示例8: Label
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
public Label(int type, BasedSequence openingMarker, BasedSequence text, BasedSequence closingMarker) {
super(openingMarker.baseSubSequence(openingMarker.getStartOffset(), closingMarker.getEndOffset()));
this.type = type;
this.openingMarker = openingMarker;
this.text = text;
this.closingMarker = closingMarker;
}
示例9: process
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void process(Delimiter opener, Delimiter closer, int delimitersUsed) {
// Normal case, wrap nodes between delimiters in emoji node.
// don't allow any spaces between delimiters
if (opener.getInput().subSequence(opener.getEndIndex(), closer.getStartIndex()).indexOfAny(BasedSequence.WHITESPACE_CHARS) == -1) {
Emoji emoji = new Emoji(opener.getTailChars(delimitersUsed), BasedSequence.NULL, closer.getLeadChars(delimitersUsed));
opener.moveNodesBetweenDelimitersTo(emoji, closer);
} else {
opener.convertDelimitersToText(delimitersUsed, closer);
}
}
示例10: process
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
public void process(Delimiter opener, Delimiter closer, int delimitersUsed) {
// Normal case, wrap nodes between delimiters in emoji node.
// don't allow any spaces between delimiters
if (opener.getInput().subSequence(opener.getEndIndex(), closer.getStartIndex()).indexOfAny(BasedSequence.WHITESPACE_CHARS) == -1) {
EmojiNode emoji = new EmojiNode(opener.getTailChars(delimitersUsed), BasedSequence.NULL, closer.getLeadChars(delimitersUsed));
opener.moveNodesBetweenDelimitersTo(emoji, closer);
} else {
opener.convertDelimitersToText(delimitersUsed, closer);
}
}
示例11: processProceedingCharacters
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
private void processProceedingCharacters(BasedSequence passedOver) {
for (char c : passedOver.toString().toCharArray()) {
if (c == '\r' || c == '\n') {
if (inParagraph) {
builder.addText(" ");
} else {
builder.addText(new String(new char[]{c}));
}
} else {
builder.addMarkup(new String(new char[]{c}));
}
}
}
示例12: nextMatch
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
@Override
@Nullable
final protected CaretMatch nextMatch(RegExMatcher matcher, BasedSequence chars, @NotNull Range range, @Nullable CaretMatch previousMatch) {
CaretMatch match = null;
boolean found;
found = previousMatch == null || matcher.find();
if (found) {
int start = matcher.start();
int end = matcher.end();
if (range.contains(start, end)) {
// see if there are captured groups, then we select the spanning range of the groups
int selStart = myBackwards ? end : start;
int selEnd = selStart;
int groupCount = matcher.groupCount();
if (groupCount > 0) {
selStart = matcher.end();
selEnd = matcher.start();
for (int i = 1; i <= groupCount; i++) {
if (selStart > matcher.start(i)) selStart = matcher.start(i);
if (selEnd < matcher.end(i)) selEnd = matcher.end(i);
}
}
match = getCaretMatch(matcher, selStart, selEnd);
} else {
int tmp = 0;
}
}
return match;
}
示例13: perform
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
protected boolean perform(@NotNull LineSelectionManager manager, @NotNull Caret caret, @NotNull Range range, @NotNull ArrayList<CaretState> createCarets) {
Editor editor = caret.getEditor();
final BasedSequence chars = BasedSequenceImpl.of(editor.getDocument().getCharsSequence());
boolean keepCaret = !isMoveFirstMatch();
T matcher = prepareMatcher(manager, caret, range, chars);
if (matcher != null) {
// forward search withing range in document
CaretMatch lastMatch = null;
while (true) {
CaretMatch match = nextMatch(matcher, chars, range, lastMatch);
if (match == null) break;
// found it, create or move caret here
if (!keepCaret) {
keepCaret = true;
if (isMoveFirstMatch()) {
caret.moveToOffset(match.caretOffset);
caret.setSelection(match.selectionStart, match.selectionEnd);
}
} else {
// create a new position if caret moved
LogicalPosition offset = editor.offsetToLogicalPosition(match.caretOffset);
LogicalPosition startOffset = editor.offsetToLogicalPosition(match.selectionStart);
LogicalPosition endOffset = editor.offsetToLogicalPosition(match.selectionEnd);
CaretState caretState = new CaretState(offset, startOffset, endOffset);
createCarets.add(caretState);
}
if (isSingleMatch() || match.caretOffset + match.matchLength >= chars.length()) break;
lastMatch = match;
}
}
return keepCaret || isSingleMatch();
}
示例14: InsertedRangeContext
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
public InsertedRangeContext(@NotNull BasedSequence charSequence, int beforeOffset, int afterOffset, int separators) {
this.charSequence = charSequence;
mySeparators = separators;
this.textLength = charSequence.length();
if (beforeOffset < 0) beforeOffset = 0;
if (afterOffset > textLength) afterOffset = textLength;
if (beforeOffset > afterOffset) beforeOffset = afterOffset;
if (afterOffset < beforeOffset) afterOffset = beforeOffset;
this.beforeOffset = beforeOffset;
this.afterOffset = afterOffset;
TextRange range = EditHelpers.getWordRangeAtOffsets(charSequence, beforeOffset, afterOffset, WORD_IDENTIFIER, false, true);
this.expandedBeforeOffset = range.getStartOffset();
this.expandedAfterOffset = range.getEndOffset();
this.expandedPrefix = expandedBeforeOffset > beforeOffset ? "" : charSequence.subSequence(expandedBeforeOffset, beforeOffset).toString();
this.expandedSuffix = expandedAfterOffset < afterOffset ? "" : charSequence.subSequence(afterOffset, expandedAfterOffset).toString();
this.inserted = charSequence.subSequence(beforeOffset, afterOffset).toString();
this.charBefore = beforeOffset > 0 && beforeOffset - 1 < textLength ? charSequence.charAt(beforeOffset - 1) : ' ';
this.charAfter = afterOffset < textLength ? charSequence.charAt(afterOffset) : ' ';
this.sBefore = String.valueOf(charBefore);
this.sAfter = String.valueOf(charAfter);
this.isWordStartAtStart = isWordStart(charSequence, beforeOffset, false);
this.isWordEndAtStart = isWordEnd(charSequence, beforeOffset, false);
this.isWordStartAtEnd = isWordStart(charSequence, afterOffset, false);
this.isWordEndAtEnd = isWordEnd(charSequence, afterOffset, false);
myWord = inserted;
myStudiedWord = StudiedWord.of(myWord, mySeparators);
myCaretDelta = 0;
myPrefixRemoved = false;
}
示例15: extractNumber
import com.vladsch.flexmark.util.sequence.BasedSequence; //导入依赖的package包/类
/**
* Extract a number from given sequence based on prefix/suffix, base and template
*
* @param charSequence character sequence from which to extract a number
* @return number or null if unable to extract
*/
@Nullable
public Long extractNumber(@NotNull CharSequence charSequence) {
BasedSequence chars = BasedSequenceImpl.of(charSequence);
if (!myOptions.getPrefix().isEmpty()) chars = chars.removePrefix(myOptions.getPrefix());
if (!myOptions.getSuffix().isEmpty()) chars = chars.removeSuffix(myOptions.getSuffix());
// see if we have a template and it matches somewhat
return null;
}