方針 EditToHeaderToFooter

  • 従来の行末にある「~」で行われる改行は、行頭書式に統一すべし。(要語先行)
    • 統一した場合、Wikiコードから書式を読むとき、行頭の縦読みだけで済む。
    • Wikiの行末書式は「~」しかない ⇔ 行頭書式が殆ど
  • 行頭が「;」で始まる「SC改行改段書式/SemiColon改行改段書式」を導入
    • 多くのプログラミングで用いられる文終了記号「;」を次の文の開始記号と再解釈し、行頭に持ってきた。

仕様 EditToHeaderToFooter

  • 行頭が「;.」の行は無書式として、何もせずに前の行に続ける。
  • 行頭が「;,」の行は行頭で改行する。
  • 行頭が「;:」の行は行頭で改段する。空行を挿入せず、他の行頭書式に干渉しない。(形式段落用)
  • 行頭が「;;」の行は行頭で改段する。空行を挿入し、他の行頭書式を終わらす。(意味段落用)
  • 行頭が「;」 は改行の省略表現。(文節区切りで改行する体裁用)
  • 行頭改行が段頭に来た場合は無効化する。
  • 区切りの強いさは、点の大きさと数に比例する。
    • Cなど多くのプログラミング言語での区切りの強い順になっている。
    • .」はPHPでは文字列連結演算子に使われる ⇒ 行結合

改造 EditToHeaderToFooter

  • lib/convert_html.php で、class Bodyfunction parsewhile (!empty($lines)) 中の下の方に以下のコードを変更・挿入。
    これより、段頭の改行が無効化される。
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
    
      // Body
      class Body extends Element
      {
          ...
          
          function parse(& $lines)
          {
              ...
              
              while (!empty($lines))
              {
                  ...
                  
                  // The first character
    -             $head = $line{0};
    +             $head  = substr($line,0,1);
    +             $head2 = substr($line,0,2);
    +             
    +             // ; Format
    +             if ($head2 == ';.') {// SCNF: SemiColon-NoFormat
    +                 $this->last = & $this->last->add(new Inline(substr($line, 2)));
    +                 continue;
    +             }
    +             if ($head2 == ';,') {// SCNL: SemiCcolon-NewLine
    +                 $this->last = & $this->last->add(new Inline("\r".substr($line, 2)));    // Same as Default to Add Text
    +                 continue;
    +             }
    +             if ($head2 == ';:') {// SCNP: SemiColon-NewParagraph (Week)
    +                 $this->last = & $this->last->add(new Paragraph(' '.substr($line, 2)));  // Same as ~-Format to Add Paragraph
    +                 continue;
    +             }
    +             if ($head2 == ';;') {// SCNP: SemiColon-NewParagraph
    +                 $this->last = & $this->last->add(new EmptyLine($this->last));           // Same as Empty Line to add Inter-line Space
    +                 $this->last = & $this->last->add(new Paragraph(' '.substr($line, 2)));  // Same as ~-Format to Add Paragraph
    +                 continue;
    +             }
    +             if ($head == ';') {// SCNL: SemiCcolon-NewLine // Equal to ($head2 == ';,')
    +                 $this->last = & $this->last->add(new Inline("\r".substr($line, 1)));
    +                 continue;
    +             }
    
    • -」で始まる行は class Body からの削除。
    • +」で始まる行は class Body への追加。
  • lib/convert_html.php で、class Inlinefunction & toPara に以下のコードを挿入。
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
    
      class Inline extends Element
      {
          ...
          function & toPara($class = '')
          {
              $obj = & new Paragraph('', $class);
              $obj->insert($this);
    +         
    +         if (substr($this->elements[0],0,6)=='<br />'){          // To cancel SCNL which is after empty-line.
    +             $this->elements[0] = substr($this->elements[0],7);
    +         }
              return $obj;
          }
      }
    
リロード   新規 編集 凍結 差分 添付 複製 改名   初基 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2015.0315 (日) 1233.0100 (774d)