AI
Animation
CGI
Compression
Console
Database
Debug
Dialects
Dialogs
Editor
Email
Encryption
Extension
External Library
File
File Handling
Files
Financial
FTP
Game
Games
Graphics
GUI
HTML
HTTP
Internet
LDC
Markup
Math
Module
Network
Networking
None
Other - Net
Parse
Patch
Printing
Protocol
Rebol
Scheme
Scientific
SDK
Security
Shell
Sound
SQL
TCP
Testing
Text
Text Processing
UI
User Interface
Util
Utility
VID
Visualization
Web
Win API
X-File
XML
REBOL [
    Title: "brother to text"
    Date: 8-Feb-2002/17:31:18-8:00
    Version: 1.1.0
    File: %bro2text.r
    Author: "Ryan S. Cole"
    Purpose: {Converts some brother word processing files (.wpt) to text.}
    Email: ryan@practicalproductivity.com
    Comments: {This script runs with REBOL/view, download from www.rebol.com}
    library: [
        level: 'intermediate 
        platform: 'all
        type: 'Tool 
        domain: [file-handling parse text-processing] 
        tested-under: none 
        support: none 
        license: none 
        see-also: none
    ]
]


;;; PARSE RULES ;;;

format-chars: charset [#"^B"]
txt-chars: charset [#" " - #"~" #"^B"]

end-of-text: [
    any [
        #"^]" (add-text line " ") |
        #"^M" (add-text line "^/") |
        #"^K" (add-text line "^/^/^/^/") |
        #"^[" (add-text line " ") |
        #"^B" (add-text line " ") |
        #"^R" (add-text line " ") |
        "û" (add-text line " ") |
        "ü" (add-text line " ")
    ]
]

some-text: [thru "^F^Y^F^Y" copy line any txt-chars]

wpt-to-doc-rule: [
    some [ some-text end-of-text ]
]


add-text: func [line ender] [
    either none? line [
        line: copy ""
    ] [
        replace line "^B" ""
    ]
    append doc join line ender
]

;;;;;;;;;;;;;;

convert: func [files] [
    if none? files [quit]
    foreach fn files [
        wpt: to-string read/binary fn
        doc: copy ""

        parse/all wpt wpt-to-doc-rule
        replace fn ".wpt" ext/text
        if not all [
            exists? fn 
            not confirm rejoin ["Overwrite the file " fn "?"]
        ] [
            write fn doc
        ]
    ]
    quit
]

get-names: function [path-blk] [name-blk] [
    name-blk: copy []
    foreach f path-blk [
        append name-blk second split-path f
    ]
    return name-blk
]

;;;;;;;;;;;;;;;

selected-files: []

view layout [
    backdrop effect [gradient 1x1 128.128.128 90.90.90]
    txt "This program converts brother WPT files to plain text."
    txt "Converted files will be placed in same directory (folder)."
    guide
    file-list: text-list
    return
    
    button "Browse" [
        file-list/lines: get-names selected-files: request-file/filter/title ["*.wpt"] "Select one or more files." "Select"
        show file-list
    ]
    pad 0x40
    ext: rotary ".txt" ".doc"
    pad 0x40
    button red "Cancel" [quit]
    button forest "Convert" [convert selected-files]
]
    



                                                                                                      

            
            
        
Copyright © 2018 Rebol Software Foundation