Sample Document Events


Here are some example document events that you can use in your own documents or modify to suit your needs:



Creating and opening up a new page based on the date every time you open a document:


function documentWasOpened(document) {

    var now = new Date();

    

    var year = now.getFullYear();

    var month = now.getMonth() + 1; //months are zero based

    if (month < 10) {

        month = "0" + month;

    }

    

    var day = now.getDate();

    if (day < 10) {

        day = "0" + day;

    }

    

    var newPageName = year + "." + month + "." + day

    

    document.openPageWithTitle(newPageName);

}




Using GIT to add and commit changes to your document on open and close.

Git is a version control system that you can install on your Mac.  You can then use the following document event script to commit new and altered pages to a Git repository, located in your document.  If a Git repository does not already exist, the script will create one for you.


Note: This script assumes Git is installed in /usr/bin/git.  If you have it located somewhere else, you will need to alter the script.


function runGitWithArgsForDocument(document, args) {

    task = NSTask.alloc().init().autorelease();

    task.setCurrentDirectoryPath(document.fileURL().path());

    task.setLaunchPath('/usr/bin/git');

    task.setArguments(args);

    task.launch();

    task.waitUntilExit();

}


function documentWasOpened(document) {

    var docURL = document.fileURL();

    var gitURL = docURL.URLByAppendingPathComponent_('.git');

    var fm = NSFileManager.defaultManager();

    

    if (!fm.fileExistsAtPath_(gitURL.path())) {

        print("Making the git repository");

        

        runGitWithArgsForDocument(document, ['init']);

        runGitWithArgsForDocument(document, ['add', 'pages', 'properties.plist', 'storeinfo.plist']);

        runGitWithArgsForDocument(document, ['commit', '-m', 'First Commit']);

    }

}


function documentWillClose(document) {

    // adding pages again will just add any new pages that didn't already exist.

    runGitWithArgsForDocument(document, ['add', 'pages']);

    runGitWithArgsForDocument(document, ['commit', '-a', '-m', 'document close']);

}



function documentWasClosed(documentPath) {

    

}