From 7d577baf66d0bd75e3565fe1c1954d55b6a87ce3 Mon Sep 17 00:00:00 2001 From: Manuel Ebert Date: Sun, 22 Dec 2013 18:46:49 +0100 Subject: [PATCH] Updated docs from master --- _sources/advanced.txt | 5 +- _sources/export.txt | 2 + _sources/overview.txt | 6 +- _sources/usage.txt | 36 +++++- advanced.html | 18 +-- docs/_build/doctrees/advanced.doctree | Bin 31245 -> 31657 bytes docs/_build/doctrees/environment.pickle | Bin 16624 -> 17754 bytes docs/_build/doctrees/export.doctree | Bin 10756 -> 10631 bytes docs/_build/doctrees/index.doctree | Bin 3691 -> 3691 bytes docs/_build/doctrees/overview.doctree | Bin 7958 -> 8348 bytes docs/_build/doctrees/usage.doctree | Bin 19971 -> 27304 bytes docs/_build/html/.buildinfo | 2 +- docs/_build/html/_sources/advanced.txt | 5 +- docs/_build/html/_sources/export.txt | 2 + docs/_build/html/_sources/overview.txt | 6 +- docs/_build/html/_sources/usage.txt | 36 +++++- docs/_build/html/advanced.html | 18 +-- docs/_build/html/encryption.html | 6 +- docs/_build/html/export.html | 11 +- docs/_build/html/genindex.html | 6 +- docs/_build/html/installation.html | 6 +- docs/_build/html/objects.inv | Bin 325 -> 326 bytes docs/_build/html/overview.html | 10 +- docs/_build/html/recipes.html | 6 +- docs/_build/html/search.html | 6 +- docs/_build/html/searchindex.js | 2 +- docs/_build/html/usage.html | 37 +++++- docs/advanced.rst | 5 +- docs/export.rst | 2 + docs/overview.rst | 6 +- docs/usage.rst | 36 +++++- encryption.html | 6 +- export.html | 11 +- genindex.html | 6 +- installation.html | 6 +- jrnl/Entry.py | 17 ++- jrnl/Entry.pyc | Bin 3864 -> 4405 bytes jrnl/Journal.py | 160 ++++++++++++++++++------ jrnl/Journal.pyc | Bin 13849 -> 16584 bytes jrnl/__init__.py | 2 +- jrnl/__init__.pyc | Bin 540 -> 540 bytes jrnl/cli.py | 44 +++---- jrnl/cli.pyc | Bin 9568 -> 9544 bytes jrnl/exporters.pyc | Bin 5040 -> 5040 bytes jrnl/install.pyc | Bin 3919 -> 3919 bytes jrnl/jrnl.pyc | Bin 9302 -> 9302 bytes jrnl/util.py | 19 +++ jrnl/util.pyc | Bin 5124 -> 5804 bytes objects.inv | Bin 325 -> 326 bytes overview.html | 10 +- recipes.html | 6 +- search.html | 6 +- searchindex.js | 2 +- usage.html | 37 +++++- 54 files changed, 451 insertions(+), 156 deletions(-) diff --git a/_sources/advanced.txt b/_sources/advanced.txt index 6e49ea11..b00c4525 100644 --- a/_sources/advanced.txt +++ b/_sources/advanced.txt @@ -6,12 +6,12 @@ Advanced Usage Configuration File ------------------- -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. +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`` paths to your journal files - ``editor`` - if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure _jrnl_ waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). + if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure *jrnl* waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). - ``encrypt`` if ``true``, encrypts your journal using AES. - ``tagsymbols`` @@ -51,6 +51,7 @@ Using your DayOne journal instead of a flat text file is dead simple -- instead * ``~/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. + Multiple journal files ---------------------- diff --git a/_sources/export.txt b/_sources/export.txt index 4a040b09..e017951d 100644 --- a/_sources/export.txt +++ b/_sources/export.txt @@ -15,6 +15,8 @@ you'll get a list of all tags you used in your journal, sorted by most frequent. List of all entries ------------------- +:: + jrnl --short Will only display the date and title of each entry. diff --git a/_sources/overview.txt b/_sources/overview.txt index 532fde36..726fbcf1 100644 --- a/_sources/overview.txt +++ b/_sources/overview.txt @@ -15,5 +15,9 @@ Optionally, your journal can be encrypted using the `256-bit AES `):: + + jrnl -until 1950 @texas -and @history --edit + +Will open your editor with all entries tagged with ``@texas`` and ``@history`` before 1950. You can make any changes to them you want; after you save the file and close the editor, your journal will be updated. + +Of course, if you are using multiple journals, you can also edit e.g. the latest entry of your work journal with ``jrnl work -n 1 --edit``. In any case, this will bring up your editor and save (and, if applicable, encrypt) your edited journal after you save and exit the editor. + +You can also use this feature for deleting entries from your journal:: + + jrnl @girlfriend -until 'june 2012' --edit + +Just select all text, press delete, and everything is gone... + +Editing DayOne Journals +~~~~~~~~~~~~~~~~~~~~~~~ + +DayOne journals can be edited exactly the same way, however the output looks a little bit different because of the way DayOne stores its entries: + +.. code-block:: output + + # af8dbd0d43fb55458f11aad586ea2abf + 2013-05-02 15:30 I told everyone I built my @robot wife for sex. + But late at night when we're alone we mostly play Battleship. + + # 2391048fe24111e1983ed49a20be6f9e + 2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack. + I just figured I'd be on the other side. + +The long strings starting with hash symbol are the so-called UUIDs, unique identifiers for each entry. Don't touch them. If you do, then the old entry would get deleted and a new one written, which means that you could DayOne loose data that jrnl can't handle (such as as the entry's geolocation). diff --git a/advanced.html b/advanced.html index b3a9408b..95265292 100644 --- a/advanced.html +++ b/advanced.html @@ -7,7 +7,7 @@ - Advanced Usage — jrnl 1.6.6 documentation + Advanced Usage — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -44,7 +44,7 @@

Advanced Usage

Configuration File

-

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.

+

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
    @@ -54,7 +54,7 @@
  • editor
    -

    if set, executes this command to launch an external editor for writing your entries, e.g. vim or subl -w (note the -w flag to make sure _jrnl_ waits for Sublime Text to close the file before writing into the journal. If you’re using MacVim, that would be mvim -f).

    +

    if set, executes this command to launch an external editor for writing your entries, e.g. vim or subl -w (note the -w flag to make sure jrnl waits for Sublime Text to close the file before writing into the journal. If you’re using MacVim, that would be mvim -f).

  • @@ -114,9 +114,10 @@
  • ~/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.
-

Instead of all entries being in a single file, each entry will live in a separate plist file. -Multiple journal files -———————-

+

Instead of all entries being in a single file, each entry will live in a separate plist file.

+
+
+

Multiple journal files

You can configure _jrnl_ to use with multiple journals (eg. private and work) by defining more journals in your .jrnl_config, for example:

