ly.server package
*****************


Module contents
===============

A package implementing an HTTP server to process LilyPond input code.


Submodules
==========


ly.server.command module
========================

The commands that are available to the command line.

class ly.server.command.abs2rel

   Bases: "_edit_command"

   convert absolute music to relative

   edit(opts, cursor)

      Should edit the cursor in-place.

class ly.server.command.highlight

   Bases: "_export_command"

   convert source to syntax colored HTML.

   export(opts, cursor, exports)

      Should return the converted document as string.

class ly.server.command.indent

   Bases: "_edit_command"

   run the indenter

   edit(opts, cursor)

      Should edit the cursor in-place.

   indenter(opts)

      Get a ly.indent.Indenter initialized with our options.

class ly.server.command.language

   Bases: "_info_command"

   retrieve language from document

   get_info(info)

      Should return the desired information from the docinfo object.

class ly.server.command.mode

   Bases: "_info_command"

   retrieve mode from document

   get_info(info)

      Should return the desired information from the docinfo object.

class ly.server.command.musicxml

   Bases: "_export_command"

   convert source to MusicXML

   export(opts, cursor, exports)

      Should return the converted document as string.

class ly.server.command.reformat

   Bases: "indent"

   reformat the document

   edit(opts, cursor)

      Should edit the cursor in-place.

class ly.server.command.rel2abs

   Bases: "_edit_command"

   convert relative music to absolute

   edit(opts, cursor)

      Should edit the cursor in-place.

class ly.server.command.set_variable(arg)

   Bases: "_command"

   set a configuration variable to a value

   run(opts, data)

class ly.server.command.translate(language)

   Bases: "_edit_command"

   translate pitch names

   edit(opts, cursor)

      Should edit the cursor in-place.

class ly.server.command.transpose(arg)

   Bases: "_edit_command"

   transpose music

   edit(opts, cursor)

      Should edit the cursor in-place.

class ly.server.command.version

   Bases: "_info_command"

   retrieve version from document

   get_info(info)

      Should return the desired information from the docinfo object.


ly.server.handler module
========================

HTTP request handler

class ly.server.handler.RequestHandler(request, client_address, server)

   Bases: "BaseHTTPRequestHandler"

   create_command(cmd)

      Parse one command from the JSON data, plus optionally some
      commands to set variables. Returns an array with
      command._command instances. Raises exceptions upon faulty data.

   do_POST()

      A POST request is expected to contain the task to be executed
      as a JSON object in the request body. The POST handler
      (currently) ignores the URL.

   process_json_request(request)

      Configure the action(s) to be taken, based on the JSON object.
      Raise errors when the JSON object can't be properly understood.
      Run the commands and return a string (from cursor.text() ).

   process_options(opts)

      Instantiate a copy of the default options and update with the
      given opts

   read_json_request()

      Returns the message body parsed to a dictionary from JSON data.
      Raises  - RuntimeWarning when no JSON data is present -
      ValueError when JSON parsing fails


ly.server.main module
=====================

The entry point for the 'ly-server' command.

ly.server.main.die(message)

   Exit with message to STDERR. In ly-server this should only be
   called upon startup, not while processing requests. Then the error
   should be sent back to the client.

ly.server.main.main()

ly.server.main.parse_command_line()

   Returns a two-tuple(server_opts, cmd_opts)

   server_opts is a ServerOptions instance configuring the server
   behaviour cmd_opts is an Options instance with default options for
   future command executions triggered by HTTP requests.

   Also performs error handling and may exit on certain circumstances.

ly.server.main.usage()

   Print usage info.

ly.server.main.usage_short()

   Print short usage info.

ly.server.main.version()

   Print version info.


ly.server.options module
========================

Options configuring the commands' behaviour

class ly.server.options.Options

   Bases: "object"

   Store all the startup options and their defaults.

   set_variable(name, value)

class ly.server.options.ServerOptions

   Bases: "object"

   Options configuring the server itself, not the individual commands
