42 lines
1,013 B
EmacsLisp
42 lines
1,013 B
EmacsLisp
|
;; functions.el --- String helper functions for my Emacs development -*- lexical-binding: t -*-
|
||
|
;; Author: William Carroll <wpcarro@gmail.com>
|
||
|
|
||
|
;;; Commentary:
|
||
|
;; String & Symbol helpers!
|
||
|
|
||
|
;;; Code:
|
||
|
|
||
|
(require 'dash)
|
||
|
(require 's)
|
||
|
|
||
|
;; Strings
|
||
|
(defun string/hookify (x)
|
||
|
"Append \"-hook\" to X."
|
||
|
(s-append "-hook" x))
|
||
|
|
||
|
(defun string/ensure-hookified (x)
|
||
|
"Ensure that X has \"-hook\" appended to it."
|
||
|
(if (s-ends-with? "-hook" x)
|
||
|
x
|
||
|
(string/hookify x)))
|
||
|
|
||
|
;; Symbols
|
||
|
(defun symbol/as-string (callback x)
|
||
|
"Treat the symbol, X, as a string while applying CALLBACK to it.
|
||
|
Coerce back to a symbol on the way out."
|
||
|
(->> x
|
||
|
symbol-name
|
||
|
callback
|
||
|
intern))
|
||
|
|
||
|
(defun symbol/hookify (x)
|
||
|
"Append \"-hook\" to X when X is a symbol."
|
||
|
(symbol/as-string #'string/hookify x))
|
||
|
|
||
|
(defun symbol/ensure-hookified (x)
|
||
|
"Ensure that X has \"-hook\" appended to it when X is a symbol."
|
||
|
(symbol/as-string #'string/ensure-hookified x))
|
||
|
|
||
|
(provide 'string-functions)
|
||
|
;;; string-functions.el ends here
|