Chris,

Thank you so much for this. Your trusty script worked perfectly and has for 
sure saved me a nice chunk of time. I really appreciate you sharing this.

—
Matthew

> On Aug 31, 2021, at 7:03 PM, Christopher Stone <[email protected]> 
> wrote:
> 
> On Aug 31, 2021, at 14:22, Matthew Montgomery <[email protected] 
> <mailto:[email protected]>> wrote:
>> I’ve got a couple hundred lines in a tab delimited file that I need to 
>> transform into one new YAML file per line. I’ve got the search and 
>> replacement patterns all sorted out (thanks pattern playground!) but am 
>> getting stumped on what I need to do to process the main file.
> 
> Hey Matthew,
> 
> While this job is not difficult, it's not simple either – particularly if 
> you're not conversant with a scripting language.
> 
> You need to adjust the following variables in the script to meet your needs:
> 
> set regexFindPattern to "^(\\w.+)"
> set regexReplacePattern to "••••• \\1"
> 
> 
> When writing and testing AppleScript on macOS I advise folks to use Script 
> Debugger <https://latenightsw.com/> – even if they don't write much 
> AppleScript.
> 
> I've used it for 26 years plus and cannot begin to express how much it 
> changed the AppleScript experience for me.
> 
> The commercial version is not inexpensive ($99.99), BUT it reverts to its 
> FREE “Lite” version after a 30 day demo period – and the free version still 
> beats the utter pants off of Apple's Script Editor.app.
> 
> 
> You can run the script directly from Script Debugger (or the insipid Script 
> Editor.app), or you can save it as a compiled script and run it from BBEdit's 
> own Script menu.
> 
> ~/Library/Application Support/BBEdit/Scripts/
> 
> New YAML files will be written to:
> 
> ~/Downloads/New_YAML_Files/
> 
> --
> Best Regards,
> Chris
> 
> 
> --------------------------------------------------------
> # Auth: Christopher Stone <[email protected] 
> <mailto:[email protected]>>
> # dCre: 2021/08/31 18:49
> # dMod: 2021/08/31 18:49 
> # Appl: BBEdit
> # Task: Explode TSV Document into One YAML File Per Line.
> # Libs: None
> # Osax: None
> # Tags: @Applescript, @Script, @ASObjC, @BBEdit, @Explode, @TSV, @Document, 
> @YAML
> --------------------------------------------------------
> use AppleScript version "2.4" --» Yosemite or later
> use framework "Foundation"
> use scripting additions
> --------------------------------------------------------
> --» USER SETTINGS
> --------------------------------------------------------
> set regexFindPattern to "^(\\w.+)"
> set regexReplacePattern to "••••• \\1"
> set new_YAML_Files_Destination to "~/Downloads/New_YAML_Files"
> --------------------------------------------------------
> 
> set fileNameCounter to 0
> set new_YAML_Files_Destination to ((current application's NSString's 
> stringWithString:new_YAML_Files_Destination)'s stringByExpandingTildeInPath) 
> as text
> its createDirectoryAtPathWithIntermediates:new_YAML_Files_Destination
> set itemFound to true
> 
> tell application "BBEdit"
>     
>     set frontDoc to a reference to the front text document
>     select insertion point before character 1 of frontDoc
>     
>     repeat while itemFound
>         
>         set findRecord to find regexFindPattern searching in frontDoc options 
> {search mode:grep, case sensitive:false, wrap around:false}
>         
>         if found of findRecord ≠ true then
>             
>             return
>             
>         else
>             
>             select found object of findRecord
>             set newText to replace regexFindPattern using regexReplacePattern 
> searchingString (get found text of findRecord) options {search mode:grep, 
> case sensitive:false, starting at top:true}
>             set fileNameCounter to fileNameCounter + 1
>             set newFileName to "File_Name " & fileNameCounter & ".yaml"
>             set targetFilePath to new_YAML_Files_Destination & "/" & 
> newFileName
>             write_UTF8(newText, targetFilePath) of me
>             
>         end if
>         
>     end repeat
>     
> end tell
> 
> --------------------------------------------------------
> --» HANDLERS
> --------------------------------------------------------
> on createDirectoryAtPathWithIntermediates:thePath
>     set {theResult, theError} to current application's NSFileManager's 
> defaultManager()'s createDirectoryAtPath:thePath ¬
>         withIntermediateDirectories:true attributes:(missing value) 
> |error|:(reference)
>     if not (theResult as boolean) then
>         set errorMsg to theError's localizedDescription() as text
>         error errorMsg
>     end if
> end createDirectoryAtPathWithIntermediates:
> --------------------------------------------------------
> on write_UTF8(_text, targetFilePath)
>     try
>         if targetFilePath starts with "~/" then
>             set targetFilePath to POSIX path of (path to home folder as text) 
> & text 3 thru -1 of targetFilePath
>         end if
>         set fRef to open for access targetFilePath with write permission
>         set eof of fRef to 0
>         write _text to fRef as «class utf8»
>         close access fRef
>         
>         if targetFilePath contains ":" then
>             return alias targetFilePath
>         else if targetFilePath starts with "/" then
>             return alias POSIX file targetFilePath
>         end if
>         
>     on error e number n
>         try
>             close access fRef
>         on error e number n
>             error "Error in write_UTF8() handler" & linefeed & linefeed & e
>         end try
>     end try
> end write_UTF8
> --------------------------------------------------------
> 
> 
> -- 
> This is the BBEdit Talk public discussion group. If you have a feature 
> request or need technical support, please email "[email protected]" 
> rather than posting here. Follow @bbedit on Twitter: 
> <https://twitter.com/bbedit <https://twitter.com/bbedit>>
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BBEdit Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/bbedit/78E1065B-58FD-4DAE-8C2E-B5CA7937AAB5%40gmail.com
>  
> <https://groups.google.com/d/msgid/bbedit/78E1065B-58FD-4DAE-8C2E-B5CA7937AAB5%40gmail.com?utm_medium=email&utm_source=footer>.

-- 
This is the BBEdit Talk public discussion group. If you have a feature request 
or need technical support, please email "[email protected]" rather than 
posting here. Follow @bbedit on Twitter: <https://twitter.com/bbedit>
--- 
You received this message because you are subscribed to the Google Groups 
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bbedit/9EF07FF4-6659-4873-A3F3-0C1384B27C9A%40signed8bit.com.

Reply via email to