Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Merge pull request #91 from DaveJarvis/1_application_rename 1 application rename

AuthorDave Jarvis <email>
Date2020-09-19 10:20:54 GMT-0700
Commit0272c2e8135ad167dd650885cf43db0fb1bfa200
Parent4eb723d
Delta542 lines added, 1046 lines removed, 504-line decrease
src/test/java/com/scrivenvar/tex/TeXRasterization.java
-/*
- * Copyright 2020 White Magic Software, Ltd.
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package com.scrivenvar.tex;
-
-import com.whitemagicsoftware.tex.DefaultTeXFont;
-import com.whitemagicsoftware.tex.TeXEnvironment;
-import com.whitemagicsoftware.tex.TeXFormula;
-import com.whitemagicsoftware.tex.TeXLayout;
-import com.whitemagicsoftware.tex.graphics.AbstractGraphics2D;
-import com.whitemagicsoftware.tex.graphics.SvgDomGraphics2D;
-import com.whitemagicsoftware.tex.graphics.SvgGraphics2D;
-import org.junit.jupiter.api.Test;
-import org.xml.sax.SAXException;
-
-import javax.imageio.ImageIO;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-
-import static com.scrivenvar.preview.SvgRasterizer.*;
-import static java.lang.System.getProperty;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * Test that TeX rasterization produces a readable image.
- */
-public class TeXRasterization {
- private static final String LOAD_EXTERNAL_DTD =
- "http://apache.org/xml/features/nonvalidating/load-external-dtd";
-
- private static final String EQUATION =
- "G_{\\mu \\nu} = \\frac{8 \\pi G}{c^4} T_{{\\mu \\nu}}";
-
- private static final String DIR_TEMP = getProperty( "java.io.tmpdir" );
-
- private static final long FILESIZE = 12547;
-
- /**
- * Test that an equation can be converted to a raster image and the
- * final raster image size corresponds to the input equation. This is
- * a simple way to verify that the rasterization process is correct,
- * albeit if any aspect of the SVG algorithm changes (such as padding
- * around the equation), it will cause this test to fail, which is a bit
- * misleading.
- */
- @Test
- public void test_Rasterize_SimpleFormula_CorrectImageSize()
- throws IOException {
- final var g = new SvgGraphics2D();
- drawGraphics( g );
- verifyImage( rasterizeString( g.toString() ) );
- }
-
- /**
- * Test that an SVG document object model can be parsed and rasterized into
- * an image.
- */
- @Test
- public void getTest_SvgDomGraphics2D_InputElement_OutputRasterizedImage()
- throws ParserConfigurationException, IOException, SAXException {
- final var g = new SvgGraphics2D();
- drawGraphics( g );
-
- final var expectedSvg = g.toString();
- final var bytes = expectedSvg.getBytes();
-
- final var dbf = DocumentBuilderFactory.newInstance();
- dbf.setFeature( LOAD_EXTERNAL_DTD, false );
- dbf.setNamespaceAware( false );
- final var builder = dbf.newDocumentBuilder();
-
- final var doc = builder.parse( new ByteArrayInputStream( bytes ) );
- final var actualSvg = toSvg( doc.getDocumentElement() );
-
- verifyImage( rasterizeString( actualSvg ) );
- }
-
- /**
- * Test that an SVG image from a DOM element can be rasterized.
- *
- * @throws IOException Could not write the image.
- */
- @Test
- public void test_SvgDomGraphics2D_InputDom_OutputRasterizedImage()
- throws IOException {
- final var g = new SvgDomGraphics2D();
- drawGraphics( g );
-
- final var dom = g.toDom();
-
- verifyImage( rasterize( dom ) );
- }
-
- /**
- * Asserts that the given image matches an expected file size.
- *
- * @param image The image to check against the file size.
- * @throws IOException Could not write the image.
- */
- private void verifyImage( final BufferedImage image ) throws IOException {
- final var file = export( image, "dom.png" );
- assertEquals( FILESIZE, file.length() );
- }
-
- /**
- * Creates an SVG string for the default equation and font size.
- */
- private void drawGraphics( final AbstractGraphics2D g ) {
- final var size = 100f;
- final var texFont = new DefaultTeXFont( size );
- final var env = new TeXEnvironment( texFont );
- g.scale( size, size );
-
- final var formula = new TeXFormula( EQUATION );
- final var box = formula.createBox( env );
- final var layout = new TeXLayout( box, size );
-
- g.initialize( layout.getWidth(), layout.getHeight() );
- box.draw( g, layout.getX(), layout.getY() );
- }
-
- @SuppressWarnings("SameParameterValue")
- private File export( final BufferedImage image, final String filename )
- throws IOException {
- final var path = Path.of( DIR_TEMP, filename );
- final var file = path.toFile();
- ImageIO.write( image, "png", file );
- file.deleteOnExit();
- return file;
- }
-}
src/main/resources/com/scrivenvar/build.sh
-#!/bin/bash
-
-INKSCAPE="/usr/bin/inkscape"
-PNG_COMPRESS="optipng"
-PNG_COMPRESS_OPTS="-o9 *png"
-ICO_TOOL="icotool"
-ICO_TOOL_OPTS="-c -o ../../../../../icons/logo.ico logo64.png"
-
-declare -a SIZES=("16" "32" "64" "128" "256" "512")
-
-for i in "${SIZES[@]}"; do
- # -y: export background opacity 0
- $INKSCAPE -y 0 -z -f "logo.svg" -w "${i}" -e "logo${i}.png"
-done
-
-# Compess the PNG images.
-which $PNG_COMPRESS && $PNG_COMPRESS $PNG_COMPRESS_OPTS
-
-# Generate an ICO file.
-which $ICO_TOOL && $ICO_TOOL $ICO_TOOL_OPTS
-
src/main/resources/com/scrivenvar/logo.svg
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- width="512"
- height="512"
- viewBox="0 0 512 512"
- sodipodi:docname="logo.svg">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="480"
- id="namedview4"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:zoom="1.2682274"
- inkscape:cx="15.646213"
- inkscape:cy="213.34955"
- inkscape:current-layer="svg2" />
- <path
- style="fill:#ce6200;fill-opacity:1"
- d="m 203.2244,511.85078 c -60.01827,-1.2968 -121.688643,-6.5314 -192.436493,-16.334 -5.8078027,-0.8047 -10.66110747,-1.561 -10.78511762,-1.6806 -0.12404567,-0.1196 3.90488112,-4.5812 8.95313512,-9.9147 32.9484785,-34.8102 70.4314485,-73.8923 104.1521555,-108.5956 l 11.87611,-12.2221 5.48905,-10.2177 c 35.82801,-66.6927 75.13064,-128.5665 105.90637,-166.7277 6.13805,-7.611 10.21451,-12.0689 17.28719,-18.9048 36.6818,-35.4537 108.27279,-83.724003 206.0323,-138.917303 22.10365,-12.47935 51.93386,-28.64995037 52.26391,-28.33165037 0.38883,0.37499 -2.35932,25.95575037 -4.86585,45.29275037 -7.28943,56.236403 -17.04619,103.128903 -28.07642,134.939803 -7.19617,20.7536 -14.81287,35.152 -22.9667,43.4155 -3.60444,3.6529 -6.58328,5.7941 -10.1313,7.2825 l -2.56414,1.0756 -53.43164,0.1713 -53.43166,0.1713 3.69973,1.8547 c 26.78565,13.4282 52.58051,27.5241 59.57122,32.5533 4.48397,3.2259 4.41278,2.9854 1.59124,5.3784 -26.99514,22.8955 -74.52961,44.0013 -140.23089,62.2641 -26.34995,7.3244 -57.85469,14.6842 -86.99871,20.3237 l -10.26943,1.9871 -52.01052,53.2733 -52.010524,53.2732 -29.459801,15.1165 c -26.4100885,13.5517 -29.3446639,15.1388 -28.347645,15.3311 0.6117029,0.118 4.0894221,0.2188 7.7282726,0.2239 3.6388854,0.01 16.1273694,0.2329 27.7522124,0.5059 51.576376,1.2116 146.083985,1.512 170.154295,0.5409 34.66996,-1.3988 52.7606,-2.9325 67.58258,-5.7293 2.68664,-0.507 4.82907,-0.9755 4.76094,-1.0412 -0.0681,-0.066 -3.24733,-0.8833 -7.0649,-1.8169 -8.04133,-1.9664 -25.10167,-5.3107 -41.1231,-8.0612 -47.6405,-8.1787 -65.48708,-12.0107 -74.13028,-15.9169 -3.90548,-1.7651 -7.13816,-4.7659 -8.12937,-7.5463 -1.01822,-2.8562 -0.92214,-6.5271 0.23315,-8.9083 1.86563,-3.8451 6.14837,-6.7199 12.26745,-8.2345 16.96993,-4.2004 57.27977,-6.1832 90.36228,-4.4448 54.7332,2.8761 117.0767,13.1228 178.50212,29.3385 18.03514,4.7611 51.66065,14.656 51.22677,15.0744 -0.0824,0.08 -5.72762,-0.854 -12.54488,-2.0745 -40.1043,-7.18 -60.50854,-10.2888 -101.40822,-15.4507 -24.4851,-3.0902 -55.12614,-5.9915 -77.58876,-7.3465 -26.58826,-1.6039 -61.15821,-1.7754 -80.99202,-0.4019 l -3.19705,0.2214 8.70308,1.4934 c 51.89698,8.9047 77.51746,14.9877 88.00479,20.8948 6.9134,3.894 10.30497,9.4381 9.33333,15.2569 -1.50397,9.0066 -10.51381,14.0257 -32.00273,17.8278 -16.31374,2.8863 -47.27575,4.3845 -77.23553,3.7371 z"
- id="path4138" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
- d="m 214.76931,324.51908 c 60.83777,-14.1145 111.89562,-31.6251 144.40025,-49.5229 3.12602,-1.7213 5.81747,-3.2537 5.98106,-3.4054 0.40534,-0.3759 -13.76388,-7.9415 -34.63489,-18.4929 -7.52161,-3.8026 -9.82337,-5.3787 -12.0735,-8.2668 -5.14485,-6.6036 -5.96081,-14.8404 -2.20331,-22.2417 1.80288,-3.5512 5.69484,-7.3007 9.36158,-9.019 5.20851,-2.4407 1.18148,-2.2865 59.71223,-2.2865 l 52.81361,0 2.13233,-2.1984 c 2.78673,-2.8731 5.23414,-6.4981 8.23035,-12.1905 14.14966,-26.8827 26.71842,-78.3816 36.24347,-148.503303 0.76704,-5.6468 1.36194,-10.2983 1.32201,-10.3369 -0.0399,-0.038 -5.47754,2.9629 -12.08361,6.6697 l -12.01104,6.7396 -133.83068,137.037303 c -73.60688,75.3705 -134.81732,138.0567 -136.0232,139.3026 l -2.19251,2.2653 8.254,-1.8067 c 4.53969,-0.9937 12.01053,-2.6783 16.60185,-3.7435 z"
- id="path4136" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
- d="m 202.72524,284.43588 c 69.93294,-70.1332 135.4799,-131.9279 213.46406,-201.244203 7.71421,-6.8568 14.50542,-12.9341 15.09155,-13.5052 0.9482,-0.9239 0.96778,-0.9811 0.17761,-0.5188 -77.96496,45.611803 -139.23519,88.710503 -166.72539,117.278203 -18.81811,19.5556 -50.35654,64.861 -80.96704,116.3104 -0.91787,1.5427 1.02249,-0.3323 18.95921,-18.3204 z"
- id="path4142" />
- <path
- style="fill:#000000"
- d=""
- id="path4140"
- inkscape:connector-curvature="0" />
-</svg>
src/main/resources/com/scrivenvar/logo128.png
Binary files differ
src/main/resources/com/scrivenvar/logo16.png
Binary files differ
src/main/resources/com/scrivenvar/logo256.png
Binary files differ
src/main/resources/com/scrivenvar/logo32.png
Binary files differ
src/main/resources/com/scrivenvar/logo512.png
Binary files differ
src/main/resources/com/scrivenvar/logo64.png
Binary files differ
src/main/resources/com/scrivenvar/messages.properties
-# ########################################################################
-# Main Application Window
-# ########################################################################
-
-# suppress inspection "UnusedProperty" for whole file
-
-# The application title should exist only once in the entire code base.
-# All other references should either refer to this value via the Messages
-# class, or indirectly using ${Main.title}.
-Main.title=Scrivenvar
-
-Main.menu.file=_File
-Main.menu.file.new=_New
-Main.menu.file.open=_Open...
-Main.menu.file.close=_Close
-Main.menu.file.close_all=Close All
-Main.menu.file.save=_Save
-Main.menu.file.save_as=Save _As
-Main.menu.file.save_all=Save A_ll
-Main.menu.file.exit=E_xit
-
-Main.menu.edit=_Edit
-Main.menu.edit.copy.html=Copy _HTML
-Main.menu.edit.undo=_Undo
-Main.menu.edit.redo=_Redo
-Main.menu.edit.cut=Cu_t
-Main.menu.edit.copy=_Copy
-Main.menu.edit.paste=_Paste
-Main.menu.edit.selectAll=Select _All
-Main.menu.edit.find=_Find
-Main.menu.edit.find.next=Find _Next
-Main.menu.edit.preferences=_Preferences
-
-Main.menu.insert=_Insert
-Main.menu.insert.blockquote=_Blockquote
-Main.menu.insert.code=Inline _Code
-Main.menu.insert.fenced_code_block=_Fenced Code Block
-Main.menu.insert.fenced_code_block.prompt=Enter code here
-Main.menu.insert.link=_Link...
-Main.menu.insert.image=_Image...
-Main.menu.insert.heading.1=Heading _1
-Main.menu.insert.heading.1.prompt=heading 1
-Main.menu.insert.heading.2=Heading _2
-Main.menu.insert.heading.2.prompt=heading 2
-Main.menu.insert.heading.3=Heading _3
-Main.menu.insert.heading.3.prompt=heading 3
-Main.menu.insert.unordered_list=_Unordered List
-Main.menu.insert.ordered_list=_Ordered List
-Main.menu.insert.horizontal_rule=_Horizontal Rule
-
-Main.menu.format=Forma_t
-Main.menu.format.bold=_Bold
-Main.menu.format.italic=_Italic
-Main.menu.format.superscript=Su_perscript
-Main.menu.format.subscript=Su_bscript
-Main.menu.format.strikethrough=Stri_kethrough
-
-Main.menu.definition=_Definition
-Main.menu.definition.create=_Create
-Main.menu.definition.insert=_Insert
-
-Main.menu.help=_Help
-Main.menu.help.about=About ${Main.title}
-
-# ########################################################################
-# Status Bar
-# ########################################################################
-
-Main.status.text.offset=offset
-Main.status.line=Line {0} of {1}, ${Main.status.text.offset} {2}
-Main.status.state.default=OK
-Main.status.error.parse={0} (near ${Main.status.text.offset} {1})
-Main.status.error.def.blank=Move the caret to a word before inserting a definition.
-Main.status.error.def.empty=Create a definition before inserting a definition.
-Main.status.error.def.missing=No definition value found for ''{0}''.
-Main.status.error.r=Error with [{0}...]: {1}
-
-# ########################################################################
-# Preferences
-# ########################################################################
-
-Preferences.r=R
-Preferences.r.script=Startup Script
-Preferences.r.script.desc=Script runs prior to executing R statements within the document.
-Preferences.r.directory=Working Directory
-Preferences.r.directory.desc=Value assigned to $application.r.working.directory$ and usable in the startup script.
-Preferences.r.delimiter.began=Delimiter Prefix
-Preferences.r.delimiter.began.desc=Prefix of expression that wraps inserted definitions.
-Preferences.r.delimiter.ended=Delimiter Suffix
-Preferences.r.delimiter.ended.desc=Suffix of expression that wraps inserted definitions.
-
-Preferences.images=Images
-Preferences.images.directory=Relative Directory
-Preferences.images.directory.desc=Path prepended to embedded images referenced using local file paths.
-Preferences.images.suffixes=Extensions
-Preferences.images.suffixes.desc=Preferred order of image file types to embed, separated by spaces.
-
-Preferences.definitions=Definitions
-Preferences.definitions.path=File name
-Preferences.definitions.path.desc=Absolute path to interpolated string definitions.
-Preferences.definitions.delimiter.began=Delimiter Prefix
-Preferences.definitions.delimiter.began.desc=Indicates when a definition key is starting.
-Preferences.definitions.delimiter.ended=Delimiter Suffix
-Preferences.definitions.delimiter.ended.desc=Indicates when a definition key is ending.
-
-Preferences.fonts=Editor
-Preferences.fonts.size_editor=Font Size
-Preferences.fonts.size_editor.desc=Font size to use for the text editor.
-
-# ########################################################################
-# Definition Pane and its Tree View
-# ########################################################################
-
-Definition.menu.create=Create
-Definition.menu.rename=Rename
-Definition.menu.remove=Delete
-Definition.menu.add.default=Undefined
-
-# ########################################################################
-# Failure messages with respect to YAML files.
-# ########################################################################
-yaml.error.open=Could not open YAML file (ensure non-empty file).
-yaml.error.unresolvable=Too much indirection for: ''{0}'' = ''{1}''.
-yaml.error.missing=Empty definition value for key ''{0}''.
-yaml.error.tree.form=Unassigned definition near ''{0}''.
-
-# ########################################################################
-# File Editor
-# ########################################################################
-
-FileEditor.loadFailed.message=Failed to load ''{0}''.\n\nReason: {1}
-FileEditor.loadFailed.title=Load
-FileEditor.loadFailed.reason.permissions=File must be readable and writable.
-FileEditor.saveFailed.message=Failed to save ''{0}''.\n\nReason: {1}
-FileEditor.saveFailed.title=Save
-
-# ########################################################################
-# File Open
-# ########################################################################
-
-Dialog.file.choose.open.title=Open File
-Dialog.file.choose.save.title=Save File
-
-Dialog.file.choose.filter.title.source=Source Files
-Dialog.file.choose.filter.title.definition=Definition Files
-Dialog.file.choose.filter.title.xml=XML Files
-Dialog.file.choose.filter.title.all=All Files
-
-# ########################################################################
-# Alert Dialog
-# ########################################################################
-
-Alert.file.close.title=Close
-Alert.file.close.text=Save changes to {0}?
-
-# ########################################################################
-# Definition Pane
-# ########################################################################
-
-Pane.definition.node.root.title=Definitions
-Pane.definition.button.create.label=_Create
-Pane.definition.button.rename.label=_Rename
-Pane.definition.button.delete.label=_Delete
-Pane.definition.button.create.tooltip=Add new item (Insert)
-Pane.definition.button.rename.tooltip=Rename selected item (F2)
-Pane.definition.button.delete.tooltip=Delete selected items (Delete)
-
-# Controls ###############################################################
-
-# ########################################################################
-# Browse File
-# ########################################################################
-
-BrowseFileButton.chooser.title=Browse for local file
-BrowseFileButton.chooser.allFilesFilter=All Files
-BrowseFileButton.tooltip=${BrowseFileButton.chooser.title}
-
-# Dialogs ################################################################
-
-# ########################################################################
-# Image
-# ########################################################################
-
-Dialog.image.title=Image
-Dialog.image.chooser.imagesFilter=Images
-Dialog.image.previewLabel.text=Markdown Preview\:
-Dialog.image.textLabel.text=Alternate Text\:
-Dialog.image.titleLabel.text=Title (tooltip)\:
-Dialog.image.urlLabel.text=Image URL\:
-
-# ########################################################################
-# Hyperlink
-# ########################################################################
-
-Dialog.link.title=Link
-Dialog.link.previewLabel.text=Markdown Preview\:
-Dialog.link.textLabel.text=Link Text\:
-Dialog.link.titleLabel.text=Title (tooltip)\:
-Dialog.link.urlLabel.text=Link URL\:
-
-# ########################################################################
-# About
-# ########################################################################
-
-Dialog.about.title=About
-Dialog.about.header=${Main.title}
-Dialog.about.content=Copyright 2020 White Magic Software, Ltd.\n\nBased on Markdown Writer FX by Karl Tauber
src/main/resources/com/scrivenvar/scene.css
-/*
- * Copyright (c) 2015 Karl Tauber <karl at jformdesigner dot com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*---- toolbar ----*/
-
-.tool-bar {
- -fx-spacing: 0;
-}
-
-.tool-bar .button {
- -fx-background-color: transparent;
-}
-
-.tool-bar .button:hover {
- -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
- -fx-color: -fx-hover-base;
-}
-
-.tool-bar .button:armed {
- -fx-color: -fx-pressed-base;
-}
src/main/resources/com/scrivenvar/settings.properties
-# ########################################################################
-# Application
-# ########################################################################
-
-application.title=scrivenvar
-application.package=com/${application.title}
-application.messages= com.${application.title}.messages
-
-# Suppress multiple file modified notifications for one logical modification.
-# Given in milliseconds.
-application.watchdog.timeout=50
-
-# ########################################################################
-# Preferences
-# ########################################################################
-
-preferences.root=com.${application.title}
-preferences.root.state=state
-preferences.root.options=options
-preferences.root.definition.source=definition.source
-
-# ########################################################################
-# File and Path References
-# ########################################################################
-file.stylesheet.scene=${application.package}/scene.css
-file.stylesheet.markdown=${application.package}/editor/markdown.css
-file.stylesheet.preview=webview.css
-file.stylesheet.xml=${application.package}/xml.css
-
-file.logo.16 =${application.package}/logo16.png
-file.logo.32 =${application.package}/logo32.png
-file.logo.128=${application.package}/logo128.png
-file.logo.256=${application.package}/logo256.png
-file.logo.512=${application.package}/logo512.png
-
-# Default file name when a new file is created.
-# This ensures that the file type can always be
-# discerned so that the correct type of variable
-# reference can be inserted.
-file.default=untitled.md
-file.definition.default=variables.yaml
-
-# ########################################################################
-# File name Extensions
-# ########################################################################
-
-# Comma-separated list of definition file name extensions.
-definition.file.ext.json=*.json
-definition.file.ext.toml=*.toml
-definition.file.ext.yaml=*.yml,*.yaml
-definition.file.ext.properties=*.properties,*.props
-
-# Comma-separated list of file name extensions.
-file.ext.rmarkdown=*.Rmd
-file.ext.rxml=*.Rxml
-file.ext.source=*.md,*.markdown,*.mkdown,*.mdown,*.mkdn,*.mkd,*.mdwn,*.mdtxt,*.mdtext,*.text,*.txt,${file.ext.rmarkdown},${file.ext.rxml}
-file.ext.definition=${definition.file.ext.yaml}
-file.ext.xml=*.xml,${file.ext.rxml}
-file.ext.all=*.*
-
-# File name extension search order for images.
-file.ext.image.order=svg pdf png jpg tiff
-
-# ########################################################################
-# Variable Name Editor
-# ########################################################################
-
-# Maximum number of characters for a variable name. A variable is defined
-# as one or more non-whitespace characters up to this maximum length.
-editor.variable.maxLength=256
-
-# ########################################################################
-# Dialog Preferences
-# ########################################################################
-
-dialog.alert.button.order.mac=L_HE+U+FBIX_NCYOA_R
-dialog.alert.button.order.linux=L_HE+UNYACBXIO_R
-dialog.alert.button.order.windows=L_E+U+FBXI_YNOCAH_R
-
-# Ensures a consistent button order for alert dialogs across platforms (because
-# the default button order on Linux defies all logic).
-dialog.alert.button.order=${dialog.alert.button.order.windows}
src/main/resources/com/scrivenvar/variables.yaml
----
-c:
- protagonist:
- name:
- First: Chloe
- First_pos: $c.protagonist.name.First$'s
- Middle: Irene
- Family: Angelos
- nick:
- Father: Savant
- Mother: Sweetie
- colour:
- eyes: green
- hair: dark auburn
- syn_1: black
- syn_2: purple
- syn_11: teal
- syn_6: silver
- favourite: emerald green
- speech:
- tic: oh
- father:
- heritage: Greek
- name:
- Short: Bryce
- First: Bryson
- First_pos: $c.protagonist.father.name.First$'s
- Honourific: Mr.
- education: Masters
- vocation:
- name: robotics
- title: roboticist
- employer:
- name:
- Short: Rabota
- Full: $c.protagonist.father.employer.name.Short$ Designs
- hair:
- style: thick, curly
- colour: black
- eyes:
- colour: dark brown
- Endear: Dad
- vehicle: coupé
- mother:
- name:
- Short: Cass
- First: Cassandra
- First_pos: $c.protagonist.mother.name.First$'s
- Honourific: Mrs.
- education: PhD
- speech:
- tic: cute
- Honorific: Doctor
- vocation:
- article: an
- name: oceanography
- title: oceanographer
- employer:
- name:
- Full: Oregon State University
- Short: OSU
- eyes:
- colour: blue
- hair:
- style: thick, curly
- colour: dark brown
- Endear: Mom
- Endear_pos: Mom's
- uncle:
- name:
- First: Damian
- First_pos: $c.protagonist.uncle.name.First$'s
- Family: Moros
- hands:
- fingers:
- shape: long, bony
- friend:
- primary:
- name:
- First: Gerard
- First_pos: $c.protagonist.friend.primary.name.First$'s
- Family: Baran
- Family_pos: $c.protagonist.friend.primary.name.Family$'s
- favourite:
- colour: midnight blue
- eyes:
- colour: hazel
- mother:
- name:
- First: Isabella
- Short: Izzy
- Honourific: Mrs.
- father:
- name:
- Short: Mo
- First: Montgomery
- First_pos: $c.protagonist.friend.primary.father.name.First$'s
- Honourific: Mr.
- speech:
- tic: y'know
- endear: Pops
- military:
- primary:
- name:
- First: Felix
- Family: LeMay
- Family_pos: LeMay's
- rank:
- Short: General
- Full: Brigadier $c.military.primary.rank.Short$
- colour:
- eyes: gray
- hair: dirty brown
- secondary:
- name:
- Family: Grell
- rank: Colonel
- colour:
- eyes: green
- hair: deep red
- quaternary:
- name:
- First: Gretchen
- Family: Steinherz
- minor:
- primary:
- name:
- First: River
- Family: Banks
- Honourific: Mx.
- vocation:
- title: salesperson
- employer:
- Name: Geophysical Prospecting Incorporated
- Abbr: GPI
- Area: Cold Spring Creek
- payment: twenty million
- secondary:
- name:
- First: Renato
- Middle: Carroña
- Family: Salvatierra
- Family_pos: $c.minor.secondary.name.Family$'s
- Full: $c.minor.secondary.name.First$ $c.minor.secondary.name.Middle$ Alejandro Gregorio Eduardo Salomón Vidal $c.minor.secondary.name.Family$
- Honourific: Mister
- Honourific_sp: Señor
- vocation:
- title: detective
- tertiary:
- name:
- First: Robert
- Family: Hanssen
-
- ai:
- protagonist:
- name:
- first: yoky
- First: Yoky
- First_pos: $c.ai.protagonist.name.First$'s
- Family: Tsukuda
- id: 46692
- persona:
- name:
- First: Hoshi
- First_pos: $c.ai.protagonist.persona.name.First$'s
- Family: Yamamoto
- Family_pos: $c.ai.protagonist.persona.name.Family$'s
- culture: Japanese-American
- ethnicity: Asian
- rank: Technical Sergeant
- speech:
- tic: okay
- first:
- Name: Prôtos
- Name_pos: Prôtos'
- age:
- actual: twenty-six weeks
- virtual: five years
- second:
- Name: Défteros
- third:
- Name: Trítos
- fourth:
- Name: Tétartos
- material:
- type: metal
- raw: ilmenite
- extract: ore
- name:
- short: titanium
- long: $c.ai.material.name.short$ dioxide
- Abbr: TiO~2~
- pejorative: tin
- animal:
- protagonist:
- Name: Trufflers
- type: pig
- antagonist:
- name: coywolf
- Name: Coywolf
- plural: coywolves
-
-narrator:
- one: (by $c.protagonist.father.name.First$ $c.protagonist.name.Family$)
- two: (by $c.protagonist.mother.name.First$ $c.protagonist.name.Family$)
-
-military:
- name:
- Short: Agency
- Short_pos: $military.name.Short$'s
- plural: agencies
- machine:
- Name: Skopós
- Name_pos: $military.machine.Name$'
- Location: Arctic
- predictor: quantum chips
- land:
- name:
- Full: $military.name.Short$ of Defence
- Slogan: Safety in Numbers
- air:
- name:
- Full: $military.name.Short$ of Air
- compound:
- type: base
- lights:
- colour: blue
- nick:
- Prefix: Catacombs
- prep: of
- Suffix: Tartarus
-
-government:
- Country: United States
-
-location:
- protagonist:
- City: Corvallis
- Region: Oregon
- Geography: Willamette Valley
- secondary:
- City: Willow Branch Spring
- Region: Oregon
- Geography: Wheeler County
- Water: Clarno Rapids
- Road: Shaniko-Fossil Highway
- tertiary:
- City: Leavenworth
- Region: Washington
- Type: Bavarian village
- school:
- address: 1400 Northwest Buchanan Avenue
- hospital:
- Name: Good Samaritan Regional Medical Center
- ai:
- escape:
- country:
- Name: Ecuador
- Name_pos: Ecuador's
- mountain:
- Name: Chimborazo
-
-language:
- ai:
- article: an
- singular: exanimis
- plural: exanimēs
- brain:
- singular: superum
- plural: supera
- title: memristor array
- Title: Memristor Array
- police:
- slang:
- singular: mippo
- plural: $language.police.slang.singular$s
-
-date:
- anchor: 2042-09-02
- protagonist:
- born: 0
- conceived: -243
- attacked:
- first: 2192
- second: 8064
- father:
- attacked:
- first: -8205
- date:
- second: -1550
- family:
- moved:
- first: $date.protagonist.conceived$ + 35
- game:
- played:
- first: $date.protagonist.born$ - 672
- second: $date.protagonist.family.moved.first$ + 2
- ai:
- interviewed: 6198
- onboarded: $date.ai.interviewed$ + 290
- diagnosed: $date.ai.onboarded$ + 2
- resigned: $date.ai.diagnosed$ + 3
- trapped: $date.ai.resigned$ + 26
- torturer: $date.ai.trapped$ + 18
- memristor: $date.ai.torturer$ + 61
- ethics: $date.ai.memristor$ + 415
- trained: $date.ai.ethics$ + 385
- mindjacked: $date.ai.trained$ + 22
- bombed: $date.ai.mindjacked$ + 458
- military:
- machine:
- Construction: Six years
-
-plot:
- Log: $c.ai.protagonist.name.First_pos$ Chronicles
- Channel: Quantum Channel
-
- device:
- computer:
- Name: Tau
- network:
- Name: Internet
- paper:
- name:
- full: electronic sheet
- short: sheet
- typewriter:
- Name: Underwood
- year: nineteen twenties
- room: root cellar
- portable:
- name: nanobook
- vehicle:
- name: robocars
- Name: Robocars
- sensor:
- name: BMP1580
- phone:
- name: comm
- name_pos: $plot.device.phone.name$'s
- Name: Comm
- plural: $plot.device.phone.name$s
- video:
- name: vidfeed
- plural: $plot.device.video.name$s
- game:
- Name: Psynæris
- thought: transed
- machine: telecognos
- location:
- Building: Nijō Castle
- District: Gion
- City: Kyoto
- Country: Japan
-
-farm:
- population:
- estimate: 350
- actual: 1,000
- energy: 9800kJ
- width: 55m
- length: 55m
- storeys: 10
-
-lamp:
- height: 0.17m
- length: 1.22m
- width: 0.28m
-
-crop:
- name:
- singular: tomato
- plural: $crop.name.singular$es
- energy: 318kJ
- weight: 450g
- yield: 50
- harvests: 7
- diameter: 2m
- height: 1.5m
-
-heading:
- ch_01: Till
- ch_02: Sow
- ch_03: Seed
- ch_04: Germinate
- ch_05: Grow
- ch_06: Shoot
- ch_07: Bud
- ch_08: Bloom
- ch_09: Pollinate
- ch_10: Fruit
- ch_11: Harvest
- ch_12: Deliver
- ch_13: Spoil
- ch_14: Revolt
- ch_15: Compost
- ch_16: Burn
- ch_17: Release
- ch_18: End Notes
- ch_19: Characters
-
-inference:
- unit: per cent
- min: two
- ch_sow: eighty
- ch_seed: fifty-two
- ch_germinate: thirty-one
- ch_grow: fifteen
- ch_shoot: seven
- ch_bloom: four
- ch_pollinate: two
- ch_harvest: ninety-five
- ch_delivery: ninety-eight
-
-link:
- tartarus: https://en.wikipedia.org/wiki/Tartarus
- exploits: https://www.google.ca/search?q=inurl:ftp+password+filetype:xls
- atalanta: https://en.wikipedia.org/wiki/Atalanta
- detain: https://goo.gl/RCNuOQ
- ceramics: https://en.wikipedia.org/wiki/Transparent_ceramics
- algernon: https://en.wikipedia.org/wiki/Flowers_for_Algernon
- holocaust: https://en.wikipedia.org/wiki/IBM_and_the_Holocaust
- memristor: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.404.9037\&rep=rep1\&type=pdf
- surveillance: https://www.youtube.com/watch?v=XEVlyP4_11M#t=1487
- tor: https://www.torproject.org
- hydra: https://en.wikipedia.org/wiki/Lernaean_Hydra
- foliage: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3691134
- drake: http://www.bbc.com/future/story/20120821-how-many-alien-worlds-exist
- fermi: https://arxiv.org/pdf/1404.0204v1.pdf
- face: https://www.youtube.com/watch?v=ladqJQLR2bA
- expenditures: http://wikipedia.org/wiki/List_of_countries_by_military_expenditures
- governance: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531
- asimov: https://en.wikipedia.org/wiki/Three_Laws_of_Robotics
- clarke: https://en.wikipedia.org/wiki/Clarke's_three_laws
- jetpack: http://jetpackaviation.com/
- hoverboard: https://www.youtube.com/watch?v=WQzLrvz4DKQ
- eyes_five: https://en.wikipedia.org/wiki/Five_Eyes
- eyes_nine: https://www.privacytools.io/
- eyes_fourteen: http://electrospaces.blogspot.nl/2013/12/14-eyes-are-3rd-party-partners-forming.html
- tourism: http://www.spacefuture.com/archive/investigation_on_the_economic_and_technological_feasibiity_of_commercial_passenger_transportation_into_leo.shtml
-
src/main/resources/com/scrivenvar/xml.css
-.tagmark {
- -fx-fill: gray;
-}
-.anytag {
- -fx-fill: crimson;
-}
-.paren {
- -fx-fill: firebrick;
- -fx-font-weight: bold;
-}
-.attribute {
- -fx-fill: darkviolet;
-}
-.avalue {
- -fx-fill: black;
-}
-.comment {
- -fx-fill: teal;
-}
src/main/resources/com/keenwrite/settings.properties
+# ########################################################################
+# Application
+# ########################################################################
+
+application.title=keenwrite
+application.package=com/${application.title}
+application.messages= com.${application.title}.messages
+
+# Suppress multiple file modified notifications for one logical modification.
+# Given in milliseconds.
+application.watchdog.timeout=50
+
+# ########################################################################
+# Preferences
+# ########################################################################
+
+preferences.root=com.${application.title}
+preferences.root.state=state
+preferences.root.options=options
+preferences.root.definition.source=definition.source
+
+# ########################################################################
+# File and Path References
+# ########################################################################
+file.stylesheet.scene=${application.package}/scene.css
+file.stylesheet.markdown=${application.package}/editor/markdown.css
+file.stylesheet.preview=webview.css
+file.stylesheet.xml=${application.package}/xml.css
+
+file.logo.16 =${application.package}/logo16.png
+file.logo.32 =${application.package}/logo32.png
+file.logo.128=${application.package}/logo128.png
+file.logo.256=${application.package}/logo256.png
+file.logo.512=${application.package}/logo512.png
+
+# Default file name when a new file is created.
+# This ensures that the file type can always be
+# discerned so that the correct type of variable
+# reference can be inserted.
+file.default=untitled.md
+file.definition.default=variables.yaml
+
+# ########################################################################
+# File name Extensions
+# ########################################################################
+
+# Comma-separated list of definition file name extensions.
+definition.file.ext.json=*.json
+definition.file.ext.toml=*.toml
+definition.file.ext.yaml=*.yml,*.yaml
+definition.file.ext.properties=*.properties,*.props
+
+# Comma-separated list of file name extensions.
+file.ext.rmarkdown=*.Rmd
+file.ext.rxml=*.Rxml
+file.ext.source=*.md,*.markdown,*.mkdown,*.mdown,*.mkdn,*.mkd,*.mdwn,*.mdtxt,*.mdtext,*.text,*.txt,${file.ext.rmarkdown},${file.ext.rxml}
+file.ext.definition=${definition.file.ext.yaml}
+file.ext.xml=*.xml,${file.ext.rxml}
+file.ext.all=*.*
+
+# File name extension search order for images.
+file.ext.image.order=svg pdf png jpg tiff
+
+# ########################################################################
+# Variable Name Editor
+# ########################################################################
+
+# Maximum number of characters for a variable name. A variable is defined
+# as one or more non-whitespace characters up to this maximum length.
+editor.variable.maxLength=256
+
+# ########################################################################
+# Dialog Preferences
+# ########################################################################
+
+dialog.alert.button.order.mac=L_HE+U+FBIX_NCYOA_R
+dialog.alert.button.order.linux=L_HE+UNYACBXIO_R
+dialog.alert.button.order.windows=L_E+U+FBXI_YNOCAH_R
+
+# Ensures a consistent button order for alert dialogs across platforms (because
+# the default button order on Linux defies all logic).
+dialog.alert.button.order=${dialog.alert.button.order.windows}
src/main/resources/com/keenwrite/variables.yaml
+---
+c:
+ protagonist:
+ name:
+ First: Chloe
+ First_pos: $c.protagonist.name.First$'s
+ Middle: Irene
+ Family: Angelos
+ nick:
+ Father: Savant
+ Mother: Sweetie
+ colour:
+ eyes: green
+ hair: dark auburn
+ syn_1: black
+ syn_2: purple
+ syn_11: teal
+ syn_6: silver
+ favourite: emerald green
+ speech:
+ tic: oh
+ father:
+ heritage: Greek
+ name:
+ Short: Bryce
+ First: Bryson
+ First_pos: $c.protagonist.father.name.First$'s
+ Honourific: Mr.
+ education: Masters
+ vocation:
+ name: robotics
+ title: roboticist
+ employer:
+ name:
+ Short: Rabota
+ Full: $c.protagonist.father.employer.name.Short$ Designs
+ hair:
+ style: thick, curly
+ colour: black
+ eyes:
+ colour: dark brown
+ Endear: Dad
+ vehicle: coupé
+ mother:
+ name:
+ Short: Cass
+ First: Cassandra
+ First_pos: $c.protagonist.mother.name.First$'s
+ Honourific: Mrs.
+ education: PhD
+ speech:
+ tic: cute
+ Honorific: Doctor
+ vocation:
+ article: an
+ name: oceanography
+ title: oceanographer
+ employer:
+ name:
+ Full: Oregon State University
+ Short: OSU
+ eyes:
+ colour: blue
+ hair:
+ style: thick, curly
+ colour: dark brown
+ Endear: Mom
+ Endear_pos: Mom's
+ uncle:
+ name:
+ First: Damian
+ First_pos: $c.protagonist.uncle.name.First$'s
+ Family: Moros
+ hands:
+ fingers:
+ shape: long, bony
+ friend:
+ primary:
+ name:
+ First: Gerard
+ First_pos: $c.protagonist.friend.primary.name.First$'s
+ Family: Baran
+ Family_pos: $c.protagonist.friend.primary.name.Family$'s
+ favourite:
+ colour: midnight blue
+ eyes:
+ colour: hazel
+ mother:
+ name:
+ First: Isabella
+ Short: Izzy
+ Honourific: Mrs.
+ father:
+ name:
+ Short: Mo
+ First: Montgomery
+ First_pos: $c.protagonist.friend.primary.father.name.First$'s
+ Honourific: Mr.
+ speech:
+ tic: y'know
+ endear: Pops
+ military:
+ primary:
+ name:
+ First: Felix
+ Family: LeMay
+ Family_pos: LeMay's
+ rank:
+ Short: General
+ Full: Brigadier $c.military.primary.rank.Short$
+ colour:
+ eyes: gray
+ hair: dirty brown
+ secondary:
+ name:
+ Family: Grell
+ rank: Colonel
+ colour:
+ eyes: green
+ hair: deep red
+ quaternary:
+ name:
+ First: Gretchen
+ Family: Steinherz
+ minor:
+ primary:
+ name:
+ First: River
+ Family: Banks
+ Honourific: Mx.
+ vocation:
+ title: salesperson
+ employer:
+ Name: Geophysical Prospecting Incorporated
+ Abbr: GPI
+ Area: Cold Spring Creek
+ payment: twenty million
+ secondary:
+ name:
+ First: Renato
+ Middle: Carroña
+ Family: Salvatierra
+ Family_pos: $c.minor.secondary.name.Family$'s
+ Full: $c.minor.secondary.name.First$ $c.minor.secondary.name.Middle$ Alejandro Gregorio Eduardo Salomón Vidal $c.minor.secondary.name.Family$
+ Honourific: Mister
+ Honourific_sp: Señor
+ vocation:
+ title: detective
+ tertiary:
+ name:
+ First: Robert
+ Family: Hanssen
+
+ ai:
+ protagonist:
+ name:
+ first: yoky
+ First: Yoky
+ First_pos: $c.ai.protagonist.name.First$'s
+ Family: Tsukuda
+ id: 46692
+ persona:
+ name:
+ First: Hoshi
+ First_pos: $c.ai.protagonist.persona.name.First$'s
+ Family: Yamamoto
+ Family_pos: $c.ai.protagonist.persona.name.Family$'s
+ culture: Japanese-American
+ ethnicity: Asian
+ rank: Technical Sergeant
+ speech:
+ tic: okay
+ first:
+ Name: Prôtos
+ Name_pos: Prôtos'
+ age:
+ actual: twenty-six weeks
+ virtual: five years
+ second:
+ Name: Défteros
+ third:
+ Name: Trítos
+ fourth:
+ Name: Tétartos
+ material:
+ type: metal
+ raw: ilmenite
+ extract: ore
+ name:
+ short: titanium
+ long: $c.ai.material.name.short$ dioxide
+ Abbr: TiO~2~
+ pejorative: tin
+ animal:
+ protagonist:
+ Name: Trufflers
+ type: pig
+ antagonist:
+ name: coywolf
+ Name: Coywolf
+ plural: coywolves
+
+narrator:
+ one: (by $c.protagonist.father.name.First$ $c.protagonist.name.Family$)
+ two: (by $c.protagonist.mother.name.First$ $c.protagonist.name.Family$)
+
+military:
+ name:
+ Short: Agency
+ Short_pos: $military.name.Short$'s
+ plural: agencies
+ machine:
+ Name: Skopós
+ Name_pos: $military.machine.Name$'
+ Location: Arctic
+ predictor: quantum chips
+ land:
+ name:
+ Full: $military.name.Short$ of Defence
+ Slogan: Safety in Numbers
+ air:
+ name:
+ Full: $military.name.Short$ of Air
+ compound:
+ type: base
+ lights:
+ colour: blue
+ nick:
+ Prefix: Catacombs
+ prep: of
+ Suffix: Tartarus
+
+government:
+ Country: United States
+
+location:
+ protagonist:
+ City: Corvallis
+ Region: Oregon
+ Geography: Willamette Valley
+ secondary:
+ City: Willow Branch Spring
+ Region: Oregon
+ Geography: Wheeler County
+ Water: Clarno Rapids
+ Road: Shaniko-Fossil Highway
+ tertiary:
+ City: Leavenworth
+ Region: Washington
+ Type: Bavarian village
+ school:
+ address: 1400 Northwest Buchanan Avenue
+ hospital:
+ Name: Good Samaritan Regional Medical Center
+ ai:
+ escape:
+ country:
+ Name: Ecuador
+ Name_pos: Ecuador's
+ mountain:
+ Name: Chimborazo
+
+language:
+ ai:
+ article: an
+ singular: exanimis
+ plural: exanimēs
+ brain:
+ singular: superum
+ plural: supera
+ title: memristor array
+ Title: Memristor Array
+ police:
+ slang:
+ singular: mippo
+ plural: $language.police.slang.singular$s
+
+date:
+ anchor: 2042-09-02
+ protagonist:
+ born: 0
+ conceived: -243
+ attacked:
+ first: 2192
+ second: 8064
+ father:
+ attacked:
+ first: -8205
+ date:
+ second: -1550
+ family:
+ moved:
+ first: $date.protagonist.conceived$ + 35
+ game:
+ played:
+ first: $date.protagonist.born$ - 672
+ second: $date.protagonist.family.moved.first$ + 2
+ ai:
+ interviewed: 6198
+ onboarded: $date.ai.interviewed$ + 290
+ diagnosed: $date.ai.onboarded$ + 2
+ resigned: $date.ai.diagnosed$ + 3
+ trapped: $date.ai.resigned$ + 26
+ torturer: $date.ai.trapped$ + 18
+ memristor: $date.ai.torturer$ + 61
+ ethics: $date.ai.memristor$ + 415
+ trained: $date.ai.ethics$ + 385
+ mindjacked: $date.ai.trained$ + 22
+ bombed: $date.ai.mindjacked$ + 458
+ military:
+ machine:
+ Construction: Six years
+
+plot:
+ Log: $c.ai.protagonist.name.First_pos$ Chronicles
+ Channel: Quantum Channel
+
+ device:
+ computer:
+ Name: Tau
+ network:
+ Name: Internet
+ paper:
+ name:
+ full: electronic sheet
+ short: sheet
+ typewriter:
+ Name: Underwood
+ year: nineteen twenties
+ room: root cellar
+ portable:
+ name: nanobook
+ vehicle:
+ name: robocars
+ Name: Robocars
+ sensor:
+ name: BMP1580
+ phone:
+ name: comm
+ name_pos: $plot.device.phone.name$'s
+ Name: Comm
+ plural: $plot.device.phone.name$s
+ video:
+ name: vidfeed
+ plural: $plot.device.video.name$s
+ game:
+ Name: Psynæris
+ thought: transed
+ machine: telecognos
+ location:
+ Building: Nijō Castle
+ District: Gion
+ City: Kyoto
+ Country: Japan
+
+farm:
+ population:
+ estimate: 350
+ actual: 1,000
+ energy: 9800kJ
+ width: 55m
+ length: 55m
+ storeys: 10
+
+lamp:
+ height: 0.17m
+ length: 1.22m
+ width: 0.28m
+
+crop:
+ name:
+ singular: tomato
+ plural: $crop.name.singular$es
+ energy: 318kJ
+ weight: 450g
+ yield: 50
+ harvests: 7
+ diameter: 2m
+ height: 1.5m
+
+heading:
+ ch_01: Till
+ ch_02: Sow
+ ch_03: Seed
+ ch_04: Germinate
+ ch_05: Grow
+ ch_06: Shoot
+ ch_07: Bud
+ ch_08: Bloom
+ ch_09: Pollinate
+ ch_10: Fruit
+ ch_11: Harvest
+ ch_12: Deliver
+ ch_13: Spoil
+ ch_14: Revolt
+ ch_15: Compost
+ ch_16: Burn
+ ch_17: Release
+ ch_18: End Notes
+ ch_19: Characters
+
+inference:
+ unit: per cent
+ min: two
+ ch_sow: eighty
+ ch_seed: fifty-two
+ ch_germinate: thirty-one
+ ch_grow: fifteen
+ ch_shoot: seven
+ ch_bloom: four
+ ch_pollinate: two
+ ch_harvest: ninety-five
+ ch_delivery: ninety-eight
+
+link:
+ tartarus: https://en.wikipedia.org/wiki/Tartarus
+ exploits: https://www.google.ca/search?q=inurl:ftp+password+filetype:xls
+ atalanta: https://en.wikipedia.org/wiki/Atalanta
+ detain: https://goo.gl/RCNuOQ
+ ceramics: https://en.wikipedia.org/wiki/Transparent_ceramics
+ algernon: https://en.wikipedia.org/wiki/Flowers_for_Algernon
+ holocaust: https://en.wikipedia.org/wiki/IBM_and_the_Holocaust
+ memristor: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.404.9037\&rep=rep1\&type=pdf
+ surveillance: https://www.youtube.com/watch?v=XEVlyP4_11M#t=1487
+ tor: https://www.torproject.org
+ hydra: https://en.wikipedia.org/wiki/Lernaean_Hydra
+ foliage: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3691134
+ drake: http://www.bbc.com/future/story/20120821-how-many-alien-worlds-exist
+ fermi: https://arxiv.org/pdf/1404.0204v1.pdf
+ face: https://www.youtube.com/watch?v=ladqJQLR2bA
+ expenditures: http://wikipedia.org/wiki/List_of_countries_by_military_expenditures
+ governance: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531
+ asimov: https://en.wikipedia.org/wiki/Three_Laws_of_Robotics
+ clarke: https://en.wikipedia.org/wiki/Clarke's_three_laws
+ jetpack: http://jetpackaviation.com/
+ hoverboard: https://www.youtube.com/watch?v=WQzLrvz4DKQ
+ eyes_five: https://en.wikipedia.org/wiki/Five_Eyes
+ eyes_nine: https://www.privacytools.io/
+ eyes_fourteen: http://electrospaces.blogspot.nl/2013/12/14-eyes-are-3rd-party-partners-forming.html
+ tourism: http://www.spacefuture.com/archive/investigation_on_the_economic_and_technological_feasibiity_of_commercial_passenger_transportation_into_leo.shtml
+
src/main/resources/com/keenwrite/xml.css
+.tagmark {
+ -fx-fill: gray;
+}
+.anytag {
+ -fx-fill: crimson;
+}
+.paren {
+ -fx-fill: firebrick;
+ -fx-font-weight: bold;
+}
+.attribute {
+ -fx-fill: darkviolet;
+}
+.avalue {
+ -fx-fill: black;
+}
+.comment {
+ -fx-fill: teal;
+}