Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
M build.gradle
9797
  def v_flexmark = '0.64.8'
9898
  def v_jackson = '2.19.2'
99
  def v_echosvg = '2.2'
99
  def v_echosvg = '2.2.1'
100100
  def v_picocli = '4.7.7'
101101
102102
  // JavaFX
103103
  implementation 'org.controlsfx:controlsfx:11.2.2'
104104
  implementation 'org.fxmisc.richtext:richtextfx:0.11.6'
105105
  implementation 'org.fxmisc.flowless:flowless:0.7.4'
106106
  implementation 'org.fxmisc.wellbehaved:wellbehavedfx:0.3.3'
107
  implementation 'org.openjfx:javafx-media:26-ea+3'
107
  implementation 'org.openjfx:javafx-media:26-ea+13'
108108
  implementation 'com.dlsc.preferencesfx:preferencesfx-core:11.17.0'
109109
  implementation 'com.panemu:tiwulfx-dock:0.5'
...
187187
  testImplementation "org.junit.jupiter:junit-jupiter-params:${v_junit}"
188188
  testImplementation 'org.testfx:testfx-junit5:4.0.18'
189
  testImplementation 'org.assertj:assertj-core:3.27.4'
189
  testImplementation 'org.assertj:assertj-core:3.27.6'
190190
}
191191
M docs/09-exporting.md
99
When exporting multiple documents, the application uses an alphanumeric sorting
1010
algorithm to determine the order files are concatenated prior to processing.
11
This files are collated in a natural order that honours both alphabetic and
12
numeric sequences within file names.
11
This means files are collated in a natural order that honours both alphabetic
12
and numeric sequences within file names.
1313
1414
Consider the following file names:
...
6060
If the first file processed contains numeric digits in its name, only files
6161
containing numeric digits will be included in the export. If the first file
62
contains no digits, all matching files are processed in alphabetical order.
62
contains no digits, all matching files will be processed in alphabetical order.
6363
6464
### Chapter ranges
M docs/10-themes.md
3737
3838
* must not include spaces;
39
* must a sibling directory of all other themes;
39
* must be a sibling directory of all other themes;
4040
* should be lowercase; and
4141
* should be a single word (Latin works well).
...
110110
111111
Lua is a programming language that is tightly integrated with ConTeXt. Here's
112
an example of using Lua to create a list of replacements:
112
an example of using Lua to create a list of text replacements:
113113
114114
``` lua
M docs/build.sh
44
readonly SCRIPT_DIR="$(cd "${SCRIPT_SRC}" >/dev/null 2>&1 && pwd)"
55
6
#keenwrite.bin \
7
java -jar /tmp/keenwrite.jar \
6
keenwrite.bin \
87
  $1 \
9
  --debug \
108
  --all \
119
  --chapters="1-" \
1210
  -i 01-introduction.md \
1311
  -o user-manual.pdf \
14
  --variables=$(pwd)/metadata.yaml \
12
  --variables=${SCRIPT_DIR}/metadata.yaml \
1513
  --set="version.java=$(cat ../java.version)" \
1614
  --metadata="title={{document.title}}" \
D docs/user-manual.pdf
Binary file
M java.version
1
24.0.2+12
1
25.0.1+11
22
M keenwrite.sh
66
java \
77
  -Dprism.order=sw \
8
  -Djdk.xml.maxParameterEntitySizeLimit=100000 \
89
  --enable-native-access=javafx.graphics \
910
  --sun-misc-unsafe-memory-access=allow \
M notes.sh
2222
2323
  cat << EOF
24
# Release Notes
24
# Release notes
2525
2626
$CURRENT_DATE
M publish.sh
5454
    scp "${FILENAME}" "${URL}"
5555
  else
56
    $log "Skipping ${FILE_BINARY} ..."
56
    $log "Skipping ${FILENAME} ..."
5757
  fi
5858
}
5959
60
release "Windows"
60
#release "Windows"
6161
release "MacOS"
6262
release "Linux"
M src/main/java/com/keenwrite/dom/DocumentParser.java
114114
115115
    if( !xml.isBlank() ) {
116
      try( final var reader = new StringReader( xml ) ) {
116
      try( final var reader = new StringReader( declareEntities( xml ) ) ) {
117117
        final var input = new InputSource();
118118
...
128128
129129
    return sDocumentBuilder.newDocument();
130
  }
131
132
  /**
133
   * Fixes issue where entity "nbsp" was referenced, but not declared.
134
   *
135
   * @param xml The document text to convert to a DOM.
136
   * @return The DOM with the "nbsp" entity declared.
137
   */
138
  private static String declareEntities( final String xml ) {
139
    return xml.startsWith( "<!DOCTYPE" )
140
      ? xml
141
      : """
142
      <!DOCTYPE html [
143
        <!ENTITY nbsp "&#160;">
144
      ]>
145
      """ + xml;
130146
  }
131147
...
197213
  }
198214
199
  public static Node evaluate( final String xpath, final Document doc ) throws XPathExpressionException {
215
  public static Node evaluate( final String xpath, final Document doc )
216
    throws XPathExpressionException {
200217
    return (Node) XPATH.evaluate( xpath, doc, NODE );
201218
  }