Skip to content

Commit

Permalink
Include skip cells when they're looked up via a skip label
Browse files Browse the repository at this point in the history
  • Loading branch information
prabhanshuguptagit committed Jun 23, 2024
1 parent 18c3444 commit 1d7b1de
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 16 deletions.
4 changes: 1 addition & 3 deletions src/bean/frames.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -157,15 +157,13 @@
(:skip-cells frame))))

(defn label-name->cells [sheet frame-name label-name & [dirn]]
;; Excludes skip labels
(->> (keys (:labels (get-frame sheet frame-name)))
(filter #(get-label sheet frame-name % dirn))
(filter #(when (= label-name
(:scalar (util/get-cell (:grid sheet) %)))
%))
(map #(label->cells sheet frame-name %))
(apply set/union)
(#(apply disj % (skipped-cells sheet frame-name)))))
(apply set/union)))

(defn mark-skipped [sheet frame-name addresses]
(update-in sheet [:frames frame-name :skip-cells] #(apply conj % (set addresses))))
Expand Down
11 changes: 8 additions & 3 deletions src/bean/functions.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,16 @@
(let [frame-result (:frame (first args))
label (:scalar (second args))
existing-selection (:selection frame-result)
vget-cells (frames/label-name->cells
sheet
get-cells (frames/label-name->cells sheet
(:name frame-result) label dirn)
skipped-cells (frames/skipped-cells sheet (:name frame-result))
skip-label? (get (:skip-cells frame-result) label)
new-selection (set/intersection
vget-cells
(if skip-label?
get-cells
(set/difference
get-cells
(set/difference skipped-cells existing-selection)))
existing-selection)]
(if (frames/label? sheet (:name frame-result) label dirn)
(new-frame-result sheet frame-result new-selection)
Expand Down
10 changes: 0 additions & 10 deletions test/bean/frames_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 +87,6 @@
(is (some? (get-in sheet [:frames frame-name :skip-cells [2 1]])))
(is (some? (get (frames/label->cells sheet frame-name [1 1]) [2 1]))))))

(deftest label-name->cells-test
(testing "Doesn't include skip cells from the result"
(let [frame-name "A frame"
sheet (as-> (new-sheet) sheet
(frames/make-frame sheet frame-name {:start [0 0] :end [2 2]})
(frames/add-label sheet frame-name [0 0] :top)
(grid/update-cell-content [0 0] sheet "A label")
(frames/mark-skipped sheet frame-name [[2 0]]))]
(is (= (frames/label-name->cells sheet frame-name "A label") #{[1 0]})))))

(deftest skipped-cells-test
(testing "Returns skipped cells and cells under a skip label"
(let [frame-name "A frame"
Expand Down

0 comments on commit 1d7b1de

Please sign in to comment.