aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2014-12-22 11:37:35 -0200
committerArtur Malabarba <bruce.connor.am@gmail.com>2014-12-22 11:37:35 -0200
commitd51791fb6ae69e3b426f7d598920b4349858908f (patch)
treeccfed6af7baf30d276eb81ffd7642595d68e079b
parent5675fc89e2b06b1533cb588368c1ffa4e414d0f4 (diff)
Refactor .site to .site_par
It turns out some api objects do have a site property, except its value is not a string, it is another object. The actual string we've been referring to as .site is the .site.api_site_parameter To avoid conflicts, I've renamed all our uses of .site to .site_par, and sx-assoc-let now makes sure the object has a .site_par value, instead of a .site value (which it may or may not have now, and is the same object that the api refers to as site).
-rw-r--r--sx-interaction.el18
-rw-r--r--sx-question-list.el2
-rw-r--r--sx-question-mode.el2
-rw-r--r--sx-question.el18
-rw-r--r--sx.el9
5 files changed, 26 insertions, 23 deletions
diff --git a/sx-interaction.el b/sx-interaction.el
index 2768c8d..342ae1c 100644
--- a/sx-interaction.el
+++ b/sx-interaction.el
@@ -142,10 +142,10 @@ Element can be a question, answer, or comment."
(cl-case .type
(answer
(sx-display-question
- (sx-question-get-from-answer .site .id) 'focus))
+ (sx-question-get-from-answer .site_par .id) 'focus))
(question
(sx-display-question
- (sx-question-get-question .site .id) 'focus))))))
+ (sx-question-get-question .site_par .id) 'focus))))))
;;; Displaying
@@ -206,7 +206,7 @@ changes."
:auth 'warn
:url-method "POST"
:filter sx-browse-filter
- :site .site))))
+ :site .site_par))))
;; The api returns the new DATA.
(when (> (length result) 0)
(sx--copy-data (elt result 0) data)
@@ -247,14 +247,14 @@ TEXT is a string. Interactively, it is read from the minibufer."
:auth 'warn
:url-method "POST"
:filter sx-browse-filter
- :site .site
+ :site .site_par
:keywords `((body . ,text)))))
;; The api returns the new DATA.
(when (> (length result) 0)
(sx--add-comment-to-object
(elt result 0)
(if .post_id
- (sx--get-post .post_type .site .post_id)
+ (sx--get-post .post_type .site_par .post_id)
data))
;; Display the changes in `data'.
(sx--maybe-update-display)))))
@@ -287,7 +287,7 @@ ID is an integer."
(car (cl-member-if
(lambda (x) (sx-assoc-let x
(and (equal (or .answer_id .question_id) id)
- (equal .site site))))
+ (equal .site_par site))))
db))))
(defun sx--add-comment-to-object (comment object)
@@ -320,7 +320,7 @@ from context at point."
(let ((buffer (current-buffer)))
(pop-to-buffer
(sx-compose-create
- .site data
+ .site_par data
;; Before send hook
(when .comment_id (list #'sx--comment-valid-p))
;; After send functions
@@ -338,7 +338,7 @@ from context at point."
(defun sx--interactive-site-prompt ()
"Query the user for a site."
(let ((default (or sx-question-list--site
- (sx-assoc-let sx-question-mode--data .site)
+ (sx-assoc-let sx-question-mode--data .site_par)
sx-default-site)))
(funcall (if ido-mode #'ido-completing-read #'completing-read)
(format "Site (%s): " default)
@@ -372,7 +372,7 @@ context at point. "
(sx-assoc-let data
(pop-to-buffer
(sx-compose-create
- .site .question_id nil
+ .site_par .question_id nil
;; After send functions
(list (lambda (_ res)
(sx--add-answer-to-question-object
diff --git a/sx-question-list.el b/sx-question-list.el
index 62ce032..4b6c4ef 100644
--- a/sx-question-list.el
+++ b/sx-question-list.el
@@ -127,7 +127,7 @@ elements:
Also see `sx-question-list-refresh'."
(sx-assoc-let question-data
(let ((favorite (if (member .question_id
- (assoc .site
+ (assoc .site_par
sx-favorites--user-favorite-list))
(if (char-displayable-p ?\x2b26) "\x2b26" "*") " ")))
(list
diff --git a/sx-question-mode.el b/sx-question-mode.el
index a60cf3a..7d61167 100644
--- a/sx-question-mode.el
+++ b/sx-question-mode.el
@@ -254,7 +254,7 @@ query the api."
(if no-update
sx-question-mode--data
(sx-assoc-let sx-question-mode--data
- (sx-question-get-question .site .question_id))))
+ (sx-question-get-question .site_par .question_id))))
(goto-char point)
(when (equal (selected-window)
(get-buffer-window (current-buffer)))
diff --git a/sx-question.el b/sx-question.el
index 801384a..3fcc438 100644
--- a/sx-question.el
+++ b/sx-question.el
@@ -94,8 +94,8 @@ If no cache exists for it, initialize one with SITE."
"Non-nil if QUESTION has been read since last updated.
See `sx-question--user-read-list'."
(sx-assoc-let question
- (sx-question--ensure-read-list .site)
- (let ((ql (cdr (assoc .site sx-question--user-read-list))))
+ (sx-question--ensure-read-list .site_par)
+ (let ((ql (cdr (assoc .site_par sx-question--user-read-list))))
(and ql
(>= (or (cdr (assoc .question_id ql)) 0)
.last_activity_date)))))
@@ -107,14 +107,14 @@ read, i.e., if it was `sx-question--read-p'.
See `sx-question--user-read-list'."
(prog1
(sx-assoc-let question
- (sx-question--ensure-read-list .site)
- (let ((site-cell (assoc .site sx-question--user-read-list))
+ (sx-question--ensure-read-list .site_par)
+ (let ((site-cell (assoc .site_par sx-question--user-read-list))
(q-cell (cons .question_id .last_activity_date))
cell)
(cond
;; First question from this site.
((null site-cell)
- (push (list .site q-cell) sx-question--user-read-list))
+ (push (list .site_par q-cell) sx-question--user-read-list))
;; Question already present.
((setq cell (assoc .question_id site-cell))
;; Current version is newer than cached version.
@@ -149,18 +149,18 @@ If no cache exists for it, initialize one with SITE."
(defun sx-question--hidden-p (question)
"Non-nil if QUESTION has been hidden."
(sx-assoc-let question
- (sx-question--ensure-hidden-list .site)
- (let ((ql (cdr (assoc .site sx-question--user-hidden-list))))
+ (sx-question--ensure-hidden-list .site_par)
+ (let ((ql (cdr (assoc .site_par sx-question--user-hidden-list))))
(and ql (memq .question_id ql)))))
(defun sx-question--mark-hidden (question)
"Mark QUESTION as being hidden."
(sx-assoc-let question
- (let ((site-cell (assoc .site sx-question--user-hidden-list)))
+ (let ((site-cell (assoc .site_par sx-question--user-hidden-list)))
;; If question already hidden, do nothing.
(unless (memq .question_id site-cell)
;; First question from this site.
- (push (list .site .question_id) sx-question--user-hidden-list)
+ (push (list .site_par .question_id) sx-question--user-hidden-list)
;; Question wasn't present.
;; Add it in, but make sure it's sorted (just in case we need
;; it later).
diff --git a/sx.el b/sx.el
index cda1acd..78995a8 100644
--- a/sx.el
+++ b/sx.el
@@ -303,9 +303,12 @@ DATA can also be the link itself."
DATA can be a question, answer, comment, or user (or any object
with a `link' property)."
(when data
- (unless (assq 'site data)
- (setcdr data (cons (cons 'site (sx--site data))
- (cdr data))))
+ (let-alist data
+ (unless .site_par
+ (setcdr data (cons (cons 'site_par
+ (or .site.api_site_parameter
+ (sx--site data)))
+ (cdr data)))))
data))
(defmacro sx-assoc-let (alist &rest body)