From 1cf3a46b3353570c9d15d9cfe83287b67b32f42c Mon Sep 17 00:00:00 2001 From: Lakshmi Vyasarajan Date: Fri, 11 Mar 2011 14:39:46 +0530 Subject: [PATCH] Initial tagger tests added --- hyde/ext/plugins/tagger.py | 61 ++++++++ .../basic/content/blog/angry-post.html | 2 +- hyde/template.py | 32 ++-- hyde/tests/ext/test_tagger.py | 84 ++++++++++ .../test_tagger/content/blog/angry-post.html | 133 ++++++++++++++++ .../content/blog/another-sad-post.html | 87 +++++++++++ .../test_tagger/content/blog/happy-post.html | 144 ++++++++++++++++++ .../test_tagger/content/blog/sad-post.html | 93 +++++++++++ hyde/tests/sites/test_tagger/layout/root.j2 | 7 + .../sites/test_tagger/layout/tagged_posts.j2 | 9 ++ hyde/tests/sites/test_tagger/site.yaml | 31 ++++ 11 files changed, 668 insertions(+), 15 deletions(-) create mode 100644 hyde/ext/plugins/tagger.py create mode 100644 hyde/tests/ext/test_tagger.py create mode 100644 hyde/tests/sites/test_tagger/content/blog/angry-post.html create mode 100644 hyde/tests/sites/test_tagger/content/blog/another-sad-post.html create mode 100644 hyde/tests/sites/test_tagger/content/blog/happy-post.html create mode 100644 hyde/tests/sites/test_tagger/content/blog/sad-post.html create mode 100644 hyde/tests/sites/test_tagger/layout/root.j2 create mode 100644 hyde/tests/sites/test_tagger/layout/tagged_posts.j2 create mode 100644 hyde/tests/sites/test_tagger/site.yaml diff --git a/hyde/ext/plugins/tagger.py b/hyde/ext/plugins/tagger.py new file mode 100644 index 0000000..dc5e9da --- /dev/null +++ b/hyde/ext/plugins/tagger.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" +Contains classes and utilities related to tagging +resources in hyde. +""" +import re +from hyde.model import Expando +from hyde.plugin import Plugin +from hyde.site import Node, Resource +from hyde.util import add_method, add_property, pairwalk + +from collections import namedtuple +from functools import partial +from itertools import ifilter, izip, tee, product +from operator import attrgetter + + +class TaggerPlugin(Plugin): + """ + Tagger plugin for hyde. Adds the ability to do + tag resources and search based on the tags. + + Configuration example + --------------------- + #yaml + sorter: + kind: + atts: source.kind + tagger: + blog: + sorter: kind # How to sort the resources in a tag + source: blog # The source folder to look for resources + target: blog/tags # The target folder to deploy the archives + """ + def __init__(self, site): + super(GrouperPlugin, self).__init__(site) + + def begin_site(self): + """ + Initialize plugin. Add the specified groups to the + site context variable. + """ + config = self.site.config + if not hasattr(config, 'grouper'): + return + if not hasattr(self.site, 'grouper'): + self.site.grouper = {} + + for name, grouping in self.site.config.grouper.__dict__.items(): + grouping.name = name + prev_att = 'prev_in_%s' % name + next_att = 'next_in_%s' % name + setattr(Resource, prev_att, None) + setattr(Resource, next_att, None) + self.site.grouper[name] = Group(grouping) + walker = Group.walk_resources( + self.site.content, self.site.grouper[name]) + + for prev, next in pairwalk(walker): + setattr(next, prev_att, prev) + setattr(prev, next_att, next) \ No newline at end of file diff --git a/hyde/layouts/basic/content/blog/angry-post.html b/hyde/layouts/basic/content/blog/angry-post.html index 2bbf111..da6b332 100644 --- a/hyde/layouts/basic/content/blog/angry-post.html +++ b/hyde/layouts/basic/content/blog/angry-post.html @@ -67,7 +67,7 @@ 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——" +knowing that you know her. Then you come along" "But how can I work it that way?" diff --git a/hyde/template.py b/hyde/template.py index 78f9693..c507dac 100644 --- a/hyde/template.py +++ b/hyde/template.py @@ -48,26 +48,22 @@ class Template(object): @abc.abstractmethod def configure(self, site, engine): + """ - The site object should contain a config attribute. The config object is - a simple YAML object with required settings. The template implementations - are responsible for transforming this object to match the `settings` - required for the template engines. + The site object should contain a config attribute. The config object + is a simple YAML object with required settings. The template + implementations are responsible for transforming this object to match + the `settings` required for the template engines. The engine is an informal protocol to provide access to some hyde internals. - The preprocessor and postprocessor attributes must contain the - functions that trigger the hyde plugins to preprocess the template - after load and postprocess it after it is processed and code is generated. - - Note that the processors must only be used when referencing templates, - for example, using the include tag. The regular preprocessing and - post processing logic is handled by hyde. + The preprocessor attribute must contain the function that trigger the + hyde plugins to preprocess the template after load. - A context_for_path attribute must contain the function that returns the - context object that is populated with the appropriate variables for the given - path. + A context_for_path attribute must contain the function that returns + the context object that is populated with the appropriate variables + for the given path. """ return @@ -78,6 +74,14 @@ class Template(object): """ return None + @abc.abstractmethod + def render_resource(self, resource, context): + """ + This function must load the file represented by the resource + object and return the rendered text. + """ + return '' + @abc.abstractmethod def render(self, text, context): """ diff --git a/hyde/tests/ext/test_tagger.py b/hyde/tests/ext/test_tagger.py new file mode 100644 index 0000000..a7cb088 --- /dev/null +++ b/hyde/tests/ext/test_tagger.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +""" +Use nose +`$ pip install nose` +`$ nosetests` +""" +from hyde.fs import File, Folder +from hyde.generator import Generator +from hyde.site import Site + +from hyde.tests.util import assert_html_equals +import yaml + +TEST_SITE = File(__file__).parent.parent.child_folder('_test') + +class TestTagger(object): + + def setUp(self): + TEST_SITE.make() + TEST_SITE.parent.child_folder( + 'sites/test_tagger').copy_contents_to(TEST_SITE) + self.s = Site(TEST_SITE) + self.deploy = TEST_SITE.child_folder('deploy') + + + def tearDown(self): + TEST_SITE.delete() + + + def test_tagger_walker(self): + gen = Generator(self.s) + gen.load_site_if_needed() + + tags = self.s.taggger['blog'].tags + + assert tags.length == 5 + + for tag in ['sad', 'happy', 'angry', 'thoughts', 'events']: + assert tag in tags + + # sad_posts = [post.name for post in + # self.s.content.walk_resources_tagged_with('sad')] + # assert sad_posts.length == 2 + # assert "sad-post.html" in sad_posts + # assert "another-sad-post.html" in sad_posts + # + # happy_posts = [post.name for post in + # self.s.content.walk_resources_tagged_with('happy')] + # assert happy_posts.length == 1 + # assert "happy-post.html" in happy_posts + # + # angry_posts = [post.name for post in + # self.s.content.walk_resources_tagged_with('angry')] + # assert angry_posts.length == 1 + # assert "angry-post.html" in angry_posts + + # sad_thought_posts = [post.name for post in + # self.s.content.walk_resources_tagged_with('sad')] + # assert sad_posts.length == 2 + # assert "sad-post.html" in sad_posts + # assert "another-sad-post.html" in sad_posts + + + + + # def test_tagger_archives_generated(): + # gen = Generator(self.s) + # gen.load_site_if_needed() + # gen.load_template_if_needed() + # gen.generate_all() + # tags_folder = self.deploy.child_folder('blog/tags') + # + # blog_node = self.s.node_from_relative_path('blog') + # res_by_tag = + # for resource in blog_node.walk_resources(): + # + # + # assert tags_folder.exists + # tags = ['sad', 'happy', 'angry', 'thoughts'] + # + # archives = (File(tags_folder.child("%s.html" % tag)) for tag in tags) + # for archive in archives: + # assert archive.exists + # assert diff --git a/hyde/tests/sites/test_tagger/content/blog/angry-post.html b/hyde/tests/sites/test_tagger/content/blog/angry-post.html new file mode 100644 index 0000000..681a1b3 --- /dev/null +++ b/hyde/tests/sites/test_tagger/content/blog/angry-post.html @@ -0,0 +1,133 @@ +--- +title: An Angry Post +description: > + Temper. Temper. Temper. +created: !!timestamp '2011-01-01 10:00:00' +tags: + - angry + - thoughts +--- + +--- 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/tests/sites/test_tagger/content/blog/another-sad-post.html b/hyde/tests/sites/test_tagger/content/blog/another-sad-post.html new file mode 100644 index 0000000..5275ba3 --- /dev/null +++ b/hyde/tests/sites/test_tagger/content/blog/another-sad-post.html @@ -0,0 +1,87 @@ +--- +title: Another Sad Post +description: > + Something else sad happened. +created: !!timestamp '2011-03-01 10:00:00' +tags: + - sad + - events +--- + +--- 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/tests/sites/test_tagger/content/blog/happy-post.html b/hyde/tests/sites/test_tagger/content/blog/happy-post.html new file mode 100644 index 0000000..c8f5f3f --- /dev/null +++ b/hyde/tests/sites/test_tagger/content/blog/happy-post.html @@ -0,0 +1,144 @@ +--- +title: A Happy Post +description: > + Smile. Laugh. +created: !!timestamp '2011-02-01 10:00:00' +tags: + - happy + - thoughts +--- + +--- 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/tests/sites/test_tagger/content/blog/sad-post.html b/hyde/tests/sites/test_tagger/content/blog/sad-post.html new file mode 100644 index 0000000..d6739e4 --- /dev/null +++ b/hyde/tests/sites/test_tagger/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 + - thoughts +--- + +--- 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/tests/sites/test_tagger/layout/root.j2 b/hyde/tests/sites/test_tagger/layout/root.j2 new file mode 100644 index 0000000..751bb80 --- /dev/null +++ b/hyde/tests/sites/test_tagger/layout/root.j2 @@ -0,0 +1,7 @@ + + + {% block content -%} + + {%- endblock %} + + \ No newline at end of file diff --git a/hyde/tests/sites/test_tagger/layout/tagged_posts.j2 b/hyde/tests/sites/test_tagger/layout/tagged_posts.j2 new file mode 100644 index 0000000..19f9384 --- /dev/null +++ b/hyde/tests/sites/test_tagger/layout/tagged_posts.j2 @@ -0,0 +1,9 @@ +{% if tag and tag.resources -%} + +{%- endif %} \ No newline at end of file diff --git a/hyde/tests/sites/test_tagger/site.yaml b/hyde/tests/sites/test_tagger/site.yaml new file mode 100644 index 0000000..1395da1 --- /dev/null +++ b/hyde/tests/sites/test_tagger/site.yaml @@ -0,0 +1,31 @@ +mode: development +media_root: media # Relative path from content folder. +media_url: /media # URL where the media files are served from. +base_url: / # The base url for autogenerated links. +plugins: + - hyde.ext.plugins.meta.MetaPlugin + - hyde.ext.plugins.auto_extend.AutoExtendPlugin + - hyde.ext.plugins.sorter.SorterPlugin + - hyde.ext.plugins.tagger.TaggerPlugin + - hyde.ext.plugins.textlinks.TextlinksPlugin +meta: + nodemeta: meta.yaml + created: !!timestamp 2010-01-01 00:00:00 + extends: root.j2 + default_block: content +sorter: + time: + attr: + - meta.created + reverse: true + filters: + source.kind: html + meta.listable: true +tagger: + blog: + sorter: time + archives: + template: tagged_posts.j2 + source: blog + target: blog/tags + archive_extension: html \ No newline at end of file