From 28737438172f49d43218baadc1498fef6de200a0 Mon Sep 17 00:00:00 2001 From: Aki Ariga Date: Fri, 14 Jan 2022 21:11:12 -0800 Subject: [PATCH 1/2] Use directory name if md name is 'index' --- prelims/processor/recommender.py | 2 ++ prelims/processor/tests/test_recommender.py | 23 ++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/prelims/processor/recommender.py b/prelims/processor/recommender.py index 70ca5e0..ace5539 100644 --- a/prelims/processor/recommender.py +++ b/prelims/processor/recommender.py @@ -109,4 +109,6 @@ def __path_to_permalink(self, path): excluding a file extension. """ file, _ = os.path.splitext(os.path.basename(path)) + if file == 'index': + file = os.path.basename(os.path.dirname(path)) return urljoin(f'{self.permalink_base}/', f'{file}/') diff --git a/prelims/processor/tests/test_recommender.py b/prelims/processor/tests/test_recommender.py index 8be4caf..9dfafcb 100644 --- a/prelims/processor/tests/test_recommender.py +++ b/prelims/processor/tests/test_recommender.py @@ -14,18 +14,23 @@ def setUp(self): os.path.join(os.sep, 'path', 'to', 'articles', 'a.md')) self.path_b = os.path.abspath( os.path.join(os.sep, 'path', 'to', 'articles', 'b.md')) + self.path_c = os.path.abspath( + os.path.join(os.sep, 'path', 'to', 'articles', 'c', 'index.md')) # urls self.permalink_base = '/diary/post' self.permalink_a = '/diary/post/a/' self.permalink_b = '/diary/post/b/' + self.permalink_c = '/diary/post/c/' def test_process(self): post_a = Post(self.path_a, {'title': 'foo'}, '', 'Hello world.', 'utf-8') post_b = Post(self.path_b, {'title': 'bar'}, '', 'This is a pen.', 'utf-8') - posts = [post_a, post_b] + post_c = Post(self.path_c, {'title': 'buzz'}, + '', 'There is a man in the high castle.', 'utf-8') + posts = [post_a, post_b, post_c] recommender = Recommender(permalink_base=self.permalink_base, stop_words='english') @@ -36,14 +41,22 @@ def test_process(self): post_a.front_matter['keywords']) self.assertEqual(post_a.front_matter, { 'title': 'foo', - 'recommendations': [self.permalink_b], - 'keywords': ['hello', 'pen', 'world'] + 'recommendations': [self.permalink_c, self.permalink_b], + 'keywords': ['castle', 'hello', 'high', 'man', 'pen', 'world'] }) post_b.front_matter['keywords'] = sorted( post_b.front_matter['keywords']) self.assertEqual(post_b.front_matter, { 'title': 'bar', - 'recommendations': [self.permalink_a], - 'keywords': ['hello', 'pen', 'world'] + 'recommendations': [self.permalink_c, self.permalink_a], + 'keywords': ['castle', 'hello', 'high', 'man', 'pen', 'world'] + }) + + post_c.front_matter['keywords'] = sorted( + post_c.front_matter['keywords']) + self.assertEqual(post_c.front_matter, { + 'title': 'buzz', + 'recommendations': [self.permalink_b, self.permalink_a], + 'keywords': ['castle', 'hello', 'high', 'man', 'pen', 'world'] }) From ac77308f1ad38d1c30d8c380f75fe755a8827099 Mon Sep 17 00:00:00 2001 From: Aki Ariga Date: Fri, 14 Jan 2022 21:11:42 -0800 Subject: [PATCH 2/2] Stop sorting frontmatter keys --- prelims/post.py | 3 ++- prelims/tests/test_post.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/prelims/post.py b/prelims/post.py index 39fe128..3027001 100644 --- a/prelims/post.py +++ b/prelims/post.py @@ -52,7 +52,8 @@ def save(self): content = self.raw_content.replace( m.group(1), yaml.dump(self.front_matter, allow_unicode=True, - default_flow_style=flow_style) + default_flow_style=flow_style, + sort_keys=False) ) f.write(content) diff --git a/prelims/tests/test_post.py b/prelims/tests/test_post.py index 5c0036d..0af6977 100644 --- a/prelims/tests/test_post.py +++ b/prelims/tests/test_post.py @@ -8,6 +8,7 @@ content = """ --- aaa: xxx +ccc: xxx bbb: [xxx] --- @@ -50,7 +51,7 @@ def tearDown(self): def test_load(self): post = Post.load(self.mdfile.name, "utf-8") self.assertEqual(post.path, self.mdfile.name) - self.assertEqual(post.front_matter, {'aaa': 'xxx', 'bbb': ['xxx']}) + self.assertEqual(post.front_matter, {'aaa': 'xxx', 'ccc': 'xxx', 'bbb': ['xxx']}) self.assertEqual(post.raw_content, content) self.assertEqual(post.content, 'Hello world.') @@ -75,7 +76,7 @@ def test_update(self): self.assertEqual(post.path, self.mdfile.name) self.assertEqual(post.front_matter, - {'aaa': 'xxx', 'bbb': ['zzz'], 'foo': 'bar'}) + {'aaa': 'xxx', 'ccc': 'xxx', 'bbb': ['zzz'], 'foo': 'bar'}) def test_save(self): post = Post.load(self.mdfile.name, "utf-8") @@ -85,6 +86,7 @@ def test_save(self): expected_content = """ --- aaa: xxx +ccc: xxx bbb: [xxx] foo: bar ---