| /* |
| * 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. |
| */ |
| // (currently lpstart comments at the very start do not work) |
| package org.nothing; |
| |
| //lpstart: |
| // <h1>What's this?</h1> |
| // Based on the Slop parser, Javateach creates a nice HTML page from the source code of a Java class. |
| // The idea is to write explanations of the code inline, allowing explanations and code to stay together, |
| // and keeping line numbers accurate. |
| // |
| // <h1>Teaching comments</h1> |
| // Comments like this one, surrounded by lpstart/lpend will be extracted from the source |
| // code to create an HTML presentation which mixes teaching comments and code. |
| //lpend: |
| |
| import org.xml.sax.ContentHandler; |
| import org.xml.sax.SAXException; |
| |
| //lpstart: |
| // Here we could explain what class comments are about. |
| //lpend: |
| |
| /** Simple example of java code parsing with Slop. |
| * The aim is to create a minimal "literate programming" system for teaching, |
| * where java code is decorated with narrative comments. */ |
| |
| //lpstart: |
| // <h2>Here's the class declaration</h2> |
| // This class does nothing useful, it does not even compile, it is only used to |
| // test the javateach formatting. |
| // <br/> |
| // Code indentation is preserved, this is set by SlopGenerator parameters |
| // in the sitemap. |
| //lpend: |
| |
| public class SomeTest implements SlopParser,SlopConstants { |
| private ContentHandler contentHandler; |
| |
| /** chars that can be part of a field name (other than letters) */ |
| private final static String DEFAULT_TAGNAME_CHARS = "-_"; |
| private String tagnameChars = DEFAULT_TAGNAME_CHARS; |
| |
| //lpstart: |
| // lp markers have to start in column 1. |
| // <br/> |
| // HTML constructs are <b>allowed</b> in lp comments: |
| // <ul> |
| // <li>You like bullet points, I'm sure...</li> |
| // <li>Here's the second one</li> |
| // </ul> |
| // Links also work, like <a href="http://www.perdu.com" target="_new">this</a>. |
| //lpend: |
| |
| /** optionally preserve whitespace in input */ |
| private boolean preserveSpace = false; |
| |
| /** result of parsing a line */ |
| static class ParsedLine { |
| final String name; |
| final String contents; |
| |
| ParsedLine(String elementName, String elementContents) { |
| name = elementName; |
| contents = elementContents; |
| } |
| } |
| |
| //lpstart: |
| // SetValidTagname() is used to define a list of valid character for XML element |
| // names. |
| //lpend: |
| |
| /** set the list of valid chars for tag names (in addition to letters) */ |
| public void setValidTagnameChars(String str) { |
| tagnameChars = str; |
| } |
| |
| } |