aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm684
1 files changed, 677 insertions, 7 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index c51a5f08e2..47ac392aa6 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -30,6 +30,8 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages java)
#:use-module (gnu packages libffi)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages ragel)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (guix packages)
@@ -38,12 +40,13 @@
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xml)
+ #:use-module (gnu packages web)
#:use-module (guix build-system ruby))
(define-public ruby
(package
(name "ruby")
- (version "2.2.3")
+ (version "2.2.4")
(source
(origin
(method url-fetch)
@@ -52,7 +55,7 @@
"/ruby-" version ".tar.xz"))
(sha256
(base32
- "19x8gs67klgc3ag815jpin83jn2nv1akgjcgayd6v3h1xplr1v66"))))
+ "0g3ps4q3iz7wj9m45n8xyxzw8nh29ljdqb87b0f6i0p3853gz2yj"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -571,6 +574,32 @@ format.")
(home-page "https://github.com/nicksieger/ci_reporter")
(license license:expat)))
+(define-public ruby-saikuro-treemap
+ (package
+ (name "ruby-saikuro-treemap")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "saikuro_treemap" version))
+ (sha256
+ (base32
+ "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
+ (build-system ruby-build-system)
+ ;; Some of the tests fail because the generated JSON has keys in a
+ ;; different order. This is a problem with the test suite rather than any
+ ;; of the involved libraries.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-json-pure" ,ruby-json-pure)
+ ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
+ (synopsis "Generate complexity treemap based on saikuro analysis")
+ (description
+ "This gem generates a treemap showing the complexity of Ruby code on
+which it is run. It uses Saikuro under the covers to analyze Ruby code
+complexity.")
+ (home-page "http://github.com/ThoughtWorksStudios/saikuro_treemap")
+ (license license:expat)))
+
(define-public ruby-orderedhash
(package
(name "ruby-orderedhash")
@@ -1432,6 +1461,25 @@ facilities supporting TDD, BDD, mocking, and benchmarking.")
(home-page "https://github.com/seattlerb/minitest")
(license license:expat)))
+;; This is the last release of Minitest 4, which is used by some packages.
+(define-public ruby-minitest-4
+ (package (inherit ruby-minitest)
+ (version "4.7.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest" version))
+ (sha256
+ (base32
+ "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-unsupported-method
+ (lambda _
+ (substitute* "Rakefile"
+ (("self\\.rubyforge_name = .*") ""))
+ #t)))))))
+
(define-public ruby-minitest-sprint
(package
(name "ruby-minitest-sprint")
@@ -1635,16 +1683,26 @@ to reproduce user environments.")
(home-page "http://github.com/flavorjones/mini_portile")
(license license:expat)))
+(define-public ruby-mini-portile-2
+ (package (inherit ruby-mini-portile)
+ (version "2.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mini_portile2" version))
+ (sha256
+ (base32
+ "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l"))))))
+
(define-public ruby-nokogiri
(package
(name "ruby-nokogiri")
- (version "1.6.6.2")
+ (version "1.6.7.1")
(source (origin
(method url-fetch)
(uri (rubygems-uri "nokogiri" version))
(sha256
(base32
- "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
+ "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2"))))
(build-system ruby-build-system)
(arguments
;; Tests fail because Nokogiri can only test with an installed extension,
@@ -1662,7 +1720,7 @@ to reproduce user environments.")
("libxml2" ,libxml2)
("libxslt" ,libxslt)))
(propagated-inputs
- `(("ruby-mini-portile" ,ruby-mini-portile)))
+ `(("ruby-mini-portile" ,ruby-mini-portile-2)))
(synopsis "HTML, XML, SAX, and Reader parser for Ruby")
(description "Nokogiri (鋸) parses and searches XML/HTML, and features
both CSS3 selector and XPath 1.0 support.")
@@ -1736,6 +1794,54 @@ invocation, and source and documentation browsing.")
(home-page "http://pryrepl.org")
(license license:expat)))
+(define-public ruby-guard
+ (package
+ (name "ruby-guard")
+ (version "2.13.0")
+ (source (origin
+ (method url-fetch)
+ ;; The gem does not include a Rakefile, nor does it contain a
+ ;; gemspec file, nor does it come with the tests. This is why
+ ;; we fetch the tarball from Github.
+ (uri (string-append "https://github.com/guard/guard/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; tests require cucumber
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-git-ls-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "guard.gemspec"
+ (("git ls-files -z") "find . -type f -print0"))
+ #t))
+ (replace 'build
+ (lambda _
+ (zero? (system* "gem" "build" "guard.gemspec")))))))
+ (propagated-inputs
+ `(("ruby-formatador" ,ruby-formatador)
+ ("ruby-listen" ,ruby-listen)
+ ("ruby-lumberjack" ,ruby-lumberjack)
+ ("ruby-nenv" ,ruby-nenv)
+ ("ruby-notiffany" ,ruby-notiffany)
+ ("ruby-pry" ,ruby-pry)
+ ("ruby-shellany" ,ruby-shellany)
+ ("ruby-thor" ,ruby-thor)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Tool to handle events on file system modifications")
+ (description
+ "Guard is a command line tool to easily handle events on file system
+modifications. Guard automates various tasks by running custom rules whenever
+file or directories are modified.")
+ (home-page "http://guardgem.org/")
+ (license license:expat)))
+
(define-public ruby-thread-safe
(package
(name "ruby-thread-safe")
@@ -1892,6 +1998,165 @@ documentation for Ruby code.")
(home-page "https://github.com/flori/tins")
(license license:expat)))
+(define-public ruby-gem-hadar
+ (package
+ (name "ruby-gem-hadar")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "gem_hadar" version))
+ (sha256
+ (base32
+ "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
+ (build-system ruby-build-system)
+ ;; This gem needs itself at development time. We disable rebuilding of the
+ ;; gemspec to avoid this loop.
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (zero? (system* "gem" "build" "gem_hadar.gemspec")))))))
+ (propagated-inputs
+ `(("git" ,git)
+ ("ruby-tins" ,ruby-tins)
+ ("ruby-sdoc" ,ruby-sdoc)))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Library for the development of Ruby gems")
+ (description
+ "This library contains some useful functionality to support the
+development of Ruby gems.")
+ (home-page "https://github.com/flori/gem_hadar")
+ (license license:expat)))
+
+(define-public ruby-minitest-tu-shim
+ (package
+ (name "ruby-minitest-tu-shim")
+ (version "1.3.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest_tu_shim" version))
+ (sha256
+ (base32
+ "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-test-include-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Rakefile"
+ (("Hoe\\.add_include_dirs .*")
+ (string-append "Hoe.add_include_dirs \""
+ (assoc-ref inputs "ruby-minitest-4")
+ "/lib/ruby/gems/2.2.0/gems/minitest-"
+ ,(package-version ruby-minitest-4)
+ "/lib" "\"")))))
+ (add-before 'check 'fix-test-assumptions
+ (lambda _
+ ;; The test output includes the file name, so a couple of tests
+ ;; fail. Changing the regular expressions slightly fixes this
+ ;; problem.
+ (substitute* "test/test_mini_test.rb"
+ (("output.sub!\\(.*, 'FILE:LINE'\\)")
+ "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
+ (("gsub\\(/.*, 'FILE:LINE'\\)")
+ "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-minitest-4" ,ruby-minitest-4)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)))
+ (synopsis "Adapter library between minitest and test/unit")
+ (description
+ "This library bridges the gap between the small and fast minitest and
+Ruby's large and slower test/unit.")
+ (home-page "https://rubygems.org/gems/minitest_tu_shim")
+ (license license:expat)))
+
+(define-public ruby-term-ansicolor
+ (package
+ (name "ruby-term-ansicolor")
+ (version "1.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "term-ansicolor" version))
+ (sha256
+ (base32
+ "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys"))))
+ (build-system ruby-build-system)
+ ;; Rebuilding the gemspec seems to require git, even though this is not a
+ ;; git repository, so we just build the gem from the existing gemspec.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (zero? (system* "gem" "build" "term-ansicolor.gemspec")))))))
+ (propagated-inputs
+ `(("ruby-tins" ,ruby-tins)))
+ (native-inputs
+ `(("ruby-gem-hadar" ,ruby-gem-hadar)
+ ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
+ (synopsis "Ruby library to control the attributes of terminal output")
+ (description
+ "This Ruby library uses ANSI escape sequences to control the attributes
+of terminal output.")
+ (home-page "http://flori.github.io/term-ansicolor/")
+ ;; There is no mention of the "or later" clause.
+ (license license:gpl2)))
+
+(define-public ruby-pstree
+ (package
+ (name "ruby-pstree")
+ (version "0.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pstree" version))
+ (sha256
+ (base32
+ "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-gem-hadar" ,ruby-gem-hadar)
+ ("bundler" ,bundler)))
+ (synopsis "Create a process tree data structure")
+ (description
+ "This library uses the output of the @code{ps} command to create a
+process tree data structure for the current host.")
+ (home-page "http://flori.github.com/pstree")
+ ;; There is no mention of the "or later" clause.
+ (license license:gpl2)))
+
+(define-public ruby-utils
+ (package
+ (name "ruby-utils")
+ (version "0.2.4")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "utils" version))
+ (sha256
+ (base32
+ "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-tins" ,ruby-tins)
+ ("ruby-term-ansicolor" ,ruby-term-ansicolor)
+ ("ruby-pstree" ,ruby-pstree)
+ ("ruby-pry-editline" ,ruby-pry-editline)))
+ (native-inputs
+ `(("ruby-gem-hadar" ,ruby-gem-hadar)
+ ("bundler" ,bundler)))
+ (synopsis "Command line tools for working with Ruby")
+ (description
+ "This package provides assorted command line tools that may be useful
+when working with Ruby code.")
+ (home-page "https://github.com/flori/utils")
+ ;; There is no mention of the "or later" clause.
+ (license license:gpl2)))
+
(define-public ruby-json
(package
(name "ruby-json")
@@ -1911,6 +2176,75 @@ a native C extension.")
(home-page "http://json-jruby.rubyforge.org/")
(license (list license:ruby license:gpl2)))) ; GPL2 only
+(define-public ruby-json-pure
+ (package
+ (name "ruby-json-pure")
+ (version "1.8.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "json_pure" version))
+ (sha256
+ (base32
+ "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:modules ((srfi srfi-1)
+ (ice-9 regex)
+ (rnrs io ports)
+ (guix build ruby-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'replace-git-ls-files
+ (lambda _
+ ;; The existing gemspec file already contains a nice list of
+ ;; files that belong to the gem. We extract the list from the
+ ;; gemspec file and then replace the file list in the Rakefile to
+ ;; get rid of the call to "git ls-files".
+ (let* ((contents (call-with-input-file "json.gemspec" get-string-all))
+ ;; Guile is unhappy about the #\nul characters in comments.
+ (filtered (string-filter (lambda (char)
+ (not (equal? #\nul char)))
+ contents))
+ (files (match:substring
+ (string-match " s\\.files = ([^]]+\\])" filtered) 1)))
+ (substitute* "Rakefile"
+ (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
+ (string-append "FileList" files))))
+ #t)))))
+ (native-inputs
+ `(("ruby-permutation" ,ruby-permutation)
+ ("ruby-utils" ,ruby-utils)
+ ("ragel" ,ragel)
+ ("bundler" ,bundler)))
+ (synopsis "JSON implementation in pure Ruby")
+ (description
+ "This package provides a JSON implementation written in pure Ruby.")
+ (home-page "http://flori.github.com/json")
+ (license license:ruby)))
+
+;; Even though this package only provides bindings for a Mac OSX API it is
+;; required by "ruby-listen" at runtime.
+(define-public ruby-rb-fsevent
+ (package
+ (name "ruby-rb-fsevent")
+ (version "0.9.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rb-fsevent" version))
+ (sha256
+ (base32
+ "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2"))))
+ (build-system ruby-build-system)
+ ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
+ ;; "listen", which needs "rb-fsevent" at runtime.
+ (arguments `(#:tests? #f))
+ (synopsis "FSEvents API with signals catching")
+ (description
+ "This library provides Ruby bindings for the Mac OSX FSEvents API.")
+ (home-page "https://rubygems.org/gems/rb-fsevent")
+ (license license:expat)))
+
(define-public ruby-listen
(package
(name "ruby-listen")
@@ -1925,8 +2259,8 @@ a native C extension.")
(build-system ruby-build-system)
(arguments '(#:tests? #f)) ; no tests
(propagated-inputs
- ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS.
- `(("ruby-rb-inotify" ,ruby-rb-inotify)))
+ `(("ruby-rb-inotify" ,ruby-rb-inotify)
+ ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
(synopsis "Listen to file modifications")
(description "The Listen gem listens to file modifications and notifies
you about the changes.")
@@ -1960,6 +2294,121 @@ multibyte strings, internationalization, time zones, and testing.")
(home-page "http://www.rubyonrails.org")
(license license:expat)))
+(define-public ruby-crass
+ (package
+ (name "ruby-crass")
+ (version "1.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "crass" version))
+ (sha256
+ (base32
+ "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Pure Ruby CSS parser")
+ (description
+ "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
+ (home-page "https://github.com/rgrove/crass/")
+ (license license:expat)))
+
+(define-public ruby-nokogumbo
+ (package
+ (name "ruby-nokogumbo")
+ (version "1.4.6")
+ (source (origin
+ ;; We use the git reference, because there's no Rakefile in the
+ ;; published gem and the tarball on Github is outdated.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rubys/nokogumbo.git")
+ (commit "d56f954d20a")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:modules ((guix build ruby-build-system)
+ (guix build utils)
+ (ice-9 rdelim))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'build-gemspec
+ (lambda _
+ (substitute* "Rakefile"
+ ;; Build Makefile even without a copy of gumbo-parser sources
+ (("'gumbo-parser/src',") "")
+ ;; We don't bundle gumbo-parser sources
+ (("'gumbo-parser/src/\\*',") "")
+ (("'gumbo-parser/visualc/include/\\*',") "")
+ ;; The definition of SOURCES will be cut in gemspec, and
+ ;; "FileList" will be undefined.
+ (("SOURCES \\+ FileList\\[")
+ "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
+
+ ;; Copy the Rakefile and cut out the gemspec.
+ (copy-file "Rakefile" ".gemspec")
+ (with-atomic-file-replacement ".gemspec"
+ (lambda (in out)
+ (let loop ((line (read-line in 'concat))
+ (skipping? #t))
+ (if (eof-object? line)
+ #t
+ (let ((skip-next? (if skipping?
+ (not (string-prefix? "SPEC =" line))
+ (string-prefix? "end" line))))
+ (when (or (not skipping?)
+ (and skipping? (not skip-next?)))
+ (format #t "~a" line)
+ (display line out))
+ (loop (read-line in 'concat) skip-next?))))))
+ #t)))))
+ (inputs
+ `(("gumbo-parser" ,gumbo-parser)))
+ (propagated-inputs
+ `(("ruby-nokogiri" ,ruby-nokogiri)))
+ (synopsis "Ruby bindings to the Gumbo HTML5 parser")
+ (description
+ "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
+access the result as a Nokogiri parsed document.")
+ (home-page "https://github.com/rubys/nokogumbo/")
+ (license license:asl2.0)))
+
+(define-public ruby-sanitize
+ (package
+ (name "ruby-sanitize")
+ (version "4.0.0")
+ (source (origin
+ (method url-fetch)
+ ;; The gem does not include the Rakefile, so we download the
+ ;; release tarball from Github.
+ (uri (string-append "https://github.com/rgrove/"
+ "sanitize/archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-crass" ,ruby-crass)
+ ("ruby-nokogiri" ,ruby-nokogiri)
+ ("ruby-nokogumbo" ,ruby-nokogumbo)))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,ruby-minitest)
+ ("ruby-redcarpet" ,ruby-redcarpet)
+ ("ruby-yard" ,ruby-yard)))
+ (synopsis "Whitelist-based HTML and CSS sanitizer")
+ (description
+ "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
+acceptable elements, attributes, and CSS properties, Sanitize will remove all
+unacceptable HTML and/or CSS from a string.")
+ (home-page "https://github.com/rgrove/sanitize/")
+ (license license:expat)))
+
(define-public ruby-ox
(package
(name "ruby-ox")
@@ -1983,6 +2432,45 @@ alternative to Marshal for Object serialization. ")
(home-page "http://www.ohler.com/ox")
(license license:expat)))
+(define-public ruby-redcloth
+ (package
+ (name "ruby-redcloth")
+ (version "4.2.9")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "RedCloth" version))
+ (sha256
+ (base32
+ "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ; no tests
+ #:phases
+ (modify-phases %standard-phases
+ ;; Redcloth has complicated rake tasks to build various versions for
+ ;; multiple targets using RVM. We don't want this so we just use the
+ ;; existing gemspec.
+ (replace 'build
+ (lambda _
+ (zero? (system* "gem" "build" "redcloth.gemspec"))))
+ ;; Make sure that the "redcloth" executable finds required Ruby
+ ;; libraries.
+ (add-after 'install 'wrap-bin-redcloth
+ (lambda* (#:key outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/redcloth")
+ `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-diff-lcs" ,ruby-diff-lcs)
+ ("ruby-rspec-2" ,ruby-rspec-2)))
+ (synopsis "Textile markup language parser for Ruby")
+ (description
+ "RedCloth is a Ruby parser for the Textile markup language.")
+ (home-page "http://redcloth.org")
+ (license license:expat)))
+
(define-public ruby-pg
(package
(name "ruby-pg")
@@ -2032,6 +2520,109 @@ other things and it comes with a command line interface.")
(home-page "http://github.com/deivid-rodriguez/byebug")
(license license:bsd-2)))
+(define-public ruby-netrc
+ (package
+ (name "ruby-netrc")
+ (version "0.11.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "netrc" version))
+ (sha256
+ (base32
+ "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ ;; There is no Rakefile and minitest can only run one file at once,
+ ;; so we have to iterate over all test files.
+ (lambda _
+ (and (map (lambda (file)
+ (zero? (system* "ruby" "-Itest" file)))
+ (find-files "./test" "test_.*\\.rb"))))))))
+ (native-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Library to read and update netrc files")
+ (description
+ "This library can read and update netrc files, preserving formatting
+including comments and whitespace.")
+ (home-page "https://github.com/geemus/netrc")
+ (license license:expat)))
+
+(define-public ruby-unf-ext
+ (package
+ (name "ruby-unf-ext")
+ (version "0.0.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "unf_ext" version))
+ (sha256
+ (base32
+ "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'build-ext
+ (lambda _ (zero? (system* "rake" "compile:unf_ext")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Unicode normalization form support library")
+ (description
+ "This package provides unicode normalization form support for Ruby.")
+ (home-page "https://github.com/knu/ruby-unf_ext")
+ (license license:expat)))
+
+(define-public ruby-tdiff
+ (package
+ (name "ruby-tdiff")
+ (version "0.3.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "tdiff" version))
+ (sha256
+ (base32
+ "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-rspec-2" ,ruby-rspec-2)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
+ (synopsis "Calculate the differences between two tree-like structures")
+ (description
+ "This library provides functions to calculate the differences between two
+tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
+ (home-page "https://github.com/postmodern/tdiff")
+ (license license:expat)))
+
+(define-public ruby-nokogiri-diff
+ (package
+ (name "ruby-nokogiri-diff")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "nokogiri-diff" version))
+ (sha256
+ (base32
+ "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-tdiff" ,ruby-tdiff)
+ ("ruby-nokogiri" ,ruby-nokogiri)))
+ (native-inputs
+ `(("ruby-rspec-2" ,ruby-rspec-2)
+ ("ruby-yard" ,ruby-yard)
+ ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
+ (synopsis "Calculate the differences between two XML/HTML documents")
+ (description
+ "@code{Nokogiri::Diff} adds the ability to calculate the
+differences (added or removed nodes) between two XML/HTML documents.")
+ (home-page "https://github.com/postmodern/nokogiri-diff")
+ (license license:expat)))
+
(define-public ruby-rack
(package
(name "ruby-rack")
@@ -2200,6 +2791,85 @@ extending for custom Ruby constructs such as custom class level definitions.")
(home-page "http://yardoc.org")
(license license:expat)))
+(define-public ruby-clap
+ (package
+ (name "ruby-clap")
+ (version "1.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "clap" version))
+ (sha256
+ (base32
+ "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
+ (build-system ruby-build-system)
+ ;; Clap needs cutest for running tests, but cutest needs clap.
+ (arguments `(#:tests? #f))
+ (synopsis "Command line argument parsing for simple applications")
+ (description
+ "Clap provides command line argument parsing features. It covers the
+simple case of executing code based on the flags or parameters passed.")
+ (home-page "https://github.com/djanowski/cutest")
+ (license license:expat)))
+
+(define-public ruby-cutest
+ (package
+ (name "ruby-cutest")
+ (version "1.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "cutest" version))
+ (sha256
+ (base32
+ "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-clap" ,ruby-clap)))
+ (synopsis "Run tests in separate processes")
+ (description
+ "Cutest runs tests in separate processes to avoid shared state.")
+ (home-page "https://github.com/djanowski/cutest")
+ (license license:expat)))
+
+(define-public ruby-pygmentize
+ (package
+ (name "ruby-pygmentize")
+ (version "0.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pygmentize" version))
+ (sha256
+ (base32
+ "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-pygmentize-path
+ (lambda _
+ (substitute* "lib/pygmentize.rb"
+ (("\"/usr/bin/env python.*")
+ (string-append "\"" (which "pygmentize") "\"\n")))
+ #t))
+ (add-after 'build 'do-not-use-vendor-directory
+ (lambda _
+ ;; Remove bundled pygments sources
+ ;; FIXME: ruby-build-system does not support snippets.
+ (delete-file-recursively "vendor")
+ (substitute* "pygmentize.gemspec"
+ (("\"vendor/\\*\\*/\\*\",") ""))
+ #t)))))
+ (inputs
+ `(("pygments" ,python-pygments)))
+ (native-inputs
+ `(("ruby-cutest" ,ruby-cutest)
+ ("ruby-nokogiri" ,ruby-nokogiri)))
+ (synopsis "Thin Ruby wrapper around pygmentize")
+ (description
+ "Pygmentize provides a simple way to call pygmentize from within a Ruby
+application.")
+ (home-page "https://github.com/djanowski/pygmentize")
+ (license license:expat)))
+
(define-public ruby-eventmachine
(package
(name "ruby-eventmachine")