Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-09 Thread Eli Barzilay
A few minutes ago, Jay McCarthy wrote:
> On Thu, Feb 9, 2012 at 12:19 PM, Eli Barzilay  wrote:
> > Yesterday, Jay McCarthy wrote:
> >> web-server/templates uses scribble/text
> >>
> >> So, if you return a function, then it will be called.
> >>
> >> We could also change scribble/text to support a struct/class
> >> property for JIT transformation. Does that sound good?
> >>
> >> Is that okay with you, Eli?
> >
> > Why a property?  There is already a `with-writer' that can be used to
> > apply a custom writer, and that's how `scribble/html' does things.
> 
> I see no docs for with-writer or scribble/html, so I don't know what
> these are.

No docs becasue I don't have a good API yet, so it's still a kind of a
private backdoor.  (And that's what I'd like to change.)


> > (And going back to the property, if you're looking for a way to do
> > this for some particular value, then the right way to do this is
> > to use the procedure property -- the text outputter treats
> > anything that looks as a thunk by applying it to get the value to
> > actually put out.)
> 
> Ya, the procedure property sounds like the way to go.

OK.  (I was hoping that there's a need for an organized writer thing
to sort out the above...)

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!


  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-09 Thread Jay McCarthy
On Thu, Feb 9, 2012 at 12:19 PM, Eli Barzilay  wrote:
> Yesterday, Jay McCarthy wrote:
>> web-server/templates uses scribble/text
>>
>> So, if you return a function, then it will be called.
>>
>> We could also change scribble/text to support a struct/class
>> property for JIT transformation. Does that sound good?
>>
>> Is that okay with you, Eli?
>
> Why a property?  There is already a `with-writer' that can be used to
> apply a custom writer, and that's how `scribble/html' does things.

I see no docs for with-writer or scribble/html, so I don't know what these are.

>
> But that feature is not really great, IMO, and I really want to get
> something better instead -- something where I can compose a bunch of
> writers (in a form of input-regexp, output-string), disable some,
> etc.  If anyone is interested in trying to get something here I'd be
> happy to provide more details.
>
> (And going back to the property, if you're looking for a way to do
> this for some particular value, then the right way to do this is to
> use the procedure property -- the text outputter treats anything that
> looks as a thunk by applying it to get the value to actually put out.)

Ya, the procedure property sounds like the way to go.

Jay


-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93


  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-09 Thread Jay McCarthy
On Thu, Feb 9, 2012 at 11:45 AM, Jordan Johnson  wrote:
>
> On Feb 8, 2012, at 10:17 AM, Jay McCarthy  wrote:
> web-server/templates uses scribble/text
>>
>> So, if you return a function, then it will be called.
>
> I'm not sure I understand the implication: that I could achieve what I'm 
> after by wrapping the images in a function?  I'm not clear on how that would 
> work.

If a template includes a function, then the function gets called to
produce the value to display. So rather than having "image" you'd have
"(lambda () (convert-to-what-i-want image))"

>
>> We could also change scribble/text to support a struct/class property
>> for JIT transformation. Does that sound good?
>
> This sounds like it might be the kind of thing I'm after.  Given that I don't 
> necessarily know how the images are being created, could attaching such a 
> property be done without changing how the image%s are instantiated?
>
> Thanks,
> Jordan
>
>> Is that okay with you, Eli?
>>
>> Jay
>>
>> On Tue, Feb 7, 2012 at 4:50 PM, Jordan Johnson  wrote:
>>> Hi all,
>>>
>>> I'm using web-server/templates to generate text, and the data in variables 
>>> I reference in the template include s-exps that may, in some cases, contain 
>>> image% objects.  I want it to render the image%s as plain text; even just 
>>> the string "" or similar would be adequate.
>>>
>>> So, my question is: how (via the template system or other libraries) can I 
>>> best make racket perform this translation, ideally without writing code to 
>>> walk the s-exp trees?  It seems there must be a way someplace to tweak the 
>>> output function used by the template library, but I don't know where that 
>>> would be.
>>>
>>> Best,
>>> Jordan
>>> 
>>>  Racket Users list:
>>>  http://lists.racket-lang.org/users
>>
>>
>>
>> --
>> Jay McCarthy 
>> Assistant Professor / Brigham Young University
>> http://faculty.cs.byu.edu/~jay
>>
>> "The glory of God is Intelligence" - D&C 93



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93


  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-09 Thread Eli Barzilay
Yesterday, Jay McCarthy wrote:
> web-server/templates uses scribble/text
> 
> So, if you return a function, then it will be called.
> 
> We could also change scribble/text to support a struct/class
> property for JIT transformation. Does that sound good?
> 
> Is that okay with you, Eli?

