/*-
 * #%L
 * SciJava polyglot kernel for Jupyter.
 * %%
 * Copyright (C) 2017 Hadrien Mary
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

package org.scijava.notebook.converter;

import org.apache.commons.lang3.StringEscapeUtils;
import org.scijava.convert.Converter;
import org.scijava.notebook.converter.output.HTMLNotebookOutput;
import org.scijava.plugin.Plugin;

@Plugin(type = Converter.class)
public class ObjectToHTMLNotebookConverter
        extends NotebookOutputConverter<Object, HTMLNotebookOutput> {

    @Override
    public Class<Object> getInputType() {
        return Object.class;
    }

    @Override
    public Class<HTMLNotebookOutput> getOutputType() {
        return HTMLNotebookOutput.class;
    }

    @Override
    public HTMLNotebookOutput convert(Object object) {
        final String escaped = StringEscapeUtils.escapeHtml4(object.toString());
        // Add in <wbr> tags before @, ., $, _, and #
        final String wordBreaks = escaped.replaceAll("([@.$_#])", "<wbr>$1");
        return new HTMLNotebookOutput(wordBreaks);
    }

}

@@ -271,18 +271,17 @@
 se at%0A *
- 
 %0A
+
  *      
@@ -325,17 +325,16 @@
 E-2.0%0A *
- 
 %0A * Unle
@@ -967,24 +967,16 @@
 rter
-%0A       
  extends
  Not
@@ -971,16 +971,20 @@
  extends
+%0A   
  Noteboo
@@ -1027,17 +1027,17 @@
 kOutput%3E
- 
+%0A
 %7B%0A%0A    @
@@ -1292,16 +1292,22 @@
 convert(
+final 
 Object o
@@ -1418,18 +1418,44 @@
  in 
-%3Cwbr%3E tags
+zero width space character (&#8203;)
  bef
@@ -1547,13 +1547,15 @@
 %22, %22
-%3Cwbr%3E
+&#8203;
 $1%22)

Change <wbr> to zero width space