summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilip McGrath <philip@philipmcgrath.com>2022-07-25 08:16:30 -0400
committerLudovic Courtès <ludo@gnu.org>2022-08-04 12:05:52 +0200
commit3b017b9400978a7f351fd8a75e33d1eefb079d08 (patch)
treee8a9220707c5a939f0e0c160dbc6e2f5ca74b965
parent8d4670f4d18a9c57a6300eb3c11fbc26825f7a61 (diff)
downloadguix-3b017b9400978a7f351fd8a75e33d1eefb079d08.tar.gz
gnu: Add ruby-anystyle.
* gnu/packages/ruby.scm (ruby-anystyle): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/ruby.scm71
1 files changed, 71 insertions, 0 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6b312d1b4d..39d8d9e1ef 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -13480,3 +13480,74 @@ the power of the built-in @code{OptionParser}.")
     (description
      "This gem provides parser dictionary data for AnyStyle.")
     (license license:bsd-2)))
+
+(define-public ruby-anystyle
+  (let ((commit "50f1dd547d28ab4b830e45d70e840cb1898a37b0")
+        (revision "1"))
+    ;; Releases point to specific commits, but recent releases haven't been
+    ;; tagged in Git.  Meanwhile, the rubygems archive lacks tests.
+    (package
+      (name "ruby-anystyle")
+      (version (git-version "1.3.14" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/inukshuk/anystyle")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0f4qcrywl1kl6qysn24lj3yp85ln4i7za7b7ld2fglyzwcggxwb0"))
+                (snippet
+                 ;; There is an optional dependency on
+                 ;; <https://github.com/feedbackmine/language_detector>, which
+                 ;; seems like it was intended to be free software, but
+                 ;; doesn't have a clear license statement.  Maybe someone can
+                 ;; do more sleuthing, or else find a replacement?  See also
+                 ;; <https://github.com/inukshuk/anystyle/issues/186>.  For
+                 ;; now, patch it out, but leave a pointer to follow up.
+                 #~(begin
+                     (use-modules (guix build utils))
+                     (substitute* "Gemfile"
+                       (("gem 'language_detector', github: '[^']*'" orig)
+                        (string-append "# " orig " # unclear license")))
+                     (substitute* "spec/anystyle/parser_spec.rb"
+                       (("language: 'en'," orig)
+                        (string-append "# " orig " # no lanugage_detector")))))
+                (file-name (git-file-name name version))))
+      (build-system ruby-build-system)
+      (propagated-inputs
+       (list ruby-anystyle-data
+             ruby-bibtex-ruby
+             ruby-namae
+             ruby-wapiti))
+      (native-inputs
+       (list ruby-byebug
+             ruby-citeproc
+             ruby-edtf
+             ruby-rspec
+             ruby-unicode-scripts))
+      (arguments
+       (list
+        #:test-target "spec"
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'extract-gemspec 'avoid-bundler
+              (lambda args
+                (substitute* "Rakefile"
+                  (("require 'bundler" orig)
+                   (string-append "# " orig " # patched for Guix"))
+                  (("Bundler\\.setup" orig)
+                   (string-append "true # " orig " # patched for Guix")))))
+            (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+              (lambda args
+                (substitute* "anystyle.gemspec"
+                  (("`git ls-files spec`")
+                   "`find spec -type f | sort`")))))))
+      (home-page "https://anystyle.io")
+      (synopsis "Fast and smart citation reference parsing (Ruby library)")
+      (description
+       "AnyStyle is a very fast and smart parser for academic reference lists
+and bibliographies.  AnyStyle uses powerful machine learning heuristics based
+on Conditional Random Fields and aims to make it easy to train the model with
+data that is relevant to your parsing needs.")
+      (license license:bsd-2))))