lib/qiita_trend/trend.rb in qiita_trend-0.2.8 vs lib/qiita_trend/trend.rb in qiita_trend-0.2.9

- old
+ new

@@ -3,21 +3,32 @@ require 'nokogiri' require 'open-uri' require 'json' module QiitaTrend + # Qiitaのトレンドの機能を提供する class Trend + # @return [Array] トレンドデータ attr_reader :data + # コンストラクタ + # + # @param [TrendType] trend_type トレンドタイプ + # @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか + # @raise [LoginFailureError] ログインに失敗した時に発生する + # @raise [NotExistsCacheError] 存在しないキャッシュファイルを指定した時に発生する def initialize(trend_type = TrendType::DAILY, date = nil) page = Page.new(trend_type, date) parsed_html = Nokogiri::HTML.parse(page.html) trends_data = JSON.parse(parsed_html.xpath('//div[@data-hyperapp-app="Trend"]')[0]['data-hyperapp-props']) @data = trends_data['trend']['edges'] end + # Qiitaの対象のトレンドをすべて取得 + # + # @return [Array] Qiitaの対象のトレンドすべて def items @data.each_with_object([]) do |trend, value| result = {} result['title'] = trend['node']['title'] result['user_name'] = trend['node']['author']['urlName'] @@ -29,9 +40,12 @@ result['is_new_arrival'] = trend['isNewArrival'] value << result end end + # Qiitaの対象のトレンドからNEWのものだけ取得 + # + # @return [Array] Qiitaの対象のトレンドからNEWのものだけ def new_items items.select do |trend| trend['is_new_arrival'] == true end end