# HG changeset patch # User Michael Granger # Date 1678491871 28800 # Fri Mar 10 15:44:31 2023 -0800 # Node ID a86af7558fd2ad8b0a8c13a9e5cf2409e2a2d794 # Parent c67cfa2a5f1b6ccd5e9cce671d02d227e142b4dc Add a README diff --git a/README.md b/README.md new file mode 100644 --- /dev/null +++ b/README.md @@ -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 + +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 +