gnu: ruby-term-ansicolor: Fix test for Ruby 2.5.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
cf36174f 6;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
4a78fd46 8;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
0899352f 9;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
de429a93 10;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
81a22171 11;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
6ef8c59a
PP
13;;;
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29(define-module (gnu packages ruby)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (gnu packages)
1db791d5 32 #:use-module (gnu packages base)
6ef8c59a 33 #:use-module (gnu packages compression)
4a9e0585 34 #:use-module (gnu packages databases)
6ef8c59a 35 #:use-module (gnu packages readline)
6ef8c59a 36 #:use-module (gnu packages autotools)
ad79eb55 37 #:use-module (gnu packages java)
6ef8c59a 38 #:use-module (gnu packages libffi)
34138e42 39 #:use-module (gnu packages maths)
0c8eedc1 40 #:use-module (gnu packages ncurses)
fe5dd5f4 41 #:use-module (gnu packages networking)
ac09beba 42 #:use-module (gnu packages python)
763624f5 43 #:use-module (gnu packages ragel)
cc2b77df 44 #:use-module (gnu packages tls)
66e20863 45 #:use-module (gnu packages version-control)
6ef8c59a
PP
46 #:use-module (guix packages)
47 #:use-module (guix download)
bda0c139 48 #:use-module (guix git-download)
6ef8c59a 49 #:use-module (guix utils)
acf735f2 50 #:use-module (guix build-system gnu)
e920bfca 51 #:use-module (gnu packages xml)
c2c4e5b2 52 #:use-module (gnu packages web)
acf735f2 53 #:use-module (guix build-system ruby))
6ef8c59a
PP
54
55(define-public ruby
56 (package
57 (name "ruby")
02f21a87 58 (version "2.4.3")
6ef8c59a
PP
59 (source
60 (origin
61 (method url-fetch)
6becfdff
MW
62 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
63 (version-major+minor version)
12d39eb5 64 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
65 (sha256
66 (base32
02f21a87 67 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
ff9d1a2f 68 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
65e84e31
BW
69 (modules '((guix build utils)))
70 (snippet `(begin
71 ;; Remove bundled libffi
c033c195 72 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 73 #t))))
6ef8c59a
PP
74 (build-system gnu-build-system)
75 (arguments
76 `(#:test-target "test"
6ef8c59a 77 #:phases
9656b8be 78 (modify-phases %standard-phases
65e84e31 79 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
80 (lambda _
81 (substitute* '("Makefile.in"
82 "ext/pty/pty.c"
83 "io.c"
84 "lib/mkmf.rb"
85 "process.c"
86 "test/rubygems/test_gem_ext_configure_builder.rb"
87 "test/rdoc/test_rdoc_parser.rb"
88 "test/ruby/test_rubyoptions.rb"
89 "test/ruby/test_process.rb"
90 "test/ruby/test_system.rb"
91 "tool/rbinstall.rb")
92 (("/bin/sh") (which "sh")))
93 #t)))))
6ef8c59a
PP
94 (inputs
95 `(("readline" ,readline)
6ef8c59a
PP
96 ("openssl" ,openssl)
97 ("libffi" ,libffi)
98 ("gdbm" ,gdbm)
99 ("zlib" ,zlib)))
100 (native-search-paths
101 (list (search-path-specification
102 (variable "GEM_PATH")
3cb3fa67 103 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 104 (synopsis "Programming language interpreter")
6ef8c59a
PP
105 (description "Ruby is a dynamic object-oriented programming language with
106a focus on simplicity and productivity.")
bf3be6a5 107 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
108 (license license:ruby)))
109
98bb983c 110(define-public ruby-2.3
800a7dd5
BW
111 (package
112 (inherit ruby)
049edeb2 113 (version "2.3.7")
800a7dd5
BW
114 (source
115 (origin
116 (method url-fetch)
117 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
118 (version-major+minor version)
119 "/ruby-" version ".tar.xz"))
120 (sha256
121 (base32
049edeb2 122 "1nwfaifq5624p1ml56qq5dy5w38z37x22r0qgrbgbzrzklmqy7y6"))
800a7dd5
BW
123 (modules '((guix build utils)))
124 (snippet `(begin
125 ;; Remove bundled libffi
126 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
127 #t))))))
128
65e84e31
BW
129(define-public ruby-2.2
130 (package (inherit ruby)
8456a4c5 131 (version "2.2.10")
65e84e31
BW
132 (source
133 (origin
134 (method url-fetch)
135 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
136 (version-major+minor version)
137 "/ruby-" version ".tar.xz"))
138 (sha256
139 (base32
8456a4c5 140 "0l5nk9mc0q4769d2i9d9y1izk0pk0lms2bl8s3lclv36wsvvqxxz"))))))
65e84e31 141
9942e803
PP
142(define-public ruby-2.1
143 (package (inherit ruby)
a754eaf1 144 (version "2.1.10")
9942e803
PP
145 (source
146 (origin
147 (method url-fetch)
148 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
149 (version-major+minor version)
150 "/ruby-" version ".tar.bz2"))
151 (sha256
152 (base32
a754eaf1 153 "1wglbd599mlwxfcb2xgqcxi2shr363pjn5dpbv11m04si9bpaim7"))))
9942e803
PP
154 (arguments
155 `(#:test-target "test"
156 #:parallel-tests? #f
157 #:phases
dc1d3cde
KK
158 (modify-phases %standard-phases
159 (add-before 'configure 'replace-bin-sh
160 (lambda _
161 (substitute* '("Makefile.in"
162 "ext/pty/pty.c"
163 "io.c"
164 "lib/mkmf.rb"
165 "process.c")
166 (("/bin/sh") (which "sh")))
3cb3fa67 167 #t)))))))
9942e803 168
218ee89b
PP
169(define-public ruby-1.8
170 (package (inherit ruby)
218ee89b
PP
171 (version "1.8.7-p374")
172 (source
173 (origin
174 (method url-fetch)
6becfdff
MW
175 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
176 (version-major+minor version)
177 "/ruby-" version ".tar.bz2"))
218ee89b
PP
178 (sha256
179 (base32
180 "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl"))))
181 (native-search-paths '())
182 (arguments
183 `(#:test-target "test"
184 #:parallel-tests? #f
185 #:phases
dc1d3cde
KK
186 (modify-phases %standard-phases
187 (add-before 'configure 'replace-bin-sh
188 (lambda _
189 (substitute* '("Makefile.in"
190 "ext/pty/pty.c"
191 "io.c"
192 "lib/mkmf.rb"
193 "process.c")
194 (("/bin/sh") (which "sh")))
195 #t)))))))
218ee89b 196
352b5d7e
JL
197(define-public ruby-concurrent
198 (package
199 (name "ruby-concurrent")
200 (version "1.0.5")
201 (source (origin
202 (method url-fetch)
203 (uri (rubygems-uri "concurrent-ruby" version))
204 (sha256
205 (base32
206 "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"))))
207 (build-system ruby-build-system)
208 (arguments `(#:tests? #f)); No rakefile
209 (home-page "https://github.com/ruby-concurrency/concurrent-ruby")
210 (synopsis "Concurrency tools for Ruby")
211 (description "This gem provides concurrency tools for Ruby. It provides
212a library of common thread-safe types and data-structures as well as abstractions
213for concurrency and communication between threads.")
214 (license license:expat)))
215
823ed097
CB
216(define-public ruby-highline
217 (package
218 (name "ruby-highline")
405cb5ab 219 (version "1.7.10")
823ed097
CB
220 (source
221 (origin
222 (method url-fetch)
223 (uri (rubygems-uri "highline" version))
224 (sha256
225 (base32
405cb5ab 226 "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y"))))
823ed097
CB
227 (build-system ruby-build-system)
228 (arguments
229 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
230 (native-inputs
231 `(("bundler" ,bundler)
232 ("ruby-code-statistics" ,ruby-code-statistics)))
233 (synopsis
234 "HighLine helps you build command-line interfaces")
235 (description
236 "HighLine provides a high-level IO library that provides validation,
237type conversion, and more for command-line interfaces. HighLine also includes
238a menu system for providing multiple options to the user.")
239 (home-page "https://github.com/JEG2/highline")
240 (license (list license:gpl2 license:ruby))))
241
bda0c139
DT
242(define-public ruby-hoe
243 (package
244 (name "ruby-hoe")
05f2f8bc 245 (version "3.16.2")
bda0c139 246 (source (origin
e83c6d00
DT
247 (method url-fetch)
248 (uri (rubygems-uri "hoe" version))
bda0c139
DT
249 (sha256
250 (base32
05f2f8bc 251 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
bda0c139 252 (build-system ruby-build-system)
bda0c139
DT
253 (synopsis "Ruby project management helper")
254 (description
255 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
256maintain, and release projects and includes a dynamic plug-in system allowing
257for easy extensibility. Hoe ships with plug-ins for all the usual project
258tasks including rdoc generation, testing, packaging, deployment, and
259announcement.")
2f3800e5 260 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
261 (license license:expat)))
262
022170dc
PP
263(define-public ruby-rake-compiler
264 (package
265 (name "ruby-rake-compiler")
0cd7b816 266 (version "1.0.4")
022170dc
PP
267 (source (origin
268 (method url-fetch)
e83c6d00 269 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
270 (sha256
271 (base32
0cd7b816 272 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
022170dc
PP
273 (build-system ruby-build-system)
274 (arguments
e83c6d00 275 '(#:tests? #f)) ; needs cucumber
022170dc 276 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 277 (description "Rake-compiler provides a framework for building and
022170dc
PP
278packaging native C and Java extensions in Ruby.")
279 (home-page "https://github.com/rake-compiler/rake-compiler")
280 (license license:expat)))
281
acf735f2
DT
282(define-public ruby-i18n
283 (package
284 (name "ruby-i18n")
cbb50182 285 (version "1.1.0")
acf735f2
DT
286 (source (origin
287 (method url-fetch)
e83c6d00 288 (uri (rubygems-uri "i18n" version))
acf735f2
DT
289 (sha256
290 (base32
cbb50182 291 "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr"))))
acf735f2
DT
292 (build-system ruby-build-system)
293 (arguments
0bfdfd37 294 '(#:tests? #f)) ; no tests
cbb50182 295 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
296 (synopsis "Internationalization library for Ruby")
297 (description "Ruby i18n is an internationalization and localization
298solution for Ruby programs. It features translation and localization,
299interpolation of values to translations, pluralization, customizable
300transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
301translation data, custom key/scope separator, custom exception handlers, and
302an extensible architecture with a swappable backend.")
7bf837fd 303 (home-page "https://github.com/svenfuchs/i18n")
acf735f2 304 (license license:expat)))
eb0c2dd6 305
62b138ca
CB
306(define-public ruby-iruby
307 (package
308 (name "ruby-iruby")
309 (version "0.3")
310 (source
311 (origin
312 (method url-fetch)
313 (uri (rubygems-uri "iruby" version))
314 (sha256
315 (base32
316 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
317 (build-system ruby-build-system)
318 (arguments
319 ;; TODO: Tests currently fail.
320 ;;
321 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
322 ;;
323 ;; 1) Failure:
324 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
325 ;; In [ expected
326 ;;
327 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
328 '(#:tests? #f
329 #:phases
330 (modify-phases %standard-phases
331 (add-after 'unpack 'patch-ipython
332 (lambda* (#:key inputs #:allow-other-keys)
333 (substitute* "lib/iruby/command.rb"
334 (("version = `")
335 (string-append
336 "version = `"
337 (assoc-ref inputs "python-ipython")
338 "/bin/"))
339 (("Kernel\\.exec\\('")
340 (string-append
341 "Kernel.exec('"
342 (assoc-ref inputs "python-ipython")
343 "/bin/")))
344 #t)))))
345 (inputs
346 `(("python-ipython" ,python-ipython)))
347 (propagated-inputs
348 `(("ruby-bond" ,ruby-bond)
349 ("ruby-data_uri" ,ruby-data_uri)
350 ("ruby-mimemagic" ,ruby-mimemagic)
351 ("ruby-multi-json" ,ruby-multi-json)
352 ("ruby-cztop" ,ruby-cztop)
353 ;; Optional inputs
354 ("ruby-pry" ,ruby-pry)))
355 (synopsis "Ruby kernel for Jupyter/IPython")
356 (description
357 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
358notebook).")
359 (home-page "https://github.com/SciRuby/iruby")
360 (license license:expat)))
361
eb0c2dd6
DT
362;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
363;; dependencies use RSpec for their test suites! To avoid these circular
364;; dependencies, we disable tests for all of the RSpec-related packages.
365(define ruby-rspec-support
366 (package
367 (name "ruby-rspec-support")
2d9f1c06 368 (version "3.5.0")
eb0c2dd6
DT
369 (source (origin
370 (method url-fetch)
e83c6d00 371 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
372 (sha256
373 (base32
2d9f1c06 374 "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
eb0c2dd6
DT
375 (build-system ruby-build-system)
376 (arguments
377 '(#:tests? #f)) ; avoid dependency cycles
378 (synopsis "RSpec support library")
379 (description "Support utilities for RSpec gems.")
380 (home-page "https://github.com/rspec/rspec-support")
381 (license license:expat)))
382
383(define-public ruby-rspec-core
384 (package
385 (name "ruby-rspec-core")
c5949118 386 (version "3.5.4")
eb0c2dd6
DT
387 (source (origin
388 (method url-fetch)
e83c6d00 389 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
390 (sha256
391 (base32
c5949118 392 "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
eb0c2dd6
DT
393 (build-system ruby-build-system)
394 (arguments
395 '(#:tests? #f)) ; avoid dependency cycles
396 (propagated-inputs
397 `(("ruby-rspec-support" ,ruby-rspec-support)))
398 (synopsis "RSpec core library")
399 (description "Rspec-core provides the RSpec test runner and example
400groups.")
401 (home-page "https://github.com/rspec/rspec-core")
402 (license license:expat)))
e6962009 403
64c318f2
BW
404(define-public ruby-rspec-core-2
405 (package (inherit ruby-rspec-core)
406 (version "2.14.8")
407 (source (origin
408 (method url-fetch)
409 (uri (rubygems-uri "rspec-core" version))
410 (sha256
411 (base32
412 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
413 (propagated-inputs `())))
414
20c05ea9 415(define-public ruby-diff-lcs
e6962009
DT
416 (package
417 (name "ruby-diff-lcs")
e2fcef39 418 (version "1.3")
e6962009
DT
419 (source (origin
420 (method url-fetch)
e83c6d00 421 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
422 (sha256
423 (base32
e2fcef39 424 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
425 (build-system ruby-build-system)
426 (arguments
427 '(#:tests? #f)) ; avoid dependency cycles
428 (synopsis "Compute the difference between two Enumerable sequences")
429 (description "Diff::LCS computes the difference between two Enumerable
430sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
431It includes utilities to create a simple HTML diff output format and a
432standard diff-like tool.")
433 (home-page "https://github.com/halostatue/diff-lcs")
434 (license license:expat)))
435
436(define-public ruby-rspec-expectations
437 (package
438 (name "ruby-rspec-expectations")
2d9f1c06 439 (version "3.5.0")
e6962009
DT
440 (source (origin
441 (method url-fetch)
e83c6d00 442 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
443 (sha256
444 (base32
2d9f1c06 445 "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
e6962009
DT
446 (build-system ruby-build-system)
447 (arguments
448 '(#:tests? #f)) ; avoid dependency cycles
449 (propagated-inputs
450 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 451 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 452 (synopsis "RSpec expectations library")
e6962009
DT
453 (description "Rspec-expectations provides a simple API to express expected
454outcomes of a code example.")
455 (home-page "https://github.com/rspec/rspec-expectations")
456 (license license:expat)))
4f2a0cac 457
fb157f25
BW
458(define-public ruby-rspec-expectations-2
459 (package (inherit ruby-rspec-expectations)
460 (version "2.14.5")
461 (source (origin
462 (method url-fetch)
463 (uri (rubygems-uri "rspec-expectations" version))
464 (sha256
465 (base32
466 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
467 (propagated-inputs
468 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
469
999ffb26
DM
470(define-public ruby-rspec-its
471 (package
472 (name "ruby-rspec-its")
473 (version "1.2.0")
474 (source
475 (origin
476 (method url-fetch)
477 (uri (rubygems-uri "rspec-its" version))
478 (sha256
479 (base32
480 "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
481 (build-system ruby-build-system)
482 (arguments
483 `(#:tests? #f)) ; needs cucumber.
484 (propagated-inputs
485 `(("ruby-rspec-core" ,ruby-rspec-core)
486 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
487 (synopsis "RSpec extension gem for attribute matching")
488 (description "@code{rspec-its} is an RSpec extension gem for attribute
489matching.")
490 (home-page "https://github.com/rspec/rspec-its")
491 (license license:expat)))
492
4f2a0cac
DT
493(define-public ruby-rspec-mocks
494 (package
495 (name "ruby-rspec-mocks")
2d9f1c06 496 (version "3.5.0")
4f2a0cac
DT
497 (source (origin
498 (method url-fetch)
e83c6d00 499 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
500 (sha256
501 (base32
2d9f1c06 502 "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
4f2a0cac
DT
503 (build-system ruby-build-system)
504 (arguments
505 '(#:tests? #f)) ; avoid dependency cycles
506 (propagated-inputs
507 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 508 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
509 (synopsis "RSpec stubbing and mocking library")
510 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
511support for stubbing and mocking.")
512 (home-page "https://github.com/rspec/rspec-mocks")
513 (license license:expat)))
d4fde1f2 514
6da9adeb
BW
515(define-public ruby-rspec-mocks-2
516 (package (inherit ruby-rspec-mocks)
517 (version "2.14.6")
518 (source (origin
519 (method url-fetch)
520 (uri (rubygems-uri "rspec-mocks" version))
521 (sha256
522 (base32
523 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
524 (propagated-inputs
525 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
526
d4fde1f2
DT
527(define-public ruby-rspec
528 (package
529 (name "ruby-rspec")
2d9f1c06 530 (version "3.5.0")
d4fde1f2
DT
531 (source (origin
532 (method url-fetch)
e83c6d00 533 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
534 (sha256
535 (base32
2d9f1c06 536 "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
d4fde1f2
DT
537 (build-system ruby-build-system)
538 (arguments
539 '(#:tests? #f)) ; avoid dependency cycles
540 (propagated-inputs
541 `(("ruby-rspec-core" ,ruby-rspec-core)
542 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
543 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
544 (synopsis "Behavior-driven development framework for Ruby")
545 (description "RSpec is a behavior-driven development (BDD) framework for
546Ruby. This meta-package includes the RSpec test runner, along with the
547expectations and mocks frameworks.")
548 (home-page "http://rspec.info/")
549 (license license:expat)))
2cbc105b 550
5ac984b3
BW
551(define-public ruby-rspec-2
552 (package (inherit ruby-rspec)
553 (version "2.14.1")
554 (source (origin
555 (method url-fetch)
556 (uri (rubygems-uri "rspec" version))
557 (sha256
558 (base32
559 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
560 (propagated-inputs
561 `(("ruby-rspec-core" ,ruby-rspec-core-2)
562 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
563 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
564
2cbc105b
DT
565;; Bundler is yet another source of circular dependencies, so we must disable
566;; its test suite as well.
567(define-public bundler
568 (package
569 (name "bundler")
29a33257 570 (version "1.15.4")
2cbc105b
DT
571 (source (origin
572 (method url-fetch)
e83c6d00 573 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
574 (sha256
575 (base32
29a33257 576 "0wl4r7wbwdq68xidfv4hhzfb1spb6lmhbspwlzrg4pf1l6ipxlgs"))))
2cbc105b
DT
577 (build-system ruby-build-system)
578 (arguments
579 '(#:tests? #f)) ; avoid dependency cycles
580 (synopsis "Ruby gem bundler")
581 (description "Bundler automatically downloads and installs a list of gems
582specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 583 (home-page "https://bundler.io/")
2cbc105b 584 (license license:expat)))
98b87b82 585
cf36174f
RW
586(define-public ruby-builder
587 (package
588 (name "ruby-builder")
42b48db2 589 (version "3.2.3")
cf36174f
RW
590 (source (origin
591 (method url-fetch)
592 (uri (rubygems-uri "builder" version))
593 (sha256
594 (base32
42b48db2 595 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
596 (build-system ruby-build-system)
597 (arguments
598 `(#:phases
599 (modify-phases %standard-phases
600 (add-after 'unpack 'do-not-use-rvm
601 (lambda _
602 (substitute* "rakelib/tags.rake"
603 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
604 #t)))))
605 (synopsis "Ruby library to create structured data")
606 (description "Builder provides a number of builder objects that make it
607easy to create structured data. Currently the following builder objects are
608supported: XML Markup and XML Events.")
609 (home-page "https://github.com/jimweirich/builder")
610 (license license:expat)))
611
ad79eb55
RW
612(define-public ruby-rjb
613 (package
614 (name "ruby-rjb")
aeb4e61e 615 (version "1.5.5")
ad79eb55
RW
616 (source (origin
617 (method url-fetch)
618 (uri (rubygems-uri "rjb" version))
619 (sha256
620 (base32
aeb4e61e 621 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
622 (build-system ruby-build-system)
623 (arguments
624 `(#:tests? #f ; no rakefile
625 #:phases
626 (modify-phases %standard-phases
627 (add-before 'build 'set-java-home
628 (lambda* (#:key inputs #:allow-other-keys)
629 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
630 #t)))))
631 (native-inputs
d2540f80 632 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
633 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
634 (description "RJB is a bridge program that connects Ruby and Java via the
635Java Native Interface.")
2f3800e5 636 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
637 (license license:lgpl2.1+)))
638
f9ae2c06
PP
639(define-public ruby-log4r
640 (package
641 (name "ruby-log4r")
642 (version "1.1.10")
643 (source
644 (origin
645 (method url-fetch)
646 (uri (rubygems-uri "log4r" version))
647 (sha256
648 (base32
649 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
650 (build-system ruby-build-system)
651 (arguments
652 '(#:tests? #f)) ; no Rakefile in gem
653 (synopsis "Flexible logging library for Ruby")
654 (description "Comprehensive and flexible logging library written
655in Ruby for use in Ruby programs. It features a hierarchical logging
656system of any number of levels, custom level names, logger
657inheritance, multiple output destinations per log event, execution
658tracing, custom formatting, thread safteyness, XML and YAML
659configuration, and more.")
660 (home-page "http://log4r.rubyforge.org/")
661 (license license:bsd-3)))
662
71a03c29
RW
663(define-public ruby-atoulme-antwrap
664 (package
665 (name "ruby-atoulme-antwrap")
666 (version "0.7.5")
667 (source (origin
668 (method url-fetch)
669 (uri (rubygems-uri "atoulme-Antwrap" version))
670 (sha256
671 (base32
672 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
673 (build-system ruby-build-system)
674 ;; Test data required for most of the tests are not included.
675 (arguments `(#:tests? #f))
676 (native-inputs
677 `(("ruby-hoe" ,ruby-hoe)))
678 (inputs
679 `(("ruby-rjb" ,ruby-rjb)))
680 (synopsis "Ruby wrapper for the Ant build tool")
681 (description "Antwrap is a Ruby module that wraps the Apache Ant build
682tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
683script.")
684 (home-page "http://rubyforge.org/projects/antwrap/")
685 (license license:expat)))
686
fe1ddad5
RW
687(define-public ruby-atoulme-saikuro
688 (package
689 (name "ruby-atoulme-saikuro")
690 (version "1.2.1")
691 (source (origin
692 (method url-fetch)
693 (uri (rubygems-uri "atoulme-Saikuro" version))
694 (sha256
695 (base32
696 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
697 (build-system ruby-build-system)
698 ;; FIXME: There are no unit tests. The tests are demonstrations of the
699 ;; "saikuro" tool.
700 (arguments `(#:tests? #f))
701 (synopsis "Cyclomatic complexity analyzer")
702 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
703given Ruby source code Saikuro will generate a report listing the cyclomatic
704complexity of each method found. In addition, Saikuro counts the number of
705lines per method and can generate a listing of the number of tokens on each
706line of code.")
707 (home-page "http://www.github.com/atoulme/Saikuro")
708 ;; File headers contain the BSD-3 license and the README.rdoc says that
709 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
710 ;; of the Expat license.
711 (license license:bsd-3)))
712
34138e42
BW
713(define-public ruby-asciidoctor
714 (package
715 (name "ruby-asciidoctor")
9933a8e7 716 (version "1.5.7.1")
34138e42
BW
717 (source
718 (origin
719 (method url-fetch)
720 (uri (rubygems-uri "asciidoctor" version))
721 (sha256
722 (base32
9933a8e7 723 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
724 (build-system ruby-build-system)
725 (arguments
726 `(#:test-target "test:all"
727 #:phases
728 (modify-phases %standard-phases
729 (add-before 'check 'remove-circular-tests
730 (lambda _
731 ;; Remove tests that require circular dependencies to load or pass.
732 (delete-file "test/invoker_test.rb")
733 (delete-file "test/converter_test.rb")
734 (delete-file "test/options_test.rb")
735 #t)))))
736 (native-inputs
737 `(("ruby-minitest" ,ruby-minitest)
738 ("ruby-nokogiri" ,ruby-nokogiri)
739 ("ruby-asciimath" ,ruby-asciimath)
740 ("ruby-coderay" ,ruby-coderay)))
741 (synopsis "Converter from AsciiDoc content to other formats")
742 (description
743 "Asciidoctor is a text processor and publishing toolchain for converting
20860819 744AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 745 (home-page "https://asciidoctor.org")
34138e42
BW
746 (license license:expat)))
747
b88502c9
BW
748(define-public ruby-sporkmonger-rack-mount
749 ;; Testing the addressable gem requires a newer commit than that released, so
750 ;; use an up to date version.
751 (let ((revision "1")
752 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
753 (package
754 (name "ruby-sporkmonger-rack-mount")
755 (version (git-version "0.8.3" revision commit))
756 (source (origin
757 (method git-fetch)
758 (uri (git-reference
759 (url "https://github.com/sporkmonger/rack-mount.git")
760 (commit commit)))
761 (file-name (git-file-name name version))
762 (sha256
763 (base32
764 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
765 (build-system ruby-build-system)
766 (arguments
767 ;; Tests currently fail so disable them.
768 ;; https://github.com/sporkmonger/rack-mount/pull/1
769 `(#:tests? #f))
770 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
771 (synopsis "Stackable dynamic tree based Rack router")
772 (description
773 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
774continue trying routes if the response returns pass. This allows multiple
775routes to be nested or stacked on top of each other.")
776 (home-page "https://github.com/sporkmonger/rack-mount")
777 (license license:expat))))
778
2f9e0b68
RW
779(define-public ruby-ci-reporter
780 (package
781 (name "ruby-ci-reporter")
782 (version "2.0.0")
783 (source (origin
784 (method url-fetch)
785 (uri (rubygems-uri "ci_reporter" version))
786 (sha256
787 (base32
788 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
789 (build-system ruby-build-system)
790 (arguments
791 `(#:test-target "rspec"))
792 (propagated-inputs
793 `(("ruby-builder" ,ruby-builder)))
794 (native-inputs
795 `(("bundler" ,bundler)
796 ("ruby-rspec" ,ruby-rspec)))
797 (synopsis "Generate XML reports of runs test")
798 (description
799 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
800you to generate XML reports of your test runs. The resulting files can be
801read by a continuous integration system that understands Ant's JUnit report
802format.")
803 (home-page "https://github.com/nicksieger/ci_reporter")
804 (license license:expat)))
805
fe5dd5f4
CB
806(define-public ruby-czmq-ffi-gen
807 (package
808 (name "ruby-czmq-ffi-gen")
809 (version "0.13.0")
810 (source
811 (origin
812 (method url-fetch)
813 (uri (rubygems-uri "czmq-ffi-gen" version))
814 (sha256
815 (base32
816 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
817 (build-system ruby-build-system)
818 (arguments
819 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
820 #:phases
821 (modify-phases %standard-phases
822 (add-after 'unpack 'patch-lib_dirs
823 (lambda* (#:key inputs #:allow-other-keys)
824 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
825 (("lib\\_dirs = \\[.*\\]")
826 (string-append "lib_dirs = ['"
827 (assoc-ref inputs "czmq") "/lib"
828 "']")))
829 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
830 (("lib\\_dirs = \\[.*\\]")
831 (string-append "lib_dirs = ['"
832 (assoc-ref inputs "zeromq") "/lib"
833 "']"))))))))
834 (inputs
835 `(("zeromq" ,zeromq)
836 ("czmq" ,czmq)))
837 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
838 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
839 (description
840 "These Ruby bindings are not intended to be directly used, but rather
841used by higher level bindings like those provided by CZTop.")
842 (home-page
843 "https://github.com/paddor/czmq-ffi-gen")
844 (license license:isc)))
845
d0afff26
CB
846(define-public ruby-cztop
847 (package
848 (name "ruby-cztop")
849 (version "0.12.2")
850 (source
851 (origin
852 (method url-fetch)
853 (uri (rubygems-uri "cztop" version))
854 (sha256
855 (base32
856 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
857 (build-system ruby-build-system)
858 (arguments
859 '(#:test-target "spec"
860 #:phases
861 (modify-phases %standard-phases
862 (add-after 'unpack 'patch-lib_paths
863 (lambda* (#:key inputs #:allow-other-keys)
864 (substitute* "lib/cztop/poller/zmq.rb"
865 (("lib\\_paths = \\[.*\\]")
866 (string-append "lib_paths = ['"
867 (assoc-ref inputs "zeromq") "/lib"
868 "']"))))))))
869 (native-inputs
870 `(("bundler" ,bundler)
871 ("ruby-rspec" ,ruby-rspec)))
872 (inputs
873 `(("zeromq" ,zeromq)))
874 (propagated-inputs
875 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
876 (synopsis "CZMQ Ruby bindings")
877 (description
878 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
879CZMQ. The focus of of CZTop is on being easy to use and providing first class
880support for security mechanisms.")
881 (home-page "https://github.com/paddor/cztop")
882 (license license:isc)))
883
b004fb6a
RW
884(define-public ruby-saikuro-treemap
885 (package
886 (name "ruby-saikuro-treemap")
887 (version "0.2.0")
888 (source (origin
889 (method url-fetch)
890 (uri (rubygems-uri "saikuro_treemap" version))
891 (sha256
892 (base32
893 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
894 (build-system ruby-build-system)
895 ;; Some of the tests fail because the generated JSON has keys in a
896 ;; different order. This is a problem with the test suite rather than any
897 ;; of the involved libraries.
898 (arguments `(#:tests? #f))
899 (propagated-inputs
900 `(("ruby-json-pure" ,ruby-json-pure)
901 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
902 (synopsis "Generate complexity treemap based on saikuro analysis")
903 (description
904 "This gem generates a treemap showing the complexity of Ruby code on
905which it is run. It uses Saikuro under the covers to analyze Ruby code
906complexity.")
7bf837fd 907 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
908 (license license:expat)))
909
cef87ed6
CB
910(define-public ruby-options
911 (package
912 (name "ruby-options")
913 (version "2.3.2")
914 (source
915 (origin
916 (method url-fetch)
917 (uri (rubygems-uri "options" version))
918 (sha256
919 (base32
920 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
921 (build-system ruby-build-system)
922 (arguments
923 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
924 #:phases
925 (modify-phases %standard-phases
926 (add-before 'check 'set-LIB
927 (lambda _
928 ;; This is used in the Rakefile, and setting it avoids an issue
929 ;; with running the tests.
fe27238c
CB
930 (setenv "LIB" "options")
931 #t)))))
cef87ed6
CB
932 (synopsis "Ruby library to parse options from *args cleanly")
933 (description
934 "The @code{options} library helps with parsing keyword options in Ruby
935functions.")
936 (home-page "https://github.com/ahoward/options")
937 (license license:ruby)))
938
d64ebebd
BW
939(define-public ruby-erubis
940 (package
941 (name "ruby-erubis")
942 (version "2.7.0")
943 (source
944 (origin
945 (method url-fetch)
946 (uri (rubygems-uri "erubis" version))
947 (sha256
948 (base32
949 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
950 (build-system ruby-build-system)
951 (arguments
952 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
953 (synopsis "Implementation of embedded Ruby (eRuby)")
954 (description
955 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
956features such as multi-language support, auto escaping, auto trimming spaces
957around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
958support.")
959 (home-page "http://www.kuwata-lab.com/erubis/")
960 (license license:expat)))
961
cc53e630
RW
962(define-public ruby-orderedhash
963 (package
964 (name "ruby-orderedhash")
965 (version "0.0.6")
966 (source (origin
967 (method url-fetch)
968 (uri (rubygems-uri "orderedhash" version))
969 (sha256
970 (base32
971 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
972 (build-system ruby-build-system)
973 (arguments
974 '(#:tests? #f)) ; no test suite
975 (synopsis "Ruby library providing an order-preserving hash")
976 (description "Orderedhash is a Ruby library providing a hash
977implementation that preserves the order of items and features some array-like
978extensions.")
979 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
980 (license license:public-domain)))
981
28c5d42d
PP
982(define-public ruby-libxml
983 (package
984 (name "ruby-libxml")
acbc5062 985 (version "3.0.0")
28c5d42d
PP
986 (source
987 (origin
988 (method url-fetch)
989 (uri (rubygems-uri "libxml-ruby" version))
990 (sha256
991 (base32
acbc5062 992 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
993 (build-system ruby-build-system)
994 (inputs
995 `(("zlib" ,zlib)
996 ("libxml2" ,libxml2)))
997 (arguments
998 '(#:tests? #f ; test suite hangs for unknown reason
999 #:gem-flags
1000 (list "--"
1001 (string-append "--with-xml2-include="
1002 (assoc-ref %build-inputs "libxml2")
1003 "/include/libxml2" ))))
1004 (synopsis "Ruby bindings for GNOME Libxml2")
1005 (description "The Libxml-Ruby project provides Ruby language bindings for
1006the GNOME Libxml2 XML toolkit.")
2f3800e5 1007 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1008 (license license:expat)))
1009
8b9bde07
RW
1010(define-public ruby-xml-simple
1011 (package
1012 (name "ruby-xml-simple")
1013 (version "1.1.5")
1014 (source (origin
1015 (method url-fetch)
1016 (uri (rubygems-uri "xml-simple" version))
1017 (sha256
1018 (base32
1019 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1020 (build-system ruby-build-system)
1021 (arguments
1022 '(#:tests? #f)) ; no test suite
1023 (synopsis "Simple Ruby library for XML processing")
1024 (description "This library provides a simple API for XML processing in
1025Ruby.")
1026 (home-page "https://github.com/maik/xml-simple")
1027 (license license:ruby)))
1028
2cb3ab48
RW
1029(define-public ruby-thor
1030 (package
1031 (name "ruby-thor")
2e8cd862 1032 (version "0.19.4")
2cb3ab48
RW
1033 (source (origin
1034 (method url-fetch)
1035 (uri (rubygems-uri "thor" version))
1036 (sha256
1037 (base32
2e8cd862 1038 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
2cb3ab48
RW
1039 (build-system ruby-build-system)
1040 (arguments
1041 '(#:tests? #f)) ; no test suite
1042 (native-inputs
1043 `(("bundler" ,bundler)))
1044 (synopsis "Ruby toolkit for building command-line interfaces")
1045 (description "Thor is a toolkit for building powerful command-line
1046interfaces.")
1047 (home-page "http://whatisthor.com/")
1048 (license license:expat)))
1049
ec79018e
RW
1050(define-public ruby-lumberjack
1051 (package
1052 (name "ruby-lumberjack")
41700efa 1053 (version "1.0.13")
ec79018e
RW
1054 (source (origin
1055 (method url-fetch)
1056 (uri (rubygems-uri "lumberjack" version))
1057 (sha256
1058 (base32
41700efa 1059 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1060 (build-system ruby-build-system)
1061 (native-inputs
8be62d3f
BW
1062 `(("ruby-rspec" ,ruby-rspec)
1063 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1064 (synopsis "Logging utility library for Ruby")
1065 (description "Lumberjack is a simple logging utility that can be a drop in
1066replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1067for automatically rolling log files even with multiple processes writing the
1068same log file.")
7bf837fd 1069 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1070 (license license:expat)))
1071
70b4cf38
RW
1072(define-public ruby-nenv
1073 (package
1074 (name "ruby-nenv")
12313cd0 1075 (version "0.3.0")
70b4cf38
RW
1076 (source (origin
1077 (method url-fetch)
1078 (uri (rubygems-uri "nenv" version))
1079 (sha256
1080 (base32
12313cd0 1081 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1082 (build-system ruby-build-system)
1083 (arguments
1084 `(#:tests? #f)) ; no tests included
1085 (native-inputs
1086 `(("ruby-rspec" ,ruby-rspec)
1087 ("bundler" ,bundler)))
1088 (synopsis "Ruby interface for modifying the environment")
1089 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1090and inspect the environment.")
1091 (home-page "https://github.com/e2/nenv")
1092 (license license:expat)))
1093
8d9e9f28
RW
1094(define-public ruby-permutation
1095 (package
1096 (name "ruby-permutation")
1097 (version "0.1.8")
1098 (source (origin
1099 (method url-fetch)
1100 (uri (rubygems-uri "permutation" version))
1101 (sha256
1102 (base32
1103 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1104 (build-system ruby-build-system)
1105 (arguments
1106 `(#:phases
1107 (modify-phases %standard-phases
1108 (add-after 'unpack 'fix-rakefile
1109 (lambda _
1110 (substitute* "Rakefile"
1111 (("require 'rake/gempackagetask'")
1112 "require 'rubygems/package_task'")
1113 (("include Config") ""))
1114 #t))
1115 (replace 'check
1116 (lambda _
9923d5a4 1117 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1118 (synopsis "Library to perform operations with sequence permutations")
1119 (description "This package provides a Ruby library to perform different
1120operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1121 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1122 (license license:gpl2))) ; GPL 2 only
1123
c5d14d42
RW
1124(define-public ruby-shellany
1125 (package
1126 (name "ruby-shellany")
1127 (version "0.0.1")
1128 (source (origin
1129 (method url-fetch)
1130 (uri (rubygems-uri "shellany" version))
1131 (sha256
1132 (base32
1133 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1134 (build-system ruby-build-system)
1135 (arguments
1136 `(#:test-target "default"
1137 #:phases
1138 (modify-phases %standard-phases
1139 (add-after 'unpack 'fix-version-test
1140 (lambda _
1141 (substitute* "spec/shellany_spec.rb"
1142 (("^RSpec") "require \"shellany\"\nRSpec"))
1143 #t)))))
1144 (native-inputs
1145 `(("ruby-rspec" ,ruby-rspec)
1146 ("ruby-nenv" ,ruby-nenv)
1147 ("bundler" ,bundler)))
1148 (synopsis "Capture command output")
1149 (description "Shellany is a Ruby library providing functions to capture
1150the output produced by running shell commands.")
1151 (home-page "https://rubygems.org/gems/shellany")
1152 (license license:expat)))
1153
d152162f
RW
1154(define-public ruby-notiffany
1155 (package
1156 (name "ruby-notiffany")
a7ca218c 1157 (version "0.1.1")
d152162f
RW
1158 (source (origin
1159 (method url-fetch)
1160 (uri (rubygems-uri "notiffany" version))
1161 (sha256
1162 (base32
a7ca218c 1163 "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx"))))
d152162f
RW
1164 (build-system ruby-build-system)
1165 ;; Tests are not included in the gem.
1166 (arguments `(#:tests? #f))
1167 (propagated-inputs
1168 `(("ruby-shellany" ,ruby-shellany)
1169 ("ruby-nenv" ,ruby-nenv)))
1170 (native-inputs
1171 `(("bundler" ,bundler)))
1172 (synopsis "Wrapper libray for notification libraries")
1173 (description "Notiffany is a Ruby wrapper libray for notification
1174libraries such as Libnotify.")
1175 (home-page "https://github.com/guard/notiffany")
1176 (license license:expat)))
1177
8528365b
RW
1178(define-public ruby-formatador
1179 (package
1180 (name "ruby-formatador")
1181 (version "0.2.5")
1182 (source (origin
1183 (method url-fetch)
1184 (uri (rubygems-uri "formatador" version))
1185 (sha256
1186 (base32
1187 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
1188 (build-system ruby-build-system)
1189 ;; Circular dependency: Tests require ruby-shindo, which requires
1190 ;; ruby-formatador at runtime.
1191 (arguments `(#:tests? #f))
1192 (synopsis "Ruby library to format text on stdout")
1193 (description "Formatador is a Ruby library to format text printed to the
1194standard output stream.")
7bf837fd 1195 (home-page "https://github.com/geemus/formatador")
8528365b
RW
1196 (license license:expat)))
1197
7ac4610f
RW
1198(define-public ruby-shindo
1199 (package
1200 (name "ruby-shindo")
1201 (version "0.3.8")
1202 (source (origin
1203 (method url-fetch)
1204 (uri (rubygems-uri "shindo" version))
1205 (sha256
1206 (base32
1207 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
1208 (build-system ruby-build-system)
1209 (arguments
1210 `(#:test-target "shindo_tests"
1211 #:phases
1212 (modify-phases %standard-phases
1213 (add-after 'unpack 'fix-tests
0b060e34
CB
1214 (lambda _
1215 (substitute* "tests/tests_helper.rb"
1216 (("-rubygems") ""))
1217 (substitute* "Rakefile"
1218 (("system \"shindo") "system \"./bin/shindo")
1219 ;; This test doesn't work, so we disable it.
1220 (("fail \"The build_error test should fail") "#")
1221 ((" -rubygems") ""))
1222 #t)))))
7ac4610f
RW
1223 (propagated-inputs
1224 `(("ruby-formatador" ,ruby-formatador)))
1225 (synopsis "Simple depth first Ruby testing")
1226 (description "Shindo is a simple depth first testing library for Ruby.")
1227 (home-page "https://github.com/geemus/shindo")
1228 (license license:expat)))
1229
f13636f2
RW
1230(define-public ruby-rubygems-tasks
1231 (package
1232 (name "ruby-rubygems-tasks")
1233 (version "0.2.4")
1234 (source (origin
1235 (method url-fetch)
1236 (uri (rubygems-uri "rubygems-tasks" version))
1237 (sha256
1238 (base32
1239 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
1240 (build-system ruby-build-system)
1241 ;; Tests need Internet access.
1242 (arguments `(#:tests? #f))
1243 (native-inputs
1244 `(("ruby-rspec" ,ruby-rspec)
1245 ("ruby-yard" ,ruby-yard)))
1246 (synopsis "Rake tasks for managing and releasing Ruby Gems")
1247 (description "Rubygems-task provides Rake tasks for managing and releasing
1248Ruby Gems.")
1249 (home-page "https://github.com/postmodern/rubygems-tasks")
1250 (license license:expat)))
1251
cb6bc5df
CB
1252(define-public ruby-rubyzip
1253 (package
1254 (name "ruby-rubyzip")
1255 (version "1.2.1")
1256 (source
1257 (origin
1258 (method url-fetch)
1259 (uri (rubygems-uri "rubyzip" version))
1260 (sha256
1261 (base32
1262 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
1263 (build-system ruby-build-system)
1264 (arguments
1265 '(#:phases
1266 (modify-phases %standard-phases
1267 (add-before 'check 'patch-tests
1268 (lambda* (#:key inputs #:allow-other-keys)
1269 (substitute* "test/gentestfiles.rb"
1270 (("/usr/bin/zip")
1271 (string-append
1272 (assoc-ref inputs "zip") "/bin/zip")))
1273 (substitute* "test/input_stream_test.rb"
1274 (("/usr/bin/env ruby") (which "ruby")))
1275 #t)))))
1276 (native-inputs
1277 `(("bundler" ,bundler)
1278 ("ruby-simplecov" ,ruby-simplecov)
1279 ("zip" ,zip)
1280 ("unzip" ,unzip)))
1281 (synopsis "Ruby module is for reading and writing zip files")
1282 (description
1283 "The rubyzip module provides ways to read from and create zip files.")
1284 (home-page "http://github.com/rubyzip/rubyzip")
1285 (license license:bsd-2)))
1286
58b59742
RW
1287(define-public ruby-simplecov-html
1288 (package
1289 (name "ruby-simplecov-html")
53fd476f 1290 (version "0.10.2")
58b59742
RW
1291 (source (origin
1292 (method url-fetch)
1293 (uri (rubygems-uri "simplecov-html" version))
1294 (sha256
1295 (base32
53fd476f 1296 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 1297 (build-system ruby-build-system)
8b749cf3 1298 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
1299 (native-inputs
1300 `(("bundler" ,bundler)))
1301 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1302 (description "This package provides the default HTML formatter for
1303the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1304 (home-page "https://github.com/colszowka/simplecov-html")
1305 (license license:expat)))
1306
a84fa2ad
RW
1307(define-public ruby-simplecov
1308 (package
1309 (name "ruby-simplecov")
1b107245 1310 (version "0.12.0")
a84fa2ad
RW
1311 (source (origin
1312 (method url-fetch)
1313 (uri (rubygems-uri "simplecov" version))
1314 (sha256
1315 (base32
1b107245 1316 "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
a84fa2ad
RW
1317 (build-system ruby-build-system)
1318 ;; Simplecov depends on rubocop for code style checking at build time.
1319 ;; Rubocop needs simplecov at build time.
1320 (arguments `(#:tests? #f))
1321 (propagated-inputs
1322 `(("ruby-json" ,ruby-json)
1323 ("ruby-docile" ,ruby-docile)
1324 ("ruby-simplecov-html" ,ruby-simplecov-html)))
1325 (native-inputs
1326 `(("bundler" ,bundler)))
1327 (synopsis "Code coverage framework for Ruby")
1328 (description "SimpleCov is a code coverage framework for Ruby with a
1329powerful configuration library and automatic merging of coverage across test
1330suites.")
7bf837fd 1331 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
1332 (license license:expat)))
1333
98b87b82
DT
1334(define-public ruby-useragent
1335 (package
1336 (name "ruby-useragent")
3b0e45c8 1337 (version "0.16.8")
98b87b82
DT
1338 (source (origin
1339 (method url-fetch)
e83c6d00 1340 (uri (rubygems-uri "useragent" version))
98b87b82
DT
1341 (sha256
1342 (base32
3b0e45c8 1343 "1139cjqyv1hk1qcw89k81ajjkqyakqgbcyvmfrsmjqi8yn9kgqhq"))))
98b87b82
DT
1344 (build-system ruby-build-system)
1345 (arguments
e83c6d00 1346 '(#:tests? #f)) ; no test suite
98b87b82
DT
1347 (synopsis "HTTP user agent parser for Ruby")
1348 (description "UserAgent is a Ruby library that parses and compares HTTP
1349User Agents.")
1350 (home-page "https://github.com/gshutler/useragent")
1351 (license license:expat)))
96086cc5
DT
1352
1353(define-public ruby-bacon
1354 (package
1355 (name "ruby-bacon")
e83c6d00 1356 (version "1.2.0")
96086cc5
DT
1357 (source (origin
1358 (method url-fetch)
e83c6d00 1359 (uri (rubygems-uri "bacon" version))
96086cc5
DT
1360 (sha256
1361 (base32
e83c6d00 1362 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 1363 (build-system ruby-build-system)
96086cc5
DT
1364 (synopsis "Small RSpec clone")
1365 (description "Bacon is a small RSpec clone providing all essential
1366features.")
1367 (home-page "https://github.com/chneukirchen/bacon")
1368 (license license:expat)))
de59d316 1369
a8d2bf3c
CB
1370(define-public ruby-bacon-bits
1371 (package
1372 (name "ruby-bacon-bits")
1373 (version "0.1.0")
1374 (source
1375 (origin
1376 (method url-fetch)
1377 (uri (rubygems-uri "bacon-bits" version))
1378 (sha256
1379 (base32
1380 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
1381 (build-system ruby-build-system)
1382 (arguments
1383 ;; No tests
1384 '(#:tests? #f))
1385 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
1386 (synopsis "Extensions to Bacon, for disabling tests, before and after
1387blocks and more")
1388 (description
1389 "This extends the bacon testing framework with useful extensions to
1390disable tests, have before and after blocks that run once and more.")
1391 (home-page "https://github.com/cldwalker/bacon-bits")
1392 (license license:expat)))
1393
e259bdf0
DT
1394(define-public ruby-connection-pool
1395 (package
1396 (name "ruby-connection-pool")
58021db4 1397 (version "2.2.2")
e259bdf0
DT
1398 (source (origin
1399 (method url-fetch)
e83c6d00 1400 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
1401 (sha256
1402 (base32
58021db4 1403 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
1404 (build-system ruby-build-system)
1405 (native-inputs
1406 `(("bundler" ,bundler)))
1407 (synopsis "Generic connection pool for Ruby")
1408 (description "Connection_pool provides a generic connection pooling
1409interface for Ruby programs.")
1410 (home-page "https://github.com/mperham/connection_pool")
1411 (license license:expat)))
4c0aeb44
DT
1412
1413(define-public ruby-net-http-persistent
1414 (package
1415 (name "ruby-net-http-persistent")
185ea446 1416 (version "3.0.0")
4c0aeb44
DT
1417 (source (origin
1418 (method url-fetch)
e83c6d00 1419 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
1420 (sha256
1421 (base32
185ea446 1422 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 1423 (build-system ruby-build-system)
4c0aeb44
DT
1424 (native-inputs
1425 `(("ruby-connection-pool" ,ruby-connection-pool)
1426 ("ruby-hoe" ,ruby-hoe)))
1427 (synopsis "Persistent HTTP connection manager")
1428 (description "Net::HTTP::Persistent manages persistent HTTP connections
1429using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
1430 (home-page "https://github.com/drbrain/net-http-persistent")
1431 (license license:expat)))
afbbdf77 1432
f88bacaf
RW
1433(define-public ruby-power-assert
1434 (package
1435 (name "ruby-power-assert")
3918146b 1436 (version "0.2.7")
f88bacaf
RW
1437 (source (origin
1438 (method url-fetch)
1439 (uri (rubygems-uri "power_assert" version))
1440 (sha256
1441 (base32
3918146b 1442 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
1443 (build-system ruby-build-system)
1444 (native-inputs
1445 `(("bundler" ,bundler)))
1446 (synopsis "Assert library with descriptive assertion messages")
1447 (description "Power-assert is an assertion library providing descriptive
1448assertion messages for tests.")
1449 (home-page "https://github.com/k-tsj/power_assert")
1450 (license (list license:bsd-2 license:ruby))))
1451
347eb21e
RW
1452(define-public ruby-locale
1453 (package
1454 (name "ruby-locale")
1455 (version "2.1.2")
1456 (source (origin
1457 (method url-fetch)
1458 (uri (rubygems-uri "locale" version))
1459 (sha256
1460 (base32
1461 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
1462 (build-system ruby-build-system)
1463 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1464 ;; which needs ruby-gettext, which needs ruby-locale. To break the
1465 ;; dependency cycle we disable tests.
1466 (arguments `(#:tests? #f))
1467 (native-inputs
1468 `(("bundler" ,bundler)
1469 ("ruby-yard" ,ruby-yard)))
1470 (synopsis "Ruby library providing basic localization APIs")
1471 (description
1472 "Ruby-Locale is the pure ruby library which provides basic APIs for
1473localization.")
1474 (home-page "https://github.com/ruby-gettext/locale")
1475 (license (list license:lgpl3+ license:ruby))))
1476
e2333ea3
RW
1477(define-public ruby-text
1478 (package
1479 (name "ruby-text")
1480 (version "1.3.1")
1481 (source (origin
1482 (method url-fetch)
1483 (uri (rubygems-uri "text" version))
1484 (sha256
1485 (base32
1486 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
1487 (build-system ruby-build-system)
1488 (synopsis "Collection of text algorithms for Ruby")
1489 (description
1490 "This package provides a collection of text algorithms: Levenshtein,
1491Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 1492 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
1493 (license license:expat)))
1494
c1f52261
RW
1495(define-public ruby-gettext
1496 (package
1497 (name "ruby-gettext")
1498 (version "3.1.7")
1499 (source (origin
1500 (method url-fetch)
1501 (uri (rubygems-uri "gettext" version))
1502 (sha256
1503 (base32
1504 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
1505 (build-system ruby-build-system)
1506 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
1507 ;; which needs ruby-gettext. To break the dependency cycle we disable
1508 ;; tests.
1509 (arguments `(#:tests? #f))
1510 (propagated-inputs
1511 `(("ruby-locale" ,ruby-locale)
1512 ("ruby-text" ,ruby-text)))
1513 (native-inputs
1514 `(("bundler" ,bundler)
1515 ("ruby-yard" ,ruby-yard)))
1516 (synopsis "GNU gettext-like program for Ruby")
1517 (description
1518 "Gettext is a GNU gettext-like program for Ruby. The catalog
1519file (po-file) used is the same as that used by GNU gettext, allowing you to
1520use GNU gettext tools for maintenance.")
2f3800e5 1521 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
1522 (license (list license:lgpl3+ license:ruby))))
1523
cc5aeb8c
RW
1524(define-public ruby-packnga
1525 (package
1526 (name "ruby-packnga")
1d60c436 1527 (version "1.0.4")
cc5aeb8c
RW
1528 (source (origin
1529 (method url-fetch)
1530 (uri (rubygems-uri "packnga" version))
1531 (sha256
1532 (base32
1d60c436 1533 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
1534 (build-system ruby-build-system)
1535 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
1536 ;; To break the dependency cycle we disable tests.
1537 (arguments `(#:tests? #f))
1538 (propagated-inputs
1539 `(("ruby-gettext" ,ruby-gettext)
1540 ("ruby-yard" ,ruby-yard)))
1541 (native-inputs
1542 `(("bundler" ,bundler)))
1543 (synopsis "Utility library to package internationalized libraries")
1544 (description
1545 "Packnga is a library to translate to many languages using YARD.")
1546 (home-page "http://ranguba.org/packnga/")
1547 (license license:lgpl2.0+)))
1548
3383f5bd
RW
1549(define-public ruby-test-unit
1550 (package
1551 (name "ruby-test-unit")
d74d96e4 1552 (version "3.2.5")
3383f5bd
RW
1553 (source (origin
1554 (method url-fetch)
1555 (uri (rubygems-uri "test-unit" version))
1556 (sha256
1557 (base32
d74d96e4 1558 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
1559 (build-system ruby-build-system)
1560 (propagated-inputs
1561 `(("ruby-power-assert" ,ruby-power-assert)))
1562 (native-inputs
1563 `(("bundler" ,bundler)
1564 ("ruby-packnga" ,ruby-packnga)
1565 ("ruby-yard" ,ruby-yard)))
1566 (synopsis "Unit testing framework for Ruby")
1567 (description "@code{Test::Unit} is unit testing framework for Ruby, based
1568on xUnit principles. These were originally designed by Kent Beck, creator of
1569extreme programming software development methodology, for Smalltalk's SUnit.
1570It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 1571 (home-page "https://test-unit.github.io/")
3383f5bd
RW
1572 (license (list license:psfl license:ruby))))
1573
25d6d49b
RW
1574(define-public ruby-metaclass
1575 (package
1576 (name "ruby-metaclass")
1577 (version "0.0.4")
1578 (source (origin
1579 (method url-fetch)
1580 (uri (rubygems-uri "metaclass" version))
1581 (sha256
1582 (base32
1583 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
1584 (build-system ruby-build-system)
1585 (arguments
1586 `(#:phases
1587 (modify-phases %standard-phases
1588 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 1589 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1590 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1591 (substitute* "Rakefile"
1592 (("t\\.libs << \"test\"" line)
1593 (string-append line "; t.libs << \""
3cb3fa67 1594 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1595 "/gems/test-unit-"
1596 ,(package-version ruby-test-unit)
1597 "/lib\""))))
1598 #t)))))
25d6d49b
RW
1599 (native-inputs
1600 `(("bundler" ,bundler)
1601 ("ruby-test-unit" ,ruby-test-unit)))
1602 (synopsis "Ruby library adding metaclass method to all objects")
1603 (description
1604 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
1605objects.")
7bf837fd 1606 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
1607 (license license:expat)))
1608
21f7b7bd
RW
1609(define-public ruby-blankslate
1610 (package
1611 (name "ruby-blankslate")
1612 (version "3.1.3")
1613 (source (origin
1614 (method url-fetch)
1615 (uri (rubygems-uri "blankslate" version))
1616 (sha256
1617 (base32
1618 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
1619 (build-system ruby-build-system)
1620 (arguments
1621 `(#:phases
1622 (modify-phases %standard-phases
1623 (replace 'check
9923d5a4 1624 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
1625 (native-inputs
1626 `(("bundler" ,bundler)
1627 ("ruby-rspec" ,ruby-rspec)))
1628 (synopsis "Abstract base class with no predefined methods")
1629 (description
1630 "BlankSlate provides an abstract base class with no predefined
1631methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
1632as a base class when writing classes that depend upon
1633@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 1634 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
1635 (license license:expat)))
1636
afdb437c
CB
1637(define-public ruby-bond
1638 (package
1639 (name "ruby-bond")
1640 (version "0.5.1")
1641 (source
1642 (origin
1643 (method url-fetch)
1644 (uri (rubygems-uri "bond" version))
1645 (sha256
1646 (base32
1647 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
1648 (build-system ruby-build-system)
1649 (native-inputs
1650 `(("ruby-bacon" ,ruby-bacon)
1651 ("ruby-bacon-bits" ,ruby-bacon-bits)
1652 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
1653 (synopsis "Bond can provide custom autocompletion for arguments, methods
1654and more")
1655 (description
1656 "Bond can autocomplete argument(s) to methods, uniquely completing per
1657module, per method and per argument. Bond provides a configuration system and
1658a DSL for creating custom completions and completion rules. Bond can also
1659load completions that ship with gems. Bond is able to offer more than irb's
1660completion since it uses the full line of input when completing as opposed to
1661irb's last-word approach.")
1662 (home-page "http://tagaholic.me/bond/")
1663 (license license:expat)))
1664
4016ba3f
RW
1665(define-public ruby-instantiator
1666 (package
1667 (name "ruby-instantiator")
688c9076 1668 (version "0.0.7")
4016ba3f
RW
1669 (source (origin
1670 (method url-fetch)
1671 (uri (rubygems-uri "instantiator" version))
1672 (sha256
1673 (base32
688c9076 1674 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
1675 (build-system ruby-build-system)
1676 (arguments
1677 `(#:phases
1678 (modify-phases %standard-phases
1679 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 1680 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1681 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1682 (substitute* "Rakefile"
1683 (("t\\.libs << \"test\"" line)
1684 (string-append line "; t.libs << \""
3cb3fa67 1685 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1686 "/gems/test-unit-"
1687 ,(package-version ruby-test-unit)
1688 "/lib\""))))
1689 #t)))))
4016ba3f
RW
1690 (propagated-inputs
1691 `(("ruby-blankslate" ,ruby-blankslate)))
1692 (native-inputs
1693 `(("bundler" ,bundler)
1694 ("ruby-test-unit" ,ruby-test-unit)))
1695 (synopsis "Instantiate an arbitrary Ruby class")
1696 (description
1697 "Instantiator lets you instantiate an arbitrary Ruby class without
1698knowing anything about the constructor.")
1699 (home-page "https://github.com/floehopper/instantiator")
1700 (license license:expat)))
1701
97aee8d3
RW
1702(define-public ruby-introspection
1703 (package
1704 (name "ruby-introspection")
98ff58a5 1705 (version "0.0.4")
97aee8d3
RW
1706 (source (origin
1707 (method url-fetch)
1708 (uri (rubygems-uri "introspection" version))
1709 (sha256
1710 (base32
98ff58a5 1711 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
1712 (build-system ruby-build-system)
1713 (arguments
1714 `(#:phases
1715 (modify-phases %standard-phases
1716 (add-after 'unpack 'add-test-unit-to-search-path
1717 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1718 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1719 (substitute* "Rakefile"
1720 (("t\\.libs << \"test\"" line)
1721 (string-append line "; t.libs << \""
3cb3fa67 1722 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1723 "/gems/test-unit-"
1724 ,(package-version ruby-test-unit)
1725 "/lib\""))))
97aee8d3
RW
1726 #t)))))
1727 (propagated-inputs
1728 `(("ruby-instantiator" ,ruby-instantiator)
1729 ("ruby-metaclass" ,ruby-metaclass)))
1730 (native-inputs
1731 `(("bundler" ,bundler)
1732 ("ruby-blankslate" ,ruby-blankslate)
1733 ("ruby-test-unit" ,ruby-test-unit)))
1734 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
1735 (description
1736 "Introspection provides tools to inspect the hierarchy of method
1737definitions on a Ruby object.")
1738 (home-page "https://github.com/floehopper/introspection")
1739 (license license:expat)))
1740
d93062fd
RW
1741(define-public ruby-redcarpet
1742 (package
1743 (name "ruby-redcarpet")
5ca48923 1744 (version "3.4.0")
d93062fd
RW
1745 (source (origin
1746 (method url-fetch)
1747 (uri (rubygems-uri "redcarpet" version))
1748 (sha256
1749 (base32
5ca48923 1750 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
d93062fd
RW
1751 (build-system ruby-build-system)
1752 (arguments
1753 `(#:phases
1754 (modify-phases %standard-phases
1755 ;; The gem archive does not include the conformance tests.
1756 (add-after 'unpack 'disable-conformance-tests
1757 (lambda _
1758 (substitute* "Rakefile"
1759 (("task :test => %w\\[test:unit test:conformance\\]")
1760 "task :test => %w[test:unit]"))
1761 #t)))))
1762 (native-inputs
1763 `(("bundler" ,bundler)
1764 ("ruby-test-unit" ,ruby-test-unit)
1765 ("ruby-rake-compiler" ,ruby-rake-compiler)))
1766 (synopsis "Extensible Markdown to (X)HTML converter")
1767 (description
1768 "Redcarpet is an extensible Ruby library for Markdown processing and
1769conversion to (X)HTML.")
7bf837fd 1770 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
1771 (license license:expat)))
1772
4f2a52ae
RW
1773(define-public ruby-mocha
1774 (package
1775 (name "ruby-mocha")
1776 (version "1.1.0")
1777 (source (origin
1778 (method url-fetch)
1779 (uri (rubygems-uri "mocha" version))
1780 (sha256
1781 (base32
1782 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
1783 (build-system ruby-build-system)
1784 (arguments
1785 `(#:phases
1786 (modify-phases %standard-phases
1787 (add-after 'unpack 'add-test-unit-to-search-path
1788 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 1789 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
1790 (substitute* "Rakefile"
1791 (("t\\.libs << 'test'" line)
1792 (string-append line "; t.libs << \""
3cb3fa67 1793 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
1794 "/gems/test-unit-"
1795 ,(package-version ruby-test-unit)
1796 "/lib\""))))
4f2a52ae
RW
1797 #t))
1798 (add-before 'check 'use-latest-redcarpet
1799 (lambda _
1800 (substitute* "mocha.gemspec"
71596c3c
BW
1801 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
1802 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
1803 #t))
1804 (add-before 'check 'hardcode-version
1805 (lambda _
1806 ;; Mocha is undefined at build time
1807 (substitute* "Rakefile"
1808 (("#\\{Mocha::VERSION\\}") ,version))
1809 #t))
1810 (add-before 'check 'remove-failing-test
1811 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
1812 (lambda _
1813 (delete-file "test/acceptance/stubbing_nil_test.rb")
1814 #t)))))
1815 (propagated-inputs
1816 `(("ruby-metaclass" ,ruby-metaclass)))
1817 (native-inputs
1818 `(("bundler" ,bundler)
1819 ("ruby-yard" ,ruby-yard)
1820 ("ruby-introspection" ,ruby-introspection)
1821 ("ruby-test-unit" ,ruby-test-unit)
1822 ("ruby-redcarpet" ,ruby-redcarpet)))
1823 (synopsis "Mocking and stubbing library for Ruby")
1824 (description
1825 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
1826allows mocking and stubbing of methods on real (non-mock) classes.")
1827 (home-page "http://gofreerange.com/mocha/docs")
1828 (license license:expat)))
1829
cf646acf
CB
1830(define-public ruby-mocha-on-bacon
1831 (package
1832 (name "ruby-mocha-on-bacon")
1833 (version "0.2.3")
1834 (source
1835 (origin
1836 (method url-fetch)
1837 (uri (rubygems-uri "mocha-on-bacon" version))
1838 (sha256
1839 (base32
1840 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
1841 (build-system ruby-build-system)
1842 (arguments
1843 ;; rubygems.org release missing tests
1844 '(#:tests? #f))
1845 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
1846 (synopsis "Mocha adapter for Bacon")
1847 (description
1848 "This package provides a Mocha adapter for Bacon, allowing you to use the
1849Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
1850 (home-page
1851 "https://github.com/alloy/mocha-on-bacon")
1852 (license license:expat)))
1853
2c84ba7e
RW
1854(define-public ruby-net-ssh
1855 (package
1856 (name "ruby-net-ssh")
5803f872 1857 (version "4.2.0")
2c84ba7e
RW
1858 (source (origin
1859 (method url-fetch)
1860 (uri (rubygems-uri "net-ssh" version))
1861 (sha256
1862 (base32
5803f872 1863 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
1864 (build-system ruby-build-system)
1865 (native-inputs
a7938625
MB
1866 `(("bundler" ,bundler)
1867 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
1868 ("ruby-test-unit" ,ruby-test-unit)))
1869 (synopsis "Ruby implementation of the SSH2 client protocol")
1870 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
1871client protocol. It allows you to write programs that invoke and interact
1872with processes on remote servers, via SSH2.")
1873 (home-page "https://github.com/net-ssh/net-ssh")
1874 (license license:expat)))
1875
d38755cb
DM
1876(define-public ruby-net-scp
1877 (package
1878 (name "ruby-net-scp")
1879 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
1880 (version "1.2.2.rc2")
1881 (source
1882 (origin
1883 (method url-fetch)
1884 (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
1885 version ".tar.gz"))
1886 (sha256
1887 (base32
1888 "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
1889 (build-system ruby-build-system)
1890 (native-inputs
1891 `(("bundler" ,bundler)
1892 ("ruby-test-unit" ,ruby-test-unit)
1893 ("ruby-mocha" ,ruby-mocha)))
1894 (propagated-inputs
1895 `(("ruby-net-ssh" ,ruby-net-ssh)))
1896 (synopsis "Pure-Ruby SCP client library")
1897 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
1898client protocol.")
1899 (home-page "https://github.com/net-ssh/net-scp")
1900 (license license:expat)))
1901
2206e948
DT
1902(define-public ruby-minitest
1903 (package
1904 (name "ruby-minitest")
483846ac 1905 (version "5.10.3")
2206e948 1906 (source (origin
e83c6d00
DT
1907 (method url-fetch)
1908 (uri (rubygems-uri "minitest" version))
2206e948
DT
1909 (sha256
1910 (base32
483846ac 1911 "05521clw19lrksqgvg2kmm025pvdhdaniix52vmbychrn2jm7kz2"))))
2206e948 1912 (build-system ruby-build-system)
2206e948
DT
1913 (native-inputs
1914 `(("ruby-hoe" ,ruby-hoe)))
1915 (synopsis "Small test suite library for Ruby")
1916 (description "Minitest provides a complete suite of Ruby testing
1917facilities supporting TDD, BDD, mocking, and benchmarking.")
1918 (home-page "https://github.com/seattlerb/minitest")
1919 (license license:expat)))
1920
1db6e09f
RW
1921;; This is the last release of Minitest 4, which is used by some packages.
1922(define-public ruby-minitest-4
1923 (package (inherit ruby-minitest)
1924 (version "4.7.5")
1925 (source (origin
1926 (method url-fetch)
1927 (uri (rubygems-uri "minitest" version))
1928 (sha256
1929 (base32
1930 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
1931 (arguments
1932 `(#:phases
1933 (modify-phases %standard-phases
1934 (add-after 'unpack 'remove-unsupported-method
1935 (lambda _
1936 (substitute* "Rakefile"
1937 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
1938 #t))
1939 (add-after 'build 'exclude-failing-tests
1940 (lambda _
1941 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
1942 ;; Fixnum.
1943 (delete-file "test/minitest/test_minitest_spec.rb")
1944 #t)))))))
1db6e09f 1945
35130835
DT
1946(define-public ruby-minitest-sprint
1947 (package
1948 (name "ruby-minitest-sprint")
1949 (version "1.1.0")
1950 (source (origin
e83c6d00
DT
1951 (method url-fetch)
1952 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
1953 (sha256
1954 (base32
e83c6d00 1955 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 1956 (build-system ruby-build-system)
35130835
DT
1957 (native-inputs
1958 `(("ruby-hoe" ,ruby-hoe)
1959 ("ruby-minitest" ,ruby-minitest)))
1960 (synopsis "Fast test suite runner for minitest")
1961 (description "Minitest-sprint is a test runner for minitest that makes it
1962easier to re-run individual failing tests.")
1963 (home-page "https://github.com/seattlerb/minitest-sprint")
1964 (license license:expat)))
1965
0808e361
DT
1966(define-public ruby-minitest-bacon
1967 (package
1968 (name "ruby-minitest-bacon")
6f9652b0 1969 (version "1.0.3")
0808e361 1970 (source (origin
e83c6d00
DT
1971 (method url-fetch)
1972 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
1973 (sha256
1974 (base32
6f9652b0 1975 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 1976 (build-system ruby-build-system)
0808e361
DT
1977 (native-inputs
1978 `(("ruby-hoe" ,ruby-hoe)))
1979 (inputs
1980 `(("ruby-minitest" ,ruby-minitest)))
1981 (synopsis "Bacon compatibility library for minitest")
1982 (description "Minitest-bacon extends minitest with bacon-like
1983functionality, making it easier to migrate test suites from bacon to minitest.")
1984 (home-page "https://github.com/seattlerb/minitest-bacon")
1985 (license license:expat)))
1986
39dc0eb5
BW
1987(define-public ruby-minitest-focus
1988 (package
1989 (name "ruby-minitest-focus")
1990 (version "1.1.2")
1991 (source
1992 (origin
1993 (method url-fetch)
1994 (uri (rubygems-uri "minitest-focus" version))
1995 (sha256
1996 (base32
1997 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
1998 (build-system ruby-build-system)
1999 (propagated-inputs
2000 `(("ruby-minitest" ,ruby-minitest)))
2001 (native-inputs
2002 `(("ruby-hoe" ,ruby-hoe)))
2003 (synopsis "Allows a few specific tests to be focused on")
2004 (description
2005 "@code{minitest-focus} gives the ability focus on a few tests with ease
2006without having to use command-line arguments. It introduces a @code{focus}
2007class method for use in testing classes, specifying that the next defined test
2008is to be run.")
2009 (home-page "https://github.com/seattlerb/minitest-focus")
2010 (license license:expat)))
2011
99fc5cd5
BW
2012(define-public ruby-minitest-pretty-diff
2013 ;; Use git reference because gem is out of date and does not contain testing
2014 ;; script. There are no releases on GitHub.
2015 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
2016 (package
2017 (name "ruby-minitest-pretty-diff")
2018 (version (string-append "0.1-1." (string-take commit 8)))
2019 (source (origin
2020 (method git-fetch)
2021 (uri (git-reference
2022 (url "https://github.com/adammck/minitest-pretty_diff.git")
2023 (commit commit)))
2024 (file-name (string-append name "-" version "-checkout"))
2025 (sha256
2026 (base32
2027 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
2028 (build-system ruby-build-system)
2029 (arguments
2030 `(#:phases
2031 (modify-phases %standard-phases
2032 (replace 'check
2033 (lambda _
9923d5a4 2034 (invoke "script/test"))))))
99fc5cd5
BW
2035 (native-inputs
2036 `(("bundler" ,bundler)
2037 ("ruby-turn" ,ruby-turn)))
2038 (synopsis "Pretty-print hashes and arrays in MiniTest")
2039 (description
2040 "@code{minitest-pretty_diff} monkey-patches
2041@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
2042diffing them. This makes it easier to spot differences between nested
2043structures when tests fail.")
2044 (home-page "https://github.com/adammck/minitest-pretty_diff")
2045 (license license:expat))))
2046
685d0d2f
BW
2047(define-public ruby-minitest-moar
2048 (package
2049 (name "ruby-minitest-moar")
2050 (version "0.0.4")
2051 (source
2052 (origin
2053 (method url-fetch)
2054 (uri (rubygems-uri "minitest-moar" version))
2055 (sha256
2056 (base32
2057 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
2058 (build-system ruby-build-system)
2059 (arguments
2060 `(#:phases
2061 (modify-phases %standard-phases
2062 (add-before 'check 'clean-dependencies
2063 (lambda _
2064 ;; Remove all gems defined in the Gemfile because these are not
2065 ;; truly needed.
2066 (substitute* "Gemfile"
2067 (("gem .*") ""))
2068 ;; Remove byebug as not needed to run tests.
2069 (substitute* "test/test_helper.rb"
2070 (("require 'byebug'") ""))
2071 #t)))))
2072 (native-inputs
2073 `(("bundler" ,bundler)
2074 ("ruby-minitest" ,ruby-minitest)))
2075 (synopsis "Extra features and changes to MiniTest")
2076 (description "@code{MiniTest Moar} add some additional features and
2077changes some default behaviours in MiniTest. For instance, Moar replaces the
2078MiniTest @code{Object#stub} with a global @code{stub} method.")
2079 (home-page "https://github.com/dockyard/minitest-moar")
2080 (license license:expat)))
2081
e07ef1d6
BW
2082(define-public ruby-minitest-bonus-assertions
2083 (package
2084 (name "ruby-minitest-bonus-assertions")
c9e261b7 2085 (version "3.0")
e07ef1d6
BW
2086 (source
2087 (origin
2088 (method url-fetch)
2089 (uri (rubygems-uri "minitest-bonus-assertions" version))
2090 (sha256
2091 (base32
c9e261b7 2092 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
2093 (build-system ruby-build-system)
2094 (arguments
2095 `(#:phases
2096 (modify-phases %standard-phases
2097 (add-before 'check 'clean-dependencies
2098 (lambda _
2099 ;; Remove unneeded require statement that would entail another
2100 ;; dependency.
2101 (substitute* "test/minitest_config.rb"
2102 (("require 'minitest/bisect'") ""))
2103 #t)))))
2104 (native-inputs
2105 `(("ruby-hoe" ,ruby-hoe)
2106 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
2107 ("ruby-minitest-focus" ,ruby-minitest-focus)
2108 ("ruby-minitest-moar" ,ruby-minitest-moar)))
2109 (synopsis "Bonus assertions for @code{Minitest}")
2110 (description
2111 "Minitest bonus assertions provides extra MiniTest assertions. For
2112instance, it provides @code{assert_true}, @code{assert_false} and
2113@code{assert_set_equal}.")
2114 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
2115 (license license:expat)))
2116
e582fa93
BW
2117(define-public ruby-minitest-rg
2118 (package
2119 (name "ruby-minitest-rg")
2120 (version "5.2.0")
2121 (source
2122 (origin
2123 (method url-fetch)
2124 (uri (rubygems-uri "minitest-rg" version))
2125 (sha256
2126 (base32
2127 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
2128 (build-system ruby-build-system)
2129 (arguments
2130 ;; Some tests fail even outside Guix, so disable tests.
2131 ;; https://github.com/blowmage/minitest-rg/issues/12
2132 ;; https://github.com/blowmage/minitest-rg/pull/13
2133 `(#:tests? #f))
2134 (propagated-inputs
2135 `(("ruby-minitest" ,ruby-minitest)))
2136 (synopsis "Coloured output for Minitest")
2137 (description
2138 "@code{minitest-rg} changes the colour of the output from Minitest.")
2139 (home-page "http://blowmage.com/minitest-rg")
2140 (license license:expat)))
2141
2a96dbe6
BW
2142(define-public ruby-minitest-hooks
2143 (package
2144 (name "ruby-minitest-hooks")
eaaf8b12 2145 (version "1.4.2")
2a96dbe6
BW
2146 (source
2147 (origin
2148 (method url-fetch)
2149 (uri (rubygems-uri "minitest-hooks" version))
2150 (sha256
2151 (base32
eaaf8b12 2152 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
2153 (build-system ruby-build-system)
2154 (arguments
2155 '(#:test-target "spec"))
2156 (native-inputs
2157 `(("ruby-sequel" ,ruby-sequel)
2158 ("ruby-sqlite3" ,ruby-sqlite3)))
2159 (synopsis "Hooks for the minitest framework")
2160 (description
2161 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
2162@code{around_all} hooks for Minitest. This allows, for instance, running each
2163suite of specs inside a database transaction, running each spec inside its own
2164savepoint inside that transaction. This can significantly speed up testing
2165for specs that share expensive database setup code.")
7bf837fd 2166 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
2167 (license license:expat)))
2168
afbbdf77
DT
2169(define-public ruby-daemons
2170 (package
2171 (name "ruby-daemons")
f03153db 2172 (version "1.2.5")
afbbdf77
DT
2173 (source (origin
2174 (method url-fetch)
e83c6d00 2175 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
2176 (sha256
2177 (base32
f03153db 2178 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
2179 (build-system ruby-build-system)
2180 (arguments
2181 `(#:tests? #f)) ; no test suite
2182 (synopsis "Daemonize Ruby programs")
2183 (description "Daemons provides a way to wrap existing Ruby scripts to be
2184run as a daemon and to be controlled by simple start/stop/restart commands.")
2185 (home-page "https://github.com/thuehlinger/daemons")
2186 (license license:expat)))
b03eb6ac
CB
2187
2188(define-public ruby-data_uri
2189 (package
2190 (name "ruby-data_uri")
2191 (version "0.1.0")
2192 (source
2193 (origin
2194 (method url-fetch)
2195 (uri (rubygems-uri "data_uri" version))
2196 (sha256
2197 (base32
2198 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
2199 (build-system ruby-build-system)
2200 (synopsis "URI class for parsing data URIs")
2201 (description
2202 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
2203embedded inside a URI. The URI::Data class provides support for parsing these
2204URIs using the normal URI.parse method.")
2205 (home-page "https://github.com/dball/data_uri")
2206 (license license:expat)))
66e20863
DT
2207
2208(define-public ruby-git
2209 (package
2210 (name "ruby-git")
ceaff59e 2211 (version "1.3.0")
66e20863
DT
2212 (source (origin
2213 (method url-fetch)
e83c6d00 2214 (uri (rubygems-uri "git" version))
66e20863
DT
2215 (sha256
2216 (base32
ceaff59e 2217 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
2218 (build-system ruby-build-system)
2219 (arguments
e83c6d00
DT
2220 `(#:tests? #f ; no tests
2221 #:phases (modify-phases %standard-phases
2222 (add-after 'install 'patch-git-binary
2223 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
2224 ;; Make the default git binary an absolute path to the
2225 ;; store.
e83c6d00
DT
2226 (let ((git (string-append (assoc-ref inputs "git")
2227 "/bin/git"))
3cb3fa67
CB
2228 (config (string-append
2229 (assoc-ref outputs "out")
2230 "/lib/ruby/vendor_ruby/gems/git-"
2231 ,version "/lib/git/config.rb")))
e83c6d00 2232 (substitute* (list config)
66e20863
DT
2233 (("'git'")
2234 (string-append "'" git "'")))
e83c6d00 2235 #t))))))
66e20863
DT
2236 (inputs
2237 `(("git" ,git)))
2238 (synopsis "Ruby wrappers for Git")
2239 (description "Ruby/Git is a Ruby library that can be used to create, read
2240and manipulate Git repositories by wrapping system calls to the git binary.")
2241 (home-page "https://github.com/schacon/ruby-git")
2242 (license license:expat)))
71d3e2c2
DT
2243
2244(define-public ruby-slop
2245 (package
2246 (name "ruby-slop")
d14e5eaa 2247 (version "4.5.0")
71d3e2c2
DT
2248 (source (origin
2249 (method url-fetch)
e83c6d00 2250 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
2251 (sha256
2252 (base32
d14e5eaa 2253 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
2254 (build-system ruby-build-system)
2255 (native-inputs
2256 `(("ruby-minitest" ,ruby-minitest)))
2257 (synopsis "Ruby command line option parser")
2258 (description "Slop provides a Ruby domain specific language for gathering
2259options and parsing command line flags.")
2260 (home-page "https://github.com/leejarvis/slop")
2261 (license license:expat)))
e778a549 2262
5337f8b9
DT
2263(define-public ruby-slop-3
2264 (package (inherit ruby-slop)
2265 (version "3.6.0")
2266 (source (origin
2267 (method url-fetch)
2268 (uri (rubygems-uri "slop" version))
2269 (sha256
2270 (base32
2271 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
2272
e778a549
DT
2273(define-public ruby-multipart-post
2274 (package
2275 (name "ruby-multipart-post")
2276 (version "2.0.0")
2277 (source (origin
2278 (method url-fetch)
e83c6d00 2279 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
2280 (sha256
2281 (base32
e83c6d00 2282 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
2283 (build-system ruby-build-system)
2284 (native-inputs
2285 `(("bundler" ,bundler)))
2286 (synopsis "Multipart POST library for Ruby")
2287 (description "Multipart-Post Adds multipart POST capability to Ruby's
2288net/http library.")
2289 (home-page "https://github.com/nicksieger/multipart-post")
2290 (license license:expat)))
f8da3af0 2291
9a97e7ce
CB
2292(define-public ruby-multi-json
2293 (package
2294 (name "ruby-multi-json")
1b6f5475 2295 (version "1.13.1")
9a97e7ce
CB
2296 (source
2297 (origin
2298 (method url-fetch)
1b6f5475
BW
2299 ;; Tests are not distributed at rubygems.org so download from GitHub
2300 ;; instead.
2301 (uri (string-append "https://github.com/intridea/multi_json/archive/v"
2302 version ".tar.gz"))
2303 (file-name (string-append name "-" version ".tar.gz"))
9a97e7ce
CB
2304 (sha256
2305 (base32
1b6f5475 2306 "1s64xqvrnrxmb59v6b2kchnisawg5ai9ky1w60dy6z6ws9la1xv4"))))
9a97e7ce
CB
2307 (build-system ruby-build-system)
2308 (arguments
1b6f5475
BW
2309 `(#:phases
2310 (modify-phases %standard-phases
2311 (add-after 'unpack 'remove-signing-key-reference
2312 (lambda _
2313 (substitute* "multi_json.gemspec"
2314 ((".*spec.signing_key.*") ""))
2315 #t)))))
2316 (native-inputs
2317 `(("bundler" ,bundler)
2318 ("ruby-rspec" ,ruby-rspec)
2319 ("ruby-yard" ,ruby-yard)
2320 ("ruby-json-pure" ,ruby-json-pure)
2321 ("ruby-oj" ,ruby-oj)
2322 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
2323 (synopsis "Common interface to multiple JSON libraries for Ruby")
2324 (description
2325 "This package provides a common interface to multiple JSON libraries,
2326including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
2327NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 2328 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
2329 (license license:expat)))
2330
5edef88b
BW
2331(define-public ruby-multi-test
2332 (package
2333 (name "ruby-multi-test")
2334 (version "0.1.2")
2335 (source
2336 (origin
2337 (method url-fetch)
2338 (uri (rubygems-uri "multi_test" version))
2339 (sha256
2340 (base32
2341 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
2342 (build-system ruby-build-system)
2343 (arguments
2344 '(;; Tests require different sets of specific gem versions to be available,
2345 ;; and there is no gemfile that specifies the newest versions of
2346 ;; dependencies to be tested.
2347 #:tests? #f))
2348 (synopsis
2349 "Interface to testing libraries loaded into a running Ruby process")
2350 (description
2351 "@code{multi_test} provides a uniform interface onto whatever testing
2352libraries that have been loaded into a running Ruby process to help control
2353rogue test/unit/autorun requires.")
2354 (home-page "https://github.com/cucumber/multi_test")
2355 (license license:expat)))
2356
f8da3af0
DT
2357(define-public ruby-arel
2358 (package
2359 (name "ruby-arel")
8e5ff250 2360 (version "8.0.0")
f8da3af0
DT
2361 (source (origin
2362 (method url-fetch)
2363 (uri (rubygems-uri "arel" version))
2364 (sha256
2365 (base32
8e5ff250 2366 "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
f8da3af0
DT
2367 (build-system ruby-build-system)
2368 (arguments '(#:tests? #f)) ; no tests
2369 (home-page "https://github.com/rails/arel")
2370 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
2371 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
2372Ruby. It simplifies the generation of complex SQL queries and adapts to
2373various relational database implementations.")
f8da3af0 2374 (license license:expat)))
616eaead
DT
2375
2376(define-public ruby-minitar
bfaf8efd
BW
2377 ;; We package from the GitHub source to fix the security issue reported at
2378 ;; https://github.com/halostatue/minitar/issues/16.
2379 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
2380 (package
2381 (name "ruby-minitar")
2382 (version (string-append "0.5.4-1." (string-take commit 8)))
2383 (source
2384 (origin
2385 (method git-fetch)
2386 (uri (git-reference
2387 (url "https://github.com/halostatue/minitar.git")
2388 (commit commit)))
2389 (file-name (string-append name "-" version "-checkout"))
2390 (sha256
2391 (base32
2392 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
2393 (build-system ruby-build-system)
2394 (arguments
2395 '(#:tests? #f)) ; missing a gemspec
2396 (synopsis "Ruby library and utility for handling tar archives")
2397 (description
2398 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 2399that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
2400 (home-page "http://www.github.com/atoulme/minitar")
2401 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
2402
2403(define-public ruby-mini-portile
2404 (package
2405 (name "ruby-mini-portile")
2406 (version "0.6.2")
2407 (source
2408 (origin
2409 (method url-fetch)
2410 (uri (rubygems-uri "mini_portile" version))
2411 (sha256
2412 (base32
2413 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
2414 (build-system ruby-build-system)
2415 (arguments
2416 '(#:tests? #f)) ; tests require network access
2417 (synopsis "Ports system for Ruby developers")
2418 (description "Mini-portile is a port/recipe system for Ruby developers.
2419It provides a standard way to compile against specific versions of libraries
2420to reproduce user environments.")
7bf837fd 2421 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 2422 (license license:expat)))
e920bfca 2423
d000fc92
BW
2424(define-public ruby-mini-portile-2
2425 (package (inherit ruby-mini-portile)
26f4a377 2426 (version "2.2.0")
d000fc92
BW
2427 (source (origin
2428 (method url-fetch)
2429 (uri (rubygems-uri "mini_portile2" version))
2430 (sha256
2431 (base32
26f4a377 2432 "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
d000fc92 2433
e920bfca
DT
2434(define-public ruby-nokogiri
2435 (package
2436 (name "ruby-nokogiri")
efb94fda 2437 (version "1.8.0")
e920bfca
DT
2438 (source (origin
2439 (method url-fetch)
2440 (uri (rubygems-uri "nokogiri" version))
2441 (sha256
2442 (base32
efb94fda 2443 "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
e920bfca
DT
2444 (build-system ruby-build-system)
2445 (arguments
2446 ;; Tests fail because Nokogiri can only test with an installed extension,
2447 ;; and also because many test framework dependencies are missing.
7b01f250 2448 `(#:tests? #f
e920bfca
DT
2449 #:gem-flags (list "--" "--use-system-libraries"
2450 (string-append "--with-xml2-include="
2451 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
2452 "/include/libxml2" ))
2453 #:phases
2454 (modify-phases %standard-phases
7b01f250
BW
2455 (add-before 'build 'patch-extconf
2456 ;; 'pkg-config' is not included in the GEM_PATH during
2457 ;; installation, so we add it directly to the load path.
2458 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2459 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
2460 (substitute* "ext/nokogiri/extconf.rb"
2461 (("gem 'pkg-config'.*")
2462 (string-append "$:.unshift '"
3cb3fa67 2463 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
2464 "/gems/pkg-config-"
2465 ,(package-version ruby-pkg-config)
2466 "/lib'\n"))))
5e7f1b0b 2467 #t)))))
e920bfca 2468 (native-inputs
7b01f250 2469 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
2470 (inputs
2471 `(("zlib" ,zlib)
2472 ("libxml2" ,libxml2)
2473 ("libxslt" ,libxslt)))
2474 (propagated-inputs
7b01f250
BW
2475 `(("ruby-mini-portile" ,ruby-mini-portile-2)
2476 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
2477 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
2478 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
2479both CSS3 selector and XPath 1.0 support.")
2480 (home-page "http://www.nokogiri.org/")
2481 (license license:expat)))
30b0b725
DT
2482
2483(define-public ruby-method-source
2484 (package
2485 (name "ruby-method-source")
c8355037 2486 (version "0.9.0")
30b0b725
DT
2487 (source
2488 (origin
2489 (method url-fetch)
2490 (uri (rubygems-uri "method_source" version))
2491 (sha256
2492 (base32
c8355037 2493 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 2494 (build-system ruby-build-system)
c8355037
BW
2495 (arguments
2496 `(#:test-target "spec"))
30b0b725 2497 (native-inputs
c8355037 2498 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
2499 ("git" ,git)))
2500 (synopsis "Retrieve the source code for Ruby methods")
2501 (description "Method_source retrieves the source code for Ruby methods.
2502Additionally, it can extract source code from Proc and Lambda objects or just
2503extract comments.")
2504 (home-page "https://github.com/banister/method_source")
2505 (license license:expat)))
2e3fdea4
DT
2506
2507(define-public ruby-coderay
2508 (package
2509 (name "ruby-coderay")
5cf0997a 2510 (version "1.1.2")
2e3fdea4
DT
2511 (source
2512 (origin
2513 (method url-fetch)
2514 (uri (rubygems-uri "coderay" version))
2515 (sha256
2516 (base32
5cf0997a 2517 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
2518 (build-system ruby-build-system)
2519 (arguments
2520 '(#:tests? #f)) ; missing test files
2521 (synopsis "Ruby syntax highlighting library")
2522 (description "Coderay is a Ruby library that provides syntax highlighting
2523for select languages.")
2524 (home-page "http://coderay.rubychan.de")
2525 (license license:expat)))
96e76083 2526
268643b9
CB
2527(define-public ruby-progress_bar
2528 (package
2529 (name "ruby-progress_bar")
2530 (version "1.1.0")
2531 (source
2532 (origin
2533 (method url-fetch)
2534 (uri (rubygems-uri "progress_bar" version))
2535 (sha256
2536 (base32
2537 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
2538 (build-system ruby-build-system)
2539 (arguments
2540 '(#:test-target "spec"))
2541 (propagated-inputs
2542 `(("ruby-highline" ,ruby-highline)
2543 ("ruby-options" ,ruby-options)))
2544 (native-inputs
2545 `(("bundler" ,bundler)
2546 ("ruby-rspec" ,ruby-rspec)
2547 ("ruby-timecop" ,ruby-timecop)))
2548 (synopsis
2549 "Ruby library for displaying progress bars")
2550 (description
2551 "ProgressBar is a simple library for displaying progress bars. The
2552maximum value is configurable, and additional information can be displayed
2553like the percentage completion, estimated time remaining, elapsed time and
2554rate.")
2555 (home-page "https://github.com/paul/progress_bar")
2556 (license license:wtfpl2)))
2557
96e76083
DT
2558(define-public ruby-pry
2559 (package
2560 (name "ruby-pry")
1bf02b20 2561 (version "0.11.3")
96e76083
DT
2562 (source
2563 (origin
2564 (method url-fetch)
2565 (uri (rubygems-uri "pry" version))
2566 (sha256
2567 (base32
1bf02b20 2568 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
2569 (build-system ruby-build-system)
2570 (arguments
2571 '(#:tests? #f)) ; no tests
2572 (propagated-inputs
2573 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 2574 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
2575 (synopsis "Ruby REPL")
2576 (description "Pry is an IRB alternative and runtime developer console for
2577Ruby. It features syntax highlighting, a plugin architecture, runtime
2578invocation, and source and documentation browsing.")
2f3800e5 2579 (home-page "https://pryrepl.org")
96e76083 2580 (license license:expat)))
1415792a 2581
051deeb7
RW
2582(define-public ruby-guard
2583 (package
2584 (name "ruby-guard")
2585 (version "2.13.0")
2586 (source (origin
2587 (method url-fetch)
2588 ;; The gem does not include a Rakefile, nor does it contain a
2589 ;; gemspec file, nor does it come with the tests. This is why
2590 ;; we fetch the tarball from Github.
2591 (uri (string-append "https://github.com/guard/guard/archive/v"
2592 version ".tar.gz"))
2593 (file-name (string-append name "-" version ".tar.gz"))
2594 (sha256
2595 (base32
2596 "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
2597 (build-system ruby-build-system)
2598 (arguments
2599 `(#:tests? #f ; tests require cucumber
2600 #:phases
2601 (modify-phases %standard-phases
2602 (add-after 'unpack 'remove-git-ls-files
2603 (lambda* (#:key outputs #:allow-other-keys)
2604 (substitute* "guard.gemspec"
2605 (("git ls-files -z") "find . -type f -print0"))
2606 #t))
2607 (replace 'build
2608 (lambda _
9923d5a4 2609 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
2610 (propagated-inputs
2611 `(("ruby-formatador" ,ruby-formatador)
2612 ("ruby-listen" ,ruby-listen)
2613 ("ruby-lumberjack" ,ruby-lumberjack)
2614 ("ruby-nenv" ,ruby-nenv)
2615 ("ruby-notiffany" ,ruby-notiffany)
2616 ("ruby-pry" ,ruby-pry)
2617 ("ruby-shellany" ,ruby-shellany)
2618 ("ruby-thor" ,ruby-thor)))
2619 (native-inputs
2620 `(("bundler" ,bundler)
2621 ("ruby-rspec" ,ruby-rspec)))
2622 (synopsis "Tool to handle events on file system modifications")
2623 (description
2624 "Guard is a command line tool to easily handle events on file system
2625modifications. Guard automates various tasks by running custom rules whenever
2626file or directories are modified.")
2627 (home-page "http://guardgem.org/")
2628 (license license:expat)))
2629
1415792a
DT
2630(define-public ruby-thread-safe
2631 (package
2632 (name "ruby-thread-safe")
313dd5dd 2633 (version "0.3.6")
1415792a
DT
2634 (source
2635 (origin
2636 (method url-fetch)
2637 (uri (rubygems-uri "thread_safe" version))
2638 (sha256
2639 (base32
313dd5dd 2640 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
2641 (build-system ruby-build-system)
2642 (arguments
2643 '(#:tests? #f)) ; needs simplecov, among others
2644 (synopsis "Thread-safe utilities for Ruby")
2645 (description "The thread_safe library provides thread-safe collections and
2646utilities for Ruby.")
2647 (home-page "https://github.com/ruby-concurrency/thread_safe")
2648 (license license:asl2.0)))
08a1b701
DT
2649
2650(define-public ruby-tzinfo
2651 (package
2652 (name "ruby-tzinfo")
4237af85 2653 (version "1.2.4")
08a1b701
DT
2654 (source
2655 (origin
2656 (method url-fetch)
2657 (uri (rubygems-uri "tzinfo" version))
2658 (sha256
2659 (base32
4237af85 2660 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
2661 (build-system ruby-build-system)
2662 (propagated-inputs
2663 `(("ruby-thread-safe" ,ruby-thread-safe)))
2664 (synopsis "Time zone library for Ruby")
2665 (description "TZInfo is a Ruby library that provides daylight savings
2666aware transformations between times in different time zones.")
2f3800e5 2667 (home-page "https://tzinfo.github.io")
1e12924a
BW
2668 (license license:expat)))
2669
2670(define-public ruby-tzinfo-data
2671 (package
2672 (name "ruby-tzinfo-data")
92513191 2673 (version "1.2017.3")
1e12924a
BW
2674 (source
2675 (origin
2676 (method url-fetch)
2677 ;; Download from GitHub because the rubygems version does not contain
2678 ;; Rakefile or tests.
2679 (uri (string-append
2680 "https://github.com/tzinfo/tzinfo-data/archive/v"
2681 version
2682 ".tar.gz"))
2683 (file-name (string-append name "-" version ".tar.gz"))
2684 (sha256
2685 (base32
92513191 2686 "01wff7syqzikbxalbg3isgxasmvzicr85bzadzkb6bf20bip4v54"))
1e12924a
BW
2687 ;; Remove the known test failure.
2688 ;; https://github.com/tzinfo/tzinfo-data/issues/10
2689 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
2690 (patches (search-patches
2691 "ruby-tzinfo-data-ignore-broken-test.patch"))))
2692 (build-system ruby-build-system)
2693 (propagated-inputs
2694 `(("ruby-tzinfo" ,ruby-tzinfo)))
2695 (synopsis "Data from the IANA Time Zone database")
2696 (description
2697 "This library provides @code{TZInfo::Data}, which contains data from the
2698IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 2699 (home-page "https://tzinfo.github.io")
08a1b701 2700 (license license:expat)))
c99e2247 2701
48e6851f
RW
2702(define-public ruby-rb-inotify
2703 (package
2704 (name "ruby-rb-inotify")
32bbfea8 2705 (version "0.9.10")
48e6851f
RW
2706 (source
2707 (origin
2708 (method url-fetch)
2709 (uri (rubygems-uri "rb-inotify" version))
2710 (sha256
2711 (base32
32bbfea8 2712 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
2713 (build-system ruby-build-system)
2714 (arguments
2715 '(#:tests? #f ; there are no tests
2716 #:phases
2717 (modify-phases %standard-phases
2718 ;; Building the gemspec with rake is not working here since it is
2719 ;; generated with Jeweler. It is also unnecessary because the
2720 ;; existing gemspec does not use any development tools to generate a
2721 ;; list of files.
2722 (replace 'build
2723 (lambda _
9923d5a4 2724 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
2725 (propagated-inputs
2726 `(("ruby-ffi" ,ruby-ffi)))
2727 (native-inputs
2728 `(("ruby-yard" ,ruby-yard)))
2729 (synopsis "Ruby wrapper for Linux's inotify")
2730 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
2731kernel subsystem for monitoring changes to files and directories.")
2732 (home-page "https://github.com/nex3/rb-inotify")
2733 (license license:expat)))
2734
a75bdfce
RW
2735(define-public ruby-pry-editline
2736 (package
2737 (name "ruby-pry-editline")
2738 (version "1.1.2")
2739 (source (origin
2740 (method url-fetch)
2741 (uri (rubygems-uri "pry-editline" version))
2742 (sha256
2743 (base32
2744 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
2745 (build-system ruby-build-system)
2746 (arguments `(#:tests? #f)) ; no tests included
2747 (native-inputs
2748 `(("bundler" ,bundler)))
2749 (synopsis "Open the current REPL line in an editor")
2750 (description
2751 "This gem provides a plugin for the Ruby REPL to enable opening the
2752current line in an external editor.")
2753 (home-page "https://github.com/tpope/pry-editline")
2754 (license license:expat)))
2755
d3b20a02
RW
2756(define-public ruby-sdoc
2757 (package
2758 (name "ruby-sdoc")
fdf3a68d 2759 (version "0.4.2")
d3b20a02
RW
2760 (source (origin
2761 (method url-fetch)
2762 (uri (rubygems-uri "sdoc" version))
2763 (sha256
2764 (base32
fdf3a68d 2765 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
2766 (build-system ruby-build-system)
2767 (arguments
2768 `(#:phases
2769 (modify-phases %standard-phases
fc29d5e6 2770 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 2771 (lambda _
fdf3a68d 2772 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
2773 (substitute* "sdoc.gemspec"
2774 (("s.add_runtime_dependency.*") "\n")
2775 (("s.add_dependency.*") "\n"))
2776 (substitute* "Gemfile"
2777 (("gem \"rake\".*")
2778 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
2779 #t)))))
2780 (propagated-inputs
2781 `(("ruby-json" ,ruby-json)))
2782 (native-inputs
2783 `(("bundler" ,bundler)
fdf3a68d
BW
2784 ("ruby-minitest" ,ruby-minitest)
2785 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
2786 (synopsis "Generate searchable RDoc documentation")
2787 (description
2788 "SDoc is an RDoc documentation generator to build searchable HTML
2789documentation for Ruby code.")
7bf837fd 2790 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
2791 (license license:expat)))
2792
70b002aa
RW
2793(define-public ruby-tins
2794 (package
2795 (name "ruby-tins")
fbefd6ff 2796 (version "1.15.0")
70b002aa
RW
2797 (source (origin
2798 (method url-fetch)
2799 (uri (rubygems-uri "tins" version))
2800 (sha256
2801 (base32
fbefd6ff 2802 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
2803 (build-system ruby-build-system)
2804 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
2805 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
2806 ;; the gemspec.
2807 (arguments
2808 `(#:tests? #f ; there are no tests
2809 #:phases
2810 (modify-phases %standard-phases
2811 (replace 'build
2812 (lambda _
2813 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
2814 ;; causes an error.
2815 (substitute* "tins.gemspec"
2816 (("\"lib/spruz\", ") ""))
9923d5a4 2817 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
2818 (synopsis "Assorted tools for Ruby")
2819 (description "Tins is a Ruby library providing assorted tools.")
2820 (home-page "https://github.com/flori/tins")
2821 (license license:expat)))
2822
bc8277e4
RW
2823(define-public ruby-gem-hadar
2824 (package
2825 (name "ruby-gem-hadar")
3fd577e3 2826 (version "1.9.1")
bc8277e4
RW
2827 (source (origin
2828 (method url-fetch)
2829 (uri (rubygems-uri "gem_hadar" version))
2830 (sha256
2831 (base32
3fd577e3 2832 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
2833 (build-system ruby-build-system)
2834 ;; This gem needs itself at development time. We disable rebuilding of the
2835 ;; gemspec to avoid this loop.
2836 (arguments
2837 `(#:tests? #f ; there are no tests
2838 #:phases
2839 (modify-phases %standard-phases
2840 (replace 'build
2841 (lambda _
9923d5a4 2842 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
2843 (propagated-inputs
2844 `(("git" ,git)
2845 ("ruby-tins" ,ruby-tins)
3fd577e3 2846 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
2847 (synopsis "Library for the development of Ruby gems")
2848 (description
2849 "This library contains some useful functionality to support the
2850development of Ruby gems.")
2851 (home-page "https://github.com/flori/gem_hadar")
2852 (license license:expat)))
2853
d8cafe29
RW
2854(define-public ruby-minitest-tu-shim
2855 (package
2856 (name "ruby-minitest-tu-shim")
2857 (version "1.3.3")
2858 (source (origin
2859 (method url-fetch)
2860 (uri (rubygems-uri "minitest_tu_shim" version))
2861 (sha256
2862 (base32
2863 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
2864 (build-system ruby-build-system)
2865 (arguments
2866 `(#:phases
2867 (modify-phases %standard-phases
2868 (add-after 'unpack 'fix-test-include-path
2869 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2870 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
2871 (substitute* "Rakefile"
2872 (("Hoe\\.add_include_dirs .*")
2873 (string-append "Hoe.add_include_dirs \""
3cb3fa67 2874 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
2875 "/gems/minitest-"
2876 ,(package-version ruby-minitest-4)
2877 "/lib" "\""))))
2878 #t))
d8cafe29
RW
2879 (add-before 'check 'fix-test-assumptions
2880 (lambda _
2881 ;; The test output includes the file name, so a couple of tests
2882 ;; fail. Changing the regular expressions slightly fixes this
2883 ;; problem.
2884 (substitute* "test/test_mini_test.rb"
2885 (("output.sub!\\(.*, 'FILE:LINE'\\)")
2886 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
2887 (("gsub\\(/.*, 'FILE:LINE'\\)")
2888 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
2889 #t)))))
2890 (propagated-inputs
2891 `(("ruby-minitest-4" ,ruby-minitest-4)))
2892 (native-inputs
2893 `(("ruby-hoe" ,ruby-hoe)))
2894 (synopsis "Adapter library between minitest and test/unit")
2895 (description
2896 "This library bridges the gap between the small and fast minitest and
2897Ruby's large and slower test/unit.")
2898 (home-page "https://rubygems.org/gems/minitest_tu_shim")
2899 (license license:expat)))
2900
fd83a212
RW
2901(define-public ruby-term-ansicolor
2902 (package
2903 (name "ruby-term-ansicolor")
f3a6311a 2904 (version "1.6.0")
fd83a212
RW
2905 (source (origin
2906 (method url-fetch)
2907 (uri (rubygems-uri "term-ansicolor" version))
2908 (sha256
2909 (base32
f3a6311a 2910 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
2911 (build-system ruby-build-system)
2912 ;; Rebuilding the gemspec seems to require git, even though this is not a
2913 ;; git repository, so we just build the gem from the existing gemspec.
2914 (arguments
2915 `(#:phases
2916 (modify-phases %standard-phases
39ecb977
CB
2917 (add-after 'unpack 'fix-test
2918 (lambda -
2919 (substitute* "tests/hsl_triple_test.rb"
2920 (("0\\\\\\.0%")
2921 "0\\.?0?%"))))
fd83a212
RW
2922 (replace 'build
2923 (lambda _
9923d5a4 2924 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
2925 (propagated-inputs
2926 `(("ruby-tins" ,ruby-tins)))
2927 (native-inputs
2928 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2929 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
2930 (synopsis "Ruby library to control the attributes of terminal output")
2931 (description
2932 "This Ruby library uses ANSI escape sequences to control the attributes
2933of terminal output.")
2f3800e5 2934 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
2935 ;; There is no mention of the "or later" clause.
2936 (license license:gpl2)))
2937
6e376ca4
RW
2938(define-public ruby-pstree
2939 (package
2940 (name "ruby-pstree")
2941 (version "0.1.0")
2942 (source (origin
2943 (method url-fetch)
2944 (uri (rubygems-uri "pstree" version))
2945 (sha256
2946 (base32
2947 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
2948 (build-system ruby-build-system)
2949 (native-inputs
2950 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2951 ("bundler" ,bundler)))
2952 (synopsis "Create a process tree data structure")
2953 (description
2954 "This library uses the output of the @code{ps} command to create a
2955process tree data structure for the current host.")
2f3800e5 2956 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
2957 ;; There is no mention of the "or later" clause.
2958 (license license:gpl2)))
2959
53239b5f
RW
2960(define-public ruby-utils
2961 (package
2962 (name "ruby-utils")
cd698b6e 2963 (version "0.9.0")
53239b5f
RW
2964 (source (origin
2965 (method url-fetch)
2966 (uri (rubygems-uri "utils" version))
2967 (sha256
2968 (base32
cd698b6e 2969 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
2970 (build-system ruby-build-system)
2971 (propagated-inputs
2972 `(("ruby-tins" ,ruby-tins)
2973 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
2974 ("ruby-pstree" ,ruby-pstree)
2975 ("ruby-pry-editline" ,ruby-pry-editline)))
2976 (native-inputs
2977 `(("ruby-gem-hadar" ,ruby-gem-hadar)
2978 ("bundler" ,bundler)))
2979 (synopsis "Command line tools for working with Ruby")
2980 (description
2981 "This package provides assorted command line tools that may be useful
2982when working with Ruby code.")
2983 (home-page "https://github.com/flori/utils")
2984 ;; There is no mention of the "or later" clause.
2985 (license license:gpl2)))
2986
c99e2247
DT
2987(define-public ruby-json
2988 (package
2989 (name "ruby-json")
a281acce 2990 (version "2.1.0")
c99e2247
DT
2991 (source
2992 (origin
2993 (method url-fetch)
2994 (uri (rubygems-uri "json" version))
2995 (sha256
2996 (base32
a281acce 2997 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
2998 (build-system ruby-build-system)
2999 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
3000 (synopsis "JSON library for Ruby")
3001 (description "This Ruby library provides a JSON implementation written as
3002a native C extension.")
3003 (home-page "http://json-jruby.rubyforge.org/")
3004 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 3005
763624f5
RW
3006(define-public ruby-json-pure
3007 (package
3008 (name "ruby-json-pure")
ac01cb07 3009 (version "2.1.0")
763624f5
RW
3010 (source (origin
3011 (method url-fetch)
3012 (uri (rubygems-uri "json_pure" version))
3013 (sha256
3014 (base32
ac01cb07 3015 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
3016 (build-system ruby-build-system)
3017 (arguments
ac01cb07 3018 `(#:phases
763624f5 3019 (modify-phases %standard-phases
ac01cb07 3020 (add-after 'unpack 'fix-rakefile
763624f5 3021 (lambda _
ac01cb07
BW
3022 (substitute* "Rakefile"
3023 ;; Since this is not a git repository, do not call 'git'.
3024 (("`git ls-files`") "`find . -type f |sort`")
3025 ;; Loosen dependency constraint.
3026 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
3027 #t))
3028 (add-after 'replace-git-ls-files 'regenerate-gemspec
3029 (lambda _
3030 ;; Regenerate gemspec so loosened dependency constraints are
3031 ;; propagated.
9923d5a4 3032 (invoke "rake" "gemspec"))))))
763624f5 3033 (native-inputs
ac01cb07 3034 `(("bundler" ,bundler)
0c9f73cd
TGR
3035 ("ragel" ,ragel)
3036 ("ruby-simplecov" ,ruby-simplecov)
3037 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
3038 (synopsis "JSON implementation in pure Ruby")
3039 (description
3040 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 3041 (home-page "https://flori.github.com/json")
763624f5
RW
3042 (license license:ruby)))
3043
16b324cd
RW
3044;; Even though this package only provides bindings for a Mac OSX API it is
3045;; required by "ruby-listen" at runtime.
3046(define-public ruby-rb-fsevent
3047 (package
3048 (name "ruby-rb-fsevent")
b0ef15ed 3049 (version "0.10.3")
16b324cd
RW
3050 (source (origin
3051 (method url-fetch)
3052 (uri (rubygems-uri "rb-fsevent" version))
3053 (sha256
3054 (base32
b0ef15ed 3055 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
3056 (build-system ruby-build-system)
3057 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
3058 ;; "listen", which needs "rb-fsevent" at runtime.
3059 (arguments `(#:tests? #f))
3060 (synopsis "FSEvents API with signals catching")
3061 (description
3062 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
3063 (home-page "https://rubygems.org/gems/rb-fsevent")
3064 (license license:expat)))
3065
b86be2ad
RW
3066(define-public ruby-listen
3067 (package
3068 (name "ruby-listen")
c3b36fa1 3069 (version "3.1.5")
b86be2ad
RW
3070 (source
3071 (origin
3072 (method url-fetch)
3073 (uri (rubygems-uri "listen" version))
3074 (sha256
3075 (base32
c3b36fa1 3076 "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
b86be2ad
RW
3077 (build-system ruby-build-system)
3078 (arguments '(#:tests? #f)) ; no tests
3079 (propagated-inputs
cf1a01f4
RW
3080 `(("ruby-rb-inotify" ,ruby-rb-inotify)
3081 ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
b86be2ad
RW
3082 (synopsis "Listen to file modifications")
3083 (description "The Listen gem listens to file modifications and notifies
3084you about the changes.")
3085 (home-page "https://github.com/guard/listen")
3086 (license license:expat)))
3087
88ed727f
JL
3088(define-public ruby-listen-3.0
3089 (package
3090 (inherit ruby-listen)
3091 (version "3.0.8")
3092 (source (origin
3093 (method url-fetch)
3094 (uri (rubygems-uri "listen" version))
3095 (sha256
3096 (base32
3097 "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
3098
5ff89a1b
DT
3099(define-public ruby-activesupport
3100 (package
3101 (name "ruby-activesupport")
ef381322 3102 (version "5.2.1")
5ff89a1b
DT
3103 (source
3104 (origin
3105 (method url-fetch)
3106 (uri (rubygems-uri "activesupport" version))
3107 (sha256
3108 (base32
ef381322 3109 "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2"))))
5ff89a1b
DT
3110 (build-system ruby-build-system)
3111 (arguments
2af45e50
BW
3112 `(#:phases
3113 (modify-phases %standard-phases
3114 (replace 'check
3115 (lambda _
9923d5a4
TGR
3116 ;; There are no tests, instead attempt to load the library.
3117 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 3118 (propagated-inputs
2af45e50
BW
3119 `(("ruby-concurrent" ,ruby-concurrent)
3120 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 3121 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
3122 ("ruby-tzinfo" ,ruby-tzinfo)
3123 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
3124 (synopsis "Ruby on Rails utility library")
3125 (description "ActiveSupport is a toolkit of support libraries and Ruby
3126core extensions extracted from the Rails framework. It includes support for
3127multibyte strings, internationalization, time zones, and testing.")
3128 (home-page "http://www.rubyonrails.org")
3129 (license license:expat)))
f847ad7b 3130
3996f0aa
RW
3131(define-public ruby-crass
3132 (package
3133 (name "ruby-crass")
a0e0f9d7 3134 (version "1.0.4")
3996f0aa
RW
3135 (source (origin
3136 (method url-fetch)
3137 (uri (rubygems-uri "crass" version))
3138 (sha256
3139 (base32
a0e0f9d7 3140 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3996f0aa
RW
3141 (build-system ruby-build-system)
3142 (native-inputs
3143 `(("bundler" ,bundler)
3144 ("ruby-minitest" ,ruby-minitest)))
3145 (synopsis "Pure Ruby CSS parser")
3146 (description
3147 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3148 (home-page "https://github.com/rgrove/crass/")
3149 (license license:expat)))
3150
c2c4e5b2 3151(define-public ruby-nokogumbo
f1ae7c62
BW
3152 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
3153 (package
3154 (name "ruby-nokogumbo")
3155 (version (string-append "1.4.7-1." (string-take commit 8)))
3156 (source (origin
3157 ;; We use the git reference, because there's no Rakefile in the
3158 ;; published gem and the tarball on Github is outdated.
3159 (method git-fetch)
3160 (uri (git-reference
3161 (url "https://github.com/rubys/nokogumbo.git")
3162 (commit "d56f954d20a")))
3163 (file-name (string-append name "-" version "-checkout"))
3164 (sha256
3165 (base32
3166 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
3167 (build-system ruby-build-system)
3168 (arguments
3169 `(#:modules ((guix build ruby-build-system)
3170 (guix build utils)
3171 (ice-9 rdelim))
3172 #:phases
3173 (modify-phases %standard-phases
5c31e981 3174 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
3175 (lambda _
3176 (substitute* "Rakefile"
3177 ;; Build Makefile even without a copy of gumbo-parser sources
3178 (("'gumbo-parser/src',") "")
3179 ;; We don't bundle gumbo-parser sources
3180 (("'gumbo-parser/src/\\*',") "")
3181 (("'gumbo-parser/visualc/include/\\*',") "")
3182 ;; The definition of SOURCES will be cut in gemspec, and
3183 ;; "FileList" will be undefined.
3184 (("SOURCES \\+ FileList\\[")
3185 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
3186
3187 ;; Copy the Rakefile and cut out the gemspec.
3188 (copy-file "Rakefile" ".gemspec")
3189 (with-atomic-file-replacement ".gemspec"
3190 (lambda (in out)
3191 (let loop ((line (read-line in 'concat))
3192 (skipping? #t))
3193 (if (eof-object? line)
3194 #t
3195 (let ((skip-next? (if skipping?
3196 (not (string-prefix? "SPEC =" line))
3197 (string-prefix? "end" line))))
3198 (when (or (not skipping?)
3199 (and skipping? (not skip-next?)))
3200 (format #t "~a" line)
3201 (display line out))
3202 (loop (read-line in 'concat) skip-next?))))))
3203 #t)))))
3204 (inputs
3205 `(("gumbo-parser" ,gumbo-parser)))
3206 (propagated-inputs
3207 `(("ruby-nokogiri" ,ruby-nokogiri)))
3208 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
3209 (description
3210 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 3211access the result as a Nokogiri parsed document.")
f1ae7c62
BW
3212 (home-page "https://github.com/rubys/nokogumbo/")
3213 (license license:asl2.0))))
c2c4e5b2 3214
d56ff88b
RW
3215(define-public ruby-sanitize
3216 (package
3217 (name "ruby-sanitize")
f812145e 3218 (version "4.6.3")
d56ff88b
RW
3219 (source (origin
3220 (method url-fetch)
3221 ;; The gem does not include the Rakefile, so we download the
3222 ;; release tarball from Github.
3223 (uri (string-append "https://github.com/rgrove/"
3224 "sanitize/archive/v" version ".tar.gz"))
3225 (file-name (string-append name "-" version ".tar.gz"))
3226 (sha256
3227 (base32
f812145e 3228 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
d56ff88b
RW
3229 (build-system ruby-build-system)
3230 (propagated-inputs
3231 `(("ruby-crass" ,ruby-crass)
3232 ("ruby-nokogiri" ,ruby-nokogiri)
3233 ("ruby-nokogumbo" ,ruby-nokogumbo)))
3234 (native-inputs
3235 `(("bundler" ,bundler)
3236 ("ruby-minitest" ,ruby-minitest)
3237 ("ruby-redcarpet" ,ruby-redcarpet)
3238 ("ruby-yard" ,ruby-yard)))
3239 (synopsis "Whitelist-based HTML and CSS sanitizer")
3240 (description
3241 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
3242acceptable elements, attributes, and CSS properties, Sanitize will remove all
3243unacceptable HTML and/or CSS from a string.")
3244 (home-page "https://github.com/rgrove/sanitize/")
3245 (license license:expat)))
3246
ed4b6b18
BW
3247(define-public ruby-oj
3248 (package
3249 (name "ruby-oj")
3250 (version "3.6.7")
3251 (source
3252 (origin
3253 (method url-fetch)
3254 ;; Version on rubygems.org does not contain Rakefile, so download from
3255 ;; GitHub instead.
3256 (uri (string-append "https://github.com/ohler55/oj/archive/v"
3257 version ".tar.gz"))
3258 (file-name (string-append name "-" version ".tar.gz"))
3259 (sha256
3260 (base32
3261 "1x28ga72jxlnmsd8g8c0fw81vlh54r0qgagw2lxsd3x3la091g2h"))))
3262 (build-system ruby-build-system)
3263 (arguments
3264 '(#:test-target "test_all"
3265 #:phases
3266 (modify-phases %standard-phases
3267 (add-before 'check 'disable-bundler
3268 (lambda _
3269 (substitute* "Rakefile"
3270 (("Bundler\\.with_clean_env") "1.times")
3271 (("bundle exec ") "")))))))
3272 (native-inputs
3273 `(("bundler" ,bundler)
3274 ("ruby-rspec" ,ruby-rspec)
3275 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3276 (synopsis "JSON parser for Ruby optimized for speed")
3277 (description
3278 "Oj is a JSON parser and generator for Ruby, where the encoding and
3279decoding of JSON is implemented as a C extension to Ruby.")
3280 (home-page "http://www.ohler.com/oj")
3281 (license (list license:expat ; Ruby code
3282 license:bsd-3)))) ; extension code
3283
f847ad7b
DT
3284(define-public ruby-ox
3285 (package
3286 (name "ruby-ox")
263c0dbf 3287 (version "2.6.0")
f847ad7b
DT
3288 (source
3289 (origin
3290 (method url-fetch)
3291 (uri (rubygems-uri "ox" version))
3292 (sha256
3293 (base32
263c0dbf 3294 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
3295 (build-system ruby-build-system)
3296 (arguments
3297 '(#:tests? #f)) ; no tests
3298 (synopsis "Optimized XML library for Ruby")
3299 (description
3300 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
3301written as a native C extension. It was designed to be an alternative to
3302Nokogiri and other Ruby XML parsers for generic XML parsing and as an
3303alternative to Marshal for Object serialization. ")
3304 (home-page "http://www.ohler.com/ox")
3305 (license license:expat)))
4a9e0585 3306
0c4e7625
RW
3307(define-public ruby-redcloth
3308 (package
3309 (name "ruby-redcloth")
2a91494e 3310 (version "4.3.2")
0c4e7625
RW
3311 (source (origin
3312 (method url-fetch)
3313 (uri (rubygems-uri "RedCloth" version))
3314 (sha256
3315 (base32
2a91494e 3316 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
3317 (build-system ruby-build-system)
3318 (arguments
3319 `(#:tests? #f ; no tests
3320 #:phases
3321 (modify-phases %standard-phases
3322 ;; Redcloth has complicated rake tasks to build various versions for
3323 ;; multiple targets using RVM. We don't want this so we just use the
3324 ;; existing gemspec.
3325 (replace 'build
3326 (lambda _
9923d5a4 3327 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
3328 (native-inputs
3329 `(("bundler" ,bundler)
3330 ("ruby-diff-lcs" ,ruby-diff-lcs)
3331 ("ruby-rspec-2" ,ruby-rspec-2)))
3332 (synopsis "Textile markup language parser for Ruby")
3333 (description
3334 "RedCloth is a Ruby parser for the Textile markup language.")
3335 (home-page "http://redcloth.org")
3336 (license license:expat)))
3337
4a9e0585
DT
3338(define-public ruby-pg
3339 (package
3340 (name "ruby-pg")
ce5f5230 3341 (version "0.21.0")
4a9e0585
DT
3342 (source
3343 (origin
3344 (method url-fetch)
3345 (uri (rubygems-uri "pg" version))
3346 (sha256
3347 (base32
ce5f5230 3348 "00vhasqwc4f98qb4wxqn2h07fjwzhp5lwyi41j2gndi2g02wrdqh"))))
4a9e0585
DT
3349 (build-system ruby-build-system)
3350 (arguments
3351 '(#:test-target "spec"))
3352 (native-inputs
3353 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3354 ("ruby-hoe" ,ruby-hoe)
3355 ("ruby-rspec" ,ruby-rspec)))
3356 (inputs
abd78128 3357 `(("postgresql" ,postgresql-9.6)))
4a9e0585
DT
3358 (synopsis "Ruby interface to PostgreSQL")
3359 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
3360with PostgreSQL 8.4 and later.")
3361 (home-page "https://bitbucket.org/ged/ruby-pg")
3362 (license license:ruby)))
468e5657
DT
3363
3364(define-public ruby-byebug
3365 (package
3366 (name "ruby-byebug")
d5489a61 3367 (version "9.0.6")
468e5657
DT
3368 (source
3369 (origin
3370 (method url-fetch)
3371 (uri (rubygems-uri "byebug" version))
3372 (sha256
3373 (base32
d5489a61 3374 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
3375 (build-system ruby-build-system)
3376 (arguments
3377 '(#:tests? #f)) ; no tests
3378 (synopsis "Debugger for Ruby 2")
3379 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
3380TracePoint C API for execution control and the Debug Inspector C API for call
3381stack navigation. The core component provides support that front-ends can
3382build on. It provides breakpoint handling and bindings for stack frames among
3383other things and it comes with a command line interface.")
7bf837fd 3384 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 3385 (license license:bsd-2)))
64b6ccc3 3386
5799bc2b
RW
3387(define-public ruby-netrc
3388 (package
3389 (name "ruby-netrc")
3390 (version "0.11.0")
3391 (source (origin
3392 (method url-fetch)
3393 (uri (rubygems-uri "netrc" version))
3394 (sha256
3395 (base32
3396 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
3397 (build-system ruby-build-system)
3398 (arguments
3399 `(#:phases
3400 (modify-phases %standard-phases
3401 (replace 'check
3402 ;; There is no Rakefile and minitest can only run one file at once,
3403 ;; so we have to iterate over all test files.
3404 (lambda _
9923d5a4
TGR
3405 (map (lambda (file)
3406 (invoke "ruby" "-Itest" file))
3407 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
3408 (native-inputs
3409 `(("ruby-minitest" ,ruby-minitest)))
3410 (synopsis "Library to read and update netrc files")
3411 (description
3412 "This library can read and update netrc files, preserving formatting
3413including comments and whitespace.")
3414 (home-page "https://github.com/geemus/netrc")
3415 (license license:expat)))
3416
3a6989ce
RW
3417(define-public ruby-unf-ext
3418 (package
3419 (name "ruby-unf-ext")
3420 (version "0.0.7.1")
3421 (source (origin
3422 (method url-fetch)
3423 (uri (rubygems-uri "unf_ext" version))
3424 (sha256
3425 (base32
3426 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
3427 (build-system ruby-build-system)
b809cc9a
RW
3428 (arguments
3429 `(#:phases
3430 (modify-phases %standard-phases
3431 (add-after 'build 'build-ext
9923d5a4 3432 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3a6989ce
RW
3433 (native-inputs
3434 `(("bundler" ,bundler)
3435 ("ruby-rake-compiler" ,ruby-rake-compiler)
3436 ("ruby-test-unit" ,ruby-test-unit)))
3437 (synopsis "Unicode normalization form support library")
3438 (description
3439 "This package provides unicode normalization form support for Ruby.")
3440 (home-page "https://github.com/knu/ruby-unf_ext")
3441 (license license:expat)))
3442
2632a067 3443(define-public ruby-tdiff
5071f17b
BW
3444 ;; Use a newer than released snapshot so that rspec-2 is not required.
3445 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
3446 (package
3447 (name "ruby-tdiff")
3448 (version (string-append "0.3.3-1." (string-take commit 8)))
3449 (source (origin
3450 (method git-fetch)
3451 (uri (git-reference
3452 (url "https://github.com/postmodern/tdiff.git")
3453 (commit commit)))
3454 (file-name (string-append name "-" version "-checkout"))
3455 (sha256
3456 (base32
3457 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
3458 (build-system ruby-build-system)
3459 (native-inputs
3460 `(("ruby-rspec" ,ruby-rspec)
3461 ("ruby-yard" ,ruby-yard)
3462 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3463 (synopsis "Calculate the differences between two tree-like structures")
3464 (description
3465 "This library provides functions to calculate the differences between two
2632a067 3466tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
3467 (home-page "https://github.com/postmodern/tdiff")
3468 (license license:expat))))
2632a067 3469
f60f5002 3470(define-public ruby-nokogiri-diff
5b0c223a
BW
3471 ;; Use a newer than released snapshot so that rspec-2 is not required.
3472 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
3473 (package
3474 (name "ruby-nokogiri-diff")
3475 (version (string-append "0.2.0-1." (string-take commit 8)))
3476 (source (origin
3477 (method git-fetch)
3478 (uri (git-reference
3479 (url "https://github.com/postmodern/nokogiri-diff.git")
3480 (commit commit)))
3481 (file-name (string-append name "-" version "-checkout"))
3482 (sha256
3483 (base32
3484 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
3485 (build-system ruby-build-system)
3486 (propagated-inputs
3487 `(("ruby-tdiff" ,ruby-tdiff)
3488 ("ruby-nokogiri" ,ruby-nokogiri)))
3489 (native-inputs
3490 `(("ruby-rspec" ,ruby-rspec)
3491 ("ruby-yard" ,ruby-yard)
3492 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
3493 (synopsis "Calculate the differences between two XML/HTML documents")
3494 (description
3495 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 3496differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
3497 (home-page "https://github.com/postmodern/nokogiri-diff")
3498 (license license:expat))))
f60f5002 3499
64b6ccc3
DT
3500(define-public ruby-rack
3501 (package
3502 (name "ruby-rack")
9347bbf4 3503 (version "2.0.5")
64b6ccc3
DT
3504 (source
3505 (origin
3506 (method url-fetch)
1db791d5
BW
3507 ;; Download from GitHub so that the patch can be applied.
3508 (uri (string-append
3509 "https://github.com/rack/rack/archive/"
3510 version
3511 ".tar.gz"))
3512 (file-name (string-append name "-" version ".tar.gz"))
64b6ccc3
DT
3513 (sha256
3514 (base32
9347bbf4 3515 "1k1k4wk10l6bxx46pw58j2p3nmyzjqnr65hbjjqydd6517fmxgib"))
1db791d5
BW
3516 ;; Ignore test which fails inside the build environment but works
3517 ;; outside.
3518 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
3519 (build-system ruby-build-system)
3520 (arguments
3521 '(#:phases
3522 (modify-phases %standard-phases
3523 (add-before 'check 'fix-tests
3524 (lambda _
3525 ;; A few of the tests use the length of a file on disk for
3526 ;; Content-Length and Content-Range headers. However, this file
3527 ;; has a shebang in it which an earlier phase patches, growing
3528 ;; the file size from 193 to 239 bytes when the store prefix is
3529 ;; "/gnu/store".
3530 (let ((size-diff (- (string-length (which "ruby"))
3531 (string-length "/usr/bin/env ruby"))))
3532 (substitute* '("test/spec_file.rb")
3533 (("193")
3534 (number->string (+ 193 size-diff)))
3535 (("bytes(.)22-33" all delimiter)
3536 (string-append "bytes"
3537 delimiter
3538 (number->string (+ 22 size-diff))
3539 "-"
3540 (number->string (+ 33 size-diff))))))
3541 #t)))))
3542 (native-inputs
1db791d5
BW
3543 `(("ruby-minitest" ,ruby-minitest)
3544 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
3545 ("which" ,which)))
3546 (propagated-inputs
3547 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
3548 (synopsis "Unified web application interface for Ruby")
3549 (description "Rack provides a minimal, modular and adaptable interface for
3550developing web applications in Ruby. By wrapping HTTP requests and responses,
3551it unifies the API for web servers, web frameworks, and software in between
3552into a single method call.")
2f3800e5 3553 (home-page "https://rack.github.io/")
64b6ccc3 3554 (license license:expat)))
62e4cc5a 3555
20a0f804
BW
3556(define-public ruby-rack-test
3557 (package
3558 (name "ruby-rack-test")
3559 (version "0.8.3")
3560 (source
3561 (origin
3562 (method url-fetch)
3563 (uri (rubygems-uri "rack-test" version))
3564 (sha256
3565 (base32
3566 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
3567 (build-system ruby-build-system)
3568 (arguments
3569 ;; Disable tests because of circular dependencies: requires sinatra,
3570 ;; which requires rack-protection, which requires rack-test. Instead
3571 ;; simply require the library.
3572 `(#:phases
3573 (modify-phases %standard-phases
3574 (replace 'check
3575 (lambda _
3576 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
3577 (propagated-inputs
3578 `(("ruby-rack" ,ruby-rack)))
3579 (synopsis "Testing API for Rack applications")
3580 (description
3581 "Rack::Test is a small, simple testing API for Rack applications. It can
3582be used on its own or as a reusable starting point for Web frameworks and
3583testing libraries to build on.")
3584 (home-page "https://github.com/rack-test/rack-test")
3585 (license license:expat)))
3586
a0a7e690
BW
3587(define-public ruby-rack-protection
3588 (package
3589 (name "ruby-rack-protection")
603822b0 3590 (version "2.0.3")
a0a7e690
BW
3591 (source
3592 (origin
3593 (method url-fetch)
3594 (uri (rubygems-uri "rack-protection" version))
3595 (sha256
3596 (base32
603822b0 3597 "1z5598qipilmnf45428jnxi63ykrgvnyywa5ckpr52zv2vpd8jdp"))))
a0a7e690
BW
3598 (build-system ruby-build-system)
3599 (arguments
fafeeaa2 3600 '(;; Tests missing from the gem.
a0a7e690
BW
3601 #:tests? #f))
3602 (propagated-inputs
3603 `(("ruby-rack" ,ruby-rack)))
3604 (native-inputs
3605 `(("bundler" ,bundler)
3606 ("ruby-rspec" ,ruby-rspec-2)
3607 ("ruby-rack-test" ,ruby-rack-test)))
3608 (synopsis "Rack middleware that protects against typical web attacks")
3609 (description "Rack middleware that can be used to protect against typical
3610web attacks. It can protect all Rack apps, including Rails. For instance, it
3611protects against cross site request forgery, cross site scripting,
3612clickjacking, directory traversal, session hijacking and IP spoofing.")
3613 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
3614 (license license:expat)))
3615
6ef85256
BW
3616(define-public ruby-contest
3617 (package
3618 (name "ruby-contest")
3619 (version "0.1.3")
3620 (source
3621 (origin
3622 (method url-fetch)
3623 (uri (rubygems-uri "contest" version))
3624 (sha256
3625 (base32
3626 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
3627 (build-system ruby-build-system)
3628 (synopsis "Write declarative tests using nested contexts")
3629 (description
3630 "Contest allows writing declarative @code{Test::Unit} tests using nested
3631contexts without performance penalties.")
3632 (home-page "https://github.com/citrusbyte/contest")
3633 (license license:expat)))
3634
c4550f75
BW
3635(define-public ruby-creole
3636 (package
3637 (name "ruby-creole")
3638 (version "0.5.0")
3639 (source
3640 (origin
3641 (method url-fetch)
3642 (uri (rubygems-uri "creole" version))
3643 (sha256
3644 (base32
3645 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
3646 (build-system ruby-build-system)
3647 (native-inputs
3648 `(("ruby-bacon" ,ruby-bacon)))
3649 (synopsis "Creole markup language converter")
3650 (description
3651 "Creole is a lightweight markup language and this library for converting
3652creole to @code{HTML}.")
3653 (home-page "https://github.com/minad/creole")
3654 (license license:ruby)))
3655
6aaa815e
PP
3656(define-public ruby-docile
3657 (package
3658 (name "ruby-docile")
3659 (version "1.1.5")
3660 (source
3661 (origin
3662 (method url-fetch)
3663 (uri (rubygems-uri "docile" version))
3664 (sha256
3665 (base32
3666 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
3667 (build-system ruby-build-system)
3668 (arguments
3669 '(#:tests? #f)) ; needs github-markup, among others
3670 (synopsis "Ruby EDSL helper library")
3671 (description "Docile is a Ruby library that provides an interface for
3672creating embedded domain specific languages (EDSLs) that manipulate existing
3673Ruby classes.")
3674 (home-page "https://ms-ati.github.io/docile/")
3675 (license license:expat)))
3676
44514637 3677(define-public ruby-gherkin
62e4cc5a 3678 (package
44514637 3679 (name "ruby-gherkin")
8929f0a4 3680 (version "4.1.3")
62e4cc5a
PP
3681 (source
3682 (origin
3683 (method url-fetch)
44514637 3684 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
3685 (sha256
3686 (base32
8929f0a4 3687 "1d18r8mf2qyd9jbq9xxvca8adyysdzvwdy8v9c2s5hrd6p02kg79"))))
62e4cc5a
PP
3688 (build-system ruby-build-system)
3689 (native-inputs
3690 `(("bundler" ,bundler)))
3691 (arguments
3692 '(#:tests? #f)) ; needs simplecov, among others
3693 (synopsis "Gherkin parser for Ruby")
44514637
BW
3694 (description "Gherkin is a parser and compiler for the Gherkin language.
3695It is intended be used by all Cucumber implementations to parse '.feature'
3696files.")
62e4cc5a
PP
3697 (home-page "https://github.com/cucumber/gherkin3")
3698 (license license:expat)))
cd89fecb
PP
3699
3700(define-public ruby-cucumber-core
3701 (package
3702 (name "ruby-cucumber-core")
dc97df2e 3703 (version "2.0.0")
cd89fecb
PP
3704 (source
3705 (origin
3706 (method url-fetch)
3707 (uri (rubygems-uri "cucumber-core" version))
3708 (sha256
3709 (base32
dc97df2e 3710 "136hnvqv444qyxzcgy1k60y4i6cn3sn9lbqr4wan9dzz1yzllqbm"))))
cd89fecb
PP
3711 (build-system ruby-build-system)
3712 (propagated-inputs
44514637 3713 `(("ruby-gherkin" ,ruby-gherkin)))
cd89fecb
PP
3714 (native-inputs
3715 `(("bundler" ,bundler)))
3716 (arguments
3717 '(#:tests? #f)) ; needs simplecov, among others
3718 (synopsis "Core library for the Cucumber BDD app")
3719 (description "Cucumber is a tool for running automated tests
3720written in plain language. Because they're written in plain language,
3721they can be read by anyone on your team. Because they can be read by
3722anyone, you can use them to help improve communication, collaboration
3723and trust on your team.")
3724 (home-page "https://cucumber.io/")
3725 (license license:expat)))
212d563d
PP
3726
3727(define-public ruby-bio-logger
3728 (package
3729 (name "ruby-bio-logger")
3730 (version "1.0.1")
3731 (source
3732 (origin
3733 (method url-fetch)
3734 (uri (rubygems-uri "bio-logger" version))
3735 (sha256
3736 (base32
3737 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
3738 (build-system ruby-build-system)
3739 (arguments
3740 `(#:tests? #f)) ; rake errors, missing shoulda
3741 (propagated-inputs
3742 `(("ruby-log4r" ,ruby-log4r)))
3743 (synopsis "Log4r wrapper for Ruby")
3744 (description "Bio-logger is a wrapper around Log4r adding extra logging
3745features such as filtering and fine grained logging.")
3746 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
3747 (license license:expat)))
07f61cb2 3748
2db0f9c8
BW
3749(define-public ruby-yajl-ruby
3750 (package
3751 (name "ruby-yajl-ruby")
3752 (version "1.4.1")
3753 (source
3754 (origin
3755 (method url-fetch)
3756 (uri (rubygems-uri "yajl-ruby" version))
3757 (sha256
3758 (base32
3759 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
3760 (build-system ruby-build-system)
3761 (arguments
3762 '(#:test-target "spec"
3763 #:phases
3764 (modify-phases %standard-phases
3765 (add-before 'check 'patch-test-to-update-load-path
3766 (lambda _
3767 (substitute* "spec/parsing/large_number_spec.rb"
3768 (("require \"yajl\"")
3769 "$LOAD_PATH << 'lib'; require 'yajl'"))
3770 #t)))))
3771 (native-inputs
3772 `(("ruby-rake-compiler" ,ruby-rake-compiler)
3773 ("ruby-rspec" ,ruby-rspec)))
3774 (synopsis "Streaming JSON parsing and encoding library for Ruby")
3775 (description
3776 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
3777is compatible with the JSON gem, so yajl-ruby can act as a drop in
3778replacement.
3779
3780A modified copy of yajl is used, and included in the package.")
3781 (home-page "https://github.com/brianmario/yajl-ruby")
3782 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
3783 license:bsd-3)))) ; Included, modified copy of yajl
3784
07f61cb2 3785(define-public ruby-yard
6499893e
BW
3786 (package
3787 (name "ruby-yard")
3788 (version "0.9.6")
3789 (source
3790 (origin
3791 (method url-fetch)
3792 ;; Tests do not pass if we build from the distributed gem.
3793 (uri (string-append "https://github.com/lsegal/yard/archive/v"
3a3e3099 3794 version ".tar.gz"))
6499893e
BW
3795 (file-name (string-append name "-" version ".tar.gz"))
3796 (sha256
3797 (base32
3798 "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
3799 (build-system ruby-build-system)
3800 (arguments
3801 `(#:phases
3802 (modify-phases %standard-phases
3803 (replace 'check
3804 (lambda _
3805 ;; $HOME needs to be set to somewhere writeable for tests to run
3806 (setenv "HOME" "/tmp")
3807 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 3808 (invoke "rspec"))))))
6499893e
BW
3809 (native-inputs
3810 `(("ruby-rspec" ,ruby-rspec)
3811 ("ruby-rack" ,ruby-rack)))
3812 (synopsis "Documentation generation tool for Ruby")
3813 (description
3814 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
3815language. It enables the user to generate consistent, usable documentation
3816that can be exported to a number of formats very easily, and also supports
3817extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 3818 (home-page "https://yardoc.org")
6499893e 3819 (license license:expat)))
2cbcd23a 3820
ad686ef3
RW
3821(define-public ruby-clap
3822 (package
3823 (name "ruby-clap")
3824 (version "1.0.0")
3825 (source (origin
3826 (method url-fetch)
3827 (uri (rubygems-uri "clap" version))
3828 (sha256
3829 (base32
3830 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
3831 (build-system ruby-build-system)
3832 ;; Clap needs cutest for running tests, but cutest needs clap.
3833 (arguments `(#:tests? #f))
3834 (synopsis "Command line argument parsing for simple applications")
3835 (description
3836 "Clap provides command line argument parsing features. It covers the
3837simple case of executing code based on the flags or parameters passed.")
3838 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
3839 (license license:expat)))
3840
3841(define-public ruby-cutest
3842 (package
3843 (name "ruby-cutest")
3844 (version "1.2.2")
3845 (source (origin
3846 (method url-fetch)
3847 (uri (rubygems-uri "cutest" version))
3848 (sha256
3849 (base32
3850 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
3851 (build-system ruby-build-system)
3852 (propagated-inputs
3853 `(("ruby-clap" ,ruby-clap)))
3854 (synopsis "Run tests in separate processes")
3855 (description
3856 "Cutest runs tests in separate processes to avoid shared state.")
3857 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
3858 (license license:expat)))
3859
ac09beba
RW
3860(define-public ruby-pygmentize
3861 (package
3862 (name "ruby-pygmentize")
3863 (version "0.0.3")
3864 (source (origin
3865 (method url-fetch)
3866 (uri (rubygems-uri "pygmentize" version))
3867 (sha256
3868 (base32
3869 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
3870 (build-system ruby-build-system)
3871 (arguments
3872 `(#:phases
3873 (modify-phases %standard-phases
3874 (add-after 'unpack 'fix-pygmentize-path
3875 (lambda _
3876 (substitute* "lib/pygmentize.rb"
3877 (("\"/usr/bin/env python.*")
3878 (string-append "\"" (which "pygmentize") "\"\n")))
3879 #t))
3880 (add-after 'build 'do-not-use-vendor-directory
3881 (lambda _
3882 ;; Remove bundled pygments sources
3883 ;; FIXME: ruby-build-system does not support snippets.
3884 (delete-file-recursively "vendor")
3885 (substitute* "pygmentize.gemspec"
3886 (("\"vendor/\\*\\*/\\*\",") ""))
3887 #t)))))
3888 (inputs
3889 `(("pygments" ,python-pygments)))
3890 (native-inputs
3891 `(("ruby-cutest" ,ruby-cutest)
3892 ("ruby-nokogiri" ,ruby-nokogiri)))
3893 (synopsis "Thin Ruby wrapper around pygmentize")
3894 (description
3895 "Pygmentize provides a simple way to call pygmentize from within a Ruby
3896application.")
3897 (home-page "https://github.com/djanowski/pygmentize")
3898 (license license:expat)))
3899
2cbcd23a
DT
3900(define-public ruby-eventmachine
3901 (package
3902 (name "ruby-eventmachine")
c207fa5e 3903 (version "1.2.7")
2cbcd23a
DT
3904 (source
3905 (origin
3906 (method url-fetch)
3907 (uri (rubygems-uri "eventmachine" version))
3908 (sha256
3909 (base32
c207fa5e 3910 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
3911 (build-system ruby-build-system)
3912 (arguments
c5d269fb 3913 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
3914 (native-inputs
3915 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
3916 (synopsis "Single-threaded network event framework for Ruby")
3917 (description
3918 "EventMachine implements a single-threaded engine for arbitrary network
3919communications. EventMachine wraps all interactions with sockets, allowing
3920programs to concentrate on the implementation of network protocols. It can be
3921used to create both network servers and clients.")
24a26227
TGR
3922 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
3923 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 3924 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 3925
e218b0c8
BW
3926(define-public ruby-ruby-engine
3927 (package
3928 (name "ruby-ruby-engine")
3929 (version "1.0.1")
3930 (source
3931 (origin
3932 (method url-fetch)
3933 (uri (rubygems-uri "ruby_engine" version))
3934 (sha256
3935 (base32
3936 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
3937 (build-system ruby-build-system)
3938 (arguments
3939 `(#:phases
3940 (modify-phases %standard-phases
3941 (add-before 'check 'clean-up
3942 (lambda _
3943 (delete-file "Gemfile.lock")
3944 (substitute* "ruby_engine.gemspec"
3945 ;; Remove unnecessary imports that would entail further
3946 ;; dependencies.
3947 ((".*<rdoc.*") "")
3948 ((".*<rubygems-tasks.*") "")
3949 ;; Remove extraneous .gem file
3950 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
3951 ;; Soften rake dependency
3952 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
3953 "%q<rake>.freeze, [\">= 10.0\"]")
3954 ;; Soften the rspec dependency
3955 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
3956 "%q<rspec>.freeze, [\">= 2.4\"]"))
3957 (substitute* "Rakefile"
3958 (("require 'rubygems/tasks'") "")
3959 (("Gem::Tasks.new") ""))
3960 ;; Remove extraneous .gem file that otherwise gets installed.
3961 (delete-file "pkg/ruby_engine-1.0.0.gem")
3962 #t)))))
3963 (native-inputs
3964 `(("bundler" ,bundler)
3965 ("ruby-rake" ,ruby-rake)
3966 ("ruby-rspec" ,ruby-rspec)))
3967 (synopsis "Simplifies checking for Ruby implementation")
3968 (description
3969 "@code{ruby_engine} provides an RubyEngine class that can be used to
3970check which implementation of Ruby is in use. It can provide the interpreter
3971name and provides query methods such as @{RubyEngine.mri?}.")
3972 (home-page "https://github.com/janlelis/ruby_engine")
3973 (license license:expat)))
3974
8092e333
BW
3975(define-public ruby-turn
3976 (package
3977 (name "ruby-turn")
3978 (version "0.9.7")
3979 (source
3980 (origin
3981 (method url-fetch)
3982 (uri (rubygems-uri "turn" version))
3983 (sha256
3984 (base32
3985 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
3986 (build-system ruby-build-system)
3987 (arguments
3988 `(#:phases
3989 (modify-phases %standard-phases
3990 ;; Tests fail because turn changes its environment so can no longer
3991 ;; find test/unit. Instead simply test if the executable runs
3992 ;; without issue.
3993 (replace 'check
3994 (lambda _
9923d5a4 3995 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
3996 (propagated-inputs
3997 `(("ruby-ansi" ,ruby-ansi)
3998 ("ruby-minitest" ,ruby-minitest-4)))
3999 (synopsis "Alternate set of alternative runners for MiniTest")
4000 (description
4001 "TURN provides a set of alternative runners for MiniTest which are both
4002colorful and informative. TURN displays each test on a separate line with
4003failures being displayed immediately instead of at the end of the tests. Note
4004that TURN is no longer being maintained.")
4005 (home-page "http://rubygems.org/gems/turn")
4006 (license license:expat)))
4007
8279b1d3
CB
4008(define-public ruby-mimemagic
4009 (package
4010 (name "ruby-mimemagic")
4011 (version "0.3.2")
4012 (source
4013 (origin
4014 (method url-fetch)
4015 (uri (rubygems-uri "mimemagic" version))
4016 (sha256
4017 (base32
4018 "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q"))))
4019 (build-system ruby-build-system)
4020 (arguments
4021 '(#:phases
4022 (modify-phases %standard-phases
4023 ;; This phase breaks the tests, as it patches some of the test data.
4024 (delete 'patch-source-shebangs))))
4025 (native-inputs
4026 `(("ruby-bacon" ,ruby-bacon)))
4027 (synopsis "Ruby library for MIME detection by extension or content")
4028 (description
4029 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
4030extension or content, using the freedesktop.org.xml shared-mime-info
4031database.")
4032 (home-page "https://github.com/minad/mimemagic")
4033 (license license:expat)))
4034
32d1c06f
BW
4035(define-public ruby-mime-types-data
4036 (package
4037 (name "ruby-mime-types-data")
f49511db 4038 (version "3.2016.0521")
32d1c06f
BW
4039 (source
4040 (origin
4041 (method url-fetch)
4042 (uri (rubygems-uri "mime-types-data" version))
4043 (sha256
4044 (base32
f49511db 4045 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
4046 (build-system ruby-build-system)
4047 (native-inputs
4048 `(("ruby-hoe" ,ruby-hoe)))
4049 (synopsis "Registry for information about MIME media type definitions")
4050 (description
4051 "@code{mime-types-data} provides a registry for information about
4052Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
4053be used with the Ruby mime-types library or other software to determine
4054defined filename extensions for MIME types, or to use filename extensions to
4055look up the likely MIME type definitions.")
4056 (home-page "https://github.com/mime-types/mime-types-data/")
4057 (license license:expat)))
4058
d39b606c
BW
4059(define-public ruby-mime-types
4060 (package
4061 (name "ruby-mime-types")
803bcc81 4062 (version "3.1")
d39b606c
BW
4063 (source
4064 (origin
4065 (method url-fetch)
4066 (uri (rubygems-uri "mime-types" version))
4067 (sha256
4068 (base32
803bcc81 4069 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
4070 (build-system ruby-build-system)
4071 (propagated-inputs
4072 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
4073 (native-inputs
4074 `(("ruby-hoe" ,ruby-hoe)
4075 ("ruby-fivemat" ,ruby-fivemat)
4076 ("ruby-minitest-focus" ,ruby-minitest-focus)
4077 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
4078 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
4079 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
4080 (synopsis "Library and registry for MIME content type definitions")
4081 (description "The mime-types library provides a library and registry for
4082information about Multipurpose Internet Mail Extensions (MIME) content type
4083definitions. It can be used to determine defined filename extensions for MIME
4084types, or to use filename extensions to look up the likely MIME type
4085definitions.")
4086 (home-page "https://github.com/mime-types/ruby-mime-types")
4087 (license license:expat)))
4088
eb5e0bd9
BW
4089(define-public ruby-fivemat
4090 (package
4091 (name "ruby-fivemat")
7e2a4a6b 4092 (version "1.3.6")
eb5e0bd9
BW
4093 (source
4094 (origin
4095 (method url-fetch)
4096 (uri (rubygems-uri "fivemat" version))
4097 (sha256
4098 (base32
7e2a4a6b 4099 "006n7b09vviv5bs5hv2ccmjxw9iw3brcsm3xh3dhzfncsknz4jp7"))))
eb5e0bd9
BW
4100 (build-system ruby-build-system)
4101 (arguments
4102 `(#:tests? #f)) ; no tests
4103 (synopsis "Each test file given its own line of dots")
4104 (description
4105 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
4106its own line of dots during testing. It aims to provide test output that is
4107neither too verbose nor too minimal.")
4108 (home-page "https://github.com/tpope/fivemat")
4109 (license license:expat)))
4110
4fea500b
BW
4111(define-public ruby-sqlite3
4112 (package
4113 (name "ruby-sqlite3")
cba53c60 4114 (version "1.3.13")
4fea500b
BW
4115 (source
4116 (origin
4117 (method url-fetch)
4118 (uri (rubygems-uri "sqlite3" version))
4119 (sha256
4120 (base32
cba53c60 4121 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
4122 (build-system ruby-build-system)
4123 (arguments
4124 `(#:phases
4125 (modify-phases %standard-phases
54a93355
MB
4126 (add-before 'check 'adjust-failing-test
4127 (lambda _
4128 ;; XXX: This test fails with SQLite versions >= 3.21.
4129 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
4130 (substitute* "test/test_integration_resultset.rb"
4131 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
4132 #t))
4fea500b
BW
4133 (add-before 'check 'add-gemtest-file
4134 ;; This file exists in the repository but is not distributed.
9923d5a4 4135 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
4136 (inputs
4137 `(("sqlite" ,sqlite)))
4138 (native-inputs
4139 `(("ruby-hoe" ,ruby-hoe)
4140 ("ruby-rake-compiler" ,ruby-rake-compiler)
4141 ("ruby-mini-portile" ,ruby-mini-portile)))
4142 (synopsis "Interface with SQLite3 databases")
4143 (description
4144 "This module allows Ruby programs to interface with the SQLite3 database
4145engine.")
4146 (home-page
4147 "https://github.com/sparklemotion/sqlite3-ruby")
4148 (license license:bsd-3)))
4149
4dfa39cc
BW
4150(define-public ruby-shoulda-context
4151 (package
4152 (name "ruby-shoulda-context")
e7d1d472 4153 (version "1.2.2")
4dfa39cc
BW
4154 (source
4155 (origin
4156 (method url-fetch)
4157 (uri (rubygems-uri "shoulda-context" version))
4158 (sha256
4159 (base32
e7d1d472 4160 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
4161 (build-system ruby-build-system)
4162 (arguments
4163 `(#:phases
4164 (modify-phases %standard-phases
4165 (replace 'check
4166 (lambda _
4167 ;; Do not run tests to avoid circular dependence with rails.
4168 ;; Instead just import the library to test.
9923d5a4 4169 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
4170 (synopsis "Test::Unit context framework extracted from Shoulda")
4171 (description
4172 "@code{shoulda-context} is the context framework extracted from Shoulda.
4173Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
4174context, setup, and should blocks combine to produce natural test method
4175names.")
4176 (home-page "https://github.com/thoughtbot/shoulda-context")
4177 (license license:expat)))
4178
e4fea008
BW
4179(define-public ruby-shoulda-matchers
4180 (package
4181 (name "ruby-shoulda-matchers")
d1c1f368 4182 (version "3.1.2")
e4fea008
BW
4183 (source
4184 (origin
4185 (method url-fetch)
4186 (uri (rubygems-uri "shoulda-matchers" version))
4187 (sha256
4188 (base32
d1c1f368 4189 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
4190 (build-system ruby-build-system)
4191 (arguments
4192 `(#:phases
4193 (modify-phases %standard-phases
e4fea008
BW
4194 (replace 'check
4195 (lambda _
4196 ;; Do not run tests to avoid circular dependence with rails. Instead
4197 ;; just import the library to test.
9923d5a4 4198 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
4199 (propagated-inputs
4200 `(("ruby-activesupport" ,ruby-activesupport)))
4201 (synopsis "Collection of testing matchers extracted from Shoulda")
4202 (description
4203 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
4204test common Rails functionality. These tests would otherwise be much longer,
4205more complex, and error-prone.")
4206 (home-page "https://github.com/thoughtbot/shoulda-matchers")
4207 (license license:expat)))
4208
3885c58b
BW
4209(define-public ruby-shoulda-matchers-2
4210 (package
4211 (inherit ruby-shoulda-matchers)
4212 (version "2.8.0")
4213 (source (origin
4214 (method url-fetch)
4215 (uri (rubygems-uri "shoulda-matchers" version))
4216 (sha256
4217 (base32
4218 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
4219
6f390716
BW
4220(define-public ruby-shoulda
4221 (package
4222 (name "ruby-shoulda")
4223 (version "3.5.0")
4224 (source
4225 (origin
4226 (method url-fetch)
4227 (uri (rubygems-uri "shoulda" version))
4228 (sha256
4229 (base32
4230 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
4231 (build-system ruby-build-system)
4232 (arguments
4233 `(#:phases
4234 (modify-phases %standard-phases
4235 (replace 'check
4236 ;; Don't run tests to avoid circular dependence with rails. Instead
4237 ;; just import the library to test.
9923d5a4 4238 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
4239 (propagated-inputs
4240 `(("ruby-shoulda-context" ,ruby-shoulda-context)
4241 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
4242 (synopsis "Context framework and matchers for testing")
4243 (description
4244 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
4245@code{shoulda-matchers} providing tools for writing tests.")
4246 (home-page "https://github.com/thoughtbot/shoulda")
4247 (license license:expat)))
4248
3b44bcdf
BW
4249(define-public ruby-unf
4250 (package
4251 (name "ruby-unf")
4252 (version "0.1.4")
4253 (source
4254 (origin
4255 (method url-fetch)
4256 (uri (rubygems-uri "unf" version))
4257 (sha256
4258 (base32
4259 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
4260 (build-system ruby-build-system)
4261 (arguments
4262 `(#:phases
4263 (modify-phases %standard-phases
4264 (add-before 'check 'add-dependency-to-bundler
4265 (lambda _
4266 ;; test-unit is required but not provided by the bundler
4267 ;; environment. This is fixed in the upstream repository but fix
4268 ;; has not been released.
4269 (substitute* "Gemfile"
4270 (("^gemspec") "gem 'test-unit'\ngemspec"))
4271 #t)))))
4272 (propagated-inputs
4273 `(("ruby-unf-ext" ,ruby-unf-ext)))
4274 (native-inputs
4275 `(("ruby-shoulda" ,ruby-shoulda)
4276 ("bundler" ,bundler)
4277 ("ruby-test-unit" ,ruby-test-unit)))
4278 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
4279 (description
4280 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
4281support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
4282@code{java.text.Normalizer} on JRuby.")
4283 (home-page "https://github.com/knu/ruby-unf")
4284 (license license:bsd-2)))
4285
5799aadd
BW
4286(define-public ruby-domain-name
4287 (package
4288 (name "ruby-domain-name")
222999c9 4289 (version "0.5.20180417")
5799aadd
BW
4290 (source
4291 (origin
4292 (method url-fetch)
4293 (uri (rubygems-uri "domain_name" version))
4294 (sha256
4295 (base32
222999c9 4296 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
4297 (build-system ruby-build-system)
4298 (arguments
4299 `(#:phases
4300 (modify-phases %standard-phases
4301 (add-before 'check 'fix-versions
4302 (lambda _
4303 ;; Fix NameError that appears to already be fixed upstream.
4304 (substitute* "Rakefile"
4305 (("DomainName::VERSION")
4306 "Bundler::GemHelper.gemspec.version"))
4307 ;; Loosen unnecessarily strict test-unit version specification.
4308 (substitute* "domain_name.gemspec"
71596c3c 4309 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
4310 #t)))))
4311 (propagated-inputs
4312 `(("ruby-unf" ,ruby-unf)))
4313 (native-inputs
4314 `(("ruby-shoulda" ,ruby-shoulda)
4315 ("bundler" ,bundler)
4316 ("ruby-test-unit" ,ruby-test-unit)))
4317 (synopsis "Domain name manipulation library")
4318 (description
4319 "@code{domain_name} is a Domain name manipulation library. It parses a
4320domain name ready for extracting the registered domain and TLD (Top Level
4321Domain). It can also be used for cookie domain validation based on the Public
4322Suffix List.")
4323 (home-page "https://github.com/knu/ruby-domain_name")
4324 (license license:bsd-2)))
4325
d114ceeb
BW
4326(define-public ruby-http-cookie
4327 (package
4328 (name "ruby-http-cookie")
2a2eb07d 4329 (version "1.0.3")
d114ceeb
BW
4330 (source
4331 (origin
4332 (method url-fetch)
4333 (uri (rubygems-uri "http-cookie" version))
4334 (sha256
4335 (base32
2a2eb07d 4336 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
4337 (build-system ruby-build-system)
4338 (arguments
4339 `(#:phases
4340 (modify-phases %standard-phases
4341 (add-before 'check 'add-dependency-to-bundler
4342 (lambda _
4343 ;; Fix NameError
4344 (substitute* "Rakefile"
4345 (("HTTP::Cookie::VERSION")
4346 "Bundler::GemHelper.gemspec.version"))
4347 #t)))))
4348 (propagated-inputs
4349 `(("ruby-domain-name" ,ruby-domain-name)))
4350 (native-inputs
4351 `(("rubysimplecov" ,ruby-simplecov)
4352 ("bundler" ,bundler)
4353 ("ruby-sqlite3" ,ruby-sqlite3)
4354 ("ruby-test-unit" ,ruby-test-unit)))
4355 (synopsis "Handle HTTP Cookies based on RFC 6265")
4356 (description
4357 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
4358RFC 6265. It has been designed with security, standards compliance and
4359compatibility in mind, to behave just the same as today's major web browsers.
4360It has built-in support for the legacy @code{cookies.txt} and
4361@code{cookies.sqlite} formats of Mozilla Firefox.")
4362 (home-page "https://github.com/sparklemotion/http-cookie")
4363 (license license:expat)))
4364
1c8e6fd3
CB
4365(define-public ruby-httpclient
4366 (package
4367 (name "ruby-httpclient")
4368 (version "2.8.3")
4369 (source
4370 (origin
4371 (method url-fetch)
4372 (uri (rubygems-uri "httpclient" version))
4373 (sha256
4374 (base32
4375 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
4376 (build-system ruby-build-system)
4377 (arguments
4378 '(;; TODO: Some tests currently fail
4379 ;; ------
4380 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
4381 ;; 2 omissions, 0 notifications
4382 ;; 91.866% passed
4383 ;; ------
4384 ;; 6.49 tests/s, 22.41 assertions/s
4385 #:tests? #f
4386 #:phases
4387 (modify-phases %standard-phases
4388 (replace 'check
4389 (lambda* (#:key tests? #:allow-other-keys)
4390 (if tests?
9923d5a4
TGR
4391 (invoke "ruby"
4392 "-Ilib"
4393 "test/runner.rb")
0076f5a9 4394 #t))))))
1c8e6fd3
CB
4395 (native-inputs
4396 `(("ruby-rack" ,ruby-rack)))
4397 (synopsis
4398 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
4399 (description
4400 "The @code{httpclient} ruby library provides functionality related to
4401HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
4402Cookie, multithreading and authentication (digest, NTLM) support.
4403
4404Also provided is a @command{httpclient} command, which can perform HTTP
4405requests either using arguments or with an interactive prompt.")
4406 (home-page "https://github.com/nahi/httpclient")
4407 (license license:ruby)))
4408
7d3a1a2d
BW
4409(define-public ruby-ansi
4410 (package
4411 (name "ruby-ansi")
4412 (version "1.5.0")
4413 (source
4414 (origin
4415 (method url-fetch)
4416 ;; Fetch from GitHub as the gem does not contain testing code.
4417 (uri (string-append "https://github.com/rubyworks/ansi/archive/"
4418 version ".tar.gz"))
4419 (file-name (string-append name "-" version ".tar.gz"))
4420 (sha256
4421 (base32
4422 "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
4423 (build-system ruby-build-system)
4424 (arguments
4425 `(#:phases
4426 (modify-phases %standard-phases
4427 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
4428 ;; cycle ansi, qed, ansi. Instead simply test that the library can
4429 ;; be require'd.
4430 (replace 'check
4431 (lambda _
9923d5a4 4432 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
4433 (add-before 'validate-runpath 'replace-broken-symlink
4434 (lambda* (#:key outputs #:allow-other-keys)
4435 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
4436 (file (string-append
4437 out "/lib/ruby/vendor_ruby/gems/ansi-"
4438 ,version "/lib/ansi.yml")))
0899352f
MB
4439 ;; XXX: This symlink is broken since ruby 2.4.
4440 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
4441 (delete-file file)
4442 (symlink "../.index" file)
4443 #t))))))
7d3a1a2d
BW
4444 (synopsis "ANSI escape code related libraries")
4445 (description
4446 "This package is a collection of ANSI escape code related libraries
4447enabling ANSI colorization and stylization of console output. Included in the
4448library are the @code{Code} module, which defines ANSI codes as constants and
4449methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
4450@code{ProgressBar}, and a @code{String} subclass. The library also includes a
4451@code{Terminal} module which provides information about the current output
4452device.")
2f3800e5 4453 (home-page "https://rubyworks.github.io/ansi")
7d3a1a2d 4454 (license license:bsd-2)))
7c033c46
BW
4455
4456(define-public ruby-systemu
4457 (package
4458 (name "ruby-systemu")
4459 (version "2.6.5")
4460 (source
4461 (origin
4462 (method url-fetch)
4463 (uri (rubygems-uri "systemu" version))
4464 (sha256
4465 (base32
4466 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
4467 (build-system ruby-build-system)
4468 (arguments
4469 `(#:phases
4470 (modify-phases %standard-phases
4471 (add-before 'check 'set-version
4472 (lambda _
4473 (setenv "VERSION" ,version)
4474 #t)))))
4475 (synopsis "Capture of stdout/stderr and handling of child processes")
4476 (description
4477 "Systemu can be used on any platform to return status, stdout, and stderr
4478of any command. Unlike other methods like @code{open3} and @code{popen4}
4479there is no danger of full pipes or threading issues hanging your process or
4480subprocess.")
4481 (home-page "https://github.com/ahoward/systemu")
4482 (license license:ruby)))
3d84a99e
BW
4483
4484(define-public ruby-bio-commandeer
4485 (package
4486 (name "ruby-bio-commandeer")
37b08547 4487 (version "0.4.0")
3d84a99e
BW
4488 (source
4489 (origin
4490 (method url-fetch)
4491 (uri (rubygems-uri "bio-commandeer" version))
4492 (sha256
4493 (base32
37b08547 4494 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
4495 (build-system ruby-build-system)
4496 (arguments
4497 `(#:phases
4498 (modify-phases %standard-phases
4499 (replace 'check
4500 ;; Run test without calling 'rake' so that jeweler is
4501 ;; not required as an input.
4502 (lambda _
9923d5a4 4503 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
4504 (propagated-inputs
4505 `(("ruby-bio-logger" ,ruby-bio-logger)
4506 ("ruby-systemu" ,ruby-systemu)))
4507 (native-inputs
4508 `(("bundler" ,bundler)
4509 ("ruby-rspec" ,ruby-rspec)))
4510 (synopsis "Simplified running of shell commands from within Ruby")
4511 (description
4512 "Bio-commandeer provides an opinionated method of running shell commands
4513from within Ruby. The advantage of bio-commandeer over other methods of
4514running external commands is that when something goes wrong, messages printed
4515to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
4516detail to ease debugging.")
7bf837fd 4517 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 4518 (license license:expat)))
7c8131c7
BW
4519
4520(define-public ruby-rubytest
4521 (package
4522 (name "ruby-rubytest")
4523 (version "0.8.1")
4524 (source
4525 (origin
4526 (method url-fetch)
4527 (uri (rubygems-uri "rubytest" version))
4528 (sha256
4529 (base32
4530 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
4531 (build-system ruby-build-system)
4532 (arguments
4533 ;; Disable regular testing to break the cycle rubytest, qed, brass,
4534 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
4535 ;; simply test that the library can be require'd.
4536 `(#:phases
4537 (modify-phases %standard-phases
4538 (replace 'check
4539 (lambda _
9923d5a4 4540 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
4541 (propagated-inputs
4542 `(("ruby-ansi" ,ruby-ansi)))
4543 (synopsis "Universal test harness for Ruby")
4544 (description
4545 "Rubytest is a testing meta-framework for Ruby. It can handle any
4546compliant test framework and can run tests from multiple frameworks in a
4547single pass.")
2f3800e5 4548 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 4549 (license license:bsd-2)))
90fcedf2
BW
4550
4551(define-public ruby-brass
4552 (package
4553 (name "ruby-brass")
4554 (version "1.2.1")
4555 (source
4556 (origin
4557 (method url-fetch)
4558 (uri (rubygems-uri "brass" version))
4559 (sha256
4560 (base32
4561 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
4562 (build-system ruby-build-system)
4563 (arguments
4564 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
4565 ;; Instead simply test that the library can be require'd.
4566 `(#:phases
4567 (modify-phases %standard-phases
4568 (replace 'check
4569 (lambda _
9923d5a4 4570 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
4571 (synopsis "Basic foundational assertions framework")
4572 (description
4573 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
4574foundational assertions framework for other assertion and test frameworks to
4575make use of.")
2f3800e5 4576 (home-page "https://rubyworks.github.io/brass")
90fcedf2 4577 (license license:bsd-2)))
120fc74b
BW
4578
4579(define-public ruby-qed
4580 (package
4581 (name "ruby-qed")
4582 (version "2.9.2")
4583 (source
4584 (origin
4585 (method url-fetch)
4586 (uri (rubygems-uri "qed" version))
4587 (sha256
4588 (base32
4589 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
4590 (build-system ruby-build-system)
4591 (arguments
4592 ;; Disable testing to break the cycle qed, ansi, qed, among others.
4593 ;; Instead simply test that the executable runs using --copyright.
4594 `(#:phases
4595 (modify-phases %standard-phases
4596 (replace 'check
4597 (lambda _
9923d5a4 4598 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
4599 (propagated-inputs
4600 `(("ruby-ansi" ,ruby-ansi)
4601 ("ruby-brass" ,ruby-brass)))
4602 (synopsis "Test framework utilizing literate programming techniques")
4603 (description
4604 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
4605@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
4606Development} (BDD) utilizing Literate Programming techniques. QED sits
4607somewhere between lower-level testing tools like @code{Test::Unit} and
4608requirement specifications systems like Cucumber.")
2f3800e5 4609 (home-page "https://rubyworks.github.io/qed")
120fc74b 4610 (license license:bsd-2)))
9273ee8f
BW
4611
4612(define-public ruby-ae
4613 (package
4614 (name "ruby-ae")
4615 (version "1.8.2")
4616 (source
4617 (origin
4618 (method url-fetch)
4619 ;; Fetch from github so tests are included.
4620 (uri (string-append
4621 "https://github.com/rubyworks/ae/archive/"
4622 version ".tar.gz"))
4623 (file-name (string-append name "-" version ".tar.gz"))
4624 (sha256
4625 (base32
4626 "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
4627 (build-system ruby-build-system)
4628 (arguments
4629 `(#:phases
4630 (modify-phases %standard-phases
4631 (replace 'check
9923d5a4 4632 (lambda _ (invoke "qed")))
de6f6efd
MB
4633 (add-before 'validate-runpath 'replace-broken-symlink
4634 (lambda* (#:key outputs #:allow-other-keys)
4635 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
4636 (file (string-append
4637 out "/lib/ruby/vendor_ruby/gems/ae-"
4638 ,version "/lib/ae.yml")))
de6f6efd
MB
4639 ;; XXX: This symlink is broken since ruby 2.4.
4640 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
4641 (delete-file file)
4642 (symlink "../.index" file)
4643 #t))))))
9273ee8f
BW
4644 (propagated-inputs
4645 `(("ruby-ansi" ,ruby-ansi)))
4646 (native-inputs
4647 `(("ruby-qed" ,ruby-qed)))
4648 (synopsis "Assertions library")
4649 (description
4650 "Assertive Expressive (AE) is an assertions library specifically designed
4651for reuse by other test frameworks.")
2f3800e5 4652 (home-page "https://rubyworks.github.io/ae")
9273ee8f 4653 (license license:bsd-2)))
78bb471f
BW
4654
4655(define-public ruby-lemon
4656 (package
4657 (name "ruby-lemon")
4658 (version "0.9.1")
4659 (source
4660 (origin
4661 (method url-fetch)
4662 (uri (rubygems-uri "lemon" version))
4663 (sha256
4664 (base32
4665 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
4666 (build-system ruby-build-system)
4667 (arguments
4668 `(#:phases
4669 (modify-phases %standard-phases
9923d5a4 4670 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
4671 (propagated-inputs
4672 `(("ruby-ae" ,ruby-ae)
4673 ("ruby-ansi" ,ruby-ansi)
4674 ("ruby-rubytest" ,ruby-rubytest)))
4675 (native-inputs
4676 `(("ruby-qed" ,ruby-qed)))
4677 (synopsis "Test framework correlating code structure and test unit")
4678 (description
4679 "Lemon is a unit testing framework that enforces highly formal
4680case-to-class and unit-to-method test construction. This enforcement can help
4681focus concern on individual units of behavior.")
2f3800e5 4682 (home-page "https://rubyworks.github.io/lemon")
78bb471f 4683 (license license:bsd-2)))
0832804e
BW
4684
4685(define-public ruby-rubytest-cli
4686 (package
4687 (name "ruby-rubytest-cli")
4688 (version "0.2.0")
4689 (source
4690 (origin
4691 (method url-fetch)
4692 (uri (rubygems-uri "rubytest-cli" version))
4693 (sha256
4694 (base32
4695 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
4696 (build-system ruby-build-system)
4697 (arguments
4698 `(#:tests? #f)) ; no tests
4699 (propagated-inputs
4700 `(("ruby-ansi" ,ruby-ansi)
4701 ("ruby-rubytest" ,ruby-rubytest)))
4702 (synopsis "Command-line interface for rubytest")
4703 (description
4704 "Rubytest CLI is a command-line interface for running tests for
4705Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 4706 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 4707 (license license:bsd-2)))
72ccbfe3
BW
4708
4709(define-public ruby-hashery
4710 (package
4711 (name "ruby-hashery")
cba96208 4712 (version "2.1.2")
72ccbfe3
BW
4713 (source
4714 (origin
4715 (method url-fetch)
4716 (uri (rubygems-uri "hashery" version))
4717 (sha256
4718 (base32
cba96208 4719 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
4720 (build-system ruby-build-system)
4721 (arguments
4722 `(#:phases
4723 (modify-phases %standard-phases
4724 (replace 'check
4725 (lambda _
9923d5a4
TGR
4726 (invoke "qed")
4727 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
4728 (native-inputs
4729 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
4730 ("ruby-qed" ,ruby-qed)
4731 ("ruby-lemon" ,ruby-lemon)))
4732 (synopsis "Hash-like classes with extra features")
4733 (description
4734 "The Hashery is a tight collection of @code{Hash}-like classes.
4735Included are the auto-sorting @code{Dictionary} class, the efficient
4736@code{LRUHash}, the flexible @code{OpenHash} and the convenient
4737@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
4738defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
4739standard @code{Hash} making it possible to subclass and augment to fit any
4740specific use case.")
2f3800e5 4741 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 4742 (license license:bsd-2)))
1f1d71e0
BW
4743
4744(define-public ruby-rc4
4745 (package
4746 (name "ruby-rc4")
4747 (version "0.1.5")
4748 (source
4749 (origin
4750 (method url-fetch)
4751 (uri (rubygems-uri "ruby-rc4" version))
4752 (sha256
4753 (base32
4754 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
4755 (build-system ruby-build-system)
4756 (arguments
4757 `(#:phases
4758 (modify-phases %standard-phases
4759 (replace 'check
4760 (lambda _
9923d5a4 4761 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
4762 (native-inputs
4763 `(("ruby-rspec" ,ruby-rspec-2)))
4764 (synopsis "Implementation of the RC4 algorithm")
4765 (description
4766 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
4767 (home-page "https://github.com/caiges/Ruby-RC4")
4768 (license license:expat)))
f3e085a8
BW
4769
4770(define-public ruby-afm
4771 (package
4772 (name "ruby-afm")
4773 (version "0.2.2")
4774 (source
4775 (origin
4776 (method url-fetch)
4777 (uri (rubygems-uri "afm" version))
4778 (sha256
4779 (base32
4780 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
4781 (build-system ruby-build-system)
4782 (native-inputs
4783 `(("bundler" ,bundler)))
4784 (synopsis "Read Adobe Font Metrics (afm) files")
4785 (description
4786 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
4787files and use the data therein.")
7bf837fd 4788 (home-page "https://github.com/halfbyte/afm")
f3e085a8 4789 (license license:expat)))
acb6be42
BW
4790
4791(define-public ruby-ascii85
4792 (package
4793 (name "ruby-ascii85")
5854082a 4794 (version "1.0.3")
acb6be42
BW
4795 (source
4796 (origin
4797 (method url-fetch)
4798 (uri (rubygems-uri "Ascii85" version))
4799 (sha256
4800 (base32
5854082a 4801 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
4802 (build-system ruby-build-system)
4803 (native-inputs
4804 `(("bundler" ,bundler)))
4805 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
4806 (description
4807 "This library provides methods to encode and decode Ascii85
4808binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
4809@dfn{Portable Document Format} (PDF) file formats.")
4810 (home-page "https://github.com/datawraith/ascii85gem")
4811 (license license:expat)))
edf8caae
BW
4812
4813(define-public ruby-ttfunk
4814 (package
4815 (name "ruby-ttfunk")
afb7a3e8 4816 (version "1.5.1")
edf8caae
BW
4817 (source
4818 (origin
4819 (method url-fetch)
4820 ;; fetch from github as the gem does not contain testing code
4821 (uri (string-append
4822 "https://github.com/prawnpdf/ttfunk/archive/"
4823 version ".tar.gz"))
4824 (file-name (string-append name "-" version ".tar.gz"))
4825 (sha256
4826 (base32
afb7a3e8 4827 "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5"))))
edf8caae
BW
4828 (build-system ruby-build-system)
4829 (arguments
4830 `(#:test-target "spec"
4831 #:phases
4832 (modify-phases %standard-phases
afb7a3e8
JL
4833 (add-before 'build 'remove-ssh
4834 (lambda _
4835 ;; remove dependency on an ssh key pair that doesn't exist
4836 (substitute* "ttfunk.gemspec"
4837 (("spec.signing_key.*") ""))
4838 #t))
edf8caae
BW
4839 (add-before 'check 'remove-rubocop
4840 (lambda _
4841 ;; remove rubocop as a dependency as not needed for testing
4842 (substitute* "ttfunk.gemspec"
4843 (("spec.add_development_dependency\\('rubocop'.*") ""))
4844 (substitute* "Rakefile"
4845 (("require 'rubocop/rake_task'") "")
afb7a3e8 4846 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
4847 #t)))))
4848 (native-inputs
4849 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 4850 ("ruby-yard" ,ruby-yard)
edf8caae
BW
4851 ("bundler" ,bundler)))
4852 (synopsis "Font metrics parser for the Prawn PDF generator")
4853 (description
4854 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
4855part of the Prawn PDF generator.")
4856 (home-page "https://github.com/prawnpdf/ttfunk")
4857 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
4858 ;; for details."
4859 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 4860
9270298f
BW
4861(define-public ruby-puma
4862 (package
4863 (name "ruby-puma")
63755fcd 4864 (version "3.9.1")
9270298f
BW
4865 (source
4866 (origin
4867 (method url-fetch)
4868 ;; Fetch from GitHub because distributed gem does not contain tests.
4869 (uri (string-append "https://github.com/puma/puma/archive/v"
4870 version ".tar.gz"))
4871 (file-name (string-append name "-" version ".tar.gz"))
4872 (sha256
4873 (base32
63755fcd 4874 "03pifga841h17brh4vgia8i2ybh3cmsyg0dbybzdf6dq51wzcxdx"))))
9270298f
BW
4875 (build-system ruby-build-system)
4876 (arguments
63755fcd
BW
4877 `(#:tests? #f ; Tests require an out-dated version of minitest.
4878 #:phases
9270298f
BW
4879 (modify-phases %standard-phases
4880 (add-before 'build 'fix-gemspec
4881 (lambda _
4882 (substitute* "puma.gemspec"
4883 (("git ls-files") "find * |sort"))
4884 #t)))))
9270298f
BW
4885 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
4886 (description
4887 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
4888for Ruby/Rack applications. Puma is intended for use in both development and
4889production environments. In order to get the best throughput, it is highly
4890recommended that you use a Ruby implementation with real threads like Rubinius
4891or JRuby.")
4892 (home-page "http://puma.io")
4893 (license license:expat)))
4894
b0813490
BW
4895(define-public ruby-hoe-git
4896 (package
4897 (name "ruby-hoe-git")
4898 (version "1.6.0")
4899 (source
4900 (origin
4901 (method url-fetch)
4902 (uri (rubygems-uri "hoe-git" version))
4903 (sha256
4904 (base32
4905 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
4906 (build-system ruby-build-system)
4907 (propagated-inputs
4908 `(("ruby-hoe" ,ruby-hoe)
4909 ("git" ,git)))
4910 (synopsis "Hoe plugins for tighter Git integration")
4911 (description
4912 "This package provides a set of Hoe plugins for tighter Git integration.
4913It provides tasks to automate release tagging and pushing and changelog
4914generation.")
7bf837fd 4915 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
4916 (license license:expat)))
4917
cbdd428c
BW
4918(define-public ruby-sequel
4919 (package
4920 (name "ruby-sequel")
65a7f09c 4921 (version "4.49.0")
cbdd428c
BW
4922 (source
4923 (origin
4924 (method url-fetch)
4925 (uri (rubygems-uri "sequel" version))
4926 (sha256
4927 (base32
65a7f09c 4928 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
4929 (build-system ruby-build-system)
4930 (arguments
4931 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
4932 (synopsis "Database toolkit for Ruby")
4933 (description "Sequel provides thread safety, connection pooling and a
4934concise DSL for constructing SQL queries and table schemas. It includes a
4935comprehensive ORM layer for mapping records to Ruby objects and handling
4936associated records.")
4937 (home-page "http://sequel.jeremyevans.net")
4938 (license license:expat)))
3cc78097
BW
4939
4940(define-public ruby-timecop
4941 (package
4942 (name "ruby-timecop")
3d4a5eb5 4943 (version "0.9.1")
3cc78097
BW
4944 (source
4945 (origin
4946 (method url-fetch)
4947 (uri (rubygems-uri "timecop" version))
4948 (sha256
4949 (base32
3d4a5eb5 4950 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
4951 (build-system ruby-build-system)
4952 (arguments
4953 `(#:phases
4954 (modify-phases %standard-phases
4955 (add-before 'check 'set-check-rubylib
4956 (lambda _
4957 ;; Set RUBYLIB so timecop tests finds its own lib.
4958 (setenv "RUBYLIB" "lib")
4959 #t)))))
4960 (native-inputs
4961 `(("bundler" ,bundler)
4962 ("ruby-minitest-rg" ,ruby-minitest-rg)
4963 ("ruby-mocha" ,ruby-mocha)
4964 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 4965 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
4966 (description
4967 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
4968making it easier to test time-dependent code. It provides a unified method to
4969mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
4970call.")
4971 (home-page "https://github.com/travisjeffery/timecop")
4972 (license license:expat)))
4973
dae620b8
BW
4974(define-public ruby-concurrent
4975 (package
4976 (name "ruby-concurrent")
21aecec1 4977 (version "1.0.5")
dae620b8
BW
4978 (source
4979 (origin
4980 (method url-fetch)
4981 ;; Download from GitHub because the rubygems version does not contain
4982 ;; Rakefile.
4983 (uri (string-append
4984 "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
4985 version
4986 ".tar.gz"))
4987 (file-name (string-append name "-" version ".tar.gz"))
4988 (sha256
4989 (base32
21aecec1 4990 "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
dae620b8
BW
4991 ;; Exclude failing test reported at
4992 ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
402b03e6
LC
4993 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
4994 "ruby-concurrent-test-arm.patch"))))
dae620b8
BW
4995 (build-system ruby-build-system)
4996 (arguments
4997 `(#:test-target "spec"
4998 #:phases
4999 (modify-phases %standard-phases
520e89eb 5000 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
5001 (lambda _
5002 ;; Delete extra gemspec files so 'first-gemspec' chooses the
5003 ;; correct one.
5004 (delete-file "concurrent-ruby-edge.gemspec")
5005 (delete-file "concurrent-ruby-ext.gemspec")
5006 #t))
520e89eb
BW
5007 (add-before 'build 'replace-git-ls-files2
5008 (lambda _
5009 (substitute* "support/file_map.rb"
5010 (("git ls-files") "find * |sort"))
5011 #t))
dae620b8
BW
5012 (add-before 'check 'rake-compile
5013 ;; Fix the test error described at
5014 ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
9923d5a4 5015 (lambda _ (invoke "rake" "compile")))
9019b37f
BW
5016 (add-before 'check 'remove-timecop-dependency
5017 ;; Remove timecop-dependent tests as having timecop as a depedency
5018 ;; causes circular depedencies.
5019 (lambda _
5020 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
5021 (delete-file "spec/concurrent/scheduled_task_spec.rb")
5022 #t)))))
dae620b8
BW
5023 (native-inputs
5024 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 5025 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
5026 (synopsis "Concurrency tools for Ruby")
5027 (description
5028 "This library provides modern concurrency tools including agents,
5029futures, promises, thread pools, actors, supervisors, and more. It is
5030inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
5031patterns.")
5032 (home-page "http://www.concurrent-ruby.com")
5033 (license license:expat)))
2de61e34
BW
5034
5035(define-public ruby-pkg-config
5036 (package
5037 (name "ruby-pkg-config")
884a80dd 5038 (version "1.2.5")
2de61e34
BW
5039 (source
5040 (origin
5041 (method url-fetch)
5042 (uri (rubygems-uri "pkg-config" version))
5043 (sha256
5044 (base32
884a80dd 5045 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
5046 (build-system ruby-build-system)
5047 (arguments
5048 ;; Tests require extra files not included in the gem.
5049 `(#:tests? #f))
5050 (synopsis "Detect libraries for compiling Ruby native extensions")
5051 (description
5052 "@code{pkg-config} can be used in your extconf.rb to properly detect need
5053libraries for compiling Ruby native extensions.")
5054 (home-page "https://github.com/ruby-gnome2/pkg-config")
5055 (license license:lgpl2.0+)))
6689c636
MFM
5056
5057(define-public ruby-net-http-digest-auth
5058 (package
5059 (name "ruby-net-http-digest-auth")
ba074a85 5060 (version "1.4.1")
6689c636
MFM
5061 (source
5062 (origin
5063 (method url-fetch)
5064 (uri (rubygems-uri "net-http-digest_auth" version))
5065 (sha256
5066 (base32
ba074a85 5067 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
5068 (build-system ruby-build-system)
5069 (native-inputs
5070 `(("ruby-hoe" ,ruby-hoe)))
5071 (synopsis "RFC 2617 HTTP digest authentication library")
5072 (description
5073 "This library implements HTTP's digest authentication scheme based on
5074RFC 2617. This enables the use of the digest authentication scheme instead
5075of the more insecure basic authentication scheme.")
7bf837fd 5076 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 5077 (license license:expat)))
06116573 5078
5079(define-public ruby-mail
5080 (package
5081 (name "ruby-mail")
04de0cb5 5082 (version "2.6.6")
06116573 5083 (source
5084 (origin
5085 (method url-fetch)
5086 (uri (rubygems-uri "mail" version))
5087 (sha256
5088 (base32
04de0cb5 5089 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 5090 (build-system ruby-build-system)
5091 (propagated-inputs
5092 `(("ruby-mime-types" ,ruby-mime-types)))
5093 (arguments
5094 ;; Tests require extra gems not included in the Gemfile.
5095 ;; XXX: Try enabling this for the next version with mini_mime.
5096 `(#:tests? #f))
5097 (synopsis "Mail library for Ruby")
5098 (description
5099 "Mail is an internet library for Ruby that is designed to handle email
5100generation, parsing and sending. The purpose of this library is to provide
5101a single point of access to handle all email functions, including sending
5102and receiving emails. All network type actions are done through proxy
5103methods to @code{Net::SMTP}, @code{Net::POP3} etc.
5104
5105Mail has been designed with a very simple object oriented system that
5106really opens up the email messages you are parsing, if you know what you
5107are doing, you can fiddle with every last bit of your email directly.")
5108 (home-page "https://github.com/mikel/mail")
5109 (license license:expat)))
9b4c8e1b
BW
5110
5111(define-public ruby-code-statistics
5112 (package
5113 (name "ruby-code-statistics")
5114 (version "0.2.13")
5115 (source
5116 (origin
5117 (method url-fetch)
5118 (uri (rubygems-uri "code_statistics" version))
5119 (sha256
5120 (base32
5121 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
5122 (build-system ruby-build-system)
5123 (arguments
5124 `(#:tests? #f)) ; Not all test code is included in gem.
5125 (synopsis "Port of the rails 'rake stats' method")
5126 (description
5127 "This gem is a port of the rails 'rake stats' method so it can be made
5128more robust and work for non rails projects.")
5129 (home-page "http://github.com/danmayer/code_statistics")
5130 (license license:expat)))
f90c25c1
CL
5131
5132(define-public ruby-rubypants
5133 (package
5134 (name "ruby-rubypants")
5135 (version "0.6.0")
5136 (source (origin
5137 (method url-fetch)
5138 (uri (rubygems-uri "rubypants" version))
5139 (sha256
5140 (base32
5141 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
5142 (build-system ruby-build-system)
5143 (arguments
5144 '(#:tests? #f)) ; need Codecov
5145 (synopsis "Port of the smart-quotes library SmartyPants")
5146 (description
5147 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
5148original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
5149and BBEdit that easily translates plain ASCII punctuation characters into
5150smart typographic punctuation HTML entities.")
5151 (home-page "https://github.com/jmcnevin/rubypants")
5152 (license license:bsd-2)))
beb34835
CL
5153
5154(define-public ruby-org-ruby
5155 (package
5156 (name "ruby-org-ruby")
5157 (version "0.9.12")
5158 (source (origin
5159 (method url-fetch)
5160 (uri (rubygems-uri "org-ruby" version))
5161 (sha256
5162 (base32
5163 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
5164 (build-system ruby-build-system)
5165 (arguments
5166 '(#:tests? #f)) ; no rakefile
5167 (propagated-inputs
5168 `(("ruby-rubypants" ,ruby-rubypants)))
5169 (synopsis "Org-mode parser written in Ruby")
5170 (description
5171 "Org-ruby is an org-mode parser written in Ruby. The most significant
5172thing this library does today is convert org-mode files to HTML or Textile or
5173Markdown.")
5174 (home-page "https://github.com/wallyqs/org-ruby")
5175 (license license:expat)))
670ee20a
BW
5176
5177(define-public ruby-rake
5178 (package
5179 (name "ruby-rake")
d6fb32b8 5180 (version "12.3.1")
670ee20a
BW
5181 (source
5182 (origin
5183 (method url-fetch)
5184 (uri (rubygems-uri "rake" version))
5185 (sha256
5186 (base32
d6fb32b8 5187 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
670ee20a
BW
5188 (build-system ruby-build-system)
5189 (native-inputs
5190 `(("bundler" ,bundler)))
5191 (synopsis "Rake is a Make-like program implemented in Ruby")
5192 (description
5193 "Rake is a Make-like program where tasks and dependencies are specified
5194in standard Ruby syntax.")
5195 (home-page "https://github.com/ruby/rake")
5196 (license license:expat)))
45498f51 5197
1f10e28d 5198(define-public ruby-childprocess-0.6
45498f51
DM
5199 (package
5200 (name "ruby-childprocess")
1f10e28d 5201 (version "0.6.3")
45498f51
DM
5202 (source
5203 (origin
5204 (method url-fetch)
5205 (uri (rubygems-uri "childprocess" version))
5206 (sha256
5207 (base32
1f10e28d 5208 "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv"))))
45498f51
DM
5209 (build-system ruby-build-system)
5210 (arguments
5211 `(#:tests? #f))
5212 (native-inputs
5213 `(("bundler" ,bundler)
5214 ("ruby-rspec" ,ruby-rspec)))
5215 (propagated-inputs
5216 `(("ruby-ffi" ,ruby-ffi)))
5217 (synopsis "Control external programs running in the background, in Ruby")
5218 (description "@code{childprocess} provides a gem to control external
5219programs running in the background, in Ruby.")
5220 (home-page "http://github.com/enkessler/childprocess")
5221 (license license:expat)))
1f10e28d
DM
5222
5223(define-public ruby-childprocess
5224 (package
5225 (inherit ruby-childprocess-0.6)
5226 (name "ruby-childprocess")
5227 (version "0.9.0")
5228 (source
5229 (origin
5230 (method url-fetch)
5231 (uri (rubygems-uri "childprocess" version))
5232 (sha256
5233 (base32
5234 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))))
0d16905b
JL
5235
5236(define-public ruby-public-suffix
5237 (package
5238 (name "ruby-public-suffix")
5239 (version "3.0.3")
5240 (source (origin
5241 (method url-fetch)
5242 (uri (rubygems-uri "public_suffix" version))
5243 (sha256
5244 (base32
5245 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
5246 (build-system ruby-build-system)
5247 (arguments
5248 ;; Tests require network
5249 `(#:tests? #f))
5250 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
5251 (synopsis "Domain name parser")
5252 (description "The gem @code{public_suffix} is a domain name parser,
5253written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
5254is one under which Internet users can (or historically could) directly
5255register names. Some examples of public suffixes are @code{.com},
5256@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
5257all known public suffixes.")
5258 (license license:expat)))
6f2c4efb
JL
5259
5260(define-public ruby-addressable
5261 (package
5262 (name "ruby-addressable")
5263 (version "2.5.2")
5264 (source (origin
5265 (method url-fetch)
5266 (uri (rubygems-uri "addressable" version))
5267 (sha256
5268 (base32
5269 "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
5270 (build-system ruby-build-system)
5271 (propagated-inputs
5272 `(("ruby-public-suffix" ,ruby-public-suffix)))
5273 (arguments
5274 ;; No test target
5275 `(#:tests? #f))
5276 (home-page "https://github.com/sporkmonger/addressable")
5277 (synopsis "Alternative URI implementation")
5278 (description "Addressable is a replacement for the URI implementation that
5279is part of Ruby's standard library. It more closely conforms to RFC 3986,
5280RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
5281 (license license:asl2.0)))
9c7f15c0
JL
5282
5283(define-public ruby-colorator
5284 (package
5285 (name "ruby-colorator")
5286 (version "1.1.0")
5287 (source (origin
5288 (method url-fetch)
5289 (uri (rubygems-uri "colorator" version))
5290 (sha256
5291 (base32
5292 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
5293 (build-system ruby-build-system)
5294 (arguments
5295 ;; No test target
5296 `(#:tests? #f))
5297 (home-page "http://octopress.org/colorator/")
5298 (synopsis "Terminal color library")
5299 (description "Colorator is a Ruby gem that helps you colorize your text
5300for the terminal.")
5301 (license license:expat)))
78b9c291
JL
5302
5303(define-public ruby-command-line-reporter
5304 (package
5305 (name "ruby-command-line-reporter")
5306 (version "4.0.0")
5307 (source (origin
5308 (method url-fetch)
5309 (uri (rubygems-uri "command_line_reporter" version))
5310 (sha256
5311 (base32
5312 "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a"))))
5313 (build-system ruby-build-system)
5314 (arguments
5315 ;; No Rakefile
5316 `(#:tests? #f
5317 #:phases
5318 (modify-phases %standard-phases
5319 (add-before 'build 'fix-dependencies
5320 (lambda _
5321 (substitute* ".gemspec"
5322 ;; colored is unmaintained
5323 (("colored") "colorator")
5324 ;; colorator version
5325 (("= 1.2") "= 1.1"))
5326 #t)))))
5327 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
5328 (home-page "https://github.com/wbailey/command_line_reporter")
5329 (synopsis "Report production while executing Ruby scripts")
5330 (description "This gem provides a DSL that makes it easy to write reports
5331of various types in ruby. It eliminates the need to litter your source with
5332puts statements, instead providing a more readable, expressive interface to
5333your application.")
5334 (license license:asl2.0)))
f22c0387
JL
5335
5336(define-public ruby-command-line-reporter-3
5337 (package
5338 (inherit ruby-command-line-reporter)
5339 (version "3.3.6")
5340 (source (origin
5341 (method url-fetch)
5342 (uri (rubygems-uri "command_line_reporter" version))
5343 (sha256
5344 (base32
5345 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf
JL
5346
5347(define-public ruby-rdoc
5348 (package
5349 (name "ruby-rdoc")
5350 (version "6.0.4")
5351 (source
5352 (origin
5353 (method url-fetch)
5354 (uri (rubygems-uri "rdoc" version))
5355 (sha256
5356 (base32
5357 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
5358 (build-system ruby-build-system)
5359 (native-inputs
5360 `(("bundler" ,bundler)))
5361 (home-page "https://ruby.github.io/rdoc/")
5362 (synopsis "HTML and command-line documentation utility")
5363 (description "RDoc produces HTML and command-line documentation for Ruby
5364projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
5365documentation from the command-line.")
5366 (license license:gpl2+)))
18077ffc
JL
5367
5368(define-public ruby-sass-listen
5369 (package
5370 (name "ruby-sass-listen")
5371 (version "4.0.0")
5372 (source (origin
5373 (method url-fetch)
5374 (uri (rubygems-uri "sass-listen" version))
5375 (sha256
5376 (base32
5377 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
5378 (build-system ruby-build-system)
5379 (arguments
5380 ;; No test target
5381 `(#:tests? #f))
5382 (propagated-inputs
5383 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
5384 ("ruby-rb-inotify" ,ruby-rb-inotify)))
5385 (home-page "https://github.com/sass/listen")
5386 (synopsis "File modification notification library")
5387 (description "The Listen gem listens to file modifications and notifies you
5388about the changes.")
5389 (license license:expat)))
0c8eedc1
JL
5390
5391(define-public ruby-terminfo
5392 (package
5393 (name "ruby-terminfo")
5394 (version "0.1.1")
5395 (source
5396 (origin
5397 (method url-fetch)
5398 (uri (rubygems-uri "ruby-terminfo" version))
5399 (sha256
5400 (base32
5401 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
5402 (build-system ruby-build-system)
5403 (arguments
5404 `(#:test-target "test"
5405 ;; Rakefile requires old packages and would need modification to
5406 ;; work with current software.
5407 #:tests? #f))
5408 (inputs
5409 `(("ncurses" ,ncurses)))
5410 (native-inputs
5411 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
5412 ("ruby-rdoc" ,ruby-rdoc)))
5413 (home-page "http://www.a-k-r.org/ruby-terminfo/")
5414 (synopsis "Terminfo binding for Ruby")
5415 (description "Ruby-terminfo provides terminfo binding for Ruby.")
5416 (license license:bsd-3)))
ddc3a667
JL
5417
5418(define-public ruby-diffy
5419 (package
5420 (name "ruby-diffy")
5421 (version "3.2.1")
5422 (source
5423 (origin
5424 (method url-fetch)
5425 (uri (rubygems-uri "diffy" version))
5426 (sha256
5427 (base32
5428 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
5429 (build-system ruby-build-system)
5430 (arguments
5431 ;; No tests
5432 `(#:tests? #f))
5433 (native-inputs
5434 `(("ruby-rspec" ,ruby-rspec)))
5435 (home-page "https://github.com/samg/diffy")
5436 (synopsis "Convenient diffing in ruby")
5437 (description "Diffy provides a convenient way to generate a diff from two
5438strings or files.")
5439 (license license:expat)))
6456beef
JL
5440
5441(define-public ruby-sass-spec
5442 (package
5443 (name "ruby-sass-spec")
5444 (version "3.5.4")
5445 (source (origin
5446 (method url-fetch)
5447 (uri (string-append "https://github.com/sass/sass-spec/archive/v"
5448 version ".tar.gz"))
5449 (file-name (string-append name "-" version ".tar.gz"))
5450 (sha256
5451 (base32
5452 "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
5453 (build-system ruby-build-system)
5454 (propagated-inputs
5455 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
5456 ("ruby-diffy" ,ruby-diffy)
5457 ("ruby-terminfo" ,ruby-terminfo)))
5458 (arguments
5459 ;; No Rakefile
5460 `(#:tests? #f))
5461 (home-page "https://github.com/sass/sass-spec")
5462 (synopsis "Test suite for Sass")
5463 (description "Sass Spec is a test suite for Sass. Test cases are all in
5464the @file{spec} directory.")
5465 (license license:expat)))
f00f4492
JL
5466
5467(define-public ruby-sass
5468 (package
5469 (name "ruby-sass")
5470 (version "3.5.7")
5471 (source (origin
5472 (method url-fetch)
5473 (uri (rubygems-uri "sass" version))
5474 (sha256
5475 (base32
5476 "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61"))))
5477 (build-system ruby-build-system)
5478 (propagated-inputs
5479 `(("ruby-sass-listen" ,ruby-sass-listen)))
5480 (native-inputs
5481 `(("ruby-sass-spec" ,ruby-sass-spec)))
5482 (home-page "http://sass-lang.com/")
5483 (synopsis "CSS extension language")
5484 (description "Sass is a CSS extension language. It extends CSS with
5485features that don't exist yet like variables, nesting, mixins and inheritance.")
5486 (license license:expat)))
5e242cb4
JL
5487
5488(define-public ruby-jekyll-sass-converter
5489 (package
5490 (name "ruby-jekyll-sass-converter")
5491 (version "1.5.2")
5492 (source (origin
5493 (method url-fetch)
5494 (uri (rubygems-uri "jekyll-sass-converter" version))
5495 (sha256
5496 (base32
5497 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
5498 (build-system ruby-build-system)
5499 (propagated-inputs
5500 `(("ruby-sass" ,ruby-sass)))
5501 (arguments
5502 ;; No rakefile
5503 `(#:tests? #f))
5504 (home-page "https://github.com/jekyll/jekyll-sass-converter")
5505 (synopsis "Sass converter for Jekyll")
5506 (description "This gem provide built-in support for the Sass converter
5507in Jekyll.")
5508 (license license:expat)))
ceac6f6f
JL
5509
5510(define-public ruby-jekyll-watch
5511 (package
5512 (name "ruby-jekyll-watch")
5513 (version "2.0.0")
5514 (source (origin
5515 (method url-fetch)
5516 (uri (rubygems-uri "jekyll-watch" version))
5517 (sha256
5518 (base32
5519 "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
5520 (build-system ruby-build-system)
5521 (propagated-inputs
5522 `(("ruby-listen-3.0" ,ruby-listen-3.0)))
5523 (arguments
5524 ;; No rakefile
5525 `(#:tests? #f))
5526 (home-page "https://github.com/jekyll/jekyll-watch")
5527 (synopsis "Jekyll auto-rebuild support")
5528 (description "This gems add the @code{--watch} switch to the jekyll CLI
5529interface. It allows Jekyll to rebuild your site when a file changes.")
5530 (license license:expat)))
3224a5a8
JL
5531
5532(define-public ruby-parallel
5533 (package
5534 (name "ruby-parallel")
5535 (version "1.12.1")
5536 (source (origin
5537 (method url-fetch)
5538 (uri (rubygems-uri "parallel" version))
5539 (sha256
5540 (base32
5541 "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67"))))
5542 (build-system ruby-build-system)
5543 (arguments `(#:tests? #f)); No rakefile
5544 (home-page "https://github.com/grosser/parallel")
5545 (synopsis "Parallel processing in Ruby")
5546 (description "Parallel allows you to run any code in parallel Processes
5547(to use all CPUs) or Threads(to speedup blocking operations). It is best
5548suited for map-reduce or e.g. parallel downloads/uploads.")
5549 (license license:expat)))
83d9f672
JL
5550
5551(define-public ruby-cane
5552 (package
5553 (name "ruby-cane")
5554 (version "3.0.0")
5555 (source (origin
5556 (method url-fetch)
5557 (uri (rubygems-uri "cane" version))
5558 (sha256
5559 (base32
5560 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
5561 (build-system ruby-build-system)
5562 (arguments `(#:tests? #f)); No rakefile
5563 (home-page "https://github.com/square/cane")
5564 (propagated-inputs
5565 `(("ruby-parallel" ,ruby-parallel)))
5566 (synopsis "Code quality threshold checking")
5567 (description "Cane fails your build if code quality thresholds are not met.")
5568 (license license:asl2.0)))
00d71efc
JL
5569
5570(define-public ruby-morecane
5571 (package
5572 (name "ruby-morecane")
5573 (version "0.2.0")
5574 (source (origin
5575 (method url-fetch)
5576 (uri (rubygems-uri "morecane" version))
5577 (sha256
5578 (base32
5579 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
5580 (build-system ruby-build-system)
5581 (home-page "https://github.com/yob/morecane")
5582 (arguments `(#:tests? #f)); No rakefile
5583 (propagated-inputs
5584 `(("ruby-parallel" ,ruby-parallel)))
5585 (synopsis "Extra checks for cane")
5586 (description "The cane gem provides a great framework for running quality
5587checks over your ruby project as part of continuous integration build. It
5588comes with a few checks out of the box, but also provides an API for loading
5589custom checks. This gem provides a set of additional checks.")
5590 (license license:expat)))
abbe629c
JL
5591
5592(define-public ruby-pdf-reader
5593 (package
5594 (name "ruby-pdf-reader")
5595 (version "2.1.0")
5596 (source (origin
5597 (method url-fetch)
5598 (uri (rubygems-uri "pdf-reader" version))
5599 (sha256
5600 (base32
5601 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
5602 (build-system ruby-build-system)
5603 (arguments `(#:test-target "spec"))
5604 (native-inputs
5605 `(("bundler" ,bundler)
5606 ("ruby-rspec" ,ruby-rspec)
5607 ("ruby-cane" ,ruby-cane)
5608 ("ruby-morecane" ,ruby-morecane)))
5609 (propagated-inputs
5610 `(("ruby-afm" ,ruby-afm)
5611 ("ruby-ascii85" ,ruby-ascii85)
5612 ("ruby-hashery" ,ruby-hashery)
5613 ("ruby-rc4" ,ruby-rc4)
5614 ("ruby-ttfunk" ,ruby-ttfunk)))
5615 (home-page "https://github.com/yob/pdf-reader")
5616 (synopsis "PDF parser in Ruby")
5617 (description "The PDF::Reader library implements a PDF parser conforming as
5618much as possible to the PDF specification from Adobe. It provides programmatic
5619access to the contents of a PDF file with a high degree of flexibility.")
5620 (license license:gpl3+)))
461fb859
JL
5621
5622(define-public ruby-pdf-inspector
5623 (package
5624 (name "ruby-pdf-inspector")
5625 (version "1.3.0")
5626 (source (origin
5627 (method url-fetch)
5628 (uri (rubygems-uri "pdf-inspector" version))
5629 (sha256
5630 (base32
5631 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
5632 (build-system ruby-build-system)
5633 (propagated-inputs
5634 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
5635 (arguments `(#:tests? #f)); No rakefile
5636 (home-page "https://github.com/prawnpdf/pdf-inspector")
5637 (synopsis "Analysis classes for inspecting PDF output")
5638 (description "This library provides a number of PDF::Reader based tools for
5639use in testing PDF output. Presently, the primary purpose of this tool is to
5640support the tests found in Prawn, a pure Ruby PDF generation library.")
5641 (license license:gpl3+)))
770e3b53
JL
5642
5643(define-public ruby-pdf-core
5644 (package
5645 (name "ruby-pdf-core")
5646 (version "0.8.1")
5647 (source (origin
5648 (method url-fetch)
5649 (uri (rubygems-uri "pdf-core" version))
5650 (sha256
5651 (base32
5652 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
5653 (build-system ruby-build-system)
5654 (arguments
5655 ; No test target
5656 `(#:tests? #f))
5657 (home-page "https://github.com/prawnpdf/pdf-core")
5658 (synopsis "Low level PDF features for Prawn")
5659 (description "This is an experimental gem that extracts low-level PDF
5660functionality from Prawn.")
5661 (license license:gpl3+)))
37fbced7
JL
5662
5663(define-public ruby-yard
5664 (package
5665 (name "ruby-yard")
5666 (version "0.9.16")
5667 (source (origin
5668 (method url-fetch)
5669 (uri (rubygems-uri "yard" version))
5670 (sha256
5671 (base32
5672 "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67"))))
5673 (build-system ruby-build-system)
5674 (arguments `(#:test-target "spec"))
5675 (home-page "https://yardoc.org/")
5676 (synopsis "Ruby documentation tool")
5677 (description "YARD is a documentation generation tool for the Ruby
5678programming language. It enables the user to generate consistent, usable
5679documentation that can be exported to a number of formats very easily, and
5680also supports extending for custom Ruby constructs such as custom class level
5681definitions.")
5682 (license license:expat)))
7ad8dd08
JL
5683
5684(define-public ruby-prawn
5685 (package
5686 (name "ruby-prawn")
5687 (version "2.2.2")
5688 (source (origin
5689 (method url-fetch)
5690 (uri (rubygems-uri "prawn" version))
5691 (sha256
5692 (base32
5693 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
5694 (build-system ruby-build-system)
5695 (arguments
5696 ; No tests
5697 `(#:tests? #f
5698 #:phases
5699 (modify-phases %standard-phases
5700 (add-before 'build 'fix-dependencies
5701 (lambda _
5702 (substitute* "prawn.gemspec"
5703 (("~> 0.7.0") "~> 0.7"))
5704 #t)))))
5705 (propagated-inputs
5706 `(("ruby-pdf-core" ,ruby-pdf-core)
5707 ("ruby-ttfunk" ,ruby-ttfunk)))
5708 (native-inputs
5709 `(("bundler" ,bundler)
5710 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
5711 ("ruby-rspec" ,ruby-rspec)
5712 ("ruby-simplecov" ,ruby-simplecov)
5713 ("ruby-yard" ,ruby-yard)))
5714 (home-page "http://prawnpdf.org/api-docs/2.0/")
5715 (synopsis "PDF generation for Ruby")
5716 (description "Prawn is a pure Ruby PDF generation library.")
5717 (license license:gpl3+)))
197ca8ec
JL
5718
5719(define-public ruby-prawn-table
5720 (package
5721 (name "ruby-prawn-table")
5722 (version "0.2.2")
5723 (source (origin
5724 (method url-fetch)
5725 (uri (rubygems-uri "prawn-table" version))
5726 (sha256
5727 (base32
5728 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
5729 (build-system ruby-build-system)
5730 (arguments `(#:tests? #f)); No rakefile
5731 (propagated-inputs
5732 `(("ruby-prawn" ,ruby-prawn)))
5733 (home-page "https://github.com/prawnpdf/prawn-table")
5734 (synopsis "Tables support for Prawn")
5735 (description "This gem provides tables support for Prawn.")
5736 (license license:gpl3+)))
03127069
JL
5737
5738(define-public ruby-kramdown
5739 (package
5740 (name "ruby-kramdown")
5741 (version "1.17.0")
5742 (source (origin
5743 (method url-fetch)
5744 (uri (rubygems-uri "kramdown" version))
5745 (sha256
5746 (base32
5747 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
5748 (build-system ruby-build-system)
5749 (arguments `(#:tests? #f)); FIXME: some test failures
5750 (native-inputs
5751 `(("ruby-prawn" ,ruby-prawn)
5752 ("ruby-prawn-table" ,ruby-prawn-table)))
5753 (home-page "https://kramdown.gettalong.org/")
5754 (synopsis "Markdown parsing and converting library")
5755 (description "Kramdown is a library for parsing and converting a superset
5756of Markdown. It is completely written in Ruby, supports standard Markdown
5757(with some minor modifications) and various extensions that have been made
5758popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
5759 (license license:expat)))
fa0063bc
JL
5760
5761(define-public ruby-http-parser.rb
5762 (package
5763 (name "ruby-http-parser.rb")
5764 (version "0.6.0")
5765 (source
5766 (origin
5767 (method url-fetch)
5768 (uri (rubygems-uri "http_parser.rb" version))
5769 (sha256
5770 (base32
5771 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
5772 (build-system ruby-build-system)
5773 (arguments
5774 ;; No tests
5775 `(#:tests? #f))
5776 (native-inputs
5777 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5778 ("ruby-rspec" ,ruby-rspec)))
5779 (home-page "https://github.com/tmm1/http_parser.rb")
5780 (synopsis "HTTP parser un Ruby")
5781 (description "This gem is a simple callback-based HTTP request/response
5782parser for writing http servers, clients and proxies.")
5783 (license license:expat)))
5e2f74bd
JL
5784
5785(define-public ruby-em-websocket
5786 (package
5787 (name "ruby-em-websocket")
5788 (version "0.5.1")
5789 (source
5790 (origin
5791 (method url-fetch)
5792 (uri (rubygems-uri "em-websocket" version))
5793 (sha256
5794 (base32
5795 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
5796 (build-system ruby-build-system)
5797 (arguments
5798 ;; No tests
5799 `(#:tests? #f))
5800 (propagated-inputs
5801 `(("ruby-eventmachine" ,ruby-eventmachine)
5802 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
5803 (native-inputs
5804 `(("bundler" ,bundler)
5805 ("ruby-rspec" ,ruby-rspec)))
5806 (home-page "https://github.com/igrigorik/em-websocket")
5807 (synopsis "EventMachine based WebSocket server")
5808 (description "Em-websocket is an EventMachine based WebSocket server
5809implementation.")
5810 (license license:expat)))
4ce0414b
JL
5811
5812(define-public ruby-rouge
5813 (package
5814 (name "ruby-rouge")
5815 (version "3.2.1")
5816 (source (origin
5817 (method url-fetch)
5818 (uri (rubygems-uri "rouge" version))
5819 (sha256
5820 (base32
5821 "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"))))
5822 (build-system ruby-build-system)
5823 (arguments `(#:tests? #f)); No rakefile
5824 (home-page "http://rouge.jneen.net/")
5825 (synopsis "Code highlighter")
5826 (description "Rouge is a code highlighter written in Ruby. It supports more
5827than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
5828is compatible with stylesheets designed for pygments.")
5829 (license (list
5830 ;; rouge is licensed under expat
5831 license:expat
5832 ;; pygments is licensed under bsd-2
5833 license:bsd-2))))
2c5028bd
JL
5834
5835(define-public ruby-rouge-2
5836 (package
5837 (inherit ruby-rouge)
5838 (version "2.2.1")
5839 (source (origin
5840 (method url-fetch)
5841 (uri (rubygems-uri "rouge" version))
5842 (sha256
5843 (base32
5844 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
5845
5846(define-public ruby-hashie
5847 (package
5848 (name "ruby-hashie")
5849 (version "3.6.0")
5850 (source (origin
5851 (method url-fetch)
5852 (uri (rubygems-uri "hashie" version))
5853 (sha256
5854 (base32
5855 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
5856 (build-system ruby-build-system)
5857 (native-inputs
5858 `(("bundler" ,bundler)))
5859 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
5860 (home-page "https://github.com/intridea/hashie")
5861 (synopsis "Extensions to Ruby Hashes")
5862 (description "Hashie is a collection of classes and mixins that make Ruby
5863hashes more powerful.")
5864 (license license:expat)))
73bfc125
JL
5865
5866(define-public ruby-heredoc-unindent
5867 (package
5868 (name "ruby-heredoc-unindent")
5869 (version "1.2.0")
5870 (source (origin
5871 (method url-fetch)
5872 (uri (rubygems-uri "heredoc_unindent" version))
5873 (sha256
5874 (base32
5875 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
5876 (build-system ruby-build-system)
5877 (native-inputs
5878 `(("ruby-hoe" ,ruby-hoe)))
5879 (home-page "https://github.com/adrianomitre/heredoc_unindent")
5880 (synopsis "Heredoc indentation cleaner")
5881 (description "This gem removes common margin from indented strings, such
5882as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 5883leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
5884the line with the smallest margin.
5885
5886It is acknowledged that many strings defined by heredocs are just code and
5887fact is that most parsers are insensitive to indentation. If, however, the
5888strings are to be used otherwise, be it for printing or testing, the extra
5889indentation will probably be an issue and hence this gem.")
5890 (license license:expat)))
f8ae2ee5
JL
5891
5892(define-public ruby-safe-yaml
5893 (package
5894 (name "ruby-safe-yaml")
5895 (version "1.0.4")
5896 (source (origin
5897 (method url-fetch)
5898 (uri (rubygems-uri "safe_yaml" version))
5899 (sha256
5900 (base32
5901 "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"))))
5902 (build-system ruby-build-system)
5903 (native-inputs
5904 `(("ruby-rspec" ,ruby-rspec)
5905 ("ruby-hashie" ,ruby-hashie)
5906 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
5907 (arguments `(#:test-target "spec"
5908 #:tests? #f));; FIXME: one failure
5909 (home-page "https://github.com/dtao/safe_yaml")
5910 (synopsis "YAML parser")
5911 (description "The SafeYAML gem provides an alternative implementation of
5912YAML.load suitable for accepting user input in Ruby applications.")
5913 (license license:expat)))
f1ec4d76
JL
5914
5915(define-public ruby-mercenary
5916 (package
5917 (name "ruby-mercenary")
5918 (version "0.3.6")
5919 (source (origin
5920 (method url-fetch)
5921 (uri (rubygems-uri "mercenary" version))
5922 (sha256
5923 (base32
5924 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
5925 (build-system ruby-build-system)
5926 (arguments `(#:test-target "spec"))
5927 (native-inputs
5928 `(("bundler" ,bundler)))
5929 (home-page "https://github.com/jekyll/mercenary")
5930 (synopsis "Command-line apps library in Ruby")
5931 (description "Mercenary is a lightweight and flexible library for writing
5932command-line apps in Ruby.")
5933 (license license:expat)))
a13d451e
JL
5934
5935(define-public ruby-liquid
5936 (package
5937 (name "ruby-liquid")
5938 (version "4.0.0")
5939 (source (origin
5940 (method url-fetch)
5941 (uri (rubygems-uri "liquid" version))
5942 (sha256
5943 (base32
5944 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
5945 (build-system ruby-build-system)
5946 (arguments `(#:tests? #f)); No rakefile
5947 (home-page "https://shopify.github.io/liquid/")
5948 (synopsis "Template language")
5949 (description "Liquid is a template language written in Ruby. It is used
5950to load dynamic content on storefronts.")
5951 (license license:expat)))
49395112
JL
5952
5953(define-public ruby-forwardable-extended
5954 (package
5955 (name "ruby-forwardable-extended")
5956 (version "2.6.0")
5957 (source (origin
5958 (method url-fetch)
5959 (uri (rubygems-uri "forwardable-extended" version))
5960 (sha256
5961 (base32
5962 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
5963 (build-system ruby-build-system)
5964 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
5965 (home-page "https://github.com/envygeeks/forwardable-extended")
5966 (synopsis "Delegation to hashes and instance variables in Forwardable")
5967 (description "Forwardable Extended provides more @code{Forwardable}
5968methods for your source as @code{Forwardable::Extended}.")
5969 (license license:expat)))
37296113
JL
5970
5971(define-public ruby-pathutil
5972 (package
5973 (name "ruby-pathutil")
5974 (version "0.16.1")
5975 (source (origin
5976 (method url-fetch)
5977 (uri (rubygems-uri "pathutil" version))
5978 (sha256
5979 (base32
5980 "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"))))
5981 (build-system ruby-build-system)
5982 (propagated-inputs
5983 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
5984 (native-inputs
5985 `(("bundler" ,bundler)
5986 ("ruby-rspec" ,ruby-rspec)))
5987 ;; Fails with: cannot load such file --
5988 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
5989 (arguments `(#:tests? #f))
5990 (home-page "https://github.com/envygeeks/pathutil")
5991 (synopsis "Extended implementation of Pathname")
5992 (description "Pathutil tries to be a faster pure Ruby implementation of
5993Pathname.")
5994 (license license:expat)))
49e1dde5
JL
5995
5996(define-public jekyll
5997 (package
5998 (name "jekyll")
5999 (version "3.8.3")
6000 (source (origin
6001 (method url-fetch)
6002 (uri (rubygems-uri "jekyll" version))
6003 (sha256
6004 (base32
6005 "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk"))))
6006 (build-system ruby-build-system)
6007 (arguments
6008 ;; No rakefile, but a test subdirectory
6009 `(#:tests? #f
6010 #:phases
6011 (modify-phases %standard-phases
6012 (add-before 'build 'fix-i18n
6013 (lambda _
6014 (substitute* ".gemspec"
6015 (("~> 0.7") ">= 0.7"))
6016 #t)))))
6017 (propagated-inputs
6018 `(("ruby-addressable" ,ruby-addressable)
6019 ("ruby-colorator" ,ruby-colorator)
6020 ("ruby-em-websocket" ,ruby-em-websocket)
6021 ("ruby-i18n" ,ruby-i18n)
6022 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
6023 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
6024 ("ruby-kramdown" ,ruby-kramdown)
6025 ("ruby-liquid" ,ruby-liquid)
6026 ("ruby-mercenary" ,ruby-mercenary)
6027 ("ruby-pathutil" ,ruby-pathutil)
6028 ("ruby-rouge" ,ruby-rouge-2)
6029 ("ruby-safe-yaml" ,ruby-safe-yaml)))
6030 (home-page "https://jekyllrb.com/")
6031 (synopsis "Static site generator")
6032 (description "Jekyll is a simple, blog aware, static site generator.")
6033 (license license:expat)))
37a0f470
JL
6034
6035(define-public ruby-jekyll-paginate-v2
6036 (package
6037 (name "ruby-jekyll-paginate-v2")
6038 (version "2.0.0")
6039 (source (origin
6040 (method url-fetch)
6041 (uri (rubygems-uri "jekyll-paginate-v2" version))
6042 (sha256
6043 (base32
6044 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
6045 (build-system ruby-build-system)
6046 (propagated-inputs
6047 `(("jekyll" ,jekyll)))
6048 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
6049 (synopsis "Pagination Generator for Jekyll 3")
6050 (description "The Pagination Generator forms the core of the pagination
6051logic in Jekyll. It calculates and generates the pagination pages.")
6052 (license license:expat)))