Replacement for java.lang.String is needed

This commit is contained in:
Willem Cazander 2022-10-24 03:57:39 +02:00
parent be643fa4bb
commit ac1e1e5c43
27 changed files with 692 additions and 390 deletions

View file

@ -13,9 +13,9 @@ import love.distributedrebirth.bassboon.Bãß;
import love.distributedrebirth.bassboon.DefaultBãßBȍőnʸᴰ;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderEgg注;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4Unicode4DService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
@ -45,7 +45,7 @@ public class NotepadDeskApp extends AbstractDeskApp implements DeskAppRenderer,
};
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<DefaultBãßBȍőnʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_BUNDLE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_BUNDLE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderEgg注()
public VrGem4Unicode4DService locateVrGem4Unicode4DService(DefaultBãßBȍőnʸᴰ<NotepadDeskApp> boon) {

View file

@ -4,8 +4,8 @@ import love.distributedrebirth.bassboon.BãßBȍőnʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(optional = {BãßBȍőnAuthor注.class})
@ -13,8 +13,8 @@ public interface BãßBȍőnAuthorʸᴰ<T extends BãßBȍőnʸᴰ<T>> extends B
@BãßBȍőnPiratePhase注(dependencies = {BãßBȍőnPirateʸᴰ.βrahmanBoonLaw.class})
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnAuthorʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_NAME = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_COPYRIGHT = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_NAME = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_COPYRIGHT = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final String DEFAULT_NAME = "奴隸來自 仙上主天";
private static final String DEFAULT_COPYRIGHT = "©Δ∞ 仙上主天";

View file

@ -4,8 +4,8 @@ import love.distributedrebirth.bassboon.BãßBȍőnʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(optional = {BãßBȍőnDuytsFlüstern注.class})
@ -13,7 +13,7 @@ public interface BãßBȍőnDuytsFlüsternʸᴰ<T extends BãßBȍőnʸᴰ<T>> e
@BãßBȍőnPiratePhase注(dependencies = {BãßBȍőnPirateʸᴰ.βrahmanBoonLaw.class})
final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnDuytsFlüsternʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_PURPOSE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_PURPOSE = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final String DEFAULT_PURPOSE = "Undefined";
@BãßBȍőnSpiderWire注

View file

@ -5,8 +5,8 @@ import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.BãßBȍőnCoffinDuytschenᵗˣᵗ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(optional = {BãßBȍőnExport注.class})
@ -14,8 +14,8 @@ public interface BãßBȍőnExportʸᴰ<T extends BãßBȍőnʸᴰ<T>> extends B
@BãßBȍőnPiratePhase注(dependencies = {BãßBȍőnPirateʸᴰ.βrahmanBoonLaw.class})
final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnExportʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_ARTIFACT = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_GROUP = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ARTIFACT = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_GROUP = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnExportʸᴰ<?> boon;

View file

@ -4,88 +4,89 @@ import java.util.List;
import java.util.Map;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinGhost {
Object GHOST_OBJ(GhostKey鬼鑰匙 key);
Object GHOST_OBJ(StringGhostKey key);
@SuppressWarnings("unchecked")
default <Y> Y GHOST_OBJ(GhostKey鬼鑰匙 key, Class<Y> type) {
default <Y> Y GHOST_OBJ(StringGhostKey key, Class<Y> type) {
return (Y) GHOST_OBJ(key);
}
default String GHOST_STR(GhostKey鬼鑰匙 key) {
default String GHOST_STR(StringGhostKey key) {
return String.class.cast(GHOST_OBJ(key));
}
default Short GHOST_SHORT(GhostKey鬼鑰匙 key) {
default Short GHOST_SHORT(StringGhostKey key) {
return Short.class.cast(GHOST_OBJ(key));
}
default Character GHOST_CHAR(GhostKey鬼鑰匙 key) {
default Character GHOST_CHAR(StringGhostKey key) {
return Character.class.cast(GHOST_OBJ(key));
}
default Integer GHOST_INT(GhostKey鬼鑰匙 key) {
default Integer GHOST_INT(StringGhostKey key) {
return Integer.class.cast(GHOST_OBJ(key));
}
default Long GHOST_LONG(GhostKey鬼鑰匙 key) {
default Long GHOST_LONG(StringGhostKey key) {
return Long.class.cast(GHOST_OBJ(key));
}
default Boolean GHOST_BOOL(GhostKey鬼鑰匙 key) {
default Boolean GHOST_BOOL(StringGhostKey key) {
return Boolean.class.cast(GHOST_OBJ(key));
}
default Float GHOST_FLOAT(GhostKey鬼鑰匙 key) {
default Float GHOST_FLOAT(StringGhostKey key) {
return Float.class.cast(GHOST_OBJ(key));
}
default Double GHOST_DOUBLE(GhostKey鬼鑰匙 key) {
default Double GHOST_DOUBLE(StringGhostKey key) {
return Double.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default Map<String,Object> GHOST_MAP_OBJ(GhostKey鬼鑰匙 key) {
default Map<String,Object> GHOST_MAP_OBJ(StringGhostKey key) {
return Map.class.cast(GHOST_OBJ(key));
}
default Object GHOST_MAP_OBJ_VALUE(GhostKey鬼鑰匙 key, String mapKey) {
default Object GHOST_MAP_OBJ_VALUE(StringGhostKey key, String mapKey) {
return GHOST_MAP_OBJ(key).get(mapKey);
}
@SuppressWarnings("unchecked")
default Map<String,String> GHOST_MAP_STR(GhostKey鬼鑰匙 key) {
default Map<String,String> GHOST_MAP_STR(StringGhostKey key) {
return Map.class.cast(GHOST_OBJ(key));
}
default String GHOST_MAP_STR_VALUE(GhostKey鬼鑰匙 key, String mapKey) {
default String GHOST_MAP_STR_VALUE(StringGhostKey key, String mapKey) {
return GHOST_MAP_STR(key).get(mapKey);
}
@SuppressWarnings("unchecked")
default Map<String,Integer> GHOST_MAP_INT(GhostKey鬼鑰匙 key) {
default Map<String,Integer> GHOST_MAP_INT(StringGhostKey key) {
return Map.class.cast(GHOST_OBJ(key));
}
default Integer GHOST_MAP_INT_VALUE(GhostKey鬼鑰匙 key, String mapKey) {
default Integer GHOST_MAP_INT_VALUE(StringGhostKey key, String mapKey) {
return GHOST_MAP_INT(key).get(mapKey);
}
@SuppressWarnings("unchecked")
default List<Object> GHOST_LIST_OBJ(GhostKey鬼鑰匙 key) {
default List<Object> GHOST_LIST_OBJ(StringGhostKey key) {
return List.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default List<String> GHOST_LIST_STR(GhostKey鬼鑰匙 key) {
default List<String> GHOST_LIST_STR(StringGhostKey key) {
return List.class.cast(GHOST_OBJ(key));
}
@SuppressWarnings("unchecked")
default List<Integer> GHOST_LIST_INT(GhostKey鬼鑰匙 key) {
default List<Integer> GHOST_LIST_INT(StringGhostKey key) {
return List.class.cast(GHOST_OBJ(key));
}
}

View file

@ -4,17 +4,18 @@ import java.util.ArrayList;
import java.util.HashMap;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinGhostSpell extends BãßBȍőnCoffinGhost {
Object PUT_GHOST(GhostKey鬼鑰匙 key, Object value);
Object PUT_GHOST(StringGhostKey key, Object value);
default void PUT_GHOST_MAP(GhostKey鬼鑰匙 key) {
default void PUT_GHOST_MAP(StringGhostKey key) {
PUT_GHOST(key, new HashMap<>());
}
default void PUT_GHOST_LIST(GhostKey鬼鑰匙 key) {
default void PUT_GHOST_LIST(StringGhostKey key) {
PUT_GHOST(key, new ArrayList<>());
}

View file

@ -7,6 +7,7 @@ import java.util.Map;
import java.util.function.Function;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnCoffinGhostSpellLock extends BãßBȍőnCoffinGhostSpell {
@ -18,9 +19,9 @@ public interface BãßBȍőnCoffinGhostSpellLock extends BãßBȍőnCoffinGhostS
}
static BãßBȍőnCoffinGhostSpellLock instanceᴺᵉʷ() {
Function<Map<GhostKey鬼鑰匙,Object>,BãßBȍőnCoffinGhost> keyMaker = v -> {
Map<GhostKey鬼鑰匙,Object> summonedGhosts = new HashMap<>(v);
for (GhostKey鬼鑰匙 entity:v.keySet()) {
Function<Map<StringGhostKey,Object>,BãßBȍőnCoffinGhost> keyMaker = v -> {
Map<StringGhostKey,Object> summonedGhosts = new HashMap<>(v);
for (StringGhostKey entity:v.keySet()) {
Object spirit = summonedGhosts.get(entity);
if (spirit instanceof List) {
summonedGhosts.put(entity, Collections.unmodifiableList((List<?>) spirit));
@ -31,13 +32,13 @@ public interface BãßBȍőnCoffinGhostSpellLock extends BãßBȍőnCoffinGhostS
}
return new BãßBȍőnCoffinGhost() {
@Override
public Object GHOST_OBJ(GhostKey鬼鑰匙 key) {
public Object GHOST_OBJ(StringGhostKey key) {
return summonedGhosts.get(key);
}
};
};
return new BãßBȍőnCoffinGhostSpellLock() {
private final Map<GhostKey鬼鑰匙,Object> ouijaBoard = new HashMap<>();
private final Map<StringGhostKey,Object> ouijaBoard = new HashMap<>();
@Override
public BãßBȍőnCoffinGhost LOCK() {
@ -45,12 +46,12 @@ public interface BãßBȍőnCoffinGhostSpellLock extends BãßBȍőnCoffinGhostS
}
@Override
public Object GHOST_OBJ(GhostKey鬼鑰匙 key) {
public Object GHOST_OBJ(StringGhostKey key) {
return ouijaBoard.get(key);
}
@Override
public Object PUT_GHOST(GhostKey鬼鑰匙 key, Object value) {
public Object PUT_GHOST(StringGhostKey key, Object value) {
return ouijaBoard.put(key, value);
}
};

View file

@ -1,50 +0,0 @@
package love.distributedrebirth.bassboon.death;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import love.distributedrebirth.bassboon.Bãß;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.jpp.lang.StringDEC6B;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface GhostKey鬼鑰匙 extends StringDEC6B {
enum 𓉡 {
ײןןזןןןזזזןײ;
private final Map<Class<?>, AtomicInteger> 精神龸鑰匙 = Collections.synchronizedMap(new HashMap<>());
private final int 開始龸價值龸阿瑪利亞 = 0xB00BBABE - Bãß.ℭỗᶇṧⱦᶏꬼȶʂ.INT_ONE;
}
static GhostKey鬼鑰匙 asciiᴳʰᵒˢᵗ() {
Class<?> parentClass = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).getCallerClass();
AtomicInteger cnt = 𓉡.ײןןזןןןזזזןײ.精神龸鑰匙.get(parentClass);
if (cnt == null) {
cnt = new AtomicInteger(𓉡.ײןןזןןןזזזןײ.開始龸價值龸阿瑪利亞);
𓉡.ײןןזןןןזזזןײ.精神龸鑰匙.put(parentClass, cnt);
}
int fieldNumber = cnt.incrementAndGet();
StringBuilder buf = new StringBuilder();
buf.append(Integer.toHexString(parentClass.hashCode()).toUpperCase()); // our callers are named Ꝑŕḯṿª so use hashCode
buf.append(StringDEC6B.BasicAscii.UNDERSCORE);
buf.append(Integer.toHexString(fieldNumber).toUpperCase());
return asciiᴺᵉʷ(buf.toString());
}
static GhostKey鬼鑰匙 asciiᴺᵉʷ(String text) {
for (int i=0;i<text.length();i++) {
if (!BasicAscii.UNICODE.isValidKey(text.charAt(i))) {
throw new IllegalArgumentException("Invalid character: "+text.charAt(i));
}
}
return new GhostKey鬼鑰匙() {
@Override
public String toString() {
return text;
}
};
}
}

View file

@ -4,11 +4,39 @@ import love.distributedrebirth.bassboon.Bãß;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface StringDEC6B extends StringProxy {
public final class StringDEC6B implements StringType<StringDEC6B> {
private final String text;
public StringDEC6B(String text) {
this(text, false);
}
public StringDEC6B(String text, boolean isKey) {
if (text == null) {
throw new NullPointerException("Invalid DEC6B text: null");
}
for (int i=0;i<text.length();i++) {
if (!BasicAscii.UNICODE.isValid(text.charAt(i), isKey)) {
throw new IllegalArgumentException("Invalid DEC6B character: "+text.charAt(i));
}
}
this.text = text;
}
@Override
public String toString() {
return text;
}
@Override
public StringDEC6B wrapᴼᶠ(String str) {
return new StringDEC6B(str);
}
// BASIC uses https://en.wikipedia.org/wiki/Six-bit_character_code#Examples_of_six-bit_ASCII_variants
enum BasicAscii {
UNICODE;
protected enum BasicAscii {
UNICODE; // ^^^ move to jpp.text
public static char UNDERSCORE = '_'; // mmmm maybe use the enum for all control flow chars only ...
@ -29,20 +57,10 @@ public interface StringDEC6B extends StringProxy {
"[\\]^" +
UNDERSCORE;
public boolean isValid(char c) {
for (int i=0;i<VALUES.length();i++) {
if (c == VALUES.charAt(i)) {
return true;
}
}
return false;
}
public boolean isValidKey(char c) {
for (int i=0;i<VALUES_KEY.length();i++) {
if (c == VALUES_KEY.charAt(i)) {
public boolean isValid(char c, boolean isKey) {
String allowed = isKey?VALUES_KEY:VALUES;
for (int i=0;i<allowed.length();i++) {
if (c == allowed.charAt(i)) {
return true;
}
}
@ -50,7 +68,7 @@ public interface StringDEC6B extends StringProxy {
}
public byte toSixBit(char c) {
if (!isValid(c)) {
if (!isValid(c, false)) {
throw new IllegalArgumentException("Invalid DEC6B character: "+c);
}
byte result = 0;
@ -63,18 +81,4 @@ public interface StringDEC6B extends StringProxy {
return result;
}
}
static StringDEC6B asciiᴺᵉʷ(String text) {
for (int i=0;i<text.length();i++) {
if (!BasicAscii.UNICODE.isValid(text.charAt(i))) {
throw new IllegalArgumentException("Invalid DEC6B character: "+text.charAt(i));
}
}
return new StringDEC6B() {
@Override
public String toString() {
return text;
}
};
}
}

View file

@ -0,0 +1,45 @@
package love.distributedrebirth.bassboon.jpp.lang;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import love.distributedrebirth.bassboon.Bãß;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public final class StringGhostKey implements StringTypeConst<StringGhostKey> {
private final static Map<Class<?>, AtomicInteger> क्षस = Collections.synchronizedMap(new HashMap<>());
private final static int 開始龸價值龸阿瑪利亞 = 0xB00BBABE - Bãß.ℭỗᶇṧⱦᶏꬼȶʂ.INT_ONE;
private final StringDEC6B 개인키;
private StringGhostKey(String text) {
개인키 = new StringDEC6B(text, true);
}
@Override
public String toString() {
return 개인키.toString();
}
public static StringGhostKey asciiᴺᵉʷ(String text) {
return new StringGhostKey(text);
}
public static StringGhostKey asciiᴳʰᵒˢᵗ() {
Class<?> ײןןזןןןזזזןײ = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).getCallerClass();
AtomicInteger 𓉡 = क्षस.get(ײןןזןןןזזזןײ);
if (𓉡 == Bãß.ℭỗᶇṧⱦᶏꬼȶʂ.PTR_VOID) {
𓉡 = new AtomicInteger(開始龸價值龸阿瑪利亞);
क्षस.put(ײןןזןןןזזזןײ, 𓉡);
}
int หมายเลขสนาม = 𓉡.incrementAndGet();
StringBuilder تخزين = new StringBuilder();
تخزين.append(Integer.toHexString(ײןןזןןןזזזןײ.hashCode()).toUpperCase()); // our callers are named Ꝑŕḯṿª
تخزين.append(StringDEC6B.BasicAscii.UNDERSCORE);
تخزين.append(Integer.toHexString(หมายเลขสนาม).toUpperCase());
return asciiᴺᵉʷ(تخزين.toString());
}
}

View file

@ -1,205 +0,0 @@
package love.distributedrebirth.bassboon.jpp.lang;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Locale;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface StringProxy {
String toString();
default char charAt(int index) {
return toString().charAt(index);
}
default int codePointAt(int index) {
return toString().codePointAt(index);
}
default int codePointBefore(int index) {
return toString().codePointBefore(index);
}
default int codePointCount(int beginIndex, int endIndex) {
return toString().codePointCount(beginIndex, endIndex);
}
default int compareTo(String anotherString) {
return toString().compareTo(anotherString);
}
default int compareToIgnoreCase(String str) {
return toString().compareToIgnoreCase(str);
}
default String concat(String str) {
return toString().concat(str);
}
default boolean contains(CharSequence s) {
return toString().contains(s);
}
default boolean contentEquals(CharSequence cs) {
return toString().contentEquals(cs);
}
default boolean contentEquals(StringBuffer sb) {
return toString().contentEquals(sb);
}
default boolean endsWith(String suffix) {
return toString().endsWith(suffix);
}
default boolean equalsIgnoreCase(String anotherString) {
return toString().equalsIgnoreCase(anotherString);
}
default byte[] getBytes() {
return toString().getBytes();
}
default byte[] getBytes(Charset charset) {
return toString().getBytes(charset);
}
default byte[] getBytes(String charsetName) throws UnsupportedEncodingException {
return toString().getBytes(charsetName);
}
default void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) {
toString().getChars(srcBegin, srcEnd, dst, dstBegin);
}
default int indexOf(int ch) {
return toString().indexOf(ch);
}
default int indexOf(int ch, int fromIndex) {
return toString().indexOf(ch, fromIndex);
}
default int indexOf(String str) {
return toString().indexOf(str);
}
default int indexOf(String str, int fromIndex) {
return toString().indexOf(str, fromIndex);
}
default String intern() {
return toString().intern();
}
default boolean isEmpty() {
return toString().isEmpty();
}
default int lastIndexOf(int ch) {
return toString().lastIndexOf(ch);
}
default int lastIndexOf(int ch, int fromIndex) {
return toString().lastIndexOf(ch, fromIndex);
}
default int lastIndexOf(String str) {
return toString().lastIndexOf(str);
}
default int lastIndexOf(String str, int fromIndex) {
return toString().lastIndexOf(str, fromIndex);
}
default int length() {
return toString().length();
}
default boolean matches(String regex) {
return toString().matches(regex);
}
default int offsetByCodePoints(int index, int codePointOffset) {
return toString().offsetByCodePoints(index, codePointOffset);
}
default boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) {
return toString().regionMatches(ignoreCase, toffset, other, ooffset, len);
}
default boolean regionMatches(int toffset, String other, int ooffset, int len) {
return toString().regionMatches(toffset, other, ooffset, len);
}
default String replace(char oldChar, char newChar) {
return toString().replace(oldChar, newChar);
}
default String replace(CharSequence target, CharSequence replacement) {
return toString().replace(target, replacement);
}
default String replaceAll(String regex, String replacement) {
return toString().replaceAll(regex, replacement);
}
default String replaceFirst(String regex, String replacement) {
return toString().replaceFirst(regex, replacement);
}
default String[] split(String regex) {
return toString().split(regex);
}
default String[] split(String regex, int limit) {
return toString().split(regex, limit);
}
default boolean startsWith(String prefix) {
return toString().startsWith(prefix);
}
default boolean startsWith(String prefix, int toffset) {
return toString().startsWith(prefix, toffset);
}
default CharSequence subSequence(int beginIndex, int endIndex) {
return toString().subSequence(beginIndex, endIndex);
}
default String substring(int beginIndex) {
return toString().substring(beginIndex);
}
default String substring(int beginIndex, int endIndex) {
return toString().substring(beginIndex, endIndex);
}
default char[] toCharArray() {
return toString().toCharArray();
}
default String toLowerCase() {
return toString().toLowerCase();
}
default String toLowerCase(Locale locale) {
return toString().toLowerCase(locale);
}
default String toUpperCase() {
return toString().toUpperCase();
}
default String toUpperCase(Locale locale) {
return toString().toUpperCase(locale);
}
default String trim() {
return toString().trim();
}
}

View file

@ -3,7 +3,7 @@ package love.distributedrebirth.bassboon.jpp.lang;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface StringTweet extends StringProxy {
public interface StringTweet extends StringTypeConst<StringTweet> {
public static Class<Length035> MAX_035 = Length035.class;
public static Class<Length070> MAX_070 = Length070.class;

View file

@ -0,0 +1,143 @@
package love.distributedrebirth.bassboon.jpp.lang;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface StringType<T extends StringType<T>> extends StringTypeConst<T> {
T wrapᴼᶠ(String str);
@SuppressWarnings("unchecked")
default T[] wrapᴼᶠ(String[] arr) {
List<T> result = new ArrayList<>();
for (int i=0;i<arr.length;i++) {
result.add(wrapᴼᶠ(arr[i]));
}
return (T[]) result.toArray();
}
// ---- Hide implementation wrapper
// // Protected methods in interfaces would be nice, else use this;
// public interface StringTypeWrapper {
//
// StringType<?> wrapᴼᶠ(String str);
// }
// enum Factory {
// IMPL;
//
// @SuppressWarnings("unchecked")
// protected final <Y> Y wrapᴼᶠ(StringType<?> stringType, String str) {
// try {
// for (Field field:stringType.getClass().getDeclaredFields()) {
// if (!Modifier.isStatic(field.getModifiers())) {
// continue;
// }
// if (!StringTypeWrapper.class.isAssignableFrom(field.getType())) {
// continue;
// }
// StringTypeWrapper wrapper = (StringTypeWrapper) field.get(null);
// return (Y) wrapper.wrapᴼᶠ(str);
// }
// throw new RuntimeException("Missing static field with type: "+StringTypeWrapper.class);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
//
// @SuppressWarnings("unchecked")
// protected final <Y> Y[] wrapᴼᶠ(StringType<?> stringType, String[] arr) {
// List<Y> result = new ArrayList<>();
// for (int i=0;i<arr.length;i++) {
// result.add(wrapᴼᶠ(stringType, arr[i]));
// }
// return (Y[]) result.toArray();
// }
// }
// ---- Local
default T concat(T str) {
return wrapᴼᶠ(toString().concat(str.toString()));
}
default T replaceAll(T regex, T replacement) {
return wrapᴼᶠ(toString().replaceAll(regex.toString(), replacement.toString()));
}
default T replaceFirst(T regex, T replacement) {
return wrapᴼᶠ(toString().replaceFirst(regex.toString(), replacement.toString()));
}
default T[] split(T regex) {
return wrapᴼᶠ(toString().split(regex.toString()));
}
default T[] split(T regex, int limit) {
return wrapᴼᶠ(toString().split(regex.toString(), limit));
}
// ---- String
default T concat(String str) {
return wrapᴼᶠ(toString().concat(str));
}
// @Deprecated
// default T replace(char oldChar, char newChar) {
// return wrapᴼᶠ(toString().replace(oldChar, newChar));
// }
//
// @Deprecated
// default T replace(CharSequence target, CharSequence replacement) {
// return wrapᴼᶠ(toString().replace(target, replacement));
// }
default T replaceAll(String regex, String replacement) {
return wrapᴼᶠ(toString().replaceAll(regex, replacement));
}
default T replaceFirst(String regex, String replacement) {
return wrapᴼᶠ(toString().replaceFirst(regex, replacement));
}
default T[] split(String regex) {
return wrapᴼᶠ(toString().split(regex));
}
default T[] split(String regex, int limit) {
return wrapᴼᶠ(toString().split(regex, limit));
}
default T substring(int beginIndex) {
return wrapᴼᶠ(toString().substring(beginIndex));
}
default T substring(int beginIndex, int endIndex) {
return wrapᴼᶠ(toString().substring(beginIndex, endIndex));
}
default T toLowerCase() {
return wrapᴼᶠ(toString().toLowerCase());
}
default T toLowerCase(Locale locale) {
return wrapᴼᶠ(toString().toLowerCase(locale));
}
default T toUpperCase() {
return wrapᴼᶠ(toString().toUpperCase());
}
default T toUpperCase(Locale locale) {
return wrapᴼᶠ(toString().toUpperCase(locale));
}
default T trim() {
return wrapᴼᶠ(toString().trim());
}
}

View file

@ -0,0 +1,299 @@
package love.distributedrebirth.bassboon.jpp.lang;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
/**
* String without any char or byte methods.
*/
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface StringTypeConst<T extends StringTypeConst<T>> extends Comparable<T>, Iterable<Integer> /*, CharSequence */ {
// ---- Local
String toString();
default long lengthBytes() {
return toString().length() + toString().length();
}
default long lengthChars() {
return toString().length();
}
default long lengthCodePoints() {
return toString().codePointCount(0, toString().length());
}
default int codePointAtStream(int index) {
return toString().codePoints().skip(index).iterator().next();
}
default int indexOfStream(int codePoint) {
return indexOfStream(codePoint, 0);
}
default int indexOfStream(int codePoint, int fromIndex) {
return searchIndexOfStream(codePoint, fromIndex, true);
}
default int lastIndexOfStream(int codePoint) {
return lastIndexOfStream(codePoint, 0);
}
default int lastIndexOfStream(int codePoint, int fromIndex) {
return searchIndexOfStream(codePoint, fromIndex, false);
}
// slow and untested
default int searchIndexOfStream(int codePoint, int fromIndex, boolean returnFirstIndex) {
AtomicBoolean done = new AtomicBoolean(false);
AtomicInteger index = new AtomicInteger(fromIndex);
AtomicInteger result = new AtomicInteger(fromIndex);
toString().codePoints().skip(fromIndex).forEach(v -> {
if (v == codePoint && !done.get()) {
done.set(returnFirstIndex);
result.set(index.get());
}
index.incrementAndGet();
});
return result.get();
}
// ---- Typed
default boolean contains(T s) {
return toString().contains(s.toString());
}
default boolean contentEquals(T cs) {
return toString().contentEquals(cs.toString());
}
default int compareToIgnoreCase(T str) {
return toString().compareToIgnoreCase(str.toString());
}
default boolean endsWith(T suffix) {
return toString().endsWith(suffix.toString());
}
default boolean equalsIgnoreCase(T anotherString) {
return toString().equalsIgnoreCase(anotherString.toString());
}
default int indexOf(T str) {
return toString().indexOf(str.toString());
}
default int indexOf(T str, int fromIndex) {
return toString().indexOf(str.toString(), fromIndex);
}
default boolean startsWith(T prefix) {
return toString().startsWith(prefix.toString());
}
default boolean startsWith(T prefix, int toffset) {
return toString().startsWith(prefix.toString(), toffset);
}
default int lastIndexOf(T str) {
return toString().lastIndexOf(str.toString());
}
default int lastIndexOf(T str, int fromIndex) {
return toString().lastIndexOf(str.toString(), fromIndex);
}
default boolean matches(T regex) {
return toString().matches(regex.toString());
}
default boolean regionMatches(boolean ignoreCase, int toffset, T other, int ooffset, int len) {
return toString().regionMatches(ignoreCase, toffset, other.toString(), ooffset, len);
}
default boolean regionMatches(int toffset, T other, int ooffset, int len) {
return toString().regionMatches(toffset, other.toString(), ooffset, len);
}
// @Deprecated
// default byte[] getBytes(T charsetName) throws UnsupportedEncodingException {
// return toString().getBytes(charsetName.toString());
// }
// ---- Iterable
default Iterator<Integer> iterator() {
return toString().codePoints().iterator();
}
// ---- Comparable
default int compareTo(T anotherString) {
return toString().compareTo(anotherString.toString());
}
// ---- CharSequence
// @Deprecated
// default char charAt(int index) {
// return toString().charAt(index);
// }
//
// default IntStream chars() {
// return toString().chars();
// }
default IntStream codePoints() {
return toString().codePoints();
}
// @Deprecated
// default CharSequence subSequence(int beginIndex, int endIndex) {
// return toString().subSequence(beginIndex, endIndex);
// }
//
// @Deprecated
// default int length() {
// return toString().length(); // <=== docs are lying, it only works on charAt and works only with ascii
// }
// ---- String
// @Deprecated
// default int codePointAt(int index) {
// return toString().codePointAt(index); // <=== method gives wrong results
// }
//
// @Deprecated
// default int codePointBefore(int index) {
// return toString().codePointBefore(index);
// }
//
// @Deprecated // seems to work
// default int codePointCount(int beginIndex, int endIndex) {
// return toString().codePointCount(beginIndex, endIndex);
// }
default int compareToIgnoreCase(String str) {
return toString().compareToIgnoreCase(str);
}
// @Deprecated
// default boolean contains(CharSequence s) {
// return toString().contains(s);
// }
//
// @Deprecated
// default boolean contentEquals(CharSequence cs) {
// return toString().contentEquals(cs);
// }
default boolean contentEquals(StringBuffer sb) {
return toString().contentEquals(sb);
}
default boolean endsWith(String suffix) {
return toString().endsWith(suffix);
}
default boolean equalsIgnoreCase(String anotherString) {
return toString().equalsIgnoreCase(anotherString);
}
// @Deprecated
// default byte[] getBytes() {
// return toString().getBytes();
// }
//
// @Deprecated
// default byte[] getBytes(Charset charset) {
// return toString().getBytes(charset);
// }
//
// @Deprecated
// default byte[] getBytes(String charsetName) throws UnsupportedEncodingException {
// return toString().getBytes(charsetName);
// }
//
// @Deprecated
// default void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) {
// toString().getChars(srcBegin, srcEnd, dst, dstBegin);
// }
//
// @Deprecated
// default int indexOf(int ch) {
// return toString().indexOf(ch);
// }
//
// @Deprecated
// default int indexOf(int ch, int fromIndex) {
// return toString().indexOf(ch, fromIndex);
// }
default int indexOf(String str) {
return toString().indexOf(str);
}
default int indexOf(String str, int fromIndex) {
return toString().indexOf(str, fromIndex);
}
default boolean isEmpty() {
return toString().isEmpty();
}
default boolean startsWith(String prefix) {
return toString().startsWith(prefix);
}
default boolean startsWith(String prefix, int toffset) {
return toString().startsWith(prefix, toffset);
}
// @Deprecated
// default int lastIndexOf(int ch) {
// return toString().lastIndexOf(ch);
// }
//
// @Deprecated
// default int lastIndexOf(int ch, int fromIndex) {
// return toString().lastIndexOf(ch, fromIndex);
// }
default int lastIndexOf(String str) {
return toString().lastIndexOf(str);
}
default int lastIndexOf(String str, int fromIndex) {
return toString().lastIndexOf(str, fromIndex);
}
default boolean matches(String regex) {
return toString().matches(regex);
}
// @Deprecated
// default int offsetByCodePoints(int index, int codePointOffset) {
// return toString().offsetByCodePoints(index, codePointOffset);
// }
default boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) {
return toString().regionMatches(ignoreCase, toffset, other, ooffset, len);
}
default boolean regionMatches(int toffset, String other, int ooffset, int len) {
return toString().regionMatches(toffset, other, ooffset, len);
}
// @Deprecated
// default char[] toCharArray() {
// return toString().toCharArray();
// }
}

View file

@ -3,22 +3,21 @@ package love.distributedrebirth.bassboon.jpp.lang;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum StringUnicode {
REAL;
public final class StringUnicode implements StringType<StringUnicode> {
public long lengthChars(String text) {
return text.length();
private final String text;
public StringUnicode(String text) {
this.text = text;
}
public long lengthCodePoints(String text) {
return text.codePoints().count();
@Override
public String toString() {
return text;
}
public long codePointCount(String text) {
return text.codePointCount(0, text.length());
}
public int codePointAt(String text, int index) {
return text.codePoints().skip(index).iterator().next();
@Override
public StringUnicode wrapᴼᶠ(String str) {
return new StringUnicode(str);
}
}

View file

@ -1,10 +1,17 @@
package love.distributedrebirth.bassboon.jpp.lang.number;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
import love.distributedrebirth.bassboon.Bãß;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.jpp.util.PrimitiveByteIterator;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface NumberValue {
public interface NumberValue extends Iterable<NumberValue.NumberValueStep> {
//String toString();
@ -12,5 +19,35 @@ public interface NumberValue {
//String toString(...
PrimitiveByteIterator iterator();
PrimitiveByteIterator iteratorBytes();
default Iterator<NumberValueStep> iteratorAsBigInteger() {
List<Byte> bytes = new ArrayList<>();
iteratorBytes().forEachRemaining((Consumer<? super Byte>)v -> {
bytes.add(v);
});
byte[] byteArray = new byte[bytes.size()];
for (int i=0;i<byteArray.length;i++) {
byteArray[i] = bytes.get(i);
}
return new Iterator<NumberValue.NumberValueStep>() {
private BigInteger value = new BigInteger(byteArray);
@Override
public NumberValueStep next() {
value = value.subtract(BigInteger.ONE);
return NumberValueStep.ONE;
}
@Override
public boolean hasNext() {
return value.compareTo(BigInteger.ZERO) != Bãß.ℭỗᶇṧⱦᶏꬼȶʂ.INT_ZERO;
}
};
}
interface NumberValueStep {
public static final NumberValueStep ONE = new NumberValueStep() {};
}
}

View file

@ -6,8 +6,8 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnDuytsFlüstern注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿªḕ響ᴼᶠ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
import love.distributedrebirth.bassboon.yd.abacus.BãßBȍőnAbacusEnumBase響ᴼᶠ;
import love.distributedrebirth.bassboon.yd.abacus.BãßBȍőnAbacusSetʸᴰ;
@ -17,8 +17,8 @@ import love.distributedrebirth.bassboon.yd.abacus.BãßBȍőnAbacusSetʸᴰ;
public interface BãßBȍőnNumberMatrixʸᴰ<T extends BãßBȍőnNumberMatrixʸᴰ<T>> extends BãßBȍőnAbacusSetʸᴰ<T> {
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnNumberMatrixʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_MATRIX_DIMENSION = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_NUMBER_BLOCK = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_MATRIX_DIMENSION = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_NUMBER_BLOCK = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnNumberMatrixʸᴰ<?> boon;

View file

@ -14,18 +14,18 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnDuytschen注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnAbacusEnumBaseʸᴰ<T extends BãßBȍőnʸᴰ<T> & AbacusEnum & BãßBȍőnAbacus<T>> extends AbacusEnum, BãßBȍőnAbacus<T>, DefaultBãßBȍőnʸᴰ<T> {
@BãßBȍőnPiratePhase注(dependencies = {BãßBȍőnPirateʸᴰ.βrahmanBoonBereshit.class})
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnAbacusEnumBaseʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_RANK_ONE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_LENGTH = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_RANK_RING_TONE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_MAP_TONE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_RANK_ONE = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_LENGTH = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_RANK_RING_TONE = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_MAP_TONE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnAbacusEnumBaseʸᴰ<?> boon;

View file

@ -6,15 +6,15 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public interface BãßBȍőnAbacusZombieʸᴰ<T extends BãßBȍőnʸᴰ<T>, K extends BãßBȍőnAbacusZombieBullet> extends DefaultBãßBȍőnʸᴰ<T> {
@BãßBȍőnPiratePhase注(dependencies = {BãßBȍőnPirateʸᴰ.βrahmanBoonBereshit.class})
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnAbacusZombieʸᴰ<?,?>> {
private static final GhostKey鬼鑰匙 GHOST_ZOMBIE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ZOMBIE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnAbacusZombieʸᴰ<?,?> boon;

View file

@ -19,9 +19,9 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnDuytsFlüstern響ᴼᶠ
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPiratePhase注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnPirateʸᴰ;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderEgg注;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(required = {BãßBȍőnDuytsFlüstern注.class})
@ -35,7 +35,7 @@ public interface BãßBȍőnMBeanServerʸᴰ<T extends BãßBȍőnʸᴰ<T>> exte
protected static final String STR_COLON = ":";
protected static final String STR_IS = "=";
protected static final String STR_COMMA = ",";
private static final GhostKey鬼鑰匙 GHOST_JMX = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_JMX = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnMBeanServerʸᴰ<?> boon;

View file

@ -27,11 +27,11 @@ public class NumberMatrixFactoryTest {
}
@Test
public void testFilmRoles() {
public void testFilmSizes() {
for (int i=2;i<4;i++) {
NumberMatrixSet film = NumberMatrixFactory.ײاللهזأَكْبَرײ.geefFilmSet(i);
Assertions.assertEquals(i, film.geefDimensie());
System.out.println("dimension: "+film.geefDimensie()+" size: "+film.waardes().length);
Assertions.assertEquals(film.waardes().length, film.waardes()[0].teŀráàmGroote());
}
}
}

View file

@ -11,6 +11,13 @@ public class StringTweetTest {
@Test
public void testTweetSmall() {
StringTweet tweet = StringTweet.tweetᴺᵉʷ("test", StringTweet.MAX_280);
Assertions.assertEquals(4, tweet.length());
Assertions.assertEquals(4, tweet.lengthChars());
}
@Test
public void testTweetCompare() {
StringTweet tweet1 = StringTweet.tweetᴺᵉʷ("test", StringTweet.MAX_140);
StringTweet tweet2 = StringTweet.tweetᴺᵉʷ("test", StringTweet.MAX_280);
Assertions.assertEquals(0, tweet1.compareTo(tweet2));
}
}

View file

@ -18,47 +18,67 @@ public class StringUnicodeTest {
String china4 = "";
String china = china1 + china2 + china3 + china4;
StringUnicode testStr = new StringUnicode(test);
StringUnicode countStr = new StringUnicode(count);
StringUnicode chinaStr = new StringUnicode(china);
@Test
public void testWrapper() {
Assertions.assertEquals(5, chinaStr.concat(count).lengthCodePoints());
}
@Test
public void testCountChina() {
Assertions.assertEquals(4, china.length());
Assertions.assertEquals(4, StringUnicode.REAL.lengthCodePoints(china));
Assertions.assertEquals(4, chinaStr.lengthChars());
Assertions.assertEquals(4, chinaStr.lengthCodePoints());
}
@Test
public void testCountOne() {
Assertions.assertEquals(1, count.length());
Assertions.assertEquals(1, StringUnicode.REAL.lengthCodePoints(count));
Assertions.assertEquals(1, countStr.lengthCodePoints());
}
@Test
public void testStringLength() {
Assertions.assertNotEquals(StringUnicode.REAL.lengthCodePoints(test), test.length());
Assertions.assertNotEquals(testStr.lengthCodePoints(), test.length());
Assertions.assertEquals(testStr.lengthChars(), test.length());
}
@Test
public void testStringChars() {
Assertions.assertEquals(StringUnicode.REAL.lengthChars(test), test.length());
}
@Test
public void testStringCodePointCount() {
Assertions.assertEquals(StringUnicode.REAL.lengthCodePoints(test), StringUnicode.REAL.codePointCount(test));
}
@Test
public void testStringLoopInt() {
public void testStringLoopIterable() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<StringUnicode.REAL.lengthCodePoints(test);i++) {
int codePoint = StringUnicode.REAL.codePointAt(test, i);
for (int codePoint:testStr) {
buf.appendCodePoint(codePoint);
}
Assertions.assertEquals(test, buf.toString());
}
@Test
public void testStringLoopFail() {
public void testStringLoopIntSteam() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<test.length();i++) {
for (int i=0;i<testStr.lengthCodePoints();i++) {
int codePoint = testStr.codePointAtStream(i);
buf.appendCodePoint(codePoint);
}
Assertions.assertEquals(test, buf.toString());
}
@Test
public void testStringLoopIntFail() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<testStr.lengthCodePoints();i++) {
int codePoint = testStr.toString().codePointAt(i); // method is not working
buf.appendCodePoint(codePoint);
}
Assertions.assertNotEquals(test, buf.toString());
}
@Test
public void testStringLoopFailStrange() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<test.codePoints().count();i++) {
int v = test.codePointAt(i); // java docs are lying
buf.appendCodePoint(v);
}
@ -66,12 +86,12 @@ public class StringUnicodeTest {
}
@Test
public void testStringLoopChar() {
public void testStringLoopFailJavaDoc() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<test.length();i++) { // java docs are lying
char v = test.charAt(i);
buf.append(v);
int v = test.codePointAt(i);
buf.appendCodePoint(v);
}
Assertions.assertEquals(test, buf.toString());
Assertions.assertNotEquals(test, buf.toString());
}
}

View file

@ -4,16 +4,16 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAnnotation注;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿªḕ響ᴼᶠ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(required = {BãßBȍőnPartAlt1注.class})
public interface BãßBȍőnPartAlt1ʸᴰ<T extends BãßBȍőnPartʸᴰ<T>> extends BãßBȍőnPartʸᴰ<T> {
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnPartAlt1ʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_ALT1_NAME = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_ALT1_WEBSITE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT1_NAME = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT1_WEBSITE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnPartAlt1ʸᴰ<?> boon;

View file

@ -4,16 +4,16 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAnnotation注;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿªḕ響ᴼᶠ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(required = {BãßBȍőnPartAlt2注.class})
public interface BãßBȍőnPartAlt2ʸᴰ<T extends BãßBȍőnPartʸᴰ<T>> extends BãßBȍőnPartAlt1ʸᴰ<T> {
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnPartAlt2ʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_ALT2_NAME = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_ALT2_WEBSITE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT2_NAME = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT2_WEBSITE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnPartAlt2ʸᴰ<?> boon;

View file

@ -4,16 +4,16 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAnnotation注;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿªḕ響ᴼᶠ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(required = {BãßBȍőnPartAlt3注.class})
public interface BãßBȍőnPartAlt3ʸᴰ<T extends BãßBȍőnPartʸᴰ<T>> extends BãßBȍőnPartAlt2ʸᴰ<T> {
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnPartAlt3ʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_ALT3_NAME = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_ALT3_WEBSITE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT3_NAME = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT3_WEBSITE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnPartAlt3ʸᴰ<?> boon;

View file

@ -4,16 +4,16 @@ import love.distributedrebirth.bassboon.clazz.BãßBȍőnAnnotation注;
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª;
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿªḕ響ᴼᶠ;
import love.distributedrebirth.bassboon.death.GhostKey鬼鑰匙;
import love.distributedrebirth.bassboon.death.spider.BãßBȍőnSpiderWire注;
import love.distributedrebirth.bassboon.jpp.lang.StringGhostKey;
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotation注(required = {BãßBȍőnPartAlt4注.class})
public interface BãßBȍőnPartAlt4ʸᴰ<T extends BãßBȍőnPartʸᴰ<T>> extends BãßBȍőnPartAlt3ʸᴰ<T> {
public static final class Ꝑŕḯṿª implements BãßBȍőnꝐŕḯṿª<BãßBȍőnPartAlt4ʸᴰ<?>> {
private static final GhostKey鬼鑰匙 GHOST_ALT4_NAME = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final GhostKey鬼鑰匙 GHOST_ALT4_WEBSITE = GhostKey鬼鑰匙.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT4_NAME = StringGhostKey.asciiᴳʰᵒˢᵗ();
private static final StringGhostKey GHOST_ALT4_WEBSITE = StringGhostKey.asciiᴳʰᵒˢᵗ();
@BãßBȍőnSpiderWire注
private BãßBȍőnPartAlt4ʸᴰ<?> boon;