{
 ...
@@ -171,6 +172,7 @@ Multiple journal files
 
  • Advanced Usage
  • FAQ
  • diff --git a/docs/_build/doctrees/advanced.doctree b/docs/_build/doctrees/advanced.doctree index 6bf11233fb5deaa416ab2ebb493325f6fa69daf2..86bf92015fc870156687cccf516c5a3ef5c42253 100644 GIT binary patch literal 31657 zcmeHQ2Y4LC**4%RR}3~CRyJVSSQ4TI451kWMj!*`;2C*4YW=WF}zon?hA2}wvG zl@!u@@4YvYkluUmz4!j7{O|kC?A~6Hv5g(_KhN(6G`BNfpKrb?J2U&x11Iv;iAKFp z3I;0Gyc_iJvFujrJ^lgfZ}ATd{e${aiz>OYTc4@9fj>9&=k=wR&6zVNm*0`AOt^Wc z5#**^fBtBCC35q*nQFy#3YEG$CAoT`TJaZ{l8I_%vM|*!na*UP;{xC@RyDG%TvoH8Y0jx6M)r(>#rD1_2k`&sulI%(bURZqh6h? zR_m2&-OU8`oYei5BL}1w&<2Hk;2#qDhxU2%Q_CU)^cw@L@)o348uj~=>aX?|rdGBn z->=Fa<}FICj#Tfrs%uf;AMW*}78}L;Rq-Rd#i@l6L;uJ|YT<-eDCMDwf7F$`6ZK%QD3#J6B_E7f3`kJ-kH7U6|Af##aXhu4 zo|~dY{dKANMp(Zu)sw5&r7+&8qq^3I{)WEPLA3ZuW2uGXxryz4L|Z0yA5w>WUdF1QipY=4@J%i{rh`I zk~*sU+|KGQ)Jv$6^C0y3p??8{)+TyE)I?L-L@$IMr%?}xI1eobEpRghyr@M$2o?)O zZWp)P=o)t?JZrcchf7eumxlfp2;h<1`Hk^hW89-LFAM#V$e30LPt9|A3wQqt@30(g zGwLnOQH}*P4CUC`=TW~aL;ou3$6&L$C8P{9q+AWIml+*BRc>1gd8=GZ^crt?HcBbz za&72eM_owuO4X&^7-%**1iG5n(o8hna<5P zY#q+H>*aR10Yasdi(xckYWy2;E}U@?&2k8i8-ZB>WZ-18HxCXFJwvM5?0~an(wPAx z(o*`_Z2F>0GMl%K4sW?6bLrMAF3x719XToF#t~oxS82Ij_&L*s5`}UCP(o0zAzpi87#Q)DMKo8_BsyKo z-wxzb=$9!E+g~S$QOKjKb35C@c%xKu>zPs^K%et4xYff${}GX{HqfUQ zC!qXWY0XFWrRJMV|50hg;yL~3df5S+p4fD8i=#ktTStdVei<~wa*uyIm_9o6A48=# zYAxEaT9D25IQUn~)xE%}R~d(;bqou&9`3CfMFU$DQ}iE80Uy^{-9w|1JdbbhWzY{4 zDg_-8SZF!1DiAZFEk3Mk$g`cI{reeG)QTE#o;nBvej zF_p6aG^+dbPVt6D7E`=ubl4uj4`zQR6K0=)cTZyVrX`+{Q4vncciS z{>!1nD?LT{%fi6QDDCdqx-Le0bXH;IoeaczLW6K$PyBM z1GKp(a&Lr!Zwmc4(>Nsk8Yrkba&{ECp8uA{I9e#Xi{;H+ZJPdD6~SX$d0XheohqDw zW|z&n`9i%a+ENOWX8hsqbTQ+^$VUe?6V);%4|%qqQm#>%@Ei=8Fv4_oCTP%|$*MTh zf(C$rgSIkERixks8y$CGY5>EO9fdN+Ie^M$F&!*9{nL2t;}p&giZo-gl$#=>a&9}u zISp~04IE2tz@V&950uL`U>C}+!$B@VCrZ`8(BPyE<0FWIL7bHZ^Sr7uu&xqyi0c5; z2q^6pxru8FWe(tSb!WQTDCIfE%4W-u*y+azZv8+UBs`4_@90vKab$R>$Cm%D(0_OA zQt#=6@Aclsnt!jyMtxW4zmN5?wzWR~zcyyAjd$6GrIG9Xo#q`HSxWPMpwDBFx;ykg zNc;9^kc#}>{}8J6E=x#*(}!mz^brkC9}WGFfsXef2B(jA0{41%lj|qYoacj;VdQ@j zE%#HQ|7qh6z1~N)fpS2^i5KI~XF~t8rWABP*NyI7r2Bb|KVJy_FH)Jq;Vl2}A+vhO zXOf}!OPw|y8d*l0ewh=L8&FyM&y@aG-~e9@{jags_Ae_q^cUb$9NT|A^uIxd3)JT| z_|j{?*=Y&j&=TK*Ar1mCK>cq+;_rn1ca2l_dS8!S7C>_W#5nGM4^ZC^{U4A`l$ns= zhoS!?7IB3z5%Vd{~JQEiDt9xbtuwrXBFvp5a~d`_D}o22ZKL^{vRW0ew~ztvnZ#t|MLF?q(6uL zU&wP77$aT#FvTs`yj)NSdi=klLjM-}e~-jAeImvFpIOEJhpj4hpZ-4~!@olR-;v;d zQ^8XUBNj3T(M0E!KDGEyceZi>*x!1K9Ec>8gYcJ{-Y23o9YyAz<*ki^0INPaoRlwR(Z)dX#hQAsZC;B!jCj7xuIo$UV_B%SNTu&U$EM1$FJ$LenjQ zkqqD&iVh+PJM+aqC!C&SBOE*a4?+o9j9{KO1+kBD@}v(X5o{BuMVBdtOePO32d!t#mb;V zmyv@h%&-M=q@J{Sn@lVqwE;NPu_M?49wt6%Ek|@M5ztS(tF@SpML8g^PZ> zE;I3ap$Tz83Qd^kc+Eq&wpN={i90MBtzO7D%C*%_sDgQ;plP*kSKQtrZNUneWXe`M zg&(1K3ht!u+ymnvkpCx5Q>2#3Ku}PbJIph32=yy!Ap^m7{0gO{&rW*X?kfl%r*V?O zp{!J9VOh~aMu#eXg;LY!=v7nXTgKtov-w?#^%f~GRS>4;ol_E70_3AH)RBbJz~3ld zkZl|bgo?T%*@=s^~U@1;5$2F1TgA=+)x6#u~}hY;M` z5{Ylxm4qmP0yiTGb8K!ntq%Dw99NLQS8T~95u~dFfG{f1QbBXJCKC(M5SUXnvCO$2I{#$ zy?3Ego@97ES$RFh@Y)A-V}tE#40oq8eX3>pY_%ifITp9eIWvRvs?!|5nH=p72!Q=i z<(lqUNWSbs|ANsRyNqmNx0Z8`SFhJL4eCCi0aGwgm8ro}VO(-DGf091UcFpetG|M} zO!CLM*^Dm5$D3^0dYPxG*zL9392-6z<=V?UL$!RS(bDuX&+3ZXTckng8P8_QUgkOY z5z2EF+(|#P(?b7M_9;@;WLNV%6}-bnBde(7^R3wrP-TDbGQY24g<GunVCAJ9w>8$IQ2#rUAX&^4{S4#BCOm_uGZ1d1aE*oyPk zd406shsh?gRMBcGA3?5nL@v40LO#m89&G00hD+$n0aj~(myZDiDt{bFD4)PzPWL+D zV&B77CEU^6;yKP| zP_DhtXH|~R897Yv^ZBm0y+w*lhxh_h_C8<4k5Im(;7miWDZ< zKYUq9cW5zk7{&OC7P5c%Dt?9XHGMX_hFfeYUq=Zlh2kc=hi@ptEY!bAV0I7R!jDkC zt*}l}Nx`qa(-pV3NKq)w+aq z9k@;x^4OwUoz#bFqh4#&2b^uL?g7bWCv&9$%PWqZjODA9b=b|3t7tI^I;AQ$dysrE z(9OWAf5#ygK@xP43CSv@%D{gO*%CVZ};AM_Rj05l^lmqdXp>wib z+x@6(kzyxf%RwqchrT06QsB8-$k;MZC7y33He0-!^&<;VfO@80$%io4q2rqigw{Z(ml7;X6plVEcPNB|;dYSY0dIP)Zcx0f8jcRu8zBcPjcsS26f%i2!K;y_l zmx9Gz$9?^IoFU>toJ|f6WRHu0WIa#DQuY0Ga2ilOx4Nls1~rF5n64;MnUuq%A`<1mqNo= z9luenn$gvDXCu`xbuJ7-r)-nVfM5|Mf;61YvFfRyplK^C-$vXpx9tLZk zYU`2H0EP-WT{)d$IUU4syOtZ87dd5k%V$C{&Kwa-zaHZ*ygjwBl&efNaCTQN z#N=&w z{cll4l6GpADp5>JYe7N*sUXK&&C}je<aIX+|9Tn=B3t~2AHv`E{(74s^+KW6`4bf@$!Kive1sG26ybmoUH$wr{X=;;OW#U5#e~&S)Qh4=9u$_F2moUsKq^90dYoCo}omaX^5szhwQvs;Bvb! z;{t3QETDbkegk0VKYcLY@T*keD*sn9C!K@@ysCZs_I;z;g)C z;qi0vBb4VUxKp&$C|q(H{d_I%pf)l@?|y+6a?SUJ_!Y{F^w~*o*dv`N^ozT)=`B)5 za(W3iN=1B?LDbj83ERW$l*}B{ zfUmGxU#$qQu?XhX=gor`Nwqd!-8qPA4U+X}*4cPeHJGVP!~x%eGuF#%L8?przD_xG z)JXge^z}qz{k{P|LV2TtJ4H*4QYP#7O=?k`s0JxavIf_Jh_f38eYYX_9wqo* zLr~v(?FKR`f}*$7_+3iqeU?z6&FQbGj`Ps+MfOUsVDR+RnWNiIyCi+)DK}$H?`G4n z=V~?kYp@9!zwGMpkHY3swUOsru8wy9ewCx6CS$+&0Ls-b?pCosXvH?~=9-Oae~JyM zX|tsNeMrUVkb2})I?0E%kpA}({0ilx`t0aXI~gl!?-P~u=4&dxD3PRZo3-<`a zbsqW?{#>N<&@-bd{;48x9{Mx<3gzee?C8~nS9HC)P<}x&y+ul5BMt8&lV2)kg0-EC z#;krtgyCIL{xu+AkKZ5(<+n=DDOz?E502vjpjhYm8pxvNjFlSGutFj%}SJ)v5uBX9_vCPXcqH9yw-gLg1oU;_B zIFIB~zPl4!iA(M#`2$33HI_ELKdR)N#@ZCs%byfrShq*r8`b2`AOxHK1xYA>RjOvw z)xDt#jaUPy40axWQ`&#Gw9VWkHYi==f3&DwTSJ5G=^rSEXRsAoJozWGAojnIgz|62 zH!X_Hk^!8JP%BO59Hb}*Ai-u4{AFv3i(5rLNP*^BAhUnS)H&syr}?wXJ0IncmnZj$ zBn$8iVHY9^WsxEqVaX;b?D4?Z9jB5WLvgWETw*AucNe==)ul>fnWbTFT5Hag>9SOL zxt7na@(PqgW$t82BFn+Zhw3YlU^|EsF{+boQgzPn+uFvV26vU>t~R*3F|rjdRtI4) zTEjg|aSpdQ*Mas;c$+?ecjs%O7P@AWbCbSHUt7a+z5jSv;1wLRRs8aUBmIc^)6Ea2)>Jub&^ z=;#&*yJ29!8O1RR=JKM*+{6U;FPNOw9#Gzc zhIe}3^Jz8W$;xfWa%+#gr)d7{7CaT@$;f*eo?*Vzk%V%FA{+COP11ZkITxER_BXko z!9P>+&ocOW`(r0;s~VdW<7|t;!&WW6%aD4G7S68A{ZS5GxX&y0dN~)FQ0P1)p`5Q2 zj6!6XREUu{xp*!Y7|aV5bF;zJc%6i5RpKIrz1YHy`X(CQM$uOyvaM(azXz;P8oq3!N-l&gUOdu&4z$~ELPT#_{$^VdDR1iXCK^3S*}M3guDSsC=Vb-D6 z0vPMGY9%=o!8+qeLYYuFb9AE>4qRy<+fC#Z+D$;WT8FV=QcK%~GGy3OOrabV#$iR% zu;L*X;uMhJrKOTEEsQLaEsRY$ss!0?uu6(mHduNEWCYPFensJ`7A_IljG-xgO$%q2 z-bXp4k0To~MUV;M10deLafgNur=i>i zx8__@o{n6o^9&@RJX1*+?;*>i_t5z|E9hAU{n?8C9D}ZY+5s9Xlo(b#SJ9ql(cTIU zoIBbXrM)c*Q$*cYkAl6QWSS{ylY*I)MqQ_!k)pWClP8pPo*LTeD!$*5H)!PT%Ui5 zmcP`Lr-!i37Y$dOk zqTmomvK-z7L=jAn4&WOm*vyXIpg5V8!<-uOmscVOmG&wmI2*6UW>rs%!GqOhgVSpi=(QH8%LM&( zTGY;-TU`e&F2;8mtvn&2Vlv~BwuH-{_hT9D6T`rebENxqlW#*l>NsI`}BTc)oR2~D8o-$hTZ$+Pig7wru;O@VM;o3 zGm^+>kPCx;7D*_dQxe9YWSKN5uVL7`s3V^@JieejzG!&p-2{6_uhlePQmS9JRLvDi z?NN?R>?;Z}yLrBfa+rsem+@hxTXZNozM zHtiL;*gzZtt;3KT-QIVU^mi@ke?ijC+;+(~Uy18a8UArrt}vp3JpP0fGZb5DaLC15^nF*0dL*r+JkSzq+h^m_( za4to+>Y`VxU=R;{-5E*|dBV(gmqr>r!NX`_5)&aDDgx52<1l#?i4LS8alZ}J zMMOIf{-h%P*^0ytn?6pr`ithxUI~9iIVyoO*JaKg(@?pS_zxAz~9tDWatO^3!@rgqH zEFnHhIF|>VQ**bB4sVr1fXjPwAPTXm_Bs20m?$$!WLLeZh`o@?3v20d~j%B!*te{m@_VN)w3FU;^% zJM9$6dXzxUL%^>pd3;Z_hSLy;3;5cMY(Uv)YKcrv00G|?ZAeK@LSE`9d(&OLiu*(c z3T}N;FS_I1c7w8!5R2e#6Rv*6vLDa4;q#)YWTRHo{bM=P;-~o ztK=Aocrppj)7@<{#NSJ!lafHh`HfSUcc5F5Q~6^NZ-CW%`{Xn{Q+}x16DXJzfqM&Kj`$5o}&+sg)1!CGgEnIg@bS=F!yAsPU>~V5cgNj%3Uu z21huOFLD;ZQY)xH07MV`OFX@~iP`h=?s#KL&L*YQ3b#CtZ)yhh8Jy(z@QO;#LH_Nj zW6X^#v(djl3C*Wy6LmS44@>z4&Pt=4*~wrf=OGW3x;)<~*D`Ut59EC0BZT3zpoPk0 z)dF8&fR|0@gqxZm4Q{?I%Y_QNiq*zZ5i37~kN{QS?we7FgQ#w;|AdoI%gaT4JlNe? zz=viLk{W@v;>9FAFEyVha|%;3tR%J0;oLh4xRjtOa*5`y!k33~+cR!CS192-t@zZd zTKrNJ-j+HBs+Qvz+H|9gITpJGK)0t3aw|LJG9_jduLW)+4=u|j8PV(&_}nPY^=ELV zNI$m}$mN>9lGejVGR(-l?u{VcHDz^DE_`nIh+fH=z$ zWOvAJoxPi)%#fttG{z=aU?4DW|Py82!)=uQqS$oG;hfoXZBp)R3sDpd33A2+Zt^i zAVqCV%NVmWO#{0`KCqCNN&Z-d){}IUDP-QBI?4nJ*WAt#pd#vC#(t_-Jb<9t*&5X5 z6i5M?W2x2Jwy>?m75&_uTVY-2rHE3r;KjIs1P)^Iwwt`AYRkAAD3N$$JhiHQxS$(v zq)ena`e9+I;CCoh{O$8ro4vn>;ZloLIJkJYnbaInyc>&~`10;)jnqoCh~|f;&B&&v z6ny-}y?CdvcNV3F-nnb9-$*Tr`kX)lfR0HWfAty2vrm#EQgqbgT&FDbSv$hukG7A%L-WnNk||G zX{14V@4ffld+)vX-rN88do#PYS7dBs2l9P?f1tUYd41lzDLXTJc zt>6YJK33dnBjxY6?k0b3=qC~Erx}}*pAZU&Ujba00)~aI#cQWvog#OaZ@_JqZcdX(DL=F69Tm9vk&Q+IH(G)_7-JU8TAH}>K*JY&Mc3V8#Kxt;-xZ+qCEf5W@gcZ zS1cDGu7B88|L}p%x`1d?E^6Wk)WngYe-vs$^3ztazU(p>YG}wAizsf$EPzFzyWj84 z%`C8RPA64y>(ZsH8K2D?z%FuQuIsx-PYnJJATzC8?Iv)IJ@t7?Pmj zuetdqe{JX=GoD%4$WPH~{;`<_Mp*y2Oe)`KNO8Q`K$RRH`U3-*{b|*8TQiHs^Ap>I z^>+du3e7rk1OLRWnS~SOd=TLG`mLGyCU+3O09!2hLmo^uuUxFUej4?(C~{H%ByX;F z*w*HFr-lKfhpVLglVP}1LjTkOuP-ylgH=4oTbnt|-BAa`7^u527o2Zwd}d7bI4$%~ z_fp=Gfp=_Xp(W#=;X#f240tDQ_116oPT1Ux7){j&zV#a_y7dg+mQ z9z@C<(vvMl0QsFM3a=yOB=JP55V9*ucf=x>aS zX@&6AJeRj|_eZ?ddD`X*Z(*KtETmy5$EE>~`i+MEX6nbNaZy{;xP(#Te&BkU(a}@o zu52T3m5Yhq-y5Ed(iZ4)Rp@7^3#pE(E}h0ev&kba)xDH|HKe;H^s|)C*>BFAYimts zB42f)rtdlp&vmBrGY(saGwyo%?QVd`=Hz3TR{R@sE}U@?vGUDwV?8j7fDD}64e23b zkCA9@$k{mQ%zzCkDfL`-_|mb9HjiGi@zSx&HgCE(=WNeQF+W~*oxoK(ZVz70bg@i< zoB(tXPpbu2oZK-Tw6sx!=T*=m(y1jcrOP`(u~G-G%eQPE)hG_i4NoPTtd+~P>0))t zsnyxUf+7FfR$XNl$AUk8u9QqXk9zgLsTq;Kms-_+<8=>E%$ajxa!Uo$zf0_gjp$&SsD_Ua5td^L8B~}Bu zC$9fs$b5b1KP0lp_M|;72ijh2v>|xi5c&_LI(wJ2v6tK3D#n}TvfCId7X$P=H^QZE z3jK#gy4ql$S(1SAA5LpNVj#1?WcoK}5s&8#qWfhhYGiC`TnS^uYQ7xgaw!M@>iLEjIE@;ku{gF+BVYivZt|Q_G_u7pMgP$h z@G;%hogR(kd2DA-gTA0xE$TqlSmHJa^|;V~ys-r6J)xUkzjq5m!4vO-m{s#hpm=-e zKbdL{bgH>?6(48E6$f>Qsg(VvP~E3?i{xiwtS+jC^cBc`_s9edHQ~qqD`Y$%M(Cvhr~2A%!s(HvB>Xz4bywtG4^7_?`fsF_NcvT(8G8>* zlOo^r-_#sO6V^VZm8)&nf3qTZY)o$n{kKwuW6>^iIk!-3)I^(7ancM_+#N0^mlz)D z$Y-Kf!3?9o23F2Ds}r7saTSK4F594E(4EPeIMad_f-#0RL(FHS=mzT@cW7$J$>p{e zE4iEls9X;7!m=|sjmH7b<;>VArx}yw{1h2g^4l;VYKrTO>4*y>w_+nuE?a6FUr~APPo$Ru;_dYRbU+Ow?N*513{^X*cC3t}a$M%F8#L=~}Z~;9xA5 zt3YCBa59%$Hxx$^PeaGsdemebI^OOvG`u79-x<5qySm}~y|=LD-|ey0zbEwH%lcT` zULXHo8?)BNJ8Z+!(DuG=^QK3Z(Y)^;@EFBD5c(gaeN!66B7gTkglc_{C8W{o!?P0l zh{q`P(a`@G=y)Gul=^r#aKHBfa{UCF^8&CkjQmfc<$fykKW*Hh-}|UGP|t)WkMZX- zq5oM^3c8=`MfW|V`+1E&UkLp#Qkg^HEdTEzvwFy9lA-rY-8M~+ET>Js%(={UsH}Zw zO8+ZxfUk!B*H~-&mK7ZO3z$04SHB+m-yp+<>hl_W>9ybNwghl!iEqIW`vVxD{-7Xbcc=>IC>nkY-i_3P084I$V>bK2`rq~Fde((fSB zT)+-a`@aW+KZO1tBWZq}l;+Wt=3di(`G10}e-8b>P}O^vXom#;<_Wub@{}uZGj%wwv$y#B}tsC?(L5FB}$U$ zd}XQ9?NVW61!Y*Kh3JB1Ievw*LZ73M5L;1JBH!yTQPML(vfw7{SVK7sf2~86$RYMAE~%o^mcte7h!_k! zkJN`wd97aHc@)aohfAO0_8VMX$=}^-AooNMCyvtUWSt&aNnMZDLKEJ>NY>yPigLIa z$}w8lr?DS}s0K=BdJ*9aA(Z1R2&Z0=v(N>P*ZfYVh5-2vpd2=4-@pbU>+lS|Cm;#s zL`BwhuoBtC1_s6&VBB?MlJ$n(pwb&M^mY+9R&!@fKdppMvV@0?_W7w`rZQf$iw|4O zZ_Yz7Y2b?_sf*jdI&L1bC%_Il16y3z(Rt3ei$&OV2svg+LMIb)vXbvKV!RX~r=VP8 zz^N+DX+|0o15WRW+h3yKtbj9^G6viSKSDWE!TYioc5AXndXy+qG8mkt47zj~Ie@}! z&_V`-v+*mGbM)D+tmbH|$gXl<6rqMFbuu2Ds~EG8KaaqS2j}BQC>JPfUr9;9S1;^| z+h3wAl*Zs*=iqv zAE7)@!TYjL*$v|$kpDMLQ=*p1K(JM1?lRBFfzpAJ{YTKOUa;YQfHVQu<_+e6Y&WDSCS3AlCTxS~#5TyGudkApnI9LnNWxpm=?|fQPE4O>9*^RIzWg z*!udeGoZ1iZ&H9xnGGe1{VXD9=#XzLJtc<9udM-2M_}p>)q;YR845E zlelF@W6tL(*z;pBuzi6(bc$?M1KSs(Tto1S6!*mjH~SdW{JpEHsarBYzeFYNR4hGm zFpc?AEga6CvBzr2%RmB_e>sv+UZM2*?gl-06D{2R{xNRuDS0IT;6JZYman!fFJ&9t zJK=?W#A`@4GmjhPI(L9(7C@G!6y>#mF{~ ztZ#d-5_z8`!j3wZ^NLem8UOcKoaDSVp5w%DnCD;<+{8@2+POOUekI)1+~PUT2T-oP z&j(eG4;eX3@AKiFxcw!HOo#XgQ}#X|#g9-vrr>?qbGmfEpfFl;!c^_9H7HS-WdHDS zCEcaP$RQNt6I#gr;gk3k%BS?%Y|(AArF>fU&2(wWCEP>fQd=5WC`MkpR zm6R0x>I*$_`%4ss!hMnHaCR|l64#b|37PPpFCz)%EBG5V8S?1r9lokyUyH%O_3Qf3 zDY4ZIT)%;G?H#_UxZg6k*&#@=+jT+q$pHRsCDzG1J#r}3{f-v4Rw=)WXK4C8B%yp? z3zMsq6wi*8f1n^gv>=_Ult0q^PNw}O5+L6nGfk{g{shn9`%@&L{0x613zJQ3VPLF< zNp`^}<>!XrFO=Xf4Z&SShRYd6cNPbJrIdedDSO(6xb1oxTVr*l1RF*hf+b5GxK0-f z*cDov)Q4KLQExVeoGq^IrO4$bv8@WrD~_Fv6>8Pvu`429)nXEK$~A17Ao*Y@)iGZE zjf&7|>ehJmwRO`M z$=LE26{1Vuk;5tQU$v02}|)q9l}UKa|6R*;FDyWG?dH_xmFWWu6i+GeWY6{XQCZ&R4Jn zF&LOG)Q3)itzuxh2;~}C7AtPb;AXQBVqaC7EFsVS5~WQBqNU2aQ`EGnxMf;6oL#p& zg2{4V!F(%_gtAge^z9xA$VtoCpmu-~T4f2b6Nnop2PFq;L8k_W0&Dmnl%s~Z&ZJFR zRwD!Q9gHNDLloOoFB!$v3zXx4vTMy>4mC6nQ<{exn!AA?D?CeZLw4t`LB2;x$q`@$ z-#=3M9%cDnjr4*t4mUNYJg3;;M7_fKd!t!w6uCpch7DhK?!GqXOn5jvFoE|qIzZ#d zLYIQYJ)T?X3plXDQ!g7FoQSH_u#g;hZn>;5<}g6VyPmv*qgMIB7F9i<#QkMFUr^!E zEbapaZpF=48HusFY=bP1Xr)p(62!ATgX85I_-@cwMyZs8e|lnJBlq@`3*89cW#EAcEZyMbQNPfA9!X6IN{am0Gf2%?XKWR zm`XZHbLiqmZY}x%yOpkvBR(vKO<_Z`A8#F$sX6)WwIcQfLaX)IaEHD@nG~z&QfT;^ z<2P#!b4sC-mu&&M4Q%Tp{D!;Kcg@{Xcugv`S>g&GZx+i9obz&UMygV8IM}|@V-F() zMpf0holq6ATNpVmjy5{aqXSAGT#b#eUtO=W5w`j}N6Y!f_h|eIWsN@fW#5h__P^_@ zXtr#5$#}X}73(s@NFPJdF-)Q?wHyl^M62VF;61YvFfRypkpN_*$q`F&3PJ{y z%sNYEf5y_aJpCXiXjZ4(2A86rh;oEPbbxc#LY(zVXVB2Wu%*95$|iW4^AAs8@N5ME z?uxy~LyHVSNJyVn=}$7!XYY-Y#V!LrT4 zGt1gI%W2?6*EyX$GuUZfb*r^N&cNfXnMLJ%b*hO|t#Thc>&^!TjLhO4mGXw5o}X~# zOcZ1mVUqxkZX)!ag~zUilk|u~@7ut#;p|@0O3ns3xWPF{Lb)&gMiUzv5l)Q8!ccXt zmY-+JvyX>K?`2&_TlIL{TQBFUw4LoZJ#q}qc!3rU>pq*^QbjHVCMjFxkdjPmS8*k`YekK`IqZ8MZ< zmE2?5Jqt~boIpEVOPt}oEXZ{r3R^q?2{ukB`@WKujs{S3z-jOw&qd2t1$>YJWD|;x zXzS@{8PkG9gOnU{yn}g0TJrq4NRLSm+H+$vt_V0OEfe^KeFpk$&S?(kXEx(5g^jJd z6vQQo{t~6IqbZ)6mPy4*u(b!LV>VMnFb70?Q1ws>BNUN@Qc_xdCCiFpwR~cmf|LzN z_DArEjE?j*N?OX%ak^qPXt;TuSme3Q8Iu7Xz|k`|nAH?mW)C0_4r25lL)UAV3UK~_ z;dQ=+w4TGH>XaR7=W>aY)j5JH8h`W<#?GX`7NXS3JTQ$p4|(W`XAr}VA6#6)O+VZ| zRBT{UhiR4F)gu*X+-`U6MXG9uZo8+W>a8ijaCXN%Xep^f2vo0+BotAJ`tDJQU`aZX z?cV~Gt6}BRW7BPQO9yXiX{VtL8ODa~D2IRZyiUt4WE#0pdV1dml>RJ{?g?@@|(i^0=@Ng~4WbgQmpa9Z%C%;J zudBM+{Toz{u9}Sf;*BU*zj%|1{bnn+dCAslRQpnFNKKn1{qHR*Mwiqhr_xE@s)h8w zx8WD|FX*!w^Cx5G-IAH!`i`Db^p|KV3i3{-W~#GSEG6#(LHPE&kzn%#{zkq{MU%eW zzZ2iK&LHnK#NMaG-fxIycL5RAK?Nh9W~axv@d2gtK}+X02(Ym=2F~M#AG?~2`M55o z^Wq^6w&Cm?L*uwh9vjyQWH+Lh`O-q~CkkBN&x3>VIdpPCBc}*MsZH1!S3F~n8Ln>>x6P+G)z8_YA;q3kQi8AsLkVkEP6bW{KD6hVK#0%Q9eo$3h z4*s}u{DkGmv6D3{o%)lS-DwqrPpAGA%Hh;pxY62>Pa^|rdD%metvQLGO*LK~VWiMgCY>cnabdpu+@V>wq zaP^{xx)is=SrLuR$&KlnY{MlAb{v3PR4`4e@QQ}$77sePPV$nIz~U4qZ(KijcVHuK z+1(&thKN1f_$w-TXN9Fl&Whals|qlzn~Uy_YVtJ@LQQ`iNhse?s%Fd5-JuGNSOaiP zM(l4Y?QdDyW`$?X0-4=6rp_tvPc?sbd4Gm-$jdW=M3SH58N&VoNhrTm zWFsuuB!xW&7`x(B@+(8}*Glm>hGKSCvD<6sw@Tx8mWDYz(wd;sWvTM-wS0D!|A2C+ z%sX|G$nr`OOgg4J?q87SlgLA#UiC$xmiy&jo4QX3E)Y#Ejv)+`m4pE4IDCdI~qAW~> zZEZJRO8qApCznz=>o4WE=kap8Sa0lfLG|pYiT?{kVA6dky!;z1P&@xYg8eo7x5gf{ zA8N-A1NK8nD05AD_PNl7H}=KHbPyGz-Wpeg22OO;j4$0Mi@2pz51TO@I=X?tzHT3K zMsY}ixxCXbKQY0#|K>%#X=*W5Ov%h~b6nTNiwkS)Ze+b)FH)i#A zp6bx)#_5rZBcsn(0MmA&z;5Qi~UUwH~2>={*eY> zFDUGWZCB$c#ptsbJgU^@y9}xQS~$Bd4$7emcS*%wFGnL23avpB%37sh6e7cB-hU>>WO#~DnG*GZ^$C5~6v0SjyDf}$92UZ?r9%YOpOZCwyaPQ)`rUyme|K}9yA zlTA`|cG;LZObyA9K}jphNd`r`Y%Pw3O$7dv74#Gf%57h!NQiE0J)ZW5xApA~+ABluN8=w%LeQ-NvIR_;W^1etyIhPczkd#S<)QRGG zT7JGM&pr`!%muJD?8@cnnp5f#u(`IozKk2(3B@fK zTyqkqt%o2_;k##(T&z={54V;$B$Jj~99Z_)BwO?mcY?4w1) z6(>0z=5PcPTV}F0S`%cPRn)^rxL3*6pj%k);Dj=FtVbvvvtN!Sj&`Ep5JxgDzef>F zH{RoO8`uhtEtojhq_@2AcmR$zfixf|Axo<@aST>!VrJgDlh)9{Tpc4XZl4Dt@0x)c z_Hr3sN0ZA%t_=@^`$MyBE=Ox%sGD0bgKxW-7kik5Qv`Muzmr zSmb1nRRFV6tyY)Ykb_El9FkBTuf=^jMbKjKV0GEx^aKTZq6O+PL4T4Kb@Def7@2NI zIeeT8k|d$uUuD>5_X(?ZBfeT0zQ!`_-7mjZOJ_Ib>rf6;(ve${L|%_v81xND zLV2T-Fa{;dq(OO!!Jb7Od6VJsX65k~!$VK@?-{*z)4WxwzRglK7Z7zuIX1DkE5z*P zc?Zg29@@4YUEYZjnCM+dLV356F(xAGq=~o#XwL%bdkl;BDvS3S7P_HmkI2Oa;t=Qv z47u?Z=lx3h1D5o^A?Zcj>&Q1>xNkkWJe1)dC(VkJ`Z=QpKATZ)^5q&jD;ye#Iz66M z!iTVU->B*IY=F_;Vm%LKRq!<=T!0qjXApEe7oCz2i8M5RMhLlLkc+6gg(2rMNaCVb zt6~rjeBF*o5qUn#c9%vPJ^#j|TYy5Ri5GwIE4zrcy?UMK_y|o62gdl-8z@+=2?eP!O7fqjGtD(&sadyF~(I&jXtYIoiZ326ytL! zhwrmvw0QD)WI={6APMD*if^2r%#u!Dr_=wJ-A2A-r2Dc;_Z1^u_MVWWRS|rP|5cUe zYgQii)^u>zz}Gcz_8RyG%25NH9v1`oCZ1sYZy~|!RYf(%Cj(=A^ZtH2jc=>$zubPl zV`TiU%J@AaWA>htC$0#@JPh^mm;Z4FkXh0Y9B<`aT3AK+J|rE@EW;?ue6$ZYtpxG| zRpN*En^}Ym{c4>2NHc%T%$4RI(6I zD-mQ$eh(P9=^v1U@<;qNQzZE3pY#Er&zr9k4qP~+pT>zk{fAG);d^!Xj-Gxy4`0rk z#{nk5ZV%a-AlbIHGU6D}<)2(cL6HsR{07FXi=7JMhut+zf$7RUigdpRzTE7tJ|Iz3Y!$STcU)~JzV zB;tW2IA1rD$wB!k`&Ahp8RSxEl#k@IH@4J&j@J#u&j>gnI=kEWDW9AsVfT2N_{MD_kpZMK0+A2U0JM7)-3Qb z26*{&UbvkJ(%{C}iX5x3t66Ov53%yc5E7sY-2FHd;@qcOA3XM?(+YAt9}jSM6!FDV zgrsI*tvEo^^D_&~H~wUulGHkfb8j!=Fn>+t1kGKIFW=<1jk%S4v5b$2;(MfO@e@&a zOXeu3T8U$5%Z)|5}=F4@)geNJ@CFc93_~=k|o1Cn`%h?>_C=$pin!BQ-#^h9FXXZB>lY?i< zY5bkCq}Yf~HrB-drM~Vl#6~R&)Pj78Kary>WMA8U!b{516-ug7~{PPXj~T}@7ByxI$RuW zE<#?W-$tA1>FMNklm&Nt8o)tXh6#n9w%W+=7;D`wbuqK&@rEC{gg=jLw|7UQy%ZoN zZA{A4gFVu?pYHDXmj~3~@fb>@T z;(-CD7ph}gRBO>7* zKr}jj&g!0GSzfbv+&%3^Q@%x8)|sibbXv8J&M8_?r%l_|IYmA?eVNsxEu+Oc#;50a zv!eMX}o+W-wxa-V7~I7g2d@L7|Km+sa}ztevSI5rV0>N+m$KF9J&Vfh`{|O*9^g4w8gpdrqGFp4&K2A(-zr^gzlzfbjkIC$ z5G|hXB%u+2uhY7R8M<19j<7?_#*(9)LNP}f9aGU`Kr5jE^f)4lIl<&LDtWCm%`KI= zWfhAd1Nu5dN3Vr$MSE+HxSlSlrjJn2#Yd^78=y5)F(*v&UQeO@W1P6bNEp>fHafBT z$2oW96r-P3(a&&A&;WWfB5JyY$>CO}le@(aghMfMr(TGTh4``IiI!8el|1!x(Dho~TrQU>p^Kgb)xi=>1sw=FVaB8L$ zJGD?p7gJO+lSxQm`Kch`)XJnyC9|Y-cV|HYWVU?6U2eaCuE^Llrl%XUeA8W&Nn36; z%d@2pephoipKIieZJ&|ma3-bL;VdTeRMO5QB(QEiA{-VlS*Vgl^0j&G9gqN7jOgIc zh4ouDc2DeO2@R9wQVP0oP)m=a(XbXBjfg#^edL`QEfy{=t8u?wF<6BSfbiYk~-K^F_;&DCY*%1O5idDug3 z>P@Xlb9*7B*zF=FYgKYFlaPRiC5Uia$K+C#Tqd>o?H)*gT#jh$^;ZAh#DvooG)zwG zDd?g>K0m+MTsP@-B@Z`Jn{wKe=Cqko?6if+RVvxaBqXr@YD73)!{l0(Y@>b6llLuH zUJDt}?TE(Sw($$*Ohj;k(`mSlQslUUf-WwSU>p9U$ZOZcoa>D0e z7me~c*v-&J71{*5Zp?;(9!}xx*v#k_72V2}K?A545tUuc1(; z0Rw}GD9X>|PL&*DQAmK)5K&Zs$)HN^GRxtjI(dIhMGka;hY%goR9rqo3{#)#2~*HT z#4JB3a+?E_&s3DhW7MYZk4Q5arxcq^Fqu@z-E0yPSalB~OzvfJpGxjG%g2kGU@{vz zzz>+^ijsx)E9sK_={)BuV~%VrnTHc`@1)OzoIhmbjeQ?U^Ldz3?DJ|SkErA*`-B7* zK8gsRV@w`X$>V0ZxpX0X)cxILxKJzFNM#JlpyKK~>rr*fQI2K~b04<|&xFAvsL`_91`Ih;b1$YDMmeQgHoWY%f0agj*?xtvNt z7gj7mNBIB8ZP0TCO&0#h&*E9x#w=s!FOX*&3M=0~zx*`dc;KfqnWK`qOhN)iXCUH% zpULDbmCOU#4GEBTMBJl%CJR)u5Ep5CRFvAILEpYe*zXBOlC*mv?2;dAL9z(Z(OanO z(pulXjbXoYy+OxCF(I^1B@}c~N-g&3!zMVO=?dms_?LTIQ?|)3XU?gTIrUTRWvo(e zs7(9{o^9Zh&xv{1G8aR$RcH=2!j0K*J(pA1vr0zYDmsr*XaKE3#GX|%IbS6gSY)fG zM4qj$$bk;!-@9jb~sHCu)s^QOn}AwU=-T71c4i zR7IBot%L^FU5D!l+QGl**DP@`RieNvq8(#jYU~ofVqMjCS7i2 z#%nOfjkq|?5 z`~e_eudf=wT9E8Rbo3VB8|*yoJpU@5|6I6&2rAV_K^Ohh;tl%{egKND;CAdlgB)y{ zVIAbDetDp&>flc953x+ny4EM|ez?E!$z$4FquV_0&^$)B<)(zT%;>J#KccmqXPs|o z9Y%NM(hXXV(OtdiU2U7uZOCm)dTnuk0_SgBXuMni%X#w$LJ>K;IWIFvm&fFt%`O>f zUYfa!u8zxw=0#IN)RPZ4uURlm9opqE1^NM|w#sYi6Mhk;?tt)T_YFjbqx6_&i8Y`+(0d7E2UBB* z&^wK>k<{2>^j^T&)jW0pf=AGO9)qJP@F;pOVr(omc8q#SZ%!gI&=>a)gp+iXoqOt9&G>y3|bc${T^fc49lCgDWf4$zA%y=m$w|gTWzP#>PCvdxKj8 z{Xuu{U_dQ#na5}HsL@f}>WbAL4DIeR5*-P-`@Dl;wbNx}_i)N_s`YG2TXu;W?8+pf z#TyR$0)0v->=t2fuPij#%Ujh@oQ6FrRZt^c6NqnehkPEzg}Tyj+G+I+3`7U_Rj4CT zbyr(L#FZpM;n8cRvg9OZwR5yA?LotoWYyVbR2$k%YHM4P+S!((u5U|{r_!CKR@JFC zsE*O}43{M%{_sWv+35zE<|vVM*+m&WhJ*w)Z-el`+T;U{LitM0RC&mu9L_DaZlP#Y z1Zbqwb0w%*Q4y3!re@2ITywzymRy`ZEC!hpdMX5}49ihG410;l2$Ms4a;rhQs~18` zD(V2=W{@vbS6R2ybYxiE!E5f+*2tHu%ac{RKOzme)2ur<71dIjyt`uZc2bz--Obdn zp1OzSVLA4@7Z&n%F*%|qcN^r`%qqyMLml9IU~OHK=$f^=0}*$>((4_+S;byTlIVS8 zqGG>6ZmcOZ>>{xR@>pYGK3$dbw9f&~9;7jLtoMw5GXKub{r=o7H$>nM}o)RRxjCv5f2C;{>*SX-BgT3YS(_y)Wo@hu8bTi+%V z6~}1A8$u6!2W#y9qp>c(%jl?vYF&PhrH||RKBv&-4;cNS9{mwZM-2%2F)W&Vn#rH& z$)7Tb5+HvDizc68^0=OSR;CrMvY-UW=cKn#vHqN9)YtP&pU`OOFU&Xp0+`+Z3_m-+ z#t)4t3{Y5J*C;{>ndA!J$@jIH4 zz~3|ds(h!Y!2AaQcK^v6Pl{DGC`Ria8Tb>8vB%`kyz%&*@)}k_;%O#d*OOnEkHjL%Cb->LU+*HSY!8} zy`j2L947F*LM@pwz(-=zEAg#p= zsEO&$q!jC($mAqFIhje6fS4>;=(aLBMNdwZS4ukOpajTlSX);X$zI_Lg_YnY#ogbp zcmrYKqnj#+(xg9^OjP8_yGrc_D~rwNh>gbB(G|prEu<8SEn-s9lXfOi0urXdLToXU zC3><{c9bo3pajS=SQ~$!EMK#-WBicIDNG_O$VA0-`CM79p_oNha%2XLF_BeqA{~@s zk=0Dj)RQ$#q6D_Cg@wpjOwQJmb#h<%atlg;oFmVa=UJUJBTY9kJy)aUSh*G73$s|< zJWkEmQrhLdIZoUHO0l?wOxEkk1}0GgTP}iyxJD+M^yFfBs$!`HB|tXIqUlpBme7pE zEoHhzqxn?VdbfpdoGR&TWSy-{Ez>AX=khq6ZIoi2E0}E8lO0T=1a@Bu3!ST&?9`L1 z<%G)R7L)+FM&4eTSGAUAq|?RpEgH?AvrG8tQo=!Hlds%3Ct(Yx@B$1l z8q}i$Kub{r+YiE`FTrF;PlmZDN`Q>OqOTz)x9Z7liE?vJxum{oPzU&SSX);*y-n7s z?y%wuDSi>?ZxDA-f||RNOjPVhlw&zL<|tshe~9n0yEwCx#@M5Jcbw*7(9nDjllSV$ zU91@;AYud-ns+m~M^Elel*e)%(0m)}0N)3zy#d#$+m+2;?||Y~{K1F_xJmhbN|W*f zWTN6AjiirXm;VpG54G(6-Qzdo=+iZG%=p+&R@bZN<@P6|F zmoG;aW|dw;n9|AgsmuC}bX@<4QK~q+~u#itWQ_0XT4UM>c zdPs~>*3Qqdrg1!7i)*(}h8$i&4R_HurfJCPfleL zB|v7w;!@-=nX4!Bq_e)=f)XI}<-z&_tBq#VL;=%<8Z8gi=a`Ft+5I`xOP1VNl4(^K zv1^Fd&$Kv^#aIE6B}|s;$ucHU0$Z2ELSzM#)AeMfJkZc?K?#sEQgV3eOz*@TB5mE zdakPu&Aq(sE!C;H*Q^<8gXVs;-J!N>?$wkwwNrDiKkQJ~Ywm{|k49YPkoK2;NYwFm zbFiIjil;xAePQE@Yk6|SUi;S~$W^$2fjwfm;@a#c5Se`>mwt4(j@uI!i{+wb#n3F>&DlGb5D^ti zX{=CBtELU2g>zjQaH} diff --git a/docs/_build/doctrees/export.doctree b/docs/_build/doctrees/export.doctree index 9af86f81e4ac8bf552b9ad1d9659e95d7437d3dc..ade2fef6aaa1f69830382914e43e1265f97ed2da 100644 GIT binary patch delta 4544 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 literal 19971 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 V_z}=1{B_ojQ7@M`6IRO({0qt+U^)N* diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index c69487a0..fab40257 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # 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. -config: cdd3d9dc24c56f542788a30876de826e +config: dba46e56c477091f1d2bb4513e29807e tags: fbb0d17656682115ca4d033fb2f83ba1 diff --git a/docs/_build/html/_sources/advanced.txt b/docs/_build/html/_sources/advanced.txt index 6e49ea11..b00c4525 100644 --- a/docs/_build/html/_sources/advanced.txt +++ b/docs/_build/html/_sources/advanced.txt @@ -6,12 +6,12 @@ Advanced Usage Configuration File ------------------- -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. +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`` paths to your journal files - ``editor`` - if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure _jrnl_ waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). + if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure *jrnl* waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). - ``encrypt`` if ``true``, encrypts your journal using AES. - ``tagsymbols`` @@ -51,6 +51,7 @@ Using your DayOne journal instead of a flat text file is dead simple -- instead * ``~/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. + Multiple journal files ---------------------- diff --git a/docs/_build/html/_sources/export.txt b/docs/_build/html/_sources/export.txt index 4a040b09..e017951d 100644 --- a/docs/_build/html/_sources/export.txt +++ b/docs/_build/html/_sources/export.txt @@ -15,6 +15,8 @@ you'll get a list of all tags you used in your journal, sorted by most frequent. List of all entries ------------------- +:: + jrnl --short Will only display the date and title of each entry. diff --git a/docs/_build/html/_sources/overview.txt b/docs/_build/html/_sources/overview.txt index 532fde36..726fbcf1 100644 --- a/docs/_build/html/_sources/overview.txt +++ b/docs/_build/html/_sources/overview.txt @@ -15,5 +15,9 @@ Optionally, your journal can be encrypted using the `256-bit AES `):: + + jrnl -until 1950 @texas -and @history --edit + +Will open your editor with all entries tagged with ``@texas`` and ``@history`` before 1950. You can make any changes to them you want; after you save the file and close the editor, your journal will be updated. + +Of course, if you are using multiple journals, you can also edit e.g. the latest entry of your work journal with ``jrnl work -n 1 --edit``. In any case, this will bring up your editor and save (and, if applicable, encrypt) your edited journal after you save and exit the editor. + +You can also use this feature for deleting entries from your journal:: + + jrnl @girlfriend -until 'june 2012' --edit + +Just select all text, press delete, and everything is gone... + +Editing DayOne Journals +~~~~~~~~~~~~~~~~~~~~~~~ + +DayOne journals can be edited exactly the same way, however the output looks a little bit different because of the way DayOne stores its entries: + +.. code-block:: output + + # af8dbd0d43fb55458f11aad586ea2abf + 2013-05-02 15:30 I told everyone I built my @robot wife for sex. + But late at night when we're alone we mostly play Battleship. + + # 2391048fe24111e1983ed49a20be6f9e + 2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack. + I just figured I'd be on the other side. + +The long strings starting with hash symbol are the so-called UUIDs, unique identifiers for each entry. Don't touch them. If you do, then the old entry would get deleted and a new one written, which means that you could DayOne loose data that jrnl can't handle (such as as the entry's geolocation). diff --git a/docs/_build/html/advanced.html b/docs/_build/html/advanced.html index b3a9408b..95265292 100644 --- a/docs/_build/html/advanced.html +++ b/docs/_build/html/advanced.html @@ -7,7 +7,7 @@ - Advanced Usage — jrnl 1.6.6 documentation + Advanced Usage — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -44,7 +44,7 @@

    Advanced Usage

    Configuration File

    -

    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.

    +

    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
      @@ -54,7 +54,7 @@
    • editor
      -

      if set, executes this command to launch an external editor for writing your entries, e.g. vim or subl -w (note the -w flag to make sure _jrnl_ waits for Sublime Text to close the file before writing into the journal. If you’re using MacVim, that would be mvim -f).

      +

      if set, executes this command to launch an external editor for writing your entries, e.g. vim or subl -w (note the -w flag to make sure jrnl waits for Sublime Text to close the file before writing into the journal. If you’re using MacVim, that would be mvim -f).

    • @@ -114,9 +114,10 @@
    • ~/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.
    -

    Instead of all entries being in a single file, each entry will live in a separate plist file. -Multiple journal files -———————-

    +

    Instead of all entries being in a single file, each entry will live in a separate plist file.

    +
    +
    +

    Multiple journal files

    You can configure _jrnl_ to use with multiple journals (eg. private and work) by defining more journals in your .jrnl_config, for example:

    {
     ...
    @@ -171,6 +172,7 @@ Multiple journal files
     
  • Advanced Usage
  • FAQ
  • diff --git a/docs/_build/html/encryption.html b/docs/_build/html/encryption.html index e3af408a..6d55ff01 100644 --- a/docs/_build/html/encryption.html +++ b/docs/_build/html/encryption.html @@ -7,7 +7,7 @@ - Encryption — jrnl 1.6.6 documentation + Encryption — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/docs/_build/html/export.html b/docs/_build/html/export.html index 6bc00ebd..f08b0817 100644 --- a/docs/_build/html/export.html +++ b/docs/_build/html/export.html @@ -7,7 +7,7 @@ - Import and Export — jrnl 1.6.6 documentation + Import and Export — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -52,8 +52,9 @@

    List of all entries

    -
    -
    jrnl –short
    +
    jrnl --short
    +
    +

    Will only display the date and title of each entry.

    diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 21b80821..7f8abd1e 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -9,7 +9,7 @@ - Index — jrnl 1.6.6 documentation + Index — jrnl 1.7.2 documentation @@ -17,7 +17,7 @@ - + diff --git a/docs/_build/html/installation.html b/docs/_build/html/installation.html index fd217d9c..096def18 100644 --- a/docs/_build/html/installation.html +++ b/docs/_build/html/installation.html @@ -7,7 +7,7 @@ - Getting started — jrnl 1.6.6 documentation + Getting started — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index d824b8a43a10ea977a9c8a102dcfefda1d91fa27..7ecd92fe30b9a35cd43373e6e47da8186c9a435a 100644 GIT binary patch delta 221 zcmV<303!dz0>%Q6Is-Q@GLbzye~`fn0wEAU?|y|)*MhFy3Mx88Mf3raGi-u8E^1r- zeYNXUMiRa`hA; XBtiw)0vq}%g-SIOtAEi0i|4AXEnR2r delta 220 zcmV<203-j#0>uK5Is-N?HjzC$e~-Zm0wEBF?>>c4*MhFy3Mx88Mf3oZGi-u8E^1r7 zeYNXUMmPQZKKQMOEhF7@OgMFLBBw_aU1d5xr`iql`gK;d$3JRwAIU?uHy$sJazt#x zy-C({nSFR)4fWzpR3Kv;ie-_Z=*!t&MS@_?rPi}N<ELAJWhMj!ChuI|CT?qI*!jrO;ZsmX%QHw)w6u@j0<{J0#*9qBZ*X WLJF`2HuUomp;FAm>Z1oovZ}4iducuZ diff --git a/docs/_build/html/overview.html b/docs/_build/html/overview.html index 22489a56..69c7cde5 100644 --- a/docs/_build/html/overview.html +++ b/docs/_build/html/overview.html @@ -7,7 +7,7 @@ - Overview — jrnl 1.6.6 documentation + Overview — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -50,7 +50,9 @@

    Why keep a journal?

    -

    Journals aren’t only for 13-year old girls and people who have too much time on their summer vacation. A journal helps you to keep track of the things you get done and how you did them. Your imagination may be limitless, but your memory isn’t. For personal use, make it a good habit to write at least 20 words a day. Just to reflect what made this day special, why you haven’t wasted it. For professional use, consider a text-based journal to be the perfect complement to your GTD todo list - a documentation of what and how you’ve done it.

    +

    Journals aren’t only for 13-year old girls and people who have too much time on their summer vacation. A journal helps you to keep track of the things you get done and how you did them. Your imagination may be limitless, but your memory isn’t.

    +

    For personal use, make it a good habit to write at least 20 words a day. Just to reflect what made this day special, why you haven’t wasted it.

    +

    For professional use, consider a text-based journal to be the perfect complement to your GTD todo list - a documentation of what and how you’ve done it. Or use it as a quick way to keep a change log. Or use it to keep a lab book.

    diff --git a/docs/_build/html/recipes.html b/docs/_build/html/recipes.html index cef4180f..7991cfb4 100644 --- a/docs/_build/html/recipes.html +++ b/docs/_build/html/recipes.html @@ -7,7 +7,7 @@ - FAQ — jrnl 1.6.6 documentation + FAQ — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html index d3799117..f3a1388d 100644 --- a/docs/_build/html/search.html +++ b/docs/_build/html/search.html @@ -7,7 +7,7 @@ - Search — jrnl 1.6.6 documentation + Search — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 678c5ffa..8710174b 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[6,0,4,7,2],default_minut:7,steve:[6,7],follow:[6,7],privat:7,depend:1,"2013_06_03_a":4,readabl:[2,4],yve:3,program:5,alberto:3,under:7,sha256:5,thursdai:7,everi:5,string:6,"3am":6,fals:7,faq:[0,3],veri:7,untouch:5,recip:[0,3],flatmat:3,level:7,did:2,list:[6,0,4,2],vector:5,dayon:[0,7,2],timeformat:7,initialis:5,ten:6,sync:[2,7],sign:6,pass:7,what:[0,2],access:7,melo:3,"new":[5,1],ever:5,told:1,hash:5,gener:4,chang:[6,5,3,7],decid:5,bodi:1,met:6,path:7,valu:7,wait:7,convers:5,vacat:2,prior:3,behav:7,chcp:3,implement:7,control:[6,7],linewrap:7,apr:6,app:7,vim:7,ask:[5,1],xdg_config_hom:7,instal:[0,3,1],txt:[6,5,7],mobil:7,quickstart:[0,1],from:[6,2,7],would:7,memori:2,doubl:6,two:6,todai:6,websit:7,live:7,call:1,type:[1,7],until:[6,3,1],more:7,sort:4,flat:7,python:[5,7],henc:7,flag:7,known:[0,3],word:2,hous:1,gabriel:4,work:[6,3,7],can:[1,5,3,4,2,6,7],meet:7,overrid:7,prompt:[6,1,7],fabul:2,tag:[6,0,3,4,7],want:[6,5,3,1,7],plist:7,gcc:1,multipl:7,anoth:5,occur:[6,3,4],write:[6,5,1,7,2],how:[6,2,3,7],instead:7,beach:6,after:7,sundai:6,reflect:2,befor:[6,3,7],beauti:4,mai:2,end:7,"short":[3,4],issu:[0,3],"switch":6,environ:3,jrnl:[0,1,2,3,4,5,6,7],enter:[6,5],exclus:6,frontend:7,help:2,becaus:6,cyan:7,still:2,digest:5,perfect:2,gtd:2,thank:3,fix:3,window:3,drawback:7,requir:1,them:[6,2],good:2,"return":1,food:7,timestamp:[6,0,7],dai:[6,2,4,7],initi:5,"break":6,mention:3,macvim:7,now:[6,7],choic:6,name:4,simpl:[2,4,7],crypto:5,separ:7,mode:6,each:[3,4,7],januari:3,unicod:3,my_entri:[6,4],mean:[6,3,7],compil:1,replac:5,individu:[4,7],timelin:4,meta:7,year:[6,2],our:7,girl:2,todo:2,special:[6,2],out:3,variabl:7,mere:7,content:[0,4],print:[6,3,4],lubric:6,occurr:[0,3],advanc:[0,7],given:6,reason:[6,1],base:2,releas:0,"byte":5,bash:7,launch:[6,7],put:2,keep:[6,0,2],filter:[6,0,3],thing:[2,3],isn:2,summari:3,imposs:7,frequent:4,first:[5,3,1,7],origin:5,directli:[6,2],mvim:7,wast:2,date:[6,4,7],alreadi:5,done:2,open:5,fanci:2,differ:7,convent:6,start:[6,0,1,7],top:7,least:[2,7],too:2,tom:6,"final":3,store:[0,2,5],shell:[6,3,7],option:[6,2,3,1,7],specifi:[6,5,4,7],github:4,haven:2,ipad:2,hashlib:5,grep:3,whenev:[6,5],charact:[3,7],project:6,sai:7,comput:5,ani:[6,5],dash:6,packag:3,have:[5,1,7,2],seem:7,imagin:2,built:7,equival:6,note:[6,1,7],also:[6,5,1,7,2],exampl:[4,7],which:[6,3],combin:[6,0,3],singl:[6,7],sure:[6,7],unless:1,track:[6,2],favourit:[6,3],who:2,most:[6,3,4,7],render:4,cipher:5,icloud:7,why:[0,4,2],don:[6,5,7],doc:7,later:5,doe:[3,7],pipe:3,"10am":7,clean:1,pouplard:3,summer:2,text:[2,0,4,7,5],find:3,current:5,onli:[6,2,3,4],explicitli:1,locat:[6,7],execut:7,pretti:4,configur:[6,0,1,7],should:[5,1],jan:3,folder:[2,7],hit:1,"2013_06_07_dinner":4,get:[0,1,2,3,4,7],jrnl_conf:7,endless:7,bar:6,sha:5,integr:[0,7],contain:[6,3],buscemi:6,where:[3,1],view:[6,0],set:7,habit:2,see:[6,7],result:[1,7],close:7,best:6,wonder:6,profession:2,someth:3,sublim:7,won:[5,7],"import":[6,0,4,5],kei:[5,7],complement:2,entir:4,solv:3,both:[6,3,7],instant:2,howev:7,forgotten:2,pdf:4,com:7,comment:7,assur:2,simpli:[6,5],point:[5,7],overview:[0,2],arbitrarili:6,dayoneapp:7,suppli:[6,7],my_recip:7,assum:6,stamp:1,quotat:7,three:7,mark:[6,1,7],json:[0,4,7],much:2,interpret:[1,7],basic:[6,0],my_journ:5,life:6,wish:1,pycyrypto:1,argument:[6,4],"5u8ns4gx82":7,last:[6,7],present:7,look:[6,4,1,7],jrnl_config:7,plain:[5,2],plain_text_copi:5,defin:7,"while":7,abov:4,"_no_":6,pinki:6,readm:4,non:3,ascii:3,sever:4,make:[6,4,1,7,2],format:[4,7],same:[5,3,4],funni:6,html:4,sentenc:1,document:[2,7],extern:[1,7],yesterdai:[6,1],recent:3,off:7,entri:[0,1,3,4,6,7],markup:4,well:1,spent:1,person:2,without:6,command:[6,0,4,7,2],thi:[1,5,3,4,2,6,7],choos:5,everyth:[6,1,7],latest:6,load:7,just:[6,2,1,7],codepag:3,rest:1,markdown:[0,4],human:[2,4],languag:4,had:6,add:6,other:4,input:[6,7],save:7,smart:[6,0],applic:[2,7],march:6,mayb:5,read:[5,2],intuit:7,five:6,bit:2,password:[0,5],like:[6,4,3,1,7],specif:7,filenam:5,whitespac:6,manual:[0,1,7,5],either:6,output:[4,7],old:2,often:3,some:3,dead:7,"export":[6,0,4],librari:[1,7],noon:6,leav:5,anna:6,refer:7,limitless:2,run:[5,3,1],journal:[0,1,2,3,4,5,6,7],usag:[6,0,7],tagsymbol:7,although:[6,7],"_jrnl_":[3,7],"6am":6,plai:2,surround:6,chop:7,consid:2,within:3,encod:3,compos:[6,0,1,7],wrap:7,my_password:5,subl:7,your:[0,1,2,4,5,6,7],wai:[6,7],aren:2,support:[5,7],"long":[2,7],width:7,reli:3,editor:[6,1,7],keychain:[0,5],mode_cbc:5,line:[6,0,3,7,2],"true":7,count:4,made:2,pycrypto:[3,1],whether:[5,1,7],worlddomin:6,displai:[6,3,4,7],below:7,highlight:7,problem:3,default_hour:7,creat:[4,1,7],decrypt:[0,7,5],exist:5,file:[0,1,2,4,5,6,7],pip:1,happen:6,again:5,mutual:6,encrypt:[0,1,2,3,5,7],titl:[4,1],when:[5,2],virtual:3,"default":7,book:1,sick:1,peopl:[6,2],you:[1,5,3,4,2,6,7],intention:6,nice:[2,4],pineappl:6,star:[6,0,3],symbol:[6,7],asterisk:6,mondai:6,dropbox:[2,7],algorithm:5,directori:4,scroll:7,time:[1,5,4,2,6,7],avoid:7},objtypes:{},titles:["jrnl: The command-line journal","Getting started","Overview","FAQ","Import and Export","Encryption","Basic Usage","Advanced Usage"],objnames:{},filenames:["index","installation","overview","recipes","export","encryption","usage","advanced"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[6,0,4,7,5],default_minut:7,steve:[6,7],follow:[6,7],privat:7,depend:1,"2013_06_03_a":4,readabl:[5,4],yve:3,program:2,alberto:3,under:7,leav:2,sha256:2,thursdai:7,everi:2,string:6,"3am":6,fals:7,faq:[0,3],veri:7,cyan:7,recip:[0,3],flatmat:3,level:7,did:5,list:[6,0,4,5],vector:2,dayon:[6,0,7,5],timeformat:7,initialis:2,ten:6,sync:[5,7],sign:6,geoloc:6,pass:7,what:[0,5],access:7,delet:6,melo:3,"new":[6,2,1],ever:2,told:[6,1],hash:[6,2],gener:4,chang:[6,5,3,7,2],decid:2,bodi:1,met:6,path:7,valu:7,wait:7,convers:2,vacat:5,everyon:6,prior:3,behav:7,chcp:3,implement:7,control:[6,7],linewrap:7,apr:6,app:7,vim:7,releas:0,xdg_config_hom:7,instal:[0,3,1],txt:[6,2,7],mobil:7,select:6,quickstart:[0,1],from:[6,5,7],would:[6,7],memori:5,doubl:6,two:6,todai:6,websit:7,live:7,call:[6,1],type:[1,7],until:[6,3,1],more:7,sort:4,flat:7,readm:4,flag:7,known:[0,3],word:5,hous:1,gabriel:4,work:[6,3,7],uniqu:6,histori:6,can:[1,5,3,4,2,6,7],meet:7,overrid:7,prompt:[6,1,7],fabul:5,tag:[6,0,3,4,7],want:[6,2,3,1,7],plist:7,gcc:1,cours:6,multipl:[6,0,7],anoth:2,occur:[6,3,4],write:[6,5,1,7,2],how:[6,5,3,7],instead:7,simpl:[5,4,7],updat:6,after:[6,7],sundai:6,lab:5,reflect:5,befor:[6,3,7],beauti:4,date:[6,4,7],end:7,data:6,github:4,read:[5,2],robot:6,issu:[0,3],"switch":6,combin:[6,0,3],jrnl:[0,1,2,3,4,5,6,7],enter:[6,2],exclus:6,frontend:7,help:5,becaus:6,untouch:2,still:5,digest:2,perfect:5,gtd:5,thank:3,funni:6,fix:3,late:6,window:3,html:4,requir:1,them:[6,5],good:5,"return":1,food:7,timestamp:[6,0,7],dai:[6,5,4,7],initi:2,"break":6,mention:3,macvim:7,now:[6,7],choic:6,name:4,edit:[6,0],beach:6,crypto:2,separ:7,mode:6,each:[6,3,4,7],januari:3,unicod:3,my_entri:[6,4],side:6,mean:[6,3,7],compil:1,replac:2,individu:[4,7],timelin:4,meta:7,year:[6,5],our:7,girl:5,todo:5,special:[6,5],out:3,variabl:7,encod:3,load:7,your:[0,1,2,4,5,6,7],content:[0,4],print:[6,3,4],lubric:6,occurr:[0,3],advanc:[6,0,7],given:6,quick:5,reason:[6,1],base:5,zombi:6,ask:[2,1],"byte":2,bash:7,launch:[6,7],could:6,put:5,keep:[6,0,5],filter:[6,0,3],thing:[5,3],isn:5,view:[6,0],imposs:7,frequent:4,first:[2,3,1,7],origin:2,directli:[6,5],mvim:7,wast:5,mai:5,alreadi:2,done:5,open:[6,2],fanci:5,differ:[6,7],convent:6,width:7,top:7,least:[5,7],attack:6,too:5,tom:6,"final":3,store:[6,0,2,5],shell:[6,3,7],option:[6,5,3,1,7],specifi:[6,2,4,7],"short":[3,4],mostli:6,exactli:6,haven:5,ipad:5,kind:6,grep:3,whenev:[6,2],charact:[3,7],project:6,sai:7,comput:2,ani:[6,2],dash:6,packag:3,have:[6,5,1,7,2],need:6,seem:7,imagin:5,built:[6,7],equival:6,note:[6,1,7],also:[6,5,1,7,2],without:6,which:[6,3],environ:3,singl:[6,7],sure:[6,7],unless:1,track:[6,5],favourit:[6,3],who:5,most:[6,3,4,7],render:4,cipher:2,plan:6,icloud:7,why:[0,4,5],don:[6,2,7],doc:7,later:2,doe:[3,7],pipe:3,"10am":7,clean:1,pouplard:3,text:[0,2,4,5,6,7],bring:6,particularli:6,texa:6,find:3,current:2,onli:[6,5,3,4],explicitli:1,locat:[6,7],just:[6,5,1,7],pretti:4,configur:[6,0,1,7],figur:6,should:[2,1],jan:3,folder:[5,7],codepag:3,hit:1,"2013_06_07_dinner":4,get:[0,1,5,3,4,6,7],hashlib:2,jrnl_conf:7,endless:7,bar:6,noon:6,sha:2,integr:[0,7],contain:[6,3],buscemi:6,where:[3,1],wrote:6,summari:3,set:7,habit:5,sex:6,see:[6,7],result:[1,7],close:[6,7],best:6,wonder:6,someth:3,sublim:7,won:[2,7],"import":[6,0,4,2],kei:[2,7],complement:5,entir:4,solv:3,uuid:6,both:[6,3,7],instant:5,howev:[6,7],alon:6,af8dbd0d43fb55458f11aad586ea2abf:6,forgotten:5,pdf:4,com:7,comment:7,assur:5,simpli:[6,2],point:[2,7],overview:[0,5],arbitrarili:6,dayoneapp:7,written:6,suppli:[6,7],my_recip:7,assum:6,stamp:1,quotat:7,three:7,mark:[6,1,7],json:[0,4,7],much:5,interpret:[1,7],basic:[6,0],my_journ:2,life:6,decrypt:[0,7,2],argument:[6,4],"5u8ns4gx82":7,last:[6,7],present:7,"case":6,look:[6,4,1,7],jrnl_config:7,plain:[5,2],plain_text_copi:2,defin:7,"while":7,abov:4,"_no_":[],loos:6,pinki:6,henc:7,non:3,pip:1,ascii:3,sever:4,make:[6,5,4,1,7],mayb:2,same:[6,2,3,4],python:[2,7],drawback:7,sentenc:1,document:[5,7],extern:[1,7],yesterdai:[6,1],recent:3,off:7,older:[6,0],entri:[0,1,3,4,6,7],markup:4,well:1,spent:1,person:5,exampl:[4,7],command:[6,0,4,7,5],thi:[1,5,3,4,2,6,7],choos:2,everyth:[6,1,7],latest:6,summer:5,identifi:6,execut:7,battleship:6,rest:1,markdown:[0,4],human:[5,4],touch:6,languag:4,had:6,littl:6,add:6,book:[5,1],input:[6,7],save:[6,7],smart:[6,0],applic:[6,5,7],march:6,format:[4,7],handl:6,intuit:7,five:6,press:6,bit:[6,5],password:[0,2],like:[6,4,3,1,7],specif:7,filenam:2,whitespac:6,manual:[0,1,7,2],either:6,night:6,output:[6,4,7],old:[6,5],often:3,some:3,dead:7,"export":[6,0,4],worlddomin:6,librari:[1,7],avoid:7,exit:6,anna:6,refer:7,limitless:5,run:[2,3,1],asterisk:6,journal:[0,1,2,3,4,5,6,7],usag:[6,0,7],tagsymbol:7,although:[6,7],"_jrnl_":[3,7],"6am":6,plai:[6,5],surround:6,chop:7,mondai:6,within:3,profession:5,compos:[6,0,1,7],wrap:7,my_password:2,subl:7,mere:7,log:5,wai:[6,5,7],aren:5,support:[2,7],"long":[6,5,7],start:[6,0,1,7],reli:3,editor:[6,1,7],keychain:[0,2],mode_cbc:2,line:[6,0,3,7,5],"true":7,"2391048fe24111e1983ed49a20be6f9":6,count:4,made:5,algorithm:2,whether:[2,1,7],wish:1,displai:[6,3,4,7],below:7,highlight:7,problem:3,default_hour:7,gone:6,featur:6,creat:[4,1,7],pycyrypto:1,exist:2,file:[0,1,2,4,5,6,7],girlfriend:6,happen:6,again:2,mutual:6,encrypt:[0,1,2,3,5,6,7],titl:[4,1],when:[6,5,2],virtual:3,"default":7,other:[6,4],sick:1,peopl:[6,5],you:[1,5,3,4,2,6,7],intention:6,nice:[5,4],pineappl:6,star:[6,0,3],symbol:[6,7],june:6,consid:5,dropbox:[5,7],pycrypto:[3,1],wife:6,directori:4,time:[1,5,4,2,6,7],scroll:7},objtypes:{},titles:["jrnl: The command-line journal","Getting started","Encryption","FAQ","Import and Export","Overview","Basic Usage","Advanced Usage"],objnames:{},filenames:["index","installation","encryption","recipes","export","overview","usage","advanced"]}) \ No newline at end of file diff --git a/docs/_build/html/usage.html b/docs/_build/html/usage.html index 0aeb93f1..84d7b64d 100644 --- a/docs/_build/html/usage.html +++ b/docs/_build/html/usage.html @@ -7,7 +7,7 @@ - Basic Usage — jrnl 1.6.6 documentation + Basic Usage — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -109,7 +109,32 @@

    the last five entries containing both @pineapple and @lubricant. You can change which symbols you’d like to use for tagging in the configuration.

    Note

    -

    jrnl @pinkie @WorldDomination will switch to viewing mode because although _no_ command line arguments are given, all the input strings look like tags - jrnl will assume you want to filter by tag.

    +

    jrnl @pinkie @WorldDomination will switch to viewing mode because although no command line arguments are given, all the input strings look like tags - jrnl will assume you want to filter by tag.

    +
    +
    +
    +

    Editing older entries

    +

    You can edit selected entries after you wrote them. This is particularly useful when your journal file is encrypted or if you’re using a DayOne journal. To use this feature, you need to have an editor configured in your journal configuration file (see advanced usage):

    +
    jrnl -until 1950 @texas -and @history --edit
    +
    +

    Will open your editor with all entries tagged with @texas and @history before 1950. You can make any changes to them you want; after you save the file and close the editor, your journal will be updated.

    +

    Of course, if you are using multiple journals, you can also edit e.g. the latest entry of your work journal with jrnl work -n 1 --edit. In any case, this will bring up your editor and save (and, if applicable, encrypt) your edited journal after you save and exit the editor.

    +

    You can also use this feature for deleting entries from your journal:

    +
    jrnl @girlfriend -until 'june 2012' --edit
    +
    +

    Just select all text, press delete, and everything is gone...

    +
    +

    Editing DayOne Journals

    +

    DayOne journals can be edited exactly the same way, however the output looks a little bit different because of the way DayOne stores its entries:

    +
    # af8dbd0d43fb55458f11aad586ea2abf
    +2013-05-02 15:30 I told everyone I built my @robot wife for sex.
    +But late at night when we're alone we mostly play Battleship.
    +
    +# 2391048fe24111e1983ed49a20be6f9e
    +2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack.
    +I just figured I'd be on the other side.
    +
    +

    The long strings starting with hash symbol are the so-called UUIDs, unique identifiers for each entry. Don’t touch them. If you do, then the old entry would get deleted and a new one written, which means that you could DayOne loose data that jrnl can’t handle (such as as the entry’s geolocation).

    @@ -132,6 +157,10 @@
  • Viewing
  • Using Tags
  • +
  • Editing older entries +
  • Encryption
  • diff --git a/docs/advanced.rst b/docs/advanced.rst index 6e49ea11..b00c4525 100644 --- a/docs/advanced.rst +++ b/docs/advanced.rst @@ -6,12 +6,12 @@ Advanced Usage Configuration File ------------------- -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. +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`` paths to your journal files - ``editor`` - if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure _jrnl_ waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). + if set, executes this command to launch an external editor for writing your entries, e.g. ``vim`` or ``subl -w`` (note the ``-w`` flag to make sure *jrnl* waits for Sublime Text to close the file before writing into the journal. If you're using MacVim, that would be ``mvim -f``). - ``encrypt`` if ``true``, encrypts your journal using AES. - ``tagsymbols`` @@ -51,6 +51,7 @@ Using your DayOne journal instead of a flat text file is dead simple -- instead * ``~/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. + Multiple journal files ---------------------- diff --git a/docs/export.rst b/docs/export.rst index 4a040b09..e017951d 100644 --- a/docs/export.rst +++ b/docs/export.rst @@ -15,6 +15,8 @@ you'll get a list of all tags you used in your journal, sorted by most frequent. List of all entries ------------------- +:: + jrnl --short Will only display the date and title of each entry. diff --git a/docs/overview.rst b/docs/overview.rst index 532fde36..726fbcf1 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -15,5 +15,9 @@ Optionally, your journal can be encrypted using the `256-bit AES `):: + + jrnl -until 1950 @texas -and @history --edit + +Will open your editor with all entries tagged with ``@texas`` and ``@history`` before 1950. You can make any changes to them you want; after you save the file and close the editor, your journal will be updated. + +Of course, if you are using multiple journals, you can also edit e.g. the latest entry of your work journal with ``jrnl work -n 1 --edit``. In any case, this will bring up your editor and save (and, if applicable, encrypt) your edited journal after you save and exit the editor. + +You can also use this feature for deleting entries from your journal:: + + jrnl @girlfriend -until 'june 2012' --edit + +Just select all text, press delete, and everything is gone... + +Editing DayOne Journals +~~~~~~~~~~~~~~~~~~~~~~~ + +DayOne journals can be edited exactly the same way, however the output looks a little bit different because of the way DayOne stores its entries: + +.. code-block:: output + + # af8dbd0d43fb55458f11aad586ea2abf + 2013-05-02 15:30 I told everyone I built my @robot wife for sex. + But late at night when we're alone we mostly play Battleship. + + # 2391048fe24111e1983ed49a20be6f9e + 2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack. + I just figured I'd be on the other side. + +The long strings starting with hash symbol are the so-called UUIDs, unique identifiers for each entry. Don't touch them. If you do, then the old entry would get deleted and a new one written, which means that you could DayOne loose data that jrnl can't handle (such as as the entry's geolocation). diff --git a/encryption.html b/encryption.html index e3af408a..6d55ff01 100644 --- a/encryption.html +++ b/encryption.html @@ -7,7 +7,7 @@ - Encryption — jrnl 1.6.6 documentation + Encryption — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/export.html b/export.html index 6bc00ebd..f08b0817 100644 --- a/export.html +++ b/export.html @@ -7,7 +7,7 @@ - Import and Export — jrnl 1.6.6 documentation + Import and Export — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -52,8 +52,9 @@

    List of all entries

    -
    -
    jrnl –short
    +
    jrnl --short
    +
    +

    Will only display the date and title of each entry.

    diff --git a/genindex.html b/genindex.html index 21b80821..7f8abd1e 100644 --- a/genindex.html +++ b/genindex.html @@ -9,7 +9,7 @@ - Index — jrnl 1.6.6 documentation + Index — jrnl 1.7.2 documentation @@ -17,7 +17,7 @@ - + diff --git a/installation.html b/installation.html index fd217d9c..096def18 100644 --- a/installation.html +++ b/installation.html @@ -7,7 +7,7 @@ - Getting started — jrnl 1.6.6 documentation + Getting started — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/jrnl/Entry.py b/jrnl/Entry.py index 4948cc1d..142286ed 100644 --- a/jrnl/Entry.py +++ b/jrnl/Entry.py @@ -9,10 +9,11 @@ class Entry: def __init__(self, journal, date=None, title="", body="", starred=False): self.journal = journal # Reference to journal mainly to access it's config self.date = date or datetime.now() - self.title = title.strip() - self.body = body.strip() + self.title = title.strip("\n ") + self.body = body.strip("\n ") self.tags = self.parse_tags() self.starred = starred + self.modified = False def parse_tags(self): fulltext = " ".join([self.title, self.body]).lower() @@ -67,6 +68,18 @@ class Entry: def __repr__(self): return "".format(self.title.strip(), self.date.strftime("%Y-%m-%d %H:%M")) + def __eq__(self, other): + if not isinstance(other, Entry) \ + or self.title.strip() != other.title.strip() \ + or self.body.strip() != other.body.strip() \ + or self.date != other.date \ + or self.starred != other.starred: + return False + return True + + def __ne__(self, other): + return not self.__eq__(other) + def to_dict(self): return { 'title': self.title.strip(), diff --git a/jrnl/Entry.pyc b/jrnl/Entry.pyc index 657775deaa51ab01a02447a295c9b04ad741d74c..4b5765b8c2ca2eefd5b9a0d8446d22460e76916d 100644 GIT binary patch delta 1083 zcmY*Y&1(};5TD5=>29){#%QhmN{eV+1wTqHBK9Eo(Mu`%q8^H}w9UqDjA_iiVh@EL zsvvl2c^AFGxO&C<~Oq+%Ae0>t>0em-TB?@ zj=Kr~A;2O+HMjd|eyVE28#?Bp>WJZjs`z5wCBtPSW4o$fC+;!xXUySM*o6<1Y^TAe24 zr`al)$C+h3v;QS?geOPHBX2jNX85|j)KW$BwQr{+wUL6k1p!X(XLf`)&3D_!QFCMu z&5v<0W<&9#QbdOvnu}(p@496KM!IVq_sZ83q0k@yUjdiz$mZH{vG)?GRZIe;t7ISb#A(QS}HQ{6<+ zG`HaPeI*+Z3%Sk7Z!n)C{4E;?by92jUS<&fyA@L<+9?+va78@_d$hNstD2r z-(d_)MHENPST8kKLM1&21JayOCLPK!nJ8iQQF}d1rqU&9O|OP+pAtY+Y~I_Kmo--j zg78%k%#jr*OI5@&eY{rb9yLslP{TQlT}YtKb~|_l+jWZeURKlQFh845UTKCw@WA}Z z9Ta6T7;$GNhxs|Im?3u$N6Zhmb>;uf>1~EAsSMYb{uv7mzwQmw;=T1A;#2d>n?TPT zdl#pf4b{(znN;JfuCltuih-&bRySD9lJbGj-kK7Unc0}vGK&L_lXVJi*|8jlB_UD% Nlv8|l((Dy#{{Zf_s;>Y5 delta 631 zcmYjP&ui2`6n<}alg%Wv*|ZvEb=?$Q>3C6!A|AXI3W`*mqKIhAwwuM3(8kSx2)*?m zXnCR)!GnK-i{8C?5&r=1o&`^W2j|U7DdBzd=H>nPzL$JDf7tWuzgywE{(-+Q9{@lO z@CacT9DKNw=`|&6$XJ6d-vV3R+OoCkA!WEYw+FBbu;IaO1D-Wt59kSIatN@d&}OZw zkPdM~Y3+Gi+B=}Y6x;kv-_&}Dl0Mfp&P_!_BF1#ed)!ZLnr<>g3;_dA)+a5f278iT zdz*NA`p5f)CptD_II9?M=PxFMQpfbSxj!GjZPVN)=b7N&C2^CZ<2~6E>qC@nmC%gjN`AnafBm=^AKq{0z$vy_{~taR6cVQ+J1_;Q1nR_2pg%~g8UzK3_|XL|u7Y9^QZi(JuS t;NL-?W4O$4g<*-|I;|(SFYv~FOatMISoTC+2xTMxzu7$J_33*u`UlD new entry begins line = line.strip() @@ -184,7 +188,7 @@ class Journal(object): def write(self, filename=None): """Dumps the journal into the config file, overwriting it""" filename = filename or self.config['journal'] - journal = "\n".join([e.__unicode__() for e in self.entries]) + journal = u"\n".join([e.__unicode__() for e in self.entries]) if self.config['encrypt']: journal = self._encrypt(journal) with open(filename, 'wb') as journal_file: @@ -249,7 +253,12 @@ class Journal(object): elif isinstance(date_str, datetime): return date_str - date, flag = self.dateparse.parse(date_str) + try: + date = dateutil.parser.parse(date_str) + flag = 1 if date.hour == 0 and date.minute == 0 else 2 + date = date.timetuple() + except: + date, flag = self.dateparse.parse(date_str) if not flag: # Oops, unparsable. try: # Try and parse this as a single year @@ -281,20 +290,15 @@ class Journal(object): raw = raw.replace('\\n ', '\n').replace('\\n', '\n') starred = False # Split raw text into title and body - title_end = len(raw) - for separator in ["\n", ". ", "? ", "! "]: - sep_pos = raw.find(separator) - if 1 < sep_pos < title_end: - title_end = sep_pos - title = raw[:title_end+1] - body = raw[title_end+1:].strip() + sep = re.search("[\n!?.]+", raw) + title, body = (raw[:sep.end()], raw[sep.end():]) if sep else (raw, "") starred = False if not date: - if title.find(":") > 0: - starred = "*" in title[:title.find(":")] - date = self.parse_date(title[:title.find(":")]) + if title.find(": ") > 0: + starred = "*" in title[:title.find(": ")] + date = self.parse_date(title[:title.find(": ")]) if date or starred: # Parsed successfully, strip that from the raw text - title = title[title.find(":")+1:].strip() + title = title[title.find(": ")+1:].strip() elif title.strip().startswith("*"): starred = True title = title[1:].strip() @@ -304,25 +308,36 @@ class Journal(object): if not date: # Still nothing? Meh, just live in the moment. date = self.parse_date("now") entry = Entry.Entry(self, date, title, body, starred=starred) + entry.modified = True self.entries.append(entry) if sort: self.sort() return entry + def editable_str(self): + """Turns the journal into a string of entries that can be edited + manually and later be parsed with eslf.parse_editable_str.""" + return u"\n".join([e.__unicode__() for e in self.entries]) + + def parse_editable_str(self, edited): + """Parses the output of self.editable_str and updates it's entries.""" + mod_entries = self._parse(edited) + # Match those entries that can be found in self.entries and set + # these to modified, so we can get a count of how many entries got + # modified and how many got deleted later. + for entry in mod_entries: + entry.modified = not any(entry == old_entry for old_entry in self.entries) + self.entries = mod_entries class DayOne(Journal): """A special Journal handling DayOne files""" def __init__(self, **kwargs): self.entries = [] + self._deleted_entries = [] super(DayOne, self).__init__(**kwargs) def open(self): - files = [os.path.join(self.config['journal'], "entries", f) for f in os.listdir(os.path.join(self.config['journal'], "entries"))] - return files - - def parse(self, filenames): - """Instead of parsing a string into an entry, this method will take a list - of filenames, interpret each as a plist file and create a new entry from that.""" + filenames = [os.path.join(self.config['journal'], "entries", f) for f in os.listdir(os.path.join(self.config['journal'], "entries"))] self.entries = [] for filename in filenames: with open(filename, 'rb') as plist_entry: @@ -333,34 +348,97 @@ class DayOne(Journal): timezone = pytz.timezone(util.get_local_timezone()) date = dict_entry['Creation Date'] date = date + timezone.utcoffset(date) - entry = self.new_entry(raw=dict_entry['Entry Text'], date=date, sort=False) - entry.starred = dict_entry["Starred"] + raw = dict_entry['Entry Text'] + sep = re.search("[\n!?.]+", raw) + title, body = (raw[:sep.end()], raw[sep.end():]) if sep else (raw, "") + entry = Entry.Entry(self, date, title, body, starred=dict_entry["Starred"]) entry.uuid = dict_entry["UUID"] entry.tags = dict_entry.get("Tags", []) - # We're using new_entry to create the Entry object, which adds the entry - # to self.entries already. However, in the original Journal.__init__, this - # method is expected to return a list of newly created entries, which is why - # we're returning the obvious. - return self.entries + self.entries.append(entry) + self.sort() def write(self): """Writes only the entries that have been modified into plist files.""" for entry in self.entries: - # Assumption: since jrnl can not manipulate existing entries, all entries - # that have a uuid will be old ones, and only the one that doesn't will - # have a new one! - if not hasattr(entry, "uuid"): + if entry.modified: + if not hasattr(entry, "uuid"): + entry.uuid = uuid.uuid1().hex utc_time = datetime.utcfromtimestamp(time.mktime(entry.date.timetuple())) - new_uuid = uuid.uuid1().hex - filename = os.path.join(self.config['journal'], "entries", new_uuid+".doentry") + filename = os.path.join(self.config['journal'], "entries", entry.uuid+".doentry") entry_plist = { 'Creation Date': utc_time, 'Starred': entry.starred if hasattr(entry, 'starred') else False, 'Entry Text': entry.title+"\n"+entry.body, 'Time Zone': util.get_local_timezone(), - 'UUID': new_uuid, + 'UUID': entry.uuid, 'Tags': [tag.strip(self.config['tagsymbols']) for tag in entry.tags] } - # print entry_plist - plistlib.writePlist(entry_plist, filename) + for entry in self._deleted_entries: + filename = os.path.join(self.config['journal'], "entries", entry.uuid+".doentry") + os.remove(filename) + + def editable_str(self): + """Turns the journal into a string of entries that can be edited + manually and later be parsed with eslf.parse_editable_str.""" + return u"\n".join(["# {0}\n{1}".format(e.uuid, e.__unicode__()) for e in self.entries]) + + def parse_editable_str(self, edited): + """Parses the output of self.editable_str and updates it's entries.""" + # Method: create a new list of entries from the edited text, then match + # UUIDs of the new entries against self.entries, updating the entries + # if the edited entries differ, and deleting entries from self.entries + # if they don't show up in the edited entries anymore. + date_length = len(datetime.today().strftime(self.config['timeformat'])) + + # Initialise our current entry + entries = [] + current_entry = None + + for line in edited.splitlines(): + # try to parse line as UUID => new entry begins + line = line.strip() + m = re.match("# *([a-f0-9]+) *$", line.lower()) + if m: + if current_entry: + entries.append(current_entry) + current_entry = Entry.Entry(self) + current_entry.modified = False + current_entry.uuid = m.group(1).lower() + else: + try: + new_date = datetime.strptime(line[:date_length], self.config['timeformat']) + if line.endswith("*"): + current_entry.starred = True + line = line[:-1] + current_entry.title = line[date_length+1:] + current_entry.date = new_date + except ValueError: + if current_entry: + current_entry.body += line + "\n" + + # Append last entry + if current_entry: + entries.append(current_entry) + + # Now, update our current entries if they changed + for entry in entries: + entry.parse_tags() + matched_entries = [e for e in self.entries if e.uuid.lower() == entry.uuid] + if matched_entries: + # This entry is an existing entry + match = matched_entries[0] + if match != entry: + self.entries.remove(match) + entry.modified = True + self.entries.append(entry) + else: + # This entry seems to be new... save it. + entry.modified = True + self.entries.append(entry) + # Remove deleted entries + edited_uuids = [e.uuid for e in entries] + self._deleted_entries = [e for e in self.entries if e.uuid not in edited_uuids] + self.entries[:] = [e for e in self.entries if e.uuid in edited_uuids] + return entries + diff --git a/jrnl/Journal.pyc b/jrnl/Journal.pyc index 2654d7424749415c34616f53756bc6c3d8684833..651164f21efa3058b5dbbbff9f99b7ba59ad9663 100644 GIT binary patch delta 6815 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 delta 4404 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 diff --git a/jrnl/__init__.py b/jrnl/__init__.py index ca25074f..001bf160 100644 --- a/jrnl/__init__.py +++ b/jrnl/__init__.py @@ -7,7 +7,7 @@ jrnl is a simple journal application for your command line. """ __title__ = 'jrnl' -__version__ = '1.6.6' +__version__ = '1.7.2' __author__ = 'Manuel Ebert' __license__ = 'MIT License' __copyright__ = 'Copyright 2013 Manuel Ebert' diff --git a/jrnl/__init__.pyc b/jrnl/__init__.pyc index 20782e0b75790a6814ff8b46d2506f81309f12ce..93f02e6300d362d315a01793564d5f9b727089ec 100644 GIT binary patch delta 22 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 NH``)S(=_WQ`y2NyuCxFE diff --git a/jrnl/exporters.pyc b/jrnl/exporters.pyc index 5248c742a3ccd5257767a4feb9c8ac44b5b0287b..e1b447bddb0d220e721d8e61a20bf1501c2f98a2 100644 GIT binary patch delta 15 Wcmdm>zCoRh`7zCoRh`7vcV3Q-`7vcV3Q-`7w diff --git a/jrnl/util.py b/jrnl/util.py index d461015b..e1766c9d 100644 --- a/jrnl/util.py +++ b/jrnl/util.py @@ -9,6 +9,9 @@ import pytz try: import simplejson as json except ImportError: import json import re +import tempfile +import subprocess +import codecs PY3 = sys.version_info[0] == 3 PY2 = sys.version_info[0] == 2 @@ -121,3 +124,19 @@ def load_and_fix_json(json_path): prompt("[Entry was NOT added to your journal]") sys.exit(1) +def get_text_from_editor(config, template=""): + tmpfile = os.path.join(tempfile.gettempdir(), "jrnl") + if template: + with codecs.open(tmpfile, 'w', "utf-8") as f: + f.write(template) + subprocess.call(config['editor'].split() + [tmpfile]) + if os.path.exists(tmpfile): + with codecs.open(tmpfile, "r", "utf-8") as f: + raw = f.read() + os.remove(tmpfile) + else: + prompt('[Nothing saved to file]') + raw = '' + + return raw + diff --git a/jrnl/util.pyc b/jrnl/util.pyc index bee5ff867fd9a42d1657f48dad620bf909beef77..b179fca2d334478603e9548a16a7936e880d0ef4 100644 GIT binary patch delta 997 zcmYjP&rcIk5dLPjziCTp5!zI+fJilxs4-DPOz=nI!31<6kt`vk^lhP~v`zPc9Ey!; z4<;UrSuY+vc=Ogo;@LBQfbn4b6O30AocCxGwmY-m%=_khZ|1d||1zI7|HdM3W{<5R z`j4N#i)`+z_u02?0SH1h3OkBEj=_!%a2$3V4p13}Fp&{H>>98W=Tm;28qujF?34zh zurFvZ274S%8g@qQQ^-ODAcE);Y#(RZU`Y`|msKx9gwX};35bXWlMq81T!M&dkb~f} z#dZCZ#={yc8Q|DO8kMab{r>CBzKa}p3j9UgxdLMn? z>87{g|3|lbcHkb-{oaRQg6M(wIdno#JU9H6p7yRqt`aTxR)?ldTJ61z|1_!Ott79v ziw29T@dnr)vAHMgBu|e}F(6G;eCX(bcMKdEXc3yrkbYDGXc-Xvn&_B#H;N+@E#?Om zr$e9@d^yk8YAhE*C5#rU_>ieYlpdFE6UN($*WYbOB{^<>J16fS$fpMKQB{8A!L{8RorE=BTux5BIKg`a$!%q6xH41V^gG#+z<32g<>@^f!MmX4Zq>4qk zDb-HJx^RlF^_ZbGrMSC_~7Ns8)HtoNrXiQr9_$Wmme^oGMW|O=quu z;8=>3SI&B-RtCFQ3(}E6l{q_!wWKIFyx-x41@#}|Lv2duP;Qo*^}Wrr?%SMq)9gT5 z3Q(HHXp)lrO;W;$P{7FNz1PY0sI|rvYh5|p`;q(eIGZN1`Q)qcCYo&F*nsfxPuW^kwW>k*8Ul#Ah6cm{dLcvvCL9id3*aJBg0OO<61jv_g*L%u zq<|O(I~rneMZqS-2-wwX6zqYkdVWlEO>+yqaj>s>0vzbaZE#(~Wd74$(vW@nrZBrT z77U8zoAp9-^4k8P`RuZ=M6{f}7JZ^s`B8eOb$MTYqK!;A(?nZYT4|fKlRZ>FP3p?? o`izluq!%8@)39$Okb$!z_oHBNQEkm7mweTEnefSjFE660UnPe{OaK4? diff --git a/objects.inv b/objects.inv index d824b8a43a10ea977a9c8a102dcfefda1d91fa27..7ecd92fe30b9a35cd43373e6e47da8186c9a435a 100644 GIT binary patch delta 221 zcmV<303!dz0>%Q6Is-Q@GLbzye~`fn0wEAU?|y|)*MhFy3Mx88Mf3raGi-u8E^1r- zeYNXUMiRa`hA; XBtiw)0vq}%g-SIOtAEi0i|4AXEnR2r delta 220 zcmV<203-j#0>uK5Is-N?HjzC$e~-Zm0wEBF?>>c4*MhFy3Mx88Mf3oZGi-u8E^1r7 zeYNXUMmPQZKKQMOEhF7@OgMFLBBw_aU1d5xr`iql`gK;d$3JRwAIU?uHy$sJazt#x zy-C({nSFR)4fWzpR3Kv;ie-_Z=*!t&MS@_?rPi}N<ELAJWhMj!ChuI|CT?qI*!jrO;ZsmX%QHw)w6u@j0<{J0#*9qBZ*X WLJF`2HuUomp;FAm>Z1oovZ}4iducuZ diff --git a/overview.html b/overview.html index 22489a56..69c7cde5 100644 --- a/overview.html +++ b/overview.html @@ -7,7 +7,7 @@ - Overview — jrnl 1.6.6 documentation + Overview — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -50,7 +50,9 @@

    Why keep a journal?

    -

    Journals aren’t only for 13-year old girls and people who have too much time on their summer vacation. A journal helps you to keep track of the things you get done and how you did them. Your imagination may be limitless, but your memory isn’t. For personal use, make it a good habit to write at least 20 words a day. Just to reflect what made this day special, why you haven’t wasted it. For professional use, consider a text-based journal to be the perfect complement to your GTD todo list - a documentation of what and how you’ve done it.

    +

    Journals aren’t only for 13-year old girls and people who have too much time on their summer vacation. A journal helps you to keep track of the things you get done and how you did them. Your imagination may be limitless, but your memory isn’t.

    +

    For personal use, make it a good habit to write at least 20 words a day. Just to reflect what made this day special, why you haven’t wasted it.

    +

    For professional use, consider a text-based journal to be the perfect complement to your GTD todo list - a documentation of what and how you’ve done it. Or use it as a quick way to keep a change log. Or use it to keep a lab book.

    diff --git a/recipes.html b/recipes.html index cef4180f..7991cfb4 100644 --- a/recipes.html +++ b/recipes.html @@ -7,7 +7,7 @@ - FAQ — jrnl 1.6.6 documentation + FAQ — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/search.html b/search.html index d3799117..f3a1388d 100644 --- a/search.html +++ b/search.html @@ -7,7 +7,7 @@ - Search — jrnl 1.6.6 documentation + Search — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + diff --git a/searchindex.js b/searchindex.js index 678c5ffa..8710174b 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[6,0,4,7,2],default_minut:7,steve:[6,7],follow:[6,7],privat:7,depend:1,"2013_06_03_a":4,readabl:[2,4],yve:3,program:5,alberto:3,under:7,sha256:5,thursdai:7,everi:5,string:6,"3am":6,fals:7,faq:[0,3],veri:7,untouch:5,recip:[0,3],flatmat:3,level:7,did:2,list:[6,0,4,2],vector:5,dayon:[0,7,2],timeformat:7,initialis:5,ten:6,sync:[2,7],sign:6,pass:7,what:[0,2],access:7,melo:3,"new":[5,1],ever:5,told:1,hash:5,gener:4,chang:[6,5,3,7],decid:5,bodi:1,met:6,path:7,valu:7,wait:7,convers:5,vacat:2,prior:3,behav:7,chcp:3,implement:7,control:[6,7],linewrap:7,apr:6,app:7,vim:7,ask:[5,1],xdg_config_hom:7,instal:[0,3,1],txt:[6,5,7],mobil:7,quickstart:[0,1],from:[6,2,7],would:7,memori:2,doubl:6,two:6,todai:6,websit:7,live:7,call:1,type:[1,7],until:[6,3,1],more:7,sort:4,flat:7,python:[5,7],henc:7,flag:7,known:[0,3],word:2,hous:1,gabriel:4,work:[6,3,7],can:[1,5,3,4,2,6,7],meet:7,overrid:7,prompt:[6,1,7],fabul:2,tag:[6,0,3,4,7],want:[6,5,3,1,7],plist:7,gcc:1,multipl:7,anoth:5,occur:[6,3,4],write:[6,5,1,7,2],how:[6,2,3,7],instead:7,beach:6,after:7,sundai:6,reflect:2,befor:[6,3,7],beauti:4,mai:2,end:7,"short":[3,4],issu:[0,3],"switch":6,environ:3,jrnl:[0,1,2,3,4,5,6,7],enter:[6,5],exclus:6,frontend:7,help:2,becaus:6,cyan:7,still:2,digest:5,perfect:2,gtd:2,thank:3,fix:3,window:3,drawback:7,requir:1,them:[6,2],good:2,"return":1,food:7,timestamp:[6,0,7],dai:[6,2,4,7],initi:5,"break":6,mention:3,macvim:7,now:[6,7],choic:6,name:4,simpl:[2,4,7],crypto:5,separ:7,mode:6,each:[3,4,7],januari:3,unicod:3,my_entri:[6,4],mean:[6,3,7],compil:1,replac:5,individu:[4,7],timelin:4,meta:7,year:[6,2],our:7,girl:2,todo:2,special:[6,2],out:3,variabl:7,mere:7,content:[0,4],print:[6,3,4],lubric:6,occurr:[0,3],advanc:[0,7],given:6,reason:[6,1],base:2,releas:0,"byte":5,bash:7,launch:[6,7],put:2,keep:[6,0,2],filter:[6,0,3],thing:[2,3],isn:2,summari:3,imposs:7,frequent:4,first:[5,3,1,7],origin:5,directli:[6,2],mvim:7,wast:2,date:[6,4,7],alreadi:5,done:2,open:5,fanci:2,differ:7,convent:6,start:[6,0,1,7],top:7,least:[2,7],too:2,tom:6,"final":3,store:[0,2,5],shell:[6,3,7],option:[6,2,3,1,7],specifi:[6,5,4,7],github:4,haven:2,ipad:2,hashlib:5,grep:3,whenev:[6,5],charact:[3,7],project:6,sai:7,comput:5,ani:[6,5],dash:6,packag:3,have:[5,1,7,2],seem:7,imagin:2,built:7,equival:6,note:[6,1,7],also:[6,5,1,7,2],exampl:[4,7],which:[6,3],combin:[6,0,3],singl:[6,7],sure:[6,7],unless:1,track:[6,2],favourit:[6,3],who:2,most:[6,3,4,7],render:4,cipher:5,icloud:7,why:[0,4,2],don:[6,5,7],doc:7,later:5,doe:[3,7],pipe:3,"10am":7,clean:1,pouplard:3,summer:2,text:[2,0,4,7,5],find:3,current:5,onli:[6,2,3,4],explicitli:1,locat:[6,7],execut:7,pretti:4,configur:[6,0,1,7],should:[5,1],jan:3,folder:[2,7],hit:1,"2013_06_07_dinner":4,get:[0,1,2,3,4,7],jrnl_conf:7,endless:7,bar:6,sha:5,integr:[0,7],contain:[6,3],buscemi:6,where:[3,1],view:[6,0],set:7,habit:2,see:[6,7],result:[1,7],close:7,best:6,wonder:6,profession:2,someth:3,sublim:7,won:[5,7],"import":[6,0,4,5],kei:[5,7],complement:2,entir:4,solv:3,both:[6,3,7],instant:2,howev:7,forgotten:2,pdf:4,com:7,comment:7,assur:2,simpli:[6,5],point:[5,7],overview:[0,2],arbitrarili:6,dayoneapp:7,suppli:[6,7],my_recip:7,assum:6,stamp:1,quotat:7,three:7,mark:[6,1,7],json:[0,4,7],much:2,interpret:[1,7],basic:[6,0],my_journ:5,life:6,wish:1,pycyrypto:1,argument:[6,4],"5u8ns4gx82":7,last:[6,7],present:7,look:[6,4,1,7],jrnl_config:7,plain:[5,2],plain_text_copi:5,defin:7,"while":7,abov:4,"_no_":6,pinki:6,readm:4,non:3,ascii:3,sever:4,make:[6,4,1,7,2],format:[4,7],same:[5,3,4],funni:6,html:4,sentenc:1,document:[2,7],extern:[1,7],yesterdai:[6,1],recent:3,off:7,entri:[0,1,3,4,6,7],markup:4,well:1,spent:1,person:2,without:6,command:[6,0,4,7,2],thi:[1,5,3,4,2,6,7],choos:5,everyth:[6,1,7],latest:6,load:7,just:[6,2,1,7],codepag:3,rest:1,markdown:[0,4],human:[2,4],languag:4,had:6,add:6,other:4,input:[6,7],save:7,smart:[6,0],applic:[2,7],march:6,mayb:5,read:[5,2],intuit:7,five:6,bit:2,password:[0,5],like:[6,4,3,1,7],specif:7,filenam:5,whitespac:6,manual:[0,1,7,5],either:6,output:[4,7],old:2,often:3,some:3,dead:7,"export":[6,0,4],librari:[1,7],noon:6,leav:5,anna:6,refer:7,limitless:2,run:[5,3,1],journal:[0,1,2,3,4,5,6,7],usag:[6,0,7],tagsymbol:7,although:[6,7],"_jrnl_":[3,7],"6am":6,plai:2,surround:6,chop:7,consid:2,within:3,encod:3,compos:[6,0,1,7],wrap:7,my_password:5,subl:7,your:[0,1,2,4,5,6,7],wai:[6,7],aren:2,support:[5,7],"long":[2,7],width:7,reli:3,editor:[6,1,7],keychain:[0,5],mode_cbc:5,line:[6,0,3,7,2],"true":7,count:4,made:2,pycrypto:[3,1],whether:[5,1,7],worlddomin:6,displai:[6,3,4,7],below:7,highlight:7,problem:3,default_hour:7,creat:[4,1,7],decrypt:[0,7,5],exist:5,file:[0,1,2,4,5,6,7],pip:1,happen:6,again:5,mutual:6,encrypt:[0,1,2,3,5,7],titl:[4,1],when:[5,2],virtual:3,"default":7,book:1,sick:1,peopl:[6,2],you:[1,5,3,4,2,6,7],intention:6,nice:[2,4],pineappl:6,star:[6,0,3],symbol:[6,7],asterisk:6,mondai:6,dropbox:[2,7],algorithm:5,directori:4,scroll:7,time:[1,5,4,2,6,7],avoid:7},objtypes:{},titles:["jrnl: The command-line journal","Getting started","Overview","FAQ","Import and Export","Encryption","Basic Usage","Advanced Usage"],objnames:{},filenames:["index","installation","overview","recipes","export","encryption","usage","advanced"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[6,0,4,7,5],default_minut:7,steve:[6,7],follow:[6,7],privat:7,depend:1,"2013_06_03_a":4,readabl:[5,4],yve:3,program:2,alberto:3,under:7,leav:2,sha256:2,thursdai:7,everi:2,string:6,"3am":6,fals:7,faq:[0,3],veri:7,cyan:7,recip:[0,3],flatmat:3,level:7,did:5,list:[6,0,4,5],vector:2,dayon:[6,0,7,5],timeformat:7,initialis:2,ten:6,sync:[5,7],sign:6,geoloc:6,pass:7,what:[0,5],access:7,delet:6,melo:3,"new":[6,2,1],ever:2,told:[6,1],hash:[6,2],gener:4,chang:[6,5,3,7,2],decid:2,bodi:1,met:6,path:7,valu:7,wait:7,convers:2,vacat:5,everyon:6,prior:3,behav:7,chcp:3,implement:7,control:[6,7],linewrap:7,apr:6,app:7,vim:7,releas:0,xdg_config_hom:7,instal:[0,3,1],txt:[6,2,7],mobil:7,select:6,quickstart:[0,1],from:[6,5,7],would:[6,7],memori:5,doubl:6,two:6,todai:6,websit:7,live:7,call:[6,1],type:[1,7],until:[6,3,1],more:7,sort:4,flat:7,readm:4,flag:7,known:[0,3],word:5,hous:1,gabriel:4,work:[6,3,7],uniqu:6,histori:6,can:[1,5,3,4,2,6,7],meet:7,overrid:7,prompt:[6,1,7],fabul:5,tag:[6,0,3,4,7],want:[6,2,3,1,7],plist:7,gcc:1,cours:6,multipl:[6,0,7],anoth:2,occur:[6,3,4],write:[6,5,1,7,2],how:[6,5,3,7],instead:7,simpl:[5,4,7],updat:6,after:[6,7],sundai:6,lab:5,reflect:5,befor:[6,3,7],beauti:4,date:[6,4,7],end:7,data:6,github:4,read:[5,2],robot:6,issu:[0,3],"switch":6,combin:[6,0,3],jrnl:[0,1,2,3,4,5,6,7],enter:[6,2],exclus:6,frontend:7,help:5,becaus:6,untouch:2,still:5,digest:2,perfect:5,gtd:5,thank:3,funni:6,fix:3,late:6,window:3,html:4,requir:1,them:[6,5],good:5,"return":1,food:7,timestamp:[6,0,7],dai:[6,5,4,7],initi:2,"break":6,mention:3,macvim:7,now:[6,7],choic:6,name:4,edit:[6,0],beach:6,crypto:2,separ:7,mode:6,each:[6,3,4,7],januari:3,unicod:3,my_entri:[6,4],side:6,mean:[6,3,7],compil:1,replac:2,individu:[4,7],timelin:4,meta:7,year:[6,5],our:7,girl:5,todo:5,special:[6,5],out:3,variabl:7,encod:3,load:7,your:[0,1,2,4,5,6,7],content:[0,4],print:[6,3,4],lubric:6,occurr:[0,3],advanc:[6,0,7],given:6,quick:5,reason:[6,1],base:5,zombi:6,ask:[2,1],"byte":2,bash:7,launch:[6,7],could:6,put:5,keep:[6,0,5],filter:[6,0,3],thing:[5,3],isn:5,view:[6,0],imposs:7,frequent:4,first:[2,3,1,7],origin:2,directli:[6,5],mvim:7,wast:5,mai:5,alreadi:2,done:5,open:[6,2],fanci:5,differ:[6,7],convent:6,width:7,top:7,least:[5,7],attack:6,too:5,tom:6,"final":3,store:[6,0,2,5],shell:[6,3,7],option:[6,5,3,1,7],specifi:[6,2,4,7],"short":[3,4],mostli:6,exactli:6,haven:5,ipad:5,kind:6,grep:3,whenev:[6,2],charact:[3,7],project:6,sai:7,comput:2,ani:[6,2],dash:6,packag:3,have:[6,5,1,7,2],need:6,seem:7,imagin:5,built:[6,7],equival:6,note:[6,1,7],also:[6,5,1,7,2],without:6,which:[6,3],environ:3,singl:[6,7],sure:[6,7],unless:1,track:[6,5],favourit:[6,3],who:5,most:[6,3,4,7],render:4,cipher:2,plan:6,icloud:7,why:[0,4,5],don:[6,2,7],doc:7,later:2,doe:[3,7],pipe:3,"10am":7,clean:1,pouplard:3,text:[0,2,4,5,6,7],bring:6,particularli:6,texa:6,find:3,current:2,onli:[6,5,3,4],explicitli:1,locat:[6,7],just:[6,5,1,7],pretti:4,configur:[6,0,1,7],figur:6,should:[2,1],jan:3,folder:[5,7],codepag:3,hit:1,"2013_06_07_dinner":4,get:[0,1,5,3,4,6,7],hashlib:2,jrnl_conf:7,endless:7,bar:6,noon:6,sha:2,integr:[0,7],contain:[6,3],buscemi:6,where:[3,1],wrote:6,summari:3,set:7,habit:5,sex:6,see:[6,7],result:[1,7],close:[6,7],best:6,wonder:6,someth:3,sublim:7,won:[2,7],"import":[6,0,4,2],kei:[2,7],complement:5,entir:4,solv:3,uuid:6,both:[6,3,7],instant:5,howev:[6,7],alon:6,af8dbd0d43fb55458f11aad586ea2abf:6,forgotten:5,pdf:4,com:7,comment:7,assur:5,simpli:[6,2],point:[2,7],overview:[0,5],arbitrarili:6,dayoneapp:7,written:6,suppli:[6,7],my_recip:7,assum:6,stamp:1,quotat:7,three:7,mark:[6,1,7],json:[0,4,7],much:5,interpret:[1,7],basic:[6,0],my_journ:2,life:6,decrypt:[0,7,2],argument:[6,4],"5u8ns4gx82":7,last:[6,7],present:7,"case":6,look:[6,4,1,7],jrnl_config:7,plain:[5,2],plain_text_copi:2,defin:7,"while":7,abov:4,"_no_":[],loos:6,pinki:6,henc:7,non:3,pip:1,ascii:3,sever:4,make:[6,5,4,1,7],mayb:2,same:[6,2,3,4],python:[2,7],drawback:7,sentenc:1,document:[5,7],extern:[1,7],yesterdai:[6,1],recent:3,off:7,older:[6,0],entri:[0,1,3,4,6,7],markup:4,well:1,spent:1,person:5,exampl:[4,7],command:[6,0,4,7,5],thi:[1,5,3,4,2,6,7],choos:2,everyth:[6,1,7],latest:6,summer:5,identifi:6,execut:7,battleship:6,rest:1,markdown:[0,4],human:[5,4],touch:6,languag:4,had:6,littl:6,add:6,book:[5,1],input:[6,7],save:[6,7],smart:[6,0],applic:[6,5,7],march:6,format:[4,7],handl:6,intuit:7,five:6,press:6,bit:[6,5],password:[0,2],like:[6,4,3,1,7],specif:7,filenam:2,whitespac:6,manual:[0,1,7,2],either:6,night:6,output:[6,4,7],old:[6,5],often:3,some:3,dead:7,"export":[6,0,4],worlddomin:6,librari:[1,7],avoid:7,exit:6,anna:6,refer:7,limitless:5,run:[2,3,1],asterisk:6,journal:[0,1,2,3,4,5,6,7],usag:[6,0,7],tagsymbol:7,although:[6,7],"_jrnl_":[3,7],"6am":6,plai:[6,5],surround:6,chop:7,mondai:6,within:3,profession:5,compos:[6,0,1,7],wrap:7,my_password:2,subl:7,mere:7,log:5,wai:[6,5,7],aren:5,support:[2,7],"long":[6,5,7],start:[6,0,1,7],reli:3,editor:[6,1,7],keychain:[0,2],mode_cbc:2,line:[6,0,3,7,5],"true":7,"2391048fe24111e1983ed49a20be6f9":6,count:4,made:5,algorithm:2,whether:[2,1,7],wish:1,displai:[6,3,4,7],below:7,highlight:7,problem:3,default_hour:7,gone:6,featur:6,creat:[4,1,7],pycyrypto:1,exist:2,file:[0,1,2,4,5,6,7],girlfriend:6,happen:6,again:2,mutual:6,encrypt:[0,1,2,3,5,6,7],titl:[4,1],when:[6,5,2],virtual:3,"default":7,other:[6,4],sick:1,peopl:[6,5],you:[1,5,3,4,2,6,7],intention:6,nice:[5,4],pineappl:6,star:[6,0,3],symbol:[6,7],june:6,consid:5,dropbox:[5,7],pycrypto:[3,1],wife:6,directori:4,time:[1,5,4,2,6,7],scroll:7},objtypes:{},titles:["jrnl: The command-line journal","Getting started","Encryption","FAQ","Import and Export","Overview","Basic Usage","Advanced Usage"],objnames:{},filenames:["index","installation","encryption","recipes","export","overview","usage","advanced"]}) \ No newline at end of file diff --git a/usage.html b/usage.html index 0aeb93f1..84d7b64d 100644 --- a/usage.html +++ b/usage.html @@ -7,7 +7,7 @@ - Basic Usage — jrnl 1.6.6 documentation + Basic Usage — jrnl 1.7.2 documentation @@ -15,7 +15,7 @@ - + @@ -109,7 +109,32 @@

    the last five entries containing both @pineapple and @lubricant. You can change which symbols you’d like to use for tagging in the configuration.

    Note

    -

    jrnl @pinkie @WorldDomination will switch to viewing mode because although _no_ command line arguments are given, all the input strings look like tags - jrnl will assume you want to filter by tag.

    +

    jrnl @pinkie @WorldDomination will switch to viewing mode because although no command line arguments are given, all the input strings look like tags - jrnl will assume you want to filter by tag.

    +
    + +
    +

    Editing older entries

    +

    You can edit selected entries after you wrote them. This is particularly useful when your journal file is encrypted or if you’re using a DayOne journal. To use this feature, you need to have an editor configured in your journal configuration file (see advanced usage):

    +
    jrnl -until 1950 @texas -and @history --edit
    +
    +

    Will open your editor with all entries tagged with @texas and @history before 1950. You can make any changes to them you want; after you save the file and close the editor, your journal will be updated.

    +

    Of course, if you are using multiple journals, you can also edit e.g. the latest entry of your work journal with jrnl work -n 1 --edit. In any case, this will bring up your editor and save (and, if applicable, encrypt) your edited journal after you save and exit the editor.

    +

    You can also use this feature for deleting entries from your journal:

    +
    jrnl @girlfriend -until 'june 2012' --edit
    +
    +

    Just select all text, press delete, and everything is gone...

    +
    +

    Editing DayOne Journals

    +

    DayOne journals can be edited exactly the same way, however the output looks a little bit different because of the way DayOne stores its entries:

    +
    # af8dbd0d43fb55458f11aad586ea2abf
    +2013-05-02 15:30 I told everyone I built my @robot wife for sex.
    +But late at night when we're alone we mostly play Battleship.
    +
    +# 2391048fe24111e1983ed49a20be6f9e
    +2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack.
    +I just figured I'd be on the other side.
    +
    +

    The long strings starting with hash symbol are the so-called UUIDs, unique identifiers for each entry. Don’t touch them. If you do, then the old entry would get deleted and a new one written, which means that you could DayOne loose data that jrnl can’t handle (such as as the entry’s geolocation).

    @@ -132,6 +157,10 @@
  • Viewing
  • Using Tags
  • +
  • Editing older entries +
  • Encryption