Class: Wikidotrb::Module::ForumCategoryCollection
- Inherits:
-
Array
- Object
- Array
- Wikidotrb::Module::ForumCategoryCollection
- Defined in:
- lib/wikidotrb/module/forum_category.rb
Instance Attribute Summary collapse
-
#forum
Returns the value of attribute forum.
Class Method Summary collapse
-
.acquire_update(forum:, categories:) ⇒ Array<ForumCategory>
カテゴリ情報を取得して更新する.
-
.get_categories(site:, forum:)
サイトとフォーラムからカテゴリを取得.
Instance Method Summary collapse
-
#find(id: nil, title: nil) ⇒ ForumCategory?
IDまたはタイトルからカテゴリを検索.
-
#initialize(forum:, categories: []) ⇒ ForumCategoryCollection
constructor
初期化メソッド.
-
#update
カテゴリ情報を更新.
Constructor Details
#initialize(forum:, categories: []) ⇒ ForumCategoryCollection
初期化メソッド
15 16 17 18 |
# File 'lib/wikidotrb/module/forum_category.rb', line 15 def initialize(forum:, categories: []) super(categories) @forum = forum end |
Instance Attribute Details
#forum
Returns the value of attribute forum.
10 11 12 |
# File 'lib/wikidotrb/module/forum_category.rb', line 10 def forum @forum end |
Class Method Details
.acquire_update(forum:, categories:) ⇒ Array<ForumCategory>
カテゴリ情報を取得して更新する
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/wikidotrb/module/forum_category.rb', line 47 def self.acquire_update(forum:, categories:) return categories if categories.empty? responses = forum.site.amc_request( bodies: categories.map { |category| { "c" => category.id, "moduleName" => "forum/ForumViewCategoryModule" } } ) responses.each_with_index do |response, index| category = categories[index] html = Nokogiri::HTML(response.body.to_s) statistics = html.at_css("div.statistics").text description = html.at_css("div.description-block").text.strip info = html.at_css("div.forum-breadcrumbs").text.match(%r{([ \S]*) / ([ \S]*)}) counts = statistics.scan(/\d+/).map(&:to_i) category.last = nil if category.posts_counts != counts[1] category.description = description.match(/[ \S]*$/)[0] category.threads_counts, category.posts_counts = counts category.group = category.forum.groups.find(info[1]) category.title = info[2] pager_no = html.at_css("span.pager-no") category.pagerno = pager_no.nil? ? 1 : pager_no.text.match(/of (\d+)/)[1].to_i end categories end |
.get_categories(site:, forum:)
サイトとフォーラムからカテゴリを取得
23 24 25 26 27 28 29 30 31 |
# File 'lib/wikidotrb/module/forum_category.rb', line 23 def self.get_categories(site:, forum:) categories = [] forum.groups.each do |group| categories.concat(group.categories) end forum._categories = ForumCategoryCollection.new(forum: forum, categories: categories) end |
Instance Method Details
#find(id: nil, title: nil) ⇒ ForumCategory?
IDまたはタイトルからカテゴリを検索
37 38 39 40 41 |
# File 'lib/wikidotrb/module/forum_category.rb', line 37 def find(id: nil, title: nil) find do |category| (id.nil? || category.id == id) && (title.nil? || category.title == title) end end |
#update
カテゴリ情報を更新
75 76 77 |
# File 'lib/wikidotrb/module/forum_category.rb', line 75 def update ForumCategoryCollection.acquire_update(forum: @forum, categories: self) end |