Skip to content

Commit 663d78d

Browse files
add filter option. closes #28.
1 parent 81f6932 commit 663d78d

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/instafeed.coffee

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,10 @@ class Instafeed
128128
images = response.data
129129
images = images[0..@options.limit] if images.length > @options.limit
130130

131+
# filter the results
132+
if @options.filter? and typeof @options.filter is 'function'
133+
images = @_filter(images, @options.filter)
134+
131135
# determine whether to parse a template, or use html fragments
132136
if @options.template? and typeof @options.template is 'string'
133137
# create an html string
@@ -331,6 +335,15 @@ class Instafeed
331335

332336
return data
333337

338+
# helper method to filter out images
339+
_filter: (images, filter) ->
340+
filteredImages = []
341+
for image in images
342+
do (image) ->
343+
filteredImages.push(image) if filter(image)
344+
return filteredImages
345+
346+
334347
# set up exports
335348
root = exports ? window
336349
root.Instafeed = Instafeed

test/instafeedTest.coffee

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,21 @@ describe 'Instafeed instace', ->
202202
feed._sortBy(testdata, 'meta.likes.count', true).should.deep.equal [image2, image1, image3]
203203
feed._sortBy(testdata, 'meta.comments', false).should.deep.equal [image2, image1, image3]
204204

205+
it 'should be able to filter data with a callback', ->
206+
feed = new Instafeed
207+
208+
filterFunc = (image) ->
209+
return image.name is "image1"
205210

211+
image1 =
212+
name: "image1"
213+
image2 =
214+
name: "image2"
215+
image3 =
216+
name: "image3"
217+
testdata = [image1, image2, image3]
206218

219+
feed._filter(testdata, filterFunc).should.deep.equal [image1]
207220

208221

209222

0 commit comments

Comments
 (0)