onebox 2.2.12 → 2.2.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -4
  3. data/lib/onebox/engine.rb +1 -1
  4. data/lib/onebox/engine/allowlisted_generic_onebox.rb +11 -9
  5. data/lib/onebox/engine/amazon_onebox.rb +3 -1
  6. data/lib/onebox/engine/asciinema_onebox.rb +0 -1
  7. data/lib/onebox/engine/audioboom_onebox.rb +5 -2
  8. data/lib/onebox/engine/bandcamp_onebox.rb +8 -8
  9. data/lib/onebox/engine/cloudapp_onebox.rb +12 -12
  10. data/lib/onebox/engine/coub_onebox.rb +0 -1
  11. data/lib/onebox/engine/facebook_media_onebox.rb +8 -7
  12. data/lib/onebox/engine/five_hundred_px_onebox.rb +0 -1
  13. data/lib/onebox/engine/flickr_onebox.rb +14 -15
  14. data/lib/onebox/engine/giphy_onebox.rb +0 -1
  15. data/lib/onebox/engine/github_blob_onebox.rb +4 -0
  16. data/lib/onebox/engine/github_commit_onebox.rb +2 -3
  17. data/lib/onebox/engine/github_gist_onebox.rb +1 -2
  18. data/lib/onebox/engine/github_issue_onebox.rb +16 -18
  19. data/lib/onebox/engine/github_pullrequest_onebox.rb +7 -4
  20. data/lib/onebox/engine/gitlab_blob_onebox.rb +4 -0
  21. data/lib/onebox/engine/google_calendar_onebox.rb +1 -1
  22. data/lib/onebox/engine/google_docs_onebox.rb +7 -7
  23. data/lib/onebox/engine/google_drive_onebox.rb +7 -7
  24. data/lib/onebox/engine/google_maps_onebox.rb +0 -2
  25. data/lib/onebox/engine/google_photos_onebox.rb +14 -14
  26. data/lib/onebox/engine/google_play_app_onebox.rb +3 -7
  27. data/lib/onebox/engine/instagram_onebox.rb +2 -2
  28. data/lib/onebox/engine/kaltura_onebox.rb +8 -6
  29. data/lib/onebox/engine/opengraph_image.rb +0 -1
  30. data/lib/onebox/engine/pubmed_onebox.rb +3 -2
  31. data/lib/onebox/engine/replit_onebox.rb +0 -1
  32. data/lib/onebox/engine/sketchfab_onebox.rb +8 -8
  33. data/lib/onebox/engine/slides_onebox.rb +10 -10
  34. data/lib/onebox/engine/soundcloud_onebox.rb +0 -1
  35. data/lib/onebox/engine/stack_exchange_onebox.rb +2 -1
  36. data/lib/onebox/engine/standard_embed.rb +2 -2
  37. data/lib/onebox/engine/steam_store_onebox.rb +6 -5
  38. data/lib/onebox/engine/trello_onebox.rb +2 -2
  39. data/lib/onebox/engine/twitch_clips_onebox.rb +1 -3
  40. data/lib/onebox/engine/twitch_stream_onebox.rb +1 -2
  41. data/lib/onebox/engine/twitch_video_onebox.rb +0 -2
  42. data/lib/onebox/engine/typeform_onebox.rb +7 -6
  43. data/lib/onebox/engine/vimeo_onebox.rb +9 -7
  44. data/lib/onebox/engine/wikimedia_onebox.rb +1 -2
  45. data/lib/onebox/engine/wikipedia_onebox.rb +12 -8
  46. data/lib/onebox/engine/youku_onebox.rb +7 -7
  47. data/lib/onebox/engine/youtube_onebox.rb +14 -13
  48. data/lib/onebox/file_type_finder.rb +0 -1
  49. data/lib/onebox/helpers.rb +2 -2
  50. data/lib/onebox/mixins/git_blob_onebox.rb +5 -3
  51. data/lib/onebox/mixins/github_body.rb +30 -0
  52. data/lib/onebox/mixins/twitch_onebox.rb +0 -1
  53. data/lib/onebox/preview.rb +1 -2
  54. data/lib/onebox/version.rb +1 -1
  55. data/templates/github/github_body.mustache +3 -0
  56. data/templates/githubissue.mustache +7 -9
  57. data/templates/githubpullrequest.mustache +4 -16
  58. metadata +4 -2
