• R/O
  • SSH
  • HTTPS

catalpa: Commit


Commit MetaInfo

Revisão100 (tree)
Hora2021-09-30 15:17:02
Autorhirukawa_ryo

Mensagem de Log

* catalpa 0.8.7
ブログ形式での固定ページ対応のバグを修正しました。

Mudança Sumário

Diff

--- catalpa/trunk/src/main/java/net/osdn/catalpa/addon/blog/BlogAddOn.java (revision 99)
+++ catalpa/trunk/src/main/java/net/osdn/catalpa/addon/blog/BlogAddOn.java (revision 100)
@@ -118,11 +118,9 @@
118118 factory = createFactory(inputPath, outputPath);
119119 if(factory.hasDraft) {
120120 //draft template
121- context.getSystemDataModel().put("template", "draft.ftl");
122121 options.put("_DRAFT", true);
123122 } else {
124123 //default template
125- context.getSystemDataModel().put("template", "post.ftl");
126124 options.remove("_DRAFT");
127125 }
128126 options.remove("_DEFAULT_URL");
@@ -180,16 +178,26 @@
180178 */
181179 @Override
182180 public void execute(Context context) throws IOException, TemplateException {
183- // 記事以外のファイルは処理せずに復帰します。(記事以外のファイルとは画像ファイルや記事ではない .md などです。)
184181 if(!factory.containsPost(context.getInputPath())) {
185182 if(Post.isApplicable(context.getInputPath())) {
186- // 記事として受理可能な拡張子のファイル(つまり記事ではない .md ということになります。)の場合は、
187- // 既定のテンプレートを post.ftl ではなく default.ftl に変更します。
188- context.getSystemDataModel().put("template", "default.ftl");
183+ if(factory.getNonPosts().contains(context.getInputPath())) {
184+ // 記事以外のファイルには default.ftl を適用します。
185+ context.getSystemDataModel().put("template", "default.ftl");
186+ } else {
187+ // 記事に含まれていないファイルは出力しません。
188+ // これには draft 記事を書いているときのその他の通常記事が該当します。
189+ context.setOutputPath(null);
190+ }
189191 }
190192 return;
191193 }
192194
195+ if(factory.hasDraft) {
196+ context.getSystemDataModel().put("template", "draft.ftl");
197+ } else {
198+ context.getSystemDataModel().put("template", "post.ftl");
199+ }
200+
193201 Post post = factory.getPostBy(context.getInputPath());
194202
195203 blogDataModel.put("post", post);
@@ -424,6 +432,7 @@
424432 private Path inputPath;
425433 private Map<String, Category> categories = new HashMap<String, Category>();
426434 private Map<Path, Post> posts = new HashMap<Path, Post>();
435+ private Set<Path> nonPosts = new LinkedHashSet<>();
427436 private boolean hasDraft = false;
428437
429438 public Factory(Path inputPath) {
@@ -437,6 +446,10 @@
437446 public List<Post> getPosts() {
438447 return new ArrayList<Post>(posts.values());
439448 }
449+
450+ public Set<Path> getNonPosts() {
451+ return nonPosts;
452+ }
440453
441454 public boolean containsCategory(String text) {
442455 String name = text;
@@ -537,7 +550,11 @@
537550 blocks.put("content", blocks.remove(null));
538551 }
539552 String content = blocks.get("content");
540-
553+
554+ // 日付(date)の指定されていないファイルは記事以外のファイルとして分類します。
555+ if(map.get("date") == null) {
556+ nonPosts.add(path);
557+ }
541558 //
542559 if(map.get("date") != null && map.get("title") != null && content != null) {
543560 LocalDate date;
Show on old repository browser