List of usage examples for org.jsoup.nodes Element parent
@Override public final Element parent()
From source file:me.vertretungsplan.parser.UntisInfoHeadlessParser.java
@Override public SubstitutionSchedule getSubstitutionSchedule() throws IOException, JSONException, CredentialInvalidException { new LoginHandler(scheduleData, credential, cookieProvider).handleLogin(executor, cookieStore); SubstitutionSchedule v = SubstitutionSchedule.fromData(scheduleData); Document doc = Jsoup.parse(httpGet(url, data.optString(PARAM_ENCODING, null))); doc.setBaseUri(url);//from ww w .j a v a 2 s.c o m Elements dayElems = doc.select("#vertretung > p > b, #vertretung > b"); Elements frames = doc.select("frame[src*=w00]"); if (dayElems.size() == 0 && frames.size() > 0) { // doc is embedded in frame doc = Jsoup.parse(httpGet(frames.get(0).absUrl("src"), data.optString(PARAM_ENCODING, null))); dayElems = doc.select("#vertretung > p > b, #vertretung > b"); } for (Element dayElem : dayElems) { SubstitutionScheduleDay day = new SubstitutionScheduleDay(); day.setLastChangeString(""); String date = dayElem.text(); day.setDateString(date); day.setDate(ParserUtils.parseDate(date)); Element next; if (dayElem.parent().tagName().equals("p")) { next = dayElem.parent().nextElementSibling().nextElementSibling(); } else { next = dayElem.parent().select("p").first().nextElementSibling(); } parseDay(day, next, v, null); } v.setClasses(getAllClasses()); v.setTeachers(getAllTeachers()); return v; }
From source file:com.johan.vertretungsplan.parser.UntisInfoParser.java
@Override public Vertretungsplan getVertretungsplan() throws IOException, JSONException { new LoginHandler(schule).handleLogin(executor, cookieStore, username, password); Document navbarDoc = Jsoup.parse(getNavbarDoc().replace(" ", "")); Element select = navbarDoc.select("select[name=week]").first(); Vertretungsplan v = new Vertretungsplan(); List<VertretungsplanTag> tage = new ArrayList<VertretungsplanTag>(); String info = navbarDoc.select(".description").text(); String stand;//from w w w . j a va 2 s .co m try { stand = info.substring(info.indexOf("Stand:")); } catch (Exception e) { stand = ""; } for (Element option : select.children()) { String week = option.attr("value"); String letter = data.optString("letter", "w"); if (data.optBoolean("single_classes", false)) { int classNumber = 1; for (String klasse : getAllClasses()) { String paddedNumber = String.format("%05d", classNumber); String url; if (data.optBoolean("w_after_number", false)) url = baseUrl + "/" + week + "/" + letter + "/" + letter + paddedNumber + ".htm"; else url = baseUrl + "/" + letter + "/" + week + "/" + letter + paddedNumber + ".htm"; Document doc = Jsoup.parse(httpGet(url, schule.getData().getString("encoding"))); Elements days = doc.select("#vertretung > p > b, #vertretung > b"); for (Element day : days) { VertretungsplanTag tag = getTagByDatum(tage, day.text()); tag.setStand(stand); tag.setDatum(day.text()); Element next = null; if (day.parent().tagName().equals("p")) { next = day.parent().nextElementSibling().nextElementSibling(); } else next = day.parent().select("p").first().nextElementSibling(); if (next.className().equals("subst")) { //Vertretungstabelle if (next.text().contains("Vertretungen sind nicht freigegeben")) continue; parseVertretungsplanTable(next, data, tag); } else { //Nachrichten parseNachrichten(next, data, tag); next = next.nextElementSibling().nextElementSibling(); parseVertretungsplanTable(next, data, tag); } writeTagByDatum(tage, tag); } classNumber++; } } else { String url; if (data.optBoolean("w_after_number", false)) url = baseUrl + "/" + week + "/" + letter + "/" + letter + "00000.htm"; else url = baseUrl + "/" + letter + "/" + week + "/" + letter + "00000.htm"; Document doc = Jsoup.parse(httpGet(url, schule.getData().getString("encoding"))); Elements days = doc.select("#vertretung > p > b, #vertretung > b"); for (Element day : days) { VertretungsplanTag tag = getTagByDatum(tage, day.text()); tag.setStand(stand); tag.setDatum(day.text()); Element next = null; if (day.parent().tagName().equals("p")) { next = day.parent().nextElementSibling().nextElementSibling(); } else next = day.parent().select("p").first().nextElementSibling(); if (next.className().equals("subst")) { //Vertretungstabelle if (next.text().contains("Vertretungen sind nicht freigegeben")) continue; parseVertretungsplanTable(next, data, tag); } else { //Nachrichten parseNachrichten(next, data, tag); next = next.nextElementSibling().nextElementSibling(); parseVertretungsplanTable(next, data, tag); } tage.add(tag); } } v.setTage(tage); } return v; }
From source file:de.geeksfactory.opacclient.apis.Littera.java
protected SearchRequestResult executeSearch(List<SearchQuery> query, int pageIndex) throws IOException, OpacErrorException, JSONException { final String searchUrl; if (!initialised) { start();//from www . ja v a2 s . c o m } try { searchUrl = buildSearchUrl(query, pageIndex); } catch (URISyntaxException e) { throw new RuntimeException(e); } final String html = httpGet(searchUrl, getDefaultEncoding()); final Document doc = Jsoup.parse(html); final Element navigation = doc.select(".result_view .navigation").first(); final int totalResults = navigation != null ? parseTotalResults(navigation.text()) : 0; final Element ul = doc.select(".result_view ul.list").first(); final List<SearchResult> results = new ArrayList<>(); for (final Element li : ul.children()) { if (li.hasClass("zugangsmonat")) { continue; } final SearchResult result = new SearchResult(); final Element title = li.select(".titelinfo a").first(); result.setId(getQueryParamsFirst(title.attr("href")).get("id")); result.setInnerhtml(title.text() + "<br>" + title.parent().nextElementSibling().text()); result.setNr(results.size()); result.setPage(pageIndex); result.setType(MEDIA_TYPES.get(li.select(".statusinfo .ma").text())); result.setCover(getCover(li)); final String statusImg = li.select(".status img").attr("src"); result.setStatus(statusImg.contains("-yes") ? SearchResult.Status.GREEN : statusImg.contains("-no") ? SearchResult.Status.RED : null); results.add(result); } return new SearchRequestResult(results, totalResults, pageIndex); }
From source file:me.vertretungsplan.parser.ESchoolParser.java
private void parseTable(Element table, SubstitutionScheduleDay day) { for (Element th : table.select("th[colspan=10]")) { String lesson;/*from ww w . j a v a 2 s.c o m*/ Pattern pattern = Pattern.compile("(\\d+)\\. Stunde"); Matcher matcher = pattern.matcher(th.text()); if (matcher.find()) { lesson = matcher.group(1); } else { lesson = th.text(); } // skip over table headers Element row = th.parent().nextElementSibling().nextElementSibling(); while (row != null && row.select("th").size() == 0) { Substitution subst = new Substitution(); subst.setLesson(lesson); Elements columns = row.select("td"); String[] classes = columns.get(0).text().split(", |\\+"); subst.setClasses(new HashSet<>(Arrays.asList(classes))); subst.setPreviousTeacher(getPreviousValue(columns.get(1))); subst.setTeacher(getNewValue(columns.get(1))); subst.setPreviousSubject(getPreviousValue(columns.get(2))); subst.setSubject(getNewValue(columns.get(2))); subst.setPreviousRoom(getPreviousValue(columns.get(3))); subst.setRoom(getNewValue(columns.get(3))); if (columns.get(4).text().isEmpty()) { subst.setType("Vertretung"); subst.setColor(colorProvider.getColor("Vertretung")); } else { String desc = columns.get(4).text(); subst.setDesc(desc); String recognizedType = recognizeType(desc); if (recognizedType == null) recognizedType = "Vertretung"; subst.setType(recognizedType); subst.setColor(colorProvider.getColor(recognizedType)); } day.addSubstitution(subst); row = row.nextElementSibling(); } } }
From source file:edu.harvard.iq.safe.lockss.impl.LOCKSSPlatformStatusHtmlParser.java
/** * * @param is/*from www.ja v a 2 s . c o m*/ */ @Override public void getPlatformStatusData(InputStream is) { try { Document doc = DataUtil.load(is, "UTF-8", ""); Element body = doc.body(); // most of the target items are sandwitched by <b> tag // this can be used to reach each target item. String tmpCurrentTime = null; String tmpUpTime = null; String currentTime = null; Elements tags = body.getElementsByTag("b"); for (Element tag : tags) { // get the current-time string: for 1.52.3 or older daemons // this is the ony place to get it. String tagText = tag.text(); logger.log(Level.FINE, "working on tagText={0}", tagText); if (tagText.equals("Daemon Status")) { // find current time and up running currentTime = tag.parent().parent().text(); logger.log(Level.INFO, "currentTime text=[{0}]", currentTime); // "currentTime =Daemon Status lockss.statelib.lib.in.us (usdocspln group) 01:25:55 03/01/12, up 7d5h21m" tmstmpMatcher = currentTimeStampPattern.matcher(currentTime); if (tmstmpMatcher.find()) { logger.log(Level.INFO, "group 0={0}", tmstmpMatcher.group(0)); tmpCurrentTime = tmstmpMatcher.group(1); logger.log(Level.INFO, "Current Time:group 1={0}", tmpCurrentTime); tmpUpTime = tmstmpMatcher.group(2); logger.log(Level.INFO, "UpTime:group 2={0}", tmpUpTime); } } // get the remaining key-value sets if (fieldNameSet.contains(tagText)) { Element parent = tag.parent(); String fieldValue = parent.nextElementSibling().text(); logger.log(Level.FINE, "{0}={1}", new Object[] { tagText, fieldValue }); summaryInfoMap.put(tagText, fieldValue); } } // extract the daemon version and platform info that are located // at the bottom // these data are sandwitched by a <center> tag Elements ctags = body.getElementsByTag("center"); String version = null; String platform = null; for (Element ctag : ctags) { String cText = ctag.text(); logger.log(Level.FINE, "center tag Text={0}", cText); // cText is like this: // Daemon 1.53.3 built 28-Jan-12 01:06:36 on build7.lockss.org, Linux RPM 1 if (StringUtils.isNotBlank(cText) && ctag.child(0).nodeName().equals("font")) { String[] versionPlatform = cText.split(", "); if (versionPlatform.length == 2) { logger.log(Level.INFO, "daemon version={0};platform={1}", versionPlatform); version = DaemonStatusDataUtil.getDaemonVersion(versionPlatform[0]); platform = versionPlatform[1]; } else { // the above regex failed logger.log(Level.WARNING, "String-formatting differs; use pattern matching"); version = DaemonStatusDataUtil.getDaemonVersion(cText); int platformOffset = cText.lastIndexOf(", ") + 2; platform = cText.substring(platformOffset); logger.log(Level.INFO, "platform={0}", platform); } } } if (summaryInfoMap.containsKey("V3 Identity")) { String ipAddress = DaemonStatusDataUtil.getPeerIpAddress(summaryInfoMap.get("V3 Identity")); logger.log(Level.INFO, "ipAddress={0}", ipAddress); if (StringUtils.isNotBlank(ipAddress)) { boxInfoMap.put("host", ipAddress); if (!ipAddress.equals(summaryInfoMap.get("IP Address"))) { summaryInfoMap.put("IP Address", ipAddress); } } else { logger.log(Level.WARNING, "host token is blank or null: use IP Address instead"); logger.log(Level.INFO, "IP Address={0}", summaryInfoMap.get("IP Address")); boxInfoMap.put("host", summaryInfoMap.get("IP Address")); } } // for pre-1.53.3 versions boxInfoMap.put("time", tmpCurrentTime); if (!summaryInfoMap.containsKey("Current Time")) { summaryInfoMap.put("Current Time", tmpCurrentTime); } boxInfoMap.put("up", tmpUpTime); if (!summaryInfoMap.containsKey("Uptime")) { summaryInfoMap.put("Uptime", tmpUpTime); } boxInfoMap.put("version", version); if (!summaryInfoMap.containsKey("Daemon Version")) { summaryInfoMap.put("Daemon Version", version); } boxInfoMap.put("platform", platform); if (!summaryInfoMap.containsKey("Platform")) { summaryInfoMap.put("Platform", platform); } } catch (IOException ex) { logger.log(Level.SEVERE, "IO error", ex); } logger.log(Level.INFO, "boxInfoMap={0}", boxInfoMap); logger.log(Level.INFO, "summaryInfo={0}", summaryInfoMap); }
From source file:cn.edu.hfut.dmic.contentextractor.ContentExtractor.java
protected String getTime(Element contentElement, String regex) throws Exception { Pattern pattern = Pattern.compile(regex); Element current = contentElement; for (int i = 0; i < 2; i++) { if (current != null && current != doc.body()) { Element parent = current.parent(); if (parent != null) { current = parent;/*w ww . j a va 2 s . c o m*/ } } } for (int i = 0; i < 6; i++) { if (current == null) { break; } String currentHtml = current.outerHtml(); Matcher matcher = pattern.matcher(currentHtml); if (matcher.find()) { srcTime = matcher.group(0); StringBuilder sb = new StringBuilder( matcher.group(1) + "-" + format(matcher.group(2)) + "-" + format(matcher.group(3))); if (matcher.groupCount() >= 4) { sb.append(" ").append(format(matcher.group(4))); } if (matcher.groupCount() >= 5) { sb.append(":").append(format(matcher.group(5))); } if (matcher.groupCount() >= 6) { sb.append(":").append(format(matcher.group(6))); } return sb.toString(); } if (current != doc.body()) { current = current.parent(); } } return ""; }
From source file:com.johan.vertretungsplan.parser.UntisCommonParser.java
/** * Parst eine Vertretungstabelle eines Untis-Vertretungsplans * //w ww . j a v a 2 s .c o m * @param table * das <code>table</code>-Element des HTML-Dokuments, das geparst * werden soll * @param data * Daten von der Schule (aus <code>Schule.getData()</code>) * @param tag * der {@link VertretungsplanTag} in dem die Vertretungen * gespeichert werden sollen * @throws JSONException */ protected void parseVertretungsplanTable(Element table, JSONObject data, VertretungsplanTag tag) throws JSONException { if (data.optBoolean("class_in_extra_line")) { for (Element element : table.select("td.inline_header")) { String className = getClassName(element.text(), data); if (isValidClass(className)) { KlassenVertretungsplan kv = new KlassenVertretungsplan(className); Element zeile = null; try { zeile = element.parent().nextElementSibling(); if (zeile.select("td") == null) { zeile = zeile.nextElementSibling(); } while (zeile != null && !zeile.select("td").attr("class").equals("list inline_header")) { Vertretung v = new Vertretung(); int i = 0; for (Element spalte : zeile.select("td")) { if (!hasData(spalte.text())) { i++; continue; } String type = data.getJSONArray("columns").getString(i); if (type.equals("lesson")) v.setLesson(spalte.text()); else if (type.equals("subject")) v.setSubject(spalte.text()); else if (type.equals("previousSubject")) v.setPreviousSubject(spalte.text()); else if (type.equals("type")) v.setType(spalte.text()); else if (type.equals("type-entfall")) { if (spalte.text().equals("x")) v.setType("Entfall"); else v.setType("Vertretung"); } else if (type.equals("room")) v.setRoom(spalte.text()); else if (type.equals("teacher")) v.setTeacher(spalte.text()); else if (type.equals("previousTeacher")) v.setPreviousTeacher(spalte.text()); else if (type.equals("desc")) v.setDesc(spalte.text()); else if (type.equals("desc-type")) { v.setDesc(spalte.text()); v.setType(recognizeType(spalte.text())); } else if (type.equals("previousRoom")) v.setPreviousRoom(spalte.text()); i++; } if (v.getDesc() != null && v.getLesson() == null && v.getPreviousRoom() == null && v.getPreviousSubject() == null && v.getPreviousTeacher() == null && v.getRoom() == null && v.getSubject() == null && v.getTeacher() == null && v.getType() == null) { // Beschreibung aus der letzten Zeile fortgesetzt Vertretung previousVertretung = kv.getVertretung() .get(kv.getVertretung().size() - 1); previousVertretung.setDesc(previousVertretung.getDesc() + " " + v.getDesc()); zeile = zeile.nextElementSibling(); continue; } if (v.getType() == null) v.setType("Vertretung"); if (!v.getLesson().equals("")) { kv.add(v); } zeile = zeile.nextElementSibling(); } tag.getKlassen().put(className, kv); } catch (Throwable e) { e.printStackTrace(); } } } } else { boolean hasType = false; for (int i = 0; i < data.getJSONArray("columns").length(); i++) { if (data.getJSONArray("columns").getString(i).equals("type")) hasType = true; } Vertretung previousVertretung = null; for (Element zeile : table.select("tr.list.odd:not(:has(td.inline_header)), " + "tr.list.even:not(:has(td.inline_header)), " + "tr:has(td[align=center]:has(font[color]))")) { Vertretung v = new Vertretung(); String klassen = ""; int i = 0; for (Element spalte : zeile.select("td")) { if (!hasData(spalte.text())) { i++; continue; } String type = data.getJSONArray("columns").getString(i); if (type.equals("lesson")) v.setLesson(spalte.text()); else if (type.equals("subject")) v.setSubject(spalte.text()); else if (type.equals("previousSubject")) v.setPreviousSubject(spalte.text()); else if (type.equals("type")) v.setType(spalte.text()); else if (type.equals("type-entfall")) { if (spalte.text().equals("x")) v.setType("Entfall"); else if (!hasType) v.setType("Vertretung"); } else if (type.equals("room")) v.setRoom(spalte.text()); else if (type.equals("previousRoom")) v.setPreviousRoom(spalte.text()); else if (type.equals("desc")) v.setDesc(spalte.text()); else if (type.equals("desc-type")) { v.setDesc(spalte.text()); v.setType(recognizeType(spalte.text())); } else if (type.equals("teacher")) v.setTeacher(spalte.text()); else if (type.equals("previousTeacher")) v.setPreviousTeacher(spalte.text()); else if (type.equals("class")) klassen = getClassName(spalte.text(), data); i++; } if (v.getDesc() != null && v.getLesson() == null && v.getPreviousRoom() == null && v.getPreviousSubject() == null && v.getPreviousTeacher() == null && v.getRoom() == null && v.getSubject() == null && v.getTeacher() == null && v.getType() == null && previousVertretung != null) { // Beschreibung aus der letzten Zeile fortgesetzt previousVertretung.setDesc(previousVertretung.getDesc() + " " + v.getDesc()); continue; } if (v.getType() == null) { if (zeile.select("strike").size() > 0 || (v.getSubject() == null && v.getRoom() == null && v.getTeacher() == null && v.getPreviousSubject() != null)) v.setType("Entfall"); else v.setType("Vertretung"); } List<String> affectedClasses; // Detect things like "5-12" Pattern pattern = Pattern.compile("(\\d+) ?- ?(\\d+)"); Matcher matcher = pattern.matcher(klassen); if (matcher.find()) { affectedClasses = new ArrayList<String>(); int min = Integer.parseInt(matcher.group(1)); int max = Integer.parseInt(matcher.group(2)); try { for (String klasse : getAllClasses()) { Pattern pattern2 = Pattern.compile("\\d+"); Matcher matcher2 = pattern2.matcher(klasse); if (matcher2.find()) { int num = Integer.parseInt(matcher2.group()); if (min <= num && num <= max) affectedClasses.add(klasse); } } } catch (IOException e) { e.printStackTrace(); } } else { if (data.optBoolean("classes_separated", true)) { affectedClasses = Arrays.asList(klassen.split(", ")); } else { affectedClasses = new ArrayList<String>(); try { for (String klasse : getAllClasses()) { // TODO: // Gibt es // eine // bessere // Mglichkeit? StringBuilder regex = new StringBuilder(); for (char character : klasse.toCharArray()) { regex.append(character); regex.append(".*"); } if (klassen.matches(regex.toString())) affectedClasses.add(klasse); } } catch (IOException e) { e.printStackTrace(); } } } for (String klasse : affectedClasses) { if (isValidClass(klasse)) { KlassenVertretungsplan kv = tag.getKlassen().get(klasse); if (kv == null) kv = new KlassenVertretungsplan(klasse); kv.add(v); tag.getKlassen().put(klasse, kv); } } previousVertretung = v; } } if (data.optBoolean("sort_classes")) { List<KlassenVertretungsplan> list = new ArrayList<>(tag.getKlassen().values()); Collections.sort(list, new Comparator<KlassenVertretungsplan>() { @Override public int compare(KlassenVertretungsplan o1, KlassenVertretungsplan o2) { return o1.getKlasse().compareTo(o2.getKlasse()); } }); LinkedHashMap<String, KlassenVertretungsplan> hashMap = new LinkedHashMap<>(); for (KlassenVertretungsplan klasse : list) { hashMap.put(klasse.getKlasse(), klasse); } tag.setKlassen(hashMap); } }
From source file:me.vertretungsplan.parser.UntisInfoParser.java
private void parseSubstitutionDays(SubstitutionSchedule v, String lastChange, Document doc, String klasse) throws JSONException, CredentialInvalidException { Elements days = doc.select("#vertretung > p > b, #vertretung > b, p:has(a[href^=#]) > b"); if (days.size() > 0) { for (Element dayElem : days) { SubstitutionScheduleDay day = new SubstitutionScheduleDay(); day.setLastChangeString(lastChange); day.setLastChange(ParserUtils.parseDateTime(lastChange)); String date = dayElem.text(); day.setDateString(date);// ww w .j a v a 2 s . c om day.setDate(ParserUtils.parseDate(date)); Element next; if (dayElem.parent().tagName().equals("p")) { next = dayElem.parent().nextElementSibling().nextElementSibling(); } else { next = dayElem.parent().select("p").first().nextElementSibling(); } parseDay(day, next, v, klasse); } } else if (doc.select("tr:has(td[align=center]):gt(0)").size() > 0) { parseSubstitutionTable(v, null, doc); v.setLastChangeString(lastChange); v.setLastChange(ParserUtils.parseDateTime(lastChange)); } }
From source file:de.geeksfactory.opacclient.apis.Pica.java
@Override public List<SearchField> getSearchFields() throws IOException, JSONException { if (!initialised) { start();/*from w w w . ja v a2 s . c o m*/ } String html = httpGet(opac_url + "/LNG=" + getLang() + "/DB=" + db + "/ADVANCED_SEARCHFILTER", getDefaultEncoding()); Document doc = Jsoup.parse(html); List<SearchField> fields = new ArrayList<>(); Elements options = doc.select("select[name=IKT0] option"); for (Element option : options) { TextSearchField field = new TextSearchField(); field.setDisplayName(option.text()); field.setId(option.attr("value")); field.setHint(""); field.setData(new JSONObject("{\"ADI\": false}")); Pattern pattern = Pattern.compile("\\[X?[A-Za-z]{2,3}:?\\]|\\(X?[A-Za-z]{2,3}:?\\)"); Matcher matcher = pattern.matcher(field.getDisplayName()); if (matcher.find()) { field.getData().put("meaning", matcher.group().replace(":", "").toUpperCase()); field.setDisplayName(matcher.replaceFirst("").trim()); } fields.add(field); } Elements sort = doc.select("select[name=SRT]"); if (sort.size() > 0) { DropdownSearchField field = new DropdownSearchField(); field.setDisplayName(sort.first().parent().parent().select(".longval").first().text()); field.setId("SRT"); for (Element option : sort.select("option")) { field.addDropdownValue(option.attr("value"), option.text()); } fields.add(field); } for (Element input : doc.select("input[type=text][name^=ADI]")) { TextSearchField field = new TextSearchField(); field.setDisplayName(input.parent().parent().select(".longkey").text()); field.setId(input.attr("name")); field.setHint(input.parent().select("span").text()); field.setData(new JSONObject("{\"ADI\": true}")); fields.add(field); } for (Element dropdown : doc.select("select[name^=ADI]")) { DropdownSearchField field = new DropdownSearchField(); field.setDisplayName(dropdown.parent().parent().select(".longkey").text()); field.setId(dropdown.attr("name")); for (Element option : dropdown.select("option")) { field.addDropdownValue(option.attr("value"), option.text()); } fields.add(field); } Elements fuzzy = doc.select("input[name=FUZZY]"); if (fuzzy.size() > 0) { CheckboxSearchField field = new CheckboxSearchField(); field.setDisplayName(fuzzy.first().parent().parent().select(".longkey").first().text()); field.setId("FUZZY"); fields.add(field); } Elements mediatypes = doc.select("input[name=ADI_MAT]"); if (mediatypes.size() > 0) { DropdownSearchField field = new DropdownSearchField(); field.setDisplayName("Materialart"); field.setId("ADI_MAT"); field.addDropdownValue("", "Alle"); for (Element mt : mediatypes) { field.addDropdownValue(mt.attr("value"), mt.parent().nextElementSibling().text().replace("\u00a0", "")); } fields.add(field); } return fields; }
From source file:com.aestasit.markdown.slidery.converters.TextTemplateConverter.java
private void renderSyntaxHighlightingHtml(final Document slidesDocument, final Configuration config) { for (Element code : slidesDocument.select("code")) { Charset encoding = config.getInputEncoding(); ByteArrayInputStream input = new ByteArrayInputStream(code.text().getBytes(encoding)); ByteArrayOutputStream out = new ByteArrayOutputStream(); String className = code.className(); if (StringUtils.isBlank(className)) { className = "java"; }//ww w . j a v a2s. c o m Renderer renderer = XhtmlRendererFactory.getRenderer(className); if (renderer != null) { try { renderer.highlight("slidery", input, out, encoding.name(), true); code.html(new String(out.toByteArray(), encoding)); code.select("br").remove(); removeComments(code); code.html(code.html().trim()); Element parent = code.parent(); if (parent.tagName() == "pre") { parent.addClass("code"); } } catch (IOException e) { // TODO: Handle exception } } } }