001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.parse;
016    
017    /**
018     *  Enapsulates a parsed component template, allowing access to the
019     *  tokens parsed.
020     *
021     *  <p>TBD:  Record the name of the resource (or other location) from which
022     *  the template was parsed (useful during debugging).
023     *
024     *  @author Howard Lewis Ship
025     * 
026     **/
027    
028    public class ComponentTemplate
029    {
030        /**
031         *  The HTML template from which the tokens were generated.  This is a string
032         *  read from a resource.  The tokens represents offsets and lengths into
033         *  this string.
034         *
035         **/
036    
037        private char[] _templateData;
038    
039        private TemplateToken[] _tokens;
040    
041        /**
042         *  Creates a new ComponentTemplate.
043         *
044         *  @param templateData The template data.  This is <em>not</em> copied, so
045         *  the array passed in should not be modified further.
046         *
047         *  @param tokens  The tokens making up the template.  This is also
048         *  retained (<em>not</em> copied), and so should not
049         *  be modified once passed to the constructor.
050         *
051         **/
052    
053        public ComponentTemplate(char[] templateData, TemplateToken[] tokens)
054        {
055            _templateData = templateData;
056            _tokens = tokens;
057        }
058    
059        public char[] getTemplateData()
060        {
061            return _templateData;
062        }
063    
064        public TemplateToken getToken(int index)
065        {
066            return _tokens[index];
067        }
068    
069        public int getTokenCount()
070        {
071            return _tokens.length;
072        }
073    }