reverse breaks my collection
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 11.9k
- Forks
- 1.5k
- Avg merge
- 17h 55m
- Merged PRs (30d)
- 3
Description
I have had a hard time understanding where the error came from. Basically, I sequently apply a sort, then a reverse, then a take the n first elements then another custom filter based on the collection element attributes.
Using the official reverse filter I get the following error:
Liquid Exception: undefined method `data' for #<Jekyll::Drops::DocumentDrop:0x0055b69ed74470> in index.html
/srv/jekyll/source/_plugins/filters.rb:26:in `block in in_array': undefined method `data' for #<Jekyll::Drops::DocumentDrop:0x0055b69ed74470> (NoMethodError)
when filtering:
def in_array(collection, attribute, value)
collection.reject{|el|
!el.data[attribute].include?(value)
}
end
If I replace the reverse filter by a custom one:
def my_reverse(collection)
collection.reverse
end
It works.
What is the point of the ary = InputIterator.new(input)?
# Reverse the elements of an array
def reverse(input)
ary = InputIterator.new(input)
ary.reverse
end
Cheers
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reverse(input) implementation and its InputIterator use, then reproduce the sort, reverse, take, and custom-filter sequence from the report. Compare the result with the custom my_reverse implementation and determine why the official filter changes the element type or interface. Done means the reported chain works consistently, with a regression test covering the behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ruby
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100