diff options
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r-- | gnu/packages/ruby.scm | 841 |
1 files changed, 841 insertions, 0 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 6e5553bd30..fa7c2f7691 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1557,6 +1557,161 @@ functionality, making it easier to migrate test suites from bacon to minitest.") (home-page "https://github.com/seattlerb/minitest-bacon") (license license:expat))) +(define-public ruby-minitest-focus + (package + (name "ruby-minitest-focus") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-focus" version)) + (sha256 + (base32 + "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-minitest" ,ruby-minitest))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis "Allows a few specific tests to be focused on") + (description + "@code{minitest-focus} gives the ability focus on a few tests with ease +without having to use command-line arguments. It introduces a @code{focus} +class method for use in testing classes, specifying that the next defined test +is to be run.") + (home-page "https://github.com/seattlerb/minitest-focus") + (license license:expat))) + +(define-public ruby-minitest-pretty-diff + ;; Use git reference because gem is out of date and does not contain testing + ;; script. There are no releases on GitHub. + (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572")) + (package + (name "ruby-minitest-pretty-diff") + (version (string-append "0.1-1." (string-take commit 8))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/adammck/minitest-pretty_diff.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "script/test"))))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-turn" ,ruby-turn))) + (synopsis "Pretty-print hashes and arrays in MiniTest") + (description + "@code{minitest-pretty_diff} monkey-patches +@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before +diffing them. This makes it easier to spot differences between nested +structures when tests fail.") + (home-page "https://github.com/adammck/minitest-pretty_diff") + (license license:expat)))) + +(define-public ruby-minitest-moar + (package + (name "ruby-minitest-moar") + (version "0.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-moar" version)) + (sha256 + (base32 + "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove all gems defined in the Gemfile because these are not + ;; truly needed. + (substitute* "Gemfile" + (("gem .*") "")) + ;; Remove byebug as not needed to run tests. + (substitute* "test/test_helper.rb" + (("require 'byebug'") "")) + #t))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest))) + (synopsis "Extra features and changes to MiniTest") + (description "@code{MiniTest Moar} add some additional features and +changes some default behaviours in MiniTest. For instance, Moar replaces the +MiniTest @code{Object#stub} with a global @code{stub} method.") + (home-page "https://github.com/dockyard/minitest-moar") + (license license:expat))) + +(define-public ruby-minitest-bonus-assertions + (package + (name "ruby-minitest-bonus-assertions") + (version "2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-bonus-assertions" version)) + (sha256 + (base32 + "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove unneeded require statement that would entail another + ;; dependency. + (substitute* "test/minitest_config.rb" + (("require 'minitest/bisect'") "")) + #t))))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff) + ("ruby-minitest-focus" ,ruby-minitest-focus) + ("ruby-minitest-moar" ,ruby-minitest-moar))) + (synopsis "Bonus assertions for @code{Minitest}") + (description + "Minitest bonus assertions provides extra MiniTest assertions. For +instance, it provides @code{assert_true}, @code{assert_false} and +@code{assert_set_equal}.") + (home-page "https://github.com/halostatue/minitest-bonus-assertions") + (license license:expat))) + +(define-public ruby-minitest-rg + (package + (name "ruby-minitest-rg") + (version "5.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-rg" version)) + (sha256 + (base32 + "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354")))) + (build-system ruby-build-system) + (arguments + ;; Some tests fail even outside Guix, so disable tests. + ;; https://github.com/blowmage/minitest-rg/issues/12 + ;; https://github.com/blowmage/minitest-rg/pull/13 + `(#:tests? #f)) + (propagated-inputs + `(("ruby-minitest" ,ruby-minitest))) + (synopsis "Coloured output for Minitest") + (description + "@code{minitest-rg} changes the colour of the output from Minitest.") + (home-page "http://blowmage.com/minitest-rg") + (license license:expat))) + (define-public ruby-daemons (package (name "ruby-daemons") @@ -2943,6 +3098,369 @@ used to create both network servers and clients.") (home-page "http://rubyeventmachine.com") (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT +(define-public ruby-turn + (package + (name "ruby-turn") + (version "0.9.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "turn" version)) + (sha256 + (base32 + "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Tests fail because turn changes its environment so can no longer + ;; find test/unit. Instead simply test if the executable runs + ;; without issue. + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "bin/turn" "-h"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-minitest" ,ruby-minitest-4))) + (synopsis "Alternate set of alternative runners for MiniTest") + (description + "TURN provides a set of alternative runners for MiniTest which are both +colorful and informative. TURN displays each test on a separate line with +failures being displayed immediately instead of at the end of the tests. Note +that TURN is no longer being maintained.") + (home-page "http://rubygems.org/gems/turn") + (license license:expat))) + +(define-public ruby-mime-types-data + (package + (name "ruby-mime-types-data") + (version "3.2015.1120") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types-data" version)) + (sha256 + (base32 + "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis "Registry for information about MIME media type definitions") + (description + "@code{mime-types-data} provides a registry for information about +Multipurpose Internet Mail Extensions (MIME) media type definitions. It can +be used with the Ruby mime-types library or other software to determine +defined filename extensions for MIME types, or to use filename extensions to +look up the likely MIME type definitions.") + (home-page "https://github.com/mime-types/mime-types-data/") + (license license:expat))) + +(define-public ruby-mime-types + (package + (name "ruby-mime-types") + (version "3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types" version)) + (sha256 + (base32 + "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-mime-types-data" ,ruby-mime-types-data))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-fivemat" ,ruby-fivemat) + ("ruby-minitest-focus" ,ruby-minitest-focus) + ("ruby-minitest-rg" ,ruby-minitest-rg) + ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions))) + (synopsis "Library and registry for MIME content type definitions") + (description "The mime-types library provides a library and registry for +information about Multipurpose Internet Mail Extensions (MIME) content type +definitions. It can be used to determine defined filename extensions for MIME +types, or to use filename extensions to look up the likely MIME type +definitions.") + (home-page "https://github.com/mime-types/ruby-mime-types") + (license license:expat))) + +(define-public ruby-fivemat + (package + (name "ruby-fivemat") + (version "1.3.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "fivemat" version)) + (sha256 + (base32 + "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (synopsis "Each test file given its own line of dots") + (description + "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file +its own line of dots during testing. It aims to provide test output that is +neither too verbose nor too minimal.") + (home-page "https://github.com/tpope/fivemat") + (license license:expat))) + +(define-public ruby-sqlite3 + (package + (name "ruby-sqlite3") + (version "1.3.11") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sqlite3" version)) + (sha256 + (base32 + "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-gemtest-file + ;; This file exists in the repository but is not distributed. + (lambda _ (zero? (system* "touch" ".gemtest"))))))) + (inputs + `(("sqlite" ,sqlite))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-mini-portile" ,ruby-mini-portile))) + (synopsis "Interface with SQLite3 databases") + (description + "This module allows Ruby programs to interface with the SQLite3 database +engine.") + (home-page + "https://github.com/sparklemotion/sqlite3-ruby") + (license license:bsd-3))) + +(define-public ruby-shoulda-context + (package + (name "ruby-shoulda-context") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-context" version)) + (sha256 + (base32 + "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Do not run tests to avoid circular dependence with rails. + ;; Instead just import the library to test. + (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context"))))))) + (synopsis "Test::Unit context framework extracted from Shoulda") + (description + "@code{shoulda-context} is the context framework extracted from Shoulda. +Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds +context, setup, and should blocks combine to produce natural test method +names.") + (home-page "https://github.com/thoughtbot/shoulda-context") + (license license:expat))) + +(define-public ruby-shoulda-matchers + (package + (name "ruby-shoulda-matchers") + (version "3.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-matchers" version)) + (sha256 + (base32 + "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'fix-import + (lambda _ + ;; A presumed bug reported upstream at + ;; https://github.com/thoughtbot/shoulda-matchers/pull/871 + (substitute* (string-append "lib/shoulda/matchers/active_model/" + "validate_inclusion_of_matcher.rb") + (("^require 'bigdecimal'") + "require 'bigdecimal'; require 'date'")))) + (replace 'check + (lambda _ + ;; Do not run tests to avoid circular dependence with rails. Instead + ;; just import the library to test. + (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers"))))))) + (propagated-inputs + `(("ruby-activesupport" ,ruby-activesupport))) + (synopsis "Collection of testing matchers extracted from Shoulda") + (description + "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that +test common Rails functionality. These tests would otherwise be much longer, +more complex, and error-prone.") + (home-page "https://github.com/thoughtbot/shoulda-matchers") + (license license:expat))) + +(define-public ruby-shoulda-matchers-2 + (package + (inherit ruby-shoulda-matchers) + (version "2.8.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-matchers" version)) + (sha256 + (base32 + "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0")))))) + +(define-public ruby-shoulda + (package + (name "ruby-shoulda") + (version "3.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda" version)) + (sha256 + (base32 + "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + ;; Don't run tests to avoid circular dependence with rails. Instead + ;; just import the library to test. + (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda"))))))) + (propagated-inputs + `(("ruby-shoulda-context" ,ruby-shoulda-context) + ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2))) + (synopsis "Context framework and matchers for testing") + (description + "@code{shoulda} is a meta-package combining @code{shoulda-context} and +@code{shoulda-matchers} providing tools for writing tests.") + (home-page "https://github.com/thoughtbot/shoulda") + (license license:expat))) + +(define-public ruby-unf + (package + (name "ruby-unf") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unf" version)) + (sha256 + (base32 + "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; test-unit is required but not provided by the bundler + ;; environment. This is fixed in the upstream repository but fix + ;; has not been released. + (substitute* "Gemfile" + (("^gemspec") "gem 'test-unit'\ngemspec")) + #t))))) + (propagated-inputs + `(("ruby-unf-ext" ,ruby-unf-ext))) + (native-inputs + `(("ruby-shoulda" ,ruby-shoulda) + ("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Unicode Normalization Form support to Ruby and JRuby") + (description + "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form +support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and +@code{java.text.Normalizer} on JRuby.") + (home-page "https://github.com/knu/ruby-unf") + (license license:bsd-2))) + +(define-public ruby-domain-name + (package + (name "ruby-domain-name") + (version "0.5.25") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "domain_name" version)) + (sha256 + (base32 + "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-versions + (lambda _ + ;; Fix NameError that appears to already be fixed upstream. + (substitute* "Rakefile" + (("DomainName::VERSION") + "Bundler::GemHelper.gemspec.version")) + ;; Loosen unnecessarily strict test-unit version specification. + (substitute* "domain_name.gemspec" + (("<test-unit>, \\[\\\"~> 2.5.5") "<test-unit>, [\">0")) + #t))))) + (propagated-inputs + `(("ruby-unf" ,ruby-unf))) + (native-inputs + `(("ruby-shoulda" ,ruby-shoulda) + ("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Domain name manipulation library") + (description + "@code{domain_name} is a Domain name manipulation library. It parses a +domain name ready for extracting the registered domain and TLD (Top Level +Domain). It can also be used for cookie domain validation based on the Public +Suffix List.") + (home-page "https://github.com/knu/ruby-domain_name") + (license license:bsd-2))) + +(define-public ruby-http-cookie + (package + (name "ruby-http-cookie") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http-cookie" version)) + (sha256 + (base32 + "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; Fix NameError + (substitute* "Rakefile" + (("HTTP::Cookie::VERSION") + "Bundler::GemHelper.gemspec.version")) + #t))))) + (propagated-inputs + `(("ruby-domain-name" ,ruby-domain-name))) + (native-inputs + `(("rubysimplecov" ,ruby-simplecov) + ("bundler" ,bundler) + ("ruby-sqlite3" ,ruby-sqlite3) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Handle HTTP Cookies based on RFC 6265") + (description + "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on +RFC 6265. It has been designed with security, standards compliance and +compatibility in mind, to behave just the same as today's major web browsers. +It has built-in support for the legacy @code{cookies.txt} and +@code{cookies.sqlite} formats of Mozilla Firefox.") + (home-page "https://github.com/sparklemotion/http-cookie") + (license license:expat))) + (define-public ruby-ansi (package (name "ruby-ansi") @@ -3042,3 +3560,326 @@ to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra detail to ease debugging.") (home-page "http://github.com/wwood/bioruby-commandeer") (license license:expat))) + +(define-public ruby-rubytest + (package + (name "ruby-rubytest") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest" version)) + (sha256 + (base32 + "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz")))) + (build-system ruby-build-system) + (arguments + ;; Disable regular testing to break the cycle rubytest, qed, brass, + ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead + ;; simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "-r" "rubytest"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi))) + (synopsis "Universal test harness for Ruby") + (description + "Rubytest is a testing meta-framework for Ruby. It can handle any +compliant test framework and can run tests from multiple frameworks in a +single pass.") + (home-page "http://rubyworks.github.io/rubytest") + (license license:bsd-2))) + +(define-public ruby-brass + (package + (name "ruby-brass") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "brass" version)) + (sha256 + (base32 + "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka")))) + (build-system ruby-build-system) + (arguments + ;; Disable tests to break the cycle brass, lemon, ae, qed, brass. + ;; Instead simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "-r" "brass"))))))) + (synopsis "Basic foundational assertions framework") + (description + "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic +foundational assertions framework for other assertion and test frameworks to +make use of.") + (home-page "http://rubyworks.github.io/brass") + (license license:bsd-2))) + +(define-public ruby-qed + (package + (name "ruby-qed") + (version "2.9.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "qed" version)) + (sha256 + (base32 + "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr")))) + (build-system ruby-build-system) + (arguments + ;; Disable testing to break the cycle qed, ansi, qed, among others. + ;; Instead simply test that the executable runs using --copyright. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-brass" ,ruby-brass))) + (synopsis "Test framework utilizing literate programming techniques") + (description + "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for +@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven +Development} (BDD) utilizing Literate Programming techniques. QED sits +somewhere between lower-level testing tools like @code{Test::Unit} and +requirement specifications systems like Cucumber.") + (home-page "http://rubyworks.github.io/qed") + (license license:bsd-2))) + +(define-public ruby-ae + (package + (name "ruby-ae") + (version "1.8.2") + (source + (origin + (method url-fetch) + ;; Fetch from github so tests are included. + (uri (string-append + "https://github.com/rubyworks/ae/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (zero? (system* "qed"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi))) + (native-inputs + `(("ruby-qed" ,ruby-qed))) + (synopsis "Assertions library") + (description + "Assertive Expressive (AE) is an assertions library specifically designed +for reuse by other test frameworks.") + (home-page "http://rubyworks.github.io/ae") + (license license:bsd-2))) + +(define-public ruby-lemon + (package + (name "ruby-lemon") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lemon" version)) + (sha256 + (base32 + "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check (lambda _ (zero? (system* "qed"))))))) + (propagated-inputs + `(("ruby-ae" ,ruby-ae) + ("ruby-ansi" ,ruby-ansi) + ("ruby-rubytest" ,ruby-rubytest))) + (native-inputs + `(("ruby-qed" ,ruby-qed))) + (synopsis "Test framework correlating code structure and test unit") + (description + "Lemon is a unit testing framework that enforces highly formal +case-to-class and unit-to-method test construction. This enforcement can help +focus concern on individual units of behavior.") + (home-page "http://rubyworks.github.io/lemon") + (license license:bsd-2))) + +(define-public ruby-rubytest-cli + (package + (name "ruby-rubytest-cli") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest-cli" version)) + (sha256 + (base32 + "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-rubytest" ,ruby-rubytest))) + (synopsis "Command-line interface for rubytest") + (description + "Rubytest CLI is a command-line interface for running tests for +Rubytest-based test frameworks. It provides the @code{rubytest} executable.") + (home-page "http://rubyworks.github.io/rubytest-cli") + (license license:bsd-2))) + +(define-public ruby-hashery + (package + (name "ruby-hashery") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hashery" version)) + (sha256 + (base32 + "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (and (zero? (system* "qed")) + (zero? (system* "rubytest" "-Ilib" "-Itest" "test/")))))))) + (native-inputs + `(("ruby-rubytest-cli" ,ruby-rubytest-cli) + ("ruby-qed" ,ruby-qed) + ("ruby-lemon" ,ruby-lemon))) + (synopsis "Hash-like classes with extra features") + (description + "The Hashery is a tight collection of @code{Hash}-like classes. +Included are the auto-sorting @code{Dictionary} class, the efficient +@code{LRUHash}, the flexible @code{OpenHash} and the convenient +@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which +defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's +standard @code{Hash} making it possible to subclass and augment to fit any +specific use case.") + (home-page "http://rubyworks.github.io/hashery") + (license license:bsd-2))) + +(define-public ruby-rc4 + (package + (name "ruby-rc4") + (version "0.1.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-rc4" version)) + (sha256 + (base32 + "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "rspec" "spec/rc4_spec.rb"))))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec-2))) + (synopsis "Implementation of the RC4 algorithm") + (description + "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.") + (home-page "https://github.com/caiges/Ruby-RC4") + (license license:expat))) + +(define-public ruby-afm + (package + (name "ruby-afm") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "afm" version)) + (sha256 + (base32 + "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Read Adobe Font Metrics (afm) files") + (description + "This library provides methods to read @dfn{Adobe Font Metrics} (afm) +files and use the data therein.") + (home-page "http://github.com/halfbyte/afm") + (license license:expat))) + +(define-public ruby-ascii85 + (package + (name "ruby-ascii85") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "Ascii85" version)) + (sha256 + (base32 + "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Encode and decode Ascii85 binary-to-text encoding") + (description + "This library provides methods to encode and decode Ascii85 +binary-to-text encoding. The main modern use of Ascii85 is in PostScript and +@dfn{Portable Document Format} (PDF) file formats.") + (home-page "https://github.com/datawraith/ascii85gem") + (license license:expat))) + +(define-public ruby-ttfunk + (package + (name "ruby-ttfunk") + (version "1.4.0") + (source + (origin + (method url-fetch) + ;; fetch from github as the gem does not contain testing code + (uri (string-append + "https://github.com/prawnpdf/ttfunk/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-before 'check 'remove-rubocop + (lambda _ + ;; remove rubocop as a dependency as not needed for testing + (substitute* "ttfunk.gemspec" + (("spec.add_development_dependency\\('rubocop'.*") "")) + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("Rubocop::RakeTask.new") "")) + #t))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec) + ("bundler" ,bundler))) + (synopsis "Font metrics parser for the Prawn PDF generator") + (description + "TTFunk is a TrueType font parser written in pure Ruby. It is used as +part of the Prawn PDF generator.") + (home-page "https://github.com/prawnpdf/ttfunk") + ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE + ;; for details." + (license (list license:gpl2 license:gpl3 license:ruby)))) |