# -*- coding: utf8 -*-
'''
This module contains a few utility functions.
'''
import re
from pyramid.renderers import JSON
from skosprovider.skos import (
Concept,
Collection,
Label,
Note
)
json_renderer = JSON()
[docs]def concept_adapter(obj, request):
'''
Adapter for rendering a :class:`skosprovider.skos.Concept` to json.
:param skosprovider.skos.Concept obj: The concept to be rendered.
:rtype: :class:`dict`
'''
return {
'id': obj.id,
'type': 'concept',
'uri': obj.uri,
'label': obj.label().label,
'concept_scheme': {
'uri': obj.concept_scheme.uri,
'labels': obj.concept_scheme.labels
},
'labels': obj.labels,
'notes': obj.notes,
'narrower': obj.narrower,
'broader': obj.broader,
'related': obj.related,
'member_of': obj.member_of,
'subordinate_arrays': obj.subordinate_arrays,
'matches': obj.matches
}
[docs]def collection_adapter(obj, request):
'''
Adapter for rendering a :class:`skosprovider.skos.Collection` to json.
:param skosprovider.skos.Collection obj: The collection to be rendered.
:rtype: :class:`dict`
'''
return {
'id': obj.id,
'type': 'collection',
'uri': obj.uri,
'label': obj.label().label,
'concept_scheme': {
'uri': obj.concept_scheme.uri,
'labels': obj.concept_scheme.labels
},
'labels': obj.labels,
'notes': obj.notes,
'members': obj.members,
'member_of': obj.member_of,
'superordinates': obj.superordinates,
}
[docs]def label_adapter(obj, request):
'''
Adapter for rendering a :class:`skosprovider.skos.Label` to json.
:param skosprovider.skos.Label obj: The label to be rendered.
:rtype: :class:`dict`
'''
return {
'label': obj.label,
'type': obj.type,
'language': obj.language
}
[docs]def note_adapter(obj, request):
'''
Adapter for rendering a :class:`skosprovider.skos.Note` to json.
:param skosprovider.skos.Note obj: The note to be rendered.
:rtype: :class:`dict`
'''
return {
'note': obj.note,
'type': obj.type,
'language': obj.language
}
json_renderer.add_adapter(Concept, concept_adapter)
json_renderer.add_adapter(Collection, collection_adapter)
json_renderer.add_adapter(Label, label_adapter)
json_renderer.add_adapter(Note, note_adapter)