8 changed files with 157 additions and 27 deletions
@ -0,0 +1,63 @@
@@ -0,0 +1,63 @@
|
||||
;;; Buid --- The builder for FG42 -*- lexical-binding: t; -*- |
||||
;; |
||||
;; Copyright (c) 2010-2021 Sameer Rahmani & Contributors |
||||
;; |
||||
;; Author: Sameer Rahmani <lxsameer@gnu.org> |
||||
;; URL: https://gitlab.com/FG42/FG42 |
||||
;; Version: 3.0.0 |
||||
;; |
||||
;; This program is free software; you can redistribute it and/or modify |
||||
;; it under the terms of the GNU General Public License as published by |
||||
;; the Free Software Foundation, either version 3 of the License, or |
||||
;; (at your option) any later version. |
||||
;; |
||||
;; This program is distributed in the hope that it will be useful, |
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
;; GNU General Public License for more details. |
||||
;; |
||||
;; You should have received a copy of the GNU General Public License |
||||
;; along with thnis program. If not, see <http://www.gnu.org/licenses/>. |
||||
;; |
||||
;;; Commentary: |
||||
;; Cubes are the building blocks of any `FG42' editor. Each `cube' is a |
||||
;; unit which defines different abilities in a deterministic and idempotent |
||||
;; way. Cubes are composable and a composition of cubes creates an editor. |
||||
;; |
||||
;;; Code: |
||||
|
||||
(require 'org-element) |
||||
|
||||
|
||||
(defmacro comment (&rest _) |
||||
"Ignore the given BODY." |
||||
nil) |
||||
|
||||
|
||||
(defun ->epoch (date-str) |
||||
"Convert the given DATE-STR to epoch seconds." |
||||
;; Just because it's easier to deal with date in bash rather than elisp |
||||
(string-to-number |
||||
(shell-command-to-string (concat (format "date -d %s" date-str) " +%s")))) |
||||
|
||||
|
||||
(defun get-buffer-global-props (prop) |
||||
"Get a plists of global org properties PROP of current buffer." |
||||
(car |
||||
(org-element-map |
||||
(org-element-parse-buffer) |
||||
'keyword |
||||
(lambda (el) |
||||
(when (string-match prop (org-element-property :key el)) |
||||
(org-element-property :value el)))))) |
||||
|
||||
|
||||
(defun get-file-global-props (file prop) |
||||
"Return the value of the given global PROP in the given org FILE." |
||||
(with-temp-buffer |
||||
(insert-file-contents file) |
||||
(get-buffer-global-props prop))) |
||||
|
||||
|
||||
(provide 'fg42/build/utils) |
||||
;;; utils.el ends here |
Loading…
Reference in new issue