@@ -25,14 +25,16 @@ module Onebox
25
25
  end
26
26
  video_src = "https://player.vimeo.com/video/#{video_id}"
27
27
  video_src = video_src.gsub('autoplay=1', '').chomp("?")
28
+
28
29
  <<-HTML
29
- <iframe width="#{WIDTH}"
30
- height="#{HEIGHT}"
31
- src="#{video_src}"
32
- data-original-href="#{link}"
33
- frameborder="0"
34
- allowfullscreen>
35
- </iframe>
30
+ <iframe
31
+ width="#{WIDTH}"
32
+ height="#{HEIGHT}"
33
+ src="#{video_src}"
34
+ data-original-href="#{link}"
35
+ frameborder="0"
36
+ allowfullscreen
37
+ ></iframe>
36
38
  HTML
37
39
  end
38
40
 
@@ -7,7 +7,7 @@ module Onebox
7
7
  include LayoutSupport
8
8
  include JSON
9
9
 
10
- matches_regexp /^https?:\/\/commons\.wikimedia\.org\/wiki\/(File:.+)/
10
+ matches_regexp(/^https?:\/\/commons\.wikimedia\.org\/wiki\/(File:.+)/)
11
11
  always_https
12
12
 
13
13
  def self.priority
@@ -38,7 +38,6 @@ module Onebox
38
38
  thumbnail: first_page['imageinfo'].first['thumburl']
39
39
  }
40
40
  end
41
-
42
41
  end
43
42
  end
44
43
  end
@@ -16,10 +16,10 @@ module Onebox
16
16
  paras = []
17
17
  text = ""
18
18
 
19
- # Detect section Hash in the url and retrive the related paragraphs. if no hash provided the first few paragraphs will be used
19
+ # Detect section Hash in the url and retrive the related paragraphs. if no hash provided the first few paragraphs will be used
20
20
  # Author Lidlanca
21
21
  # Date 9/8/2014
