1 files changed, 90 insertions(+), 0 deletions(-)

A => README.md
A => README.md +90 -0
@@ 0,0 1,90 @@ 
+# Pushdown.kt
+
+home
+: https://hg.sr.ht/~ged/Pushdown.kt
+
+code
+: https://hg.sr.ht/~ged/Pushdown.kt
+
+
+## Description
+
+A \Pushdown Automaton toolkit for Kotlin. It's based on [the State Manager from
+the Amethyst project][amethyst-state-manager].
+
+A \Pushdown Automaton is a combination of a Stack and a State
+Machine. Transitioning between states is accomplished via stack operations like
+`push` and `pop`, which allows you to encapsulate a state's behavior in a small
+single-responsibility class instead of making a class vary its behavior based on
+a variable.
+
+
+### Usage
+
+To set up a Pushdown Automaton, you'll need to:
+
+1. Declare a property for the state stack
+2. Declare state classes that provide the functionality for the automaton in that state.
+
+
+## Prerequisites
+
+* ???
+
+
+## Installation
+
+If you use Gradle, in your `dependencies`:
+
+    implementation 'com.ravn.pushdown:pushdown:0.0.1'
+
+
+## Development
+
+I don't know yet; this is my first Kotlin library. ;)
+
+
+## Author(s)
+
+* Michael Granger <ged@faeriemud.org>
+
+While Pushdown does not contain any [Amethyst Game Engine][amethyst] source
+code, it does borrow heavily from its ideas and nomenclature. Many thanks to the
+Amethyst team for the inspiration.
+
+Thanks also to Alyssa Verkade for the initial idea.
+
+
+## License
+
+Copyright (c) 2022-2023, Michael Granger
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+* 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.
+
+* Neither the name of the author/s, nor the names of the project's
+  contributors may be used to endorse or promote products derived from this
+  software without specific prior written permission.
+
+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 OWNER 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.
+
+[amethyst]: https://amethyst.rs/
+[amethyst-state-manager]: https://book.amethyst.rs/stable/concepts/state.html#state-manager
+