xmlclass/xsdschema.py
changeset 1373 4278d5c1e414
parent 1322 0a9227f743b3
child 1374 1eefc427419f
equal deleted inserted replaced
1372:ef26fcb7f5d4 1373:4278d5c1e414
    42         if name is not None:
    42         if name is not None:
    43             text += "</%s>\n" % name
    43             text += "</%s>\n" % name
    44         return text
    44         return text
    45     return generateXMLTextMethod
    45     return generateXMLTextMethod
    46 
    46 
    47 def GenerateFloatXMLText(extra_values=[]):
    47 def GenerateFloatXMLText(extra_values=[], decimal=None):
       
    48     float_format = ("{:.%dg}" % decimal).format if decimal is not None else str
    48     def generateXMLTextMethod(value, name=None, indent=0):
    49     def generateXMLTextMethod(value, name=None, indent=0):
    49         text = ""
    50         text = ""
    50         if name is not None:
    51         if name is not None:
    51             ind1, ind2 = getIndent(indent, name)
    52             ind1, ind2 = getIndent(indent, name)
    52             text += ind1 + "<%s>" % name
    53             text += ind1 + "<%s>" % name
    53         if value in extra_values or value % 1 != 0 or isinstance(value, IntType):
    54         if value in extra_values or value % 1 != 0 or isinstance(value, IntType):
    54             text += str(value)
    55             text += float_format(value)
    55         else:
    56         else:
    56             text += "%.0f" % value
    57             text += "%.0f" % value
    57         if name is not None:
    58         if name is not None:
    58             text += "</%s>\n" % name
    59             text += "</%s>\n" % name
    59         return text
    60         return text
  2267     "decimal": {
  2268     "decimal": {
  2268         "type": SIMPLETYPE,
  2269         "type": SIMPLETYPE,
  2269         "basename": "decimal",
  2270         "basename": "decimal",
  2270         "extract": GenerateFloatExtraction("decimal"),
  2271         "extract": GenerateFloatExtraction("decimal"),
  2271         "facets": DECIMAL_FACETS,
  2272         "facets": DECIMAL_FACETS,
  2272         "generate": GenerateFloatXMLText(),
  2273         "generate": GenerateFloatXMLText(decimal=3),
  2273         "initial": lambda: 0.,
  2274         "initial": lambda: 0.,
  2274         "check": lambda x: isinstance(x, (IntType, FloatType))
  2275         "check": lambda x: isinstance(x, (IntType, FloatType))
  2275     },
  2276     },
  2276 
  2277 
  2277     "float": {
  2278     "float": {