Here is my much-delayed response to your thoughtful report!
How does your Bootstrap 3 support compare to what we already had here?
http://hg.impredicative.com/bootstrap
On 07/07/2014 03:17 AM, Sergey Mironov wrote:
Hi, I've ported a part of an advanced Bootstrap-3 example to Ur/Web
and would like to share
the experience. First of all, the example is running on my server here:
http://46.38.250.132:8081/B2/main
It copies some (but not all) sections of the original 'theme' example [1]. The
Ur/Web sources are located at the Github [2].
Here is my feedback:
1) The Bootstrap as well as other JQuery libraries heavily uses modern HTML5
tags and CSS3-syntax. Some of them are not well supported by the Ur/Web. As a
result, one may need to patch bootstrap files before including them in the
Ur/Web application. For example, bootstrap.css contains the following
declaration
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../fonts/glyphicons-halflings-regular.eot');
}
The url declared here expects application to be able to serve static files which
normally is not the case in the Ur/Web world. I found it rather difficult to use
thirdparty *css or *js files because of issues like this.
My recommended Ur/Web application deployment mode is as a FastCGI
program within a standard web server like Apache. In such a setting,
it's rather trivial to map arbitrary URL prefixes into arbitrary
filesystem directories, even as some other prefixes (even prefixes that
are themselves prefixes of the statically mapped ones) are mapped to the
FastCGI application. So, I don't see any issues there.
The 'file' directive for .urp files that I announced yesterday may also
be relevant here, though I still recommend using a traditional web
server to serve static files.
2) Ur/Web doesn't support aria-* data attributes which is used by bootstrap
internals. I thinkk we should think about adding this support. Probably, the API
should be similar to that of data-* attributes.
OK, I've added 'aria-*' support.
3) I've tired of rewriting things like class="btn btn-lg btn-default" into
class={css (B.btn :: B.btn_lg :: B.btn_default :: [])}. Could we think about
adding a syntaxic sugar to reduce the amount of code? The new sugar may allow
writing classes as usual
class="class-1 class-2 class-3"
but check them against the declarations
style class_1
style class_2
style class_3
The same thing with data-* attributes: most of the time they are staticly
included in the code, so I would be happy to have pre-processor which may expand
my <p data-target="bla"/> into <p data={data_attr "target" "bla"}/>
This request confuses me. I think both desugarings have already been in
the Ur/Web compiler for months.
For your particular example, I suggest running [open Bootstrap] to bring
all the class names into the top-level namespace, so that the standard
HTML syntax will work.
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur