diff --git a/.gitignore b/.gitignore
index 1d0aece..2775dcf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ build
PYSMELLTAGS
.noseids
*.tar.gz
+.hyde_deps
diff --git a/hyde/fs.py b/hyde/fs.py
index 7afc2d1..4111439 100644
--- a/hyde/fs.py
+++ b/hyde/fs.py
@@ -118,10 +118,11 @@ class FS(object):
"""
Gets the fragment of the current path starting at root.
"""
- if self == root:
+ if self.path == root:
return ''
+ ancestors = self.ancestors(stop=root)
return functools.reduce(lambda f, p: Folder(p.name).child(f),
- self.ancestors(stop=root),
+ ancestors,
self.name)
def get_mirror(self, target_root, source_root=None):
diff --git a/hyde/generator.py b/hyde/generator.py
index 344c60e..620bbdd 100644
--- a/hyde/generator.py
+++ b/hyde/generator.py
@@ -7,6 +7,7 @@ from hyde.fs import File, Folder
from hyde.model import Context, Dependents
from hyde.plugin import Plugin
from hyde.template import Template
+from hyde.site import Node, Resource
from contextlib import contextmanager
@@ -197,6 +198,18 @@ class Generator(object):
node = self.site.content.node_from_path(node_path)
self.generate_node(node, incremental)
+ @contextmanager
+ def events_for(self, obj):
+ if not self.generated_once:
+ self.events.begin_site()
+ if isinstance(obj, Resource):
+ self.events.begin_node(obj.node)
+ yield
+ if not self.generated_once:
+ if isinstance(obj, Resource):
+ self.events.node_complete(obj.node)
+ self.events.site_complete()
+
def generate_node(self, node=None, incremental=False):
"""
Generates the given node. If node is invalid, empty or
@@ -210,7 +223,8 @@ class Generator(object):
self.load_site_if_needed()
try:
- self.__generate_node__(node, incremental)
+ with self.events_for(node):
+ self.__generate_node__(node, incremental)
self.finalize()
except HydeException:
self.generate_all()
@@ -245,8 +259,8 @@ class Generator(object):
self.load_site_if_needed()
try:
- self.__generate_resource__(resource, incremental)
- self.finalize()
+ with self.events_for(resource):
+ self.__generate_resource__(resource, incremental)
except HydeException:
self.generate_all()
diff --git a/hyde/layouts/basic/README.markdown b/hyde/layouts/basic/README.markdown
index e69de29..af96409 100644
--- a/hyde/layouts/basic/README.markdown
+++ b/hyde/layouts/basic/README.markdown
@@ -0,0 +1 @@
+Basic template for hyde.
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/about.html b/hyde/layouts/basic/content/about.html
new file mode 100644
index 0000000..e69de29
diff --git a/hyde/layouts/basic/content/apple-touch-icon.png b/hyde/layouts/basic/content/apple-touch-icon.png
new file mode 100644
index 0000000..6d2fc39
Binary files /dev/null and b/hyde/layouts/basic/content/apple-touch-icon.png differ
diff --git a/hyde/layouts/basic/content/blog/angry-post.html b/hyde/layouts/basic/content/blog/angry-post.html
new file mode 100644
index 0000000..738f8c6
--- /dev/null
+++ b/hyde/layouts/basic/content/blog/angry-post.html
@@ -0,0 +1,139 @@
+---
+title: An Angry Post
+description: >
+ Temper. Temper. Temper.
+created: !!timestamp '2011-01-01 10:00:00'
+tags:
+ - angry
+ - thougts
+---
+
+--- mark image
+
+![Airport]([[!!images/airport.png]])
+
+--- endmark
+
+--- mark excerpt
+
+To complete the character-study of Mr. Worple, he was a man of extremely
+uncertain temper, and his general tendency was to think that Corky was a poor
+chump and that whatever step he took in any direction on his own account, was
+just another proof of his innate idiocy. I should imagine Jeeves feels very
+much the same about me.
+
+--- endmark
+
+So when Corky trickled into my apartment one afternoon, shooing a girl in
+front of him, and said, "Bertie, I want you to meet my fiancée, Miss Singer,"
+the aspect of the matter which hit me first was precisely the one which he had
+come to consult me about. The very first words I spoke were, "Corky, how about
+your uncle?"
+
+The poor chap gave one of those mirthless laughs. He was looking anxious and
+worried, like a man who has done the murder all right but can't think what the
+deuce to do with the body.
+
+"We're so scared, Mr. Wooster," said the girl. "We were hoping that you might
+suggest a way of breaking it to him."
+
+Muriel Singer was one of those very quiet, appealing girls who have a way of
+looking at you with their big eyes as if they thought you were the greatest
+thing on earth and wondered that you hadn't got on to it yet yourself. She sat
+there in a sort of shrinking way, looking at me as if she were saying to
+herself, "Oh, I do hope this great strong man isn't going to hurt me." She
+gave a fellow a protective kind of feeling, made him want to stroke her hand
+and say, "There, there, little one!" or words to that effect. She made me feel
+that there was nothing I wouldn't do for her. She was rather like one of those
+innocent-tasting American drinks which creep imperceptibly into your system so
+that, before you know what you're doing, you're starting out to reform the
+world by force if necessary and pausing on your way to tell the large man in
+the corner that, if he looks at you like that, you will knock his head off.
+What I mean is, she made me feel alert and dashing, like a jolly old
+knight-errant or something of that kind. I felt that I was with her in this
+thing to the limit.
+
+"I don't see why your uncle shouldn't be most awfully bucked," I said to
+Corky. "He will think Miss Singer the ideal wife for you."
+
+Corky declined to cheer up.
+
+"You don't know him. Even if he did like Muriel he wouldn't admit it. That's
+the sort of pig-headed guy he is. It would be a matter of principle with him
+to kick. All he would consider would be that I had gone and taken an important
+step without asking his advice, and he would raise Cain automatically. He's
+always done it."
+
+I strained the old bean to meet this emergency.
+
+"You want to work it so that he makes Miss Singer's acquaintance without
+knowing that you know her. Then you come along——"
+
+"But how can I work it that way?"
+
+I saw his point. That was the catch.
+
+"There's only one thing to do," I said.
+
+"What's that?"
+
+"Leave it to Jeeves."
+
+And I rang the bell.
+
+"Sir?" said Jeeves, kind of manifesting himself. One of the rummy things about
+Jeeves is that, unless you watch like a hawk, you very seldom see him come
+into a room. He's like one of those weird chappies in India who dissolve
+themselves into thin air and nip through space in a sort of disembodied way
+and assemble the parts again just where they want them. I've got a cousin
+who's what they call a Theosophist, and he says he's often nearly worked the
+thing himself, but couldn't quite bring it off, probably owing to having fed
+in his boyhood on the flesh of animals slain in anger and pie.
+
+The moment I saw the man standing there, registering respectful attention, a
+weight seemed to roll off my mind. I felt like a lost child who spots his
+father in the offing. There was something about him that gave me confidence.
+
+Jeeves is a tallish man, with one of those dark, shrewd faces. His eye gleams
+with the light of pure intelligence.
+
+"Jeeves, we want your advice."
+
+"Very good, sir."
+
+I boiled down Corky's painful case into a few well-chosen words.
+
+"So you see what it amount to, Jeeves. We want you to suggest some way by
+which Mr. Worple can make Miss Singer's acquaintance without getting on to the
+fact that Mr. Corcoran already knows her. Understand?"
+
+"Perfectly, sir."
+
+"Well, try to think of something."
+
+"I have thought of something already, sir."
+
+"You have!"
+
+"The scheme I would suggest cannot fail of success, but it has what may seem
+to you a drawback, sir, in that it requires a certain financial outlay."
+
+"He means," I translated to Corky, "that he has got a pippin of an idea, but
+it's going to cost a bit."
+
+Naturally the poor chap's face dropped, for this seemed to dish the whole
+thing. But I was still under the influence of the girl's melting gaze, and I
+saw that this was where I started in as a knight-errant.
+
+"You can count on me for all that sort of thing, Corky," I said. "Only too
+glad. Carry on, Jeeves."
+
+"I would suggest, sir, that Mr. Corcoran take advantage of Mr. Worple's
+attachment to ornithology."
+
+"How on earth did you know that he was fond of birds?"
+
+
+[My Man Jeeves by PG Wodehouse][MMJ]
+
+[MMJ]: http://www.gutenberg.org/cache/epub/8164/pg8164.html
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/blog/happy-post.html b/hyde/layouts/basic/content/blog/happy-post.html
new file mode 100644
index 0000000..d18d945
--- /dev/null
+++ b/hyde/layouts/basic/content/blog/happy-post.html
@@ -0,0 +1,150 @@
+---
+title: A Happy Post
+description: >
+ Smile. Laugh.
+created: !!timestamp '2011-02-01 10:00:00'
+tags:
+ - happy
+ - thougts
+---
+
+--- mark image
+
+![Airport]([[!!images/airport.png]])
+
+--- endmark
+
+--- mark excerpt
+
+Lady Malvern was a hearty, happy, healthy, overpowering sort of dashed female,
+not so very tall but making up for it by measuring about six feet from the
+O.P. to the Prompt Side.
+
+--- endmark
+
+She fitted into my biggest arm-chair as if it had
+been built round her by someone who knew they were wearing arm-chairs tight
+about the hips that season. She had bright, bulging eyes and a lot of yellow
+hair, and when she spoke she showed about fifty-seven front teeth. She was one
+of those women who kind of numb a fellow's faculties. She made me feel as if I
+were ten years old and had been brought into the drawing-room in my Sunday
+clothes to say how-d'you-do. Altogether by no means the sort of thing a
+chappie would wish to find in his sitting-room before breakfast.
+
+Motty, the son, was about twenty-three, tall and thin and meek-looking. He had
+the same yellow hair as his mother, but he wore it plastered down and parted
+in the middle. His eyes bulged, too, but they weren't bright. They were a dull
+grey with pink rims. His chin gave up the struggle about half-way down, and he
+didn't appear to have any eyelashes. A mild, furtive, sheepish sort of
+blighter, in short.
+
+"Awfully glad to see you," I said. "So you've popped over, eh? Making a long
+stay in America?"
+
+"About a month. Your aunt gave me your address and told me to be sure and call
+on you."
+
+I was glad to hear this, as it showed that Aunt Agatha was beginning to come
+round a bit. There had been some unpleasantness a year before, when she had
+sent me over to New York to disentangle my Cousin Gussie from the clutches of
+a girl on the music-hall stage. When I tell you that by the time I had
+finished my operations, Gussie had not only married the girl but had gone on
+the stage himself, and was doing well, you'll understand that Aunt Agatha was
+upset to no small extent. I simply hadn't dared go back and face her, and it
+was a relief to find that time had healed the wound and all that sort of thing
+enough to make her tell her pals to look me up. What I mean is, much as I
+liked America, I didn't want to have England barred to me for the rest of my
+natural; and, believe me, England is a jolly sight too small for anyone to
+live in with Aunt Agatha, if she's really on the warpath. So I braced on
+hearing these kind words and smiled genially on the assemblage.
+
+"Your aunt said that you would do anything that was in your power to be of
+assistance to us."
+
+"Rather? Oh, rather! Absolutely!"
+
+"Thank you so much. I want you to put dear Motty up for a little while."
+
+I didn't get this for a moment.
+
+"Put him up? For my clubs?"
+
+"No, no! Darling Motty is essentially a home bird. Aren't you, Motty darling?"
+
+Motty, who was sucking the knob of his stick, uncorked himself.
+
+"Yes, mother," he said, and corked himself up again.
+
+"I should not like him to belong to clubs. I mean put him up here. Have him to
+live with you while I am away."
+
+These frightful words trickled out of her like honey. The woman simply didn't
+seem to understand the ghastly nature of her proposal. I gave Motty the swift
+east-to-west. He was sitting with his mouth nuzzling the stick, blinking at
+the wall. The thought of having this planted on me for an indefinite period
+appalled me. Absolutely appalled me, don't you know. I was just starting to
+say that the shot wasn't on the board at any price, and that the first sign
+Motty gave of trying to nestle into my little home I would yell for the
+police, when she went on, rolling placidly over me, as it were.
+
+There was something about this woman that sapped a chappie's will-power.
+
+"I am leaving New York by the midday train, as I have to pay a visit to
+Sing-Sing prison. I am extremely interested in prison conditions in America.
+After that I work my way gradually across to the coast, visiting the points of
+interest on the journey. You see, Mr. Wooster, I am in America principally on
+business. No doubt you read my book, India and the Indians? My publishers are
+anxious for me to write a companion volume on the United States. I shall not
+be able to spend more than a month in the country, as I have to get back for
+the season, but a month should be ample. I was less than a month in India, and
+my dear friend Sir Roger Cremorne wrote his America from Within after a stay
+of only two weeks. I should love to take dear Motty with me, but the poor boy
+gets so sick when he travels by train. I shall have to pick him up on my
+return."
+
+From where I sat I could see Jeeves in the dining-room, laying the
+breakfast-table. I wished I could have had a minute with him alone. I felt
+certain that he would have been able to think of some way of putting a stop to
+this woman.
+
+"It will be such a relief to know that Motty is safe with you, Mr. Wooster. I
+know what the temptations of a great city are. Hitherto dear Motty has been
+sheltered from them. He has lived quietly with me in the country. I know that
+you will look after him carefully, Mr. Wooster. He will give very little
+trouble." She talked about the poor blighter as if he wasn't there. Not that
+Motty seemed to mind. He had stopped chewing his walking-stick and was sitting
+there with his mouth open. "He is a vegetarian and a teetotaller and is
+devoted to reading. Give him a nice book and he will be quite contented." She
+got up. "Thank you so much, Mr. Wooster! I don't know what I should have done
+without your help. Come, Motty! We have just time to see a few of the sights
+before my train goes. But I shall have to rely on you for most of my
+information about New York, darling. Be sure to keep your eyes open and take
+notes of your impressions! It will be such a help. Good-bye, Mr. Wooster. I
+will send Motty back early in the afternoon."
+
+They went out, and I howled for Jeeves.
+
+"Jeeves! What about it?"
+
+"Sir?"
+
+"What's to be done? You heard it all, didn't you? You were in the dining-room
+most of the time. That pill is coming to stay here."
+
+"Pill, sir?"
+
+"The excrescence."
+
+"I beg your pardon, sir?"
+
+I looked at Jeeves sharply. This sort of thing wasn't like him. It was as if
+he were deliberately trying to give me the pip. Then I understood. The man was
+really upset about that tie. He was trying to get his own back.
+
+"Lord Pershore will be staying here from to-night, Jeeves," I said coldly.
+
+"Very good, sir. Breakfast is ready, sir."
+
+[My Man Jeeves by PG Wodehouse][MMJ]
+
+[MMJ]: http://www.gutenberg.org/cache/epub/8164/pg8164.html
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/blog/index.html b/hyde/layouts/basic/content/blog/index.html
new file mode 100644
index 0000000..d57cb74
--- /dev/null
+++ b/hyde/layouts/basic/content/blog/index.html
@@ -0,0 +1,7 @@
+---
+title: The Basic blog
+extends: listing.j2
+default_block: test
+listable: false
+---
+A
diff --git a/hyde/layouts/basic/content/blog/meta.yaml b/hyde/layouts/basic/content/blog/meta.yaml
new file mode 100644
index 0000000..eebe421
--- /dev/null
+++ b/hyde/layouts/basic/content/blog/meta.yaml
@@ -0,0 +1,3 @@
+extends: blog.j2
+default_block: post
+listable: true
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/blog/sad-post.html b/hyde/layouts/basic/content/blog/sad-post.html
new file mode 100644
index 0000000..57612cb
--- /dev/null
+++ b/hyde/layouts/basic/content/blog/sad-post.html
@@ -0,0 +1,93 @@
+---
+title: A Sad Post
+description: >
+ Something sad happened.
+created: !!timestamp '2010-12-01 10:00:00'
+tags:
+ - sad
+ - thougts
+---
+
+--- mark image
+
+![A Dark Image]([[!!images/dark.png]])
+
+--- endmark
+
+--- mark excerpt
+
+I went and dressed sadly. It will show you pretty well how pipped I was when I
+tell you that I near as a toucher put on a white tie with a dinner-jacket. I
+sallied out for a bit of food more to pass the time than because I wanted it.
+It seemed brutal to be wading into the bill of fare with poor old Bicky headed
+for the breadline.
+
+--- endmark
+
+When I got back old Chiswick had gone to bed, but Bicky was there, hunched up
+in an arm-chair, brooding pretty tensely, with a cigarette hanging out of the
+corner of his mouth and a more or less glassy stare in his eyes. He had the
+aspect of one who had been soaked with what the newspaper chappies call "some
+blunt instrument."
+
+"This is a bit thick, old thing—what!" I said.
+
+He picked up his glass and drained it feverishly, overlooking the fact that it
+hadn't anything in it.
+
+"I'm done, Bertie!" he said.
+
+He had another go at the glass. It didn't seem to do him any good.
+
+"If only this had happened a week later, Bertie! My next month's money was due
+to roll in on Saturday. I could have worked a wheeze I've been reading about
+in the magazine advertisements. It seems that you can make a dashed amount of
+money if you can only collect a few dollars and start a chicken-farm. Jolly
+sound scheme, Bertie! Say you buy a hen—call it one hen for the sake of
+argument. It lays an egg every day of the week. You sell the eggs seven for
+twenty-five cents. Keep of hen costs nothing. Profit practically twenty-five
+cents on every seven eggs. Or look at it another way: Suppose you have a dozen
+eggs. Each of the hens has a dozen chickens. The chickens grow up and have
+more chickens. Why, in no time you'd have the place covered knee-deep in hens,
+all laying eggs, at twenty-five cents for every seven. You'd make a fortune.
+Jolly life, too, keeping hens!" He had begun to get quite worked up at the
+thought of it, but he slopped back in his chair at this juncture with a good
+deal of gloom. "But, of course, it's no good," he said, "because I haven't the
+cash."
+
+"You've only to say the word, you know, Bicky, old top."
+
+"Thanks awfully, Bertie, but I'm not going to sponge on you."
+
+That's always the way in this world. The chappies you'd like to lend money to
+won't let you, whereas the chappies you don't want to lend it to will do
+everything except actually stand you on your head and lift the specie out of
+your pockets. As a lad who has always rolled tolerably free in the right
+stuff, I've had lots of experience of the second class. Many's the time, back
+in London, I've hurried along Piccadilly and felt the hot breath of the
+toucher on the back of my neck and heard his sharp, excited yapping as he
+closed in on me. I've simply spent my life scattering largesse to blighters I
+didn't care a hang for; yet here was I now, dripping doubloons and pieces of
+eight and longing to hand them over, and Bicky, poor fish, absolutely on his
+uppers, not taking any at any price.
+
+"Well, there's only one hope, then."
+
+"What's that?"
+
+"Jeeves."
+
+"Sir?"
+
+There was Jeeves, standing behind me, full of zeal. In this matter of
+shimmering into rooms the chappie is rummy to a degree. You're sitting in the
+old armchair, thinking of this and that, and then suddenly you look up, and
+there he is. He moves from point to point with as little uproar as a jelly
+fish. The thing startled poor old Bicky considerably. He rose from his seat
+like a rocketing pheasant. I'm used to Jeeves now, but often in the days when
+he first came to me I've bitten my tongue freely on finding him unexpectedly
+in my midst.
+
+[My Man Jeeves by PG Wodehouse][MMJ]
+
+[MMJ]: http://www.gutenberg.org/cache/epub/8164/pg8164.html
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/favicon.ico b/hyde/layouts/basic/content/favicon.ico
new file mode 100644
index 0000000..4ec0d29
Binary files /dev/null and b/hyde/layouts/basic/content/favicon.ico differ
diff --git a/hyde/layouts/basic/content/index.html b/hyde/layouts/basic/content/index.html
new file mode 100644
index 0000000..5e073fa
--- /dev/null
+++ b/hyde/layouts/basic/content/index.html
@@ -0,0 +1,6 @@
+---
+title: BASIC - A hyde website
+description: Home page for the BASIC hyde template
+---
+
+Ha Ha
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/media/css/site.css b/hyde/layouts/basic/content/media/css/site.css
new file mode 100644
index 0000000..8cee2d9
--- /dev/null
+++ b/hyde/layouts/basic/content/media/css/site.css
@@ -0,0 +1,191 @@
+* {
+ vertical-align: baseline;
+ font-weight: inherit;
+ font-family: inherit;
+ font-style: inherit;
+ text-decoration:inherit;
+ font-size: 100%;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+:focus {
+ outline: 0;
+}
+
+::-moz-focus-inner {
+ border: 0;
+}
+
+/* clearfix */
+.clear:after {
+ content: ".";
+ display: block;
+ clear: both;
+ visibility: hidden;
+ line-height: 0;
+ height: 0;
+}
+
+.clear {
+ display: block;
+}
+
+
+* html .clear {
+ height: 1%;
+}
+
+a {
+ color: black;
+ text-decoration: underline;
+}
+
+a:hover{
+ color: red;
+}
+
+body{
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ background-color: #efefef;
+ padding: 0;
+ margin: 0;
+ text-shadow: 0px 2px 0px #efefef;
+}
+
+#container{
+ background-color: #eaeaea;
+ width: 640px;
+ margin: 0 auto;
+ padding: 12px;
+-moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */
+-webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */
+ box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */
+ filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */
+ -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */
+}
+
+.banner{
+ border-bottom: 12px solid #ccc;
+ padding: 0 12px;
+}
+
+.banner h1{
+ font-weight: 100;
+ font-size: 32px;
+ line-height: 48px;
+}
+
+.banner h3{
+ color: #666;
+ font-weight: normal;
+ font-size: 16px;
+ line-height: 24px;
+ margin-bottom: 12px;
+}
+
+h1.title{
+ font-size: 24px;
+ line-height: 36px;
+ border-bottom: 1px solid #ccc;
+}
+
+section.content{
+ padding: 12px;
+}
+
+/* listing */
+
+.listing{
+ margin-top: 24px;
+}
+
+.listing img{
+ width: 120px;
+ height: 120px;
+}
+
+.listing li{
+ background-color: #ededed;
+ list-style-type: none;
+ float: left;
+ width: 272px;
+ margin-right: 24px;
+ margin-bottom: 24px;
+ padding: 12px;
+ -moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */
+ -webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */
+ box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */
+ filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */
+ -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */
+
+}
+
+.listing li:nth-child(2){
+ margin-right: 0;
+}
+
+.listing li:nth-child(3){
+ clear: left;
+}
+
+.listing li p{
+ font-size: 10px;
+ line-height: 12px;
+ margin-bottom: 12px;
+}
+
+
+.listing h3{
+ border-bottom: 1px solid #ccc;
+ font-size: 12px;
+ line-height: 18px;
+ margin-bottom: 6px;
+}
+
+.listing time{
+ display:block;
+ border-top: 1px solid #ccc;
+ padding-top: 4px;
+ font-size: 10px;
+}
+
+/* Content */
+
+
+article.post h1{
+ margin-bottom: 24px;
+}
+
+article.post p{
+
+ font-size: 12px;
+ line-height: 24px;
+ margin: 6px 0;
+}
+
+
+article.post img{
+
+ display: block;
+ margin-bottom: 24px;
+}
+
+
+h1 a, h2 a, h3 a{
+ text-decoration: none;
+}
+
+a.backlink:before{
+ content: '\2190';
+}
+
+a.backlink{
+ text-decoration: none;
+ text-shadow: 0px 2px 0px #fff;
+}
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/media/css/syntax.css b/hyde/layouts/basic/content/media/css/syntax.css
new file mode 100644
index 0000000..fa3dfc3
--- /dev/null
+++ b/hyde/layouts/basic/content/media/css/syntax.css
@@ -0,0 +1,59 @@
+.c, .cm { color: #998; font-style: italic } /* Comments */
+.err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.k { font-weight: bold } /* Keyword */
+.o { font-weight: bold } /* Operator */
+.cp { color: #999; font-weight: bold } /* Comment.Preproc */
+.c1 { color: #998; font-style: italic } /* Comment.Single */
+.cs { color: #999; font-weight: bold; font-style: italic } /* Comment.Special */
+.gd { color: #000; background-color: #ffdddd } /* Generic.Deleted */
+.gd .x { color: #000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #a00 } /* Generic.Error */
+.gh { color: #999 } /* Generic.Heading */
+.gi { color: #000; background-color: #ddffdd } /* Generic.Inserted */
+.gi .x { color: #000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.go { color: #888 } /* Generic.Output */
+.gp { color: #555 } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #aaaaaa } /* Generic.Subheading */
+.gt { color: #a00 } /* Generic.Traceback */
+.kc { font-weight: bold } /* Keyword.Constant */
+.kd { font-weight: bold } /* Keyword.Declaration */
+.kp { font-weight: bold } /* Keyword.Pseudo */
+.kr { font-weight: bold } /* Keyword.Reserved */
+.kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.m { color: #099 } /* Literal.Number */
+.s { color: #d14 } /* Literal.String */
+.na { color: #008080 } /* Name.Attribute */
+.nb { color: #0086B3 } /* Name.Builtin */
+.nc { color: #445588; font-weight: bold } /* Name.Class */
+.no { color: #008080 } /* Name.Constant */
+.ni { color: #800080 } /* Name.Entity */
+.ne { color: #900; font-weight: bold } /* Name.Exception */
+.nf { color: #900; font-weight: bold } /* Name.Function */
+.nn { color: #555 } /* Name.Namespace */
+.nt { color: #000080 } /* Name.Tag */
+.nv { color: #008080 } /* Name.Variable */
+.ow { font-weight: bold } /* Operator.Word */
+.w { color: #bbb } /* Text.Whitespace */
+.mf { color: #099 } /* Literal.Number.Float */
+.mh { color: #099 } /* Literal.Number.Hex */
+.mi { color: #099 } /* Literal.Number.Integer */
+.mo { color: #099 } /* Literal.Number.Oct */
+.sb { color: #d14 } /* Literal.String.Backtick */
+.sc { color: #d14 } /* Literal.String.Char */
+.sd { color: #d14 } /* Literal.String.Doc */
+.s2 { color: #d14 } /* Literal.String.Double */
+.se { color: #d14 } /* Literal.String.Escape */
+.sh { color: #d14 } /* Literal.String.Heredoc */
+.si { color: #d14 } /* Literal.String.Interpol */
+.sx { color: #d14 } /* Literal.String.Other */
+.sr { color: #009926 } /* Literal.String.Regex */
+.s1 { color: #d14 } /* Literal.String.Single */
+.ss { color: #990073 } /* Literal.String.Symbol */
+.bp { color: #999 } /* Name.Builtin.Pseudo */
+.vc { color: #008080 } /* Name.Variable.Class */
+.vg { color: #008080 } /* Name.Variable.Global */
+.vi { color: #008080 } /* Name.Variable.Instance */
+.il { color: #099 } /* Literal.Number.Integer.Long */
+
diff --git a/hyde/layouts/basic/content/media/images/airport.png b/hyde/layouts/basic/content/media/images/airport.png
new file mode 100644
index 0000000..55a5c0c
Binary files /dev/null and b/hyde/layouts/basic/content/media/images/airport.png differ
diff --git a/hyde/layouts/basic/content/media/images/dark.png b/hyde/layouts/basic/content/media/images/dark.png
new file mode 100644
index 0000000..7380014
Binary files /dev/null and b/hyde/layouts/basic/content/media/images/dark.png differ
diff --git a/hyde/layouts/basic/content/media/js/libs/dd_belatedpng.js b/hyde/layouts/basic/content/media/js/libs/dd_belatedpng.js
new file mode 100644
index 0000000..6062fb3
--- /dev/null
+++ b/hyde/layouts/basic/content/media/js/libs/dd_belatedpng.js
@@ -0,0 +1,13 @@
+/**
+* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML .
+* Author: Drew Diller
+* Email: drew.diller@gmail.com
+* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/
+* Version: 0.0.8a
+* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
+*
+* Example usage:
+* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector
+* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement
+**/
+var DD_belatedPNG={ns:"DD_belatedPNG",imgSize:{},delay:10,nodesFixed:0,createVmlNameSpace:function(){if(document.namespaces&&!document.namespaces[this.ns]){document.namespaces.add(this.ns,"urn:schemas-microsoft-com:vml")}},createVmlStyleSheet:function(){var b,a;b=document.createElement("style");b.setAttribute("media","screen");document.documentElement.firstChild.insertBefore(b,document.documentElement.firstChild.firstChild);if(b.styleSheet){b=b.styleSheet;b.addRule(this.ns+"\\:*","{behavior:url(#default#VML)}");b.addRule(this.ns+"\\:shape","position:absolute;");b.addRule("img."+this.ns+"_sizeFinder","behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;");this.screenStyleSheet=b;a=document.createElement("style");a.setAttribute("media","print");document.documentElement.firstChild.insertBefore(a,document.documentElement.firstChild.firstChild);a=a.styleSheet;a.addRule(this.ns+"\\:*","{display: none !important;}");a.addRule("img."+this.ns+"_sizeFinder","{display: none !important;}")}},readPropertyChange:function(){var b,c,a;b=event.srcElement;if(!b.vmlInitiated){return}if(event.propertyName.search("background")!=-1||event.propertyName.search("border")!=-1){DD_belatedPNG.applyVML(b)}if(event.propertyName=="style.display"){c=(b.currentStyle.display=="none")?"none":"block";for(a in b.vml){if(b.vml.hasOwnProperty(a)){b.vml[a].shape.style.display=c}}}if(event.propertyName.search("filter")!=-1){DD_belatedPNG.vmlOpacity(b)}},vmlOpacity:function(b){if(b.currentStyle.filter.search("lpha")!=-1){var a=b.currentStyle.filter;a=parseInt(a.substring(a.lastIndexOf("=")+1,a.lastIndexOf(")")),10)/100;b.vml.color.shape.style.filter=b.currentStyle.filter;b.vml.image.fill.opacity=a}},handlePseudoHover:function(a){setTimeout(function(){DD_belatedPNG.applyVML(a)},1)},fix:function(a){if(this.screenStyleSheet){var c,b;c=a.split(",");for(b=0;bn.H){i.B=n.H}d.vml.image.shape.style.clip="rect("+i.T+"px "+(i.R+a)+"px "+i.B+"px "+(i.L+a)+"px)"}else{d.vml.image.shape.style.clip="rect("+f.T+"px "+f.R+"px "+f.B+"px "+f.L+"px)"}},figurePercentage:function(d,c,f,a){var b,e;e=true;b=(f=="X");switch(a){case"left":case"top":d[f]=0;break;case"center":d[f]=0.5;break;case"right":case"bottom":d[f]=1;break;default:if(a.search("%")!=-1){d[f]=parseInt(a,10)/100}else{e=false}}d[f]=Math.ceil(e?((c[b?"W":"H"]*d[f])-(c[b?"w":"h"]*d[f])):parseInt(a,10));if(d[f]%2===0){d[f]++}return d[f]},fixPng:function(c){c.style.behavior="none";var g,b,f,a,d;if(c.nodeName=="BODY"||c.nodeName=="TD"||c.nodeName=="TR"){return}c.isImg=false;if(c.nodeName=="IMG"){if(c.src.toLowerCase().search(/\.png$/)!=-1){c.isImg=true;c.style.visibility="hidden"}else{return}}else{if(c.currentStyle.backgroundImage.toLowerCase().search(".png")==-1){return}}g=DD_belatedPNG;c.vml={color:{},image:{}};b={shape:{},fill:{}};for(a in c.vml){if(c.vml.hasOwnProperty(a)){for(d in b){if(b.hasOwnProperty(d)){f=g.ns+":"+d;c.vml[a][d]=document.createElement(f)}}c.vml[a].shape.stroked=false;c.vml[a].shape.appendChild(c.vml[a].fill);c.parentNode.insertBefore(c.vml[a].shape,c)}}c.vml.image.shape.fillcolor="none";c.vml.image.fill.type="tile";c.vml.color.fill.on=false;g.attachHandlers(c);g.giveLayout(c);g.giveLayout(c.offsetParent);c.vmlInitiated=true;g.applyVML(c)}};try{document.execCommand("BackgroundImageCache",false,true)}catch(r){}DD_belatedPNG.createVmlNameSpace();DD_belatedPNG.createVmlStyleSheet();
\ No newline at end of file
diff --git a/hyde/layouts/basic/content/media/js/libs/jquery-1.5.1.min.js b/hyde/layouts/basic/content/media/js/libs/jquery-1.5.1.min.js
new file mode 100644
index 0000000..14fd647
--- /dev/null
+++ b/hyde/layouts/basic/content/media/js/libs/jquery-1.5.1.min.js
@@ -0,0 +1,16 @@
+/*!
+ * jQuery JavaScript Library v1.5.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Wed Feb 23 13:55:29 2011 -0500
+ */
+(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="