• R/O
  • SSH
  • HTTPS

catalpa: Commit


Commit MetaInfo

Revisão110 (tree)
Hora2022-09-08 21:20:59
Autorhirukawa_ryo

Mensagem de Log

* catalpa 0.9
半角スペースのみで構成される行を垂直スペース用の div として出力するようにしました。

Mudança Sumário

Diff

--- catalpa/trunk/samples/blog2/css/markdown.css (revision 109)
+++ catalpa/trunk/samples/blog2/css/markdown.css (revision 110)
@@ -1,5 +1,5 @@
11 /*
2- * Heading
2+ * ヘディング(見出し)
33 */
44 .markdown h1 {
55 margin-block-start: 3rem;
@@ -57,7 +57,7 @@
5757
5858
5959 /*
60- * パラグラフ
60+ * パラグラフ(段落)
6161 */
6262 .markdown p {
6363 margin: 1rem 0;
@@ -494,7 +494,7 @@
494494 ruby[data-rt]::before {
495495 content: attr(data-rt);
496496 position: absolute;
497- top: -1em;
497+ top: -0.75em;
498498 left: -2em;
499499 right: -2em;
500500 font-size: 0.5em;
@@ -505,3 +505,238 @@
505505 ruby[data-rt] rt {
506506 display: none;
507507 }
508+
509+
510+/*
511+ * その他・汎用
512+ */
513+.m-0 {
514+ margin: 0 !important;
515+}
516+.m-1 {
517+ margin: 1em !important;
518+}
519+.m-2 {
520+ margin: 2em !important;
521+}
522+.m-3 {
523+ margin: 3em !important;
524+}
525+.m-auto {
526+ margin: auto !important;
527+}
528+.mt-0 {
529+ margin-top: 0 !important;
530+}
531+.mt-1 {
532+ margin-top: 1em !important;
533+}
534+.mt-2 {
535+ margin-top: 2em !important;
536+}
537+.mt-3 {
538+ margin-top: 3em !important;
539+}
540+.mt-auto {
541+ margin-top: auto !important;
542+}
543+.mt-0 {
544+ margin-bottom: 0 !important;
545+}
546+.mb-1 {
547+ margin-bottom: 1em !important;
548+}
549+.mb-2 {
550+ margin-bottom: 2em !important;
551+}
552+.mb-3 {
553+ margin-bottom: 3em !important;
554+}
555+.mb-auto {
556+ margin-bottom: auto !important;
557+}
558+.ml-0 {
559+ margin-left: 0 !important;
560+}
561+.ml-1 {
562+ margin-left: 1em !important;
563+}
564+.ml-2 {
565+ margin-left: 2em !important;
566+}
567+.ml-3 {
568+ margin-left: 3em !important;
569+}
570+.ml-auto {
571+ margin-left: auto !important;
572+}
573+.mr-0 {
574+ margin-right: 0 !important;
575+}
576+.mr-1 {
577+ margin-right: 1em !important;
578+}
579+.mr-2 {
580+ margin-right: 2em !important;
581+}
582+.mr-3 {
583+ margin-right: 3em !important;
584+}
585+.mr-auto {
586+ margin-right: auto !important;
587+}
588+.mx-0, .mh-0 {
589+ margin-left: 0 !important;
590+ margin-right: 0 !important;
591+}
592+.mx-1 .mh-1 {
593+ margin-left: 1em !important;
594+ margin-right: 1em !important;
595+}
596+.mx-2, .mh-2 {
597+ margin-left: 2em !important;
598+ margin-right: 2em !important;
599+}
600+.mx-3, .mh-3 {
601+ margin-left: 3em !important;
602+ margin-right: 3em !important;
603+}
604+.mx-auto, .mh-auto {
605+ margin-left: auto !important;
606+ margin-right: auto !important;
607+}
608+.my-0, .mv-0 {
609+ margin-top: 0 !important;
610+ margin-bottom: 0 !important;
611+}
612+.my-1 .mv-1 {
613+ margin-top: 1em !important;
614+ margin-bottom: 1em !important;
615+}
616+.my-2, .mv-2 {
617+ margin-top: 2em !important;
618+ margin-bottom: 2em !important;
619+}
620+.my-3, .mv-3 {
621+ margin-top: 3em !important;
622+ margin-bottom: 3em !important;
623+}
624+.my-auto, .my-auto {
625+ margin-top: auto !important;
626+ margin-bottom: auto !important;
627+}
628+.p-0 {
629+ padding: 0 !important;
630+}
631+.p-1 {
632+ padding: 1em !important;
633+}
634+.p-2 {
635+ padding: 2em !important;
636+}
637+.p-3 {
638+ padding: 3em !important;
639+}
640+.p-auto {
641+ padding: auto !important;
642+}
643+.pt-0 {
644+ padding-top: 0 !important;
645+}
646+.pt-1 {
647+ padding-top: 1em !important;
648+}
649+.pt-2 {
650+ padding-top: 2em !important;
651+}
652+.pt-3 {
653+ padding-top: 3em !important;
654+}
655+.pt-auto {
656+ padding-top: auto !important;
657+}
658+.pt-0 {
659+ padding-bottom: 0 !important;
660+}
661+.pb-1 {
662+ padding-bottom: 1em !important;
663+}
664+.pb-2 {
665+ padding-bottom: 2em !important;
666+}
667+.pb-3 {
668+ padding-bottom: 3em !important;
669+}
670+.pb-auto {
671+ padding-bottom: auto !important;
672+}
673+.pl-0 {
674+ padding-left: 0 !important;
675+}
676+.pl-1 {
677+ padding-left: 1em !important;
678+}
679+.pl-2 {
680+ padding-left: 2em !important;
681+}
682+.pl-3 {
683+ padding-left: 3em !important;
684+}
685+.pl-auto {
686+ padding-left: auto !important;
687+}
688+.pr-0 {
689+ padding-right: 0 !important;
690+}
691+.pr-1 {
692+ padding-right: 1em !important;
693+}
694+.pr-2 {
695+ padding-right: 2em !important;
696+}
697+.pr-3 {
698+ padding-right: 3em !important;
699+}
700+.pr-auto {
701+ padding-right: auto !important;
702+}
703+.px-0, .ph-0 {
704+ padding-left: 0 !important;
705+ padding-right: 0 !important;
706+}
707+.px-1 .ph-1 {
708+ padding-left: 1em !important;
709+ padding-right: 1em !important;
710+}
711+.px-2, .ph-2 {
712+ padding-left: 2em !important;
713+ padding-right: 2em !important;
714+}
715+.px-3, .ph-3 {
716+ padding-left: 3em !important;
717+ padding-right: 3em !important;
718+}
719+.px-auto, .ph-auto {
720+ padding-left: auto !important;
721+ padding-right: auto !important;
722+}
723+.py-0, .pv-0 {
724+ padding-top: 0 !important;
725+ padding-bottom: 0 !important;
726+}
727+.py-1 .pv-1 {
728+ padding-top: 1em !important;
729+ padding-bottom: 1em !important;
730+}
731+.py-2, .pv-2 {
732+ padding-top: 2em !important;
733+ padding-bottom: 2em !important;
734+}
735+.py-3, .pv-3 {
736+ padding-top: 3em !important;
737+ padding-bottom: 3em !important;
738+}
739+.py-auto, .pv-auto {
740+ padding-top: auto !important;
741+ padding-bottom: auto !important;
742+}
--- catalpa/trunk/src/main/java/net/osdn/catalpa/freemarker/MarkdownDirective.java (revision 109)
+++ catalpa/trunk/src/main/java/net/osdn/catalpa/freemarker/MarkdownDirective.java (revision 110)
@@ -1,7 +1,10 @@
11 package net.osdn.catalpa.freemarker;
22
3+import java.io.BufferedReader;
34 import java.io.IOException;
5+import java.io.StringReader;
46 import java.io.StringWriter;
7+import java.math.BigDecimal;
58 import java.util.Iterator;
69 import java.util.Map;
710 import java.util.Objects;
@@ -97,6 +100,39 @@
97100 input = writer.toString();
98101 }
99102
103+ // ブランク行(半角スペース・タブのみで構成されている行)を垂直スペース用の div に変換します。
104+ // 最初の半角スペースで構成される行は高さ 0 の垂直余白になります。(マージン相殺が無効になるのでこれでも高さが増えます。)
105+ // さらに半角スペースで構成される行が続くと半角スペース 1つごとに高さ 0.25em の垂直余白になります。
106+ try(BufferedReader reader = new BufferedReader(new StringReader(input))) {
107+ StringBuilder sb = new StringBuilder();
108+ String line;
109+ boolean isContinuousVerticalSpace = false;
110+ while((line = reader.readLine()) != null) {
111+ if(!line.isEmpty() && line.isBlank()) {
112+ int space = 0;
113+ for(int i = 0; i < line.length(); i++) {
114+ if(line.charAt(i) == '\u0020') { // 半角スペース
115+ space++;
116+ }
117+ }
118+ if(space > 0) {
119+ if(!isContinuousVerticalSpace) {
120+ sb.append("\n<div class=\"vspace\" data-length=\"0\" style=\"margin-block-start:-1px;height:1px\"></div>\n");
121+ isContinuousVerticalSpace = true;
122+ } else {
123+ String em = BigDecimal.valueOf(space).divide(BigDecimal.valueOf(4)).toPlainString() + "em";
124+ sb.append("\n<div class=\"vspace\" data-length=\"" + space + "\" style=\"height:" + em + "\"></div>\n");
125+ }
126+ }
127+ } else {
128+ sb.append(line);
129+ isContinuousVerticalSpace = false;
130+ }
131+ sb.append('\n');
132+ }
133+ input = sb.toString();
134+ }
135+
100136 Document document = parser.parse(input);
101137
102138 String previousRelativeUrlPrefix = null;
Show on old repository browser