Viewing File: /usr/lib/python2.7/site-packages/babel/messages/pofile.pyo

ó
™‚Mc@sõdZddlmZmZddlZddlZddlmZddlm	Z	m
Z
ddlmZm
Z
mZddgZd	Zd
„Zd„Zdded„Zejd
ƒZd„Zddd„Zdeeeeeed„ZdS(s¸Reading and writing of files in the ``gettext`` PO (portable object)
format.

:see: `The Format of PO Files
       <http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files>`_
iÿÿÿÿ(tdatetdatetimeN(t__version__(tCatalogtMessage(tsettwraptexttLOCALTZtread_potwrite_posrestructuredtext encCsG|dd!jddƒjddƒjddƒjd	d
ƒjddƒS(
sÿReverse `escape` the given string.

    >>> print unescape('"Say:\\n  \\"hello, world!\\"\\n"')
    Say:
      "hello, world!"
    <BLANKLINE>

    :param string: the string to unescape
    :return: the unescaped string
    :rtype: `str` or `unicode`
    iiÿÿÿÿs\\s\s\ts	s\rs
s\ns
s\"s"(treplace(tstring((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pytunescape s
cCs^|jdƒrPg}x+|jƒdD]}|jt|ƒƒq&Wdj|ƒSt|ƒSdS(s.Reverse the normalization done by the `normalize` function.

    >>> print denormalize(r'''""
    ... "Say:\n"
    ... "  \"hello, world!\"\n"''')
    Say:
      "hello, world!"
    <BLANKLINE>

    >>> print denormalize(r'''""
    ... "Say:\n"
    ... "  \"Lorem ipsum dolor sit "
    ... "amet, consectetur adipisicing"
    ... " elit, \"\n"''')
    Say:
      "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    <BLANKLINE>

    :param string: the string to denormalize
    :return: the denormalized string
    :rtype: `unicode` or `str`
    s""itN(t
startswitht
splitlinestappendRtjoin(Rtlinestline((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pytdenormalize2s
cstd|d|ƒ‰dg‰dg‰g‰	g‰g‰g‰g‰
g‰tg‰
tg‰tg‰‡‡‡‡‡‡‡	‡
‡‡‡
fd†‰‡‡‡‡	‡‡fd†}x	t|jƒƒD]õ\}}|jƒ}t|tƒs|jˆjƒ}n|j	dƒr¬tˆd<ˆd<ˆ	r7ˆr7ˆƒn|dj	dƒrÒx\|d	j
ƒjƒD]j}|jdƒ}|dkrayt
||dƒ}Wntk
r°qanXˆj|| |fƒqaqaWq¹|dj	d
ƒrxÁ|d	j
ƒjd
ƒD]}	ˆj|	jƒƒqÿWq¹|dj	dƒrVtˆ
d<|||d	j
ƒƒq¹|dj	dƒr’|d	jƒ}
|
r©ˆj|
ƒq©q¹ˆ
j|djƒƒqÄ|||ƒqÄWˆ	r͈ƒnGˆdrˆsêˆ
sêˆrˆ	jd
ƒˆjdd
gƒˆƒnˆS(s×Read messages from a ``gettext`` PO (portable object) file from the given
    file-like object and return a `Catalog`.

    >>> from StringIO import StringIO
    >>> buf = StringIO('''
    ... #: main.py:1
    ... #, fuzzy, python-format
    ... msgid "foo %(name)s"
    ... msgstr ""
    ...
    ... # A user comment
    ... #. An auto comment
    ... #: main.py:3
    ... msgid "bar"
    ... msgid_plural "baz"
    ... msgstr[0] ""
    ... msgstr[1] ""
    ... ''')
    >>> catalog = read_po(buf)
    >>> catalog.revision_date = datetime(2007, 04, 01)

    >>> for message in catalog:
    ...     if message.id:
    ...         print (message.id, message.string)
    ...         print ' ', (message.locations, message.flags)
    ...         print ' ', (message.user_comments, message.auto_comments)
    (u'foo %(name)s', '')
      ([(u'main.py', 1)], set([u'fuzzy', u'python-format']))
      ([], [])
    ((u'bar', u'baz'), ('', ''))
      ([(u'main.py', 3)], set([]))
      ([u'A user comment'], [u'An auto comment'])

    :param fileobj: the file-like object to read the PO file from
    :param locale: the locale identifier or `Locale` object, or `None`
                   if the catalog is not bound to a locale (which basically
                   means it's a template)
    :param domain: the message domain
    :param ignore_obsolete: whether to ignore obsolete messages in the input
    :return: an iterator over ``(message, translation, location)`` tuples
    :rtype: ``iterator``
    tlocaletdomainic
sˆ	jƒtˆƒdkrDtgˆD]}t|ƒ^q&ƒ}ntˆdƒ}t|ttfƒrñg}xStˆjƒD]B}y|jˆ	|ƒWqt	k
rÀ|j|dfƒqXqWtg|D]}t|dƒ^qσ}ntˆ	ddƒ}t
||tˆƒtˆƒˆˆ
dˆddƒ}ˆdr]ˆsg|ˆj|<qgn
|ˆ|<ˆ2ˆ	2ˆ2ˆ2ˆ2ˆ
2t
ˆd<ˆdcd7<dS(NiiR
tlineno(tsorttlenttupleRt
isinstancetlisttrangetnum_pluralsRt
IndexErrorRRtobsoletetFalse(tmtmsgidRtidxtttmessage(t
auto_commentstcatalogtcountertflagstignore_obsoletet	locationstmessagesR toffsetttranslationst
user_comments(s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt_add_messageŠs6
(
,


csŠ|jdƒr9tˆd<|djƒ}ˆj|ƒnM|jdƒrŒtˆd<|ˆd<|djƒ}ˆr|ˆƒnˆj|ƒnú|jdƒr"tˆd<tˆd<|djƒ}|jdƒr|d	jd
d	ƒ\}}ˆjt|ƒ|jƒgƒq†ˆjd|gƒnd|jdƒr†ˆdrXˆdcd
|jƒ7<q†ˆdr†ˆdd	cd
|jƒ7<q†ndS(Ntmsgid_pluraliiR#itmsgstrit[it]t"iÿÿÿÿu
(RtTruetlstripRR!tsplittinttrstrip(RRtmsgttxtR$(R1tin_msgidt	in_msgstrR-R.R/(s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt_process_message_line¦s0





"

t#it:it,t~t.u(RR!t	enumeratet	readlineststripRtunicodetdecodetcharsetRR8R9trfindR:t
ValueErrorRR7(tfileobjRRR+R@RRtlocationtpostflagtcomment((R1R'R(R)R*R+R>R?R,R-R R.R/R0s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyRQsd+					-

! 



sL(\s+|[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))cCsDd|jddƒjddƒjddƒjdd	ƒjd
dƒS(s4Escape the given string so that it can be included in double-quoted
    strings in ``PO`` files.

    >>> escape('''Say:
    ...   "hello, world!"
    ... ''')
    '"Say:\\n  \\"hello, world!\\"\\n"'

    :param string: the string to escape
    :return: the escaped string
    :rtype: `str` or `unicode`
    s"%s"s\s\\s	s\ts
s\rs
s\ns"s\"(R
(R((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pytescapeõs

R
iLc	Cs½|r9|dkr9t|ƒ}g}x!t|jtƒƒD]ø\}}tt|ƒƒ||kr%tj|ƒ}|jƒx´|r!g}d}	xu|rtt|dƒƒd|}
|	|
|krç|j|j	ƒƒ|	|
7}	q“|s|j|j	ƒƒnPq“W|jdj
|ƒƒq~Wq:|j|ƒq:Wn|jtƒ}t|ƒdkrdt|ƒS|r|dr|d=|dcd7<nddj
g|D]}
|t|
ƒ^qŸƒS(	sàConvert a string into a format that is appropriate for .po files.

    >>> print normalize('''Say:
    ...   "hello, world!"
    ... ''', width=None)
    ""
    "Say:\n"
    "  \"hello, world!\"\n"

    >>> print normalize('''Say:
    ...   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    ... ''', width=32)
    ""
    "Say:\n"
    "  \"Lorem ipsum dolor sit "
    "amet, consectetur adipisicing"
    " elit, \"\n"

    :param string: the string to normalize
    :param prefix: a string that should be prepended to every line
    :param width: the maximum line width; use `None`, 0, or a negative number
                  to completely disable line wrapping
    :return: the normalized string
    :rtype: `unicode`
    iiiÿÿÿÿuis
u""
u
(RRFRR7RStWORD_SEPR9treverseRtpopR(Rtprefixtwidtht	prefixlenRR$Rtchunkstbuftsizetl((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt	normalizes6"
		

c	
sÚd‡‡fd†‰‡‡fd†‰d‡‡fd†}	d‡‡‡fd†}
tˆƒ}|rs|jƒn|rŒ|jd„ƒnxì|D]ä}|js%|r®q“nˆj}
ˆrˆdkrg}x0|
jƒD]"}|t|dˆd	d
ƒ7}qÜWdj|ƒd}
nˆ|
ƒnx|jD]}|	|ƒq/Wx!|jD]}|	|dd
ƒqMW|sÄdjg|j	D]+\}}d|j
tjdƒ|f^q}ƒ}|	|ddƒn|j
r÷ˆddjdgt|j
ƒƒƒn|jrc|rc|	dˆ|jdƒddƒt|jƒdkrc|	dˆ|jdƒddƒqcn|
|ƒˆdƒq“W|sÖxRˆjjƒD]>}x|jD]}|	|ƒq¡W|
|ddƒˆdƒq‘WndS(s\Write a ``gettext`` PO (portable object) template file for a given
    message catalog to the provided file-like object.

    >>> catalog = Catalog()
    >>> catalog.add(u'foo %(name)s', locations=[('main.py', 1)],
    ...             flags=('fuzzy',))
    >>> catalog.add((u'bar', u'baz'), locations=[('main.py', 3)])
    >>> from StringIO import StringIO
    >>> buf = StringIO()
    >>> write_po(buf, catalog, omit_header=True)
    >>> print buf.getvalue()
    #: main.py:1
    #, fuzzy, python-format
    msgid "foo %(name)s"
    msgstr ""
    <BLANKLINE>
    #: main.py:3
    msgid "bar"
    msgid_plural "baz"
    msgstr[0] ""
    msgstr[1] ""
    <BLANKLINE>
    <BLANKLINE>

    :param fileobj: the file-like object to write to
    :param catalog: the `Catalog` instance
    :param width: the maximum line width for the generated output; use `None`,
                  0, or a negative number to completely disable line wrapping
    :param no_location: do not emit a location comment for every message
    :param omit_header: do not include the ``msgid ""`` entry at the top of the
                        output
    :param sort_output: whether to sort the messages in the output by msgid
    :param sort_by_file: whether to sort the messages in the output by their
                         locations
    :param ignore_obsolete: whether to ignore obsolete messages and not include
                            them in the output; by default they are included as
                            comments
    :param include_previous: include the old msgid as a comment when
                             updating the catalog
    R
cs%t|d|dˆƒjˆjdƒS(NRWRXtbackslashreplace(R^tencodeRK(tkeyRW(R(RX(s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt
_normalizeqscs5t|tƒr$|jˆjƒ}nˆj|ƒdS(N(RRIR`RKtwrite(ttext(R(RN(s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt_writeuscsYˆrˆdkrˆ}nd}x1t||ƒD] }ˆd||jƒfƒq1WdS(NiiLs#%s %s
(RRH(RRRWt_widthR(ReRX(s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt_write_commentzs
	cst|jttfƒrȈd|ˆ|jd|ƒfƒˆd|ˆ|jd|ƒfƒx«tˆjƒD]Q}y|j|}Wntk
r d}nXˆd||ˆ||ƒfƒqpWnFˆd|ˆ|j|ƒfƒˆd|ˆ|jpd|ƒfƒdS(Ns%smsgid %s
is%smsgid_plural %s
iR
s%smsgstr[%d] %s
s%smsgstr %s
(RtidRRRRRR(R&RWR$R(RbReR((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt_write_message„s$

! cSst|j|jƒS(N(tcmpR,(txty((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt<lambda>siRXtsubsequent_indents# u
RWREu u%s:%dt/RBs#%s
s, smsgid %st|ismsgid_plural %ss
s#~ N(RRRhtheader_commentRRRR0R'R,R
tostsepR*tprevious_idRR tvalues(RNR(RXtno_locationtomit_headertsort_outputtsort_by_fileR+tinclude_previousRgRiR-R&tcomment_headerRRRRtfilenameRtlocs((RbReR(RNRXs9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyR	Fs\+


		
	;	*	

(t__doc__RRRrtretbabelRtVERSIONtbabel.messages.catalogRRt
babel.utilRRRt__all__t
__docformat__RRtNoneR!RtcompileRTRSR^R	(((s9/usr/lib/python2.7/site-packages/babel/messages/pofile.pyt<module>s"		ž	>		
Back to Directory File Manager