diff options
author | Vincent Ambo <mail@tazj.in> | 2021-12-13T22·51+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-12-13T23·15+0300 |
commit | 019f8fd2113df4c5247c3969c60fd4f0e08f91f7 (patch) | |
tree | 76a857f61aa88f62a30e854651e8439db77fd0ea /users/wpcarro/emacs/.emacs.d/wpc/timestring.el | |
parent | 464bbcb15c09813172c79820bcf526bb10cf4208 (diff) | |
parent | 6123e976928ca3d8d93f0b2006b10b5f659eb74d (diff) |
subtree(users/wpcarro): docking briefcase at '24f5a642' r/3226
git-subtree-dir: users/wpcarro git-subtree-mainline: 464bbcb15c09813172c79820bcf526bb10cf4208 git-subtree-split: 24f5a642af3aa1627bbff977f0a101907a02c69f Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
Diffstat (limited to 'users/wpcarro/emacs/.emacs.d/wpc/timestring.el')
-rw-r--r-- | users/wpcarro/emacs/.emacs.d/wpc/timestring.el | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/users/wpcarro/emacs/.emacs.d/wpc/timestring.el b/users/wpcarro/emacs/.emacs.d/wpc/timestring.el new file mode 100644 index 000000000000..a9bf64e9a459 --- /dev/null +++ b/users/wpcarro/emacs/.emacs.d/wpc/timestring.el @@ -0,0 +1,78 @@ +;;; timestring.el --- Quickly access timestamps in different formats -*- lexical-binding: t -*- + +;; Author: William Carroll <wpcarro@gmail.com> +;; Version: 0.0.1 +;; URL: https://git.wpcarro.dev/wpcarro/briefcase +;; Package-Requires: ((emacs "25.1")) + +;;; Commentary: + +;; I was making some API calls where a URL needed a `since` parameter that of an +;; RFC 3339 encoded string. +;; +;; Because I didn't know what a RFC 3339 encoded +;; string was at the time, and because I didn't know what its format was +;; according to strftime, and because I'm most likely to forget both of these +;; things by the next time that I need something similar, I decided to write +;; this package so that I can accumulate a list of common time encodings. +;; +;; Thank you, Emacs. +;; +;; p.s. - I may turn this into a proper module and publish it. But not today. + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'ts) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Library +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgroup timestring nil + "Customize group for timestring configuration.") + +(defcustom timestring-supported-encodings + '(("RFC 3339" . "%Y-%m-%dT%H:%M:%SZ") + ;; Does anyone recognize this format? + ("IDK" . "%Y-%m-%d %H:%M:%S %z")) + "Mapping of encoding names to their format strings." + :group 'timestring) + +(defcustom timestring-supported-times + '(("yesterday" . timestring--yesterday) + ("now" . ts-now) + ("tomorrow" . timestring--tomorrow)) + "Mapping of a labels to the functions that create those time objects." + :group 'timestring) + +(defun timestring--yesterday () + "Return a time object for yesterday." + (ts-adjust 'day -1 (ts-now))) + +(defun timestring--tomorrow () + "Return a time object for yesterday." + (ts-adjust 'day +1 (ts-now))) + +(defun timestring--completing-read (label xs) + "Call `completing-read' with LABEL over the collection XS." + (alist-get (completing-read label xs) xs nil nil #'equal)) + +(defun timestring-copy-encoded-time () + "Select a common time and an encoding. + +The selected time will be encoded using the selected encoding and copied onto +your clipboard." + (interactive) + (let ((time (funcall (timestring--completing-read + "Time: " timestring-supported-times))) + (fmt (timestring--completing-read + "Encoding: " timestring-supported-encodings))) + (kill-new (ts-format fmt time)) + (message "Copied!"))) + +(provide 'timestring) +;;; timestring.el ends here |