PL

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) {

}