How to find out why asciidoctor-bibtex dies?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to find out why asciidoctor-bibtex dies?

wolandscat
I have installed and run asciidoctor-bibtext. It works on some of our files, but on some it fails. With trace on, I get this:

/usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:205:in `block in build_citation_text': asciidoctor: FAILED: /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/master.adoc: Failed to load AsciiDoc document - undefined method `ref' for #<AsciidoctorBibtex::CitationItem:0x00000006028fb918> (NoMethodError)
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `build_citation_text'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:114:in `block in replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:120:in `block (2 levels) in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `block in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `process'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `[]'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `block in parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/load.rb:83:in `load'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:78:in `convert'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `block in convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `open'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:128:in `block in invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/bin/asciidoctor:15:in `<top (required)>'
        from /home/Thomas/bin/asciidoctor:23:in `load'
        from /home/Thomas/bin/asciidoctor:23:in `<main>'
generated /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/../ehr.html

I tracked that error to this bit of code in the file /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb

          # if found, insert reference information
          if @biblio[cite.key].nil?
            if @throw_on_unknown
              raise "Unknown reference: #{cite.ref}"  #### FAILS HERE
            else
              puts "Unknown reference: #{cite.ref}"   #### OR HERE
              cite_text = cite.ref.to_s
            end
          else
            cite_text = citation_text(macro, cite)
           end

I can't find out what reference or citation the program is failing on, because `.ref` is possibly being called on a void reference, or else the method 'ref' really doesn't exist i.e. the program has an actual bug. I am not a Ruby person so don't know how to get further with this.

So I can't find out if my cite:[] macro is wrong, or if something is broken in my .bib file. I have suspicions about problems with underscores in cite keys in the .bib file, or maybe there is another error there. What tools do people use to validate a .bib file?

Stuck for now...

Any help appreciated.
Reply | Threaded
Open this post in threaded view
|

Re: How to find out why asciidoctor-bibtex dies?

mojavelinux
Administrator
It seems to me like a bug in asciidoctor-bibtex. Perhaps file an issue there if you have not already done so?

Cheers,

-Dan

On Fri, Dec 6, 2019 at 5:02 AM wolandscat [via Asciidoctor :: Discussion] <[hidden email]> wrote:
I have installed and run asciidoctor-bibtext. It works on some of our files, but on some it fails. With trace on, I get this:

/usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:205:in `block in build_citation_text': asciidoctor: FAILED: /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/master.adoc: Failed to load AsciiDoc document - undefined method `ref' for #<AsciidoctorBibtex::CitationItem:0x00000006028fb918> (NoMethodError)
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `build_citation_text'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:114:in `block in replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:120:in `block (2 levels) in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `block in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `process'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `[]'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `block in parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/load.rb:83:in `load'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:78:in `convert'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `block in convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `open'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:128:in `block in invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/bin/asciidoctor:15:in `<top (required)>'
        from /home/Thomas/bin/asciidoctor:23:in `load'
        from /home/Thomas/bin/asciidoctor:23:in `<main>'
generated /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/../ehr.html

I tracked that error to this bit of code in the file /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb

          # if found, insert reference information
          if @biblio[cite.key].nil?
            if @throw_on_unknown
              raise "Unknown reference: #{cite.ref}"  #### FAILS HERE
            else
              puts "Unknown reference: #{cite.ref}"   #### OR HERE
              cite_text = cite.ref.to_s
            end
          else
            cite_text = citation_text(macro, cite)
           end

I can't find out what reference or citation the program is failing on, because `.ref` is undoubtedly being called on a void reference, i.e. the program has an actual bug.

So I can't find out if my cite:[] macro is wrong, or if something is broken in my .bib file. I have suspicions about problems with underscores in cite keys in the .bib file, or maybe there is another error there. What tools do people use to validate a .bib file?

Stuck for now...

Any help appreciated.


If you reply to this email, your message will be added to the discussion below:
https://discuss.asciidoctor.org/How-to-find-out-why-asciidoctor-bibtex-dies-tp7396.html
To start a new topic under Asciidoctor :: Discussion, email [hidden email]
To unsubscribe from Asciidoctor :: Discussion, click here.
NAML


--
Dan Allen | @mojavelinux | https://twitter.com/mojavelinux
Reply | Threaded
Open this post in threaded view
|

Re: How to find out why asciidoctor-bibtex dies?

wolandscat
Yes, done that. Hoping for a response ;)