Loading ...
Sorry, an error occurred while loading the content.

Re: [Cheetahtemplate-discuss] Newbie question: non-escaping backslashes before placeholders

Expand Messages
  • Jon Mills
    Tyler, Thanks for your quick response, unfortunately that doesn t seem to fix the problem. If I change my test code to: from Cheetah.Template import Template t
    Message 1 of 7 , Oct 22, 2009
    • 0 Attachment
      Tyler,

      Thanks for your quick response, unfortunately that doesn't seem to fix
      the problem.

      If I change my test code to:
      from Cheetah.Template import Template
      t = Template('#config_file "c:\${p1}\${p2}"')
      t.p1 = 'foo'
      t.p2 = 'bar'
      print t

      I get the following output:
      #config_file "c:${p1}${p2}"

      On Thu, Oct 22, 2009 at 8:00 AM, <tyler@...> wrote:
      >
      > On Thu, 22 Oct 2009, Jon Mills wrote:
      >
      >> Hi,
      >>
      >> I'm new to Cheetah, and new to this list,
      >>
      >> I've got a question that I'm sure must have been asked before, but I
      >> can't find the answer in the documentation so I'm hoping somebody can
      >> help.
      >>
      >> I'm using Cheetah 2.2.1 / Python 2.5 under Windows to create some
      >> config files and I'm having problems creating windows paths.
      >>
      >> There's a cut-down example below.
      >>
      >> from Cheetah.Template import Template
      >> t = Template('#config_file    "c:\$p1\$p2"')
      >> t.p1 = 'foo'
      >> t.p2 = 'bar'
      >> print t
      >
      > If you wrap them in curly braces you should be fine, i.e.
      >
      >        "c:\${p1}\${p2}"
      >
      > Let me know if that doesn't work for you
      >
      > Cheers,
      > -R. Tyler Ballance
      > --------------------------------------
      >  GitHub: http://github.com/rtyler
      > Twitter: http://twitter.com/agentdero
      >   Blog: http://unethicalblogger.com
      >



      --
      Jon Mills
      jonmills@...

      ------------------------------------------------------------------------------
      Come build with us! The BlackBerry(R) Developer Conference in SF, CA
      is the only developer event you need to attend this year. Jumpstart your
      developing skills, take BlackBerry mobile applications to market and stay
      ahead of the curve. Join us from November 9 - 12, 2009. Register now!
      http://p.sf.net/sfu/devconference
      _______________________________________________
      Cheetahtemplate-discuss mailing list
      Cheetahtemplate-discuss@...
      https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
    • tyler@monkeypox.org
      ... Ah right, I m daft, the backslash is escaping the dollarsign. I don t think there s a really good means of dealing with this sort of usecase to be honest,
      Message 2 of 7 , Oct 22, 2009
      • 0 Attachment
        On Thu, 22 Oct 2009, Jon Mills wrote:

        > Tyler,
        >
        > Thanks for your quick response, unfortunately that doesn't seem to fix
        > the problem.
        >
        > If I change my test code to:
        > from Cheetah.Template import Template
        > t = Template('#config_file "c:\${p1}\${p2}"')
        > t.p1 = 'foo'
        > t.p2 = 'bar'
        > print t
        >
        > I get the following output:
        > #config_file "c:${p1}${p2}"


        Ah right, I'm daft, the backslash is escaping the dollarsign.

        I don't think there's a really good means of dealing with this sort of
        usecase to be honest, you could work around it for now by doing
        something like:

        #set cpath = "c:\\%s\\%s" % ($p1, $p2)
        \#config_file "$cpath"

        Less than ideal, I agree, but will at least get you going until I
        have time to dig into the compiler code


        Cheers,
        -R. Tyler Ballance
        --------------------------------------
        GitHub: http://github.com/rtyler
        Twitter: http://twitter.com/agentdero
        Blog: http://unethicalblogger.com
        > On Thu, Oct 22, 2009 at 8:00 AM, <tyler@...> wrote:
        > >
        > > On Thu, 22 Oct 2009, Jon Mills wrote:
        > >
        > >> Hi,
        > >>
        > >> I'm new to Cheetah, and new to this list,
        > >>
        > >> I've got a question that I'm sure must have been asked before, but I
        > >> can't find the answer in the documentation so I'm hoping somebody can
        > >> help.
        > >>
        > >> I'm using Cheetah 2.2.1 / Python 2.5 under Windows to create some
        > >> config files and I'm having problems creating windows paths.
        > >>
        > >> There's a cut-down example below.
        > >>
        > >> from Cheetah.Template import Template
        > >> t = Template('#config_file    "c:\$p1\$p2"')
        > >> t.p1 = 'foo'
        > >> t.p2 = 'bar'
        > >> print t
        > >
        > > If you wrap them in curly braces you should be fine, i.e.
        > >
        > >        "c:\${p1}\${p2}"
        > >
        > > Let me know if that doesn't work for you
      • Jon Mills
        Thanks Tyler, that works fine. It hadn t occurred to my that I could use Python s string formatting as well as Cheetah s. Great support. Thanks again. ... --
        Message 3 of 7 , Oct 22, 2009
        • 0 Attachment
          Thanks Tyler, that works fine. It hadn't occurred to my that I could
          use Python's string formatting as well as Cheetah's.

          Great support. Thanks again.

          On Thu, Oct 22, 2009 at 8:31 AM, <tyler@...> wrote:
          >
          > On Thu, 22 Oct 2009, Jon Mills wrote:
          >
          >> Tyler,
          >>
          >> Thanks for your quick response, unfortunately that doesn't seem to fix
          >> the problem.
          >>
          >> If I change my test code to:
          >> from Cheetah.Template import Template
          >> t = Template('#config_file    "c:\${p1}\${p2}"')
          >> t.p1 = 'foo'
          >> t.p2 = 'bar'
          >> print t
          >>
          >> I get the following output:
          >> #config_file    "c:${p1}${p2}"
          >
          >
          > Ah right, I'm daft, the backslash is escaping the dollarsign.
          >
          > I don't think there's a really good means of dealing with this sort of
          > usecase to be honest, you could work around it for now by doing
          > something like:
          >
          >        #set cpath = "c:\\%s\\%s" % ($p1, $p2)
          >        \#config_file   "$cpath"
          >
          > Less than ideal, I agree, but will at least get you going until I
          > have time to dig into the compiler code
          >
          >
          > Cheers,
          > -R. Tyler Ballance
          > --------------------------------------
          >  GitHub: http://github.com/rtyler
          > Twitter: http://twitter.com/agentdero
          >   Blog: http://unethicalblogger.com
          >> On Thu, Oct 22, 2009 at 8:00 AM,  <tyler@...> wrote:
          >> >
          >> > On Thu, 22 Oct 2009, Jon Mills wrote:
          >> >
          >> >> Hi,
          >> >>
          >> >> I'm new to Cheetah, and new to this list,
          >> >>
          >> >> I've got a question that I'm sure must have been asked before, but I
          >> >> can't find the answer in the documentation so I'm hoping somebody can
          >> >> help.
          >> >>
          >> >> I'm using Cheetah 2.2.1 / Python 2.5 under Windows to create some
          >> >> config files and I'm having problems creating windows paths.
          >> >>
          >> >> There's a cut-down example below.
          >> >>
          >> >> from Cheetah.Template import Template
          >> >> t = Template('#config_file    "c:\$p1\$p2"')
          >> >> t.p1 = 'foo'
          >> >> t.p2 = 'bar'
          >> >> print t
          >> >
          >> > If you wrap them in curly braces you should be fine, i.e.
          >> >
          >> >        "c:\${p1}\${p2}"
          >> >
          >> > Let me know if that doesn't work for you
          >



          --
          Jon Mills
          jonmills@...
          Sent from Stoke Gifford, South Gloucestershire, United Kingdom

          ------------------------------------------------------------------------------
          Come build with us! The BlackBerry(R) Developer Conference in SF, CA
          is the only developer event you need to attend this year. Jumpstart your
          developing skills, take BlackBerry mobile applications to market and stay
          ahead of the curve. Join us from November 9 - 12, 2009. Register now!
          http://p.sf.net/sfu/devconference
          _______________________________________________
          Cheetahtemplate-discuss mailing list
          Cheetahtemplate-discuss@...
          https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
        • Aahz
          ... t = Template( #config_file r c: $p1 $p2 ) Note the r above -- I haven t tested that, though. It might need to be instead t =
          Message 4 of 7 , Oct 22, 2009
          • 0 Attachment
            On Thu, Oct 22, 2009, Jon Mills wrote:
            >
            > from Cheetah.Template import Template
            > t = Template('#config_file "c:\$p1\$p2"')

            t = Template('#config_file r"c:\$p1\$p2"')

            Note the 'r"' above -- I haven't tested that, though. It might need to
            be instead
            t = Template(r'#config_file "c:\$p1\$p2"')
            or even both
            t = Template(r'#config_file r"c:\$p1\$p2"')
            --
            Aahz (aahz@...) <*> http://www.pythoncraft.com/

            Member of the Groucho Marx Fan Club

            ------------------------------------------------------------------------------
            Come build with us! The BlackBerry(R) Developer Conference in SF, CA
            is the only developer event you need to attend this year. Jumpstart your
            developing skills, take BlackBerry mobile applications to market and stay
            ahead of the curve. Join us from November 9 - 12, 2009. Register now!
            http://p.sf.net/sfu/devconference
            _______________________________________________
            Cheetahtemplate-discuss mailing list
            Cheetahtemplate-discuss@...
            https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
          • Tavis Rudd
            ... ... namespaces={ p1 : foo , p2 : bar }) #config_file c: foo bar Template(r #config_file $( %s %s %($p1,$p2)) ) ... There s no need to
            Message 5 of 7 , Oct 22, 2009
            • 0 Attachment
              I can't think of any 'pretty' way to do it, but here's another approach:

              >>> print Template(r'''#config_file "$('c:\\%s\\%s'%($p1,$p2))"''',
              ... namespaces={'p1':'foo', 'p2':'bar'})
              #config_file "c:\foo\bar"

              Template(r"#config_file $('\\%s\\%s'%($p1,$p2))")

              On Thu, 22 Oct 2009, Jon Mills wrote:

              > Thanks Tyler, that works fine. It hadn't occurred to my that I could
              > use Python's string formatting as well as Cheetah's.
              >
              > Great support. Thanks again.
              >
              > On Thu, Oct 22, 2009 at 8:31 AM, <tyler@...> wrote:
              >>
              >> On Thu, 22 Oct 2009, Jon Mills wrote:
              >>
              >>> Tyler,
              >>>
              >>> Thanks for your quick response, unfortunately that doesn't seem to fix
              >>> the problem.
              >>>
              >>> If I change my test code to:
              >>> from Cheetah.Template import Template
              >>> t = Template('#config_file    "c:\${p1}\${p2}"')
              >>> t.p1 = 'foo'
              >>> t.p2 = 'bar'
              >>> print t
              >>>
              >>> I get the following output:
              >>> #config_file    "c:${p1}${p2}"
              >>
              >>
              >> Ah right, I'm daft, the backslash is escaping the dollarsign.
              >>
              >> I don't think there's a really good means of dealing with this sort of
              >> usecase to be honest, you could work around it for now by doing
              >> something like:
              >>
              >>        #set cpath = "c:\\%s\\%s" % ($p1, $p2)
              >>        \#config_file   "$cpath"
              There's no need to escape #config_file.

              >>
              >> Less than ideal, I agree, but will at least get you going until I
              >> have time to dig into the compiler code
              >>
              >>
              >> Cheers,
              >> -R. Tyler Ballance
              >> --------------------------------------
              >>  GitHub: http://github.com/rtyler
              >> Twitter: http://twitter.com/agentdero
              >>   Blog: http://unethicalblogger.com
              >>> On Thu, Oct 22, 2009 at 8:00 AM,  <tyler@...> wrote:
              >>>>
              >>>> On Thu, 22 Oct 2009, Jon Mills wrote:
              >>>>
              >>>>> Hi,
              >>>>>
              >>>>> I'm new to Cheetah, and new to this list,
              >>>>>
              >>>>> I've got a question that I'm sure must have been asked before, but I
              >>>>> can't find the answer in the documentation so I'm hoping somebody can
              >>>>> help.
              >>>>>
              >>>>> I'm using Cheetah 2.2.1 / Python 2.5 under Windows to create some
              >>>>> config files and I'm having problems creating windows paths.
              >>>>>
              >>>>> There's a cut-down example below.
              >>>>>
              >>>>> from Cheetah.Template import Template
              >>>>> t = Template('#config_file    "c:\$p1\$p2"')
              >>>>> t.p1 = 'foo'
              >>>>> t.p2 = 'bar'
              >>>>> print t
              >>>>
              >>>> If you wrap them in curly braces you should be fine, i.e.
              >>>>
              >>>>        "c:\${p1}\${p2}"
              >>>>
              >>>> Let me know if that doesn't work for you
              >>
              >
              >
              >
              > --
              > Jon Mills
              > jonmills@...
              > Sent from Stoke Gifford, South Gloucestershire, United Kingdom
              >
              > ------------------------------------------------------------------------------
              > Come build with us! The BlackBerry(R) Developer Conference in SF, CA
              > is the only developer event you need to attend this year. Jumpstart your
              > developing skills, take BlackBerry mobile applications to market and stay
              > ahead of the curve. Join us from November 9 - 12, 2009. Register now!
              > http://p.sf.net/sfu/devconference
              > _______________________________________________
              > Cheetahtemplate-discuss mailing list
              > Cheetahtemplate-discuss@...
              > https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
              >
            Your message has been successfully submitted and would be delivered to recipients shortly.