jekyll-indico 0.4.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2fd70ce9ff3c9b8e49a90d35d11c785073ddcb46
4
- data.tar.gz: 1a45a9c41cb364fe92fc43f198e1be4ef95c9543
2
+ SHA256:
3
+ metadata.gz: d07e0cc35ca21aab0d8b934a3e4dbc4ce9754f9b381e018a9030ec74c09291db
4
+ data.tar.gz: ceb2b86e65b6d40da965925abd98ab1b07830e255daf67ef2dce019d9da1e0c6
5
5
  SHA512:
6
- metadata.gz: 1faa993005ede31ba0eead7c4e4801f8d0d96afd6e76b2089e67d03c73713ecf40e458d449771c10afee1d33b3e17ebc62a4bdc772ed1c7ced9eaeeaa6f3f37c
7
- data.tar.gz: a9b7199fb3b6695b69e70b12d9c3ad735e7c01030fd95d9ae7b0772c1286aba3caa8804da6530c383de1347c3726938415cb17636941b4db527b68efe8c0f22d
6
+ metadata.gz: f0c639bf38480127762ab82011e4953a57b8f11f4e16bb484750690eabeef6ce2fb3f5a109f64336938555c8e1db059eac09d6881ccfdb4810fedd411b565038
7
+ data.tar.gz: 4fc89a0896dfdf28f3719e5ea7775a1080912fd221361600da28531175ce570885b060c1542ffb979af03ad0360f68807ff643d7fc17634df23baa3f434d03d4
data/.rubocop.yml CHANGED
@@ -2,10 +2,12 @@ Metrics/MethodLength:
2
2
  Max: 25
3
3
  Metrics/AbcSize:
4
4
  Max: 55
5
+ Metrics/CyclomaticComplexity:
6
+ Max: 10
5
7
  Style/NumericLiterals:
6
8
  Enabled: false
7
9
  Naming/FileName:
8
10
  Enabled: false
9
11
  AllCops:
10
12
  NewCops: enable
11
- TargetRubyVersion: 2.4
13
+ TargetRubyVersion: 2.6
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.10
1
+ 2.6.6
data/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
+
2
+ # Version 0.6
3
+
4
+ Minimum Ruby version is now Ruby 2.6. Optimized `paginate` to reduce the API calls by one.
5
+
6
+ # Version 0.5
7
+
8
+ Added a way to paginate. Use `paginate: N` to iterate over pages of results.
9
+
10
+ # Version 0.4.5
11
+
12
+ Fix timeout being incorrectly called again.
13
+
14
+ # Version 0.4.4
15
+
16
+ Fix timeout being incorrectly called.
17
+
1
18
  # Version 0.4.3
2
19
 
3
- Fix warning message for classic tokens. Add time prinout to help judge need for
20
+ Fix warning message for classic tokens. Add time printout to help judge need for
4
21
  timeout setting.
5
22
 
6
23
  # Version 0.4.2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jekyll-indico (0.4.3)
4
+ jekyll-indico (0.6.0)
5
5
  jekyll (>= 3.8, < 5.0)
6
6
 
7
7
  GEM
@@ -20,33 +20,37 @@ GEM
20
20
  ffi (1.15.5)
21
21
  forwardable-extended (2.6.0)
22
22
  http_parser.rb (0.8.0)
23
- i18n (0.9.5)
23
+ i18n (1.9.1)
24
24
  concurrent-ruby (~> 1.0)
25
- jekyll (3.9.1)
25
+ jekyll (4.2.1)
26
26
  addressable (~> 2.4)
27
27
  colorator (~> 1.0)
28
28
  em-websocket (~> 0.5)
29
- i18n (~> 0.7)
30
- jekyll-sass-converter (~> 1.0)
29
+ i18n (~> 1.0)
30
+ jekyll-sass-converter (~> 2.0)
31
31
  jekyll-watch (~> 2.0)
32
- kramdown (>= 1.17, < 3)
32
+ kramdown (~> 2.3)
33
+ kramdown-parser-gfm (~> 1.0)
33
34
  liquid (~> 4.0)
