schema_salad.dlang_codegen

D code generator for a given schema salad definition.

Exceptions

SchemaException

Indicates error with the provided schema definition.

Classes

CodeGenBase

Abstract base class for schema salad code generators.

TypeDef

Schema Salad type description.

DlangCodeGen

Generation of D code for a given Schema Salad definition.

Functions

isArray(v)

Check if v is of type array.

isEnumSchema(v)

Check if v is of type enum schema.

isRecordSchema(v)

Check if v is of type record schema.

pred(i)

Check if v is any of the simple types.

shortname(inputid)

Return the last segment of the provided fragment or path.

Module Contents

class schema_salad.dlang_codegen.CodeGenBase

Abstract base class for schema salad code generators.

declare_type(declared_type)

Add this type to our collection, if needed.

Parameters:

declared_type (TypeDef)

Return type:

TypeDef

add_lazy_init(lazy_init)

Add lazy initialization logic for a given type.

Parameters:

lazy_init (LazyInitDef)

Return type:

None

add_vocab(name, uri)

Add the given name as an abbreviation for the given URI.

Parameters:
Return type:

None

abstract prologue()

Trigger to generate the prolouge code.

Return type:

None

static safe_name(name)
Abstractmethod:

Parameters:

name (str)

Return type:

str

Generate a safe version of the given name.

abstract begin_class(classname, extends, doc, abstract, field_names, idfield, optional_fields)

Produce the header for the given class.

Parameters:
  • classname (str)

  • extends (MutableSequence[str])

  • doc (str)

  • abstract (bool)

  • field_names (MutableSequence[str])

  • idfield (str)

  • optional_fields (Set[str])

Return type:

None

abstract end_class(classname, field_names)

Signal that we are done with this class.

Parameters:
  • classname (str)

  • field_names (List[str])

Return type:

None

abstract type_loader(type_declaration, container=None, no_link_check=None)

Parse the given type declaration and declare its components.

Parameters:
  • type_declaration (Union[List[Any], Dict[str, Any]])

  • container (Optional[str])

  • no_link_check (Optional[bool])

Return type:

TypeDef

abstract declare_field(name, fieldtype, doc, optional, subscope)

Output the code to load the given field.

Parameters:
Return type:

None

abstract declare_id_field(name, fieldtype, doc, optional)

Output the code to handle the given ID field.

Parameters:
Return type:

None

abstract uri_loader(inner, scoped_id, vocab_term, ref_scope, no_link_check=None)

Construct the TypeDef for the given URI loader.

Parameters:
Return type:

TypeDef

abstract idmap_loader(field, inner, map_subject, map_predicate)

Construct the TypeDef for the given mapped ID loader.

Parameters:
Return type:

TypeDef

abstract typedsl_loader(inner, ref_scope)

Construct the TypeDef for the given DSL loader.

Parameters:
Return type:

TypeDef

abstract epilogue(root_loader)

Trigger to generate the epilouge code.

Parameters:

root_loader (TypeDef)

Return type:

None

abstract secondaryfilesdsl_loader(inner)

Construct the TypeDef for secondary files.

Parameters:

inner (TypeDef)

Return type:

TypeDef

class schema_salad.dlang_codegen.TypeDef(name, init, is_uri=False, scoped_id=False, ref_scope=0, loader_type=None, instance_type=None, abstract=False)

Schema Salad type description.

Parameters:
  • name (str)

  • init (str)

  • is_uri (bool)

  • scoped_id (bool)

  • ref_scope (Optional[int])

  • loader_type (Optional[str])

  • instance_type (Optional[str])

  • abstract (bool)

__slots__ = ['name', 'init', 'is_uri', 'scoped_id', 'ref_scope', 'loader_type', 'instance_type', 'abstract']
schema_salad.dlang_codegen.isArray(v)

Check if v is of type array.

Parameters:

v (Any)

Return type:

bool

schema_salad.dlang_codegen.isEnumSchema(v)

Check if v is of type enum schema.

Parameters:

v (Any)

Return type:

bool

schema_salad.dlang_codegen.isRecordSchema(v)

Check if v is of type record schema.

Parameters:

v (Any)

Return type:

bool

schema_salad.dlang_codegen.pred(i)

Check if v is any of the simple types.

Parameters:

i (Any)

Return type:

bool

exception schema_salad.dlang_codegen.SchemaException(msg, sl=None, children=None, bullet_for_children='')

Bases: SchemaSaladException

digraph inheritance6cacd33029 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "SchemaException" [URL="../exceptions/index.html#schema_salad.exceptions.SchemaException",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Indicates error with the provided schema definition."]; "SchemaSaladException" -> "SchemaException" [arrowsize=0.5,style="setlinewidth(0.5)"]; "SchemaSaladException" [URL="../exceptions/index.html#schema_salad.exceptions.SchemaSaladException",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Base class for all schema-salad exceptions."]; }

Indicates error with the provided schema definition.

Parameters:
schema_salad.dlang_codegen.shortname(inputid)

Return the last segment of the provided fragment or path.

Parameters:

inputid (str)

Return type:

str

class schema_salad.dlang_codegen.DlangCodeGen(base, target, examples, package, copyright_, parser_info, salad_version)

Bases: schema_salad.codegen_base.CodeGenBase

digraph inheritancef362c970f6 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "CodeGenBase" [URL="../codegen_base/index.html#schema_salad.codegen_base.CodeGenBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract base class for schema salad code generators."]; "DlangCodeGen" [URL="#schema_salad.dlang_codegen.DlangCodeGen",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Generation of D code for a given Schema Salad definition."]; "CodeGenBase" -> "DlangCodeGen" [arrowsize=0.5,style="setlinewidth(0.5)"]; }

Generation of D code for a given Schema Salad definition.

Parameters:
  • base (str)

  • target (IO[str])

  • examples (Optional[str])

  • package (str)

  • copyright_ (Optional[str])

  • parser_info (Optional[str])

  • salad_version (str)

prologue()

Trigger to generate the prolouge code.

Return type:

None

epilogue(root_loader)

Trigger to generate the epilouge code.

Parameters:

root_loader (schema_salad.codegen_base.TypeDef)

Return type:

None

static safe_name(name)

Generate a safe version of the given name.

Parameters:

name (str)

Return type:

str

to_doc_comment(doc)

Return an embedded documentation comments for a given string.

Parameters:

doc (Union[None, str, List[str]])

Return type:

str

parse_record_field_type(type_, jsonld_pred)

Return an annotation string and a type string.

Parameters:
  • type_ (Any)

  • jsonld_pred (Union[None, str, Dict[str, Any]])

Return type:

Tuple[str, str]

parse_record_field(field, parent_name=None)

Return a declaration string for a given record field.

Parameters:
  • field (Dict[str, Any])

  • parent_name (Optional[str])

Return type:

str

parse_record_schema(stype)

Return a declaration string for a given record schema.

Parameters:

stype (Dict[str, Any])

Return type:

str

parse_enum(stype)

Return a declaration string for a given enum schema.

Parameters:

stype (Dict[str, Any])

Return type:

str

parse(items)

Generate D code from items and write it to target.

Parameters:

items (List[Dict[str, Any]])

Return type:

None