22
- if (m_url_hash = @url.match(/#([^\/?]+)/)) #extract url hash
22
+ if (m_url_hash = @url.match(/#([^\/?]+)/)) # extract url hash
23
23
  m_url_hash_name = m_url_hash[1]
24
24
  end
25
25
 
@@ -27,17 +27,17 @@ module Onebox
27
27
  section_header_title = raw.xpath("//span[@id='#{m_url_hash_name}']")
28
28
 
29
29
  if section_header_title.empty?
30
- paras = raw.search("p") #default get all the paras
30
+ paras = raw.search("p") # default get all the paras
31
31
  else
32
32
  section_title_text = section_header_title.inner_text
33
- section_header = section_header_title[0].parent #parent element of the section span element should be an <h3> node
33
+ section_header = section_header_title[0].parent # parent element of the section span element should be an <h3> node
34
34
  cur_element = section_header
35
35
 
36
- # p|text|div covers the general case. We assume presence of atleast 1 P node. if section has no P node we may end up with a P node from the next section.
36
+ # p|text|div covers the general case. We assume presence of at least 1 P node. if section has no P node we may end up with a P node from the next section.
37
37
  # div tag is commonly used as an assets wraper in an article section. often as the first element holding an image.
38
38
  # ul support will imporve the output generated for a section with a list as the main content (for example: an Author Bibliography, A musician Discography, etc)
39
39
  first_p_found = nil
40
- while (((next_sibling = cur_element.next_sibling).name =~ /p|text|div|ul/) || first_p_found.nil?) do #from section header get the next sibling until it is a breaker tag
40
+ while (((next_sibling = cur_element.next_sibling).name =~ /p|text|div|ul/) || first_p_found.nil?) do # from section header get the next sibling until it is a breaker tag
41
41
  cur_element = next_sibling
42
42
  if (cur_element.name == "p" || cur_element.name == "ul") #we treat a list as we detect a p to avoid showing
43
43
  first_p_found = true
@@ -46,7 +46,7 @@ module Onebox
46
46
  end
47
47
  end
48
48
  else # no hash found in url
49
- paras = raw.search("p") #default get all the paras
49
+ paras = raw.search("p") # default get all the paras
50
50
  end
51
51
 
52
52
  unless paras.empty?
@@ -55,7 +55,7 @@ module Onebox
55
55
  break if cnt >= paras.size
56
56
  text += " " unless cnt == 0
57
57
 
58
- if paras[cnt].name == "ul" #Handle UL tag. Generate a textual ordered list (1.item | 2.item | 3.item). Unfourtently no newline allowed in output
58
+ if paras[cnt].name == "ul" # Handle UL tag. Generate a textual ordered list (1.item | 2.item | 3.item). Unfortunately no newline allowed in output
59
59
  li_index = 1
60
60
  list_items = []
61
61
  paras[cnt].children.css("li").each { |li| list_items.push "#{li_index}." + li.inner_text ; li_index += 1 }
@@ -69,13 +69,17 @@ module Onebox
69
69
  cnt += 1
70
70
  end
71
71
  end
72
+
72
73
  text = "#{text[0..Onebox::LayoutSupport.max_text]}..." if text.length > Onebox::LayoutSupport.max_text
74
+
73
75
  result = {
74
76
  link: link,
75
77
  title: raw.css("html body h1").inner_text + (section_title_text ? " | " + section_title_text : ""), #if a section sub title exists add it to the main article title
76
78
  description: text
77
79
  }
80
+
78
81
  img = raw.css(".image img")
82
+
79
83
  if img && img.size > 0
80
84
  img.each do |i|
81
85
  src = i["src"]
@@ -21,12 +21,13 @@ module Onebox
21
21
 
22
22
  def to_html
23
23
  <<~HTML
24
- <iframe src="https://player.youku.com/embed/#{video_id}"
25
- width="640"
26
- height="430"
27
- frameborder='0'
28
- allowfullscreen>
29
- </iframe>
24
+ <iframe
25
+ src="https://player.youku.com/embed/#{video_id}"
26
+ width="640"
27
+ height="430"
28
+ frameborder='0'
29
+ allowfullscreen
30
+ ></iframe>
30
31
  HTML
31
32
  end
32
33
 
@@ -35,7 +36,6 @@ module Onebox
35
36
  def uri
36
37
  @_uri ||= URI(@url)
37
38
  end
38
-
39
39
  end
40
40
  end
41
41
  end
@@ -51,21 +51,23 @@ module Onebox
51
51
  def to_html
52
52
  if video_id
53
53
  <<-HTML
54
- <iframe width="#{WIDTH}"
55
- height="#{HEIGHT}"
56
- src="https://www.youtube.com/embed/#{video_id}?#{embed_params}"
57
- frameborder="0"
58
- allowfullscreen>
59
- </iframe>
54
+ <iframe
55
+ src="https://www.youtube.com/embed/#{video_id}?#{embed_params}"
56
+ width="#{WIDTH}"
57
+ height="#{HEIGHT}"
58
+ frameborder="0"
59
+ allowfullscreen
60
+ ></iframe>
60
61
  HTML
61
62
  elsif list_id
62
63
  <<-HTML
63
- <iframe width="#{WIDTH}"
64
- height="#{HEIGHT}"
65
- src="https://www.youtube.com/embed/videoseries?list=#{list_id}&wmode=transparent&rel=0&autohide=1&showinfo=1&enablejsapi=1"
66
- frameborder="0"
67
- allowfullscreen>
68
- </iframe>
64
+ <iframe
65
+ src="https://www.youtube.com/embed/videoseries?list=#{list_id}&wmode=transparent&rel=0&autohide=1&showinfo=1&enablejsapi=1"
66
+ width="#{WIDTH}"
67
+ height="#{HEIGHT}"
68
+ frameborder="0"
69
+ allowfullscreen
70
+ ></iframe>
69
71
  HTML
70
72
  else
71
73
  # for channel pages
@@ -166,7 +168,6 @@ module Onebox
166
168
  rescue
167
169
  {}
168
170
  end
169
-
170
171
  end
171
172
  end
172
173
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Onebox
4
4
  module FileTypeFinder
5
-
6
5
  # In general, most of file extension names would be recognized
7
6
  # by Highlights.js. However, some need to be checked in other
8
7
  # ways, either because they just aren't included, because they
@@ -127,10 +127,10 @@ module Onebox
127
127
 
128
128
  http.request_head([uri.path, uri.query].join("?")) do |response|
129
129
  code = response.code.to_i
130
- unless code === 200 || Onebox::Helpers.blank?(response.header['content-length'])
130
+ unless code === 200 || Onebox::Helpers.blank?(response.content_length)
131
131
  return nil
132
132
  end
133
- return response.header['content-length']
133
+ return response.content_length
134
134
  end
135
135
  end
136
136
  end
@@ -33,6 +33,10 @@ module Onebox
33
33
 
34
34
  self.options = DEFAULTS
35
35
 
36
+ @selected_lines_array = nil
37
+ @selected_one_liner = 0
38
+ @model_file = nil
39
+
36
40
  # Define constant after merging options set in Onebox.options
37
41
  # We can define constant automatically.
38
42
  options.each_pair do |constant_name, value|
@@ -47,8 +51,6 @@ module Onebox
47
51
  end
48
52
 
49
53
  private
50
- @selected_lines_array = nil
51
- @selected_one_liner = 0
52
54
 
53
55
  def calc_range(m, contents_lines_size)
54
56
  truncated = false
@@ -150,7 +152,7 @@ module Onebox
150
152
  end
151
153
 
152
154
  def raw
153
- return @raw if @raw
155
+ return @raw if defined?(@raw)
154
156
 
155
157
  m = @url.match(self.raw_regexp)
156
158
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Onebox
4
+ module Mixins
5
+ module GithubBody
6
+ def self.included(klass)
7
+ klass.include(Onebox::Engine)
8
+ klass.include(InstanceMethods)
9
+ end
10
+
11
+ module InstanceMethods
12
+ GITHUB_COMMENT_REGEX = /(<!--.*?-->\r\n)/
13
+ MAX_BODY_LENGTH = 80
14
+ def compute_body(body)
15
+ body = body.dup
16
+ excerpt = nil
17
+
18
+ body = (body || '').gsub(GITHUB_COMMENT_REGEX, '')
19
+ body = body.length > 0 ? body : nil
20
+ if body && body.length > MAX_BODY_LENGTH
21
+ excerpt = body[MAX_BODY_LENGTH..body.length].rstrip
22
+ body = body[0..MAX_BODY_LENGTH - 1]
23
+ end
24
+
25
+ [body, excerpt]
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -3,7 +3,6 @@
3
3
  module Onebox
4
4
  module Mixins
5
5
  module TwitchOnebox
6
-
7
6
  def self.included(klass)
8
7
  klass.include(Onebox::Engine)
9
8
  klass.matches_regexp(klass.twitch_regexp)
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Onebox
4
4
  class Preview
5
-
6
5
  # see https://bugs.ruby-lang.org/issues/14688
7
6
  client_exception = defined?(Net::HTTPClientException) ? Net::HTTPClientException : Net::HTTPServerException
8
7
  WEB_EXCEPTIONS ||= [client_exception, OpenURI::HTTPError, Timeout::Error, Net::HTTPError, Errno::ECONNREFUSED]
@@ -85,7 +84,7 @@ module Onebox
85
84
 
86
85
  def engine
87
86
  return nil unless @engine_class
88
- return @engine if @engine
87
+ return @engine if defined?(@engine)
89
88
 
90
89
  @engine = @engine_class.new(@url)
91
90
  @engine.options = @options
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onebox
4
- VERSION = "2.2.12"
4
+ VERSION = "2.2.13"
5
5
  end
@@ -0,0 +1,3 @@
1
+ {{#body}}
2
+ <p class="github-body-container">{{body}}{{#excerpt}}<span class="show-more-container"><a href="{{html_url}}" target="_blank" rel="noopener" class="show-more">…</a>{{/excerpt}}</span>{{#excerpt}}<span class="excerpt hidden">{{excerpt}}</span>{{/excerpt}}</p>
3
+ {{/body}}
@@ -26,15 +26,13 @@
26
26
  </a>
27
27
  </div>
28
28
  </div>
29
- </div>
30
- </div>
31
29
 
32
- <div class="github-row">
33
- <p class='github-content'>{{content}}</p>
34
- </div>
30
+ {{> github/github_body}}
35
31
 
36
- <div class='labels'>
37
- {{#labels}}
38
- <span style="display:inline-block;margin-top:2px;background-color: #B8B8B8;padding: 2px;border-radius: 4px;color: #fff;margin-left: 3px;">{{name}}</span>
39
- {{/labels}}
32
+ <div class='labels'>
33
+ {{#labels}}
34
+ <span style="display:inline-block;margin-top:2px;background-color: #B8B8B8;padding: 2px;border-radius: 4px;color: #fff;margin-left: 3px;">{{name}}</span>
35
+ {{/labels}}
36
+ </div>
37
+ </div>
40
38
  </div>
@@ -4,22 +4,9 @@
4
4
  </div>
5
5
 
6
6
  <div class="github-info-container">
7
- {{^body}}
8
- <h4>
9
- <a href="{{html_url}}" target="_blank" rel="noopener">{{title}}</a>
10
- </h4>
11
- {{/body}}
12
-
13
- {{#body}}
14
- <details class="onebox-details">
15
- <summary class="onebox-details-summary">
16
- <h4>
17
- <a href="{{html_url}}" target="_blank" rel="noopener">{{title}}</a>
18
- </h4>
19
- </summary>
20
- <p class="onebox-details-body">{{body}}</p>
21
- </details>
22
- {{/body}}
7
+ <h4>
8
+ <a href="{{html_url}}" target="_blank" rel="noopener">{{title}}</a>
9
+ </h4>
23
10
 
24
11
  <div class="branches">
25
12
  <code>{{base.label}}</code> ← <code>{{head.label}}</code>
@@ -45,5 +32,6 @@
45
32
  </div>
46
33
  </div>
47
34
 
35
+ {{> github/github_body}}
48
36
  </div>
49
37
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.12
4
+ version: 2.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joanna Zeta
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-04-12 00:00:00.000000000 Z
13
+ date: 2021-04-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -367,6 +367,7 @@ files:
367
367
  - lib/onebox/layout_support.rb
368
368
  - lib/onebox/matcher.rb
369
369
  - lib/onebox/mixins/git_blob_onebox.rb
370
+ - lib/onebox/mixins/github_body.rb
370
371
  - lib/onebox/mixins/twitch_onebox.rb
371
372
  - lib/onebox/oembed.rb
372
373
  - lib/onebox/open_graph.rb
@@ -382,6 +383,7 @@ files:
382
383
  - templates/_layout.mustache
383
384
  - templates/allowlistedgeneric.mustache
384
385
  - templates/amazon.mustache
386
+ - templates/github/github_body.mustache
385
387
  - templates/githubblob.mustache
386
388
  - templates/githubcommit.mustache
387
389
  - templates/githubfolder.mustache