34
- mercenary (~> 0.3.3)
35
+ mercenary (~> 0.4.0)
35
36
  pathutil (~> 0.9)
36
- rouge (>= 1.7, < 4)
37
+ rouge (~> 3.0)
37
38
  safe_yaml (~> 1.0)
38
- jekyll-sass-converter (1.5.2)
39
- sass (~> 3.4)
39
+ terminal-table (~> 2.0)
40
+ jekyll-sass-converter (2.1.0)
41
+ sassc (> 2.0.1, < 3.0)
40
42
  jekyll-watch (2.2.1)
41
43
  listen (~> 3.0)
42
44
  kramdown (2.3.1)
43
45
  rexml
46
+ kramdown-parser-gfm (1.1.0)
47
+ kramdown (~> 2.0)
44
48
  liquid (4.0.3)
45
49
  listen (3.7.1)
46
50
  rb-fsevent (~> 0.10, >= 0.10.3)
47
51
  rb-inotify (~> 0.9, >= 0.9.10)
48
- mercenary (0.3.6)
49
- parallel (1.20.1)
52
+ mercenary (0.4.0)
53
+ parallel (1.21.0)
50
54
  parser (3.1.0.0)
51
55
  ast (~> 2.4.1)
52
56
  pathutil (0.16.2)
@@ -54,12 +58,12 @@ GEM
54
58
  public_suffix (4.0.6)
55
59
  rainbow (3.1.1)
56
60
  rake (13.0.6)
57
- rb-fsevent (0.11.0)
61
+ rb-fsevent (0.11.1)
58
62
  rb-inotify (0.10.1)
59
63
  ffi (~> 1.0)
60
64
  regexp_parser (2.2.0)
61
65
  rexml (3.2.5)
62
- rouge (3.27.0)
66
+ rouge (3.28.0)
63
67
  rspec (3.10.0)
64
68
  rspec-core (~> 3.10.0)
65
69
  rspec-expectations (~> 3.10.0)
@@ -73,42 +77,41 @@ GEM
73
77
  diff-lcs (>= 1.2.0, < 2.0)
74
78
  rspec-support (~> 3.10.0)
75
79
  rspec-support (3.10.3)
76
- rubocop (1.12.1)
80
+ rubocop (1.25.1)
77
81
  parallel (~> 1.10)
78
- parser (>= 3.0.0.0)
82
+ parser (>= 3.1.0.0)
79
83
  rainbow (>= 2.2.2, < 4.0)
80
84
  regexp_parser (>= 1.8, < 3.0)
81
85
  rexml
82
- rubocop-ast (>= 1.2.0, < 2.0)
86
+ rubocop-ast (>= 1.15.1, < 2.0)
83
87
  ruby-progressbar (~> 1.7)
84
88
  unicode-display_width (>= 1.4.0, < 3.0)
85
- rubocop-ast (1.4.1)
86
- parser (>= 2.7.1.5)
87
- rubocop-rake (0.5.1)
88
- rubocop
89
- rubocop-rspec (2.2.0)
89
+ rubocop-ast (1.15.1)
90
+ parser (>= 3.0.1.1)
91
+ rubocop-rake (0.6.0)
90
92
  rubocop (~> 1.0)
91
- rubocop-ast (>= 1.1.0)
93
+ rubocop-rspec (2.8.0)
94
+ rubocop (~> 1.19)
92
95
  ruby-progressbar (1.11.0)
93
96
  safe_yaml (1.0.5)
94
- sass (3.7.4)
95
- sass-listen (~> 4.0.0)
96
- sass-listen (4.0.0)
97
- rb-fsevent (~> 0.9, >= 0.9.4)
98
- rb-inotify (~> 0.9, >= 0.9.7)
99
- unicode-display_width (2.1.0)
97
+ sassc (2.4.0)
98
+ ffi (~> 1.9)
99
+ terminal-table (2.0.0)
100
+ unicode-display_width (~> 1.1, >= 1.1.1)
101
+ unicode-display_width (1.8.0)
100
102
 
101
103
  PLATFORMS
102
- ruby
104
+ x86_64-darwin-20
105
+ x86_64-linux
103
106
 
104
107
  DEPENDENCIES
