From 1eb850bd705833cdfec88347748b05290e6cad38 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 16 Nov 2018 16:43:05 -0500 Subject: [PATCH 1/5] run and crawl buttons, no styling --- .../kotlin/befide/befunge/b93/B93Funge.kt | 20 +++-- ide/ide.iml | 3 + ide/src/main/kotlin/befide/ide/Main.kt | 87 +++++++++++++++++++ ide/src/main/resources/befide/ide/style.css | 18 ++-- 4 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 ide/src/main/kotlin/befide/ide/Main.kt diff --git a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt index 5244407..7cfa20e 100644 --- a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt +++ b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt @@ -6,7 +6,7 @@ import befide.befunge.state.* class B93Funge : Funge { override val width = 80 override val height = 25 - private var cars = Array(height) { Array(width) {' '.toLong()}} + private var cars = Array(height) { Array(width) { ' '.toLong() } } override fun get(vec: Vec): Value { return Value(cars[vec.y][vec.x]) @@ -32,17 +32,17 @@ class B93Funge : Funge { y += height } - return Vec(x,y) + return Vec(x, y) } override fun setString(data: String) { val strings = data.split('\n') for (i in strings.size until height) { - cars[i] = Array(width) {' '.toLong()} + cars[i] = Array(width) { ' '.toLong() } } strings.map { - it.toList().map{it.toLong()} - } + it.toList().map { it.toLong() } + } .forEachIndexed { index, list -> if (index > height) { return @@ -50,13 +50,17 @@ class B93Funge : Funge { cars[index] = ( list.toList() + List( if (list.size <= width) width - list.size else 0 - ){ - ' '.toLong() - } + ) { + ' '.toLong() + } ) .subList(0, width) .toTypedArray() } } + + override fun toString(): String { + return cars.map { it.map { Value(it).asChar ?: '?' }.joinToString("") }.joinToString("\n") + } } diff --git a/ide/ide.iml b/ide/ide.iml index 86b45e9..bf8f97e 100644 --- a/ide/ide.iml +++ b/ide/ide.iml @@ -17,6 +17,9 @@ + + + diff --git a/ide/src/main/kotlin/befide/ide/Main.kt b/ide/src/main/kotlin/befide/ide/Main.kt new file mode 100644 index 0000000..11c0ce8 --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/Main.kt @@ -0,0 +1,87 @@ +package befide.ide + +import befide.befunge.b93.B93Interpreter +import befide.befunge.core.Interpreter +import befide.befunge.state.Vec +import javafx.animation.Animation +import javafx.animation.Timeline +import javafx.beans.property.SimpleObjectProperty +import javafx.beans.property.SimpleStringProperty +import javafx.util.Duration +import tornadofx.* + +class EditorView : View("Befide") { + private var interp: Interpreter = B93Interpreter() + + private val textProperty = SimpleStringProperty("") + private var text by textProperty + + private val posProperty = SimpleObjectProperty(Vec(0, 0)) + private var pos by posProperty + + private var runTimeline: Timeline = timeline(false) { + keyframe(Duration.seconds(0.0)) { + setOnFinished { + if (!interp.step()) + this@timeline.stop() + } + } + keyframe(Duration.seconds(1.0)) {} + + cycleCount = Animation.INDEFINITE + } + + init { + interp.fungeChanged += { text = interp.funge.toString() } + textProperty.addListener { _, _, newValue -> interp.funge.setString(newValue) } + interp.ipChanged += { pos = it.to.pos } + } + + override val root = vbox { + label { + bind(posProperty.stringBinding { if (it != null) "${it.x} ${it.y}" else "-" }) + } + + hbox { + button("step") { + setOnAction { interp.step() } + } + + button("reset") { + setOnAction { interp.reset() } + } + + button("run") { + setOnAction { + runTimeline.rate = 1000.0 + runTimeline.playFromStart() + } + } + + button("crawl") { + setOnAction { + runTimeline.rate = 2.0 + runTimeline.playFromStart() + } + } + + button("stop") { + setOnAction { + runTimeline.stop() + } + } + } + + textarea(textProperty) + } + + init { + text = """64+"!dlroW ,olleH">:#,_@""" + } +} + +class MainApp : App(EditorView::class) { + init { + importStylesheet(resources["style.css"]) + } +} diff --git a/ide/src/main/resources/befide/ide/style.css b/ide/src/main/resources/befide/ide/style.css index 12f2231..8c397f4 100644 --- a/ide/src/main/resources/befide/ide/style.css +++ b/ide/src/main/resources/befide/ide/style.css @@ -1,16 +1,8 @@ -.lbl { - -fx-text-fill: maroon; +* { + -fx-font-size: 14; + -fx-font-fill: black; } -.val { - -fx-font-weight: bold; -} - -#heightLabel { - -fx-font-style: italic; -} - -GridPane { - -fx-font-size: 20px; - -fx-font-family: Consolas, monospace; +.text-area { + -fx-font-family: monospace; } \ No newline at end of file From a1e6368b2f19f2404eb8a0b39e8eddbcda818c85 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 19 Nov 2018 13:51:46 -0500 Subject: [PATCH 2/5] basic gui structure --- ide/src/main/kotlin/befide/ide/Main.kt | 134 +++++++++++++------- ide/src/main/resources/befide/ide/style.css | 3 +- 2 files changed, 91 insertions(+), 46 deletions(-) diff --git a/ide/src/main/kotlin/befide/ide/Main.kt b/ide/src/main/kotlin/befide/ide/Main.kt index 11c0ce8..2193b30 100644 --- a/ide/src/main/kotlin/befide/ide/Main.kt +++ b/ide/src/main/kotlin/befide/ide/Main.kt @@ -2,24 +2,37 @@ package befide.ide import befide.befunge.b93.B93Interpreter import befide.befunge.core.Interpreter -import befide.befunge.state.Vec +import befide.befunge.core.Pointer import javafx.animation.Animation import javafx.animation.Timeline import javafx.beans.property.SimpleObjectProperty import javafx.beans.property.SimpleStringProperty import javafx.util.Duration import tornadofx.* +import tornadofx.getValue +import tornadofx.setValue -class EditorView : View("Befide") { - private var interp: Interpreter = B93Interpreter() +class IOView(val interp: Interpreter) : View() { + val textProperty = SimpleStringProperty("") + var text by textProperty - private val textProperty = SimpleStringProperty("") - private var text by textProperty + init { + // add listeners to interp, handle streams, idk + } - private val posProperty = SimpleObjectProperty(Vec(0, 0)) - private var pos by posProperty + override val root = vbox { + textarea(textProperty) { + // width, height, idk + prefHeight = 200.0 + } + textfield { - private var runTimeline: Timeline = timeline(false) { + } + } +} + +class ActionView(val interp: Interpreter) : View() { + var runTimeline: Timeline = timeline(false) { keyframe(Duration.seconds(0.0)) { setOnFinished { if (!interp.step()) @@ -31,52 +44,83 @@ class EditorView : View("Befide") { cycleCount = Animation.INDEFINITE } - init { - interp.fungeChanged += { text = interp.funge.toString() } - textProperty.addListener { _, _, newValue -> interp.funge.setString(newValue) } - interp.ipChanged += { pos = it.to.pos } - } - - override val root = vbox { - label { - bind(posProperty.stringBinding { if (it != null) "${it.x} ${it.y}" else "-" }) + override val root = hbox { + button("step") { + setOnAction { interp.step() } } - hbox { - button("step") { - setOnAction { interp.step() } - } + button("reset") { + setOnAction { interp.reset() } + } - button("reset") { - setOnAction { interp.reset() } - } - - button("run") { - setOnAction { - runTimeline.rate = 1000.0 - runTimeline.playFromStart() - } - } - - button("crawl") { - setOnAction { - runTimeline.rate = 2.0 - runTimeline.playFromStart() - } - } - - button("stop") { - setOnAction { - runTimeline.stop() - } + button("run") { + setOnAction { + runTimeline.rate = 1000.0 + runTimeline.playFromStart() } } - textarea(textProperty) + button("crawl") { + setOnAction { + runTimeline.rate = 2.0 + runTimeline.playFromStart() + } + } + + button("stop") { + setOnAction { + runTimeline.stop() + } + } + } +} + +class CodeView(val interp: Interpreter) : View() { + val srcProperty = SimpleStringProperty("") + var src by srcProperty + + init { + interp.fungeChanged += { src = interp.funge.toString() } + srcProperty.addListener { _, _, newValue -> interp.funge.setString(newValue) } + } + + override val root = textarea(srcProperty) { + + } +} + +class StackView(val interp: Interpreter) : View() { + override val root = textarea { + prefWidth = 100.0 + } +} + +class EditorView : View("Befide") { + private var interp: Interpreter = B93Interpreter() + + private val codeView = CodeView(interp) + private val actionView = ActionView(interp) + private val stackView = StackView(interp) + private val ioView = IOView(interp) + + override val root = borderpane { + addClass("editor-root") + + top { add(actionView) } + + center { + add(codeView) + } + + right { + add(stackView) + } + + bottom { add(ioView) } } init { - text = """64+"!dlroW ,olleH">:#,_@""" + codeView.src = """64+"!dlroW ,olleH">:#,_@""" } } diff --git a/ide/src/main/resources/befide/ide/style.css b/ide/src/main/resources/befide/ide/style.css index 8c397f4..1e918b4 100644 --- a/ide/src/main/resources/befide/ide/style.css +++ b/ide/src/main/resources/befide/ide/style.css @@ -5,4 +5,5 @@ .text-area { -fx-font-family: monospace; -} \ No newline at end of file +} + From cdf0dfee28a1f515a14a4ef6e1497c5478982af2 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 19 Nov 2018 14:48:18 -0500 Subject: [PATCH 3/5] separate view files; B93Funge stores Value objects --- .../kotlin/befide/befunge/b93/B93Funge.kt | 66 ++++------ .../main/kotlin/befide/befunge/state/Vec.kt | 7 + ide/src/main/kotlin/befide/ide/ActionView.kt | 51 ++++++++ ide/src/main/kotlin/befide/ide/CodeView.kt | 19 +++ ide/src/main/kotlin/befide/ide/EditorView.kt | 34 +++++ ide/src/main/kotlin/befide/ide/IOView.kt | 25 ++++ ide/src/main/kotlin/befide/ide/Main.kt | 122 ------------------ ide/src/main/kotlin/befide/ide/Sample.kt | 53 -------- ide/src/main/kotlin/befide/ide/StackView.kt | 10 ++ .../main/resources/befide/ide/SampleView.fxml | 16 --- ide/src/main/resources/befide/ide/style.css | 4 + 11 files changed, 175 insertions(+), 232 deletions(-) create mode 100644 ide/src/main/kotlin/befide/ide/ActionView.kt create mode 100644 ide/src/main/kotlin/befide/ide/CodeView.kt create mode 100644 ide/src/main/kotlin/befide/ide/EditorView.kt create mode 100644 ide/src/main/kotlin/befide/ide/IOView.kt delete mode 100644 ide/src/main/kotlin/befide/ide/Sample.kt create mode 100644 ide/src/main/kotlin/befide/ide/StackView.kt delete mode 100644 ide/src/main/resources/befide/ide/SampleView.fxml diff --git a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt index 7cfa20e..e591d8b 100644 --- a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt +++ b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt @@ -3,64 +3,48 @@ package befide.befunge.b93 import befide.befunge.core.* import befide.befunge.state.* +fun List.padEnd(size: Int, factory: (Int) -> (T)): List = this + (this.size until size).map { factory(it) } + class B93Funge : Funge { override val width = 80 override val height = 25 - private var cars = Array(height) { Array(width) { ' '.toLong() } } + + val bounds = Vec(width, height) + + private var cars = Array(height) { Array(width) { Value(' ') } } override fun get(vec: Vec): Value { - return Value(cars[vec.y][vec.x]) + return cars[vec.y][vec.x] } override fun set(vec: Vec, value: Value) { - cars[vec.y][vec.x] = value.value + cars[vec.y][vec.x] = value } override fun nextVec(vec: Vec, delta: Vec): Vec { - var x = vec.x + delta.x - var y = vec.y + delta.y - if (x >= width || x < 0) { - x %= width - } - if (x < 0) { - x += width - } - if (y >= height || y < 0) { - y %= height - } - if (y < 0) { - y += height - } - - return Vec(x, y) + return (vec + delta) mod bounds } override fun setString(data: String) { - val strings = data.split('\n') - for (i in strings.size until height) { - cars[i] = Array(width) { ' '.toLong() } - } - strings.map { - it.toList().map { it.toLong() } - } - .forEachIndexed { index, list -> - if (index > height) { - return - } - cars[index] = ( - list.toList() + List( - if (list.size <= width) width - list.size else 0 - ) { - ' '.toLong() - } - ) - .subList(0, width) - .toTypedArray() - } + cars = data.split("\n").map { + it.map { + Value(it) + }.padEnd(width) { + Value(' ') + }.toTypedArray() + }.padEnd(height) { + Array(width) { + Value(' ') + } + }.toTypedArray() } override fun toString(): String { - return cars.map { it.map { Value(it).asChar ?: '?' }.joinToString("") }.joinToString("\n") + return cars.joinToString("\n") { row -> + row.joinToString("") { value -> + (value.asChar ?: '?').toString() + } + } } } diff --git a/befunge/src/main/kotlin/befide/befunge/state/Vec.kt b/befunge/src/main/kotlin/befide/befunge/state/Vec.kt index da82c1a..0866d1f 100644 --- a/befunge/src/main/kotlin/befide/befunge/state/Vec.kt +++ b/befunge/src/main/kotlin/befide/befunge/state/Vec.kt @@ -1,6 +1,13 @@ package befide.befunge.state +infix fun Int.mod(other: Int): Int { + val x = this % other + return if (x >= 0) x else (x + other) +} + data class Vec(val x: Int, val y: Int) { operator fun plus(other: Vec) = Vec(x + other.x, y + other.y) operator fun times(c: Int) = Vec(x * c, y * c) + + infix fun mod(other: Vec) = Vec(x mod other.x, y mod other.y) } \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/ActionView.kt b/ide/src/main/kotlin/befide/ide/ActionView.kt new file mode 100644 index 0000000..fd0f203 --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/ActionView.kt @@ -0,0 +1,51 @@ +package befide.ide + +import befide.befunge.core.Interpreter +import javafx.animation.Animation +import javafx.animation.Timeline +import javafx.util.Duration +import tornadofx.* + +class ActionView(val interp: Interpreter) : View() { + var runTimeline: Timeline = timeline(false) { + keyframe(Duration.seconds(0.0)) { + setOnFinished { + if (!interp.step()) + this@timeline.stop() + } + } + keyframe(Duration.seconds(1.0)) {} + + cycleCount = Animation.INDEFINITE + } + + override val root = hbox { + button("step") { + setOnAction { interp.step() } + } + + button("reset") { + setOnAction { interp.reset() } + } + + button("run") { + setOnAction { + runTimeline.rate = 1000.0 + runTimeline.playFromStart() + } + } + + button("crawl") { + setOnAction { + runTimeline.rate = 2.0 + runTimeline.playFromStart() + } + } + + button("stop") { + setOnAction { + runTimeline.stop() + } + } + } +} \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/CodeView.kt b/ide/src/main/kotlin/befide/ide/CodeView.kt new file mode 100644 index 0000000..8dfa299 --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/CodeView.kt @@ -0,0 +1,19 @@ +package befide.ide + +import befide.befunge.core.Interpreter +import javafx.beans.property.SimpleStringProperty +import tornadofx.* + +class CodeView(val interp: Interpreter) : View() { + val srcProperty = SimpleStringProperty("") + var src by srcProperty + + init { + interp.fungeChanged += { src = interp.funge.toString() } + srcProperty.addListener { _, _, newValue -> interp.funge.setString(newValue) } + } + + override val root = textarea(srcProperty) { + + } +} \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/EditorView.kt b/ide/src/main/kotlin/befide/ide/EditorView.kt new file mode 100644 index 0000000..df0a76d --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/EditorView.kt @@ -0,0 +1,34 @@ +package befide.ide + +import befide.befunge.b93.B93Interpreter +import befide.befunge.core.Interpreter +import tornadofx.* + +class EditorView : View("Befide") { + private var interp: Interpreter = B93Interpreter() + + private val codeView = CodeView(interp) + private val actionView = ActionView(interp) + private val stackView = StackView(interp) + private val ioView = IOView(interp) + + override val root = borderpane { + addClass("editor-root") + + top { add(actionView) } + + center { + add(codeView) + } + + right { + add(stackView) + } + + bottom { add(ioView) } + } + + init { + codeView.src = """64+"!dlroW ,olleH">:#,_@""" + } +} \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/IOView.kt b/ide/src/main/kotlin/befide/ide/IOView.kt new file mode 100644 index 0000000..612ba3f --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/IOView.kt @@ -0,0 +1,25 @@ +package befide.ide + +import befide.befunge.core.Interpreter +import javafx.beans.property.SimpleStringProperty +import tornadofx.* + +class IOView(val interp: Interpreter) : View() { + val outputProperty = SimpleStringProperty("") + var output by outputProperty + + init { + // add listeners to interp, handle streams, idk + } + + override val root = vbox { + addClass("") + textarea(outputProperty) { + // width, height, idk + prefHeight = 200.0 + } + textfield { + + } + } +} \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/Main.kt b/ide/src/main/kotlin/befide/ide/Main.kt index 2193b30..bb1bf07 100644 --- a/ide/src/main/kotlin/befide/ide/Main.kt +++ b/ide/src/main/kotlin/befide/ide/Main.kt @@ -1,128 +1,6 @@ package befide.ide -import befide.befunge.b93.B93Interpreter -import befide.befunge.core.Interpreter -import befide.befunge.core.Pointer -import javafx.animation.Animation -import javafx.animation.Timeline -import javafx.beans.property.SimpleObjectProperty -import javafx.beans.property.SimpleStringProperty -import javafx.util.Duration import tornadofx.* -import tornadofx.getValue -import tornadofx.setValue - -class IOView(val interp: Interpreter) : View() { - val textProperty = SimpleStringProperty("") - var text by textProperty - - init { - // add listeners to interp, handle streams, idk - } - - override val root = vbox { - textarea(textProperty) { - // width, height, idk - prefHeight = 200.0 - } - textfield { - - } - } -} - -class ActionView(val interp: Interpreter) : View() { - var runTimeline: Timeline = timeline(false) { - keyframe(Duration.seconds(0.0)) { - setOnFinished { - if (!interp.step()) - this@timeline.stop() - } - } - keyframe(Duration.seconds(1.0)) {} - - cycleCount = Animation.INDEFINITE - } - - override val root = hbox { - button("step") { - setOnAction { interp.step() } - } - - button("reset") { - setOnAction { interp.reset() } - } - - button("run") { - setOnAction { - runTimeline.rate = 1000.0 - runTimeline.playFromStart() - } - } - - button("crawl") { - setOnAction { - runTimeline.rate = 2.0 - runTimeline.playFromStart() - } - } - - button("stop") { - setOnAction { - runTimeline.stop() - } - } - } -} - -class CodeView(val interp: Interpreter) : View() { - val srcProperty = SimpleStringProperty("") - var src by srcProperty - - init { - interp.fungeChanged += { src = interp.funge.toString() } - srcProperty.addListener { _, _, newValue -> interp.funge.setString(newValue) } - } - - override val root = textarea(srcProperty) { - - } -} - -class StackView(val interp: Interpreter) : View() { - override val root = textarea { - prefWidth = 100.0 - } -} - -class EditorView : View("Befide") { - private var interp: Interpreter = B93Interpreter() - - private val codeView = CodeView(interp) - private val actionView = ActionView(interp) - private val stackView = StackView(interp) - private val ioView = IOView(interp) - - override val root = borderpane { - addClass("editor-root") - - top { add(actionView) } - - center { - add(codeView) - } - - right { - add(stackView) - } - - bottom { add(ioView) } - } - - init { - codeView.src = """64+"!dlroW ,olleH">:#,_@""" - } -} class MainApp : App(EditorView::class) { init { diff --git a/ide/src/main/kotlin/befide/ide/Sample.kt b/ide/src/main/kotlin/befide/ide/Sample.kt deleted file mode 100644 index a482529..0000000 --- a/ide/src/main/kotlin/befide/ide/Sample.kt +++ /dev/null @@ -1,53 +0,0 @@ -package befide.ide - -import befide.befunge.b93.B93Interpreter -import befide.befunge.core.Interpreter -import javafx.beans.property.SimpleIntegerProperty -import javafx.scene.Parent -import javafx.scene.control.Label -import tornadofx.* - - -class SampleView : View() { - private val controller: SampleController by inject() - - override val root: Parent by fxml() - - private val width: Label by fxid() - private val height: Label by fxid() - - init { - importStylesheet(resources["style.css"]) - - width.bind(controller.width) - height.bind(controller.height) - } -} - -class SampleController : Controller() { - private val bf: Interpreter = B93Interpreter() - - val width = SimpleIntegerProperty() - val height = SimpleIntegerProperty() - - init { - // sample event subscription. this is not necessary, but would update the - // width and height labels every time a value in the funge is changed - bf.fungeChanged += { updateFungeLabels() } - - updateFungeLabels() - } - - fun updateFungeLabels() { - width.set(bf.funge.width) - height.set(bf.funge.height) - } -} - -class SampleApp : App() { - override val primaryView = SampleView::class -} - -fun main(args: Array) { - launch(args) -} \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/StackView.kt b/ide/src/main/kotlin/befide/ide/StackView.kt new file mode 100644 index 0000000..6b2bcbf --- /dev/null +++ b/ide/src/main/kotlin/befide/ide/StackView.kt @@ -0,0 +1,10 @@ +package befide.ide + +import befide.befunge.core.Interpreter +import tornadofx.* + +class StackView(val interp: Interpreter) : View() { + override val root = textarea { + prefWidth = 100.0 + } +} \ No newline at end of file diff --git a/ide/src/main/resources/befide/ide/SampleView.fxml b/ide/src/main/resources/befide/ide/SampleView.fxml deleted file mode 100644 index 2aed0d7..0000000 --- a/ide/src/main/resources/befide/ide/SampleView.fxml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/ide/src/main/resources/befide/ide/style.css b/ide/src/main/resources/befide/ide/style.css index 1e918b4..042bbc0 100644 --- a/ide/src/main/resources/befide/ide/style.css +++ b/ide/src/main/resources/befide/ide/style.css @@ -7,3 +7,7 @@ -fx-font-family: monospace; } +.editor-root { + -fx-padding: 4px; + -fx-border-insets: 4px; +} \ No newline at end of file From bf67c3c979e988853dd48cc42d368d8cdd5bb040 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 19 Nov 2018 14:51:31 -0500 Subject: [PATCH 4/5] better padding for b93funge --- .../src/main/kotlin/befide/befunge/b93/B93Funge.kt | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt index e591d8b..3f7a2b8 100644 --- a/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt +++ b/befunge/src/main/kotlin/befide/befunge/b93/B93Funge.kt @@ -4,6 +4,7 @@ import befide.befunge.core.* import befide.befunge.state.* fun List.padEnd(size: Int, factory: (Int) -> (T)): List = this + (this.size until size).map { factory(it) } +fun List.padEnd(size: Int, value: T): List = this.padEnd(size) { value } class B93Funge : Funge { override val width = 80 @@ -27,15 +28,9 @@ class B93Funge : Funge { override fun setString(data: String) { cars = data.split("\n").map { - it.map { - Value(it) - }.padEnd(width) { - Value(' ') - }.toTypedArray() + it.map(::Value).padEnd(width, Value(' ')).toTypedArray() }.padEnd(height) { - Array(width) { - Value(' ') - } + Array(width) { Value(' ') } }.toTypedArray() } From 8515f79b8b7b277e87155f79e366334e09a30e6b Mon Sep 17 00:00:00 2001 From: David Date: Mon, 19 Nov 2018 14:52:07 -0500 Subject: [PATCH 5/5] remove problematic style class --- ide/src/main/kotlin/befide/ide/EditorView.kt | 2 -- ide/src/main/resources/befide/ide/style.css | 5 ----- 2 files changed, 7 deletions(-) diff --git a/ide/src/main/kotlin/befide/ide/EditorView.kt b/ide/src/main/kotlin/befide/ide/EditorView.kt index df0a76d..30874d9 100644 --- a/ide/src/main/kotlin/befide/ide/EditorView.kt +++ b/ide/src/main/kotlin/befide/ide/EditorView.kt @@ -13,8 +13,6 @@ class EditorView : View("Befide") { private val ioView = IOView(interp) override val root = borderpane { - addClass("editor-root") - top { add(actionView) } center { diff --git a/ide/src/main/resources/befide/ide/style.css b/ide/src/main/resources/befide/ide/style.css index 042bbc0..f1fbf85 100644 --- a/ide/src/main/resources/befide/ide/style.css +++ b/ide/src/main/resources/befide/ide/style.css @@ -6,8 +6,3 @@ .text-area { -fx-font-family: monospace; } - -.editor-root { - -fx-padding: 4px; - -fx-border-insets: 4px; -} \ No newline at end of file