Roxen.git / server / etc / modules / RXML.pmod / utils.pmod

version» Context lines:

Roxen.git/server/etc/modules/RXML.pmod/utils.pmod:1:   //! Things that belong elsewhere but can't lie there for various silly   //! reasons. Everything here is considered internal and not part of   //! the RXML.pmod API.   //!   //! E.g. one reason is to avoid circular references in the parser   //! objects when the callbacks are defined in them.   //!   //! Created 2000-01-21 by Martin Stjernholm   //! - //! $Id: utils.pmod,v 1.31 2002/07/17 14:17:08 mast Exp $ + //! $Id: utils.pmod,v 1.32 2004/05/21 13:33:39 grubba Exp $      constant is_RXML_encodable = 1;      #ifdef RXML_ENCODE_DEBUG   string _sprintf() {return "RXML.utils.pmod";}   #endif      constant short_format_length = 40;      final string format_short (mixed val, void|int length)
Roxen.git/server/etc/modules/RXML.pmod/utils.pmod:167:   final int(1..1)|string|array p_xml_cdata_cb (object/*(RXML.PXml)*/ p, string str)   {    return ({str});   }      final int(1..1)|string|array p_xml_entity_cb (object/*(RXML.PXml)*/ p, string str)   {    RXML.Type type = p->type;    string entity = p->tag_name();    if (sizeof (entity)) -  if (entity[0] == '#') { +  switch(entity[0]) { +  case ':': return ({"&", entity[1..], ";"}); +  case '#':    if (!p->type->entity_syntax) {    // Don't decode normal entities if we're outputting xml-like stuff.    if (sscanf (entity,    (<"#x", "#X">)[entity[..1]] ? "%*2s%x%*c" : "%*c%d%*c",    int char) == 2)    catch (str = (string) ({char}));    // Lax error handling: Just let it through if it can't be    // converted. Not really good, though.    } -  } -  else -  if (entity[0] == ':') return ({"&", entity[1..], ";"}); -  else if (has_value (entity, ".")) { +  break; +  default: +  if (has_value (entity, ".")) {    p->drain_output();    mixed value = p->handle_var (    entity,    // No quoting of splice args. FIXME: Add some sort of    // safeguard against splicing in things like "nice><evil    // stuff='...'"?    p->html_context() == "splice_arg" ? RXML.t_any_text : type);    if (value != RXML.nil) p->add_value (value);    return ({});    } -  +  }    return ({str});   }      final int(1..1)|string|array p_xml_compat_entity_cb (object/*(RMXL.PXml)*/ p, string str)   {    RXML.Type type = p->type;    string entity = p->tag_name();    if (sizeof (entity) && entity[0] != '#')    if (entity[0] == ':') return ({"&", entity[1..], ";"});    else if (has_value (entity, ".")) {