Why a property?  There is already a `with-writer' that can be used to
apply a custom writer, and that's how `scribble/html' does things.

But that feature is not really great, IMO, and I really want to get
something better instead -- something where I can compose a bunch of
writers (in a form of input-regexp, output-string), disable some,
etc.  If anyone is interested in trying to get something here I'd be
happy to provide more details.

(And going back to the property, if you're looking for a way to do
this for some particular value, then the right way to do this is to
use the procedure property -- the text outputter treats anything that
looks as a thunk by applying it to get the value to actually put out.)

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!

  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-09 Thread Jordan Johnson

On Feb 8, 2012, at 10:17 AM, Jay McCarthy  wrote:
web-server/templates uses scribble/text
> 
> So, if you return a function, then it will be called.

I'm not sure I understand the implication: that I could achieve what I'm after 
by wrapping the images in a function?  I'm not clear on how that would work.

> We could also change scribble/text to support a struct/class property
> for JIT transformation. Does that sound good?

This sounds like it might be the kind of thing I'm after.  Given that I don't 
necessarily know how the images are being created, could attaching such a 
property be done without changing how the image%s are instantiated?

Thanks,
Jordan

> Is that okay with you, Eli?
> 
> Jay
> 
> On Tue, Feb 7, 2012 at 4:50 PM, Jordan Johnson  wrote:
>> Hi all,
>> 
>> I'm using web-server/templates to generate text, and the data in variables I 
>> reference in the template include s-exps that may, in some cases, contain 
>> image% objects.  I want it to render the image%s as plain text; even just 
>> the string "" or similar would be adequate.
>> 
>> So, my question is: how (via the template system or other libraries) can I 
>> best make racket perform this translation, ideally without writing code to 
>> walk the s-exp trees?  It seems there must be a way someplace to tweak the 
>> output function used by the template library, but I don't know where that 
>> would be.
>> 
>> Best,
>> Jordan
>> 
>>  Racket Users list:
>>  http://lists.racket-lang.org/users
> 
> 
> 
> -- 
> Jay McCarthy 
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
> 
> "The glory of God is Intelligence" - D&C 93


  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-08 Thread Jay McCarthy
web-server/templates uses scribble/text

So, if you return a function, then it will be called.

We could also change scribble/text to support a struct/class property
for JIT transformation. Does that sound good?

Is that okay with you, Eli?

Jay

On Tue, Feb 7, 2012 at 4:50 PM, Jordan Johnson  wrote:
> Hi all,
>
> I'm using web-server/templates to generate text, and the data in variables I 
> reference in the template include s-exps that may, in some cases, contain 
> image% objects.  I want it to render the image%s as plain text; even just the 
> string "" or similar would be adequate.
>
> So, my question is: how (via the template system or other libraries) can I 
> best make racket perform this translation, ideally without writing code to 
> walk the s-exp trees?  It seems there must be a way someplace to tweak the 
> output function used by the template library, but I don't know where that 
> would be.
>
> Best,
> Jordan
> 
>  Racket Users list:
>  http://lists.racket-lang.org/users



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93


  Racket Users list:
  http://lists.racket-lang.org/users


Re: [racket] Ensuring data fed to web-server/templates is textual

2012-02-07 Thread Neil Van Dyke

Jordan Johnson wrote at 02/07/2012 06:50 PM:

I'm using web-server/templates to generate text, and the data in variables I reference in the 
template include s-exps that may, in some cases, contain image% objects.  I want it to render 
the image%s as plain text; even just the string "" or similar would be 
adequate.
   


I don't know about "web-server/templates", but if you want to do this 
translation at the last minute, rather than simply avoiding putting 
invalid values in the s-expression in the first place, another library 
will do it:


#lang racket/base

(require (planet neil/html-writing:1:0))

(define-struct some-image-thing (x))

(define (my-html-writing-filter context thing)
  (cond ((some-image-thing? thing)
 (format "" (some-image-thing-x thing)))
(else
 (error 'my-html-writing-filter
"Don't know how to filter ~S in context ~S"
thing
context

(write-html
 `(html (head (title "My Title"))
(body (@ (bgcolor "white"))
  (h1 "My Heading")
  (p "This is a paragraph.")
  (p "This is a foreign thing: " ,(make-some-image-thing 42))
  (p "This is another paragraph.")))
 (current-output-port)
 my-html-writing-filter)

This writes the output:

My TitleMy 
HeadingThis is a paragraph.This is a foreign thing: 
This is another paragraph.


I originally implemented that feature 7 years ago, for last-minute 
translation of URI objects -- to output URLs as relative to the URL of 
the HTML object being written, rather than absolute.


--
http://www.neilvandyke.org/

 Racket Users list:
 http://lists.racket-lang.org/users