Exemple #1
0
class TypeSelectionValue(Parsable):
    """
    Selection value element

    :type name           : unicode
    :type description    : unicode
    :type parent         : Parsable
    """
    __fields__ = [
        Field('name'),
        Field('description'),
    ]

    def __init__(self):
        super(TypeSelectionValue, self).__init__()
        self.name = None
        self.description = None

    @property
    def href_id(self):
        if self.parent:
            parent_id = str(self.parent.href_id)
            if FormatMode.format_mode == FormatMode.LATEX_MODE:
                if parent_id.startswith('IT::'):
                    return '{}::{}'.format(parent_id[4:],
                                           TexList.name_mode(self.name))
                return '{}::{}'.format(parent_id, TexList.name_mode(self.name))

            return '{self.parent.href_id}:{self.name}'.format(self=self)
        return self.name

    @property
    def href_name(self):
        return self.name
Exemple #2
0
class TypeArray(Parsable):
    """
    Class defining "Array" type in IST
    :type id                 : unicode
    :type range              : ist.extras.TypeRange
    :type subtype            : ist.extras.TypeReference
    :type name               : unicode
    :type input_type         : InputType
    :type attributes         : ist.extras.TypeAttributes
    :type parameters         : list[TypeAttributeParameter]
    :type generic_type       : ist.extras.TypeReference
    """
    __fields__ = simple_fields + [
        Field("range", t=TypeRange),
        Field("subtype", t=TypeReference),
    ]

    def __init__(self):
        super(TypeArray, self).__init__()
        self.id = None
        self.range = None
        self.subtype = None
        self.name = None
        self.input_type = None
        self.attributes = None
        self.parameters = None
        self.generic_type = None
Exemple #3
0
class TypeAbstract(Parsable):
    """
    Class defining "Abstract" type in IST
    :type id                 : unicode
    :type name               : unicode
    :type input_type         : InputType
    :type attributes         : ist.extras.TypeAttributes
    :type description        : unicode
    :type implementations    : List[ist.extras.TypeReference]
    :type default_descendant : ist.extras.TypeReference
    :type parameters         : list[TypeAttributeParameter]
    :type generic_type       : ist.extras.TypeReference
    """
    __fields__ = base_fields + [
        Field(["name", "type_name"], index=True),
        Field("description"),
        Field("implementations", t=List, subtype=TypeReference, default=[]),
        Field("default_descendant", t=TypeReference),
    ]

    def __init__(self):
        super(TypeAbstract, self).__init__()
        self.id = None
        self.name = None
        self.input_type = None
        self.attributes = None
        self.description = None
        self.implementations = None
        self.default_descendant = None
        self.parameters = None
        self.generic_type = None
Exemple #4
0
class TypeRecordKeyDefault(Parsable):
    """
    Default in record value

    :type type           : unicode
    :type value          : unicode
    """
    __fields__ = [
        Field('type'),
        Field('value'),
    ]

    def __init__(self):
        super(TypeRecordKeyDefault, self).__init__()
        self.type = None
        self.value = None
Exemple #5
0
class TypeRecordKey(Parsable):
    """
    Key in record

    :type key            : unicode
    :type type           : ist.extras.TypeReference
    :type default        : ist.extras.TypeRecordKeyDefault
    :type description    : unicode
    """
    __fields__ = [
        Field('key'),
        Field('type', t=TypeReference),
        Field('default', t=TypeRecordKeyDefault, link_to_parent=True),
        Field('description'),
    ]

    def __init__(self):
        super(TypeRecordKey, self).__init__()
        self.key = None
        self.type = None
        self.default = None
        self.description = None

    def include_in_format(self):
        if self.key.find('TYPE') != -1:
            Logger.instance().info('  - item starts with TYPE')
            return False
        return True

    @property
    def href_id(self):
        if self.parent:
            parent_id = str(self.parent.href_id)
            if FormatMode.format_mode == FormatMode.LATEX_MODE:
                if parent_id.startswith('IT::'):
                    return '{}::{}'.format(parent_id[4:],
                                           TexList.name_mode(self.key))
                return '{}::{}'.format(parent_id, TexList.name_mode(self.key))

            return '{self.parent.href_id}:{self.key}'.format(self=self)
        return self.key

    @property
    def href_name(self):
        return htmltree.secure(self.key)
