[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash b0ff280 205/426: Updating docs--signature to handl
From: |
Phillip Lord |
Subject: |
[elpa] externals/dash b0ff280 205/426: Updating docs--signature to handle aliases and subrs |
Date: |
Tue, 04 Aug 2015 19:37:46 +0000 |
branch: externals/dash
commit b0ff280894fce8b88bd41d12607fb497b2c72590
Author: Wilfred Hughes <address@hidden>
Commit: Wilfred Hughes <address@hidden>
Updating docs--signature to handle aliases and subrs
I've also removed docs--docstring since it's just 'documentation.
---
README.md | 18 ++++++++++++++++++
dev/examples-to-docs.el | 36 +++++++++++++++++++++++++-----------
2 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 51209ae..8750a11 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,8 @@ Or you can just dump `dash.el` in your load path somewhere.
## Functions
+* [-first-item](#-first-item-list) `(list)`
+* [-last-item](#-last-item-list) `(list)`
* [-map](#-map-fn-list) `(fn list)`
* [-reduce-from](#-reduce-from-fn-initial-value-list) `(fn initial-value list)`
* [-reduce-r-from](#-reduce-r-from-fn-initial-value-list) `(fn initial-value
list)`
@@ -106,6 +108,22 @@ which demonstrates the usefulness of both versions.
## Documentation and examples
+### -first-item `(list)`
+
+Returns the first item of `list`, or nil on an empty list.
+
+```cl
+(-first-item '(1 2 3)) ;; => 1
+```
+
+### -last-item `(list)`
+
+Returns the first item of `list`, or nil on an empty list.
+
+```cl
+(-last-item '(1 2 3)) ;; => 3
+```
+
### -map `(fn list)`
Returns a new list consisting of the result of applying `fn` to the items in
`list`.
diff --git a/dev/examples-to-docs.el b/dev/examples-to-docs.el
index 4b40b38..a5be5d3 100644
--- a/dev/examples-to-docs.el
+++ b/dev/examples-to-docs.el
@@ -1,4 +1,5 @@
(require 'dash)
+(require 'help-fns)
(defvar functions '())
@@ -11,21 +12,34 @@
(replace-regexp-in-string "\t" "\\t" it t t)
(replace-regexp-in-string "\r" "\\r" it t t))))
-(defun docs--signature (cmd)
- (if (eq 'macro (car cmd))
- (nth 2 cmd)
- (nth 1 cmd)))
-
-(defun docs--docstring (cmd)
- (if (eq 'macro (car cmd))
- (nth 3 cmd)
- (nth 2 cmd)))
+(defun docs--signature (function)
+ "Given FUNCTION (a symbol), return its argument list.
+FUNCTION may reference an elisp function, alias, macro or a subr."
+ (let* ((function-value (indirect-function function))
+ (is-alias (eq function-value (symbol-function function)))
+ ;; if FUNCTION isn't an alias, function-symbol is simply FUNCTION
+ (function-symbol function))
+
+ (when is-alias
+ ;; find the last symbol in the alias chain
+ (while (symbolp (symbol-function function-symbol))
+ (setq function-symbol (symbol-function function-symbol))))
+
+ (if (subrp function-value)
+ ;; read the docstring to find the signature for subrs
+ (let* ((docstring-args (car (help-split-fundoc
+ (documentation function-value)
+ function-symbol)))
+ (fun-with-args (read (downcase docstring-args))))
+ (cdr fun-with-args))
+ ;; otherwise get the signature directly
+ (help-function-arglist function-symbol))))
(defmacro defexamples (cmd &rest examples)
`(add-to-list 'functions (list
',cmd
- (docs--signature (symbol-function ',cmd))
- (docs--docstring (symbol-function ',cmd))
+ (docs--signature ',cmd)
+ (documentation ',cmd)
(-map 'example-to-string (-partition 3
',examples)))))
(defun quote-and-downcase (string)
- [elpa] externals/dash 7e41bed 192/426: Merge pull request #35 from rejeep/sum-and-product, (continued)
- [elpa] externals/dash 7e41bed 192/426: Merge pull request #35 from rejeep/sum-and-product, Phillip Lord, 2015/08/04
- [elpa] externals/dash 3226100 194/426: Indent according to emacs lisp standard, Phillip Lord, 2015/08/04
- [elpa] externals/dash 9f156a6 193/426: Release 1.5.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash a3faf7c 183/426: Release 1.3.2, Phillip Lord, 2015/08/04
- [elpa] externals/dash e07cef6 196/426: Adding -first-item and -last-item. [magnars/dash.el#17], Phillip Lord, 2015/08/04
- [elpa] externals/dash 50659cc 189/426: Release 1.4.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4164908 197/426: Add -min, -max, -min-by and -max-by., Phillip Lord, 2015/08/04
- [elpa] externals/dash 2b20088 195/426: Add -juxt, Phillip Lord, 2015/08/04
- [elpa] externals/dash a3b2fdb 198/426: Merge pull request #38 from rejeep/min-and-max, Phillip Lord, 2015/08/04
- [elpa] externals/dash 22d2c2d 199/426: Release 1.6.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash b0ff280 205/426: Updating docs--signature to handle aliases and subrs,
Phillip Lord <=
- [elpa] externals/dash 506401e 203/426: Merge pull request #39 from Fuco1/rotate, Phillip Lord, 2015/08/04
- [elpa] externals/dash 5b5dab5 200/426: Fix typo, Phillip Lord, 2015/08/04
- [elpa] externals/dash 9bd656e 202/426: Add -rotate, Phillip Lord, 2015/08/04
- [elpa] externals/dash 970728e 201/426: Actually update README :P, Phillip Lord, 2015/08/04
- [elpa] externals/dash 8b17154 204/426: Release 1.7.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash 0db2f5a 208/426: Fix second example for -last/first-item, Phillip Lord, 2015/08/04
- [elpa] externals/dash 788573e 206/426: Merge pull request #36 from Wilfred/master, Phillip Lord, 2015/08/04
- [elpa] externals/dash b1cfe18 209/426: Fix incorrect alias checking in docs--signature, Phillip Lord, 2015/08/04
- [elpa] externals/dash 37064b5 213/426: Include @Fuco1 in Authors/Copyright + fix README, Phillip Lord, 2015/08/04
- [elpa] externals/dash 824fcb3 207/426: Release 1.8.0, Phillip Lord, 2015/08/04