Hi,

we might want to exclude ruby macro from default XE build because it's bit
heavy. (jruby.jar ~ 7MB)

Thanks.

- Asiri

On Thu, Jul 23, 2009 at 5:49 PM, asiri <[email protected]>wrote:

> Author: asiri
> Date: 2009-07-23 14:19:58 +0200 (Thu, 23 Jul 2009)
> New Revision: 22042
>
> Added:
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/pom.xml
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/ruby/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/ruby/RubyMacro.java
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/META-INF/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/META-INF/components.txt
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/ruby/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/ruby/RenderingTests.java
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby1.test
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby2.test
>
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby3.test
> Modified:
>   platform/core/trunk/xwiki-core/pom.xml
>   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml
> Log:
> XWIKI-2849: Create ruby macro for rendering 2.0
>
> * Implemented.
>
> Modified: platform/core/trunk/xwiki-core/pom.xml
> ===================================================================
> --- platform/core/trunk/xwiki-core/pom.xml      2009-07-22 23:34:44 UTC
> (rev 22041)
> +++ platform/core/trunk/xwiki-core/pom.xml      2009-07-23 12:19:58 UTC
> (rev 22042)
> @@ -700,6 +700,13 @@
>       <groupId>org.xwiki.platform</groupId>
>       <artifactId>xwiki-core-rendering-macro-wikibridge</artifactId>
>       <version>${pom.version}</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.xwiki.platform</groupId>
> +      <artifactId>xwiki-core-rendering-macro-ruby</artifactId>
> +      <version>${pom.version}</version>
> +      <!-- Only needed at runtime since it's a component implementation
> -->
> +      <scope>runtime</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.xwiki.platform</groupId>
>
> Modified:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml
> ===================================================================
> --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml
>  2009-07-22 23:34:44 UTC (rev 22041)
> +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml
>  2009-07-23 12:19:58 UTC (rev 22042)
> @@ -127,6 +127,7 @@
>     <module>xwiki-rendering-macro-chart</module>
>     <module>xwiki-rendering-macro-footnotes</module>
>     <module>xwiki-rendering-macro-wikibridge</module>
> +    <module>xwiki-rendering-macro-ruby</module>
>   </modules>
>  </project>
>
>
>
> Property changes on:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby
> ___________________________________________________________________
> Name: svn:ignore
>   + target
> .settings
> .classpath
> .project
>
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/pom.xml
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/pom.xml
>                               (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/pom.xml
>       2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,78 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<!--
> + *
> + * See the NOTICE file distributed with this work for additional
> + * information regarding copyright ownership.
> + *
> + * This is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Lesser General Public License as
> + * published by the Free Software Foundation; either version 2.1 of
> + * the License, or (at your option) any later version.
> + *
> + * This software is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this software; if not, write to the Free
> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
> + *
> +-->
> +
> +<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="
> http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd
> ">
> +  <modelVersion>4.0.0</modelVersion>
> +  <parent>
> +    <groupId>org.xwiki.platform</groupId>
> +    <artifactId>xwiki-core-rendering-macros-parent</artifactId>
> +    <version>2.0-SNAPSHOT</version>
> +  </parent>
> +  <artifactId>xwiki-core-rendering-macro-ruby</artifactId>
> +  <name>XWiki Platform - Core - Rendering - Macro - Ruby</name>
> +  <description>XWiki Platform - Core - Rendering - Macro -
> Ruby</description>
> +  <dependencies>
> +    <dependency>
> +      <groupId>org.xwiki.platform</groupId>
> +      <artifactId>xwiki-core-rendering-macro-script</artifactId>
> +      <version>${pom.version}</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.jruby</groupId>
> +      <artifactId>jruby</artifactId>
> +      <version>1.3.0</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>com.sun.script</groupId>
> +      <artifactId>jruby-engine</artifactId>
> +      <version>1.3.0-xwiki</version>
> +    </dependency>
> +    <!-- Testing dependencies -->
> +    <dependency>
> +      <groupId>org.xwiki.platform</groupId>
> +      <artifactId>xwiki-core-rendering-macro-script</artifactId>
> +      <version>${pom.version}</version>
> +      <type>test-jar</type>
> +      <scope>test</scope>
> +    </dependency>
> +  </dependencies>
> +  <build>
> +    <plugins>
> +      <plugin>
> +        <groupId>org.apache.maven.plugins</groupId>
> +        <artifactId>maven-surefire-plugin</artifactId>
> +        <configuration>
> +          <includes>
> +            <include>**/RenderingTests.java</include>
> +          </includes>
> +        </configuration>
> +      </plugin>
> +      <plugin>
> +        <!-- Apply the Checkstyle configurations defined in the top level
> pom.xml file -->
> +        <groupId>org.apache.maven.plugins</groupId>
> +        <artifactId>maven-checkstyle-plugin</artifactId>
> +      </plugin>
> +    </plugins>
> +  </build>
> +</project>
> \ No newline at end of file
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/ruby/RubyMacro.java
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/ruby/RubyMacro.java
>                          (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/java/org/xwiki/rendering/internal/macro/ruby/RubyMacro.java
>  2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,66 @@
> +/*
> + * See the NOTICE file distributed with this work for additional
> + * information regarding copyright ownership.
> + *
> + * This is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Lesser General Public License as
> + * published by the Free Software Foundation; either version 2.1 of
> + * the License, or (at your option) any later version.
> + *
> + * This software is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this software; if not, write to the Free
> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
> + */
> +package org.xwiki.rendering.internal.macro.ruby;
> +
> +import javax.script.ScriptContext;
> +import javax.script.ScriptEngine;
> +import javax.script.ScriptException;
> +
> +import org.xwiki.component.annotation.Component;
> +import org.xwiki.rendering.macro.descriptor.DefaultContentDescriptor;
> +import org.xwiki.rendering.macro.script.AbstractJRSR223ScriptMacro;
> +import org.xwiki.rendering.macro.script.JSR223ScriptMacroParameters;
> +
> +/**
> + * A macro for executing ruby scripts.
> + *
> + * @version $Id:$
> + * @since 2.0M2
> + */
> +...@component("ruby")
> +public class RubyMacro extends
> AbstractJRSR223ScriptMacro<JSR223ScriptMacroParameters>
> +{
> +    /**
> +     * The description of the macro.
> +     */
> +    private static final String DESCRIPTION = "Execute a ruby script.";
> +
> +    /**
> +     * The description of the macro content.
> +     */
> +    private static final String CONTENT_DESCRIPTION = "The ruby script to
> execute";
> +
> +    /**
> +     * Create and initialize the descriptor of the macro.
> +     */
> +    public RubyMacro()
> +    {
> +        super(DESCRIPTION, new
> DefaultContentDescriptor(CONTENT_DESCRIPTION));
> +    }
> +
> +    /**
> +     * {...@inheritdoc}
> +     */
> +    @Override
> +    protected Object eval(String content, ScriptEngine engine,
> ScriptContext scriptContext) throws ScriptException
> +    {
> +        return super.eval(content, engine, scriptContext);
> +    }
> +}
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/META-INF/components.txt
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/META-INF/components.txt
>                            (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/main/resources/META-INF/components.txt
>    2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1 @@
> +org.xwiki.rendering.internal.macro.ruby.RubyMacro
> \ No newline at end of file
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/ruby/RenderingTests.java
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/ruby/RenderingTests.java
>                              (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/java/org/xwiki/rendering/macro/ruby/RenderingTests.java
>      2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,86 @@
> +/*
> + * See the NOTICE file distributed with this work for additional
> + * information regarding copyright ownership.
> + *
> + * This is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Lesser General Public License as
> + * published by the Free Software Foundation; either version 2.1 of
> + * the License, or (at your option) any later version.
> + *
> + * This software is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this software; if not, write to the Free
> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
> + */
> +package org.xwiki.rendering.macro.ruby;
> +
> +import org.jmock.Expectations;
> +import org.jmock.Mockery;
> +import org.xwiki.bridge.DocumentAccessBridge;
> +import org.xwiki.component.descriptor.DefaultComponentDescriptor;
> +import org.xwiki.component.embed.EmbeddableComponentManager;
> +import org.xwiki.component.manager.ComponentManager;
> +import org.xwiki.rendering.scaffolding.RenderingTestSuite;
> +import org.xwiki.test.ComponentManagerTestSetup;
> +
> +import junit.framework.Test;
> +import junit.framework.TestCase;
> +
> +/**
> + * Rendering tests for ruby macro.
> + *
> + * @version $Id:$
> + * @since 2.0M2
> + */
> +public class RenderingTests extends TestCase
> +{
> +    /**
> +     * Creates a rendering test suit for testing ruby macro.
> +     *
> +     * @return rendering test suit for testing ruby macro.
> +     * @throws Exception if an error occurs while setting up the test
> suite.
> +     */
> +    public static Test suite() throws Exception
> +    {
> +        RenderingTestSuite suite = new RenderingTestSuite("Test Ruby
> Macro");
> +
> +        suite.addTestsFromResource("macroruby1", true);
> +        suite.addTestsFromResource("macroruby2", true);
> +        suite.addTestsFromResource("macroruby3", true);
> +
> +        ComponentManagerTestSetup testSetup = new
> ComponentManagerTestSetup(suite);
> +        setUpMocks(testSetup.getComponentManager());
> +
> +        return testSetup;
> +    }
> +
> +    /**
> +     * Sets up mock component descriptors.
> +     *
> +     * @param componentManager the {...@link ComponentManager} component.
> +     */
> +    public static void setUpMocks(EmbeddableComponentManager
> componentManager)
> +    {
> +        Mockery context = new Mockery();
> +
> +        // Document Access Bridge Mock setup
> +        final DocumentAccessBridge mockDocumentAccessBridge =
> context.mock(DocumentAccessBridge.class);
> +        context.checking(new Expectations()
> +        {
> +            {
> +                allowing(mockDocumentAccessBridge).hasProgrammingRights();
> +                will(returnValue(true));
> +            }
> +        });
> +
> +        DefaultComponentDescriptor<DocumentAccessBridge> descriptorDAB =
> +            new DefaultComponentDescriptor<DocumentAccessBridge>();
> +        descriptorDAB.setRole(DocumentAccessBridge.class);
> +        componentManager.registerComponent(descriptorDAB,
> mockDocumentAccessBridge);
> +    }
> +}
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby1.test
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby1.test
>                            (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby1.test
>    2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,14 @@
> +.#-----------------------------------------------------
> +.input|xwiki/2.0
> +.#-----------------------------------------------------
> +{{ruby}}
> +puts "Hello World!!!"
> +{{/ruby}}
> +
> +== Hello {{ruby}}puts "World!!!"{{/ruby}}==
> +.#-----------------------------------------------------
> +.expect|xhtml/1.0
> +.#-----------------------------------------------------
> +<!--startmacro:ruby|-||-|
> +puts "Hello World!!!"
> +--><p>Hello World!!!</p><!--stopmacro--><h2 id="HHello"><span>Hello
> <!--startmacro:ruby|-||-|puts
> "World!!!"-->World!!!<!--stopmacro--></span></h2>
> \ No newline at end of file
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby2.test
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby2.test
>                            (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby2.test
>    2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,16 @@
> +.#-----------------------------------------------------
> +.input|xwiki/2.0
> +.# Verify ruby macro does not fail with null content
> +.#-----------------------------------------------------
> +{{ruby/}}{{ruby}}{{/ruby}}
> +.#-----------------------------------------------------
> +.expect|event/1.0
> +.#-----------------------------------------------------
> +beginDocument
> +beginParagraph
> +beginMacroMarkerInline [ruby] []
> +endMacroMarkerInline [ruby] []
> +beginMacroMarkerInline [ruby] [] []
> +endMacroMarkerInline [ruby] [] []
> +endParagraph
> +endDocument
> \ No newline at end of file
>
> Added:
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby3.test
> ===================================================================
> ---
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby3.test
>                            (rev 0)
> +++
> platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-ruby/src/test/resources/macroruby3.test
>    2009-07-23 12:19:58 UTC (rev 22042)
> @@ -0,0 +1,28 @@
> +.#-----------------------------------------------------
> +.input|xwiki/2.0
> +.#-----------------------------------------------------
> +{{ruby}}
> +require 'java'
> +include_class 'java.util.TreeSet'
> +set = TreeSet.new
> +set.add "foo"
> +set.add "Bar"
> +set.add "baz"
> +set.each do |v|
> +  puts "value: #{v}"
> +end
> +{{/ruby}}
> +.#-----------------------------------------------------
> +.expect|xhtml/1.0
> +.#-----------------------------------------------------
> +<!--startmacro:ruby|-||-|
> +require 'java'
> +include_class 'java.util.TreeSet'
> +set = TreeSet.new
> +set.add "foo"
> +set.add "Bar"
> +set.add "baz"
> +set.each do |v|
> +  puts "value: #{v}"
> +end
> +--><p>value: Bar<br/>value: baz<br/>value: foo</p><!--stopmacro-->
> \ No newline at end of file
>
> _______________________________________________
> notifications mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/notifications
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to