Exemplo n.º 1
0
        public RewriterResults rewrite(Gadget gadget, MutableContent content)
        {
            if (gadget.getSpec().getModulePrefs().getFeatures().ContainsKey("caja") ||
                "1".Equals(gadget.getContext().getParameter("caja")))
            {
                URI          retrievedUri = gadget.getContext().getUrl();
                UriCallback2 cb           = new UriCallback2(retrievedUri);

                MessageQueue          mq    = new SimpleMessageQueue();
                DefaultGadgetRewriter rw    = new DefaultGadgetRewriter(mq);
                CharProducer          input = CharProducer.Factory.create(
                    new java.io.StringReader(content.getContent()),
                    FilePosition.instance(new InputSource(new java.net.URI(retrievedUri.ToString())), 2, 1, 1));
                java.lang.StringBuilder output = new java.lang.StringBuilder();

                try
                {
                    rw.rewriteContent(new java.net.URI(retrievedUri.ToString()), input, cb, output);
                }
                catch (GadgetRewriteException e)
                {
                    throwCajolingException(e, mq);
                    return(RewriterResults.notCacheable());
                }
                catch (IOException e)
                {
                    throwCajolingException(e, mq);
                    return(RewriterResults.notCacheable());
                }
                content.setContent(tameCajaClientApi() + output.ToString());
            }
            return(null);
        }
Exemplo n.º 2
0
        public static void rewrite(java.io.Reader content, Uri source,
                                   Dictionary <String, IHtmlTagTransformer> transformers, java.io.Writer writer)
        {
            CharProducer producer = CharProducer.Factory.create(content, new InputSource(new java.net.URI(source.ToString())));
            HtmlLexer    lexer    = new HtmlLexer(producer);

            try
            {
                Token lastToken  = null;
                Token currentTag = null;
                IHtmlTagTransformer currentTransformer = null;
                bool tagChanged;
                while (lexer.hasNext())
                {
                    tagChanged = false;
                    Token token = lexer.next() as Token;
                    if (token.type == HtmlTokenType.IGNORABLE)
                    {
                        continue;
                    }
                    if (token.type == HtmlTokenType.TAGBEGIN)
                    {
                        currentTag = token;
                        tagChanged = true;
                    }
                    if (tagChanged)
                    {
                        if (currentTransformer == null)
                        {
                            transformers.TryGetValue(currentTag.toString().Substring(1).ToLower(), out currentTransformer);
                        }
                        else
                        {
                            if (!currentTransformer.acceptNextTag(currentTag))
                            {
                                writer.write(currentTransformer.close());
                                transformers.TryGetValue(currentTag.toString().Substring(1).ToLower(), out currentTransformer);
                            }
                        }
                    }
                    if (currentTransformer == null)
                    {
                        writer.write(producePreTokenSeparator(token, lastToken));
                        writer.write(token.toString());
                        writer.write(producePostTokenSeparator(token, lastToken));
                    }
                    else
                    {
                        currentTransformer.accept(token, lastToken);
                    }
                    if (token.type == HtmlTokenType.TAGEND)
                    {
                        currentTag = null;
                    }
                    lastToken = token;
                }
                if (currentTransformer != null)
                {
                    writer.write(currentTransformer.close());
                }
                writer.flush();
            }
            catch (Exception pe)
            {
                throw pe;
            }
        }
Exemplo n.º 3
0
        public static List <String> rewrite(java.io.Reader content, Uri source,
                                            ILinkRewriter rewriter, java.io.Writer writer, bool extractImports)
        {
            List <String> imports  = new List <string>();
            CharProducer  producer = CharProducer.Factory.create(content,
                                                                 new InputSource(new java.net.URI(source.ToString())));
            CssLexer lexer = new CssLexer(producer);

            try
            {
                bool inImport = false;
                while (lexer.hasNext())
                {
                    Token token = lexer.next();
                    if (extractImports)
                    {
                        if (token.type == CssTokenType.SYMBOL && token.text.ToLower().Equals("@import"))
                        {
                            inImport = true;
                            continue;
                        }
                        if (inImport)
                        {
                            if (token.type == CssTokenType.URI)
                            {
                                Match matcher = urlMatcher.Match(token.text);
                                if (matcher.Success)
                                {
                                    imports.Add(matcher.Groups[2].Value.Trim());
                                }
                            }
                            else if (token.type != CssTokenType.SPACE && token.type != CssTokenType.PUNCTUATION)
                            {
                                inImport = false;
                            }
                        }
                        if (!inImport)
                        {
                            writer.write(token.text);
                        }
                    }
                    else
                    {
                        if (token.type == CssTokenType.URI)
                        {
                            writer.write(rewriteLink(token, source, rewriter));
                            continue;
                        }
                        writer.write(token.text);
                    }
                }
                writer.flush();
            }
            catch (ParseException pe)
            {
                pe.printStackTrace();
            }
            catch (Exception ioe)
            {
                throw ioe;
            }
            return(imports);
        }