105
- bundler (~> 2.0)
108
+ bundler (~> 2.1)
106
109
  jekyll-indico!
107
110
  rake (~> 13.0)
108
111
  rspec (~> 3.0)
109
- rubocop (~> 1.9)
110
- rubocop-rake (~> 0.5)
112
+ rubocop (~> 1.25)
113
+ rubocop-rake (~> 0.6)
111
114
  rubocop-rspec (~> 2.2)
112
115
 
113
116
  BUNDLED WITH
114
- 2.2.8
117
+ 2.3.6
data/README.md CHANGED
@@ -14,6 +14,8 @@ indico:
14
14
  url: https://indico.cern.ch # Indico instance to use (REQUIRED)
15
15
  data: indico # Optional, folder name in _data to use
16
16
  cache-command: bundle exec rake cache # Optional, user msg if you support it
17
+ paginate: 20 # Optional integer number of results per page (auto-iterates over all pages)
18
+ timeout: 120 # Optional timeout in number of seconds (default: 60)
17
19
  ids:
18
20
  topical: 10570
19
21
  blueprint: 11329
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.metadata['changelog_uri'] = 'https://github.com/iris-hep/jekyll-indico/blob/main/CHANGELOG.md'
21
21
  else
22
22
  raise 'RubyGems 2.0 or newer is required to protect against ' \
23
- 'public gem pushes.'
23
+ 'public gem pushes.'
24
24
  end
25
25
 
26
26
  # Specify which files should be added to the gem when it is released.
@@ -32,14 +32,15 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.required_ruby_version = '>= 2.4.0'
35
+ spec.required_ruby_version = '>= 2.6.0'
36
36
 
37
37
  spec.add_dependency 'jekyll', '>= 3.8', '< 5.0'
38
38
 
39
- spec.add_development_dependency 'bundler', '~> 2.0'
39
+ spec.add_development_dependency 'bundler', '~> 2.1'
40
40
  spec.add_development_dependency 'rake', '~> 13.0'
41
41
  spec.add_development_dependency 'rspec', '~> 3.0'
42
- spec.add_development_dependency 'rubocop', '~> 1.9'
43
- spec.add_development_dependency 'rubocop-rake', '~> 0.5'
42
+ spec.add_development_dependency 'rubocop', '~> 1.25'
43
+ spec.add_development_dependency 'rubocop-rake', '~> 0.6'
44
44
  spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
45
+ spec.metadata['rubygems_mfa_required'] = 'true'
45
46
  end
@@ -23,13 +23,13 @@ module JekyllIndico
23
23
  attr_accessor :dict
24
24
 
25
25
  # ID for IRIS-HEP: 10570
26
- def initialize(base_url, indico_id, **kargs)
26
+ def initialize(base_url, indico_id, limit: nil, **kargs)
27
27
  @dict = {}
28
28
 
29
- download_and_iterate(base_url, indico_id, **kargs) do |i|
29
+ download_and_iterate(base_url, indico_id, limit: limit, **kargs) do |i|
30
30
  # Trim paragraph tags
31
31
  d = i['description']
32
- d = d[3..-1] if d.start_with? '<p>'
32
+ d = d[3..] if d.start_with? '<p>'
33
33
  d = d[0..-5] if d.end_with? '</p>'
34
34
 
35
35
  start_date = Date.parse i['startDate']['date']
@@ -62,9 +62,10 @@ module JekyllIndico
62
62
 
63
63
  private
64
64
 
65
- # Run a block over each item in the downloaded results
66
- def download_and_iterate(base_url, indico_id, **params, &block)
67
- params[:pretty] = 'no'
65
+ def get_parsed_results(base_url, indico_id, timeout: nil, **params)
66
+ opts = { use_ssl: true }
67
+ opts[:read_timeout] = timeout if timeout
68
+
68
69
  uri = URI.join(base_url, "/export/categ/#{indico_id}.json")
69
70
  uri.query = URI.encode_www_form(params)
70
71
 
@@ -75,12 +76,29 @@ module JekyllIndico
75
76
  raise Error, 'Use INDICO_TOKEN with a new-style token'
76
77
  end
77
78
 
