private void setTemplates(Article article, ParsedPage page) { final List<Template> templates = new ArrayList<Template>(10); for (final de.tudarmstadt.ukp.wikipedia.parser.Template t : page .getTemplates()) { final List<String> templateParameters = t.getParameters(); parseTemplatesSchema(article, templateParameters); if (t.getName().toLowerCase().startsWith("infobox")) { article.setInfobox(new Template(t.getName(), templateParameters)); } else { templates.add(new Template(t.getName(), templateParameters)); } } article.setTemplates(templates); }
public ResolvedTemplate parseTemplate(Template t, ParsedPage pp) { ResolvedTemplate result = new ResolvedTemplate( t ); result.setPreParseReplacement( ResolvedTemplate.TEMPLATESPACER ); StringBuilder sb = new StringBuilder(); sb.append(templatePrefix); sb.append( t.getName()+parameterDivisor ); for( String s: t.getParameters()){ sb.append( s +parameterDivisor ); } sb.delete( sb.length()-parameterDivisor.length(), sb.length() ); sb.append(templatePostfix); result.setPostParseReplacement( sb.toString() ); result.setParsedObject( t ); return result; }
/** * Generates HTML Output for a {@link Template}. */ private static String templateToHtml( Template t){ if( t == null ) { return "null"; } StringBuilder result = new StringBuilder(); result.append( "<table class=\"Template\">\n" + "<tr><th class=\"Template\">Template</th></tr>\n"+ "<tr><td class=\"Template\">" + "Name: \""+convertTags( t.getName() )+"\"<br>"+ "</td></tr>\n"); if( t.getParameters().size() != 0 ){ result.append("<tr><td class=\"Template\">"); for( String parameter: t.getParameters() ) { result.append("Parameter: \""+convertTags( parameter )+"\"<br>"); } result.append("</td></tr>\n"); } result.append("</table>" ); return result.toString(); }
/** * * Returns the set of names of all templates that are contained in the given * article (without duplicates).<br> * * Note: The names are SQL escaped using {@link StringUtils#sqlEscape(String)}. * * @param pageText * the page to get the templates from * @return a set of template names (without duplicates) */ private Set<String> getTemplateNames(String pageText) { Set<String> names = new HashSet<String>(); if (!pageText.isEmpty()) { try { ParsedPage pp = parser.parse(pageText); List<Template> templates = pp.getTemplates(); for (Template t : templates) { names.add(StringUtils.sqlEscape(t.getName().toLowerCase())); } } catch (Exception e) { // Most likely parsing problems logger.error("Problems parsing page!", e); } } return names; }
boolean containsTpl = false; tplLoop:for(Template tpl:pp.getTemplates()){ if(tpl.getName().equalsIgnoreCase(templateName)){ containsTpl=true; break tplLoop;
String templateName = t.getName().toLowerCase(); if( templateName.startsWith("vorlage:") )templateName = templateName.substring(8); else if( templateName.startsWith("template:") )templateName = templateName.substring(9);
/** * Does the same as revisionContainsTemplateFragment() without using a template index * * @param revId * @param templateFragment * @return * @throws WikiApiException */ public boolean revisionContainsTemplateFragmentWithoutIndex(int revId, String templateFragment) throws WikiApiException{ if(revApi==null){ revApi = new RevisionApi(wiki.getDatabaseConfiguration()); } if(parser==null){ //TODO switch to SWEBLE MediaWikiParserFactory pf = new MediaWikiParserFactory( wiki.getDatabaseConfiguration().getLanguage()); pf.setTemplateParserClass(ShowTemplateNamesAndParameters.class); parser = pf.createParser(); } List<Template> tplList = parser.parse(revApi.getRevision(revId).getRevisionText()).getTemplates(); for(Template tpl:tplList){ if(tpl.getName().toLowerCase().startsWith(templateFragment.toLowerCase())){ return true; } } return false; }
/** * Does the same as revisionContainsTemplateName() without using a template index * * @param revId * @param templateName * @return * @throws WikiApiException */ public boolean revisionContainsTemplateNameWithoutIndex(int revId, String templateName) throws WikiApiException{ if(revApi==null){ revApi = new RevisionApi(wiki.getDatabaseConfiguration()); } if(parser==null){ //TODO switch to SWEBLE MediaWikiParserFactory pf = new MediaWikiParserFactory( wiki.getDatabaseConfiguration().getLanguage()); pf.setTemplateParserClass(ShowTemplateNamesAndParameters.class); parser = pf.createParser(); } List<Template> tplList = parser.parse(revApi.getRevision(revId).getRevisionText()).getTemplates(); for(Template tpl:tplList){ if(tpl.getName().equalsIgnoreCase(templateName)){ return true; } } return false; }
continue; // blank template String templateName = t.getName(); // SUBARTICLE INFO STUFF templateName = new Title(templateName, false, lang).toString(); // this appears to be necessary due to JWPL's handling of template names ParsedLink.SubarticleType tempSubType;