Can anybody review this patch and apply it to main repo?

On 18 окт, 12:14, Zakhar Zibarov <[email protected]> wrote:
> Hi, developers!
>
> I ran into a problem when displaying the centuries in the 
> templatehttp://ru.wikipedia.org/w/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0...
>
> The problem is that the library is not processed by the flag "xr" for
> the format strings in 
> #time.http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23time
> (at the end of table)
>
> I added two of the test cases and corrected the
> mwlib.templ.magic_time.
>
> diff --git a/mwlib/templ/magic_time.py b/mwlib/templ/magic_time.py
> index 69c461c..a7b7d10 100644
> --- a/mwlib/templ/magic_time.py
> +++ b/mwlib/templ/magic_time.py
> @@ -2,6 +2,7 @@ import sys
>  import datetime
>  import re
>  import calendar
> +import roman
>  from timelib import strtodatetime as parsedate
>
>  from mwlib.strftime import strftime
> @@ -12,7 +13,7 @@ def ampm(date):
>      else:
>          return "pm"
>
> -rx = re.compile('"[^"]*"|\\\\.|.')
> +rx = re.compile('"[^"]*"|x[rnN]|\\\\.|.')
>  codemap = dict(
>      y = '%y',
>      Y = '%Y',
> @@ -41,11 +42,13 @@ codemap = dict(
>      c = "%Y-%m-%dT%H:%M:%S+00:00",
>      r = "%a, %d %b %Y %H:%M:%S +0000",
>      t = lambda d: str(calendar.monthrange(d.year, d.month)[1]),
> +    xr = ("process_next", lambda n: roman.toRoman(int(n))),
>      )
>
>  def formatdate(format, date):
>      split = rx.findall(format)
> +    process_next = None
>
>      tmp = []
>      for x in split:
> @@ -58,11 +61,22 @@ def formatdate(format, date):
>              else:
>                  tmp.append(x)
>          else:
> +            if isinstance(f, tuple):
> +                process_next = f[1]
> +                continue
> +
>              if isinstance(f, basestring):
> -                tmp.append(strftime(date, f))
> +                res = strftime(date, f)
>              else:
> -                tmp.append(f(date))
> +                res = f(date)
>
> +            if process_next:
> +                try:
> +                    res = process_next(res)
> +                except:
> +                    pass
> +                process_next = None
> +            tmp.append(res)
>
>      tmp = u"".join(tmp).strip()
>      return tmp
> @@ -75,7 +89,7 @@ def time(format, datestring=None):
>                  date =
> datetime.datetime.now().replace(hour=int(datestring[:2]),
> minute=int(datestring[2:]), second=0)
>              except ValueError:
>                  pass
> -
> +
>          if date is None:
>              try:
>                  date = parsedate(datestring)
> @@ -87,8 +101,9 @@ def time(format, datestring=None):
>
>          if date is None:
>              return  u'<strong class="error">Error: invalid time</
> strong>'
> -
> +
>      if date is None:
>          date = datetime.datetime.now()
>
>      return formatdate(format, date)
> +
> diff --git a/setup.py b/setup.py
> index 0f89fbd..9a48283 100755
> --- a/setup.py
> +++ b/setup.py
> @@ -64,7 +64,7 @@ def main():
>      if os.path.exists(distutils.util.convert_path('Makefile')):
>          build_deps()   # this is a hg checkout.
>
> -    install_requires=["pyparsing>=1.4.11", "odfpy>=0.9, <0.10",
> "flup>=1.0", "twisted>=8.2", "lockfile>=0.8", "timelib>=0.2",
> "WebOb>=0.9", "pyPdf>=1.12"]
> +    install_requires=["pyparsing>=1.4.11", "odfpy>=0.9, <0.10",
> "flup>=1.0", "twisted>=8.2", "lockfile>=0.8", "timelib>=0.2",
> "WebOb>=0.9", "pyPdf>=1.12", "roman"]
>      if sys.version_info[:2] < (2,5):
>          install_requires.append("wsgiref>=0.1.2")
>          install_requires.append("elementtree>=1.2.6")
> diff --git a/tests/test_expander_time.py b/tests/test_expander_time.py
> index 60d7d9f..635d830 100755
> --- a/tests/test_expander_time.py
> +++ b/tests/test_expander_time.py
> @@ -72,6 +72,9 @@ def test_codes():
>
>      yield e, "r", "Sat, 09 Feb 2008 10:55:17 +0000"
>
> +    yield e, "xrY", "MMVIII"
> +    yield e, "xrU", "XVI", "1970-1-1 + 16 second"
> +
>
>  def test_examples():

-- 
You received this message because you are subscribed to the Google Groups 
"mwlib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/mwlib?hl=en.

Reply via email to