78
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
79
+ response = Net::HTTP.start(uri.hostname, uri.port, **opts) { |http| http.request(req) }
80
+
81
+ parsed = JSON.parse(response.body)
82
+ parsed['results']
83
+ end
84
+
85
+ # Run a block over each item in the downloaded results
86
+ def download_and_iterate(base_url, indico_id, limit: nil, **params, &block)
87
+ limit = nil if limit.zero?
88
+ params[:limit] = limit if limit
89
+ params[:pretty] = 'no'
79
90
 
80
- string = response.body
81
- parsed = JSON.parse(string) # returns a hash
91
+ unless limit
92
+ results = get_parsed_results(base_url, indico_id, **params)
93
+ results.each(&block)
94
+ return
95
+ end
82
96
 
83
- parsed['results'].each(&block)
97
+ 0.step.each do |n|
98
+ results = get_parsed_results(base_url, indico_id, offset: n * limit, **params)
99
+ results.each(&block)
100
+ break if results.length < limit
101
+ end
84
102
  end
85
103
  end
86
104
  end
@@ -16,9 +16,6 @@ module JekyllIndico
16
16
  @site = site
17
17
  @cache_msg = @site.config.dig('indico', 'cache-command')
18
18
 
19
- timeout = @site.config.dig('indico', 'timeout')
20
- Net::HTTP.read_timeout = timeout if timeout
21
-
22
19
  meeting_ids = @site.config.dig('indico', 'ids')
23
20
  raise MissingIDs, 'indico: ids: MISSING from your config!' unless meeting_ids
24
21
  raise MissingIDs, 'indico: ids: must be a hash!' unless meeting_ids.is_a?(Hash)
@@ -37,13 +34,16 @@ module JekyllIndico
37
34
  data_path = @site.config.dig('indico', 'data') || 'indico'
38
35
  @site.data[data_path] = {} unless @site.data.key? data_path
39
36
 
37
+ timeout = @site.config.dig('indico', 'timeout')
38
+ limit = @site.config.dig('indico', 'paginate')
39
+
40
40
  # Do nothing if already downloaded
41
41
  return if @site.data[data_path].key? name
42
42
 
43
43
  msg = @cache_msg ? " - run `#{@cache_msg}` to cache" : ''
44
44
  print "Accessing Indico meeting API for #{name}:#{number}#{msg}"
45
45
  time = Benchmark.realtime do
46
- iris_meeting = Meetings.new(base_url, number)
46
+ iris_meeting = Meetings.new(base_url, number, timeout: timeout, limit: limit)
47
47
  @site.data[data_path][name] = iris_meeting.dict
48
48
  end
49
49
  puts ", took #{time.round(1)} s"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllIndico
4
- VERSION = '0.4.3'
4
+ VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-indico
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henry Schreiner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-01 00:00:00.000000000 Z
11
+ date: 2022-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '2.0'
39
+ version: '2.1'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.0'
46
+ version: '2.1'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -78,28 +78,28 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '1.9'
81
+ version: '1.25'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '1.9'
88
+ version: '1.25'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rubocop-rake
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.5'
95
+ version: '0.6'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.5'
102
+ version: '0.6'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rubocop-rspec
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +151,7 @@ metadata:
151
151
  homepage_uri: https://rubygems.org/gems/jekyll-indico
152
152
  source_code_uri: https://github.com/iris-hep/jekyll-indico
153
153
  changelog_uri: https://github.com/iris-hep/jekyll-indico/blob/main/CHANGELOG.md
154
+ rubygems_mfa_required: 'true'
154
155
  post_install_message:
155
156
  rdoc_options: []
156
157
  require_paths:
@@ -159,15 +160,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
160
  requirements:
160
161
  - - ">="
161
162
  - !ruby/object:Gem::Version
162
- version: 2.4.0
163
+ version: 2.6.0
163
164
  required_rubygems_version: !ruby/object:Gem::Requirement
164
165
  requirements:
165
166
  - - ">="
166
167
  - !ruby/object:Gem::Version
167
168
  version: '0'
168
169
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.6.14.4
170
+ rubygems_version: 3.0.3
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: Read and/or cache indico meeting lists for Jekyll