File: formatters.rst

package info (click to toggle)
py-serializable 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 524 kB
  • sloc: python: 2,271; xml: 519; makefile: 12
file content (63 lines) | stat: -rw-r--r-- 2,926 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
..  # This file is part of py-serializable
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    # SPDX-License-Identifier: Apache-2.0
    # Copyright (c) Paul Horton. All Rights Reserved.

Property Name Formatting
====================================================

By default, ``py-serializable`` uses it's :class:`py_serializable.formatters.CamelCasePropertyNameFormatter` formatter for
translating actual Python property names to element names in either JSON or XML.

``py-serializable`` includes a number of name formatters out of the box, but you can also create your own if required.

Included Formatters
----------------------------------------------------

``py-serializable`` includes three common formatters out of the box.

1. Camel Case Formatter: :class:`py_serializable.formatters.CamelCasePropertyNameFormatter` (the default)
2. Kebab Case Formatter: :class:`py_serializable.formatters.KebabCasePropertyNameFormatter`
3. Snake Case Formatter: :class:`py_serializable.formatters.SnakeCasePropertyNameFormatter`

A summary of how these differ is included in the below table.

+----------------------------+---------------+----------------+-----------------+
| Python Property Name       | Camel Case    | Kebab Case     | Snake Case      |
+============================+===============+================+=================+
| books                      | books         | books          | books           |
+----------------------------+---------------+----------------+-----------------+
| big_book                   | bigBook       | big-book       | big_book        |
+----------------------------+---------------+----------------+-----------------+
| a_very_big_book            | aVeryBigBook  | a-very-big-book| a_very_big_book |
+----------------------------+---------------+----------------+-----------------+

Changing the Formatter
----------------------

You can change the formatter being used by easily. The example below changes the formatter to be Snake Case.

.. code-block:: python

    from py_serializable.formatters import CurrentFormatter, SnakeCasePropertyNameFormatter

    CurrentFormatter.formatter = SnakeCasePropertyNameFormatter

Custom Formatters
-----------------

If none of the included formatters work for you, why not write your own?

The only requirement is that it extends :class:`py_serializable.formatters.BaseNameFormatter`!