gnu: Add ruby-nokogumbo.
* gnu/packages/ruby.scm (ruby-nokogumbo): New variable.
This commit is contained in:
		
							parent
							
								
									e1c63590ef
								
							
						
					
					
						commit
						c2c4e5b2ee
					
				
					 1 changed files with 64 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -39,6 +39,7 @@
 | 
			
		|||
  #: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
 | 
			
		||||
| 
						 | 
				
			
			@ -2302,6 +2303,69 @@ multibyte strings, internationalization, time zones, and testing.")
 | 
			
		|||
    (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-ox
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-ox")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue