| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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. |
| */ |
| package org.apache.geronimo.microprofile.reporter.storage.templating; |
| |
| import static java.util.stream.Collectors.joining; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.stream.IntStream; |
| import java.util.stream.Stream; |
| |
| import javax.enterprise.context.ApplicationScoped; |
| |
| @ApplicationScoped |
| public class TemplateHelper { |
| private final Map<Character, String> escaped = new HashMap<Character, String>() { |
| { |
| put('"', """); |
| put('&', "&"); |
| put('<', "<"); |
| put('>', ">"); |
| put('\u00A0', " "); |
| put('\u00A1', "¡"); |
| put('\u00A2', "¢"); |
| put('\u00A3', "£"); |
| put('\u00A4', "¤"); |
| put('\u00A5', "¥"); |
| put('\u00A6', "¦"); |
| put('\u00A7', "§"); |
| put('\u00A8', "¨"); |
| put('\u00A9', "©"); |
| put('\u00AA', "ª"); |
| put('\u00AB', "«"); |
| put('\u00AC', "¬"); |
| put('\u00AD', "­"); |
| put('\u00AE', "®"); |
| put('\u00AF', "¯"); |
| put('\u00B0', "°"); |
| put('\u00B1', "±"); |
| put('\u00B2', "²"); |
| put('\u00B3', "³"); |
| put('\u00B4', "´"); |
| put('\u00B5', "µ"); |
| put('\u00B6', "¶"); |
| put('\u00B7', "·"); |
| put('\u00B8', "¸"); |
| put('\u00B9', "¹"); |
| put('\u00BA', "º"); |
| put('\u00BB', "»"); |
| put('\u00BC', "¼"); |
| put('\u00BD', "½"); |
| put('\u00BE', "¾"); |
| put('\u00BF', "¿"); |
| put('\u00C0', "À"); |
| put('\u00C1', "Á"); |
| put('\u00C2', "Â"); |
| put('\u00C3', "Ã"); |
| put('\u00C4', "Ä"); |
| put('\u00C5', "Å"); |
| put('\u00C6', "Æ"); |
| put('\u00C7', "Ç"); |
| put('\u00C8', "È"); |
| put('\u00C9', "É"); |
| put('\u00CA', "Ê"); |
| put('\u00CB', "Ë"); |
| put('\u00CC', "Ì"); |
| put('\u00CD', "Í"); |
| put('\u00CE', "Î"); |
| put('\u00CF', "Ï"); |
| put('\u00D0', "Ð"); |
| put('\u00D1', "Ñ"); |
| put('\u00D2', "Ò"); |
| put('\u00D3', "Ó"); |
| put('\u00D4', "Ô"); |
| put('\u00D5', "Õ"); |
| put('\u00D6', "Ö"); |
| put('\u00D7', "×"); |
| put('\u00D8', "Ø"); |
| put('\u00D9', "Ù"); |
| put('\u00DA', "Ú"); |
| put('\u00DB', "Û"); |
| put('\u00DC', "Ü"); |
| put('\u00DD', "Ý"); |
| put('\u00DE', "Þ"); |
| put('\u00DF', "ß"); |
| put('\u00E0', "à"); |
| put('\u00E1', "á"); |
| put('\u00E2', "â"); |
| put('\u00E3', "ã"); |
| put('\u00E4', "ä"); |
| put('\u00E5', "å"); |
| put('\u00E6', "æ"); |
| put('\u00E7', "ç"); |
| put('\u00E8', "è"); |
| put('\u00E9', "é"); |
| put('\u00EA', "ê"); |
| put('\u00EB', "ë"); |
| put('\u00EC', "ì"); |
| put('\u00ED', "í"); |
| put('\u00EE', "î"); |
| put('\u00EF', "ï"); |
| put('\u00F0', "ð"); |
| put('\u00F1', "ñ"); |
| put('\u00F2', "ò"); |
| put('\u00F3', "ó"); |
| put('\u00F4', "ô"); |
| put('\u00F5', "õ"); |
| put('\u00F6', "ö"); |
| put('\u00F7', "÷"); |
| put('\u00F8', "ø"); |
| put('\u00F9', "ù"); |
| put('\u00FA', "ú"); |
| put('\u00FB', "û"); |
| put('\u00FC', "ü"); |
| put('\u00FD', "ý"); |
| put('\u00FE', "þ"); |
| put('\u00FF', "ÿ"); |
| put('\u0192', "ƒ"); |
| put('\u0391', "Α"); |
| put('\u0392', "Β"); |
| put('\u0393', "Γ"); |
| put('\u0394', "Δ"); |
| put('\u0395', "Ε"); |
| put('\u0396', "Ζ"); |
| put('\u0397', "Η"); |
| put('\u0398', "Θ"); |
| put('\u0399', "Ι"); |
| put('\u039A', "Κ"); |
| put('\u039B', "Λ"); |
| put('\u039C', "Μ"); |
| put('\u039D', "Ν"); |
| put('\u039E', "Ξ"); |
| put('\u039F', "Ο"); |
| put('\u03A0', "Π"); |
| put('\u03A1', "Ρ"); |
| put('\u03A3', "Σ"); |
| put('\u03A4', "Τ"); |
| put('\u03A5', "Υ"); |
| put('\u03A6', "Φ"); |
| put('\u03A7', "Χ"); |
| put('\u03A8', "Ψ"); |
| put('\u03A9', "Ω"); |
| put('\u03B1', "α"); |
| put('\u03B2', "β"); |
| put('\u03B3', "γ"); |
| put('\u03B4', "δ"); |
| put('\u03B5', "ε"); |
| put('\u03B6', "ζ"); |
| put('\u03B7', "η"); |
| put('\u03B8', "θ"); |
| put('\u03B9', "ι"); |
| put('\u03BA', "κ"); |
| put('\u03BB', "λ"); |
| put('\u03BC', "μ"); |
| put('\u03BD', "ν"); |
| put('\u03BE', "ξ"); |
| put('\u03BF', "ο"); |
| put('\u03C0', "π"); |
| put('\u03C1', "ρ"); |
| put('\u03C2', "ς"); |
| put('\u03C3', "σ"); |
| put('\u03C4', "τ"); |
| put('\u03C5', "υ"); |
| put('\u03C6', "φ"); |
| put('\u03C7', "χ"); |
| put('\u03C8', "ψ"); |
| put('\u03C9', "ω"); |
| put('\u03D1', "ϑ"); |
| put('\u03D2', "ϒ"); |
| put('\u03D6', "ϖ"); |
| put('\u2022', "•"); |
| put('\u2026', "…"); |
| put('\u2032', "′"); |
| put('\u2033', "″"); |
| put('\u203E', "‾"); |
| put('\u2044', "⁄"); |
| put('\u2118', "℘"); |
| put('\u2111', "ℑ"); |
| put('\u211C', "ℜ"); |
| put('\u2122', "™"); |
| put('\u2135', "ℵ"); |
| put('\u2190', "←"); |
| put('\u2191', "↑"); |
| put('\u2192', "→"); |
| put('\u2193', "↓"); |
| put('\u2194', "↔"); |
| put('\u21B5', "↵"); |
| put('\u21D0', "⇐"); |
| put('\u21D1', "⇑"); |
| put('\u21D2', "⇒"); |
| put('\u21D3', "⇓"); |
| put('\u21D4', "⇔"); |
| put('\u2200', "∀"); |
| put('\u2202', "∂"); |
| put('\u2203', "∃"); |
| put('\u2205', "∅"); |
| put('\u2207', "∇"); |
| put('\u2208', "∈"); |
| put('\u2209', "∉"); |
| put('\u220B', "∋"); |
| put('\u220F', "∏"); |
| put('\u2211', "∑"); |
| put('\u2212', "−"); |
| put('\u2217', "∗"); |
| put('\u221A', "√"); |
| put('\u221D', "∝"); |
| put('\u221E', "∞"); |
| put('\u2220', "∠"); |
| put('\u2227', "∧"); |
| put('\u2228', "∨"); |
| put('\u2229', "∩"); |
| put('\u222A', "∪"); |
| put('\u222B', "∫"); |
| put('\u2234', "∴"); |
| put('\u223C', "∼"); |
| put('\u2245', "≅"); |
| put('\u2248', "≈"); |
| put('\u2260', "≠"); |
| put('\u2261', "≡"); |
| put('\u2264', "≤"); |
| put('\u2265', "≥"); |
| put('\u2282', "⊂"); |
| put('\u2283', "⊃"); |
| put('\u2284', "⊄"); |
| put('\u2286', "⊆"); |
| put('\u2287', "⊇"); |
| put('\u2295', "⊕"); |
| put('\u2297', "⊗"); |
| put('\u22A5', "⊥"); |
| put('\u22C5', "⋅"); |
| put('\u2308', "⌈"); |
| put('\u2309', "⌉"); |
| put('\u230A', "⌊"); |
| put('\u230B', "⌋"); |
| put('\u2329', "⟨"); |
| put('\u232A', "⟩"); |
| put('\u25CA', "◊"); |
| put('\u2660', "♠"); |
| put('\u2663', "♣"); |
| put('\u2665', "♥"); |
| put('\u2666', "♦"); |
| put('\u0152', "Œ"); |
| put('\u0153', "œ"); |
| put('\u0160', "Š"); |
| put('\u0161', "š"); |
| put('\u0178', "Ÿ"); |
| put('\u02C6', "ˆ"); |
| put('\u02DC', "˜"); |
| put('\u2002', " "); |
| put('\u2003', " "); |
| put('\u2009', " "); |
| put('\u200C', "‌"); |
| put('\u200D', "‍"); |
| put('\u200E', "‎"); |
| put('\u200F', "‏"); |
| put('\u2013', "–"); |
| put('\u2014', "—"); |
| put('\u2018', "‘"); |
| put('\u2019', "’"); |
| put('\u201A', "‚"); |
| put('\u201C', "“"); |
| put('\u201D', "”"); |
| put('\u201E', "„"); |
| put('\u2020', "†"); |
| put('\u2021', "‡"); |
| put('\u2030', "‰"); |
| put('\u2039', "‹"); |
| put('\u203A', "›"); |
| put('\u20AC', "€"); |
| } |
| }; |
| |
| public String escape(final String raw) { |
| final char[] chars = raw.toCharArray(); |
| return IntStream.range(0, chars.length) |
| .mapToObj(index -> escaped.getOrDefault(chars[index], String.valueOf(chars[index]))) |
| .collect(joining()); |
| } |
| } |