##################
backrooms - v1.0.0
##################

*****
About
*****
This python module "backrooms" is an `Esolang <https://esolangs.org/wiki/Main_Page>`_.

Backrooms is inspired by:
    * Backrooms Creepypasta/MEME
    * ASCIIDOTS Esolang
    * CISC Architecture

Backrooms is designed to be:
    * Hackable VIA memory overflow attacks and poor error handling.
    * Visually pleasing.
    * Enjoyable to write small/medium programs.
    * Capable of rewriting all of a program at run-time.

***********
Hello World
***********
``hello_world.brs``

.. code-block:: text

   ~GATE
   /rs"Hello World!"e~ha

*******************
Python Installation
*******************
.. code-block:: bash

   pip install backrooms

*****************
Console Interface
*****************
.. code-block:: bash

   backrooms hello_world.brs

.. code-block:: text

   backrooms

   positional arguments:
     file                  path to main file

   optional arguments:
     -h, --help            show this help message and exit
     -a, --author          get author of backrooms
     -b, --builtins        don't include built-in libraries
     -c, --core_dump       enables CoreDump rule "?"
     -e, --error-on-space  errors if portal lands on a space
     -p, --profile         profiles backrooms
     -s, --system-out      don't write to stdio
     -v, --version         get version of backrooms
     --lost-count LOST_COUNT
                           set lost count
     --lost-rule-count LOST_RULE_COUNT
                           set lost rule count
     --profile_range PROFILE_RANGE
     --whisper WHISPER     set the log level [notset, debug, info, warning, error, critical]

*************
Documentation
*************
* `Documentation <https://esolangs.org/wiki/Backrooms>`_
* `Raw Documentation <https://github.com/cmcmarrow/backrooms/blob/master/DOCUMENTATION.txt>`_

*******
Bottles
*******
``bottles.brs``

.. code-block:: text

   ~GATE
   /ri10ibri99>ers" bottles of beer on the wall, "epers" bottles of beer."epzez-V
   /V".llaw eht no reeb fo selttob "srepe" ,dnuora ti ssap dna nwod eno ekaT"sr.<
   /e>e~ha    1 >rs"1 bottle of beer on the wall, 1 bottle of beer."epers"Take one"epV
   /pp        p pVe".llaw eht no reeb fo selttob erom on ,dnuora ti ssap dna nwod "sr<
   /ze        . p>peers"No more bottles of beer on the wall, no more bottles of beer"V
   />...eezd-N^.^                                                                    e
   / ^".llaw eht no reeb fo selttob 99 ,erom emos yub dna erots eht ot oG"srepe"."srp<

******
Turing
******
``turing.brs``

.. code-block:: text

   ~GATE
   /cicOvZVpri1V
   /    p >.e>NV~ha
   /    >ri1e^e<

*********
Fibonacci
*********
``fibonacci.brs``

.. code-block:: text

   ~GATE
   /V         ah~<
   />ri0>dri18isZ^pdrs"FIB"V
   /    ^+pe" "srpech......<
   ~FIB
   />ZVdri3isLVpd-rs"FIB"hcz--rs"FIB"hciahr
   /rh<rh1irpp<

***********
Tic Tac Toe
***********
``tic_tac_toe.brs``

.. code-block:: text

   ~GATE
   />ri0>...+dri10isNVpprs"x"k0pri10ibrs"Tic Tac Toe!"epepri0V
   /.   .            p           a                    >p+....>dri9isNVpprs"E_BOARD"hcrs"Cats!"ep...V
   /.   .            d           h   >..rs"C_BOARD"hcZ^rs"E_BOARD"hceprs" won!"epri10ibeppVpebi01ir<
   /.   ^..hujbz"k"sr<           ~   ^................huch"DRAOB_U"sr<                    .
   /^...........................p^Zeb"a"srcpe+ >>+srpebi01irpe+!niaga yalp ot "a" retnE+sr<
   # Echo board
   ~E_BOARD
   />ri10ibrs"#"s1epes2epes3epzezeeeeezezs4epes5epes6epzezeeeeezezs7epes8epes9eppephr
   # Update board
   ~U_BOARD
   />rs"rs+"s0bjrs"+k"bjV                      >pbjrs"prs+"bjs0rs"x"beZVprs"o">bjrs"+k0p">bjhr
   /  Vpe0sch"DRAOB_E"sr<.pebi01irpe"RORRE"srpp^Nib"123456789"sr<      >prs"x"^
   /  >rs": "epcdri10ibeprs"1~2~3~4~5~6~7~8~9"biZVpdrs"s"zbjuh..^
   /                    ^....ebi01irpe"RORRE"srpp<
   # Check for winner
   ~C_BOARD
   /V                         >ppzphr
   />s5ds1beNVpd.....V    >beN^ppp..V                  >ppzphr
   /         >pds9beZVphr ^oupp<    3            V..ppp^Neb<
   /                 >pds3beNVpd.....V           .    >ppuo^
   /                         >pds7beZVphr  V+....<pppp^Nebou..hujbz"s"srai3ir<
   /                           2     >ppri0>dri3isNVpprs""hr                 z
   /         >rs"s"zbjuh..uobeN^pppp>d+....drs"s"z1pbjuh..zri3iadrs"s"zbjuh..^
   /         ^+z..hujbz"s"srd+z..hujbz"s"srd+mi3ird<

****************
Build Executable
****************
.. code-block:: bash

   git clone https://github.com/cmcmarrow/backrooms.git
   pip install -e .[dev]
   python build.py

***
API
***
``backrooms_api.py``

.. code-block:: python

   from backrooms.backrooms import backrooms_api, StringHandler


   main_brs = """
   ~GATE
   /rs"Hello World"e~ha
   """

   main_handler = StringHandler("main", main_brs)
   backrooms_api(main_handler)()

.. code-block:: text

   info: An API to backrooms.
   :param code: Union[str, Handler, Handlers]
       str: Will treat str as main file and load its dir.
       Handler: Will load just the single Handler.
       Handlers: Will load the Handlers.
   :param inputs: Optional[Union[Tuple[str, ...], List[str]]]
   :param feeder: bool
   :param sys_output: bool
   :param catch_output: bool
   :param lost_count: int
   :param lost_rule_count: int
   :param error_on_space: bool
   :param error_on_no_rule: bool
   :param br_builtins: bool
       Only adds builtins if code is str or Handler.
   :param core_dump: bool
   :param yields: bool
   :param rules: Optional[Union[Tuple[Type[Rule], ...], List[Type[Rule]]]]
   :param whisper_level: str
   :return: Portal
