aboutsummaryrefslogtreecommitdiff
path: root/sx.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2014-12-17 15:35:54 -0200
committerArtur Malabarba <bruce.connor.am@gmail.com>2014-12-17 15:43:16 -0200
commite39a909dc722dfdb48ecc4533cf061dbb209abf1 (patch)
tree7946e2806452036ca06435238caac372cb103be3 /sx.el
parent925b4ef8b503b22481e624905fa6e3af8d6d4077 (diff)
Implement identifying type, id, and site of a link.
Diffstat (limited to 'sx.el')
-rw-r--r--sx.el16
1 files changed, 16 insertions, 0 deletions
diff --git a/sx.el b/sx.el
index 4ad0fd5..7d67835 100644
--- a/sx.el
+++ b/sx.el
@@ -317,6 +317,22 @@ If ALIST doesn't have a `site' property, one is created using the
(sx--ensure-site ,alist)
(let-alist ,alist ,@body)))
+(defun sx--link-to-data (link)
+ "Convert string LINK into data that can be displayed."
+ (let ((result (list (cons 'site (sx--site link)))))
+ (when (or
+ ;; Answer
+ (and (or (string-match "/a/\\([0-9]+\\)/[0-9]+\\(#.*\\|\\)\\'" link)
+ (string-match "/questions/[0-9]+/[^/]+/\\([0-9]\\)/?\\(#.*\\|\\)\\'" link))
+ (push (cons 'type 'answer) result))
+ ;; Question
+ (and (or (string-match "/q/\\([0-9]+\\)/[0-9]+\\(#.*\\|\\)\\'" link)
+ (string-match "/questions/\\([0-9]+\\)/" link))
+ (push (cons 'type 'question) result)))
+ (push (cons 'id (string-to-number (match-string-no-properties 1 link)))
+ result))
+ result))
+
(defcustom sx-init-hook nil
"Hook run when SX initializes.
Run after `sx-init--internal-hook'."