Exemple #6
0
class TypeSelection(Parsable):
    """
    Class defining "Selection" type in IST
    :type id                 : unicode
    :type values             : list[ist.extras.TypeSelectionValue]
    :type name               : unicode
    :type input_type         : InputType
    :type attributes         : ist.extras.TypeAttributes
    :type description        : unicode
    :type parameters         : list[TypeAttributeParameter]
    :type generic_type       : ist.extras.TypeReference
    """
    __fields__ = base_fields + [
        Field("values",
              t=List,
              subtype=TypeSelectionValue,
              link_to_parent=True,
              default=[]),
        Field(["name", "type_name"], index=True),
        Field("description"),
    ]

    def __init__(self):
        super(TypeSelection, self).__init__()
        self.id = None
        self.values = None
        self.name = None
        self.input_type = None
        self.attributes = None
        self.description = None
        self.parameters = None
        self.generic_type = None

    def include_in_format(self):
        if self.name.find('TYPE') != -1:
            Logger.instance().info('  - item starts with TYPE')
            return False
        return True

    def get_fields(self, *args):
        for arg in args:
            for sub_item in self.values:
                if sub_item.name.lower() == arg.lower():
                    return sub_item
Exemple #7
0
class TypeAttributes(Parsable):
    """
    Attributes element

    :type obsolete       : unicode
    :type link_name      : unicode
    :type input_type     : InputType
    :type generic_parameters           : list
    :type root_of_generic_subtree      : bool
    :type field_value_shape            : list
    """
    __fields__ = [
        Field('obsolete', t=str),
        Field('link_name', index=True),
        Field(['generic_parameters', '_generic_parameters'],
              t=list,
              default=list()),
        Field(['root_of_generic_subtree', '_root_of_generic_subtree'], t=bool),
        Field('field_value_shape', t=list),
    ]

    def __init__(self):
        super(TypeAttributes, self).__init__()
        self.obsolete = None
        self.link_name = None
        self.input_type = InputType().parse('')
        self.generic_parameters = None
        self.root_of_generic_subtree = None
        self.field_value_shape = None

    def __repr__(self):
        if self.obsolete is None and self.link_name is None:
            return '{}'
        return super(TypeAttributes, self).__repr__()

    def get_parameters_dict(self):
        """
        :rtype : Dict
        """
        # TODO compatibility
        return Dict()
Exemple #8
0
class TypeRecord(Parsable):
    """
    Class defining "Record" type in IST
    :type id                 : unicode
    :type keys               : List[ist.extras.TypeRecordKey]
    :type name               : unicode
    :type implements         : List[ist.extras.TypeReference]
    :type input_type         : InputType
    :type attributes         : ist.extras.TypeAttributes
    :type description        : unicode
    :type reducible_to_key   : Unicode
    :type parameters         : list[TypeAttributeParameter]
    :type generic_type       : ist.extras.TypeReference
    """
    __fields__ = base_fields + [
        Field("keys", t=List, subtype=TypeRecordKey, link_to_parent=True),
        Field(["name", "type_name"], index=True),
        Field("implements", t=List, subtype=TypeReference, default=[]),
        Field("description"),
        Field("reducible_to_key", t=Unicode, link_to_parent=True),
    ]

    def __init__(self):
        super(TypeRecord, self).__init__()
        self.id = None
        self.keys = []
        self.name = None
        self.implements = []
        self.input_type = None
        self.attributes = TypeAttributes()
        self.description = None
        self.reducible_to_key = None
        self.parameters = None
        self.generic_type = None

    def get_fields(self, *args):
        for arg in args:
            for sub_item in self.keys:
                if sub_item.key.lower() == arg.lower():
                    return sub_item
Exemple #9
0
class TypeFilename(Parsable):
    """
    Class defining "FileName" type in IST
    :type id                 : unicode
    :type name               : unicode
    :type file_mode          : unicode
    :type attributes         : ist.extras.TypeAttributes
    :type input_type         : InputType
    :type parameters         : list[TypeAttributeParameter]
    :type generic_type       : ist.extras.TypeReference
    """
    __fields__ = simple_fields + [
        Field("file_mode"),
    ]

    def __init__(self):
        super(TypeFilename, self).__init__()
        self.id = None
        self.name = None
        self.file_mode = None
        self.attributes = None
        self.input_type = None
        self.parameters = None
        self.generic_type = None
Exemple #10
0
#!/usr/bin/python
# -*- coding: utf-8 -*-
# author:   Jan Hybs

from ist.extras import TypeSelectionValue, TypeReference, TypeRecordKey, TypeRange, TypeAttributes, \
    TypeAttributeParameter
from ist.base import Field, Parsable, InputType, List, Unicode, SmartList

# used in all node types
from utils.logger import Logger

base_fields = [
    Field("id", index=True),
    Field("attributes", t=TypeAttributes, default=TypeAttributes()),
    Field('parameters', t=SmartList, subtype=TypeAttributeParameter),
    Field('generic_type', t=TypeReference),
    Field("input_type", t=InputType),
]

# used in primitive node types (int, double, str, ...) where name is not part of index
simple_fields = base_fields + [Field(["name", "type_name"])]


class TypeSelection(Parsable):
    """
    Class defining "Selection" type in IST
    :type id                 : unicode
    :type values             : list[ist.extras.TypeSelectionValue]
    :type name               : unicode
    :type input_type         : InputType
    :type attributes         : ist.extras.TypeAttributes