<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" /> <title>qvikconfig</title> <style type="text/css"> /* :Author: David Goodger (goodger@python.org) :Id: $Id: html4css1.css 6253 2010-03-02 00:24:53Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to customize this style sheet. */ /* used to remove borders from tables and images */ .borderless, table.borderless td, table.borderless th { border: 0 } table.borderless td, table.borderless th { /* Override padding for "table.docutils td" with "! important". The right padding separates the table cells. */ padding: 0 0.5em 0 0 ! important } .first { /* Override more specific margin styles with "! important". */ margin-top: 0 ! important } .last, .with-subtitle { margin-bottom: 0 ! important } .hidden { display: none } a.toc-backref { text-decoration: none ; color: black } blockquote.epigraph { margin: 2em 5em ; } dl.docutils dd { margin-bottom: 0.5em } /* Uncomment (and remove this text!) to get bold-faced definition list terms dl.docutils dt { font-weight: bold } */ div.abstract { margin: 2em 5em } div.abstract p.topic-title { font-weight: bold ; text-align: center } div.admonition, div.attention, div.caution, div.danger, div.error, div.hint, div.important, div.note, div.tip, div.warning { margin: 2em ; border: medium outset ; padding: 1em } div.admonition p.admonition-title, div.hint p.admonition-title, div.important p.admonition-title, div.note p.admonition-title, div.tip p.admonition-title { font-weight: bold ; font-family: sans-serif } div.attention p.admonition-title, div.caution p.admonition-title, div.danger p.admonition-title, div.error p.admonition-title, div.warning p.admonition-title { color: red ; font-weight: bold ; font-family: sans-serif } /* Uncomment (and remove this text!) to get reduced vertical space in compound paragraphs. div.compound .compound-first, div.compound .compound-middle { margin-bottom: 0.5em } div.compound .compound-last, div.compound .compound-middle { margin-top: 0.5em } */ div.dedication { margin: 2em 5em ; text-align: center ; font-style: italic } div.dedication p.topic-title { font-weight: bold ; font-style: normal } div.figure { margin-left: 2em ; margin-right: 2em } div.footer, div.header { clear: both; font-size: smaller } div.line-block { display: block ; margin-top: 1em ; margin-bottom: 1em } div.line-block div.line-block { margin-top: 0 ; margin-bottom: 0 ; margin-left: 1.5em } div.sidebar { margin: 0 0 0.5em 1em ; border: medium outset ; padding: 1em ; background-color: #ffffee ; width: 40% ; float: right ; clear: right } div.sidebar p.rubric { font-family: sans-serif ; font-size: medium } div.system-messages { margin: 5em } div.system-messages h1 { color: red } div.system-message { border: medium outset ; padding: 1em } div.system-message p.system-message-title { color: red ; font-weight: bold } div.topic { margin: 2em } h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { margin-top: 0.4em } h1.title { text-align: center } h2.subtitle { text-align: center } hr.docutils { width: 75% } img.align-left, .figure.align-left, object.align-left { clear: left ; float: left ; margin-right: 1em } img.align-right, .figure.align-right, object.align-right { clear: right ; float: right ; margin-left: 1em } img.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } .align-left { text-align: left } .align-center { clear: both ; text-align: center } .align-right { text-align: right } /* reset inner alignment in figures */ div.align-right { text-align: left } /* div.align-center * { */ /* text-align: left } */ ol.simple, ul.simple { margin-bottom: 1em } ol.arabic { list-style: decimal } ol.loweralpha { list-style: lower-alpha } ol.upperalpha { list-style: upper-alpha } ol.lowerroman { list-style: lower-roman } ol.upperroman { list-style: upper-roman } p.attribution { text-align: right ; margin-left: 50% } p.caption { font-style: italic } p.credits { font-style: italic ; font-size: smaller } p.label { white-space: nowrap } p.rubric { font-weight: bold ; font-size: larger ; color: maroon ; text-align: center } p.sidebar-title { font-family: sans-serif ; font-weight: bold ; font-size: larger } p.sidebar-subtitle { font-family: sans-serif ; font-weight: bold } p.topic-title { font-weight: bold } pre.address { margin-bottom: 0 ; margin-top: 0 ; font: inherit } pre.literal-block, pre.doctest-block { margin-left: 2em ; margin-right: 2em } span.classifier { font-family: sans-serif ; font-style: oblique } span.classifier-delimiter { font-family: sans-serif ; font-weight: bold } span.interpreted { font-family: sans-serif } span.option { white-space: nowrap } span.pre { white-space: pre } span.problematic { color: red } span.section-subtitle { /* font-size relative to parent (h1..h6 element) */ font-size: 80% } table.citation { border-left: solid 1px gray; margin-left: 1px } table.docinfo { margin: 2em 4em } table.docutils { margin-top: 0.5em ; margin-bottom: 0.5em } table.footnote { border-left: solid 1px black; margin-left: 1px } table.docutils td, table.docutils th, table.docinfo td, table.docinfo th { padding-left: 0.5em ; padding-right: 0.5em ; vertical-align: top } table.docutils th.field-name, table.docinfo th.docinfo-name { font-weight: bold ; text-align: left ; white-space: nowrap ; padding-left: 0 } h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { font-size: 100% } ul.auto-toc { list-style-type: none } </style> </head> <body> <div class="document" id="qvikconfig"> <h1 class="title">qvikconfig</h1> <p>qvikconfig is a parser of a simple config file syntax called the qvikconfig format. The basic syntax is 'property = value'.</p> <p>qvikconfig offers two main functions: <tt class="docutils literal">parse</tt> and <tt class="docutils literal">dump</tt>. Use <tt class="docutils literal">parse</tt> to read config files and <tt class="docutils literal">dump</tt> to write them.</p> <div class="section" id="documentation"> <h1>Documentation</h1> <p>To see an example of qvikconfig config files and how to parse and dump them, see the files in the <tt class="docutils literal">tests/</tt> directory of the distribution. Alternatively, these examples can be downloaded from <<a class="reference external" href="http://metanohi.org/projects/qvikconfig/">http://metanohi.org/projects/qvikconfig/</a>>.</p> <p>qvikconfig can be considered a dictionary that can link both single values and lists of values to named properties. Entries are line-separated. A simple example:</p> <pre class="literal-block"> # This is a comment. name = Example # This is also a comment. descriptions = This is an example, Dette er et eksempel </pre> <p>When parsed, this will be translated to this Python dict:</p> <blockquote> {'name': 'Example', 'descriptions': ['This is an example', 'Dette er et eksempel']}</blockquote> <p>It is, in most cases, optional to enclose strings in quotes. Whitespace is completely optional.</p> <div class="section" id="lists"> <h2>Lists</h2> <p>qvikconfig uses the comma character to split values, as seen in the example above. When there is only one value associated with a property, there will be no list. Otherwise there will be one. To create a list of only one value, append two commas to your value, like this:</p> <pre class="literal-block"> a-list=24,, </pre> <p>This returns this dict:</p> <pre class="literal-block"> {'a-list': [24]} </pre> </div> <div class="section" id="accepted-data"> <h2>Accepted data</h2> <p>qvikconfig accepts and understands strings, numbers, True, False, and None. Everything else normally results in unknown behavior.</p> <p>Strings are represented using text, sometimes enclosed in quotes. Numbers are represented using numbers. True, False and None are represented by true, false and none.</p> </div> <div class="section" id="using-more-than-one-line"> <h2>Using more than one line</h2> <p>You can spread lists across several lines like this:</p> <pre class="literal-block"> long list = A, B, C, D, E, F, G, H, I, J, K, L, M, N, P, O </pre> <p>This will, naturally, result in this dict:</p> <pre class="literal-block"> {'long list': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I', 'J', 'K', 'L', 'M', 'N', 'P', 'O']} </pre> <p>You can make single values take up more than one line like this:</p> <pre class="literal-block"> a value = The wall had moved away from the boundaries of the house. </pre> <p>..which creates this when parsed:</p> <pre class="literal-block"> {'a value': 'The wall had moved away from the boundaries of the house.'} </pre> </div> <div class="section" id="escaping-text"> <h2>Escaping text</h2> <p>Certain strings cannot be represented in qvikconfig config files without being enclosed in quotes. The strings 'true', 'false' and 'none' must have quotes (both "..." and '...' are accepted), for example. The same goes for, in the case of values, strings containing commas and quotes or ending with a backslash, and in the case of properties, equal signs. While spaces and tabs are just fine, newlines (and carriage returns and so on) must be enclosed in quotes. Example:</p> <pre class="literal-block"> # The equality sign is not a comma. '=' = 'not a ,' </pre> <p>..resulting in:</p> <pre class="literal-block"> {'=': 'not a ,'} </pre> </div> <div class="section" id="version-information"> <h2>Version information</h2> <p>This is version 0.1.1 of qvikconfig. New releases are made available online at the website mentioned earlier.</p> <p>Copyright (C) 2010 Niels Serup License GPLv3+: GNU GPL version 3 or later <<a class="reference external" href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a>> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.</p> </div> </div> </div> </body> </html>