[609] プレーンテキストをWZ階層付テキストに変換するマクロ |
| 編集中のプレーンテキストを、インデントに沿って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
|
|
ysi Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko |
|