Class: Pixiv::SearchResultList
- Inherits:
-
IllustList
- Object
- Page
- IllustList
- Pixiv::SearchResultList
- Defined in:
- lib/pixiv/search_result_list.rb
Constant Summary collapse
- ILLUSTS_PER_PAGE =
20
Instance Attribute Summary collapse
-
#last? ⇒ Object
readonly
Lazily returns last?.
-
#page ⇒ Object
readonly
Lazily returns page.
-
#page_hashes ⇒ Object
readonly
Lazily returns page_hashes.
-
#query ⇒ Object
readonly
Returns the value of attribute query.
-
#search_opts ⇒ Object
readonly
Returns the value of attribute search_opts.
-
#total_count ⇒ Object
readonly
Lazily returns total_count.
Class Method Summary collapse
Instance Method Summary collapse
- #first? ⇒ Boolean
-
#initialize(doc_or_doc_creator, attrs = {}) ⇒ SearchResultList
constructor
A new instance of SearchResultList.
- #max_size ⇒ Object
- #next_attrs ⇒ Object
- #next_url ⇒ Object
- #prev_attrs ⇒ Object
- #prev_url ⇒ Object
- #url ⇒ Object
Methods inherited from IllustList
#doc, #illust_hashes, #page_class
Methods included from PageCollection
Methods inherited from Page
#bind, #doc, #fetched?, #force, lazy_new
Constructor Details
#initialize(doc_or_doc_creator, attrs = {}) ⇒ SearchResultList
Returns a new instance of SearchResultList.
56 57 58 59 60 |
# File 'lib/pixiv/search_result_list.rb', line 56 def initialize(doc_or_doc_creator, attrs = {}) raise ArgumentError, "`attrs[:query]' must be present" unless attrs[:query] raise ArgumentError, "`attrs[:search_opts]' must be present" unless attrs[:search_opts] super end |
Instance Attribute Details
#last? ⇒ Object (readonly)
Lazily returns last?
69 70 71 |
# File 'lib/pixiv/search_result_list.rb', line 69 lazy_attr_reader(:last?) { doc.at('//div[@class="pager-container"]//a[@rel="next"]').nil? } |
#page ⇒ Object (readonly)
Lazily returns page
65 66 67 68 |
# File 'lib/pixiv/search_result_list.rb', line 65 lazy_attr_reader(:page) { node = doc.at('.page-list li.current') node ? node.inner_text.to_i : 1 } |
#page_hashes ⇒ Object (readonly)
Lazily returns page_hashes
75 76 77 |
# File 'lib/pixiv/search_result_list.rb', line 75 lazy_attr_reader(:page_hashes) { search!('.column-search-result li.image-item').map {|n| hash_from_list_item(n) } } |
#query ⇒ Object (readonly)
Returns the value of attribute query.
62 63 64 |
# File 'lib/pixiv/search_result_list.rb', line 62 def query @query end |
#search_opts ⇒ Object (readonly)
Returns the value of attribute search_opts.
63 64 65 |
# File 'lib/pixiv/search_result_list.rb', line 63 def search_opts @search_opts end |
#total_count ⇒ Object (readonly)
Lazily returns total_count
72 73 74 |
# File 'lib/pixiv/search_result_list.rb', line 72 lazy_attr_reader(:total_count) { at!('.column-label > .count-badge').inner_text.to_i } |
Class Method Details
.url(query, opts = {}) ⇒ Object
51 52 53 54 |
# File 'lib/pixiv/search_result_list.rb', line 51 def self.url(query, opts = {}) word = URI::encode_www_form({word: query}) "#{ROOT_URL}/search.php?s_mode=s_tag&#{word}&p=#{opts[:page] || 1}" # FIXME end |
Instance Method Details
#first? ⇒ Boolean
83 84 85 |
# File 'lib/pixiv/search_result_list.rb', line 83 def first? page == 1 end |
#max_size ⇒ Object
109 110 111 |
# File 'lib/pixiv/search_result_list.rb', line 109 def max_size ILLUSTS_PER_PAGE end |
#next_attrs ⇒ Object
101 102 103 |
# File 'lib/pixiv/search_result_list.rb', line 101 def next_attrs {query: query, search_opts: search_opts, page: page + 1} end |
#next_url ⇒ Object
87 88 89 90 91 92 |
# File 'lib/pixiv/search_result_list.rb', line 87 def next_url return if last? opts = search_opts.dup opts[:page] = page + 1 self.class.url(query, opts) end |
#prev_attrs ⇒ Object
105 106 107 |
# File 'lib/pixiv/search_result_list.rb', line 105 def prev_attrs {query: query, search_opts: search_opts, page: page - 1} end |
#prev_url ⇒ Object
94 95 96 97 98 99 |
# File 'lib/pixiv/search_result_list.rb', line 94 def prev_url return if first? opts = query_opts.dup opts[:page] = page - 1 self.class.url(query, opts) end |
#url ⇒ Object
79 80 81 |
# File 'lib/pixiv/search_result_list.rb', line 79 def url self.class.url(query, search_opts) end |