◀マクロトップへ
  • 609 プレーンテキストをWZ階層付テキストに変換するマクロ
    • 610 Re:プレーンテキストをWZ階層付テキストに変換するマクロ
      • 611 Re2:プレーンテキストをWZ階層付テキストに変換するマクロ
        • 612 Re3:プレーンテキストをWZ階層付テキストに変換するマクロ
          • 613 Re4:プレーンテキストをWZ階層付テキストに変換するマクロ
  • [609] プレーンテキストをWZ階層付テキストに変換するマクロ ysi 2017年01月28日 02:01

    編集中のプレーンテキストを、インデントに沿ってWZ階層付テキストに変換します。
    プレーンテキストを直接、アウトライン解析できれば良いのですが、pluginを作れないので、このマクロで凌いでいます。
    Plain2WZTree.vbs:編集中のプレーンテキストをWZ階層付テキストに変換
    WZTree2Plain.vbs:編集中のWZ階層付テキストをプレーンテキストに変換

    -----------------------------------
    Plain2WZTree.vbs
    -----------------------------------
    'プレーンテキストをWZ階層付テキストに変換
    Option Explicit
    Dim aIndent_positions() 'インデント位置
    ReDim Preserve aIndent_positions(0)
    aIndent_positions(0) = -1
    Dim nJJ
    Dim nTabWidth : nTabWidth = ChangeTabWidth(0) 'タブ幅
    'プレーンテキストをWZ階層付テキストに変換
    For nJJ = 1 To GetLineCount( 0 )
    Dim xLine : xLine = GetLineStr( nJJ )
    '改行を削除
    xLine = Replace(xLine, vbNewLine, "")
    Dim nII
    Dim nBol_Space : nBol_Space = 0 '行頭スペースの個数
    '行頭スペースの個数を数える
    For nII = 1 To Len(xLine)
    '全角空白はスペース2個分
    If Mid(xLine,nII,1) = " " Then
    nBol_Space = nBol_Space + 1
    Else
    'タブ文字は桁数を計算
    If Mid(xLine,nII,1) = vbTab Then
    nBol_Space = nBol_Space + ( nTabWidth - (nBol_Space mod nTabWidth)-1)
    Else
    If Mid(xLine,nII,1) <> " " Then
    xLine = Mid(xLine,nII)
    Exit For
    End If
    End If
    End If
    nBol_Space = nBol_Space + 1
    Next
    'プレーンテキストをWZ階層付テキストに変換
    If Len(xLine) = 0 Then
    Else
    If Len(Trim( Replace(xLine, vbTab, ""))) = 0 Then
    Jump(nJJ)
    BeginSelect(0)
    GoLineEnd( )
    InsText ""
    Else
    '階層数を調べ行頭スペースの個数を保存する
    For nII = UBound(aIndent_positions) To 0 Step -1
    If aIndent_positions(nII) < nBol_Space Then
    ReDim Preserve aIndent_positions(nII+1)
    aIndent_positions(nII+1) = nBol_Space
    Exit For
    End If
    Next
    'プレーンテキストをWZ階層付テキストに変換
    xLine = String(nII+1,".") & " " & Trim(xLine)
    Jump(nJJ)
    BeginSelect(0)
    GoLineEnd( )
    InsText xLine
    End If
    End If
    Next

    -----------------------------------
    WZTree2Plain.vbs
    -----------------------------------
    'WZ階層付テキストをプレーンテキストに変換
    Option Explicit
    Dim nII
    ReDim Preserve aLine(0)
    'WZ階層付テキストをプレーンテキストに変換
    For nII = 1 To GetLineCount( 0 )
    Dim nJJ : nJJ = 1
    '行頭の"."の個数を調べる
    For nJJ = 1 To Len(GetLineStr( nII ))
    If Mid(GetLineStr( nII ),nJJ,1) <> "." Then Exit For
    Next
    'WZ階層付テキストをプレーンテキストに変換
    If nJJ >= 2 Then
    Call Jump(nII,0)
    BeginSelect(0)
    GoLineEnd( )
    InsText Space(4*(nJJ-2)) & Trim(Mid( Replace(GetLineStr( nII ), vbNewLine, ""),nJJ))
    End If
    Next
    • [610] Re:プレーンテキストをWZ階層付テキストに変換するマクロ もか 2017年01月30日 22:54

      なかなか興味深い使い方です。
      インデント形式が揃っていれば、タブのファイルにも対応しているところがなかなかいいですね。

      これを基にプラグインには簡単にできますね。
      先頭付近に
      Outline.SetTitle("インデントアウトライン")
      Outline.SetListType(100) ' ツリー表示
      を追加

      xLine = String(nII+1,".") & " " & Trim(xLine)
      Jump(nJJ)
      BeginSelect(0)
      GoLineEnd( )
      InsText xLine
      の部分を
      'ツリーに追加
      Outline.AddFuncInfo2 nJJ, 1, Trim(xLine), nII
      にするだけでファイル自体は完成で、あとは他のプラグインを参考にして
      plugin.defを書くだけでできます。
      なおこれだけだとWzみたいに「1.」「1-1.」みたいな番号はついてません。

      ysiさんさえよろしければpluginとこのマクロをwikiに乗っけておきましょうか?
      • [611] Re2:プレーンテキストをWZ階層付テキストに変換するマクロ ysi 2017年01月31日 20:02

        ▼ もかさん
        > ysiさんさえよろしければpluginとこのマクロをwikiに乗っけておきましょうか?

        pluginの導入は未経験で完成させる自信がないので
        是非、お願いいたします。
        なお、プレーンテキストをアウトライン解析することが大目的ですので
        Wzの機能は必須ではないです。
        • [612] Re3:プレーンテキストをWZ階層付テキストに変換するマクロ もか 2017年02月01日 00:14

          プラグインをアップローダへ、Wikiにページを作りました。
          http://sakura.qp.land.to/?Plugin%2F%C5%EA%B9%C6%2F28

          プラグインの導入は、サクラの共通設定のプラグインのタブで
          「□プラグインを有効にする」をONにして
          「フォルダを開く」を押すとpluginsフォルダができて開きます。
          フォルダは閉じていいです。
          [ZIPプラグインを導入]からプラグインのzipを選択すると追加されます。
          新しく開いたファイルから有効になりますので、
          開いていたファイルはウィンドウごと一度閉じて開きなおす必要があります。
          開きなおしたら、タイプ別のアウトラインを「Indent」にすれば使えるようになるはずです。
          • [613] Re4:プレーンテキストをWZ階層付テキストに変換するマクロ ysi 2017年02月01日 23:26

            動作することを確認しました。
            長年の夢が叶って、うれしいです。

            ありがとうございました。