[sword-devel] osis.py

Weston Ruter westonruter at gmail.com
Tue May 11 09:32:17 MST 2010

I'm working on a Python module for representing osisIDs (works, passages,
IDs, and refs). I think I've got the OsisWork class baked pretty well (at
least for reading/parsing), and I would appreciate your thoughts:

It supports osisID works like those listed here (you can run these tests via
`python osis.py`):

   - Bible
   - KJV
   - Bible.en
   - Bible.en.KJV
   - Bible.en.KJV.1611
   - Bible.en.ChurchOfEngland.KJV.1611
   - KJV.1611.06.07
   - KJV.1611.06.07.235930

In the last two examples, the month and day are also provided (if they
aren't, then they default to 1); and in the very last example, the time is
also included (HHMMSS).

An OsisWork then has the following members:

   - segments (each of the period-delimited segments in the osisID)
   - type (one of the strings enumerated in TYPES)
   - publisher (a string, the first of two segment slugs listed in the
   - name (a string, the single slug listed or the second of two)
   - pub_date (a datetime object; is “pub_date” the best name?)

Are there other pieces of information that should be parsed out? What about
revision, version, or edition like:

   - Bible.Example.2010.r231239921
   - Bible.Example.2010.v2
   - Bible.Example.2010.ed3

Currently if anything is included which isn't recognized, then it will raise
an exception; instead it should probably glob the unrecognized segments into
a "etc" or "splat" list.

Thoughts? I'd love to get this implementation fully built out to be a
reference implementation for ports into PHP, JavaScript, etc.


On Tue, May 4, 2010 at 12:52 AM, Weston Ruter <westonruter at gmail.com> wrote:

> Hello all,
> Things have been a bit quiet on my end the past few weeks, so I wanted to
> update you on where I am at and what I see as coming next for the API
> development.
> I've been working on a standalone Python module for representing and
> working with OsisWork, OsisPassage, OsisID, and OsisRef objects. Since OSIS
> identifiers form such an integral part of the URI space for the RESTful API
> as it is currently designed, having a solid OSIS library seemed like a good
> thing to work on. You can see what I have so far here:
> http://github.com/openscriptures/api/blob/master/osis.py (it's not yet at
> an alpha state). Please let me know what you think and fork the code to make
> corrections and improvements.
> Once osis.py is baked, then the Django views can be written to handle the
> various OSIS objects. I hope that the osis.py module could also be ported
> over to JavaScript and PHP and other primary languages to give us a familiar
> interface for working with OSIS identifiers.
> In other news, my wife and I are expecting the birth of our first child, a
> son, in three weeks. I plan to keep involved here as much as possible, but
> will probably be distracted (though hopefully not as much as I have been
> these past few weeks).
> Weston
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20100511/9e80ed99/attachment.html>

More information about the sword-devel mailing list