Action

Sort lists

Posted by TheChels.uk, Last update 6 days ago

UPDATES

6 days ago

Description updates

show all updates...

6 days ago

Description updates

6 days ago

Fix

6 days ago

Description updated

About

For each group of list items in a draft, I.e., each list is treated independently, this action orders/sorts the items within alphabetically.

Tip

If you find this useful and want to support me, you can tip at ko-fi.com/thechelsuk

Steps

  • script

    /*
     * @title: sort list items
     * @author: TheChelsUk
     * @notes: every list in a draft is updated to be sorted alphabetically
     */
    
    let content = draft.content;
    let lines = content.split('\n');
    
    let result = [];
    let currentList = [];
    
    // Process each line
    for (let i = 0; i < lines.length; i++) {
        let line = lines[i];
        
        // Check if line starts with "- "
        if (line.trimStart().startsWith('- ')) {
            currentList.push(line);
        } else {
            // Not a list item - sort and flush current list if it exists
            if (currentList.length > 0) {
                // Sort the list items alphabetically (case-insensitive)
                currentList.sort((a, b) => {
                    // Extract the text after "- " for comparison
                    let textA = a.trimStart().substring(2).toLowerCase();
                    let textB = b.trimStart().substring(2).toLowerCase();
                    return textA.localeCompare(textB);
                });
                
                // Add sorted list to result
                result = result.concat(currentList);
                currentList = [];
            }
            
            // Add the non-list line
            result.push(line);
        }
    }
    
    // Don't forget to sort and add any remaining list at the end
    if (currentList.length > 0) {
        currentList.sort((a, b) => {
            let textA = a.trimStart().substring(2).toLowerCase();
            let textB = b.trimStart().substring(2).toLowerCase();
            return textA.localeCompare(textB);
        });
        result = result.concat(currentList);
    }
    
    // Update the draft with sorted content
    draft.content = result.join('\n');
    draft.update();

Options

  • After Success Default
    Notification Info
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.