mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-17 11:38:32 +02:00
Updated docs from master
This commit is contained in:
parent
6b62607ff2
commit
06839d72dc
60 changed files with 577 additions and 782 deletions
|
@ -6,7 +6,7 @@ Advanced Usage
|
||||||
Configuration File
|
Configuration File
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
The configuration file is a simple JSON file with the following options.
|
You can configure the way jrnl behaves in a configuration file. By default, this is `~/.jrnl_conf`. If you have the `XDG_CONFIG_HOME` variable set, the configuration file will be saved under `$XDG_CONFIG_HOME/jrnl`. The configuration file is a simple JSON file with the following options.
|
||||||
|
|
||||||
- ``journals``
|
- ``journals``
|
||||||
paths to your journal files
|
paths to your journal files
|
||||||
|
@ -15,11 +15,11 @@ The configuration file is a simple JSON file with the following options.
|
||||||
- ``encrypt``
|
- ``encrypt``
|
||||||
if ``true``, encrypts your journal using AES.
|
if ``true``, encrypts your journal using AES.
|
||||||
- ``tagsymbols``
|
- ``tagsymbols``
|
||||||
Symbols to be interpreted as tags. (__See note below__)
|
Symbols to be interpreted as tags. (See note below)
|
||||||
- ``default_hour`` and ``default_minute``
|
- ``default_hour`` and ``default_minute``
|
||||||
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
||||||
- ``timeformat``
|
- ``timeformat``
|
||||||
how to format the timestamps in your journal, see the [python docs](http://docs.python.org/library/time.html#time.strftime) for reference
|
how to format the timestamps in your journal, see the `python docs <http://docs.python.org/library/time.html#time.strftime>`_ for reference
|
||||||
- ``highlight``
|
- ``highlight``
|
||||||
if ``true``, tags will be highlighted in cyan.
|
if ``true``, tags will be highlighted in cyan.
|
||||||
- ``linewrap``
|
- ``linewrap``
|
||||||
|
@ -44,16 +44,13 @@ The configuration file is a simple JSON file with the following options.
|
||||||
DayOne Integration
|
DayOne Integration
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Using your DayOne journal instead of a flat text file is dead simple - instead of pointing to a text file, change your `.jrnl_conf` to point to your DayOne journal. This is a folder ending with `.dayone`, and it's located at
|
Using your DayOne journal instead of a flat text file is dead simple -- instead of pointing to a text file, change your ``.jrnl_conf`` to point to your DayOne journal. This is a folder ending with ``.dayone``, and it's located at
|
||||||
|
|
||||||
* ``~/Library/Application Support/Day One/`` by default
|
* ``~/Library/Application Support/Day One/`` by default
|
||||||
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
||||||
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
||||||
|
|
||||||
Instead of all entries being in a single file, each entry will live in a separate `plist` file. You can also star entries when you write them:
|
Instead of all entries being in a single file, each entry will live in a separate `plist` file.
|
||||||
|
|
||||||
jrnl -star yesterday: Lunch with @Arthur
|
|
||||||
|
|
||||||
Multiple journal files
|
Multiple journal files
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
@ -72,6 +69,9 @@ You can configure _jrnl_ to use with multiple journals (eg. ``private`` and ``wo
|
||||||
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
||||||
|
|
||||||
jrnl work at 10am: Meeting with @Steve
|
jrnl work at 10am: Meeting with @Steve
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
jrnl work -n 3
|
jrnl work -n 3
|
||||||
|
|
||||||
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
||||||
|
|
|
@ -15,7 +15,7 @@ If it is already encrypted, you will first be asked for the current password. Yo
|
||||||
|
|
||||||
jrnl --decrypt
|
jrnl --decrypt
|
||||||
|
|
||||||
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. `jrnl --decrypt plain_text_copy.txt`, to leave your original file untouched.
|
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. ``jrnl --decrypt plain_text_copy.txt``, to leave your original file untouched.
|
||||||
|
|
||||||
|
|
||||||
Storing passwords in your keychain
|
Storing passwords in your keychain
|
||||||
|
@ -23,7 +23,7 @@ Storing passwords in your keychain
|
||||||
|
|
||||||
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
||||||
|
|
||||||
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run `jrnl --encrypt` on an encrypted journal and use the same password again.
|
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run ``jrnl --encrypt`` on an encrypted journal and use the same password again.
|
||||||
|
|
||||||
|
|
||||||
Manual decryption
|
Manual decryption
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx stylesheet -- basic theme.
|
* Sphinx stylesheet -- basic theme.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilities for all documentation.
|
* Sphinx JavaScript utilities for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
|
||||||
*/
|
*/
|
||||||
jQuery.urldecode = function(x) {
|
jQuery.urldecode = function(x) {
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
return decodeURIComponent(x).replace(/\+/g, ' ');
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* small helper function to urlencode strings
|
* small helper function to urlencode strings
|
||||||
|
@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* small function to check if an array contains
|
|
||||||
* a given item.
|
|
||||||
*/
|
|
||||||
jQuery.contains = function(arr, item) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
if (arr[i] == item)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
* highlight a given string on a jquery object by wrapping it in
|
||||||
* span elements with the given class name.
|
* span elements with the given class name.
|
||||||
|
|
158
_static/jquery.js
vendored
158
_static/jquery.js
vendored
File diff suppressed because one or more lines are too long
|
@ -4,38 +4,11 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilties for the full-text search.
|
* Sphinx JavaScript utilties for the full-text search.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to return a node containing the
|
|
||||||
* search summary for a given text. keywords is a list
|
|
||||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
|
||||||
* words. the first one is used to find the occurance, the
|
|
||||||
* latter for highlighting it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
|
||||||
var textLower = text.toLowerCase();
|
|
||||||
var start = 0;
|
|
||||||
$.each(keywords, function() {
|
|
||||||
var i = textLower.indexOf(this.toLowerCase());
|
|
||||||
if (i > -1)
|
|
||||||
start = i;
|
|
||||||
});
|
|
||||||
start = Math.max(start - 120, 0);
|
|
||||||
var excerpt = ((start > 0) ? '...' : '') +
|
|
||||||
$.trim(text.substr(start, 240)) +
|
|
||||||
((start + 240 - text.length) ? '...' : '');
|
|
||||||
var rv = $('<div class="context"></div>').text(excerpt);
|
|
||||||
$.each(hlwords, function() {
|
|
||||||
rv = rv.highlightText(this, 'highlighted');
|
|
||||||
});
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Porter Stemmer
|
* Porter Stemmer
|
||||||
|
@ -220,6 +193,38 @@ var Stemmer = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple result scoring code.
|
||||||
|
*/
|
||||||
|
var Scorer = {
|
||||||
|
// Implement the following function to further tweak the score for each result
|
||||||
|
// The function takes a result array [filename, title, anchor, descr, score]
|
||||||
|
// and returns the new score.
|
||||||
|
/*
|
||||||
|
score: function(result) {
|
||||||
|
return result[4];
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
// query matches the full name of an object
|
||||||
|
objNameMatch: 11,
|
||||||
|
// or matches in the last dotted part of the object name
|
||||||
|
objPartialMatch: 6,
|
||||||
|
// Additive scores depending on the priority of the object
|
||||||
|
objPrio: {0: 15, // used to be importantResults
|
||||||
|
1: 5, // used to be objectResults
|
||||||
|
2: -5}, // used to be unimportantResults
|
||||||
|
// Used when the priority is not in the mapping.
|
||||||
|
objPrioDefault: 0,
|
||||||
|
|
||||||
|
// query found in title
|
||||||
|
title: 15,
|
||||||
|
// query found in terms
|
||||||
|
term: 5
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search Module
|
* Search Module
|
||||||
*/
|
*/
|
||||||
|
@ -239,8 +244,13 @@ var Search = {
|
||||||
},
|
},
|
||||||
|
|
||||||
loadIndex : function(url) {
|
loadIndex : function(url) {
|
||||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
$.ajax({type: "GET", url: url, data: null,
|
||||||
dataType: "script", cache: true});
|
dataType: "script", cache: true,
|
||||||
|
complete: function(jqxhr, textstatus) {
|
||||||
|
if (textstatus != "success") {
|
||||||
|
document.getElementById("searchindexloader").src = url;
|
||||||
|
}
|
||||||
|
}});
|
||||||
},
|
},
|
||||||
|
|
||||||
setIndex : function(index) {
|
setIndex : function(index) {
|
||||||
|
@ -268,19 +278,20 @@ var Search = {
|
||||||
if (this._pulse_status >= 0)
|
if (this._pulse_status >= 0)
|
||||||
return;
|
return;
|
||||||
function pulse() {
|
function pulse() {
|
||||||
|
var i;
|
||||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||||
var dotString = '';
|
var dotString = '';
|
||||||
for (var i = 0; i < Search._pulse_status; i++)
|
for (i = 0; i < Search._pulse_status; i++)
|
||||||
dotString += '.';
|
dotString += '.';
|
||||||
Search.dots.text(dotString);
|
Search.dots.text(dotString);
|
||||||
if (Search._pulse_status > -1)
|
if (Search._pulse_status > -1)
|
||||||
window.setTimeout(pulse, 500);
|
window.setTimeout(pulse, 500);
|
||||||
};
|
}
|
||||||
pulse();
|
pulse();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* perform a search for something
|
* perform a search for something (or wait until index is loaded)
|
||||||
*/
|
*/
|
||||||
performSearch : function(query) {
|
performSearch : function(query) {
|
||||||
// create the required interface elements
|
// create the required interface elements
|
||||||
|
@ -300,41 +311,46 @@ var Search = {
|
||||||
this.deferQuery(query);
|
this.deferQuery(query);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* execute search (requires search index to be loaded)
|
||||||
|
*/
|
||||||
query : function(query) {
|
query : function(query) {
|
||||||
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
|
var i;
|
||||||
|
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||||
|
|
||||||
// Stem the searchterms and add them to the correct list
|
// stem the searchterms and add them to the correct list
|
||||||
var stemmer = new Stemmer();
|
var stemmer = new Stemmer();
|
||||||
var searchterms = [];
|
var searchterms = [];
|
||||||
var excluded = [];
|
var excluded = [];
|
||||||
var hlterms = [];
|
var hlterms = [];
|
||||||
var tmp = query.split(/\s+/);
|
var tmp = query.split(/\s+/);
|
||||||
var objectterms = [];
|
var objectterms = [];
|
||||||
for (var i = 0; i < tmp.length; i++) {
|
for (i = 0; i < tmp.length; i++) {
|
||||||
if (tmp[i] != "") {
|
if (tmp[i] !== "") {
|
||||||
objectterms.push(tmp[i].toLowerCase());
|
objectterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
||||||
tmp[i] == "") {
|
tmp[i] === "") {
|
||||||
// skip this "word"
|
// skip this "word"
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// stem the word
|
// stem the word
|
||||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
||||||
|
var toAppend;
|
||||||
// select the correct list
|
// select the correct list
|
||||||
if (word[0] == '-') {
|
if (word[0] == '-') {
|
||||||
var toAppend = excluded;
|
toAppend = excluded;
|
||||||
word = word.substr(1);
|
word = word.substr(1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var toAppend = searchterms;
|
toAppend = searchterms;
|
||||||
hlterms.push(tmp[i].toLowerCase());
|
hlterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
// only add if not already in the list
|
// only add if not already in the list
|
||||||
if (!$.contains(toAppend, word))
|
if (!$u.contains(toAppend, word))
|
||||||
toAppend.push(word);
|
toAppend.push(word);
|
||||||
};
|
}
|
||||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||||
|
|
||||||
// console.debug('SEARCH: searching for:');
|
// console.debug('SEARCH: searching for:');
|
||||||
|
@ -342,89 +358,51 @@ var Search = {
|
||||||
// console.info('excluded: ', excluded);
|
// console.info('excluded: ', excluded);
|
||||||
|
|
||||||
// prepare search
|
// prepare search
|
||||||
var filenames = this._index.filenames;
|
|
||||||
var titles = this._index.titles;
|
|
||||||
var terms = this._index.terms;
|
var terms = this._index.terms;
|
||||||
var fileMap = {};
|
var titleterms = this._index.titleterms;
|
||||||
var files = null;
|
|
||||||
// different result priorities
|
// array of [filename, title, anchor, descr, score]
|
||||||
var importantResults = [];
|
var results = [];
|
||||||
var objectResults = [];
|
|
||||||
var regularResults = [];
|
|
||||||
var unimportantResults = [];
|
|
||||||
$('#search-progress').empty();
|
$('#search-progress').empty();
|
||||||
|
|
||||||
// lookup as object
|
// lookup as object
|
||||||
for (var i = 0; i < objectterms.length; i++) {
|
for (i = 0; i < objectterms.length; i++) {
|
||||||
var others = [].concat(objectterms.slice(0,i),
|
var others = [].concat(objectterms.slice(0, i),
|
||||||
objectterms.slice(i+1, objectterms.length))
|
objectterms.slice(i+1, objectterms.length));
|
||||||
var results = this.performObjectSearch(objectterms[i], others);
|
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||||
// Assume first word is most likely to be the object,
|
|
||||||
// other words more likely to be in description.
|
|
||||||
// Therefore put matches for earlier words first.
|
|
||||||
// (Results are eventually used in reverse order).
|
|
||||||
objectResults = results[0].concat(objectResults);
|
|
||||||
importantResults = results[1].concat(importantResults);
|
|
||||||
unimportantResults = results[2].concat(unimportantResults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform the search on the required terms
|
// lookup as search terms in fulltext
|
||||||
for (var i = 0; i < searchterms.length; i++) {
|
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
|
||||||
var word = searchterms[i];
|
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
|
||||||
// no match but word was a required one
|
|
||||||
if ((files = terms[word]) == null)
|
// let the scorer override scores with a custom scoring function
|
||||||
break;
|
if (Scorer.score) {
|
||||||
if (files.length == undefined) {
|
for (i = 0; i < results.length; i++)
|
||||||
files = [files];
|
results[i][4] = Scorer.score(results[i]);
|
||||||
}
|
|
||||||
// create the mapping
|
|
||||||
for (var j = 0; j < files.length; j++) {
|
|
||||||
var file = files[j];
|
|
||||||
if (file in fileMap)
|
|
||||||
fileMap[file].push(word);
|
|
||||||
else
|
|
||||||
fileMap[file] = [word];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// now check if the files don't contain excluded terms
|
// now sort the results by score (in opposite order of appearance, since the
|
||||||
for (var file in fileMap) {
|
// display function below uses pop() to retrieve items) and then
|
||||||
var valid = true;
|
// alphabetically
|
||||||
|
results.sort(function(a, b) {
|
||||||
// check if all requirements are matched
|
var left = a[4];
|
||||||
if (fileMap[file].length != searchterms.length)
|
var right = b[4];
|
||||||
continue;
|
if (left > right) {
|
||||||
|
return 1;
|
||||||
// ensure that none of the excluded terms is in the
|
} else if (left < right) {
|
||||||
// search result.
|
return -1;
|
||||||
for (var i = 0; i < excluded.length; i++) {
|
} else {
|
||||||
if (terms[excluded[i]] == file ||
|
// same score: sort alphabetically
|
||||||
$.contains(terms[excluded[i]] || [], file)) {
|
left = a[1].toLowerCase();
|
||||||
valid = false;
|
right = b[1].toLowerCase();
|
||||||
break;
|
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have still a valid result we can add it
|
|
||||||
// to the result list
|
|
||||||
if (valid)
|
|
||||||
regularResults.push([filenames[file], titles[file], '', null]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete unused variables in order to not waste
|
|
||||||
// memory until list is retrieved completely
|
|
||||||
delete filenames, titles, terms;
|
|
||||||
|
|
||||||
// now sort the regular results descending by title
|
|
||||||
regularResults.sort(function(a, b) {
|
|
||||||
var left = a[1].toLowerCase();
|
|
||||||
var right = b[1].toLowerCase();
|
|
||||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// combine all results
|
// for debugging
|
||||||
var results = unimportantResults.concat(regularResults)
|
//Search.lastresults = results.slice(); // a copy
|
||||||
.concat(objectResults).concat(importantResults);
|
//console.info('search results:', Search.lastresults);
|
||||||
|
|
||||||
// print the results
|
// print the results
|
||||||
var resultCount = results.length;
|
var resultCount = results.length;
|
||||||
|
@ -433,7 +411,7 @@ var Search = {
|
||||||
if (results.length) {
|
if (results.length) {
|
||||||
var item = results.pop();
|
var item = results.pop();
|
||||||
var listItem = $('<li style="display:none"></li>');
|
var listItem = $('<li style="display:none"></li>');
|
||||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
||||||
// dirhtml builder
|
// dirhtml builder
|
||||||
var dirname = item[0] + '/';
|
var dirname = item[0] + '/';
|
||||||
if (dirname.match(/\/index\/$/)) {
|
if (dirname.match(/\/index\/$/)) {
|
||||||
|
@ -457,16 +435,18 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
});
|
});
|
||||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
||||||
item[0] + '.txt', function(data) {
|
dataType: "text",
|
||||||
if (data != '') {
|
complete: function(jqxhr, textstatus) {
|
||||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
var data = jqxhr.responseText;
|
||||||
Search.output.append(listItem);
|
if (data !== '') {
|
||||||
}
|
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||||
listItem.slideDown(5, function() {
|
}
|
||||||
displayNextItem();
|
Search.output.append(listItem);
|
||||||
});
|
listItem.slideDown(5, function() {
|
||||||
}, "text");
|
displayNextItem();
|
||||||
|
});
|
||||||
|
}});
|
||||||
} else {
|
} else {
|
||||||
// no source available, just display title
|
// no source available, just display title
|
||||||
Search.output.append(listItem);
|
Search.output.append(listItem);
|
||||||
|
@ -489,20 +469,32 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search for object names
|
||||||
|
*/
|
||||||
performObjectSearch : function(object, otherterms) {
|
performObjectSearch : function(object, otherterms) {
|
||||||
var filenames = this._index.filenames;
|
var filenames = this._index.filenames;
|
||||||
var objects = this._index.objects;
|
var objects = this._index.objects;
|
||||||
var objnames = this._index.objnames;
|
var objnames = this._index.objnames;
|
||||||
var titles = this._index.titles;
|
var titles = this._index.titles;
|
||||||
|
|
||||||
var importantResults = [];
|
var i;
|
||||||
var objectResults = [];
|
var results = [];
|
||||||
var unimportantResults = [];
|
|
||||||
|
|
||||||
for (var prefix in objects) {
|
for (var prefix in objects) {
|
||||||
for (var name in objects[prefix]) {
|
for (var name in objects[prefix]) {
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||||
|
var score = 0;
|
||||||
|
var parts = fullname.split('.');
|
||||||
|
// check for different match types: exact matches of full name or
|
||||||
|
// "last name" (i.e. last dotted part)
|
||||||
|
if (fullname == object || parts[parts.length - 1] == object) {
|
||||||
|
score += Scorer.objNameMatch;
|
||||||
|
// matches in last name
|
||||||
|
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||||
|
score += Scorer.objPartialMatch;
|
||||||
|
}
|
||||||
var match = objects[prefix][name];
|
var match = objects[prefix][name];
|
||||||
var objname = objnames[match[1]][2];
|
var objname = objnames[match[1]][2];
|
||||||
var title = titles[match[0]];
|
var title = titles[match[0]];
|
||||||
|
@ -512,7 +504,7 @@ var Search = {
|
||||||
var haystack = (prefix + ' ' + name + ' ' +
|
var haystack = (prefix + ' ' + name + ' ' +
|
||||||
objname + ' ' + title).toLowerCase();
|
objname + ' ' + title).toLowerCase();
|
||||||
var allfound = true;
|
var allfound = true;
|
||||||
for (var i = 0; i < otherterms.length; i++) {
|
for (i = 0; i < otherterms.length; i++) {
|
||||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||||
allfound = false;
|
allfound = false;
|
||||||
break;
|
break;
|
||||||
|
@ -523,37 +515,107 @@ var Search = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var descr = objname + _(', in ') + title;
|
var descr = objname + _(', in ') + title;
|
||||||
anchor = match[3];
|
|
||||||
if (anchor == '')
|
var anchor = match[3];
|
||||||
|
if (anchor === '')
|
||||||
anchor = fullname;
|
anchor = fullname;
|
||||||
else if (anchor == '-')
|
else if (anchor == '-')
|
||||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||||
result = [filenames[match[0]], fullname, '#'+anchor, descr];
|
// add custom score for some objects according to scorer
|
||||||
switch (match[2]) {
|
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||||
case 1: objectResults.push(result); break;
|
score += Scorer.objPrio[match[2]];
|
||||||
case 0: importantResults.push(result); break;
|
} else {
|
||||||
case 2: unimportantResults.push(result); break;
|
score += Scorer.objPrioDefault;
|
||||||
}
|
}
|
||||||
|
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort results descending
|
return results;
|
||||||
objectResults.sort(function(a, b) {
|
},
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
importantResults.sort(function(a, b) {
|
/**
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
* search for full-text terms in the index
|
||||||
});
|
*/
|
||||||
|
performTermsSearch : function(searchterms, excluded, terms, score) {
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
|
||||||
unimportantResults.sort(function(a, b) {
|
var i, j, file, files;
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
var fileMap = {};
|
||||||
});
|
var results = [];
|
||||||
|
|
||||||
return [importantResults, objectResults, unimportantResults]
|
// perform the search on the required terms
|
||||||
|
for (i = 0; i < searchterms.length; i++) {
|
||||||
|
var word = searchterms[i];
|
||||||
|
// no match but word was a required one
|
||||||
|
if (!(files = terms[word]))
|
||||||
|
break;
|
||||||
|
if (files.length === undefined) {
|
||||||
|
files = [files];
|
||||||
|
}
|
||||||
|
// create the mapping
|
||||||
|
for (j = 0; j < files.length; j++) {
|
||||||
|
file = files[j];
|
||||||
|
if (file in fileMap)
|
||||||
|
fileMap[file].push(word);
|
||||||
|
else
|
||||||
|
fileMap[file] = [word];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check if the files don't contain excluded terms
|
||||||
|
for (file in fileMap) {
|
||||||
|
var valid = true;
|
||||||
|
|
||||||
|
// check if all requirements are matched
|
||||||
|
if (fileMap[file].length != searchterms.length)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// ensure that none of the excluded terms is in the search result
|
||||||
|
for (i = 0; i < excluded.length; i++) {
|
||||||
|
if (terms[excluded[i]] == file ||
|
||||||
|
$u.contains(terms[excluded[i]] || [], file)) {
|
||||||
|
valid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have still a valid result we can add it to the result list
|
||||||
|
if (valid) {
|
||||||
|
results.push([filenames[file], titles[file], '', null, score]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper function to return a node containing the
|
||||||
|
* search summary for a given text. keywords is a list
|
||||||
|
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||||
|
* words. the first one is used to find the occurance, the
|
||||||
|
* latter for highlighting it.
|
||||||
|
*/
|
||||||
|
makeSearchSummary : function(text, keywords, hlwords) {
|
||||||
|
var textLower = text.toLowerCase();
|
||||||
|
var start = 0;
|
||||||
|
$.each(keywords, function() {
|
||||||
|
var i = textLower.indexOf(this.toLowerCase());
|
||||||
|
if (i > -1)
|
||||||
|
start = i;
|
||||||
|
});
|
||||||
|
start = Math.max(start - 120, 0);
|
||||||
|
var excerpt = ((start > 0) ? '...' : '') +
|
||||||
|
$.trim(text.substr(start, 240)) +
|
||||||
|
((start + 240 - text.length) ? '...' : '');
|
||||||
|
var rv = $('<div class="context"></div>').text(excerpt);
|
||||||
|
$.each(hlwords, function() {
|
||||||
|
rv = rv.highlightText(this, 'highlighted');
|
||||||
|
});
|
||||||
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
Search.init();
|
Search.init();
|
||||||
|
|
|
@ -1,23 +1,31 @@
|
||||||
// Underscore.js 0.5.5
|
// Underscore.js 1.3.1
|
||||||
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
|
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
||||||
// Underscore is freely distributable under the terms of the MIT license.
|
// Underscore is freely distributable under the MIT license.
|
||||||
// Portions of Underscore are inspired by or borrowed from Prototype.js,
|
// Portions of Underscore are inspired or borrowed from Prototype,
|
||||||
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||||
// For all details and documentation:
|
// For all details and documentation:
|
||||||
// http://documentcloud.github.com/underscore/
|
// http://documentcloud.github.com/underscore
|
||||||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
|
||||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
|
||||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
|
||||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
|
||||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
|
||||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
|
||||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
|
||||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
|
||||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
|
||||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
|
||||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
|
||||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
|
||||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
|
||||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
|
||||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
|
||||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
|
||||||
|
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
|
||||||
|
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
|
||||||
|
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
|
||||||
|
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
|
||||||
|
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
|
||||||
|
u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
|
||||||
|
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
|
||||||
|
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* sphinx.websupport utilties for all documentation.
|
* sphinx.websupport utilties for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -44,7 +43,7 @@
|
||||||
<span id="advanced"></span><h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline">¶</a></h1>
|
<span id="advanced"></span><h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline">¶</a></h1>
|
||||||
<div class="section" id="configuration-file">
|
<div class="section" id="configuration-file">
|
||||||
<h2>Configuration File<a class="headerlink" href="#configuration-file" title="Permalink to this headline">¶</a></h2>
|
<h2>Configuration File<a class="headerlink" href="#configuration-file" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>The configuration file is a simple JSON file with the following options.</p>
|
<p>You can configure the way jrnl behaves in a configuration file. By default, this is <cite>~/.jrnl_conf</cite>. If you have the <cite>XDG_CONFIG_HOME</cite> variable set, the configuration file will be saved under <cite>$XDG_CONFIG_HOME/jrnl</cite>. The configuration file is a simple JSON file with the following options.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">journals</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">journals</span></tt></dt>
|
||||||
|
@ -66,7 +65,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">tagsymbols</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">tagsymbols</span></tt></dt>
|
||||||
<dd><p class="first last">Symbols to be interpreted as tags. (__See note <a href="#id1"><span class="problematic" id="id2">below__</span></a>)</p>
|
<dd><p class="first last">Symbols to be interpreted as tags. (See note below)</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</li>
|
</li>
|
||||||
|
@ -78,7 +77,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">timeformat</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">timeformat</span></tt></dt>
|
||||||
<dd><p class="first last">how to format the timestamps in your journal, see the [python docs](<a class="reference external" href="http://docs.python.org/library/time.html#time.strftime">http://docs.python.org/library/time.html#time.strftime</a>) for reference</p>
|
<dd><p class="first last">how to format the timestamps in your journal, see the <a class="reference external" href="http://docs.python.org/library/time.html#time.strftime">python docs</a> for reference</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</li>
|
</li>
|
||||||
|
@ -108,18 +107,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="dayone-integration">
|
<div class="section" id="dayone-integration">
|
||||||
<h2>DayOne Integration<a class="headerlink" href="#dayone-integration" title="Permalink to this headline">¶</a></h2>
|
<h2>DayOne Integration<a class="headerlink" href="#dayone-integration" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Using your DayOne journal instead of a flat text file is dead simple - instead of pointing to a text file, change your <cite>.jrnl_conf</cite> to point to your DayOne journal. This is a folder ending with <cite>.dayone</cite>, and it’s located at</p>
|
<p>Using your DayOne journal instead of a flat text file is dead simple – instead of pointing to a text file, change your <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> to point to your DayOne journal. This is a folder ending with <tt class="docutils literal"><span class="pre">.dayone</span></tt>, and it’s located at</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Library/Application</span> <span class="pre">Support/Day</span> <span class="pre">One/</span></tt> by default</li>
|
<li><tt class="docutils literal"><span class="pre">~/Library/Application</span> <span class="pre">Support/Day</span> <span class="pre">One/</span></tt> by default</li>
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Dropbox/Apps/Day</span> <span class="pre">One/</span></tt> if you’re syncing with Dropbox and</li>
|
<li><tt class="docutils literal"><span class="pre">~/Dropbox/Apps/Day</span> <span class="pre">One/</span></tt> if you’re syncing with Dropbox and</li>
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Library/Mobile</span> <span class="pre">Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/</span></tt> if you’re syncing with iCloud.</li>
|
<li><tt class="docutils literal"><span class="pre">~/Library/Mobile</span> <span class="pre">Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/</span></tt> if you’re syncing with iCloud.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Instead of all entries being in a single file, each entry will live in a separate <cite>plist</cite> file. You can also star entries when you write them:</p>
|
<p>Instead of all entries being in a single file, each entry will live in a separate <cite>plist</cite> file.
|
||||||
<blockquote>
|
Multiple journal files
|
||||||
<div>jrnl -star yesterday: Lunch with @Arthur</div></blockquote>
|
———————-</p>
|
||||||
</div>
|
|
||||||
<div class="section" id="multiple-journal-files">
|
|
||||||
<h2>Multiple journal files<a class="headerlink" href="#multiple-journal-files" title="Permalink to this headline">¶</a></h2>
|
|
||||||
<p>You can configure _jrnl_ to use with multiple journals (eg. <tt class="docutils literal"><span class="pre">private</span></tt> and <tt class="docutils literal"><span class="pre">work</span></tt>) by defining more journals in your <tt class="docutils literal"><span class="pre">.jrnl_config</span></tt>, for example:</p>
|
<p>You can configure _jrnl_ to use with multiple journals (eg. <tt class="docutils literal"><span class="pre">private</span></tt> and <tt class="docutils literal"><span class="pre">work</span></tt>) by defining more journals in your <tt class="docutils literal"><span class="pre">.jrnl_config</span></tt>, for example:</p>
|
||||||
<div class="highlight-javascript"><div class="highlight"><pre><span class="p">{</span>
|
<div class="highlight-javascript"><div class="highlight"><pre><span class="p">{</span>
|
||||||
<span class="p">...</span>
|
<span class="p">...</span>
|
||||||
|
@ -131,8 +127,9 @@
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>The <tt class="docutils literal"><span class="pre">default</span></tt> journal gets created the first time you start _jrnl_. Now you can access the <tt class="docutils literal"><span class="pre">work</span></tt> journal by using <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">work</span></tt> instead of <tt class="docutils literal"><span class="pre">jrnl</span></tt>, eg.</p>
|
<p>The <tt class="docutils literal"><span class="pre">default</span></tt> journal gets created the first time you start _jrnl_. Now you can access the <tt class="docutils literal"><span class="pre">work</span></tt> journal by using <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">work</span></tt> instead of <tt class="docutils literal"><span class="pre">jrnl</span></tt>, eg.</p>
|
||||||
<div class="highlight-python"><pre>jrnl work at 10am: Meeting with @Steve
|
<div class="highlight-python"><pre>jrnl work at 10am: Meeting with @Steve</pre>
|
||||||
jrnl work -n 3</pre>
|
</div>
|
||||||
|
<div class="highlight-python"><pre>jrnl work -n 3</pre>
|
||||||
</div>
|
</div>
|
||||||
<p>will both use <tt class="docutils literal"><span class="pre">~/work.txt</span></tt>, while <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">-n</span> <span class="pre">3</span></tt> will display the last three entries from <tt class="docutils literal"><span class="pre">~/journal.txt</span></tt> (and so does <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">default</span> <span class="pre">-n</span> <span class="pre">3</span></tt>).</p>
|
<p>will both use <tt class="docutils literal"><span class="pre">~/work.txt</span></tt>, while <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">-n</span> <span class="pre">3</span></tt> will display the last three entries from <tt class="docutils literal"><span class="pre">~/journal.txt</span></tt> (and so does <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">default</span> <span class="pre">-n</span> <span class="pre">3</span></tt>).</p>
|
||||||
<p>You can also override the default options for each individual journal. If you <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> looks like this:</p>
|
<p>You can also override the default options for each individual journal. If you <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> looks like this:</p>
|
||||||
|
@ -173,7 +170,6 @@ jrnl work -n 3</pre>
|
||||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Advanced Usage</a><ul>
|
<li class="toctree-l1 current"><a class="current reference internal" href="">Advanced Usage</a><ul>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#configuration-file">Configuration File</a></li>
|
<li class="toctree-l2"><a class="reference internal" href="#configuration-file">Configuration File</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#dayone-integration">DayOne Integration</a></li>
|
<li class="toctree-l2"><a class="reference internal" href="#dayone-integration">DayOne Integration</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#multiple-journal-files">Multiple journal files</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="recipes.html">FAQ</a></li>
|
<li class="toctree-l1"><a class="reference internal" href="recipes.html">FAQ</a></li>
|
||||||
|
|
BIN
docs/_build/doctrees/advanced.doctree
vendored
BIN
docs/_build/doctrees/advanced.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/encryption.doctree
vendored
BIN
docs/_build/doctrees/encryption.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/environment.pickle
vendored
BIN
docs/_build/doctrees/environment.pickle
vendored
Binary file not shown.
BIN
docs/_build/doctrees/export.doctree
vendored
BIN
docs/_build/doctrees/export.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/index.doctree
vendored
BIN
docs/_build/doctrees/index.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/installation.doctree
vendored
BIN
docs/_build/doctrees/installation.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/overview.doctree
vendored
BIN
docs/_build/doctrees/overview.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/recipes.doctree
vendored
BIN
docs/_build/doctrees/recipes.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/usage.doctree
vendored
BIN
docs/_build/doctrees/usage.doctree
vendored
Binary file not shown.
4
docs/_build/html/.buildinfo
vendored
4
docs/_build/html/.buildinfo
vendored
|
@ -1,4 +1,4 @@
|
||||||
# Sphinx build info version 1
|
# Sphinx build info version 1
|
||||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||||
config: a9599248d4284f4705aed48637544b87
|
config: c57fa86c61a3618e88ee833fe52fbc18
|
||||||
tags: fbb0d17656682115ca4d033fb2f83ba1
|
tags: a205e9ed8462ae86fdd2f73488852ba9
|
||||||
|
|
16
docs/_build/html/_sources/advanced.txt
vendored
16
docs/_build/html/_sources/advanced.txt
vendored
|
@ -6,7 +6,7 @@ Advanced Usage
|
||||||
Configuration File
|
Configuration File
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
The configuration file is a simple JSON file with the following options.
|
You can configure the way jrnl behaves in a configuration file. By default, this is `~/.jrnl_conf`. If you have the `XDG_CONFIG_HOME` variable set, the configuration file will be saved under `$XDG_CONFIG_HOME/jrnl`. The configuration file is a simple JSON file with the following options.
|
||||||
|
|
||||||
- ``journals``
|
- ``journals``
|
||||||
paths to your journal files
|
paths to your journal files
|
||||||
|
@ -15,11 +15,11 @@ The configuration file is a simple JSON file with the following options.
|
||||||
- ``encrypt``
|
- ``encrypt``
|
||||||
if ``true``, encrypts your journal using AES.
|
if ``true``, encrypts your journal using AES.
|
||||||
- ``tagsymbols``
|
- ``tagsymbols``
|
||||||
Symbols to be interpreted as tags. (__See note below__)
|
Symbols to be interpreted as tags. (See note below)
|
||||||
- ``default_hour`` and ``default_minute``
|
- ``default_hour`` and ``default_minute``
|
||||||
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
||||||
- ``timeformat``
|
- ``timeformat``
|
||||||
how to format the timestamps in your journal, see the [python docs](http://docs.python.org/library/time.html#time.strftime) for reference
|
how to format the timestamps in your journal, see the `python docs <http://docs.python.org/library/time.html#time.strftime>`_ for reference
|
||||||
- ``highlight``
|
- ``highlight``
|
||||||
if ``true``, tags will be highlighted in cyan.
|
if ``true``, tags will be highlighted in cyan.
|
||||||
- ``linewrap``
|
- ``linewrap``
|
||||||
|
@ -44,16 +44,13 @@ The configuration file is a simple JSON file with the following options.
|
||||||
DayOne Integration
|
DayOne Integration
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Using your DayOne journal instead of a flat text file is dead simple - instead of pointing to a text file, change your `.jrnl_conf` to point to your DayOne journal. This is a folder ending with `.dayone`, and it's located at
|
Using your DayOne journal instead of a flat text file is dead simple -- instead of pointing to a text file, change your ``.jrnl_conf`` to point to your DayOne journal. This is a folder ending with ``.dayone``, and it's located at
|
||||||
|
|
||||||
* ``~/Library/Application Support/Day One/`` by default
|
* ``~/Library/Application Support/Day One/`` by default
|
||||||
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
||||||
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
||||||
|
|
||||||
Instead of all entries being in a single file, each entry will live in a separate `plist` file. You can also star entries when you write them:
|
Instead of all entries being in a single file, each entry will live in a separate `plist` file.
|
||||||
|
|
||||||
jrnl -star yesterday: Lunch with @Arthur
|
|
||||||
|
|
||||||
Multiple journal files
|
Multiple journal files
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
@ -72,6 +69,9 @@ You can configure _jrnl_ to use with multiple journals (eg. ``private`` and ``wo
|
||||||
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
||||||
|
|
||||||
jrnl work at 10am: Meeting with @Steve
|
jrnl work at 10am: Meeting with @Steve
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
jrnl work -n 3
|
jrnl work -n 3
|
||||||
|
|
||||||
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
||||||
|
|
4
docs/_build/html/_sources/encryption.txt
vendored
4
docs/_build/html/_sources/encryption.txt
vendored
|
@ -15,7 +15,7 @@ If it is already encrypted, you will first be asked for the current password. Yo
|
||||||
|
|
||||||
jrnl --decrypt
|
jrnl --decrypt
|
||||||
|
|
||||||
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. `jrnl --decrypt plain_text_copy.txt`, to leave your original file untouched.
|
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. ``jrnl --decrypt plain_text_copy.txt``, to leave your original file untouched.
|
||||||
|
|
||||||
|
|
||||||
Storing passwords in your keychain
|
Storing passwords in your keychain
|
||||||
|
@ -23,7 +23,7 @@ Storing passwords in your keychain
|
||||||
|
|
||||||
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
||||||
|
|
||||||
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run `jrnl --encrypt` on an encrypted journal and use the same password again.
|
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run ``jrnl --encrypt`` on an encrypted journal and use the same password again.
|
||||||
|
|
||||||
|
|
||||||
Manual decryption
|
Manual decryption
|
||||||
|
|
2
docs/_build/html/_static/basic.css
vendored
2
docs/_build/html/_static/basic.css
vendored
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx stylesheet -- basic theme.
|
* Sphinx stylesheet -- basic theme.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
16
docs/_build/html/_static/doctools.js
vendored
16
docs/_build/html/_static/doctools.js
vendored
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilities for all documentation.
|
* Sphinx JavaScript utilities for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
|
||||||
*/
|
*/
|
||||||
jQuery.urldecode = function(x) {
|
jQuery.urldecode = function(x) {
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
return decodeURIComponent(x).replace(/\+/g, ' ');
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* small helper function to urlencode strings
|
* small helper function to urlencode strings
|
||||||
|
@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* small function to check if an array contains
|
|
||||||
* a given item.
|
|
||||||
*/
|
|
||||||
jQuery.contains = function(arr, item) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
if (arr[i] == item)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
* highlight a given string on a jquery object by wrapping it in
|
||||||
* span elements with the given class name.
|
* span elements with the given class name.
|
||||||
|
|
158
docs/_build/html/_static/jquery.js
vendored
158
docs/_build/html/_static/jquery.js
vendored
File diff suppressed because one or more lines are too long
358
docs/_build/html/_static/searchtools.js
vendored
358
docs/_build/html/_static/searchtools.js
vendored
|
@ -4,38 +4,11 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilties for the full-text search.
|
* Sphinx JavaScript utilties for the full-text search.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to return a node containing the
|
|
||||||
* search summary for a given text. keywords is a list
|
|
||||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
|
||||||
* words. the first one is used to find the occurance, the
|
|
||||||
* latter for highlighting it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
|
||||||
var textLower = text.toLowerCase();
|
|
||||||
var start = 0;
|
|
||||||
$.each(keywords, function() {
|
|
||||||
var i = textLower.indexOf(this.toLowerCase());
|
|
||||||
if (i > -1)
|
|
||||||
start = i;
|
|
||||||
});
|
|
||||||
start = Math.max(start - 120, 0);
|
|
||||||
var excerpt = ((start > 0) ? '...' : '') +
|
|
||||||
$.trim(text.substr(start, 240)) +
|
|
||||||
((start + 240 - text.length) ? '...' : '');
|
|
||||||
var rv = $('<div class="context"></div>').text(excerpt);
|
|
||||||
$.each(hlwords, function() {
|
|
||||||
rv = rv.highlightText(this, 'highlighted');
|
|
||||||
});
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Porter Stemmer
|
* Porter Stemmer
|
||||||
|
@ -220,6 +193,38 @@ var Stemmer = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple result scoring code.
|
||||||
|
*/
|
||||||
|
var Scorer = {
|
||||||
|
// Implement the following function to further tweak the score for each result
|
||||||
|
// The function takes a result array [filename, title, anchor, descr, score]
|
||||||
|
// and returns the new score.
|
||||||
|
/*
|
||||||
|
score: function(result) {
|
||||||
|
return result[4];
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
// query matches the full name of an object
|
||||||
|
objNameMatch: 11,
|
||||||
|
// or matches in the last dotted part of the object name
|
||||||
|
objPartialMatch: 6,
|
||||||
|
// Additive scores depending on the priority of the object
|
||||||
|
objPrio: {0: 15, // used to be importantResults
|
||||||
|
1: 5, // used to be objectResults
|
||||||
|
2: -5}, // used to be unimportantResults
|
||||||
|
// Used when the priority is not in the mapping.
|
||||||
|
objPrioDefault: 0,
|
||||||
|
|
||||||
|
// query found in title
|
||||||
|
title: 15,
|
||||||
|
// query found in terms
|
||||||
|
term: 5
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search Module
|
* Search Module
|
||||||
*/
|
*/
|
||||||
|
@ -239,8 +244,13 @@ var Search = {
|
||||||
},
|
},
|
||||||
|
|
||||||
loadIndex : function(url) {
|
loadIndex : function(url) {
|
||||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
$.ajax({type: "GET", url: url, data: null,
|
||||||
dataType: "script", cache: true});
|
dataType: "script", cache: true,
|
||||||
|
complete: function(jqxhr, textstatus) {
|
||||||
|
if (textstatus != "success") {
|
||||||
|
document.getElementById("searchindexloader").src = url;
|
||||||
|
}
|
||||||
|
}});
|
||||||
},
|
},
|
||||||
|
|
||||||
setIndex : function(index) {
|
setIndex : function(index) {
|
||||||
|
@ -268,19 +278,20 @@ var Search = {
|
||||||
if (this._pulse_status >= 0)
|
if (this._pulse_status >= 0)
|
||||||
return;
|
return;
|
||||||
function pulse() {
|
function pulse() {
|
||||||
|
var i;
|
||||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||||
var dotString = '';
|
var dotString = '';
|
||||||
for (var i = 0; i < Search._pulse_status; i++)
|
for (i = 0; i < Search._pulse_status; i++)
|
||||||
dotString += '.';
|
dotString += '.';
|
||||||
Search.dots.text(dotString);
|
Search.dots.text(dotString);
|
||||||
if (Search._pulse_status > -1)
|
if (Search._pulse_status > -1)
|
||||||
window.setTimeout(pulse, 500);
|
window.setTimeout(pulse, 500);
|
||||||
};
|
}
|
||||||
pulse();
|
pulse();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* perform a search for something
|
* perform a search for something (or wait until index is loaded)
|
||||||
*/
|
*/
|
||||||
performSearch : function(query) {
|
performSearch : function(query) {
|
||||||
// create the required interface elements
|
// create the required interface elements
|
||||||
|
@ -300,41 +311,46 @@ var Search = {
|
||||||
this.deferQuery(query);
|
this.deferQuery(query);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* execute search (requires search index to be loaded)
|
||||||
|
*/
|
||||||
query : function(query) {
|
query : function(query) {
|
||||||
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
|
var i;
|
||||||
|
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||||
|
|
||||||
// Stem the searchterms and add them to the correct list
|
// stem the searchterms and add them to the correct list
|
||||||
var stemmer = new Stemmer();
|
var stemmer = new Stemmer();
|
||||||
var searchterms = [];
|
var searchterms = [];
|
||||||
var excluded = [];
|
var excluded = [];
|
||||||
var hlterms = [];
|
var hlterms = [];
|
||||||
var tmp = query.split(/\s+/);
|
var tmp = query.split(/\s+/);
|
||||||
var objectterms = [];
|
var objectterms = [];
|
||||||
for (var i = 0; i < tmp.length; i++) {
|
for (i = 0; i < tmp.length; i++) {
|
||||||
if (tmp[i] != "") {
|
if (tmp[i] !== "") {
|
||||||
objectterms.push(tmp[i].toLowerCase());
|
objectterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
||||||
tmp[i] == "") {
|
tmp[i] === "") {
|
||||||
// skip this "word"
|
// skip this "word"
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// stem the word
|
// stem the word
|
||||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
||||||
|
var toAppend;
|
||||||
// select the correct list
|
// select the correct list
|
||||||
if (word[0] == '-') {
|
if (word[0] == '-') {
|
||||||
var toAppend = excluded;
|
toAppend = excluded;
|
||||||
word = word.substr(1);
|
word = word.substr(1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var toAppend = searchterms;
|
toAppend = searchterms;
|
||||||
hlterms.push(tmp[i].toLowerCase());
|
hlterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
// only add if not already in the list
|
// only add if not already in the list
|
||||||
if (!$.contains(toAppend, word))
|
if (!$u.contains(toAppend, word))
|
||||||
toAppend.push(word);
|
toAppend.push(word);
|
||||||
};
|
}
|
||||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||||
|
|
||||||
// console.debug('SEARCH: searching for:');
|
// console.debug('SEARCH: searching for:');
|
||||||
|
@ -342,89 +358,51 @@ var Search = {
|
||||||
// console.info('excluded: ', excluded);
|
// console.info('excluded: ', excluded);
|
||||||
|
|
||||||
// prepare search
|
// prepare search
|
||||||
var filenames = this._index.filenames;
|
|
||||||
var titles = this._index.titles;
|
|
||||||
var terms = this._index.terms;
|
var terms = this._index.terms;
|
||||||
var fileMap = {};
|
var titleterms = this._index.titleterms;
|
||||||
var files = null;
|
|
||||||
// different result priorities
|
// array of [filename, title, anchor, descr, score]
|
||||||
var importantResults = [];
|
var results = [];
|
||||||
var objectResults = [];
|
|
||||||
var regularResults = [];
|
|
||||||
var unimportantResults = [];
|
|
||||||
$('#search-progress').empty();
|
$('#search-progress').empty();
|
||||||
|
|
||||||
// lookup as object
|
// lookup as object
|
||||||
for (var i = 0; i < objectterms.length; i++) {
|
for (i = 0; i < objectterms.length; i++) {
|
||||||
var others = [].concat(objectterms.slice(0,i),
|
var others = [].concat(objectterms.slice(0, i),
|
||||||
objectterms.slice(i+1, objectterms.length))
|
objectterms.slice(i+1, objectterms.length));
|
||||||
var results = this.performObjectSearch(objectterms[i], others);
|
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||||
// Assume first word is most likely to be the object,
|
|
||||||
// other words more likely to be in description.
|
|
||||||
// Therefore put matches for earlier words first.
|
|
||||||
// (Results are eventually used in reverse order).
|
|
||||||
objectResults = results[0].concat(objectResults);
|
|
||||||
importantResults = results[1].concat(importantResults);
|
|
||||||
unimportantResults = results[2].concat(unimportantResults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform the search on the required terms
|
// lookup as search terms in fulltext
|
||||||
for (var i = 0; i < searchterms.length; i++) {
|
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
|
||||||
var word = searchterms[i];
|
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
|
||||||
// no match but word was a required one
|
|
||||||
if ((files = terms[word]) == null)
|
// let the scorer override scores with a custom scoring function
|
||||||
break;
|
if (Scorer.score) {
|
||||||
if (files.length == undefined) {
|
for (i = 0; i < results.length; i++)
|
||||||
files = [files];
|
results[i][4] = Scorer.score(results[i]);
|
||||||
}
|
|
||||||
// create the mapping
|
|
||||||
for (var j = 0; j < files.length; j++) {
|
|
||||||
var file = files[j];
|
|
||||||
if (file in fileMap)
|
|
||||||
fileMap[file].push(word);
|
|
||||||
else
|
|
||||||
fileMap[file] = [word];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// now check if the files don't contain excluded terms
|
// now sort the results by score (in opposite order of appearance, since the
|
||||||
for (var file in fileMap) {
|
// display function below uses pop() to retrieve items) and then
|
||||||
var valid = true;
|
// alphabetically
|
||||||
|
results.sort(function(a, b) {
|
||||||
// check if all requirements are matched
|
var left = a[4];
|
||||||
if (fileMap[file].length != searchterms.length)
|
var right = b[4];
|
||||||
continue;
|
if (left > right) {
|
||||||
|
return 1;
|
||||||
// ensure that none of the excluded terms is in the
|
} else if (left < right) {
|
||||||
// search result.
|
return -1;
|
||||||
for (var i = 0; i < excluded.length; i++) {
|
} else {
|
||||||
if (terms[excluded[i]] == file ||
|
// same score: sort alphabetically
|
||||||
$.contains(terms[excluded[i]] || [], file)) {
|
left = a[1].toLowerCase();
|
||||||
valid = false;
|
right = b[1].toLowerCase();
|
||||||
break;
|
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have still a valid result we can add it
|
|
||||||
// to the result list
|
|
||||||
if (valid)
|
|
||||||
regularResults.push([filenames[file], titles[file], '', null]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete unused variables in order to not waste
|
|
||||||
// memory until list is retrieved completely
|
|
||||||
delete filenames, titles, terms;
|
|
||||||
|
|
||||||
// now sort the regular results descending by title
|
|
||||||
regularResults.sort(function(a, b) {
|
|
||||||
var left = a[1].toLowerCase();
|
|
||||||
var right = b[1].toLowerCase();
|
|
||||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// combine all results
|
// for debugging
|
||||||
var results = unimportantResults.concat(regularResults)
|
//Search.lastresults = results.slice(); // a copy
|
||||||
.concat(objectResults).concat(importantResults);
|
//console.info('search results:', Search.lastresults);
|
||||||
|
|
||||||
// print the results
|
// print the results
|
||||||
var resultCount = results.length;
|
var resultCount = results.length;
|
||||||
|
@ -433,7 +411,7 @@ var Search = {
|
||||||
if (results.length) {
|
if (results.length) {
|
||||||
var item = results.pop();
|
var item = results.pop();
|
||||||
var listItem = $('<li style="display:none"></li>');
|
var listItem = $('<li style="display:none"></li>');
|
||||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
||||||
// dirhtml builder
|
// dirhtml builder
|
||||||
var dirname = item[0] + '/';
|
var dirname = item[0] + '/';
|
||||||
if (dirname.match(/\/index\/$/)) {
|
if (dirname.match(/\/index\/$/)) {
|
||||||
|
@ -457,16 +435,18 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
});
|
});
|
||||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
||||||
item[0] + '.txt', function(data) {
|
dataType: "text",
|
||||||
if (data != '') {
|
complete: function(jqxhr, textstatus) {
|
||||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
var data = jqxhr.responseText;
|
||||||
Search.output.append(listItem);
|
if (data !== '') {
|
||||||
}
|
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||||
listItem.slideDown(5, function() {
|
}
|
||||||
displayNextItem();
|
Search.output.append(listItem);
|
||||||
});
|
listItem.slideDown(5, function() {
|
||||||
}, "text");
|
displayNextItem();
|
||||||
|
});
|
||||||
|
}});
|
||||||
} else {
|
} else {
|
||||||
// no source available, just display title
|
// no source available, just display title
|
||||||
Search.output.append(listItem);
|
Search.output.append(listItem);
|
||||||
|
@ -489,20 +469,32 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search for object names
|
||||||
|
*/
|
||||||
performObjectSearch : function(object, otherterms) {
|
performObjectSearch : function(object, otherterms) {
|
||||||
var filenames = this._index.filenames;
|
var filenames = this._index.filenames;
|
||||||
var objects = this._index.objects;
|
var objects = this._index.objects;
|
||||||
var objnames = this._index.objnames;
|
var objnames = this._index.objnames;
|
||||||
var titles = this._index.titles;
|
var titles = this._index.titles;
|
||||||
|
|
||||||
var importantResults = [];
|
var i;
|
||||||
var objectResults = [];
|
var results = [];
|
||||||
var unimportantResults = [];
|
|
||||||
|
|
||||||
for (var prefix in objects) {
|
for (var prefix in objects) {
|
||||||
for (var name in objects[prefix]) {
|
for (var name in objects[prefix]) {
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||||
|
var score = 0;
|
||||||
|
var parts = fullname.split('.');
|
||||||
|
// check for different match types: exact matches of full name or
|
||||||
|
// "last name" (i.e. last dotted part)
|
||||||
|
if (fullname == object || parts[parts.length - 1] == object) {
|
||||||
|
score += Scorer.objNameMatch;
|
||||||
|
// matches in last name
|
||||||
|
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||||
|
score += Scorer.objPartialMatch;
|
||||||
|
}
|
||||||
var match = objects[prefix][name];
|
var match = objects[prefix][name];
|
||||||
var objname = objnames[match[1]][2];
|
var objname = objnames[match[1]][2];
|
||||||
var title = titles[match[0]];
|
var title = titles[match[0]];
|
||||||
|
@ -512,7 +504,7 @@ var Search = {
|
||||||
var haystack = (prefix + ' ' + name + ' ' +
|
var haystack = (prefix + ' ' + name + ' ' +
|
||||||
objname + ' ' + title).toLowerCase();
|
objname + ' ' + title).toLowerCase();
|
||||||
var allfound = true;
|
var allfound = true;
|
||||||
for (var i = 0; i < otherterms.length; i++) {
|
for (i = 0; i < otherterms.length; i++) {
|
||||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||||
allfound = false;
|
allfound = false;
|
||||||
break;
|
break;
|
||||||
|
@ -523,37 +515,107 @@ var Search = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var descr = objname + _(', in ') + title;
|
var descr = objname + _(', in ') + title;
|
||||||
anchor = match[3];
|
|
||||||
if (anchor == '')
|
var anchor = match[3];
|
||||||
|
if (anchor === '')
|
||||||
anchor = fullname;
|
anchor = fullname;
|
||||||
else if (anchor == '-')
|
else if (anchor == '-')
|
||||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||||
result = [filenames[match[0]], fullname, '#'+anchor, descr];
|
// add custom score for some objects according to scorer
|
||||||
switch (match[2]) {
|
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||||
case 1: objectResults.push(result); break;
|
score += Scorer.objPrio[match[2]];
|
||||||
case 0: importantResults.push(result); break;
|
} else {
|
||||||
case 2: unimportantResults.push(result); break;
|
score += Scorer.objPrioDefault;
|
||||||
}
|
}
|
||||||
|
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort results descending
|
return results;
|
||||||
objectResults.sort(function(a, b) {
|
},
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
importantResults.sort(function(a, b) {
|
/**
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
* search for full-text terms in the index
|
||||||
});
|
*/
|
||||||
|
performTermsSearch : function(searchterms, excluded, terms, score) {
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
|
||||||
unimportantResults.sort(function(a, b) {
|
var i, j, file, files;
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
var fileMap = {};
|
||||||
});
|
var results = [];
|
||||||
|
|
||||||
return [importantResults, objectResults, unimportantResults]
|
// perform the search on the required terms
|
||||||
|
for (i = 0; i < searchterms.length; i++) {
|
||||||
|
var word = searchterms[i];
|
||||||
|
// no match but word was a required one
|
||||||
|
if (!(files = terms[word]))
|
||||||
|
break;
|
||||||
|
if (files.length === undefined) {
|
||||||
|
files = [files];
|
||||||
|
}
|
||||||
|
// create the mapping
|
||||||
|
for (j = 0; j < files.length; j++) {
|
||||||
|
file = files[j];
|
||||||
|
if (file in fileMap)
|
||||||
|
fileMap[file].push(word);
|
||||||
|
else
|
||||||
|
fileMap[file] = [word];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check if the files don't contain excluded terms
|
||||||
|
for (file in fileMap) {
|
||||||
|
var valid = true;
|
||||||
|
|
||||||
|
// check if all requirements are matched
|
||||||
|
if (fileMap[file].length != searchterms.length)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// ensure that none of the excluded terms is in the search result
|
||||||
|
for (i = 0; i < excluded.length; i++) {
|
||||||
|
if (terms[excluded[i]] == file ||
|
||||||
|
$u.contains(terms[excluded[i]] || [], file)) {
|
||||||
|
valid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have still a valid result we can add it to the result list
|
||||||
|
if (valid) {
|
||||||
|
results.push([filenames[file], titles[file], '', null, score]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper function to return a node containing the
|
||||||
|
* search summary for a given text. keywords is a list
|
||||||
|
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||||
|
* words. the first one is used to find the occurance, the
|
||||||
|
* latter for highlighting it.
|
||||||
|
*/
|
||||||
|
makeSearchSummary : function(text, keywords, hlwords) {
|
||||||
|
var textLower = text.toLowerCase();
|
||||||
|
var start = 0;
|
||||||
|
$.each(keywords, function() {
|
||||||
|
var i = textLower.indexOf(this.toLowerCase());
|
||||||
|
if (i > -1)
|
||||||
|
start = i;
|
||||||
|
});
|
||||||
|
start = Math.max(start - 120, 0);
|
||||||
|
var excerpt = ((start > 0) ? '...' : '') +
|
||||||
|
$.trim(text.substr(start, 240)) +
|
||||||
|
((start + 240 - text.length) ? '...' : '');
|
||||||
|
var rv = $('<div class="context"></div>').text(excerpt);
|
||||||
|
$.each(hlwords, function() {
|
||||||
|
rv = rv.highlightText(this, 'highlighted');
|
||||||
|
});
|
||||||
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
Search.init();
|
Search.init();
|
||||||
|
|
50
docs/_build/html/_static/underscore.js
vendored
50
docs/_build/html/_static/underscore.js
vendored
|
@ -1,23 +1,31 @@
|
||||||
// Underscore.js 0.5.5
|
// Underscore.js 1.3.1
|
||||||
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
|
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
||||||
// Underscore is freely distributable under the terms of the MIT license.
|
// Underscore is freely distributable under the MIT license.
|
||||||
// Portions of Underscore are inspired by or borrowed from Prototype.js,
|
// Portions of Underscore are inspired or borrowed from Prototype,
|
||||||
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||||
// For all details and documentation:
|
// For all details and documentation:
|
||||||
// http://documentcloud.github.com/underscore/
|
// http://documentcloud.github.com/underscore
|
||||||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
|
||||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
|
||||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
|
||||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
|
||||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
|
||||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
|
||||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
|
||||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
|
||||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
|
||||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
|
||||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
|
||||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
|
||||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
|
||||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
|
||||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
|
||||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
|
||||||
|
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
|
||||||
|
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
|
||||||
|
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
|
||||||
|
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
|
||||||
|
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
|
||||||
|
u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
|
||||||
|
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
|
||||||
|
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
|
||||||
|
|
2
docs/_build/html/_static/websupport.js
vendored
2
docs/_build/html/_static/websupport.js
vendored
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* sphinx.websupport utilties for all documentation.
|
* sphinx.websupport utilties for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
26
docs/_build/html/advanced.html
vendored
26
docs/_build/html/advanced.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -44,7 +43,7 @@
|
||||||
<span id="advanced"></span><h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline">¶</a></h1>
|
<span id="advanced"></span><h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline">¶</a></h1>
|
||||||
<div class="section" id="configuration-file">
|
<div class="section" id="configuration-file">
|
||||||
<h2>Configuration File<a class="headerlink" href="#configuration-file" title="Permalink to this headline">¶</a></h2>
|
<h2>Configuration File<a class="headerlink" href="#configuration-file" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>The configuration file is a simple JSON file with the following options.</p>
|
<p>You can configure the way jrnl behaves in a configuration file. By default, this is <cite>~/.jrnl_conf</cite>. If you have the <cite>XDG_CONFIG_HOME</cite> variable set, the configuration file will be saved under <cite>$XDG_CONFIG_HOME/jrnl</cite>. The configuration file is a simple JSON file with the following options.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">journals</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">journals</span></tt></dt>
|
||||||
|
@ -66,7 +65,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">tagsymbols</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">tagsymbols</span></tt></dt>
|
||||||
<dd><p class="first last">Symbols to be interpreted as tags. (__See note <a href="#id1"><span class="problematic" id="id2">below__</span></a>)</p>
|
<dd><p class="first last">Symbols to be interpreted as tags. (See note below)</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</li>
|
</li>
|
||||||
|
@ -78,7 +77,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li><dl class="first docutils">
|
<li><dl class="first docutils">
|
||||||
<dt><tt class="docutils literal"><span class="pre">timeformat</span></tt></dt>
|
<dt><tt class="docutils literal"><span class="pre">timeformat</span></tt></dt>
|
||||||
<dd><p class="first last">how to format the timestamps in your journal, see the [python docs](<a class="reference external" href="http://docs.python.org/library/time.html#time.strftime">http://docs.python.org/library/time.html#time.strftime</a>) for reference</p>
|
<dd><p class="first last">how to format the timestamps in your journal, see the <a class="reference external" href="http://docs.python.org/library/time.html#time.strftime">python docs</a> for reference</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</li>
|
</li>
|
||||||
|
@ -108,18 +107,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="dayone-integration">
|
<div class="section" id="dayone-integration">
|
||||||
<h2>DayOne Integration<a class="headerlink" href="#dayone-integration" title="Permalink to this headline">¶</a></h2>
|
<h2>DayOne Integration<a class="headerlink" href="#dayone-integration" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Using your DayOne journal instead of a flat text file is dead simple - instead of pointing to a text file, change your <cite>.jrnl_conf</cite> to point to your DayOne journal. This is a folder ending with <cite>.dayone</cite>, and it’s located at</p>
|
<p>Using your DayOne journal instead of a flat text file is dead simple – instead of pointing to a text file, change your <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> to point to your DayOne journal. This is a folder ending with <tt class="docutils literal"><span class="pre">.dayone</span></tt>, and it’s located at</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Library/Application</span> <span class="pre">Support/Day</span> <span class="pre">One/</span></tt> by default</li>
|
<li><tt class="docutils literal"><span class="pre">~/Library/Application</span> <span class="pre">Support/Day</span> <span class="pre">One/</span></tt> by default</li>
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Dropbox/Apps/Day</span> <span class="pre">One/</span></tt> if you’re syncing with Dropbox and</li>
|
<li><tt class="docutils literal"><span class="pre">~/Dropbox/Apps/Day</span> <span class="pre">One/</span></tt> if you’re syncing with Dropbox and</li>
|
||||||
<li><tt class="docutils literal"><span class="pre">~/Library/Mobile</span> <span class="pre">Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/</span></tt> if you’re syncing with iCloud.</li>
|
<li><tt class="docutils literal"><span class="pre">~/Library/Mobile</span> <span class="pre">Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/</span></tt> if you’re syncing with iCloud.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Instead of all entries being in a single file, each entry will live in a separate <cite>plist</cite> file. You can also star entries when you write them:</p>
|
<p>Instead of all entries being in a single file, each entry will live in a separate <cite>plist</cite> file.
|
||||||
<blockquote>
|
Multiple journal files
|
||||||
<div>jrnl -star yesterday: Lunch with @Arthur</div></blockquote>
|
———————-</p>
|
||||||
</div>
|
|
||||||
<div class="section" id="multiple-journal-files">
|
|
||||||
<h2>Multiple journal files<a class="headerlink" href="#multiple-journal-files" title="Permalink to this headline">¶</a></h2>
|
|
||||||
<p>You can configure _jrnl_ to use with multiple journals (eg. <tt class="docutils literal"><span class="pre">private</span></tt> and <tt class="docutils literal"><span class="pre">work</span></tt>) by defining more journals in your <tt class="docutils literal"><span class="pre">.jrnl_config</span></tt>, for example:</p>
|
<p>You can configure _jrnl_ to use with multiple journals (eg. <tt class="docutils literal"><span class="pre">private</span></tt> and <tt class="docutils literal"><span class="pre">work</span></tt>) by defining more journals in your <tt class="docutils literal"><span class="pre">.jrnl_config</span></tt>, for example:</p>
|
||||||
<div class="highlight-javascript"><div class="highlight"><pre><span class="p">{</span>
|
<div class="highlight-javascript"><div class="highlight"><pre><span class="p">{</span>
|
||||||
<span class="p">...</span>
|
<span class="p">...</span>
|
||||||
|
@ -131,8 +127,9 @@
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>The <tt class="docutils literal"><span class="pre">default</span></tt> journal gets created the first time you start _jrnl_. Now you can access the <tt class="docutils literal"><span class="pre">work</span></tt> journal by using <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">work</span></tt> instead of <tt class="docutils literal"><span class="pre">jrnl</span></tt>, eg.</p>
|
<p>The <tt class="docutils literal"><span class="pre">default</span></tt> journal gets created the first time you start _jrnl_. Now you can access the <tt class="docutils literal"><span class="pre">work</span></tt> journal by using <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">work</span></tt> instead of <tt class="docutils literal"><span class="pre">jrnl</span></tt>, eg.</p>
|
||||||
<div class="highlight-python"><pre>jrnl work at 10am: Meeting with @Steve
|
<div class="highlight-python"><pre>jrnl work at 10am: Meeting with @Steve</pre>
|
||||||
jrnl work -n 3</pre>
|
</div>
|
||||||
|
<div class="highlight-python"><pre>jrnl work -n 3</pre>
|
||||||
</div>
|
</div>
|
||||||
<p>will both use <tt class="docutils literal"><span class="pre">~/work.txt</span></tt>, while <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">-n</span> <span class="pre">3</span></tt> will display the last three entries from <tt class="docutils literal"><span class="pre">~/journal.txt</span></tt> (and so does <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">default</span> <span class="pre">-n</span> <span class="pre">3</span></tt>).</p>
|
<p>will both use <tt class="docutils literal"><span class="pre">~/work.txt</span></tt>, while <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">-n</span> <span class="pre">3</span></tt> will display the last three entries from <tt class="docutils literal"><span class="pre">~/journal.txt</span></tt> (and so does <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">default</span> <span class="pre">-n</span> <span class="pre">3</span></tt>).</p>
|
||||||
<p>You can also override the default options for each individual journal. If you <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> looks like this:</p>
|
<p>You can also override the default options for each individual journal. If you <tt class="docutils literal"><span class="pre">.jrnl_conf</span></tt> looks like this:</p>
|
||||||
|
@ -173,7 +170,6 @@ jrnl work -n 3</pre>
|
||||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Advanced Usage</a><ul>
|
<li class="toctree-l1 current"><a class="current reference internal" href="">Advanced Usage</a><ul>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#configuration-file">Configuration File</a></li>
|
<li class="toctree-l2"><a class="reference internal" href="#configuration-file">Configuration File</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#dayone-integration">DayOne Integration</a></li>
|
<li class="toctree-l2"><a class="reference internal" href="#dayone-integration">DayOne Integration</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="#multiple-journal-files">Multiple journal files</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="recipes.html">FAQ</a></li>
|
<li class="toctree-l1"><a class="reference internal" href="recipes.html">FAQ</a></li>
|
||||||
|
|
7
docs/_build/html/encryption.html
vendored
7
docs/_build/html/encryption.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -52,12 +51,12 @@
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">jrnl</span> <span class="o">--</span><span class="n">decrypt</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="n">jrnl</span> <span class="o">--</span><span class="n">decrypt</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. <cite>jrnl –decrypt plain_text_copy.txt</cite>, to leave your original file untouched.</p>
|
<p>will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">--decrypt</span> <span class="pre">plain_text_copy.txt</span></tt>, to leave your original file untouched.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="storing-passwords-in-your-keychain">
|
<div class="section" id="storing-passwords-in-your-keychain">
|
||||||
<h2>Storing passwords in your keychain<a class="headerlink" href="#storing-passwords-in-your-keychain" title="Permalink to this headline">¶</a></h2>
|
<h2>Storing passwords in your keychain<a class="headerlink" href="#storing-passwords-in-your-keychain" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won’t have to enter your password every time you want to write or read your journal.</p>
|
<p>Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won’t have to enter your password every time you want to write or read your journal.</p>
|
||||||
<p>If you don’t initially store the password in the keychain but decide to do so at a later point – or maybe want to store it on one computer but not on another – you can simply run <cite>jrnl –encrypt</cite> on an encrypted journal and use the same password again.</p>
|
<p>If you don’t initially store the password in the keychain but decide to do so at a later point – or maybe want to store it on one computer but not on another – you can simply run <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">--encrypt</span></tt> on an encrypted journal and use the same password again.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="manual-decryption">
|
<div class="section" id="manual-decryption">
|
||||||
<h2>Manual decryption<a class="headerlink" href="#manual-decryption" title="Permalink to this headline">¶</a></h2>
|
<h2>Manual decryption<a class="headerlink" href="#manual-decryption" title="Permalink to this headline">¶</a></h2>
|
||||||
|
|
3
docs/_build/html/export.html
vendored
3
docs/_build/html/export.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
4
docs/_build/html/genindex.html
vendored
4
docs/_build/html/genindex.html
vendored
|
@ -1,6 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -16,7 +14,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
1
docs/_build/html/index.html
vendored
1
docs/_build/html/index.html
vendored
|
@ -1,5 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
|
3
docs/_build/html/installation.html
vendored
3
docs/_build/html/installation.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
BIN
docs/_build/html/objects.inv
vendored
BIN
docs/_build/html/objects.inv
vendored
Binary file not shown.
3
docs/_build/html/overview.html
vendored
3
docs/_build/html/overview.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
3
docs/_build/html/recipes.html
vendored
3
docs/_build/html/recipes.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
5
docs/_build/html/search.html
vendored
5
docs/_build/html/search.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -30,6 +29,8 @@
|
||||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" id="searchindexloader"></script>
|
||||||
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
|
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
|
||||||
<link rel="apple-touch-icon-precomposed" href="_static/img/favicon-152.png">
|
<link rel="apple-touch-icon-precomposed" href="_static/img/favicon-152.png">
|
||||||
|
|
2
docs/_build/html/searchindex.js
vendored
2
docs/_build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
3
docs/_build/html/usage.html
vendored
3
docs/_build/html/usage.html
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
|
@ -6,7 +6,7 @@ Advanced Usage
|
||||||
Configuration File
|
Configuration File
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
The configuration file is a simple JSON file with the following options.
|
You can configure the way jrnl behaves in a configuration file. By default, this is `~/.jrnl_conf`. If you have the `XDG_CONFIG_HOME` variable set, the configuration file will be saved under `$XDG_CONFIG_HOME/jrnl`. The configuration file is a simple JSON file with the following options.
|
||||||
|
|
||||||
- ``journals``
|
- ``journals``
|
||||||
paths to your journal files
|
paths to your journal files
|
||||||
|
@ -15,11 +15,11 @@ The configuration file is a simple JSON file with the following options.
|
||||||
- ``encrypt``
|
- ``encrypt``
|
||||||
if ``true``, encrypts your journal using AES.
|
if ``true``, encrypts your journal using AES.
|
||||||
- ``tagsymbols``
|
- ``tagsymbols``
|
||||||
Symbols to be interpreted as tags. (__See note below__)
|
Symbols to be interpreted as tags. (See note below)
|
||||||
- ``default_hour`` and ``default_minute``
|
- ``default_hour`` and ``default_minute``
|
||||||
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
if you supply a date, such as ``last thursday``, but no specific time, the entry will be created at this time
|
||||||
- ``timeformat``
|
- ``timeformat``
|
||||||
how to format the timestamps in your journal, see the [python docs](http://docs.python.org/library/time.html#time.strftime) for reference
|
how to format the timestamps in your journal, see the `python docs <http://docs.python.org/library/time.html#time.strftime>`_ for reference
|
||||||
- ``highlight``
|
- ``highlight``
|
||||||
if ``true``, tags will be highlighted in cyan.
|
if ``true``, tags will be highlighted in cyan.
|
||||||
- ``linewrap``
|
- ``linewrap``
|
||||||
|
@ -44,16 +44,13 @@ The configuration file is a simple JSON file with the following options.
|
||||||
DayOne Integration
|
DayOne Integration
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Using your DayOne journal instead of a flat text file is dead simple - instead of pointing to a text file, change your `.jrnl_conf` to point to your DayOne journal. This is a folder ending with `.dayone`, and it's located at
|
Using your DayOne journal instead of a flat text file is dead simple -- instead of pointing to a text file, change your ``.jrnl_conf`` to point to your DayOne journal. This is a folder ending with ``.dayone``, and it's located at
|
||||||
|
|
||||||
* ``~/Library/Application Support/Day One/`` by default
|
* ``~/Library/Application Support/Day One/`` by default
|
||||||
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
* ``~/Dropbox/Apps/Day One/`` if you're syncing with Dropbox and
|
||||||
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
* ``~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/`` if you're syncing with iCloud.
|
||||||
|
|
||||||
Instead of all entries being in a single file, each entry will live in a separate `plist` file. You can also star entries when you write them:
|
Instead of all entries being in a single file, each entry will live in a separate `plist` file.
|
||||||
|
|
||||||
jrnl -star yesterday: Lunch with @Arthur
|
|
||||||
|
|
||||||
Multiple journal files
|
Multiple journal files
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
@ -72,6 +69,9 @@ You can configure _jrnl_ to use with multiple journals (eg. ``private`` and ``wo
|
||||||
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
The ``default`` journal gets created the first time you start _jrnl_. Now you can access the ``work`` journal by using ``jrnl work`` instead of ``jrnl``, eg. ::
|
||||||
|
|
||||||
jrnl work at 10am: Meeting with @Steve
|
jrnl work at 10am: Meeting with @Steve
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
jrnl work -n 3
|
jrnl work -n 3
|
||||||
|
|
||||||
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
will both use ``~/work.txt``, while ``jrnl -n 3`` will display the last three entries from ``~/journal.txt`` (and so does ``jrnl default -n 3``).
|
||||||
|
|
|
@ -99,6 +99,9 @@ pygments_style = 'native'
|
||||||
# a list of builtin themes.
|
# a list of builtin themes.
|
||||||
html_theme = 'jrnl'
|
html_theme = 'jrnl'
|
||||||
|
|
||||||
|
# On read the docs, use their standard theme.
|
||||||
|
RTD_NEW_THEME = True
|
||||||
|
|
||||||
# Theme options are theme-specific and customize the look and feel of a theme
|
# Theme options are theme-specific and customize the look and feel of a theme
|
||||||
# further. For a list of options available for each theme, see the
|
# further. For a list of options available for each theme, see the
|
||||||
# documentation.
|
# documentation.
|
||||||
|
|
|
@ -15,7 +15,7 @@ If it is already encrypted, you will first be asked for the current password. Yo
|
||||||
|
|
||||||
jrnl --decrypt
|
jrnl --decrypt
|
||||||
|
|
||||||
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. `jrnl --decrypt plain_text_copy.txt`, to leave your original file untouched.
|
will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. ``jrnl --decrypt plain_text_copy.txt``, to leave your original file untouched.
|
||||||
|
|
||||||
|
|
||||||
Storing passwords in your keychain
|
Storing passwords in your keychain
|
||||||
|
@ -23,7 +23,7 @@ Storing passwords in your keychain
|
||||||
|
|
||||||
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won't have to enter your password every time you want to write or read your journal.
|
||||||
|
|
||||||
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run `jrnl --encrypt` on an encrypted journal and use the same password again.
|
If you don't initially store the password in the keychain but decide to do so at a later point -- or maybe want to store it on one computer but not on another -- you can simply run ``jrnl --encrypt`` on an encrypted journal and use the same password again.
|
||||||
|
|
||||||
|
|
||||||
Manual decryption
|
Manual decryption
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -52,12 +51,12 @@
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">jrnl</span> <span class="o">--</span><span class="n">decrypt</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="n">jrnl</span> <span class="o">--</span><span class="n">decrypt</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. <cite>jrnl –decrypt plain_text_copy.txt</cite>, to leave your original file untouched.</p>
|
<p>will replace your encrypted journal file by a Journal in plain text. You can also specify a filename, ie. <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">--decrypt</span> <span class="pre">plain_text_copy.txt</span></tt>, to leave your original file untouched.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="storing-passwords-in-your-keychain">
|
<div class="section" id="storing-passwords-in-your-keychain">
|
||||||
<h2>Storing passwords in your keychain<a class="headerlink" href="#storing-passwords-in-your-keychain" title="Permalink to this headline">¶</a></h2>
|
<h2>Storing passwords in your keychain<a class="headerlink" href="#storing-passwords-in-your-keychain" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won’t have to enter your password every time you want to write or read your journal.</p>
|
<p>Whenever you encrypt your journal, you are asked whether you want to store the encryption password in your keychain. If you do this, you won’t have to enter your password every time you want to write or read your journal.</p>
|
||||||
<p>If you don’t initially store the password in the keychain but decide to do so at a later point – or maybe want to store it on one computer but not on another – you can simply run <cite>jrnl –encrypt</cite> on an encrypted journal and use the same password again.</p>
|
<p>If you don’t initially store the password in the keychain but decide to do so at a later point – or maybe want to store it on one computer but not on another – you can simply run <tt class="docutils literal"><span class="pre">jrnl</span> <span class="pre">--encrypt</span></tt> on an encrypted journal and use the same password again.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="manual-decryption">
|
<div class="section" id="manual-decryption">
|
||||||
<h2>Manual decryption<a class="headerlink" href="#manual-decryption" title="Permalink to this headline">¶</a></h2>
|
<h2>Manual decryption<a class="headerlink" href="#manual-decryption" title="Permalink to this headline">¶</a></h2>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -16,7 +14,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
BIN
jrnl/Entry.pyc
BIN
jrnl/Entry.pyc
Binary file not shown.
BIN
jrnl/Journal.pyc
BIN
jrnl/Journal.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
jrnl/install.pyc
BIN
jrnl/install.pyc
Binary file not shown.
BIN
jrnl/jrnl.pyc
BIN
jrnl/jrnl.pyc
Binary file not shown.
BIN
jrnl/util.pyc
BIN
jrnl/util.pyc
Binary file not shown.
BIN
objects.inv
BIN
objects.inv
Binary file not shown.
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -30,6 +29,8 @@
|
||||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" id="searchindexloader"></script>
|
||||||
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
|
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
|
||||||
<link rel="apple-touch-icon-precomposed" href="_static/img/favicon-152.png">
|
<link rel="apple-touch-icon-precomposed" href="_static/img/favicon-152.png">
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '1.6.3',
|
VERSION: '1.6.3',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
|
Loading…
Add table
Reference in a new issue