def flatten(self, expander, variables, res): arg = [] evaluate.flatten(self[0], expander, variables, arg) arg = u"".join(arg) # Note: mediawiki has a bug. It tries not to touch colons by replacing '.3A' with # with the colon. However, if the original string contains the substring '.3A', # it will also replace it with a colon. We do *not* reproduce that bug here... import urllib e = urllib.quote_plus(arg.encode('utf-8'), ':').replace('%', '.').replace('+', '_') res.append(e)
def flatten(self, expander, variables, res): arg = [] evaluate.flatten(self[0], expander, variables, arg) arg = u"".join(arg).strip() arg2 = [] if len(self) > 1: evaluate.flatten(self[1], expander, variables, arg2) arg2 = u"".join(arg2).strip() if not arg2: arg2 = expander.pagename res.append(_rel2abs(arg, arg2))
def flatten(self, expander, variables, res): format = [] evaluate.flatten(self[0], expander, variables, format) format = u"".join(format).strip() if len(self) > 1: d = [] evaluate.flatten(self[1], expander, variables, d) d = u"".join(d).strip() else: d = None from mwlib.templ import magic_time res.append(magic_time.time(format, d))
def flatten(self, expander, variables, res): v1 = [] flatten(self[0], expander, variables, v1) v1 = u"".join(v1).strip() v2 = [] if len(self) > 1: flatten(self[1], expander, variables, v2) v2 = u"".join(v2).strip() from mwlib.templ.magics import maybe_numeric_compare res.append(maybe_newline) tmp = [] if maybe_numeric_compare(v1, v2): if len(self) > 2: flatten(self[2], expander, variables, tmp) else: if len(self) > 3: flatten(self[3], expander, variables, tmp) _insert_implicit_newlines(tmp) res.append(u"".join(tmp).strip()) res.append(dummy_mark)
def flatten(self, expander, variables, res): arg0 = [] evaluate.flatten(self[0], expander, variables, arg0) arg0 = u"".join(arg0) if len(self) > 1: arg1 = [] evaluate.flatten(self[1], expander, variables, arg1) arg1 = u"".join(arg1) else: arg1 = u"" if arg1.strip() in (u"r", u"R"): res.append(reverse_formatnum(arg0)) else: res.append(formatnum(arg0))
def flatten(self, expander, variables, res): name = [] flatten(self[0], expander, variables, name) name = u"".join(name).strip() if len(name) > 256 * 1024: raise MemoryLimitError("template name too long: %s bytes" % (len(name),)) v = variables.get(name, None) if v is None: if len(self) > 1: flatten(self[1], expander, variables, res) else: # FIXME. breaks If ??? res.append(u"{{{%s}}}" % (name,)) else: res.append(v)
def flatten(self, expander, variables, res): name = [] flatten(self[0], expander, variables, name) name = u"".join(name).strip() if len(name) > 256 * 1024: raise MemoryLimitError("template name too long: %s bytes" % (len(name), )) v = variables.get(name, None) if v is None: if len(self) > 1: flatten(self[1], expander, variables, res) else: # FIXME. breaks If ??? res.append(u"{{{%s}}}" % (name, )) else: res.append(v)
def flatten(self, expander, variables, res): name = [] evaluate.flatten(self[0], expander, variables, name) name = u"".join(name).strip() parameters = u'' for parm in self[2:]: tmp = [] evaluate.flatten(parm, expander, variables, tmp) evaluate._insert_implicit_newlines(tmp) tmp = u"".join(tmp) if "=" in tmp: key, value = tmp.split("=", 1) parameters += " %s=%s" % (key, quoteattr(value)) tmpres = [] tmpres.append("<%s%s>" % (name, parameters)) if len(self) > 1: tmp = [] evaluate.flatten(self[1], expander, variables, tmp) evaluate._insert_implicit_newlines(tmp) tmp = u"".join(tmp) tmpres.append(tmp) tmpres.append("</%s>" % (name, )) tmpres = u"".join(tmpres) tmpres = expander.uniquifier.replace_tags(tmpres) res.append(tmpres)
def flatten(self, expander, variables, res): name = [] evaluate.flatten(self[0], expander, variables, name) name = u"".join(name).strip() parameters = u'' for parm in self[2:]: tmp = [] evaluate.flatten(parm, expander, variables, tmp) evaluate._insert_implicit_newlines(tmp) tmp = u"".join(tmp) if "=" in tmp: key, value = tmp.split("=", 1) parameters += " %s=%s" % (key, quoteattr(value)) tmpres = [] tmpres.append("<%s%s>" % (name, parameters)) if len(self) > 1: tmp = [] evaluate.flatten(self[1], expander, variables, tmp) evaluate._insert_implicit_newlines(tmp) tmp = u"".join(tmp) tmpres.append(tmp) tmpres.append("</%s>" % (name,)) tmpres = u"".join(tmpres) tmpres = expander.uniquifier.replace_tags(tmpres) res.append(tmpres)
def flatten(self, expander, variables, res): if self.unresolved is None: self._init() res.append(maybe_newline) val = [] flatten(self[0], expander, variables, val) val = u"".join(val).strip() num_val = maybe_numeric(val) t1 = self.fast.get(val, self.sentinel) t2 = self.fast.get(num_val, self.sentinel) pos, retval = min(t1, t2) if pos is None: pos = len(self.unresolved) + 1 for k, v in self.unresolved[:pos]: tmp = [] flatten(k, expander, variables, tmp) tmp = u"".join(tmp).strip() if tmp == val: retval = v break if num_val is not None and maybe_numeric(tmp) == num_val: retval = v break if retval is None: for a in expander.aliasmap.get_aliases("default") or ["#default"]: retval = self.fast.get(a) if retval is not None: retval = retval[1] break retval = retval or u"" tmp = [] flatten(retval, expander, variables, tmp) _insert_implicit_newlines(tmp) tmp = u"".join(tmp).strip() res.append(tmp) res.append(dummy_mark)
def flatten(self, expander, variables, res): if self.unresolved is None: self._init() res.append(maybe_newline) val = [] flatten(self[0], expander, variables, val) val = u"".join(val).strip() num_val = maybe_numeric(val) t1 = self.fast.get(val, self.sentinel) t2 = self.fast.get(num_val, self.sentinel) pos, retval = min(t1, t2) if pos is None: pos = len(self.unresolved)+1 for k, v in self.unresolved[:pos]: tmp = [] flatten(k, expander, variables, tmp) tmp = u"".join(tmp).strip() if tmp == val: retval = v break if num_val is not None and maybe_numeric(tmp) == num_val: retval = v break if retval is None: for a in expander.aliasmap.get_aliases("default") or ["#default"]: retval = self.fast.get(a) if retval is not None: retval = retval[1] break retval = retval or u"" tmp = [] flatten(retval, expander, variables, tmp) _insert_implicit_newlines(tmp) tmp = u"".join(tmp).strip() res.append(tmp) res.append(dummy_mark)
def flatten(self, expander, variables, res): cond = [] flatten(self[0], expander, variables, cond) cond = u"".join(cond).strip() # template blacklisting results in 0xebad # see http://code.pediapress.com/wiki/ticket/700#comment:1 cond = cond.strip(unichr(0xebad)) res.append(maybe_newline) tmp = [] if cond: if len(self) > 1: flatten(self[1], expander, variables, tmp) else: if len(self) > 2: flatten(self[2], expander, variables, tmp) _insert_implicit_newlines(tmp) res.append(u"".join(tmp).strip()) res.append(dummy_mark)
def flatten(self, expander, variables, res): name = [] evaluate.flatten(self[0], expander, variables, name) name = u"".join(name).strip() expander.magic_displaytitle = name
def _flatten(self, expander, variables, res): name = [] flatten(self[0], expander, variables, name) name = u"".join(name).strip() if len(name) > 256 * 1024: raise MemoryLimitError("template name too long: %s bytes" % (len(name),)) args = self._get_args() log.info('_flatten') remainder = None if ":" in name: try_name, try_remainder = name.split(':', 1) from mwlib.templ import magic_nodes try_name = expander.resolve_magic_alias(try_name) or try_name klass = magic_nodes.registry.get(try_name) if klass is not None: children = (try_remainder, )+args # print "MAGIC:", klass, children klass(children).flatten(expander, variables, res) return if expander.resolver.has_magic(try_name): name = try_name remainder = try_remainder if name == '#ifeq': res.append(maybe_newline) tmp = [] if len(args) >= 1: flatten(args[0], expander, variables, tmp) other = u"".join(tmp).strip() remainder = remainder.strip() tmp = [] if magics.maybe_numeric_compare(remainder, other): if len(args) >= 2: flatten(args[1], expander, variables, tmp) res.append(u"".join(tmp).strip()) else: if len(args) >= 3: flatten(args[2], expander, variables, tmp) res.append(u"".join(tmp).strip()) res.append(dummy_mark) return var = [] if remainder is not None: var.append(remainder) for x in args: var.append(x) var = ArgumentList(args=var, expander=expander, variables=variables) rep = expander.resolver(name, var) if rep is not None: res.append(maybe_newline) res.append(rep) res.append(dummy_mark) else: p = expander.getParsedTemplate(name) if p: if DEBUG: msg = "EXPANDING %r %r ===> " % (name, var) oldidx = len(res) res.append(mark_start(repr(name))) res.append(maybe_newline) flatten(p, expander, var, res) res.append(mark_end(repr(name))) if DEBUG: msg += repr("".join(res[oldidx:])) print msg
def flatten(self, expander, variables, res): for x in self: if isinstance(x, basestring): res.append(x) else: flatten(x, expander, variables, res)
def _flatten(self, expander, variables, res): name = [] flatten(self[0], expander, variables, name) name = u"".join(name).strip() if len(name) > 256 * 1024: raise MemoryLimitError("template name too long: %s bytes" % (len(name), )) args = self._get_args() remainder = None if ":" in name: try_name, try_remainder = name.split(':', 1) from mwlib.templ import magic_nodes try_name = expander.resolve_magic_alias(try_name) or try_name klass = magic_nodes.registry.get(try_name) if klass is not None: children = (try_remainder, ) + args # print "MAGIC:", klass, children klass(children).flatten(expander, variables, res) return if expander.resolver.has_magic(try_name): name = try_name remainder = try_remainder if name == '#ifeq': res.append(maybe_newline) tmp = [] if len(args) >= 1: flatten(args[0], expander, variables, tmp) other = u"".join(tmp).strip() remainder = remainder.strip() tmp = [] if magics.maybe_numeric_compare(remainder, other): if len(args) >= 2: flatten(args[1], expander, variables, tmp) res.append(u"".join(tmp).strip()) else: if len(args) >= 3: flatten(args[2], expander, variables, tmp) res.append(u"".join(tmp).strip()) res.append(dummy_mark) return var = [] if remainder is not None: var.append(remainder) for x in args: var.append(x) var = ArgumentList(args=var, expander=expander, variables=variables) rep = expander.resolver(name, var) if rep is not None: res.append(maybe_newline) res.append(rep) res.append(dummy_mark) else: p = expander.getParsedTemplate(name) if p: if DEBUG: msg = "EXPANDING %r %r ===> " % (name, var) oldidx = len(res) res.append(mark_start(repr(name))) res.append(maybe_newline) flatten(p, expander, var, res) res.append(mark_end(repr(name))) if DEBUG: msg += repr("".join(res[oldidx:])) print msg
def flatten(self, expander, variables, res): name = [] evaluate.flatten(self[0], expander, variables, name) name = u"".join(name).strip() res.append("{{subst:%s}}" % (name,))
def flatten(self, expander, variables, res): name = [] evaluate.flatten(self[0], expander, variables, name) name = u"".join(name).strip() res.append("{{subst:%s}}" % (name, ))