git-trend 1.2.9 → 1.4.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 +4 -4
- data/.github/workflows/ci.yml +82 -0
- data/.rubocop.yml +85 -2
- data/.rubocop_todo.yml +15 -0
- data/CHANGELOG.md +14 -6
- data/Gemfile +11 -0
- data/README.md +2 -4
- data/git-trend.gemspec +4 -17
- data/lib/git-trend.rb +1 -1
- data/lib/git_trend/cli.rb +6 -4
- data/lib/git_trend/formatter.rb +1 -0
- data/lib/git_trend/formatters/json_formatter.rb +2 -2
- data/lib/git_trend/formatters/text_formatter.rb +8 -3
- data/lib/git_trend/scraper.rb +8 -6
- data/lib/git_trend/version.rb +1 -1
- data/spec/fixtures/trending/alloy +2139 -3806
- data/spec/fixtures/trending/index +2783 -4491
- data/spec/fixtures/trending/ruby +2784 -4450
- data/spec/fixtures/trending/ruby?since=weekly +2808 -4447
- data/spec/fixtures/trending?since= +2785 -4491
- data/spec/fixtures/trending?since=daily +2785 -4491
- data/spec/fixtures/trending?since=monthly +2821 -4464
- data/spec/fixtures/trending?since=weekly +2808 -4473
- data/spec/git_trend/cli_spec.rb +208 -815
- data/spec/git_trend/scraper_spec.rb +7 -3
- data/spec/git_trend_spec.rb +64 -48
- data/spec/spec_helper.rb +0 -14
- metadata +11 -163
- data/.coveralls.yml +0 -1
- data/.travis.yml +0 -16
data/spec/git_trend/cli_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# rubocop:disable Style/TrailingWhitespace
|
2
|
-
include GitTrend
|
3
1
|
RSpec.describe GitTrend::CLI do
|
2
|
+
include GitTrend
|
3
|
+
|
4
4
|
shared_examples "since daily ranking" do |since|
|
5
5
|
it "display daily ranking" do
|
6
6
|
expect { cli.invoke(:list, [], since: since, description: false) }.to output(dummy_result_without_description).to_stdout
|
@@ -25,23 +25,27 @@ RSpec.describe GitTrend::CLI do
|
|
25
25
|
describe "with -n option" do
|
26
26
|
context "with 3" do
|
27
27
|
before { stub_request_get("trending") }
|
28
|
+
|
28
29
|
let(:number) { 3 }
|
29
|
-
it "display top 3 daily ranking" do
|
30
|
-
res = <<-'EOS'.unindent
|
31
|
-
|No. Name Lang Star
|
32
|
-
|--- ---------------------------------------- ---------- ------
|
33
|
-
| 1 AppFlowy-IO/appflowy Rust 238
|
34
|
-
| 2 iptv-org/iptv JavaScript 107
|
35
|
-
| 3 nodejs/node JavaScript 123
|
36
30
|
|
37
|
-
|
31
|
+
it "display top 3 daily ranking" do
|
32
|
+
res = <<-OUTPUT.unindent
|
33
|
+
|No. Name Lang Star
|
34
|
+
|--- ---------------------------------------- ---------------- ------
|
35
|
+
| 1 linexjlin/GPTs 445
|
36
|
+
| 2 ml-explore/mlx-examples Python 161
|
37
|
+
| 3 PRIS-CV/DemoFusion Jupyter Notebook 169
|
38
|
+
|
39
|
+
OUTPUT
|
38
40
|
expect { cli.invoke(:list, [], number: number, description: false) }.to output(res).to_stdout
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
44
|
context "with over 25" do
|
43
45
|
before { stub_request_get("trending") }
|
46
|
+
|
44
47
|
let(:number) { 26 }
|
48
|
+
|
45
49
|
it "display daily ranking" do
|
46
50
|
expect { cli.invoke(:list, [], number: number, description: false) }.to output(dummy_result_without_description).to_stdout
|
47
51
|
end
|
@@ -51,52 +55,54 @@ RSpec.describe GitTrend::CLI do
|
|
51
55
|
describe "with -l option" do
|
52
56
|
context "with ruby" do
|
53
57
|
before { stub_request_get("trending/#{language}") }
|
58
|
+
|
54
59
|
let(:language) { "ruby" }
|
55
60
|
|
56
61
|
it "display daily ranking by language" do
|
57
|
-
res = <<-
|
58
|
-
|No. Name
|
59
|
-
|---
|
60
|
-
| 1
|
61
|
-
| 2
|
62
|
-
| 3
|
63
|
-
| 4
|
64
|
-
| 5
|
65
|
-
| 6
|
66
|
-
| 7
|
67
|
-
| 8
|
68
|
-
| 9
|
69
|
-
| 10
|
70
|
-
| 11
|
71
|
-
| 12 freeCodeCamp/
|
72
|
-
| 13
|
73
|
-
| 14
|
74
|
-
| 15
|
75
|
-
| 16
|
76
|
-
| 17
|
77
|
-
| 18
|
78
|
-
| 19
|
79
|
-
| 20
|
80
|
-
| 21
|
81
|
-
| 22
|
82
|
-
| 23
|
83
|
-
| 24
|
84
|
-
| 25
|
85
|
-
|
86
|
-
|
62
|
+
res = <<-OUTPUT.unindent
|
63
|
+
|No. Name Lang Star
|
64
|
+
|--- ---------------------------------------- ---------- ------
|
65
|
+
| 1 greatghoul/remote-working Ruby 34
|
66
|
+
| 2 huginn/huginn Ruby 13
|
67
|
+
| 3 jekyll/jekyll Ruby 11
|
68
|
+
| 4 fastlane/fastlane Ruby 6
|
69
|
+
| 5 rapid7/metasploit-framework Ruby 8
|
70
|
+
| 6 ankane/pghero Ruby 16
|
71
|
+
| 7 joemasilotti/daily-log Ruby 7
|
72
|
+
| 8 hashicorp/vagrant Ruby 5
|
73
|
+
| 9 fluent/fluentd Ruby 5
|
74
|
+
| 10 rubygems/rubygems Ruby 1
|
75
|
+
| 11 otwcode/otwarchive Ruby 2
|
76
|
+
| 12 freeCodeCamp/devdocs Ruby 5
|
77
|
+
| 13 gitlabhq/gitlabhq Ruby 1
|
78
|
+
| 14 gollum/gollum Ruby 2
|
79
|
+
| 15 ruby/ruby Ruby 2
|
80
|
+
| 16 TheOdinProject/theodinproject Ruby 6
|
81
|
+
| 17 wpscanteam/wpscan Ruby 0
|
82
|
+
| 18 mastodon/mastodon Ruby 12
|
83
|
+
| 19 github/explore Ruby 0
|
84
|
+
| 20 tradingview/charting-library-examples Ruby 0
|
85
|
+
| 21 jwt/ruby-jwt Ruby 0
|
86
|
+
| 22 forem/forem Ruby 4
|
87
|
+
| 23 urbanadventurer/WhatWeb Ruby 3
|
88
|
+
| 24 chef/chef Ruby 0
|
89
|
+
| 25 instructure/canvas-lms Ruby 0
|
90
|
+
|
91
|
+
OUTPUT
|
87
92
|
expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
|
88
93
|
end
|
89
94
|
end
|
90
95
|
|
91
96
|
context "with alloy : when trending is nothing" do
|
92
97
|
before { stub_request_get("trending/#{language}") }
|
98
|
+
|
93
99
|
let(:language) { "alloy" }
|
94
100
|
|
95
101
|
it "display the 0cases message" do
|
96
|
-
res = <<-
|
102
|
+
res = <<-OUTPUT.unindent
|
97
103
|
|It looks like we don’t have any trending repositories.
|
98
104
|
|
99
|
-
|
105
|
+
OUTPUT
|
100
106
|
expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
|
101
107
|
end
|
102
108
|
end
|
@@ -105,11 +111,13 @@ RSpec.describe GitTrend::CLI do
|
|
105
111
|
describe "with -s option" do
|
106
112
|
context "with no option" do
|
107
113
|
before { stub_request_get("trending?since=") }
|
114
|
+
|
108
115
|
include_examples "since daily ranking", ""
|
109
116
|
end
|
110
117
|
|
111
118
|
describe "since daily" do
|
112
119
|
before { stub_request_get("trending?since=daily") }
|
120
|
+
|
113
121
|
context "with d" do
|
114
122
|
include_examples "since daily ranking", "d"
|
115
123
|
end
|
@@ -125,6 +133,7 @@ RSpec.describe GitTrend::CLI do
|
|
125
133
|
|
126
134
|
describe "since weekly" do
|
127
135
|
before { stub_request_get("trending?since=weekly") }
|
136
|
+
|
128
137
|
context "with w" do
|
129
138
|
include_examples "since weekly ranking", "w"
|
130
139
|
end
|
@@ -140,6 +149,7 @@ RSpec.describe GitTrend::CLI do
|
|
140
149
|
|
141
150
|
describe "since monthly" do
|
142
151
|
before { stub_request_get("trending?since=monthly") }
|
152
|
+
|
143
153
|
context "with m" do
|
144
154
|
include_examples "since monthly ranking", "m"
|
145
155
|
end
|
@@ -193,40 +203,41 @@ RSpec.describe GitTrend::CLI do
|
|
193
203
|
describe "with -l and -s option" do
|
194
204
|
context "with ruby and weekly" do
|
195
205
|
before { stub_request_get("trending/#{language}?since=#{since}") }
|
206
|
+
|
196
207
|
let(:language) { "ruby" }
|
197
208
|
let(:since) { "weekly" }
|
198
209
|
|
199
210
|
it "display weekly ranking by language" do
|
200
|
-
res = <<-
|
201
|
-
|No. Name
|
202
|
-
|---
|
203
|
-
| 1
|
204
|
-
| 2
|
205
|
-
| 3
|
206
|
-
| 4
|
207
|
-
| 5
|
208
|
-
| 6
|
209
|
-
| 7
|
210
|
-
| 8
|
211
|
-
| 9
|
212
|
-
| 10
|
213
|
-
| 11
|
214
|
-
| 12
|
215
|
-
| 13
|
216
|
-
| 14
|
217
|
-
| 15
|
218
|
-
| 16
|
219
|
-
| 17
|
220
|
-
| 18
|
221
|
-
| 19
|
222
|
-
| 20
|
223
|
-
| 21
|
224
|
-
| 22
|
225
|
-
| 23
|
226
|
-
| 24
|
227
|
-
| 25
|
228
|
-
|
229
|
-
|
211
|
+
res = <<-OUTPUT.unindent
|
212
|
+
|No. Name Lang Star
|
213
|
+
|--- ---------------------------------------- ---------- ------
|
214
|
+
| 1 mastodon/mastodon Ruby 115
|
215
|
+
| 2 community/community Ruby 25
|
216
|
+
| 3 freeCodeCamp/devdocs Ruby 65
|
217
|
+
| 4 rapid7/metasploit-framework Ruby 84
|
218
|
+
| 5 github-linguist/linguist Ruby 14
|
219
|
+
| 6 ankane/pghero Ruby 32
|
220
|
+
| 7 chatwoot/chatwoot Ruby 59
|
221
|
+
| 8 department-of-veterans-affairs/vets-api Ruby 2
|
222
|
+
| 9 ekylibre/ekylibre Ruby 21
|
223
|
+
| 10 mileszs/wicked_pdf Ruby 5
|
224
|
+
| 11 elastic/elasticsearch-rails Ruby 2
|
225
|
+
| 12 heartcombo/devise Ruby 16
|
226
|
+
| 13 aws/aws-sdk-ruby Ruby 2
|
227
|
+
| 14 endoflife-date/endoflife.date Ruby 19
|
228
|
+
| 15 jekyll/jekyll Ruby 50
|
229
|
+
| 16 heartcombo/simple_form Ruby 6
|
230
|
+
| 17 thoughtbot/shoulda-matchers Ruby 5
|
231
|
+
| 18 spree/spree Ruby 13
|
232
|
+
| 19 solidusio/solidus Ruby 8
|
233
|
+
| 20 huginn/huginn Ruby 67
|
234
|
+
| 21 CanCanCommunity/cancancan Ruby 2
|
235
|
+
| 22 tradingview/charting-library-examples Ruby 3
|
236
|
+
| 23 kaminari/kaminari Ruby 5
|
237
|
+
| 24 rubocop/rubocop Ruby 10
|
238
|
+
| 25 paper-trail-gem/paper_trail Ruby 3
|
239
|
+
|
240
|
+
OUTPUT
|
230
241
|
expect { cli.invoke(:list, [], language: language, since: since, description: false) }.to output(res).to_stdout
|
231
242
|
end
|
232
243
|
end
|
@@ -235,16 +246,18 @@ RSpec.describe GitTrend::CLI do
|
|
235
246
|
|
236
247
|
describe "#languages" do
|
237
248
|
before { stub_request_get("trending") }
|
249
|
+
|
238
250
|
let(:cli) { CLI.new }
|
239
251
|
|
240
252
|
context "with no option" do
|
241
253
|
it "display languages" do
|
242
|
-
expect { cli.languages }.to output(
|
254
|
+
expect { cli.languages }.to output(include("C++", "HTML", "Ruby")).to_stdout
|
243
255
|
end
|
244
256
|
end
|
245
257
|
end
|
246
258
|
|
247
259
|
private
|
260
|
+
|
248
261
|
def stub_request_get(stub_url_path, stub_file_name = nil)
|
249
262
|
url = Scraper::BASE_HOST.dup
|
250
263
|
url << "/#{stub_url_path}" if stub_url_path
|
@@ -254,759 +267,139 @@ RSpec.describe GitTrend::CLI do
|
|
254
267
|
.to_return(
|
255
268
|
status: 200,
|
256
269
|
headers: { content_type: "text/html" },
|
257
|
-
body: load_http_stub(stub_file)
|
270
|
+
body: load_http_stub(stub_file)
|
271
|
+
)
|
258
272
|
end
|
259
273
|
|
260
274
|
def dummy_result_without_description
|
261
|
-
<<-
|
262
|
-
|No. Name
|
263
|
-
|---
|
264
|
-
| 1
|
265
|
-
| 2
|
266
|
-
| 3
|
267
|
-
| 4
|
268
|
-
| 5
|
269
|
-
| 6
|
270
|
-
| 7
|
271
|
-
| 8
|
272
|
-
| 9
|
273
|
-
| 10
|
274
|
-
| 11
|
275
|
-
| 12
|
276
|
-
| 13
|
277
|
-
| 14
|
278
|
-
| 15
|
279
|
-
| 16
|
280
|
-
| 17
|
281
|
-
| 18
|
282
|
-
| 19
|
283
|
-
| 20
|
284
|
-
| 21
|
285
|
-
| 22
|
286
|
-
| 23
|
287
|
-
| 24
|
288
|
-
| 25
|
289
|
-
|
290
|
-
|
275
|
+
<<-OUTPUT.unindent
|
276
|
+
|No. Name Lang Star
|
277
|
+
|--- ------------------------------------------ ---------------- ------
|
278
|
+
| 1 linexjlin/GPTs 445
|
279
|
+
| 2 ml-explore/mlx-examples Python 161
|
280
|
+
| 3 PRIS-CV/DemoFusion Jupyter Notebook 169
|
281
|
+
| 4 jmpoep/vmprotect-3.5.1 C++ 489
|
282
|
+
| 5 prasanthrangan/hyprdots Shell 21
|
283
|
+
| 6 MichaelYuhe/ai-group-tabs TypeScript 230
|
284
|
+
| 7 mli/paper-reading 129
|
285
|
+
| 8 SuperDuperDB/superduperdb Python 497
|
286
|
+
| 9 ByteByteGoHq/system-design-101 268
|
287
|
+
| 10 yformer/EfficientSAM Jupyter Notebook 117
|
288
|
+
| 11 xuchengsheng/spring-reading Java 413
|
289
|
+
| 12 Flode-Labs/vid2densepose Python 164
|
290
|
+
| 13 huggingface/optimum-nvidia Python 133
|
291
|
+
| 14 sweepai/sweep Python 55
|
292
|
+
| 15 practical-tutorials/project-based-learning 2058
|
293
|
+
| 16 home-assistant/core Python 33
|
294
|
+
| 17 100xdevs-cohort-2/assignments JavaScript 117
|
295
|
+
| 18 kgrzybek/modular-monolith-with-ddd C# 21
|
296
|
+
| 19 rmcelreath/stat_rethinking_2024 R 41
|
297
|
+
| 20 jackfrued/Python-100-Days Python 192
|
298
|
+
| 21 01-ai/Yi Python 18
|
299
|
+
| 22 facebookresearch/Pearl Python 95
|
300
|
+
| 23 zzzgydi/clash-verge TypeScript 31
|
301
|
+
| 24 ytdl-org/youtube-dl Python 24
|
302
|
+
| 25 dunglas/frankenphp Go 53
|
303
|
+
|
304
|
+
OUTPUT
|
291
305
|
end
|
292
306
|
|
293
307
|
def dummy_result_no_options
|
294
|
-
<<-
|
295
|
-
|No. Name
|
296
|
-
|---
|
297
|
-
| 1
|
298
|
-
| 2
|
299
|
-
| 3
|
300
|
-
| 4
|
301
|
-
| 5
|
302
|
-
| 6
|
303
|
-
| 7
|
304
|
-
| 8
|
305
|
-
| 9
|
306
|
-
| 10
|
307
|
-
| 11
|
308
|
-
| 12
|
309
|
-
| 13
|
310
|
-
| 14
|
311
|
-
| 15
|
312
|
-
| 16
|
313
|
-
| 17
|
314
|
-
| 18
|
315
|
-
| 19
|
316
|
-
| 20
|
317
|
-
| 21
|
318
|
-
| 22
|
319
|
-
| 23
|
320
|
-
| 24
|
321
|
-
| 25
|
322
|
-
|
323
|
-
|
308
|
+
<<-OUTPUT.unindent
|
309
|
+
|No. Name Lang Star Description
|
310
|
+
|--- ------------------------------------------ ---------------- ------ ---------------------------------------------------------------------
|
311
|
+
| 1 linexjlin/GPTs 445 leaked prompts of GPTs
|
312
|
+
| 2 ml-explore/mlx-examples Python 161 Examples in the MLX framework
|
313
|
+
| 3 PRIS-CV/DemoFusion Jupyter Notebook 169 Let us democratise high-resolution generation! (arXiv 2023)
|
314
|
+
| 4 jmpoep/vmprotect-3.5.1 C++ 489
|
315
|
+
| 5 prasanthrangan/hyprdots Shell 21 // Aesthetic, dynamic and minimal dots for Arch hyprland
|
316
|
+
| 6 MichaelYuhe/ai-group-tabs TypeScript 230 A Chrome extension helps you group your tabs with AI.
|
317
|
+
| 7 mli/paper-reading 129 深度学习经典、新论文逐段精读
|
318
|
+
| 8 SuperDuperDB/superduperdb Python 497 🔮 SuperDuperDB: Bring AI to your database: Integrate, train and m...
|
319
|
+
| 9 ByteByteGoHq/system-design-101 268 Explain complex systems using visuals and simple terms. Help you p...
|
320
|
+
| 10 yformer/EfficientSAM Jupyter Notebook 117 EfficientSAM: Leveraged Masked Image Pretraining for Efficient Seg...
|
321
|
+
| 11 xuchengsheng/spring-reading Java 413 涵盖了 Spring 框架的核心概念和关键功能,包括控制反转(IOC)容器的...
|
322
|
+
| 12 Flode-Labs/vid2densepose Python 164 Convert your videos to densepose and use it on MagicAnimate
|
323
|
+
| 13 huggingface/optimum-nvidia Python 133
|
324
|
+
| 14 sweepai/sweep Python 55 Sweep: AI-powered Junior Developer for small features and bug fixes.
|
325
|
+
| 15 practical-tutorials/project-based-learning 2058 Curated list of project-based tutorials
|
326
|
+
| 16 home-assistant/core Python 33 🏡 Open source home automation that puts local control and privacy...
|
327
|
+
| 17 100xdevs-cohort-2/assignments JavaScript 117
|
328
|
+
| 18 kgrzybek/modular-monolith-with-ddd C# 21 Full Modular Monolith application with Domain-Driven Design approach.
|
329
|
+
| 19 rmcelreath/stat_rethinking_2024 R 41
|
330
|
+
| 20 jackfrued/Python-100-Days Python 192 Python - 100天从新手到大师
|
331
|
+
| 21 01-ai/Yi Python 18 A series of large language models trained from scratch by develope...
|
332
|
+
| 22 facebookresearch/Pearl Python 95 A Production-ready Reinforcement Learning AI Agent Library brought...
|
333
|
+
| 23 zzzgydi/clash-verge TypeScript 31 A Clash GUI based on tauri. Supports Windows, macOS and Linux.
|
334
|
+
| 24 ytdl-org/youtube-dl Python 24 Command-line program to download videos from YouTube.com and other...
|
335
|
+
| 25 dunglas/frankenphp Go 53 The modern PHP app server
|
336
|
+
|
337
|
+
OUTPUT
|
324
338
|
end
|
325
339
|
|
326
340
|
def dummy_weekly_result
|
327
|
-
<<-
|
328
|
-
|No. Name
|
329
|
-
|---
|
330
|
-
| 1
|
331
|
-
| 2
|
332
|
-
| 3
|
333
|
-
| 4
|
334
|
-
| 5
|
335
|
-
| 6
|
336
|
-
| 7
|
337
|
-
| 8
|
338
|
-
| 9
|
339
|
-
| 10
|
340
|
-
| 11
|
341
|
-
| 12 microsoft/
|
342
|
-
| 13
|
343
|
-
| 14
|
344
|
-
| 15
|
345
|
-
| 16
|
346
|
-
| 17
|
347
|
-
| 18
|
348
|
-
| 19
|
349
|
-
| 20
|
350
|
-
| 21
|
351
|
-
| 22
|
352
|
-
| 23
|
353
|
-
| 24
|
354
|
-
| 25
|
355
|
-
|
356
|
-
|
341
|
+
<<-OUTPUT.unindent
|
342
|
+
|No. Name Lang Star
|
343
|
+
|--- ------------------------------------------ ---------------- ------
|
344
|
+
| 1 LC044/WeChatMsg Python 10719
|
345
|
+
| 2 microsoft/TaskWeaver Python 1957
|
346
|
+
| 3 facebookresearch/seamless_communication C 1568
|
347
|
+
| 4 lllyasviel/Fooocus Python 3406
|
348
|
+
| 5 sherlock-project/sherlock Python 996
|
349
|
+
| 6 pytorch-labs/gpt-fast Python 2147
|
350
|
+
| 7 comfyanonymous/ComfyUI Python 1518
|
351
|
+
| 8 VikParuchuri/marker Python 1497
|
352
|
+
| 9 xuchengsheng/spring-reading Java 637
|
353
|
+
| 10 Mozilla-Ocho/llamafile C++ 1833
|
354
|
+
| 11 go-gost/gost Go 487
|
355
|
+
| 12 microsoft/PowerToys C# 905
|
356
|
+
| 13 songquanpeng/one-api Go 323
|
357
|
+
| 14 nocodb/nocodb TypeScript 392
|
358
|
+
| 15 AleoHQ/leo Rust 744
|
359
|
+
| 16 modularml/mojo Jupyter Notebook 386
|
360
|
+
| 17 gkd-kit/gkd Kotlin 1272
|
361
|
+
| 18 danny-avila/LibreChat TypeScript 647
|
362
|
+
| 19 practical-tutorials/project-based-learning 1670
|
363
|
+
| 20 pocketbase/pocketbase Go 457
|
364
|
+
| 21 symfony/symfony PHP 35
|
365
|
+
| 22 awesome-selfhosted/awesome-selfhosted 2239
|
366
|
+
| 23 upscayl/upscayl TypeScript 266
|
367
|
+
| 24 coolsnowwolf/lede C 132
|
368
|
+
| 25 QwenLM/Qwen Python 377
|
369
|
+
|
370
|
+
OUTPUT
|
357
371
|
end
|
358
372
|
|
359
373
|
def dummy_monthly_result
|
360
|
-
<<-
|
361
|
-
|No. Name
|
362
|
-
|---
|
363
|
-
| 1
|
364
|
-
| 2
|
365
|
-
| 3
|
366
|
-
| 4
|
367
|
-
| 5
|
368
|
-
| 6
|
369
|
-
| 7
|
370
|
-
| 8
|
371
|
-
| 9
|
372
|
-
| 10
|
373
|
-
| 11
|
374
|
-
| 12
|
375
|
-
| 13
|
376
|
-
| 14
|
377
|
-
| 15
|
378
|
-
| 16
|
379
|
-
| 17
|
380
|
-
| 18
|
381
|
-
| 19
|
382
|
-
| 20
|
383
|
-
| 21
|
384
|
-
| 22
|
385
|
-
| 23
|
386
|
-
| 24
|
387
|
-
| 25
|
388
|
-
|
389
|
-
|
390
|
-
end
|
391
|
-
|
392
|
-
def dummy_languages
|
393
|
-
<<-'EOS'.unindent
|
394
|
-
|C++
|
395
|
-
|HTML
|
396
|
-
|Java
|
397
|
-
|JavaScript
|
398
|
-
|PHP
|
399
|
-
|Python
|
400
|
-
|Ruby
|
401
|
-
|Unknown languages
|
402
|
-
|1C Enterprise
|
403
|
-
|4D
|
404
|
-
|ABAP
|
405
|
-
|ABAP CDS
|
406
|
-
|ABNF
|
407
|
-
|ActionScript
|
408
|
-
|Ada
|
409
|
-
|Adobe Font Metrics
|
410
|
-
|Agda
|
411
|
-
|AGS Script
|
412
|
-
|AIDL
|
413
|
-
|AL
|
414
|
-
|AL
|
415
|
-
|Alloy
|
416
|
-
|Alpine Abuild
|
417
|
-
|Altium Designer
|
418
|
-
|AMPL
|
419
|
-
|AngelScript
|
420
|
-
|Ant Build System
|
421
|
-
|ANTLR
|
422
|
-
|ApacheConf
|
423
|
-
|Apex
|
424
|
-
|API Blueprint
|
425
|
-
|APL
|
426
|
-
|Apollo Guidance Computer
|
427
|
-
|AppleScript
|
428
|
-
|Arc
|
429
|
-
|AsciiDoc
|
430
|
-
|ASL
|
431
|
-
|ASN.1
|
432
|
-
|Classic ASP
|
433
|
-
|ASP.NET
|
434
|
-
|AspectJ
|
435
|
-
|Assembly
|
436
|
-
|Astro
|
437
|
-
|Asymptote
|
438
|
-
|ATS
|
439
|
-
|Augeas
|
440
|
-
|AutoHotkey
|
441
|
-
|AutoIt
|
442
|
-
|Avro IDL
|
443
|
-
|Awk
|
444
|
-
|Ballerina
|
445
|
-
|BASIC
|
446
|
-
|Batchfile
|
447
|
-
|Beef
|
448
|
-
|Befunge
|
449
|
-
|BibTeX
|
450
|
-
|Bicep
|
451
|
-
|Bison
|
452
|
-
|BitBake
|
453
|
-
|Blade
|
454
|
-
|BlitzBasic
|
455
|
-
|BlitzMax
|
456
|
-
|Bluespec
|
457
|
-
|Boo
|
458
|
-
|Boogie
|
459
|
-
|Brainfuck
|
460
|
-
|Brightscript
|
461
|
-
|Zeek
|
462
|
-
|Browserslist
|
463
|
-
|C
|
464
|
-
|C#
|
465
|
-
|C-ObjDump
|
466
|
-
|C2hs Haskell
|
467
|
-
|Cabal Config
|
468
|
-
|Cap'n Proto
|
469
|
-
|CartoCSS
|
470
|
-
|Ceylon
|
471
|
-
|Chapel
|
472
|
-
|Charity
|
473
|
-
|ChucK
|
474
|
-
|CIL
|
475
|
-
|Cirru
|
476
|
-
|Clarion
|
477
|
-
|Classic ASP
|
478
|
-
|Clean
|
479
|
-
|Click
|
480
|
-
|CLIPS
|
481
|
-
|Clojure
|
482
|
-
|Closure Templates
|
483
|
-
|Cloud Firestore Security Rules
|
484
|
-
|CMake
|
485
|
-
|COBOL
|
486
|
-
|CODEOWNERS
|
487
|
-
|CodeQL
|
488
|
-
|CoffeeScript
|
489
|
-
|ColdFusion
|
490
|
-
|ColdFusion CFC
|
491
|
-
|COLLADA
|
492
|
-
|Common Lisp
|
493
|
-
|Common Workflow Language
|
494
|
-
|Component Pascal
|
495
|
-
|CoNLL-U
|
496
|
-
|Cool
|
497
|
-
|Coq
|
498
|
-
|Cpp-ObjDump
|
499
|
-
|Creole
|
500
|
-
|Crystal
|
501
|
-
|CSON
|
502
|
-
|Csound
|
503
|
-
|Csound Document
|
504
|
-
|Csound Score
|
505
|
-
|CSS
|
506
|
-
|CSV
|
507
|
-
|Cuda
|
508
|
-
|CUE
|
509
|
-
|cURL Config
|
510
|
-
|CWeb
|
511
|
-
|Cycript
|
512
|
-
|Cython
|
513
|
-
|D
|
514
|
-
|D-ObjDump
|
515
|
-
|Dafny
|
516
|
-
|Darcs Patch
|
517
|
-
|Dart
|
518
|
-
|DataWeave
|
519
|
-
|desktop
|
520
|
-
|Dhall
|
521
|
-
|Diff
|
522
|
-
|DIGITAL Command Language
|
523
|
-
|dircolors
|
524
|
-
|DirectX 3D File
|
525
|
-
|DM
|
526
|
-
|DNS Zone
|
527
|
-
|Dockerfile
|
528
|
-
|Dogescript
|
529
|
-
|DTrace
|
530
|
-
|Dylan
|
531
|
-
|E
|
532
|
-
|E-mail
|
533
|
-
|Eagle
|
534
|
-
|Earthly
|
535
|
-
|Easybuild
|
536
|
-
|EBNF
|
537
|
-
|eC
|
538
|
-
|Ecere Projects
|
539
|
-
|ECL
|
540
|
-
|ECLiPSe
|
541
|
-
|EditorConfig
|
542
|
-
|Edje Data Collection
|
543
|
-
|edn
|
544
|
-
|Eiffel
|
545
|
-
|EJS
|
546
|
-
|Elixir
|
547
|
-
|Elm
|
548
|
-
|Emacs Lisp
|
549
|
-
|EmberScript
|
550
|
-
|E-mail
|
551
|
-
|EQ
|
552
|
-
|Erlang
|
553
|
-
|F#
|
554
|
-
|F*
|
555
|
-
|Factor
|
556
|
-
|Fancy
|
557
|
-
|Fantom
|
558
|
-
|Faust
|
559
|
-
|Fennel
|
560
|
-
|FIGlet Font
|
561
|
-
|Filebench WML
|
562
|
-
|Filterscript
|
563
|
-
|fish
|
564
|
-
|Fluent
|
565
|
-
|FLUX
|
566
|
-
|Formatted
|
567
|
-
|Forth
|
568
|
-
|Fortran
|
569
|
-
|Fortran Free Form
|
570
|
-
|FreeBasic
|
571
|
-
|FreeMarker
|
572
|
-
|Frege
|
573
|
-
|Futhark
|
574
|
-
|G-code
|
575
|
-
|Game Maker Language
|
576
|
-
|GAML
|
577
|
-
|GAMS
|
578
|
-
|GAP
|
579
|
-
|GCC Machine Description
|
580
|
-
|GDB
|
581
|
-
|GDScript
|
582
|
-
|GEDCOM
|
583
|
-
|Gemfile.lock
|
584
|
-
|Genie
|
585
|
-
|Genshi
|
586
|
-
|Gentoo Ebuild
|
587
|
-
|Gentoo Eclass
|
588
|
-
|Gerber Image
|
589
|
-
|Gettext Catalog
|
590
|
-
|Gherkin
|
591
|
-
|Git Attributes
|
592
|
-
|Git Config
|
593
|
-
|GLSL
|
594
|
-
|Glyph
|
595
|
-
|Glyph Bitmap Distribution Format
|
596
|
-
|GN
|
597
|
-
|Gnuplot
|
598
|
-
|Go
|
599
|
-
|Go Checksums
|
600
|
-
|Go Module
|
601
|
-
|Golo
|
602
|
-
|Gosu
|
603
|
-
|Grace
|
604
|
-
|Gradle
|
605
|
-
|Grammatical Framework
|
606
|
-
|Graph Modeling Language
|
607
|
-
|GraphQL
|
608
|
-
|Graphviz (DOT)
|
609
|
-
|Groovy
|
610
|
-
|Groovy Server Pages
|
611
|
-
|Hack
|
612
|
-
|Haml
|
613
|
-
|Handlebars
|
614
|
-
|HAProxy
|
615
|
-
|Harbour
|
616
|
-
|Haskell
|
617
|
-
|Haxe
|
618
|
-
|HCL
|
619
|
-
|HiveQL
|
620
|
-
|HLSL
|
621
|
-
|HolyC
|
622
|
-
|Jinja
|
623
|
-
|HTML+ECR
|
624
|
-
|HTML+EEX
|
625
|
-
|HTML+ERB
|
626
|
-
|HTML+PHP
|
627
|
-
|HTML+Razor
|
628
|
-
|HTTP
|
629
|
-
|HXML
|
630
|
-
|Hy
|
631
|
-
|HyPhy
|
632
|
-
|IDL
|
633
|
-
|Idris
|
634
|
-
|Ignore List
|
635
|
-
|IGOR Pro
|
636
|
-
|ImageJ Macro
|
637
|
-
|Inform 7
|
638
|
-
|INI
|
639
|
-
|Inno Setup
|
640
|
-
|Io
|
641
|
-
|Ioke
|
642
|
-
|IRC log
|
643
|
-
|Isabelle
|
644
|
-
|Isabelle ROOT
|
645
|
-
|J
|
646
|
-
|Jasmin
|
647
|
-
|Java Properties
|
648
|
-
|Java Server Pages
|
649
|
-
|JavaScript+ERB
|
650
|
-
|JFlex
|
651
|
-
|Jinja
|
652
|
-
|Jison
|
653
|
-
|Jison Lex
|
654
|
-
|Jolie
|
655
|
-
|jq
|
656
|
-
|JSON
|
657
|
-
|JSON with Comments
|
658
|
-
|JSON5
|
659
|
-
|JSONiq
|
660
|
-
|JSONLD
|
661
|
-
|Jsonnet
|
662
|
-
|Julia
|
663
|
-
|Jupyter Notebook
|
664
|
-
|Kaitai Struct
|
665
|
-
|KakouneScript
|
666
|
-
|KiCad Layout
|
667
|
-
|KiCad Legacy Layout
|
668
|
-
|KiCad Schematic
|
669
|
-
|Kit
|
670
|
-
|Kotlin
|
671
|
-
|KRL
|
672
|
-
|Kusto
|
673
|
-
|LabVIEW
|
674
|
-
|Lark
|
675
|
-
|Lasso
|
676
|
-
|Latte
|
677
|
-
|Lean
|
678
|
-
|Less
|
679
|
-
|Lex
|
680
|
-
|LFE
|
681
|
-
|LilyPond
|
682
|
-
|Limbo
|
683
|
-
|Linker Script
|
684
|
-
|Linux Kernel Module
|
685
|
-
|Liquid
|
686
|
-
|Literate Agda
|
687
|
-
|Literate CoffeeScript
|
688
|
-
|Literate Haskell
|
689
|
-
|LiveScript
|
690
|
-
|LLVM
|
691
|
-
|Logos
|
692
|
-
|Logtalk
|
693
|
-
|LOLCODE
|
694
|
-
|LookML
|
695
|
-
|LoomScript
|
696
|
-
|LSL
|
697
|
-
|LTspice Symbol
|
698
|
-
|Lua
|
699
|
-
|M
|
700
|
-
|M4
|
701
|
-
|M4Sugar
|
702
|
-
|Macaulay2
|
703
|
-
|Makefile
|
704
|
-
|Mako
|
705
|
-
|Markdown
|
706
|
-
|Marko
|
707
|
-
|Mask
|
708
|
-
|Mathematica
|
709
|
-
|MATLAB
|
710
|
-
|Maven POM
|
711
|
-
|Max
|
712
|
-
|MAXScript
|
713
|
-
|mcfunction
|
714
|
-
|Wikitext
|
715
|
-
|Mercury
|
716
|
-
|Meson
|
717
|
-
|Metal
|
718
|
-
|Microsoft Developer Studio Project
|
719
|
-
|Microsoft Visual Studio Solution
|
720
|
-
|MiniD
|
721
|
-
|Mirah
|
722
|
-
|mIRC Script
|
723
|
-
|MLIR
|
724
|
-
|Modelica
|
725
|
-
|Modula-2
|
726
|
-
|Modula-3
|
727
|
-
|Module Management System
|
728
|
-
|Monkey
|
729
|
-
|Moocode
|
730
|
-
|MoonScript
|
731
|
-
|Motoko
|
732
|
-
|Motorola 68K Assembly
|
733
|
-
|MQL4
|
734
|
-
|MQL5
|
735
|
-
|MTML
|
736
|
-
|MUF
|
737
|
-
|mupad
|
738
|
-
|Muse
|
739
|
-
|Mustache
|
740
|
-
|Myghty
|
741
|
-
|nanorc
|
742
|
-
|NASL
|
743
|
-
|NCL
|
744
|
-
|Nearley
|
745
|
-
|Nemerle
|
746
|
-
|NEON
|
747
|
-
|nesC
|
748
|
-
|NetLinx
|
749
|
-
|NetLinx+ERB
|
750
|
-
|NetLogo
|
751
|
-
|NewLisp
|
752
|
-
|Nextflow
|
753
|
-
|Nginx
|
754
|
-
|Nim
|
755
|
-
|Ninja
|
756
|
-
|Nit
|
757
|
-
|Nix
|
758
|
-
|NL
|
759
|
-
|NPM Config
|
760
|
-
|NSIS
|
761
|
-
|Nu
|
762
|
-
|NumPy
|
763
|
-
|Nunjucks
|
764
|
-
|NWScript
|
765
|
-
|ObjDump
|
766
|
-
|Object Data Instance Notation
|
767
|
-
|Objective-C
|
768
|
-
|Objective-C++
|
769
|
-
|Objective-J
|
770
|
-
|ObjectScript
|
771
|
-
|OCaml
|
772
|
-
|Odin
|
773
|
-
|Omgrofl
|
774
|
-
|ooc
|
775
|
-
|Opa
|
776
|
-
|Opal
|
777
|
-
|Open Policy Agent
|
778
|
-
|OpenCL
|
779
|
-
|OpenEdge ABL
|
780
|
-
|OpenQASM
|
781
|
-
|OpenRC runscript
|
782
|
-
|OpenSCAD
|
783
|
-
|OpenStep Property List
|
784
|
-
|OpenType Feature File
|
785
|
-
|Org
|
786
|
-
|Ox
|
787
|
-
|Oxygene
|
788
|
-
|Oz
|
789
|
-
|P4
|
790
|
-
|Pan
|
791
|
-
|Papyrus
|
792
|
-
|Parrot
|
793
|
-
|Parrot Assembly
|
794
|
-
|Parrot Internal Representation
|
795
|
-
|Pascal
|
796
|
-
|Pawn
|
797
|
-
|PEG.js
|
798
|
-
|Pep8
|
799
|
-
|Perl
|
800
|
-
|Pic
|
801
|
-
|Pickle
|
802
|
-
|PicoLisp
|
803
|
-
|PigLatin
|
804
|
-
|Pike
|
805
|
-
|PlantUML
|
806
|
-
|PLpgSQL
|
807
|
-
|PLSQL
|
808
|
-
|Pod
|
809
|
-
|Pod 6
|
810
|
-
|PogoScript
|
811
|
-
|Pony
|
812
|
-
|PostCSS
|
813
|
-
|PostScript
|
814
|
-
|POV-Ray SDL
|
815
|
-
|PowerBuilder
|
816
|
-
|PowerShell
|
817
|
-
|Prisma
|
818
|
-
|Processing
|
819
|
-
|Proguard
|
820
|
-
|Prolog
|
821
|
-
|Promela
|
822
|
-
|Propeller Spin
|
823
|
-
|Protocol Buffer
|
824
|
-
|Public Key
|
825
|
-
|Pug
|
826
|
-
|Puppet
|
827
|
-
|Pure Data
|
828
|
-
|PureBasic
|
829
|
-
|PureScript
|
830
|
-
|Python console
|
831
|
-
|Python traceback
|
832
|
-
|q
|
833
|
-
|Q#
|
834
|
-
|QMake
|
835
|
-
|QML
|
836
|
-
|Qt Script
|
837
|
-
|Quake
|
838
|
-
|R
|
839
|
-
|Racket
|
840
|
-
|Ragel
|
841
|
-
|Raku
|
842
|
-
|RAML
|
843
|
-
|Rascal
|
844
|
-
|Raw token data
|
845
|
-
|RDoc
|
846
|
-
|Readline Config
|
847
|
-
|REALbasic
|
848
|
-
|Reason
|
849
|
-
|Rebol
|
850
|
-
|Red
|
851
|
-
|Redcode
|
852
|
-
|Regular Expression
|
853
|
-
|Ren'Py
|
854
|
-
|RenderScript
|
855
|
-
|ReScript
|
856
|
-
|reStructuredText
|
857
|
-
|REXX
|
858
|
-
|Rich Text Format
|
859
|
-
|Ring
|
860
|
-
|Riot
|
861
|
-
|RMarkdown
|
862
|
-
|RobotFramework
|
863
|
-
|robots.txt
|
864
|
-
|Roff
|
865
|
-
|Roff Manpage
|
866
|
-
|Rouge
|
867
|
-
|RPC
|
868
|
-
|RPM Spec
|
869
|
-
|RUNOFF
|
870
|
-
|Rust
|
871
|
-
|Sage
|
872
|
-
|SaltStack
|
873
|
-
|SAS
|
874
|
-
|Sass
|
875
|
-
|Scala
|
876
|
-
|Scaml
|
877
|
-
|Scheme
|
878
|
-
|Scilab
|
879
|
-
|SCSS
|
880
|
-
|sed
|
881
|
-
|Self
|
882
|
-
|ShaderLab
|
883
|
-
|Shell
|
884
|
-
|ShellSession
|
885
|
-
|Shen
|
886
|
-
|Sieve
|
887
|
-
|Singularity
|
888
|
-
|Slash
|
889
|
-
|Slice
|
890
|
-
|Slim
|
891
|
-
|Smali
|
892
|
-
|Smalltalk
|
893
|
-
|Smarty
|
894
|
-
|SmPL
|
895
|
-
|SMT
|
896
|
-
|Solidity
|
897
|
-
|SourcePawn
|
898
|
-
|SPARQL
|
899
|
-
|Spline Font Database
|
900
|
-
|SQF
|
901
|
-
|SQL
|
902
|
-
|SQLPL
|
903
|
-
|Squirrel
|
904
|
-
|SRecode Template
|
905
|
-
|SSH Config
|
906
|
-
|Stan
|
907
|
-
|Standard ML
|
908
|
-
|Starlark
|
909
|
-
|Stata
|
910
|
-
|STON
|
911
|
-
|StringTemplate
|
912
|
-
|Stylus
|
913
|
-
|SubRip Text
|
914
|
-
|SugarSS
|
915
|
-
|SuperCollider
|
916
|
-
|Svelte
|
917
|
-
|SVG
|
918
|
-
|Swift
|
919
|
-
|SWIG
|
920
|
-
|SystemVerilog
|
921
|
-
|Tcl
|
922
|
-
|Tcsh
|
923
|
-
|Tea
|
924
|
-
|Terra
|
925
|
-
|TeX
|
926
|
-
|Texinfo
|
927
|
-
|Text
|
928
|
-
|Textile
|
929
|
-
|Thrift
|
930
|
-
|TI Program
|
931
|
-
|TLA
|
932
|
-
|TOML
|
933
|
-
|TSQL
|
934
|
-
|TSV
|
935
|
-
|TSX
|
936
|
-
|Turing
|
937
|
-
|Turtle
|
938
|
-
|Twig
|
939
|
-
|TXL
|
940
|
-
|Type Language
|
941
|
-
|TypeScript
|
942
|
-
|Unified Parallel C
|
943
|
-
|Unity3D Asset
|
944
|
-
|Unix Assembly
|
945
|
-
|Uno
|
946
|
-
|UnrealScript
|
947
|
-
|UrWeb
|
948
|
-
|V
|
949
|
-
|Vala
|
950
|
-
|Valve Data Format
|
951
|
-
|VBA
|
952
|
-
|VBScript
|
953
|
-
|VCL
|
954
|
-
|Verilog
|
955
|
-
|VHDL
|
956
|
-
|Vim Help File
|
957
|
-
|Vim Script
|
958
|
-
|Vim Snippet
|
959
|
-
|Visual Basic .NET
|
960
|
-
|Visual Basic .NET
|
961
|
-
|Volt
|
962
|
-
|Vue
|
963
|
-
|Wavefront Material
|
964
|
-
|Wavefront Object
|
965
|
-
|wdl
|
966
|
-
|Web Ontology Language
|
967
|
-
|WebAssembly
|
968
|
-
|WebIDL
|
969
|
-
|WebVTT
|
970
|
-
|Wget Config
|
971
|
-
|Wikitext
|
972
|
-
|Windows Registry Entries
|
973
|
-
|wisp
|
974
|
-
|Wollok
|
975
|
-
|World of Warcraft Addon Data
|
976
|
-
|X BitMap
|
977
|
-
|X Font Directory Index
|
978
|
-
|X PixMap
|
979
|
-
|X10
|
980
|
-
|xBase
|
981
|
-
|XC
|
982
|
-
|XCompose
|
983
|
-
|XML
|
984
|
-
|XML Property List
|
985
|
-
|Xojo
|
986
|
-
|Xonsh
|
987
|
-
|XPages
|
988
|
-
|XProc
|
989
|
-
|XQuery
|
990
|
-
|XS
|
991
|
-
|XSLT
|
992
|
-
|Xtend
|
993
|
-
|Yacc
|
994
|
-
|YAML
|
995
|
-
|YANG
|
996
|
-
|YARA
|
997
|
-
|YASnippet
|
998
|
-
|ZAP
|
999
|
-
|Zeek
|
1000
|
-
|ZenScript
|
1001
|
-
|Zephir
|
1002
|
-
|Zig
|
1003
|
-
|ZIL
|
1004
|
-
|Zimpl
|
1005
|
-
|
|
1006
|
-
|611 languages
|
1007
|
-
|you can get only selected language list with '-l' option.
|
1008
|
-
|if languages is unknown, you can specify 'unkown'.
|
1009
|
-
|
|
1010
|
-
EOS
|
374
|
+
<<-OUTPUT.unindent
|
375
|
+
|No. Name Lang Star
|
376
|
+
|--- ---------------------------------------- ---------------- ------
|
377
|
+
| 1 SawyerHood/draw-a-ui TypeScript 11761
|
378
|
+
| 2 Stability-AI/generative-models Python 7286
|
379
|
+
| 3 microsoft/ML-For-Beginners HTML 9252
|
380
|
+
| 4 microsoft/generative-ai-for-beginners Jupyter Notebook 15174
|
381
|
+
| 5 lllyasviel/Fooocus Python 10023
|
382
|
+
| 6 langchain-ai/opengpts Rich Text Format 3978
|
383
|
+
| 7 facebookresearch/seamless_communication C 2607
|
384
|
+
| 8 microsoft/AI-For-Beginners Jupyter Notebook 5708
|
385
|
+
| 9 tldraw/tldraw TypeScript 6750
|
386
|
+
| 10 atomicals/atomicals-js TypeScript 627
|
387
|
+
| 11 githubnext/monaspace TypeScript 9912
|
388
|
+
| 12 udlbook/udlbook Jupyter Notebook 1551
|
389
|
+
| 13 comfyanonymous/ComfyUI Python 4197
|
390
|
+
| 14 langgenius/dify TypeScript 2906
|
391
|
+
| 15 lobehub/lobe-chat TypeScript 2622
|
392
|
+
| 16 luosiallen/latent-consistency-model Python 2706
|
393
|
+
| 17 daveshap/OpenAI_Agent_Swarm Python 2310
|
394
|
+
| 18 chenzomi12/DeepLearningSystem Jupyter Notebook 1760
|
395
|
+
| 19 biomejs/biome Rust 2372
|
396
|
+
| 20 openai/openai-python Python 2811
|
397
|
+
| 21 AppFlowy-IO/AppFlowy Dart 3071
|
398
|
+
| 22 saadeghi/daisyui Svelte 1773
|
399
|
+
| 23 nlohmann/json C++ 1080
|
400
|
+
| 24 SillyTavern/SillyTavern JavaScript 1566
|
401
|
+
| 25 1Panel-dev/1Panel Go 1950
|
402
|
+
|
403
|
+
OUTPUT
|
1011
404
|
end
|
1012
405
|
end
|