Hi Christophe,

Thank you for the quick reply!

Snippets
I think what you have suggested for snippets sounds perfect. Using
[selector to single out this snippet] from within a file is definitely
way better then what I was envisioning. I think having the ability to
define a single snippet as well as multiple at once would both be
useful.

Setting content & escaping
Thanks you for explaining the cases here. Having a better idea of what
to expect will help in testing further. (I'm still trying to wrap my
head around when I need to unquote or not.)

Selectors & attributes
Thank you for the examples as well as the quick updates! I'll be doing
some testing with these today.


Before I move on to the next section (which gets quite long) I had a
quick question: How do I get/use an elements content? Say for instance
I wanted a rule for all <a> tags that wrapped their content in an
additional <span> so <a href="blah">my link text</a> would become <a
href="blah"><span>my link text</span></a>, how would I accomplish
this? (I have a feeling I'm missing something obvious again like I did
with set-attr!)


Selector "specificity"
Your reply here made me pause a little and after running some tests
has me a bit concerned. Although your example employed specificity it
does not seem that the specificity of the rules is the determining
factor. It seems there is a more general overriding rule regarding
updates to the hierarchy.

I have an example below with a number of permutations but they show
that any time an ancestor is updated in the hierarchy, no rules for
decedents are applied (whether before or after). And also that once an
element is updated, no further rule will be applied to it. Granted,
all of my examples use set-attr, so perhaps there is something about
my use or it's own behavior which is to blame.

In my opinion, it would be great to have rules applied in the order
they appear and that rules applied later would see all previous
changes to the tree and could find/manipulate/update those elements as
desired.

Sorry for being long-winded (again). And thanks again for your time on
this!

Cheers,
Tom Hickey

Given the following HTML:
<ul>
    <li><a href="http://www.google.com";>google</a></li>
    <li><a href="http://www.cnn.com"; class="news">cnn</a></li>
    <li class="last"><a href="http://www.apple.com";>apple</a><a
href="http://store.apple.com"; class="store">apple store</a></li>
</ul>

And the following templates:

(deftemplate update-links1 "net/cgrand/enlive_html/
example_links.html" []
  [:.last] (html/set-attr :last "true")
  [:a] (html/set-attr :title "links rock!"))

(deftemplate update-links2 "net/cgrand/enlive_html/
example_links.html" []
  [:.last :.store] (html/set-attr :type "store")
  [:a] (html/set-attr :title "links rock!"))

(deftemplate update-links3 "net/cgrand/enlive_html/
example_links.html" []
  [:.last :.store] (html/set-attr :type "store")
  [:.last] (html/set-attr :last "true")
  [:a] (html/set-attr :title "links rock!"))

(deftemplate update-links4 "net/cgrand/enlive_html/
example_links.html" []
  [:body] (html/set-attr :class "special")
  [:.last :.store] (html/set-attr :type "store")
  [:.last] (html/set-attr :last "true")
  [:a] (html/set-attr :title "links rock!"))

(deftemplate update-links5 "net/cgrand/enlive_html/
example_links.html" []
  [:.last :.store] (html/set-attr :type "store")
  [:.last] (html/set-attr :last "true")
  [:a] (html/set-attr :title "links rock!")
  [:body] (html/set-attr :class "special"))

Here is the output:

net.cgrand.enlive-html.examples/ (apply str (update-links1))
"<html><body><ul><li><a title=\"links rock!\" href=\"http://
www.google.com\">google</a></li><li><a title=\"links rock!\" href=
\"http://www.cnn.com\"; class=\"news\">cnn</a></li><li last=\"true\"
class=\"last\"><a href=\"http://www.apple.com\";>apple</a><a href=
\"http://store.apple.com\"; class=\"store\">apple store</a></li></ul></
body></html>"

net.cgrand.enlive-html.examples/ (apply str (update-links2))
"<html><body><ul><li><a title=\"links rock!\" href=\"http://
www.google.com\">google</a></li><li><a title=\"links rock!\" href=
\"http://www.cnn.com\"; class=\"news\">cnn</a></li><li class=\"last
\"><a title=\"links rock!\" href=\"http://www.apple.com\";>apple</a><a
type=\"store\" href=\"http://store.apple.com\"; class=\"store\">apple
store</a></li></ul></body></html>"

net.cgrand.enlive-html.examples/ (apply str (update-links3))
"<html><body><ul><li><a title=\"links rock!\" href=\"http://
www.google.com\">google</a></li><li><a title=\"links rock!\" href=
\"http://www.cnn.com\"; class=\"news\">cnn</a></li><li last=\"true\"
class=\"last\"><a href=\"http://www.apple.com\";>apple</a><a href=
\"http://store.apple.com\"; class=\"store\">apple store</a></li></ul></
body></html>"

net.cgrand.enlive-html.examples/ (apply str (update-links4))
"<html><body class=\"special\"><ul><li><a href=\"http://www.google.com
\">google</a></li><li><a href=\"http://www.cnn.com\"; class=\"news
\">cnn</a></li><li class=\"last\"><a href=\"http://www.apple.com
\">apple</a><a href=\"http://store.apple.com\"; class=\"store\">apple
store</a></li></ul></body></html>"

net.cgrand.enlive-html.examples/ (apply str (update-links5))
"<html><body class=\"special\"><ul><li><a href=\"http://www.google.com
\">google</a></li><li><a href=\"http://www.cnn.com\"; class=\"news
\">cnn</a></li><li class=\"last\"><a href=\"http://www.apple.com
\">apple</a><a href=\"http://store.apple.com\"; class=\"store\">apple
store</a></li></ul></body></html>"

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to