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?
68 69 70 |
# File 'lib/pixiv/search_result_list.rb', line 68 lazy_attr_reader(:last?) { doc.at('//nav[@class="pager"]//a[@rel="next"]').nil? } |
#page ⇒ Object (readonly)
Lazily returns page
65 66 67 |
# File 'lib/pixiv/search_result_list.rb', line 65 lazy_attr_reader(:page) { at!('.pager li.current').inner_text.to_i } |
#page_hashes ⇒ Object (readonly)
Lazily returns page_hashes
74 75 76 |
# File 'lib/pixiv/search_result_list.rb', line 74 lazy_attr_reader(:page_hashes) { search!('#search-result li.image').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
71 72 73 |
# File 'lib/pixiv/search_result_list.rb', line 71 lazy_attr_reader(:total_count) { at!('.info > .count').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
82 83 84 |
# File 'lib/pixiv/search_result_list.rb', line 82 def first? page == 1 end |
#max_size ⇒ Object
108 109 110 |
# File 'lib/pixiv/search_result_list.rb', line 108 def max_size ILLUSTS_PER_PAGE end |
#next_attrs ⇒ Object
100 101 102 |
# File 'lib/pixiv/search_result_list.rb', line 100 def next_attrs {query: query, search_opts: search_opts, page: page + 1} end |
#next_url ⇒ Object
86 87 88 89 90 91 |
# File 'lib/pixiv/search_result_list.rb', line 86 def next_url return if last? opts = search_opts.dup opts[:page] = page + 1 self.class.url(query, opts) end |
#prev_attrs ⇒ Object
104 105 106 |
# File 'lib/pixiv/search_result_list.rb', line 104 def prev_attrs {query: query, search_opts: search_opts, page: page - 1} end |
#prev_url ⇒ Object
93 94 95 96 97 98 |
# File 'lib/pixiv/search_result_list.rb', line 93 def prev_url return if first? opts = query_opts.dup opts[:page] = page - 1 self.class.url(query, opts) end |
#url ⇒ Object
78 79 80 |
# File 'lib/pixiv/search_result_list.rb', line 78 def url self.class.url(query, search_opts) end |