mirror of
https://github.com/davidkeegan/dklrt
synced 2024-12-25 09:59:19 +01:00
WIP: hour precision.
This commit is contained in:
parent
db568429e2
commit
a894537691
3 changed files with 24 additions and 13 deletions
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
An add-on to ledger-mode which appends recurring transactions to
|
An add-on to ledger-mode which appends recurring transactions to
|
||||||
the current ledger file. Recurring transactions are configured in a
|
the current ledger file, usually on entry to ledger-mode. Recurring
|
||||||
separate file which conforms to ledger file format and resides in
|
transactions are configured in a separate file which conforms to
|
||||||
the same directory as the ledger file.
|
ledger file format and resides in the same directory as the ledger
|
||||||
|
file.
|
||||||
|
|
||||||
|
|
9
Time.py
9
Time.py
|
@ -12,6 +12,9 @@ ReDate = '\d{4}%s\d{1,2}%s\d{1,2}' % (ReDateSep, ReDateSep)
|
||||||
RePeriod = '(\d+)([ymwd])'
|
RePeriod = '(\d+)([ymwd])'
|
||||||
|
|
||||||
DateFormat = '%Y-%m-%d'
|
DateFormat = '%Y-%m-%d'
|
||||||
|
DateFormatH = DateFormat + ' %H';
|
||||||
|
DateFormatHm = DateFormatH + ':%M';
|
||||||
|
DateFormatHms = DateFormatHm + ':%S';
|
||||||
|
|
||||||
SecPerDay = 24 * 60 * 60
|
SecPerDay = 24 * 60 * 60
|
||||||
|
|
||||||
|
@ -19,7 +22,11 @@ def _Throw(Msg): Misc.Throw(Msg, ModuleName)
|
||||||
|
|
||||||
def DateParse(Datestr):
|
def DateParse(Datestr):
|
||||||
"""Converts a date string to seconds since the epoch."""
|
"""Converts a date string to seconds since the epoch."""
|
||||||
return mktime(strptime(Datestr, DateFormat))
|
Fs = DateFormat;
|
||||||
|
if length(Datestr) > 16 : Fs = DateFormatHms;
|
||||||
|
elif length(Datestr) > 13 : Fs = DateFormatHm;
|
||||||
|
elif length(Datestr) > 10 : Fs = DateFormatH;
|
||||||
|
return mktime(strptime(Datestr, Fs))
|
||||||
|
|
||||||
def DateToText(Seconds):
|
def DateToText(Seconds):
|
||||||
# Round seconds to integer first as we're truncating the time
|
# Round seconds to integer first as we're truncating the time
|
||||||
|
|
21
dklrt.el
21
dklrt.el
|
@ -11,9 +11,10 @@
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
|
||||||
;; An add-on to ledger-mode which appends recurring transactions to
|
;; An add-on to ledger-mode which appends recurring transactions to
|
||||||
;; the current ledger file. Recurring transactions are configured in a
|
;; the current ledger file, usually on entry to ledger-mode. Recurring
|
||||||
;; separate file which conforms to ledger file format and resides in
|
;; transactions are configured in a separate file which conforms to
|
||||||
;; the same directory as the ledger file.
|
;; ledger file format and resides in the same directory as the ledger
|
||||||
|
;; file.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defgroup dklrt nil
|
(defgroup dklrt nil
|
||||||
"Customisation of dklrt package (Ledger Recurring Transactions)."
|
"Package dklrt (Ledger Recurring Transactions)."
|
||||||
:tag "dklrt"
|
:tag "dklrt"
|
||||||
:group 'dk)
|
:group 'dk)
|
||||||
|
|
||||||
|
@ -41,7 +42,7 @@ The default assumes python is on the PATH."
|
||||||
:tag "dklrt-PythonProgram"
|
:tag "dklrt-PythonProgram"
|
||||||
:type '(string))
|
:type '(string))
|
||||||
|
|
||||||
(defcustom dklrt-AppendBefore "1w"
|
(defcustom dklrt-AppendBefore "3d"
|
||||||
"Controls when a recurring transaction is actually appended.
|
"Controls when a recurring transaction is actually appended.
|
||||||
The value is a period do list format: <integer><y|m|d|w|h>. A
|
The value is a period do list format: <integer><y|m|d|w|h>. A
|
||||||
recurring transaction is appended when the current date/time is
|
recurring transaction is appended when the current date/time is
|
||||||
|
@ -69,7 +70,7 @@ transaction date."
|
||||||
|
|
||||||
; Hard-coded alternative value for debug only.
|
; Hard-coded alternative value for debug only.
|
||||||
(or dklrt-PackageDirectory
|
(or dklrt-PackageDirectory
|
||||||
(setq dklrt-PackageDirectory "/opt/dk/emacs/dklrt-20131028.954/"))
|
(setq dklrt-PackageDirectory "/opt/dk/emacs/dklrt-20131028.1025/"))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun dklrt-SetCcKeys()
|
(defun dklrt-SetCcKeys()
|
||||||
|
@ -94,9 +95,11 @@ To invoke, add this function to `ledger-mode-hook'."
|
||||||
((Lfn (buffer-file-name))
|
((Lfn (buffer-file-name))
|
||||||
(Cfn (dklrt-RecurringConfigFileName Lfn))
|
(Cfn (dklrt-RecurringConfigFileName Lfn))
|
||||||
(Pfn (expand-file-name "Recurring.py" dklrt-PackageDirectory))
|
(Pfn (expand-file-name "Recurring.py" dklrt-PackageDirectory))
|
||||||
(Td (dkmisc-TimeApplyShift (dkmisc-DateToText)
|
(AppendBefore
|
||||||
(or dklrt-AppendBefore "0h")))
|
(if (> (length dklrt-AppendBefore) 0) dklrt-AppendBefore "0h"))
|
||||||
(Sc (format "%s %s %s %s %s" dklrt-PythonProgram Pfn Lfn Td Cfn)))
|
(Td (dkmisc-TimeApplyShift (dkmisc-DateToText) AppendBefore))
|
||||||
|
(Sc (format "\"%s\" \"%s\" \"%s\" \"%s\" \"%s\""
|
||||||
|
dklrt-PythonProgram Pfn Lfn Td Cfn)))
|
||||||
|
|
||||||
(message "Invoking: \"%s\"..." Sc)
|
(message "Invoking: \"%s\"..." Sc)
|
||||||
(let*
|
(let*
|
||||||
|
|
Loading…
Reference in a new issue