weneedfeed 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ecf62208b1e01240706300879ec4b276f29f53a4ae638ee317c738e6ed6e4f21
4
- data.tar.gz: 4e8e892bbcbfcbe36b6c621a7bb964eee8898b71c865367cf13e42c19cf5d032
3
+ metadata.gz: 0fdaa4a0f724b7018d6b1b2b585aeaf970eff37538df7ca7aaf760fc217b56dc
4
+ data.tar.gz: 9f34a11d59aaada2d5afd689263f722c0143af5e59b9741e7d6f34d16d807c57
5
5
  SHA512:
6
- metadata.gz: d9af62e115d6e06561968497d555ecfaa779bec8f22ba5397a55de7306ce697be2e4e2adffbab324b122e888215b7d10b57ccc7193ea19fb4bc33ca2291af203
7
- data.tar.gz: 52359b481eee6b05d7afba4d4aa33b0a584716f3c38cc0222aa568f842cc4b8d02ba57722cb469bf9649b07726cbdd5de70b6e53be1cf958e711d1c64dff28eb
6
+ metadata.gz: 878189a82437b83ed25d0c25c5a6de0f4b840c1daf117ccd83d31be1ecbbe2db0d97289bd5ab93e327508562843ddea253948cad63324d3557ab28a0d5052268
7
+ data.tar.gz: 8c56392e937c331456b44c869a96316c892b5321fd85611325c91c3987de079d101144998a4399f4fa668c46181e3f0c51f79fe157bf333d211fcf5ae0aeec87
@@ -5,16 +5,18 @@ on:
5
5
  push:
6
6
  branches:
7
7
  - master
8
+
8
9
  jobs:
9
10
  build:
10
11
  runs-on: ubuntu-18.04
11
12
  steps:
12
13
  - uses: actions/checkout@v2
13
- - uses: actions/setup-ruby@v1
14
+ - uses: ruby/setup-ruby@v1
14
15
  with:
15
- ruby-version: '2.7.2'
16
- - run: bundle install --jobs=$(($(nproc) - 1)) --retry=3
17
- - run: bundle exec rubocop --color --parallel
16
+ bundler-cache: true
17
+ ruby-version: 2.7.2
18
+ - uses: r7kamura/rubocop-problem-matchers-action@v1
19
+ - run: bundle exec rubocop --parallel
18
20
  - run: bundle exec rspec --force-color
19
21
 
20
22
 
data/.rspec CHANGED
@@ -1 +1,2 @@
1
+ --format doc
1
2
  --require spec_helper
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.5.0 - 2020-11-14
11
+
12
+ ### Added
13
+
14
+ - Add datetime attribute support on time element.
15
+
16
+ ### Changed
17
+
18
+ - Change schema format about selectors.
19
+
10
20
  ## 0.4.1 - 2020-11-08
11
21
 
12
22
  ### Fixed
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weneedfeed (0.4.1)
4
+ weneedfeed (0.5.0)
5
5
  faraday
6
6
  hibana
7
7
  nokogiri
data/README.md CHANGED
@@ -25,34 +25,62 @@ Or install it yourself as:
25
25
  gem install weneedfeed
26
26
  ```
27
27
 
28
- ## Usage
28
+ ## Schema
29
29
 
30
- ### Schema
30
+ You need to write a schema file named with `weneedfeed.yml` to use this gem.
31
31
 
32
- Write `weneedfeed.yml`.
32
+ ### Example
33
33
 
34
34
  ```yaml
35
35
  pages:
36
36
  example1:
37
37
  title: example site 1
38
38
  url: http://example.com/1
39
- selectors:
40
- item: li
41
- item_description: p:nth-child(3)
42
- item_link: a
43
- item_time: time[datetime]
44
- item_title: p:nth-child(2)
39
+ item_selector: li
40
+ item_description_selector: p:nth-child(3)
41
+ item_link_selector: a
42
+ item_time_selector: time
43
+ item_title_selector: p:nth-child(2)
45
44
  example2:
46
45
  title: example site 2
47
46
  url: http://example.com/2
48
- selectors:
49
- item: //li
50
- item_description: .//p[3]
51
- item_link: .//a/@href
52
- item_time: .//time/@datetime
53
- item_title: .//p[2]
47
+ item_selector: //li
48
+ item_description_selector: .//p[3]
49
+ item_link_selector: .//a/@href
50
+ item_time_selector: .//time
51
+ item_title_selector: .//p[2]
54
52
  ```
55
53
 
54
+ ### `title`
55
+
56
+ Feed title, used for RSS `<title>` element in `<channel>` element.
57
+
58
+ ### `url`
59
+
60
+ URL to fetch HTML page for building feed.
61
+
62
+ ### `item_selector`
63
+
64
+ CSS or XPath selector to search each item, equivalent unit to RSS `<item>` element.
65
+
66
+ ### `item_link_selector`
67
+
68
+ CSS or XPath selector to find `<a>` element in each item, used for `<link>` in `<item>`.
69
+
70
+ ### `item_time_selector`
71
+
72
+ CSS or XPath selector to find element with datetime information in each item, used for `<pubDate>` in `<item>`. Its `datetime` attribute or its inner HTML is used to calculate datetime.
73
+
74
+ ### `item_title_selector`
75
+
76
+ CSS or XPath selector to find element with title information in each item, used for `<pubDate>` in `<item>`.
77
+
78
+ ### `item_description_selector`
79
+
80
+ CSS or XPath selector to find element with description information in each item, used for `<description>` in `<item>`.
81
+
82
+ ## Usage
83
+
56
84
  ### Build
57
85
 
58
86
  Run `weneedfeed build` to build static files.
@@ -20,11 +20,11 @@ module Weneedfeed
20
20
  end
21
21
 
22
22
  scraping = ::Weneedfeed::Scraping.new(
23
- item_description_selector: properties['selectors']['item_description'],
24
- item_link_selector: properties['selectors']['item_link'],
25
- item_time_selector: properties['selectors']['item_time'],
26
- item_title_selector: properties['selectors']['item_title'],
27
- item_selector: properties['selectors']['item'],
23
+ item_description_selector: properties['item_description_selector'],
24
+ item_link_selector: properties['item_link_selector'],
25
+ item_time_selector: properties['item_time_selector'],
26
+ item_title_selector: properties['item_title_selector'],
27
+ item_selector: properties['item_selector'],
28
28
  title: properties['title'],
29
29
  url: properties['url']
30
30
  )
@@ -62,9 +62,17 @@ module Weneedfeed
62
62
 
63
63
  private
64
64
 
65
+ # @return [Nokogiri::Node, nil]
66
+ def time_node
67
+ @node.at(@time_selector)
68
+ end
69
+
65
70
  # @return [String]
66
71
  def time_string
67
- @node.at(@time_selector).inner_html
72
+ node = time_node
73
+ return unless node
74
+
75
+ node['datetime'] || node.inner_html
68
76
  end
69
77
  end
70
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Weneedfeed
4
- VERSION = '0.4.1'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weneedfeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-08 00:00:00.000000000 Z
11
+ date: 2020-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday