shields-badge 1.0.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.
@@ -0,0 +1,51 @@
1
+ module Shields
2
+ module Plugins
3
+ module QueryPlugin
4
+ CAMEL_CASE_KEYS = %i[
5
+ logo_color
6
+ logo_size
7
+ label_color
8
+ cache_seconds
9
+ ].freeze
10
+ UNIVERSAL_OPTIONS = {
11
+ style: %w[flat flat-square plastic for-the-badge social],
12
+ }
13
+
14
+ class << self
15
+ def setup!(klass)
16
+ klass.optional do
17
+ klass.string(:style, ignore_nil: true, default: "flat", validator: ->(v, _options) {
18
+ raise Errors::ValidationError, "invalid option for style, must be one of #{UNIVERSAL_OPTIONS[:style]}" if v && !UNIVERSAL_OPTIONS[:style].include?(v)
19
+
20
+ true
21
+ })
22
+ klass.string(:logo, ignore_nil: true)
23
+ klass.string(:logo_color, ignore_nil: true, aliases: %w(logoColor))
24
+ klass.string(:logo_size, ignore_nil: true, aliases: %w(logoSize))
25
+ klass.string(:label, ignore_nil: true)
26
+ klass.string(:label_color, ignore_nil: true, aliases: %w(labelColor))
27
+ klass.string(:color, ignore_nil: true)
28
+ klass.string(:cache_seconds, ignore_nil: true, aliases: %w(cacheSeconds), validator: ->(v, _options) {
29
+ raise Errors::ValidationError, "invalid option for cache_seconds, must be an integer string but was #{v} (#{v.class})" if v && v.to_i.to_s != v
30
+ true
31
+ })
32
+ klass.string(:link, ignore_nil: true)
33
+ end
34
+ klass.serializer(Shields::Serializers::CamelCaser)
35
+ end
36
+ end
37
+
38
+ # Usage in DTO classes that include this plugin
39
+ # def camel_case_keys
40
+ # super + [:another_camel_case_key]
41
+ # end
42
+ def camel_case_keys
43
+ CAMEL_CASE_KEYS
44
+ end
45
+ end
46
+
47
+ Castkit.configure do |config|
48
+ config.register_plugin(:query_plugin, QueryPlugin)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,12 @@
1
+ module Shields
2
+ module Registry
3
+ def register_all
4
+ Categories::CATEGORIES.each do |method_name, category|
5
+ Shields::Badge.register_by_method_name(method_name:, category:)
6
+ end
7
+ end
8
+ module_function :register_all
9
+ end
10
+ end
11
+
12
+ Shields::Registry.register_all
@@ -0,0 +1,37 @@
1
+ module Shields
2
+ module Serializers
3
+ class CamelCaser < Castkit::Serializers::DefaultSerializer
4
+ UPPER_START = /\p{UPPERCASE-LETTER}+.*/
5
+ UNDERSCORED = /_/
6
+
7
+ private
8
+
9
+ def call
10
+ result = super
11
+ result.transform_keys! do |key|
12
+ if object.camel_case_keys.include?(key)
13
+ camel_case(key.to_s).to_sym
14
+ else
15
+ key
16
+ end
17
+ end
18
+ end
19
+
20
+ ##
21
+ # Convert to camel case (lower first letter).
22
+ #
23
+ # "foo_bar".camel_case #=> "fooBar"
24
+ #
25
+ # @return [String] copy of str converted to camel case (lower first letter).
26
+ #
27
+ # @api public
28
+ def camel_case(str)
29
+ return str if !str[UNDERSCORED] && str[UPPER_START]
30
+
31
+ words = str.split("_")
32
+ first_word = words.shift
33
+ first_word + words.map { |e| e.capitalize }.join
34
+ end
35
+ end
36
+ end
37
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,455 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shields-badge
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter H. Boling
8
+ bindir: exe
9
+ cert_chain:
10
+ - |
11
+ -----BEGIN CERTIFICATE-----
12
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
13
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
14
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
15
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
16
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
17
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
18
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
19
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
20
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
21
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
22
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
23
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
24
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
25
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
26
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
27
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
28
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
29
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
30
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
31
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
32
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
33
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
34
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
35
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
36
+ L9nRqA==
37
+ -----END CERTIFICATE-----
38
+ date: 2025-05-30 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: castkit
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.3.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.3.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: version_gem
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.8
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: '3'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.1.8
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '3'
74
+ - !ruby/object:Gem::Dependency
75
+ name: rake
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '13.0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '13.0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: bundler-audit
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: 0.9.2
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.9.2
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '3.13'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '3.13'
116
+ - !ruby/object:Gem::Dependency
117
+ name: rspec-block_is_expected
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '1.0'
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 1.0.6
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '1.0'
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 1.0.6
136
+ - !ruby/object:Gem::Dependency
137
+ name: stone_checksums
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '1.0'
150
+ - !ruby/object:Gem::Dependency
151
+ name: kettle-soup-cover
152
+ requirement: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '1.0'
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 1.0.6
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: 1.0.6
170
+ - !ruby/object:Gem::Dependency
171
+ name: reek
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: '6.4'
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '6.4'
184
+ - !ruby/object:Gem::Dependency
185
+ name: rubocop
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '1.75'
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '1.75'
198
+ - !ruby/object:Gem::Dependency
199
+ name: rubocop-lts
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '22.1'
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 22.1.3
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '22.1'
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: 22.1.3
218
+ - !ruby/object:Gem::Dependency
219
+ name: rubocop-packaging
220
+ requirement: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - "~>"
223
+ - !ruby/object:Gem::Version
224
+ version: '0.6'
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: 0.6.0
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '0.6'
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: 0.6.0
238
+ - !ruby/object:Gem::Dependency
239
+ name: rubocop-rspec
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: '3.2'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '3.2'
252
+ - !ruby/object:Gem::Dependency
253
+ name: standard
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: '1.47'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: '1.47'
266
+ - !ruby/object:Gem::Dependency
267
+ name: kramdown
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: '2.5'
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: 2.5.1
276
+ type: :development
277
+ prerelease: false
278
+ version_requirements: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - "~>"
281
+ - !ruby/object:Gem::Version
282
+ version: '2.5'
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: 2.5.1
286
+ - !ruby/object:Gem::Dependency
287
+ name: kramdown-parser-gfm
288
+ requirement: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: '1.1'
293
+ type: :development
294
+ prerelease: false
295
+ version_requirements: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - "~>"
298
+ - !ruby/object:Gem::Version
299
+ version: '1.1'
300
+ - !ruby/object:Gem::Dependency
301
+ name: yard
302
+ requirement: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - "~>"
305
+ - !ruby/object:Gem::Version
306
+ version: '0.9'
307
+ - - ">="
308
+ - !ruby/object:Gem::Version
309
+ version: 0.9.37
310
+ type: :development
311
+ prerelease: false
312
+ version_requirements: !ruby/object:Gem::Requirement
313
+ requirements:
314
+ - - "~>"
315
+ - !ruby/object:Gem::Version
316
+ version: '0.9'
317
+ - - ">="
318
+ - !ruby/object:Gem::Version
319
+ version: 0.9.37
320
+ - !ruby/object:Gem::Dependency
321
+ name: yard-junk
322
+ requirement: !ruby/object:Gem::Requirement
323
+ requirements:
324
+ - - "~>"
325
+ - !ruby/object:Gem::Version
326
+ version: '0.0'
327
+ - - ">="
328
+ - !ruby/object:Gem::Version
329
+ version: 0.0.10
330
+ type: :development
331
+ prerelease: false
332
+ version_requirements: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - "~>"
335
+ - !ruby/object:Gem::Version
336
+ version: '0.0'
337
+ - - ">="
338
+ - !ruby/object:Gem::Version
339
+ version: 0.0.10
340
+ - !ruby/object:Gem::Dependency
341
+ name: yard-relative_markdown_links
342
+ requirement: !ruby/object:Gem::Requirement
343
+ requirements:
344
+ - - "~>"
345
+ - !ruby/object:Gem::Version
346
+ version: 0.5.0
347
+ type: :development
348
+ prerelease: false
349
+ version_requirements: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - "~>"
352
+ - !ruby/object:Gem::Version
353
+ version: 0.5.0
354
+ - !ruby/object:Gem::Dependency
355
+ name: rdoc
356
+ requirement: !ruby/object:Gem::Requirement
357
+ requirements:
358
+ - - "~>"
359
+ - !ruby/object:Gem::Version
360
+ version: '6.11'
361
+ type: :development
362
+ prerelease: false
363
+ version_requirements: !ruby/object:Gem::Requirement
364
+ requirements:
365
+ - - "~>"
366
+ - !ruby/object:Gem::Version
367
+ version: '6.11'
368
+ description: |
369
+ Shields::Badge.gem_total_downloads(path_parameters: {gem: 'rails'})
370
+ => "[![RubyGems Total Downloads](https://img.shields.io/gem/dt/rails?)](https://rubygems.org/gems/rails)"
371
+ email:
372
+ - peter.boling@gmail.com
373
+ executables: []
374
+ extensions: []
375
+ extra_rdoc_files:
376
+ - CHANGELOG.md
377
+ - CODE_OF_CONDUCT.md
378
+ - CONTRIBUTING.md
379
+ - LICENSE.txt
380
+ - README.md
381
+ - SECURITY.md
382
+ files:
383
+ - CHANGELOG.md
384
+ - CODE_OF_CONDUCT.md
385
+ - CONTRIBUTING.md
386
+ - LICENSE.txt
387
+ - README.md
388
+ - SECURITY.md
389
+ - lib/shields/anchor_href_template.rb
390
+ - lib/shields/api_template.rb
391
+ - lib/shields/badge.rb
392
+ - lib/shields/badge/activity/github_commits_since_latest_release.rb
393
+ - lib/shields/badge/base.rb
394
+ - lib/shields/badge/build/github_branch_check_runs.rb
395
+ - lib/shields/badge/code_coverage/coveralls.rb
396
+ - lib/shields/badge/downloads/gem_download_rank.rb
397
+ - lib/shields/badge/downloads/gem_total_downloads.rb
398
+ - lib/shields/badge/social/github_repo_stars.rb
399
+ - lib/shields/badge/version.rb
400
+ - lib/shields/categories.rb
401
+ - lib/shields/errors/error.rb
402
+ - lib/shields/errors/not_implemented.rb
403
+ - lib/shields/errors/validation_error.rb
404
+ - lib/shields/formatters/image_src_url.rb
405
+ - lib/shields/formatters/markdown.rb
406
+ - lib/shields/label_text_template.rb
407
+ - lib/shields/plugins/git_branch_plugin.rb
408
+ - lib/shields/plugins/github_repo_plugin.rb
409
+ - lib/shields/plugins/path_plugin.rb
410
+ - lib/shields/plugins/query_plugin.rb
411
+ - lib/shields/register_all.rb
412
+ - lib/shields/serializers/camel_caser.rb
413
+ homepage: https://github.com/galtzo-floss/shields-badge
414
+ licenses:
415
+ - MIT
416
+ metadata:
417
+ homepage_uri: https://shields-badge.galtzo.com/
418
+ source_code_uri: https://github.com/galtzo-floss/shields-badge/releases/tag//v1.0.0
419
+ changelog_uri: https://gitlab.com/galtzo-floss/shields-badge/-/blob/v1.0.0/CHANGELOG.md
420
+ bug_tracker_uri: https://gitlab.com/galtzo-floss/shields-badge/-/issues
421
+ documentation_uri: https://www.rubydoc.info/gems/shields-badge/1.0.0
422
+ wiki_uri: https://gitlab.com/galtzo-floss/shields-badge/-/wiki
423
+ funding_uri: https://github.com/sponsors/pboling
424
+ news_uri: https://www.railsbling.com/tags/shields-badge
425
+ rubygems_mfa_required: 'true'
426
+ rdoc_options:
427
+ - "--title"
428
+ - shields-badge - RubyGem version of the interactive tool found at shields.io/badges
429
+ - "--main"
430
+ - CHANGELOG.md
431
+ - CODE_OF_CONDUCT.md
432
+ - CONTRIBUTING.md
433
+ - LICENSE.txt
434
+ - README.md
435
+ - SECURITY.md
436
+ - "--line-numbers"
437
+ - "--inline-source"
438
+ - "--quiet"
439
+ require_paths:
440
+ - lib
441
+ required_ruby_version: !ruby/object:Gem::Requirement
442
+ requirements:
443
+ - - ">="
444
+ - !ruby/object:Gem::Version
445
+ version: 3.1.0
446
+ required_rubygems_version: !ruby/object:Gem::Requirement
447
+ requirements:
448
+ - - ">="
449
+ - !ruby/object:Gem::Version
450
+ version: '0'
451
+ requirements: []
452
+ rubygems_version: 3.6.9
453
+ specification_version: 4
454
+ summary: RubyGem version of the interactive tool found at shields.io/badges
455
+ test_files: []
metadata.gz.sig ADDED
Binary file