jekyll-hackclub 1.0.0 → 1.1.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: '09f9d3b9f4f9fd692fbf116a1c9bce8f4af4420d537c197c2800ab0d95f29dd0'
4
- data.tar.gz: 2eafb14d16a4b0dfd152c0e10dfe7bebe1958e21bf60af2832b9c58dbe7c9e90
3
+ metadata.gz: a6983799f7f157799ee42dc525700706a97d24a4c6e67da64baeb9b91520b411
4
+ data.tar.gz: 83032a1f6dc44f6da7e1b8698a2ee05543fb6d581a4c7d45008fb8ae7d55c587
5
5
  SHA512:
6
- metadata.gz: 3f44fe0f32ab614f7813976dab1c27e632cfdc5f45254af2163920c594c4fd00278ac4283a427cd356d13feb57103ba022757b4d9df46239f59ed7c58c85ca58
7
- data.tar.gz: 747a138c13650623913fa514ce397e3bab77fd82fa0e33cec06cfd533c6b5e241b36cda22905dcf6db30ba0f4c28d52c46e661492450cd562cf9e9930eaa0eea
6
+ metadata.gz: 5338d85198e7446012bc68eeecc3d740bb9d99b9c577693074e973450b23e97e7e70fd5ad102931875a02ad9dfaa60130c93d2bb55a50e5017731c6a01797d1c
7
+ data.tar.gz: cdce15077066008b97d13a0328b1b68c0023d12ff350f9a13541bf3133f850247c227a4a00cda414e4a7209b83b8b818dd69aa2733ae0197e0fa33447a57171f
data/lib/emoji.rb ADDED
@@ -0,0 +1,18 @@
1
+ require "jekyll"
2
+ require_relative "./server-bridge"
3
+
4
+ module Jekyll
5
+ class HackclubEmoji < Liquid::Tag
6
+ def initialize(tagName, content, tokens)
7
+ super
8
+ @id = content.gsub(/\A:+|:+\z/, '')
9
+ @img_url = HackclubRequest.resolve_emoji(@id)
10
+ end
11
+
12
+ def render(context)
13
+ %Q{<img src="#{@img_url}" title=":#{@id}:" alt=":#{@id}:" class="hackclub-emoji">}
14
+ end
15
+ end
16
+
17
+ Liquid::Template.register_tag "emoji", HackclubEmoji
18
+ end
@@ -1,61 +1,3 @@
1
- require "net/http"
2
- require "jekyll"
3
- require "json"
4
- require "uri"
5
-
6
- module Jekyll
7
- class HackclubMention < Liquid::Tag
8
- def resolve_username(userid)
9
- uri = URI(@host+"/users.info/"+userid)
10
- res = Net::HTTP.get_response(uri)
11
- begin
12
- data = JSON.parse(res.body)
13
- rescue
14
- return "unavailable"
15
- end
16
-
17
- if res.is_a?(Net::HTTPSuccess)
18
- data = JSON.parse(res.body)
19
- return data.dig("user", "name")
20
- else
21
- return "unknown"
22
- end
23
- end
24
-
25
- def resolve_channel(channelid)
26
- uri = URI(@host+"/conversations.info/"+channelid)
27
- res = Net::HTTP.get_response(uri)
28
- begin
29
- data = JSON.parse(res.body)
30
- rescue
31
- return "unavailable"
32
- end
33
-
34
- if res.is_a?(Net::HTTPSuccess)
35
- data = JSON.parse(res.body)
36
- return data.dig("channel", "name")
37
- else
38
- return "unknown"
39
- end
40
- end
41
-
42
- def initialize(tagName, content, tokens)
43
- super
44
- @host = Jekyll.configuration({})['HACKCLUB_API'] || "https://slack.mathias.hackclub.app"
45
- @args = content.split(" ; ").map(&:strip)
46
- @id = @args[0]
47
- end
48
-
49
- def render(context)
50
- if @id && @id.start_with?("U")
51
- display_name = @args[1] || resolve_username(@id)
52
- %Q{<a href="https://hackclub.slack.com/team/#{@id}" class="hackclub-mention hackclub-user" target="_blank">@#{display_name}</a>}
53
- elsif @id && @id.start_with?("C")
54
- display_name = @args[1] || resolve_channel(@id)
55
- %Q{<a href="https://hackclub.slack.com/archives/#{@id}" class="hackclub-mention hackclub-channel" target="_blank">##{display_name}</a>}
56
- end
57
- end
58
-
59
- Liquid::Template.register_tag "hackclub", self
60
- end
61
- end
1
+ require_relative "./emoji"
2
+ require_relative "./mentions"
3
+ require_relative "./server-bridge"
data/lib/mentions.rb ADDED
@@ -0,0 +1,24 @@
1
+ require "jekyll"
2
+ require_relative "./server-bridge"
3
+
4
+ module Jekyll
5
+ class HackclubMention < Liquid::Tag
6
+ def initialize(tagName, content, tokens)
7
+ super
8
+ @args = content.split(" ; ").map(&:strip)
9
+ @id = @args[0]
10
+ end
11
+
12
+ def render(context)
13
+ if @id && @id.start_with?("U")
14
+ display_name = @args[1] || HackclubRequest.resolve_username(@id)
15
+ %Q{<a href="https://hackclub.slack.com/team/#{@id}" class="hackclub-mention hackclub-user" target="_blank">@#{display_name}</a>}
16
+ elsif @id && @id.start_with?("C")
17
+ display_name = @args[1] || HackclubRequest.resolve_channel(@id)
18
+ %Q{<a href="https://hackclub.slack.com/archives/#{@id}" class="hackclub-mention hackclub-channel" target="_blank">##{display_name}</a>}
19
+ end
20
+ end
21
+ end
22
+
23
+ Liquid::Template.register_tag "mention", HackclubMention
24
+ end
@@ -0,0 +1,55 @@
1
+ require "net/http"
2
+ require "json"
3
+ require "uri"
4
+
5
+ module HackclubRequest
6
+ DEFAULT_EMOJI = "https://emoji.slack-edge.com/T0266FRGM/alibaba-question/c5ba32ce553206b8.png" # :alibaba-question:
7
+ @host = Jekyll.configuration({})['HACKCLUB_API'] || "https://slack.mathias.hackclub.app"
8
+
9
+ class << self
10
+ attr_accessor :host
11
+ end
12
+
13
+ def self.resolve_emoji(id)
14
+ uri = URI("#{host}/emoji/#{id.strip}")
15
+ res = Net::HTTP.get_response(uri)
16
+
17
+ if res.is_a?(Net::HTTPSuccess)
18
+ res.body
19
+ else
20
+ DEFAULT_EMOJI
21
+ end
22
+ end
23
+
24
+ def self.resolve_username(userid)
25
+ uri = URI("#{host}/users.info/#{userid}")
26
+ res = Net::HTTP.get_response(uri)
27
+
28
+ begin
29
+ data = JSON.parse(res.body)
30
+ if res.is_a?(Net::HTTPSuccess)
31
+ data.dig("user", "name") || "unknown"
32
+ else
33
+ "unknown"
34
+ end
35
+ rescue
36
+ "unavailable"
37
+ end
38
+ end
39
+
40
+ def self.resolve_channel(channelid)
41
+ uri = URI("#{host}/conversations.info/#{channelid}")
42
+ res = Net::HTTP.get_response(uri)
43
+
44
+ begin
45
+ data = JSON.parse(res.body)
46
+ if res.is_a?(Net::HTTPSuccess)
47
+ data.dig("channel", "name") || "unknown"
48
+ else
49
+ "unknown"
50
+ end
51
+ rescue
52
+ "unavailable"
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-hackclub
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MathiasDPX
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-05-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: jekyll
@@ -38,18 +37,17 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
41
- description:
42
- email:
43
40
  executables: []
44
41
  extensions: []
45
42
  extra_rdoc_files: []
46
43
  files:
44
+ - lib/emoji.rb
47
45
  - lib/jekyll-hackclub.rb
48
- homepage:
46
+ - lib/mentions.rb
47
+ - lib/server-bridge.rb
49
48
  licenses:
50
49
  - MIT
51
50
  metadata: {}
52
- post_install_message:
53
51
  rdoc_options: []
54
52
  require_paths:
55
53
  - lib
@@ -64,8 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
62
  - !ruby/object:Gem::Version
65
63
  version: '0'
66
64
  requirements: []
67
- rubygems_version: 3.0.3.1
68
- signing_key:
65
+ rubygems_version: 3.6.7
69
66
  specification_version: 4
70
67
  summary: Jekyll plugin for HackClub
71
68
  test_files: []