docstrings continued....
Just more docstring works
This commit is contained in:
parent
2135ec05f2
commit
da2f3e18a1
2 changed files with 34 additions and 22 deletions
|
|
@ -1,24 +1,25 @@
|
||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
"""
|
"""
|
||||||
EvForm - a way to create advanced ascii forms
|
EvForm - a way to create advanced ASCII forms
|
||||||
|
|
||||||
This is intended for creating advanced ascii game forms, such as a
|
This is intended for creating advanced ASCII game forms, such as a
|
||||||
large pretty character sheet or info document.
|
large pretty character sheet or info document.
|
||||||
|
|
||||||
The system works on the basis of a readin template that is given in a
|
The system works on the basis of a readin template that is given in a
|
||||||
separate python file imported into the handler. This file contains
|
separate Python file imported into the handler. This file contains
|
||||||
some optional settings and a string mapping out the form. The template
|
some optional settings and a string mapping out the form. The template
|
||||||
has markers in it to denounce fields to fill. The markers map the
|
has markers in it to denounce fields to fill. The markers map the
|
||||||
absolute size of the field and will be filled with an evtable.EvCell
|
absolute size of the field and will be filled with an `evtable.EvCell`
|
||||||
object when displaying the form.
|
object when displaying the form.
|
||||||
|
|
||||||
Note, when printing examples with ANSI color, you need to wrap
|
Note, when printing examples with ANSI color, you need to wrap
|
||||||
the output in unicode(), such as print unicode(form). This is
|
the output in `unicode()`, such as `print unicode(form)`. This is
|
||||||
due to a bug in the Python parser and the print statement.
|
due to a bug in the Python parser and the `print` statement.
|
||||||
|
|
||||||
|
|
||||||
Example of input file testform.py:
|
Example of input file `testform.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
FORMCHAR = "x"
|
FORMCHAR = "x"
|
||||||
TABLECHAR = "c"
|
TABLECHAR = "c"
|
||||||
|
|
||||||
|
|
@ -44,20 +45,22 @@ FORM = '''
|
||||||
| | |
|
| | |
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
'''
|
'''
|
||||||
|
```
|
||||||
|
|
||||||
The first line of the FORM string is ignored. The forms and table
|
The first line of the `FORM` string is ignored. The forms and table
|
||||||
markers must mark out complete, unbroken rectangles, each containing
|
markers must mark out complete, unbroken rectangles, each containing
|
||||||
one embedded single-character identifier (so the smallest element
|
one embedded single-character identifier (so the smallest element
|
||||||
possible is a 3-character wide form). The identifier can be any
|
possible is a 3-character wide form). The identifier can be any
|
||||||
character except for the FORM_CHAR and TABLE_CHAR and some of the
|
character except for the `FORM_CHAR` and `TABLE_CHAR` and some of the
|
||||||
common ascii-art elements, like space, _ | * etc (see
|
common ASCII-art elements, like space, `_` `|` `*` etc (see
|
||||||
INVALID_FORMCHARS in this module). Form Rectangles can have any size,
|
`INVALID_FORMCHARS` in this module). Form Rectangles can have any size,
|
||||||
but must be separated from each other by at least one other
|
but must be separated from each other by at least one other
|
||||||
character's width.
|
character's width.
|
||||||
|
|
||||||
|
|
||||||
Use as follows:
|
Use as follows:
|
||||||
|
|
||||||
|
```python
|
||||||
import evform
|
import evform
|
||||||
|
|
||||||
# create a new form from the template
|
# create a new form from the template
|
||||||
|
|
@ -90,9 +93,11 @@ Use as follows:
|
||||||
|
|
||||||
# unicode is required since the example contains non-ascii characters
|
# unicode is required since the example contains non-ascii characters
|
||||||
print unicode(form)
|
print unicode(form)
|
||||||
|
```
|
||||||
|
|
||||||
This produces the following result:
|
This produces the following result:
|
||||||
|
|
||||||
|
```
|
||||||
.------------------------------------------------.
|
.------------------------------------------------.
|
||||||
| |
|
| |
|
||||||
| Name: Tom the Player: Griatch |
|
| Name: Tom the Player: Griatch |
|
||||||
|
|
@ -113,17 +118,18 @@ This produces the following result:
|
||||||
| |* | | Smithing |9 |205/900 |
|
| |* | | Smithing |9 |205/900 |
|
||||||
| | |
|
| | |
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
```
|
||||||
|
|
||||||
The marked forms have been replaced with EvCells of text and with
|
The marked forms have been replaced with EvCells of text and with
|
||||||
EvTables. The form can be updated by simply re-applying form.map()
|
EvTables. The form can be updated by simply re-applying `form.map()`
|
||||||
with the updated data.
|
with the updated data.
|
||||||
|
|
||||||
When working with the template ascii file, you can use form.reload()
|
When working with the template ASCII file, you can use `form.reload()`
|
||||||
to re-read the template and re-apply all existing mappings.
|
to re-read the template and re-apply all existing mappings.
|
||||||
|
|
||||||
Each component is restrained to the width and height specified by the
|
Each component is restrained to the width and height specified by the
|
||||||
template, so it will resize to fit (or crop text if the area is too
|
template, so it will resize to fit (or crop text if the area is too
|
||||||
small for it. If you try to fit a table into an area it cannot fit
|
small for it). If you try to fit a table into an area it cannot fit
|
||||||
into (when including its borders and at least one line of text), the
|
into (when including its borders and at least one line of text), the
|
||||||
form will raise an error.
|
form will raise an error.
|
||||||
|
|
||||||
|
|
@ -155,7 +161,7 @@ class EvForm(object):
|
||||||
This object is instantiated with a text file and parses
|
This object is instantiated with a text file and parses
|
||||||
it for rectangular form fields. It can then be fed a
|
it for rectangular form fields. It can then be fed a
|
||||||
mapping so as to populate the fields with fixed-width
|
mapping so as to populate the fields with fixed-width
|
||||||
EvCell or Tablets.
|
EvCell or Tables.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, filename=None, cells=None, tables=None, form=None, **kwargs):
|
def __init__(self, filename=None, cells=None, tables=None, form=None, **kwargs):
|
||||||
|
|
@ -172,7 +178,7 @@ class EvForm(object):
|
||||||
tables - dictionary mapping of {id:EvTable}
|
tables - dictionary mapping of {id:EvTable}
|
||||||
|
|
||||||
other kwargs are fed as options to the EvCells and EvTables
|
other kwargs are fed as options to the EvCells and EvTables
|
||||||
(see evtablet.EvCell and evtable.EvTable for more info).
|
(see `evtable.EvCell` and `evtable.EvTable` for more info).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,13 @@
|
||||||
Spawner
|
Spawner
|
||||||
|
|
||||||
The spawner takes input files containing object definitions in
|
The spawner takes input files containing object definitions in
|
||||||
dictionary forms. These use a prototype architechture to define
|
dictionary forms. These use a prototype architecture to define
|
||||||
unique objects without having to make a Typeclass for each.
|
unique objects without having to make a Typeclass for each.
|
||||||
|
|
||||||
The main function is spawn(*prototype), where the prototype
|
The main function is `spawn(*prototype)`, where the `prototype`
|
||||||
is a dictionary like this:
|
is a dictionary like this:
|
||||||
|
|
||||||
|
```python
|
||||||
GOBLIN = {
|
GOBLIN = {
|
||||||
"typeclass": "types.objects.Monster",
|
"typeclass": "types.objects.Monster",
|
||||||
"key": "goblin grunt",
|
"key": "goblin grunt",
|
||||||
|
|
@ -16,11 +17,12 @@ GOBLIN = {
|
||||||
"attacks": ["fists"],
|
"attacks": ["fists"],
|
||||||
"weaknesses": ["fire", "light"]
|
"weaknesses": ["fire", "light"]
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Possible keywords are:
|
Possible keywords are:
|
||||||
prototype - string parent prototype
|
prototype - string parent prototype
|
||||||
key - string, the main object identifier
|
key - string, the main object identifier
|
||||||
typeclass - string, if not set, will use settings.BASE_OBJECT_TYPECLASS
|
typeclass - string, if not set, will use `settings.BASE_OBJECT_TYPECLASS`
|
||||||
location - this should be a valid object or #dbref
|
location - this should be a valid object or #dbref
|
||||||
home - valid object or #dbref
|
home - valid object or #dbref
|
||||||
destination - only valid for exits (object or dbref)
|
destination - only valid for exits (object or dbref)
|
||||||
|
|
@ -40,6 +42,7 @@ By specifying a prototype, the child will inherit all prototype slots
|
||||||
it does not explicitly define itself, while overloading those that it
|
it does not explicitly define itself, while overloading those that it
|
||||||
does specify.
|
does specify.
|
||||||
|
|
||||||
|
```python
|
||||||
GOBLIN_WIZARD = {
|
GOBLIN_WIZARD = {
|
||||||
"prototype": GOBLIN,
|
"prototype": GOBLIN,
|
||||||
"key": "goblin wizard",
|
"key": "goblin wizard",
|
||||||
|
|
@ -51,10 +54,12 @@ GOBLIN_ARCHER = {
|
||||||
"key": "goblin archer",
|
"key": "goblin archer",
|
||||||
"attacks": ["short bow"]
|
"attacks": ["short bow"]
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
One can also have multiple prototypes. These are inherited from the
|
One can also have multiple prototypes. These are inherited from the
|
||||||
left, with the ones further to the right taking precedence.
|
left, with the ones further to the right taking precedence.
|
||||||
|
|
||||||
|
```python
|
||||||
ARCHWIZARD = {
|
ARCHWIZARD = {
|
||||||
"attack": ["archwizard staff", "eye of doom"]
|
"attack": ["archwizard staff", "eye of doom"]
|
||||||
|
|
||||||
|
|
@ -62,10 +67,11 @@ GOBLIN_ARCHWIZARD = {
|
||||||
"key" : "goblin archwizard"
|
"key" : "goblin archwizard"
|
||||||
"prototype": (GOBLIN_WIZARD, ARCHWIZARD),
|
"prototype": (GOBLIN_WIZARD, ARCHWIZARD),
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
The goblin archwizard will have some different attacks, but will
|
The *goblin archwizard* will have some different attacks, but will
|
||||||
otherwise have the same spells as a goblin wizard who in turn shares
|
otherwise have the same spells as a *goblin wizard* who in turn shares
|
||||||
many traits with a normal goblin.
|
many traits with a normal *goblin*.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue