[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/tomelr 69217d47a6 22/84: feat: Skip converting keys who
From: |
ELPA Syncer |
Subject: |
[elpa] externals/tomelr 69217d47a6 22/84: feat: Skip converting keys whose values are nil |
Date: |
Tue, 3 May 2022 09:58:09 -0400 (EDT) |
branch: externals/tomelr
commit 69217d47a65cb987d7d1ce32d3db5566a169ceca
Author: Kaushal Modi <kaushal.modi@gmail.com>
Commit: Kaushal Modi <kaushal.modi@gmail.com>
feat: Skip converting keys whose values are nil
---
README.org | 71 +++++++++++++++++++++++-------------------
test/all-tests.el | 1 +
test/{all-tests.el => tnil.el} | 32 ++++++++++++++++---
tomelr.el | 11 ++++---
4 files changed, 75 insertions(+), 40 deletions(-)
diff --git a/README.org b/README.org
index 5f1db7d305..c21b8a72e9 100644
--- a/README.org
+++ b/README.org
@@ -18,7 +18,7 @@ the Emacs core library
[[https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/j
It will then be gradually refactored so that it meets the
specification defined below.
-* Library Completion Status [1/7]
+* Library Completion Status [2/7]
- [X] Scalar
- [X] Boolean
- [X] Integer
@@ -26,7 +26,7 @@ specification defined below.
- [X] String
- [X] Date
- [X] Date + Time with Offset
-- [ ] Nil
+- [X] Nil
- [ ] Arrays
- [ ] Array of Arrays
- [ ] Tables
@@ -241,6 +241,43 @@ odt3 = 1979-05-27T00:32:00.999999-07:00
: "odt2": "1979-05-27T00:32:00-07:00",
: "odt3": "1979-05-27T00:32:00.999999-07:00"
: }
+** DONE Nil
+CLOSED: [2022-04-29 Fri 00:11]
+**** S-expression
+#+begin_src emacs-lisp :eval no :noweb-ref nil-value
+'((key1 . 123)
+ (key2 . nil)
+ (key3 . "abc")
+ (key4 . :false)
+ (key5 . t))
+#+end_src
+**** TOML
+#+begin_src emacs-lisp :noweb yes :exports results :wrap src toml
+(tomelr-encode
+ <<nil-value>>)
+#+end_src
+
+#+RESULTS:
+#+begin_src toml
+key1 = 123
+key3 = "abc"
+key4 = false
+key5 = true
+#+end_src
+**** JSON Reference
+#+begin_src emacs-lisp :noweb yes :exports results
+(json-encode-pretty
+ <<nil-value>>)
+#+end_src
+
+#+RESULTS:
+: {
+: "key1": 123,
+: "key2": null,
+: "key3": "abc",
+: "key4": false,
+: "key5": true
+: }
** TOML Arrays: Lists
https://toml.io/en/v1.0.0#array
*** Lists
@@ -827,36 +864,6 @@ booleans = [true, false]
]
}
#+end_example
-** Nil
-**** S-expression
-#+begin_src emacs-lisp :eval no :noweb-ref nil-value
-'((key1 . 123)
- (key2 . nil)
- (key3 . "abc")
- (key4 . :false)
- (key5 . t))
-#+end_src
-**** TOML
-#+begin_src toml
-key1 = 123
-key3 = "abc"
-key4 = false
-key5 = true
-#+end_src
-**** JSON Reference
-#+begin_src emacs-lisp :noweb yes :exports results
-(json-encode-pretty
- <<nil-value>>)
-#+end_src
-
-#+RESULTS:
-: {
-: "key1": 123,
-: "key2": null,
-: "key3": "abc",
-: "key4": false,
-: "key5": true
-: }
** P-lists
**** S-expression
#+begin_src emacs-lisp :eval no :noweb-ref p-list
diff --git a/test/all-tests.el b/test/all-tests.el
index 209d39f3be..5b1013864c 100644
--- a/test/all-tests.el
+++ b/test/all-tests.el
@@ -22,3 +22,4 @@
(setq load-prefer-newer t)
(require 'tscalar)
+(require 'tnil)
diff --git a/test/all-tests.el b/test/tnil.el
similarity index 54%
copy from test/all-tests.el
copy to test/tnil.el
index 209d39f3be..a5b8801e1e 100644
--- a/test/all-tests.el
+++ b/test/tnil.el
@@ -1,4 +1,4 @@
-;;; all-tests.el --- Tests for tomelr.el -*-
lexical-binding: t; -*-
+;; -*- lexical-binding: t; -*-
;; Authors: Kaushal Modi <kaushal.modi@gmail.com>
@@ -17,8 +17,32 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
-;;; Code:
+;;; Commentary:
-(setq load-prefer-newer t)
+;; Test removal of keys with nil value.
-(require 'tscalar)
+;;; Code:
+(require 'tomelr)
+
+;;;; Key with nil value
+(ert-deftest test-nil ()
+ (let ((inp '(((nil_key . nil))
+ ((bool1 . t)
+ (int . +99)
+ (nil_key1 . nil)
+ (bool2 . :false)
+ (nil_key2 . nil)
+ (bool3 . "false"))
+ ))
+ (ref '(""
+ "bool1 = true
+int = 99
+bool2 = false
+bool3 = false"))
+ out)
+ (dolist (el inp)
+ (push (tomelr-encode el) out))
+ (should (equal ref (nreverse out)))))
+
+
+(provide 'tnil)
diff --git a/tomelr.el b/tomelr.el
index 341417f53c..cd7ff6b901 100644
--- a/tomelr.el
+++ b/tomelr.el
@@ -225,10 +225,12 @@ Signal `tomelr-key-format' if it cannot be encoded as a
string."
;;;; Objects
(defun tomelr--print-pair (key val)
"Insert TOML representation of KEY-VAL pair at point."
- (tomelr--print-indentation) ;Newline before each key in a key-value pair
- (tomelr--print-key key)
- (insert tomelr--print-keyval-separator)
- (tomelr--print val))
+ ;; (message "[tomelr--print-pair DBG] key = %S, val = %S" key val)
+ (when val ;Don't print the key if val is nil
+ (tomelr--print-indentation) ;Newline before each key in a key-value pair
+ (tomelr--print-key key)
+ (insert tomelr--print-keyval-separator)
+ (tomelr--print val)))
(defun tomelr--print-map (map)
"Insert TOML object representation of MAP at point.
@@ -311,6 +313,7 @@ ARRAY can also be a list."
((hash-table-p object) (tomelr--print-unordered-map object))
((signal 'tomelr-error (list object)))))
+
;;; User API
(defun tomelr-encode (object)
- [elpa] externals/tomelr d86fd721ce 63/84: fix: Compatibility for emacs 26.3, (continued)
- [elpa] externals/tomelr d86fd721ce 63/84: fix: Compatibility for emacs 26.3, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr a1fa47379e 84/84: chore: Add CHANGELOG generated using git cliff tool, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr ae983711be 78/84: fix: Auto-stringify symbols like 1.10.1, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 61397410af 01/84: Initial empty commit, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 846676a172 06/84: feat: Add plist example, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 8bc506af5a 02/84: Add s-exp->toml examples and spec, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 7d8d41f15b 19/84: feat: Encode to multi-line TOML string automatically, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 0ba5f2ff69 24/84: chore(readme): Move mixed type array example to the 'medley' example, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr ca9245038a 35/84: fix: Attempt to make tomelr--toml-table-p more robust, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 000067cf7d 14/84: chore(readme): Update, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 69217d47a6 22/84: feat: Skip converting keys whose values are nil,
ELPA Syncer <=
- [elpa] externals/tomelr af40c0b40f 11/84: fix: Require subr-x for older Emacs versions, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 060c38b934 16/84: chore(readme): Limit up to 3 levels of headings for Org exports, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 20bf9e6c54 12/84: chore(doc): Add GHA and license badges, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr f37841cc78 25/84: test: Add test for TOML Array of Arrays, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr cedb75df72 29/84: feat: Support basic TOML tables, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 91800b26b8 21/84: feat: Recognize RFC 3339 formatted date-time + offset, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 83e924559e 13/84: chore(doc): Fix typo, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 98c9b8c1fc 26/84: fix: Use `=` and `length` separately instead of `length=`, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr c0962ba15f 33/84: fix: Don't run plist to TOML conversion test on emacs 26.3 and older, ELPA Syncer, 2022/05/03
- [elpa] externals/tomelr 3c068fb9d9 34/84: refactor: Move TOML Table detection logic to a separate fn, ELPA Syncer, 2022/05/03