Tuesday, November 12, 2024

more robust version of blogpost vim script

this should work with the edge cases. my old one would get choked up processing h2s and make would poop its pants and i'd have to manally rerun my automation. hopefull this fixes it. also i hadded some debugging checks that go off when i send to give a lil info incase it doesn't go through just to help me see whats goin' on better.

looks like the regex is screwing up the codeblock unfortunately

function! Blogpost()
    " Get the current buffer content
    let l:buf_content = join(getline(1, '$'), "\n")

    " Debugging: Show the full content of the buffer
    echo "Buffer Content:"
    echo l:buf_content

    " Try to extract the first heading tag (h1 through h6)
    let l:title = ''
    for l:i in range(1, 6)  " Loop through heading levels 

to

let l:heading = matchstr(l:buf_content, '\(.*\)') if l:heading != '' let l:title = substitute(l:heading, '\(.*\)', '\1', '') break endif endfor " If no heading found, print error if l:title == '' echo "No heading found (

to

)." return endif " Debugging: Show extracted title echo "Extracted Title:" echo l:title " Extract content after the first heading let l:content_start = matchend(l:buf_content, '.*') let l:content = strpart(l:buf_content, l:content_start) " Debugging: Show the extracted content echo "Extracted Content:" echo l:content " Check if title and content are not empty if l:title == '' || l:content == '' echo "Error: Missing title or content." return endif " Create a dictionary for the JSON payload let l:json_dict = { \ 'title': l:title, \ 'content': l:content \ } " Convert the dictionary to JSON let l:json_payload = json_encode(l:json_dict) " Debugging: Show the JSON payload echo "JSON Payload:" echo l:json_payload " Create a temporary file to hold the JSON payload let l:tmpfile = tempname() call writefile([l:json_payload], l:tmpfile) " Prepare the curl command let l:cmd = 'curl -X POST https://hook.us1.make.com/YOUPUTYOURWEBOOKSECRETHERE -H "Content-Type: application/json" -d @' . shellescape(l:tmpfile) " Run the curl command let l:output = system(l:cmd) " Clean up the temporary file call delete(l:tmpfile) " Show the output or errors echo l:output endfunction " Create a command to run the function command! Blogpost call Blogpost()

No comments:

Post a Comment