Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
build.gradle
]
+def javaVersionFull = new File( "java.version" ).text
+def (javaVersion, javaUpdate) = javaVersionFull.tokenize( '+' )
+
java {
- sourceCompatibility = 22
- targetCompatibility = 22
+ sourceCompatibility = javaVersion
+ targetCompatibility = javaVersion
}
javafx {
- version = '21'
+ version = javaVersion
modules = ['javafx.base', 'javafx.controls', 'javafx.graphics', 'javafx.swing']
configuration = 'compileOnly'
tasks.withType( JavaCompile ).configureEach {
options.encoding = 'UTF-8'
- options.compilerArgs += '--enable-preview'
}
installer.sh
readonly OPT_JAVA=$(cat << END_OF_ARGS
-Dprism.order=sw \
---enable-preview \
--add-opens=javafx.controls/javafx.scene.control=ALL-UNNAMED \
--add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED \
END_OF_ARGS
)
+
+readonly JAVA_VERSION=$(cat java.version)
ARG_JAVA_OS="linux"
ARG_JAVA_ARCH="amd64"
-ARG_JAVA_VERSION="21.0.2"
-ARG_JAVA_UPDATE="14"
+ARG_JAVA_VERSION=${JAVA_VERSION%+*}
+ARG_JAVA_UPDATE=${JAVA_VERSION#*+}
+
ARG_JAVA_DIR="java"
java.version
+23+38
src/main/java/com/keenwrite/MainPane.java
public void newTextEditor() {
final String key = "file.default.document.";
- final String prefix = Constants.get( STR."\{key}prefix" );
- final String suffix = Constants.get( STR."\{key}suffix" );
+ final String prefix = Constants.get( String.format( "%s%s", key, "prefix" ) );
+ final String suffix = Constants.get( String.format( "%s%s", key, "suffix" ) );
- File file = new File( STR."\{prefix}.\{suffix}" );
+ File file = new File( String.format( "%s.%s", prefix, suffix ) );
int i = 0;
while( file.exists() && i++ < 100 ) {
- file = new File( STR."\{prefix}-\{i}.\{suffix}" );
+ file = new File( String.format( "%s-%s.%s", prefix, i, suffix ) );
}
src/main/java/com/keenwrite/cmdline/Arguments.java
final var jsonNode = node.getValue();
- final var keyName = STR."\{parent}.\{node.getKey()}";
+ final var keyName = String.format( "%s.%s", parent, node.getKey() );
if( jsonNode.isValueNode() ) {
src/main/java/com/keenwrite/collections/InterpolatingMap.java
import java.util.concurrent.ConcurrentHashMap;
+import static java.lang.String.format;
import static java.util.regex.Matcher.quoteReplacement;
if( mapValue.contains( mOperator.apply( keyName ) ) ) {
throw new IllegalStateException(
- STR."Mapped value '\{mapValue}' may not contain its key name '\{keyName}'" );
+ format(
+ "Mapped value '%s' may not contain its key name '%s'",
+ mapValue,
+ keyName
+ )
+ );
}
src/main/java/com/keenwrite/commands/ConcatenateCommand.java
import static com.keenwrite.events.StatusEvent.clue;
import static com.keenwrite.util.FileWalker.walk;
+import static java.lang.String.format;
import static java.lang.System.lineSeparator;
import static java.nio.charset.StandardCharsets.UTF_8;
public String call() throws IOException {
- final var glob = STR."**/*.\{mExtension}";
+ final var glob = format( "**/*.%s", mExtension );
final var files = new ArrayList<Path>();
final var text = new StringBuilder( DOCUMENT_LENGTH );
src/main/java/com/keenwrite/constants/Constants.java
*/
private static File getFile( final String suffix ) {
- return new File( get( STR."file.default.\{suffix}" ) );
+ return new File( get( String.format( "file.default.%s", suffix ) ) );
}
src/main/java/com/keenwrite/editors/definition/DefinitionEditor.java
private Button createButton(
final String msgKey, final EventHandler<ActionEvent> eventHandler ) {
- final var keyPrefix = STR."\{Constants.ACTION_PREFIX}definition.\{msgKey}";
- final var button = new Button( get( STR."\{keyPrefix}.text" ) );
- final var graphic = createGraphic( get( STR."\{keyPrefix}.icon" ) );
+ final var keyPrefix = Constants.ACTION_PREFIX + "definition." + msgKey;
+ final var button = new Button( get( keyPrefix + ".text" ) );
+ final var graphic = createGraphic( get( keyPrefix + ".icon" ) );
button.setOnAction( eventHandler );
button.setGraphic( graphic );
- button.setTooltip( new Tooltip( get( STR."\{keyPrefix}.tooltip" ) ) );
+ button.setTooltip( new Tooltip( get( keyPrefix + ".tooltip" ) ) );
return button;
final var items = menu.getItems();
- addMenuItem( items, STR."\{ACTION_PREFIX}definition.create.text" )
+ addMenuItem( items, ACTION_PREFIX + "definition.create.text" )
.setOnAction( _ -> createDefinition() );
- addMenuItem( items, STR."\{ACTION_PREFIX}definition.rename.text" )
+ addMenuItem( items, ACTION_PREFIX + "definition.rename.text" )
.setOnAction( _ -> renameDefinition() );
- addMenuItem( items, STR."\{ACTION_PREFIX}definition.delete.text" )
+ addMenuItem( items, ACTION_PREFIX + "definition.delete.text" )
.setOnAction( _ -> deleteSelectedItem() );
- addMenuItem( items, STR."\{ACTION_PREFIX}definition.insert.text" )
+ addMenuItem( items, ACTION_PREFIX + "definition.insert.text" )
.setOnAction( _ -> insertSelectedItem() );
src/main/java/com/keenwrite/preferences/PreferencesController.java
private Node label( final Key key, final String... values ) {
- return new Label( get( STR."\{key.toString()}.desc", (Object[]) values ) );
+ return new Label( get( String.format( "%s%s", key.toString(), ".desc" ), (Object[]) values ) );
}
private String title( final Key key ) {
- return get( STR."\{key.toString()}.title" );
+ return get( String.format( "%s%s", key.toString(), ".title" ) );
}
src/main/java/com/keenwrite/processors/html/PreformattedProcessor.java
@Override
public String apply( final String t ) {
- return STR."<pre>\{t}</pre>";
+ return String.format( "<pre>%s</pre>", t );
}
}
src/main/java/com/keenwrite/processors/markdown/extensions/fences/parsers/OpeningParser.java
import java.util.regex.Pattern;
+import static java.lang.String.format;
import static java.util.regex.Pattern.UNICODE_CHARACTER_CLASS;
import static java.util.regex.Pattern.compile;
// When no regular CSS definition (id or class), use key/value pairs.
if( cssDef == null ) {
- cssAttrKey = STR."data-\{pairMatcher.group( "k" )}";
+ cssAttrKey = format( "data-%s", pairMatcher.group( "k" ) );
cssAttrVal = pairMatcher.group( "v" );
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/AnchorXrefNode.java
import org.jetbrains.annotations.NotNull;
+import static java.lang.String.format;
+
/**
* Responsible for writing HTML anchor cross-references in the form
AnchorXrefNode( final String type, final String id ) {
mTypeName = type;
- mIdName = STR. "#\{ id }" ;
+ mIdName = format( "#%s", id );
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/BasedSequenceNameParser.java
import java.util.regex.Pattern;
+import static java.lang.String.format;
+
class BasedSequenceNameParser extends BasedSequenceParser {
- private static final String REGEX = STR. "#\{ REGEX_INNER }" ;
+ private static final String REGEX = format( "#%s", REGEX_INNER );
private static final Pattern PATTERN = asPattern( REGEX );
src/main/java/com/keenwrite/processors/markdown/extensions/references/BasedSequenceXrefParser.java
import static com.keenwrite.processors.markdown.extensions.common.EmptyNode.EMPTY_NODE;
+import static java.lang.String.format;
class BasedSequenceXrefParser extends BasedSequenceParser {
- private static final String REGEX = STR. "\\[@\{ REGEX_INNER }]" ;
+ private static final String REGEX = format( "\\[@%s]", REGEX_INNER );
private static final Pattern PATTERN = asPattern( REGEX );
src/main/java/com/keenwrite/processors/markdown/extensions/references/CrossReferenceNode.java
import com.vladsch.flexmark.html.HtmlWriter;
+import static java.lang.String.format;
+
/**
* Responsible for generating anchor links, either named or cross-referenced.
final var attr = getRefAttrName();
- final var clazz = STR. "class=\"\{ attr }\"" ;
- final var dataType = STR. "data-type=\"\{ type }\"" ;
- final var refId = STR. "\{ attr }=\"\{ id }\"" ;
+ final var clazz = format( "class=\"%s\"", attr );
+ final var dataType = format( "data-type=\"%s\"", type );
+ final var refId = format( "%s=\"%s\"", attr, id );
- html.raw( STR. "<a \{ clazz } \{ dataType } \{ refId } />" );
+ html.raw( format( "<a %s %s %s />", clazz, dataType, refId ) );
}
}
src/main/java/com/keenwrite/spelling/impl/Lexicon.java
private static void status( final String s, final long count ) {
- clue( STR."Main.status.lexicon.\{s}", count );
+ clue( format( "Main.status.lexicon.%s", s ), count );
}
}
src/main/java/com/keenwrite/typesetting/GuestTypesetter.java
private static final String TYPESETTER_VERSION =
- STR."\{TYPESETTER_EXE} --version > /dev/null";
+ String.format( "%s%s", TYPESETTER_EXE, " --version > /dev/null" );
public GuestTypesetter( final Mutator mutator ) {
manager.run(
input -> gobble( input, s -> exitCode.append( s.trim() ) ),
- STR."\{TYPESETTER_VERSION}; echo $?"
+ String.format( "%s%s", TYPESETTER_VERSION, "; echo $?" )
);
src/main/java/com/keenwrite/typesetting/Typesetter.java
import static com.keenwrite.events.StatusEvent.clue;
import static com.keenwrite.util.Time.toElapsedTime;
+import static java.lang.String.*;
import static java.lang.String.format;
import static java.lang.System.currentTimeMillis;
final var prefix = "Main.status.typeset.";
- clue( STR."\{prefix}began", outputPath );
+ clue( format( "%s%s", prefix, "began" ), outputPath );
final var time = currentTimeMillis();
final var success = typesetter.call();
final var suffix = success ? "success" : "failure";
- clue( STR."\{prefix}ended.\{suffix}", outputPath, since( time ) );
+ clue( format( "%sended.%s", prefix, suffix ), outputPath, since( time ) );
}
args.add(
- format( "--arguments=themesdir=%s,imagesdir=%s,cachesdir=%s",
- themesPath, imagesPath, cachesPath )
+ format(
+ "--arguments=themesdir=%s,imagesdir=%s,cachesdir=%s",
+ themesPath, imagesPath, cachesPath
+ )
);
args.add( format( "--path='%s'", themesPath ) );
src/main/java/com/keenwrite/typesetting/installer/panes/AbstractDownloadPane.java
import static com.keenwrite.io.downloads.DownloadManager.downloadAsync;
import static com.keenwrite.io.downloads.DownloadManager.toFilename;
+import static java.lang.String.*;
/**
public AbstractDownloadPane() {
- mUri = getUri( STR."\{getPrefix()}.download.link.url" );
+ mUri = getUri( format( "%s%s", getPrefix(), ".download.link.url" ) );
mFilename = toFilename( mUri );
final var directory = USER_DATA_DIR;
mTarget = toFile( directory.resolve( mFilename ) );
- final var source = labelf( STR."\{getPrefix()}.paths", mFilename, directory );
- mStatus = labelf( STR."\{getPrefix()}\{STATUS}.progress", 0, 0 );
+ final var source = labelf(
+ format( "%s%s", getPrefix(), ".paths" ), mFilename, directory
+ );
+ mStatus = labelf( format( "%s%s.progress", getPrefix(), STATUS ), 0, 0 );
final var border = new BorderPane();
final var suffix = checksumOk ? ".ok" : ".no";
- updateStatus( STR."\{STATUS}.checksum\{suffix}", mFilename );
+ updateStatus( format( "%s.checksum%s", STATUS, suffix ), mFilename );
disableNext( !checksumOk );
}
@Override
protected String getHeaderKey() {
- return STR."\{getPrefix()}.header";
+ return format( "%s%s", getPrefix(), ".header" );
}
protected void onDownloadSucceeded(
final String threadName, final ObservableMap<Object, Object> properties ) {
- updateStatus( STR."\{STATUS}.success" );
+ updateStatus( format( "%s%s", STATUS, ".success" ) );
properties.remove( threadName );
disableNext( false );
}
protected void onDownloadFailed(
final String threadName, final ObservableMap<Object, Object> properties ) {
- updateStatus( STR."\{STATUS}.failure" );
+ updateStatus( format( "%s%s", STATUS, ".failure" ) );
properties.remove( threadName );
}
src/main/java/com/keenwrite/typesetting/installer/panes/InstallerPane.java
static Hyperlink hyperlink( final String prefix ) {
- final var label = get( STR."\{prefix}.lbl" );
- final var url = get( STR."\{prefix}.url" );
+ final var label = get( String.format( "%s%s", prefix, ".lbl" ) );
+ final var url = get( String.format( "%s%s", prefix, ".url" ) );
final var link = new Hyperlink( label );
src/main/java/com/keenwrite/typesetting/installer/panes/UnixManagerInstallPane.java
final var node = super.createButtonBar();
final var layout = new BorderPane();
- final var copyButton = button( STR."\{PREFIX}.copy.began" );
+ final var copyButton = button( format( "%s%s", PREFIX, ".copy.began" ) );
// Change the label to indicate clipboard is updated.
copyButton.setOnAction( _ -> {
SystemClipboard.write( mCommands.getText() );
- copyButton.setText( get( STR."\{PREFIX}.copy.ended" ) );
+ copyButton.setText( get( format( "%s%s", PREFIX, ".copy.ended" ) ) );
} );
@Override
protected String getHeaderKey() {
- return STR."\{PREFIX}.header";
+ return format( "%s%s", PREFIX, ".header" );
}
final var comboBox = new ComboBox<UnixOsCommand>();
final var items = comboBox.getItems();
- final var prefix = STR."\{PREFIX}.command";
- final var distros = getInt( STR."\{prefix}.distros", 14 );
+ final var prefix = format( "%s%s", PREFIX, ".command" );
+ final var distros = getInt( format( "%s%s", prefix, ".distros" ), 14 );
for( int i = 1; i <= distros; i++ ) {
final var suffix = format( ".%02d", i );
- final var name = get( STR."\{prefix}.os.name\{suffix}" );
- final var command = get( STR."\{prefix}.os.text\{suffix}" );
+ final var name = get( format( "%s.os.name%s", prefix, suffix ) );
+ final var command = get( format( "%s.os.text%s", prefix, suffix ) );
items.add( new UnixOsCommand( name, command ) );
src/main/java/com/keenwrite/typesetting/installer/panes/WindowsManagerInstallPane.java
final var titledPane = titledPane( "Output", mCommands );
- append( mCommands, get( STR."\{PREFIX}.status.running" ) );
+ append( mCommands, get( String.format( "%s%s", PREFIX, ".status.running" ) ) );
final var stepsPane = new VBox();
final var steps = stepsPane.getChildren();
- steps.add( label( STR."\{PREFIX}.step.0" ) );
+ steps.add( label( String.format( "%s%s", PREFIX, ".step.0" ) ) );
steps.add( spacer() );
- steps.add( label( STR."\{PREFIX}.step.1" ) );
- steps.add( label( STR."\{PREFIX}.step.2" ) );
- steps.add( label( STR."\{PREFIX}.step.3" ) );
+ steps.add( label( String.format( "%s%s", PREFIX, ".step.1" ) ) );
+ steps.add( label( String.format( "%s%s", PREFIX, ".step.2" ) ) );
+ steps.add( label( String.format( "%s%s", PREFIX, ".step.3" ) ) );
steps.add( spacer() );
steps.add( titledPane );
final var binary = properties.get( WIN_BIN );
- final var key = STR."\{PREFIX}.status";
+ final var key = String.format( "%s%s", PREFIX, ".status" );
if( binary instanceof File exe ) {
final var task = createTask( () -> {
final var exit = mContainer.install( exe );
// Remove the installer after installation is finished.
properties.remove( thread );
final var msg = exit == 0
- ? get( STR."\{key}.success" )
- : get( STR."\{key}.failure", exit );
+ ? get( String.format( "%s%s", key, ".success" ) )
+ : get( String.format( "%s%s", key, ".failure" ), exit );
append( mCommands, msg );
}
else {
- append( mCommands, get( STR."\{PREFIX}.unknown", binary ) );
+ append( mCommands, get( String.format( "%s%s", PREFIX, ".unknown" ), binary ) );
}
}
@Override
public String getHeaderKey() {
- return STR."\{PREFIX}.header";
+ return String.format( "%s%s", PREFIX, ".header" );
}
}
src/main/java/com/keenwrite/ui/actions/Action.java
*/
public Builder setId( final String id ) {
- final var prefix = STR."\{ACTION_PREFIX}\{id}.";
- final var text = STR."\{prefix}text";
- final var icon = STR."\{prefix}icon";
- final var accelerator = STR."\{prefix}accelerator";
+ final var prefix = String.format( "%s%s.", ACTION_PREFIX, id );
+ final var text = String.format( "%s%s", prefix, "text" );
+ final var icon = String.format( "%s%s", prefix, "icon" );
+ final var accelerator = String.format( "%s%s", prefix, "accelerator" );
final var builder = setText( text ).setIcon( icon );
if( mAccelerator != null ) {
- tooltip += STR." (\{mAccelerator.getDisplayText()}\{')'}";
+ tooltip += String.format( " (%s)", mAccelerator.getDisplayText() );
}
src/main/java/com/keenwrite/ui/actions/GuiCommands.java
final var alert = new Alert( INFORMATION );
final var prefix = "Dialog.about.";
- alert.setTitle( get( STR."\{prefix}title", APP_TITLE ) );
- alert.setHeaderText( get( STR."\{prefix}header", APP_TITLE ) );
- alert.setContentText( get( STR."\{prefix}content",
+ alert.setTitle( get( String.format( "%s%s", prefix, "title" ), APP_TITLE ) );
+ alert.setHeaderText( get( String.format( "%s%s", prefix, "header" ), APP_TITLE ) );
+ alert.setContentText( get( String.format( "%s%s", prefix, "content" ),
APP_YEAR,
APP_VERSION ) );
src/main/java/com/keenwrite/ui/dialogs/ExportDialog.java
private Label createLabel( final String key ) {
- final var label = new Label( STR."\{get( key )}:" );
+ final var label = new Label( String.format( "%s%s", get( key ), ":" ) );
final var font = label.getFont();
final var upscale = new Font( font.getName(), 14 );
src/main/java/com/keenwrite/ui/dialogs/HyperlinkDialog.java
*/
public HyperlinkDialog( final Window owner, final HyperlinkModel model ) {
- super( owner, STR."\{PREFIX}title" );
+ super( owner, String.format( "%s%s", PREFIX, "title" ) );
mModel = model;
addInputField(
"text",
- STR."\{PREFIX}label.text", STR."\{PREFIX}prompt.text",
+ String.format( "%s%s", PREFIX, "label.text" ), String.format( "%s%s", PREFIX, "prompt.text" ),
mModel.getText(),
( _, _, n ) -> mModel.setText( n )
);
addInputField(
"url",
- STR."\{PREFIX}label.url", STR."\{PREFIX}prompt.url",
+ String.format( "%s%s", PREFIX, "label.url" ), String.format( "%s%s", PREFIX, "prompt.url" ),
mModel.getUrl(),
( _, _, n ) -> mModel.setUrl( n )
);
addInputField(
"title",
- STR."\{PREFIX}label.title", STR."\{PREFIX}prompt.title",
+ String.format( "%s%s", PREFIX, "label.title" ), String.format( "%s%s", PREFIX, "prompt.title" ),
mModel.getTitle(),
( _, _, n ) -> mModel.setTitle( n )
src/main/java/com/keenwrite/ui/dialogs/ImageDialog.java
public ImageDialog( final Window owner, final ImageModel model ) {
- super( owner, STR."\{PREFIX}title" );
+ super( owner, String.format( "%s%s", PREFIX, "title" ) );
mModel = model;
addInputField(
"url",
- STR."\{PREFIX}label.url", STR."\{PREFIX}prompt.url",
+ String.format( "%s%s", PREFIX, "label.url" ),
+ String.format( "%s%s", PREFIX, "prompt.url" ),
mModel.getUrl(),
( _, _, n ) -> mModel.setUrl( n )
);
addInputField(
"text",
- STR."\{PREFIX}label.text", STR."\{PREFIX}prompt.text",
+ String.format( "%s%s", PREFIX, "label.text" ),
+ String.format( "%s%s", PREFIX, "prompt.text" ),
mModel.getText(),
( _, _, n ) -> mModel.setText( n )
);
addInputField(
"title",
- STR."\{PREFIX}label.title", STR."\{PREFIX}prompt.title",
+ String.format( "%s%s", PREFIX, "label.title" ),
+ String.format( "%s%s", PREFIX, "prompt.title" ),
mModel.getTitle(),
( _, _, n ) -> mModel.setTitle( n )
src/main/java/com/keenwrite/ui/dialogs/OpenUrlDialog.java
private static final String PREFIX = "Dialog.open_url.";
private static final String DOWNLOAD = "Main.status.url.request.";
- private static final String STATUS = STR."\{DOWNLOAD}status.";
+ private static final String STATUS = String.format(
+ "%s%s", DOWNLOAD, "status."
+ );
private final Path mParent;
*/
public OpenUrlDialog( final Window owner, final Path parent ) {
- super( owner, STR."\{PREFIX}title" );
+ super( owner, String.format( "%s%s", PREFIX, "title" ) );
mParent = parent;
addInputField(
"url",
- STR."\{PREFIX}label.url", STR."\{PREFIX}prompt.url",
+ String.format( "%s%s", PREFIX, "label.url" ),
+ String.format( "%s%s", PREFIX, "prompt.url" ),
mUrl,
( _, _, n ) -> mUrl = sanitize( n )
private File download( final String reference ) {
try {
- clue( STR."\{DOWNLOAD}fetch", reference );
+ clue( String.format( "%s%s", DOWNLOAD, "fetch" ), reference );
final var uri = new URI( reference );
final var path = toFile( uri );
final var basedir = path.getName();
final var file = mParent.resolve( basedir ).toFile();
if( file.exists() ) {
- clue( STR."\{DOWNLOAD}exists", file );
+ clue( String.format( "%s%s", DOWNLOAD, "exists" ), file );
}
else {
final var task = downloadAsync( uri, file, ( progress, bytes ) -> {
final var suffix = progress < 0 ? "bytes" : "progress";
- clue( STR."\{STATUS}\{suffix}", progress, bytes );
+ clue( String.format( "%s%s", STATUS, suffix ), progress, bytes );
} );
task.setOnSucceeded( _ -> {
- clue( STR."\{DOWNLOAD}success", file );
+ clue( String.format( "%s%s", DOWNLOAD, "success" ), file );
// Only after the download succeeds can we open the file.
FileOpenEvent.fire( file.toURI() );
} );
- task.setOnFailed( _ -> clue( STR."\{DOWNLOAD}failure", uri ) );
+ task.setOnFailed( _ -> clue(
+ String.format( "%s%s", DOWNLOAD, "failure" ), uri )
+ );
}
src/main/java/com/keenwrite/ui/models/HyperlinkModel.java
import com.vladsch.flexmark.ast.Link;
+import org.renjin.gnur.format;
/**
public String toString() {
final String format = hasText()
- ? STR."[%s]\{hasTitle() ? "(%s \"%s\")" : "(%s%s)"}"
+ ? "[%s]" + (hasTitle() ? "(%s \"%s\")" : "(%s%s)")
: "%s%s%s";
src/main/java/com/keenwrite/ui/models/ImageModel.java
package com.keenwrite.ui.models;
+import org.renjin.gnur.format;
+
/**
* Represents the model for an image: text, url, and title.
public String toString() {
final String format = hasText()
- ? STR."![%s]\{hasTitle() ? "(%s \"%s\")" : "(%s%s)"}"
+ ? "![%s]" + (hasTitle() ? "(%s \"%s\")" : "(%s%s)")
: "![%s](%s)%s";
src/main/java/com/keenwrite/util/FileWalker.java
import java.util.function.Consumer;
+import static java.lang.String.format;
import static java.nio.file.FileSystems.getDefault;
final Path path, final String glob, final Consumer<Path> c )
throws IOException {
- final var matcher = getDefault().getPathMatcher( STR."glob:\{glob}" );
+ final var pattern = format( "glob:%s", glob );
+ final var matcher = getDefault().getPathMatcher( pattern );
try( final var walk = Files.walk( path, 10 ) ) {
src/test/java/com/keenwrite/io/MediaTypeSnifferTest.java
final var dir = pkgName.replace( '.', '/' );
- final var urls = clazz.getClassLoader().getResources( STR."\{dir}/images" );
+ final var urls = clazz.getClassLoader().getResources( String.format( "%s%s", dir, "/images" ) );
assertTrue( urls.hasMoreElements() );
final var actualExtension = valueFrom( media ).getExtension();
final var expectedExtension = getExtension( image.toString() );
- System.out.println( STR."\{image} -> \{media}" );
+ System.out.println( String.format( "%s%s", image, " -> \{media}" ) );
assertEquals( expectedExtension, actualExtension );
src/test/java/com/keenwrite/processors/markdown/extensions/images/ImageLinkExtensionTest.java
private static final String URI_FILE = "kitten";
private static final String URI_PATH = UIR_DIR + '/' + URI_FILE;
- private static final String PATH_KITTEN_PNG = STR."\{URI_PATH}.png";
- private static final String PATH_KITTEN_JPG = STR."\{URI_PATH}.jpg";
+ private static final String PATH_KITTEN_PNG = String.format(
+ "%s%s", URI_PATH, ".png" );
+ private static final String PATH_KITTEN_JPG = String.format(
+ "%s%s", URI_PATH, ".jpg" );
- /** Web server that doles out images. */
+ /**
+ * Web server that doles out images.
+ */
private static final String PLACEHOLDER = "loremflickr.com";
private static final Map<String, String> IMAGES = new LinkedHashMap<>();
static {
add( PATH_KITTEN_PNG, URI_PATH );
add( PATH_KITTEN_PNG, URI_FILE );
add( PATH_KITTEN_PNG, PATH_KITTEN_PNG );
add( PATH_KITTEN_JPG, PATH_KITTEN_JPG );
- add( STR."//\{PLACEHOLDER}/200/200", STR."//\{PLACEHOLDER}/200/200" );
- add( STR."ftp://\{PLACEHOLDER}/200/200", STR."ftp://\{PLACEHOLDER}/200/200" );
- add( STR."http://\{PLACEHOLDER}/200/200", STR."http://\{PLACEHOLDER}/200/200" );
- add( STR."https://\{PLACEHOLDER}/200/200", STR."https://\{PLACEHOLDER}/200/200" );
+ add( format( "//%s/200/200", PLACEHOLDER ),
+ format( "//%s/200/200", PLACEHOLDER ) );
+ add( format( "ftp://%s/200/200", PLACEHOLDER ),
+ format( "ftp://%s/200/200", PLACEHOLDER ) );
+ add( format( "http://%s/200/200", PLACEHOLDER ),
+ format( "http://%s/200/200", PLACEHOLDER ) );
+ add( format( "https://%s/200/200", PLACEHOLDER ),
+ format( "https://%s/200/200", PLACEHOLDER ) );
}

Reverts usage of STR template

Author DaveJarvis <email>
Date 2024-10-04 01:59:58 GMT-0700
Commit 579e02e38b25927ee96119830f651904227a10a6
Parent deeb0b7
Delta 151 lines added, 104 lines removed, 47-line increase