Skip to content

Exception thrown when calling to_html on file with internal hyperlinks #142

@ycp3

Description

@ycp3

Describe the bug

undefined method `value' for nil:NilClass error thrown when calling to_html on a file with internal hyperlinks (hyperlinks to a bookmark or a heading within the file).

Backtrace:

docx (0.8.0) lib/docx/containers/text_run.rb:106:in `hyperlink_id'
docx (0.8.0) lib/docx/containers/text_run.rb:102:in `href'
docx (0.8.0) lib/docx/containers/text_run.rb:81:in `to_html'
docx (0.8.0) lib/docx/containers/paragraph.rb:48:in `block in to_html'
docx (0.8.0) lib/docx/containers/paragraph.rb:47:in `each'
docx (0.8.0) lib/docx/containers/paragraph.rb:47:in `to_html'
docx (0.8.0) lib/docx/document.rb:119:in `map'
docx (0.8.0) lib/docx/document.rb:119:in `to_html' 

According to here the anchor attribute is used instead of the id attribute for internal hyperlinks, breaking line 106 in text_run.rb.

To Reproduce

Open a docx file with a hyperlink to either a heading or a bookmark in the same file and call to_html.

example

require 'docx'

doc = Docx::Document.new('/path/to/your/docx/file_with_internal_hyperlink.docx')

doc.to_html

Sample docx file

https://docs.google.com/document/d/1H01zgmdC2LHAAwXAhmm6RyEz-lwbZm6R/edit?usp=sharing&ouid=103282161859668866778&rtpof=true&sd=true

Expected behavior

No exception thrown; html gets returned as normal.

Environment

  • Ruby version: 3.2.2
  • docx gem version: 0.8.0
  • OS: Alpine 3.17 docker container

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions