diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..fccb13d --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +jruby-gradle.org diff --git a/asciidoc/cookbook.html b/asciidoc/cookbook.html new file mode 100644 index 0000000..54bc93f --- /dev/null +++ b/asciidoc/cookbook.html @@ -0,0 +1,638 @@ + + + + + + + +JRuby Gradle Cookbook + + + + + + + +
+
+

Running RSpec

+
+
+
build.gradle
+
+
/* Add the JRuby Gradle "base" plugin as a dependency of our build script */
+buildscript {
+    repositories { jcenter() }
+    dependencies {
+        classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9'
+    }
+}
+
+/*
+ * Importing the JRubyExec type class so we can create our own JRubyExec-based
+ * task below
+ */
+import com.github.jrubygradle.JRubyExec
+
+dependencies {
+    /* We need RSpec gems from rubygems.org to run RSpec */
+    jrubyExec group: 'rubygems', name: 'rspec', version: '3.1.+'
+}
+
+task spec(type: JRubyExec) {
+    group 'JRuby'
+    description 'Execute the RSpecs in JRuby'
+    jrubyArgs '-S'
+    script 'rspec'
+}
+
+
+
+
+
+

Building an executable .jar file

+
+
+
build.gradle
+
+
buildscript {
+    repositories { mavenLocal() }
+    dependencies {
+        classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9'
+    }
+}
+plugins {
+  id "com.github.jruby-gradle.jar" version "0.1.2"
+  id "com.github.johnrengelman.shadow" version "1.1.2"
+}
+
+apply plugin: 'java'
+
+dependencies {
+    gems group: 'rubygems', name: 'protobuf', version: '3.0.+'
+    gems group: 'rubygems', name: 'rake', version: '10.3.+'
+}
+
+
+jrubyJavaBootstrap {
+    jruby {
+        initScript = 'bin/rake'
+    }
+}
+
+// Pull the contents of lib and bin into the root of the created jar file
+sourceSets {
+    main {
+        resources.srcDirs = ['lib', 'bin']
+    }
+}
+
+shadowJar {
+    baseName 'blick-agent'
+    exclude '*.sw*', '*.gitkeep', '*.md'
+
+    jruby {
+        // Use the default GEM installation directory
+        defaultGems()
+        defaultMainClass()
+    }
+}
+
+
+
+
+
+

Creating a .war file

+
+
+
build.gradle
+
+
/* Add the JRuby Gradle "war" plugin as a dependency of our build script */
+buildscript {
+    repositories { jcenter() }
+
+    dependencies {
+        classpath 'com.github.jruby-gradle:jruby-gradle-war-plugin:0.1.5'
+    }
+}
+
+apply plugin: 'com.github.jruby-gradle.war'
+
+dependencies {
+    /* Enumerate some dependencies that will get pulled into the .war */
+    gems 'rubygems:colorize:0.7.3'
+    gems 'rubygems:sinatra:1.4.5'
+}
+
+jrubyWar {
+    webInf {
+        /* Include our app inside of `my.war/WEB-INF` */
+        from 'app.rb'
+        /* Include the config.ru to boot the app properly */
+        from 'config.ru'
+    }
+}
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/asciidoc/index.html b/asciidoc/index.html new file mode 100644 index 0000000..e6e3003 --- /dev/null +++ b/asciidoc/index.html @@ -0,0 +1,51 @@ + + + +JRuby/Gradle + + + +
+
+
+ + + + + +
+ + +This document is a work in progress! +
+
+
+
+
+

About

+
+
+

JRuby/Gradle is a collection of +Gradle plugins which make it easy to build, test, +manage and package Ruby applications. By compbining the portability of +JRuby with Gradle’s excellent task and dependency +management functionality, JRuby/Gradle provides high quality build tooling for +Ruby and Java developers alike.

+
+
+
+
+

Quick Start

+
+
+

Running some Ruby

+ +
+
+

Packaging some Ruby

+ +
+
+
+ + diff --git a/asciidoc/latest-news.html b/asciidoc/latest-news.html new file mode 100644 index 0000000..829950d --- /dev/null +++ b/asciidoc/latest-news.html @@ -0,0 +1,523 @@ + + + + + + + +Improvements to jar packaging + + + + + + + +
+
+

Improvements to jar packaging

+
+
+

Hello

+
+
+
+
+ + + \ No newline at end of file diff --git a/html5/index.html b/asciidoc/start.html similarity index 87% rename from html5/index.html rename to asciidoc/start.html index 7127f23..241ccfd 100644 --- a/html5/index.html +++ b/asciidoc/start.html @@ -4,13 +4,13 @@ - -Nope - + +Hello world + + +
diff --git a/cookbook.html b/cookbook.html index ba71ed7..54bc93f 100644 --- a/cookbook.html +++ b/cookbook.html @@ -4,630 +4,501 @@ - + JRuby Gradle Cookbook + + + @@ -636,12 +507,12 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
-

Running RSpec

+

Running RSpec

build.gradle
-
/* Add the JRuby Gradle "base" plugin as a dependency of our build script */
+
/* Add the JRuby Gradle "base" plugin as a dependency of our build script */
 buildscript {
     repositories { jcenter() }
     dependencies {
@@ -671,20 +542,20 @@ task spec(type: JRubyExec) {
 
-

Building an executable .jar file

+

Building an executable .jar file

build.gradle
-
buildscript {
+
buildscript {
     repositories { mavenLocal() }
     dependencies {
         classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9'
     }
 }
 plugins {
-  id "com.github.jruby-gradle.jar" version "0.1.2"
-  id "com.github.johnrengelman.shadow" version "1.1.2"
+  id "com.github.jruby-gradle.jar" version "0.1.2"
+  id "com.github.johnrengelman.shadow" version "1.1.2"
 }
 
 apply plugin: 'java'
@@ -723,12 +594,12 @@ shadowJar {
 
-

Creating a .war file

+

Creating a .war file

build.gradle
-
/* Add the JRuby Gradle "war" plugin as a dependency of our build script */
+
/* Add the JRuby Gradle "war" plugin as a dependency of our build script */
 buildscript {
     repositories { jcenter() }
 
@@ -760,7 +631,7 @@ jrubyWar {
 
diff --git a/docinfo.html b/docinfo.html new file mode 100644 index 0000000..e69de29 diff --git a/examples/basic-topology.gradle b/examples/basic-topology.gradle new file mode 100644 index 0000000..e19936b --- /dev/null +++ b/examples/basic-topology.gradle @@ -0,0 +1,50 @@ +buildscript { + repositories { jcenter() } + dependencies { + classpath 'com.github.jruby-gradle:jruby-gradle-storm-plugin:0.1.6+' + } +} + +apply plugin: 'com.github.jruby-gradle.storm' + +/* Need the JRubyStormLocal task to run a "local topology" */ +import com.github.jrubygradle.storm.JRubyStormLocal + +dependencies { + /* Including a Ruby gem dependency for our topology */ + gems 'rubygems:colorize:0.7.3+' + + /* Our topology consumes from Kafka so we need our Java dependencies to be + * enumerated under the `jrubyStorm` configuration so they get properly + * unpacked into the resulting topology .jar file + */ + jrubyStorm group: 'org.apache.storm', + name: 'storm-kafka', + version: '0.9.2-incubating', + transitive: false + jrubyStorm group: 'org.apache.kafka', + name: 'kafka_2.10', + version: '0.8.1.+' + + /* Excluding Zookeeper because storm-core is already pulling in ZK as + * dependency to prevent conflicts + */ + jrubyStorm('org.apache.curator:curator-framework:2+') { + exclude module: 'zookeeper' + } +} + +// topologies/ and bolts/ are already included by default, so we just need to +// add a few more files to the jar file +jrubyStorm { + /* Pull our code from lib/ into the root of the topology */ + from 'lib' + /* Pull the code in config/ into a config/ dir in the topology */ + into('config') { from 'config' } +} + +task runLocal(type: JRubyStormLocal) { + description 'Run the topology in local topology mode' + topology 'topologies/basic_topology.rb' + standardInput System.in +} diff --git a/examples/building-wars.gradle b/examples/building-wars.gradle new file mode 100644 index 0000000..d229e25 --- /dev/null +++ b/examples/building-wars.gradle @@ -0,0 +1,25 @@ +/* Add the JRuby Gradle "war" plugin as a dependency of our build script */ +buildscript { + repositories { jcenter() } + + dependencies { + classpath 'com.github.jruby-gradle:jruby-gradle-war-plugin:0.1.5' + } +} + +apply plugin: 'com.github.jruby-gradle.war' + +dependencies { + /* Enumerate some dependencies that will get pulled into the .war */ + gems 'rubygems:colorize:0.7.3' + gems 'rubygems:sinatra:1.4.5' +} + +jrubyWar { + webInf { + /* Include our app inside of `my.war/WEB-INF` */ + from 'app.rb' + /* Include the config.ru to boot the app properly */ + from 'config.ru' + } +} diff --git a/examples/executable-jar.gradle b/examples/executable-jar.gradle new file mode 100644 index 0000000..60d7ba1 --- /dev/null +++ b/examples/executable-jar.gradle @@ -0,0 +1,42 @@ +buildscript { + repositories { mavenLocal() } + dependencies { + classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9' + } +} +plugins { + id "com.github.jruby-gradle.jar" version "0.1.2" + id "com.github.johnrengelman.shadow" version "1.1.2" +} + +apply plugin: 'java' + +dependencies { + gems group: 'rubygems', name: 'protobuf', version: '3.0.+' + gems group: 'rubygems', name: 'rake', version: '10.3.+' +} + + +jrubyJavaBootstrap { + jruby { + initScript = 'bin/rake' + } +} + +// Pull the contents of lib and bin into the root of the created jar file +sourceSets { + main { + resources.srcDirs = ['lib', 'bin'] + } +} + +shadowJar { + baseName 'blick-agent' + exclude '*.sw*', '*.gitkeep', '*.md' + + jruby { + // Use the default GEM installation directory + defaultGems() + defaultMainClass() + } +} diff --git a/examples/rspec.gradle b/examples/rspec.gradle new file mode 100644 index 0000000..f292e4d --- /dev/null +++ b/examples/rspec.gradle @@ -0,0 +1,25 @@ +/* Add the JRuby Gradle "base" plugin as a dependency of our build script */ +buildscript { + repositories { jcenter() } + dependencies { + classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9' + } +} + +/* + * Importing the JRubyExec type class so we can create our own JRubyExec-based + * task below + */ +import com.github.jrubygradle.JRubyExec + +dependencies { + /* We need RSpec gems from rubygems.org to run RSpec */ + jrubyExec group: 'rubygems', name: 'rspec', version: '3.1.+' +} + +task spec(type: JRubyExec) { + group 'JRuby' + description 'Execute the RSpecs in JRuby' + jrubyArgs '-S' + script 'rspec' +} diff --git a/index.html b/index.html index d82aed2..e6e3003 100644 --- a/index.html +++ b/index.html @@ -1,781 +1,51 @@ - - + - - - - -JRuby Gradle - + +JRuby/Gradle + - - -
+
-
-

JRuby Gradle is a set of -Gradle plugins which make it easy to build, test, -manage and package JRuby projects. By relying on Gradle -to provide much of the basic task and dependency management functionality, -JRuby Gradle provides high quality build tooling for Ruby and Java developers.

-
-
-
-
-

Quick Start

-
-
-

The most basic use-case might be running some -RSpec-based tests with JRuby Gradle’s -base -plugin.

-
-
-
build.gradle
-
-
/* Add the JRuby Gradle "base" plugin as a dependency of our build script */
-buildscript {
-    repositories { jcenter() }
-    dependencies {
-        classpath 'com.github.jruby-gradle:jruby-gradle-plugin:0.1.9'
-    }
-}
-
-/*
- * Importing the JRubyExec type class so we can create our own JRubyExec-based
- * task below
- */
-import com.github.jrubygradle.JRubyExec
-
-dependencies {
-    /* We need RSpec gems from rubygems.org to run RSpec */
-    jrubyExec group: 'rubygems', name: 'rspec', version: '3.1.+'
-}
-
-task spec(type: JRubyExec) {
-    group 'JRuby'
-    description 'Execute the RSpecs in JRuby'
-    jrubyArgs '-S'
-    script 'rspec'
-}
-
-
-
-

Using the build.gradle above, running ./gradlew spec will result in the -Ruby-based dependencies being resolved and installed, then JRubyExec will -execute RSpec using JRuby.

-
-
+
-
Note
+
-The version in the above example might be out of date, please refer to the -release -page for the latest version of the base plugin. +This document is a work in progress!
+
+
+
+

About

+
-

More examples can be found in the JRuby Gradle Cookbook.

+

JRuby/Gradle is a collection of +Gradle plugins which make it easy to build, test, +manage and package Ruby applications. By compbining the portability of +JRuby with Gradle’s excellent task and dependency +management functionality, JRuby/Gradle provides high quality build tooling for +Ruby and Java developers alike.

-

Plugins

+

Quick Start

-

Base

-
-

The base plugin is the foundation for all of the other plugins. It provides the -core JRuby dependency, Ruby gem dependency resolution and the -JRubyExec task type.

-
-
-

Learn more about the base plugin

-
+

Running some Ruby

+
-

Jar

-
-

The jar plugin helps package .jar files for projects. The plugin supports creating .jar artifacts that are ready to be included in other projects, it also supports creating self-contained executable archives.

+

Packaging some Ruby

+
-
-

Learn more about the jar plugin

-
-
-
-

War

-
-

Like the Jar plugin, the war plugin helps package .war files for -projects. Unlike the Jar plugin this plugin is primarily responsible for -creating JRuby-based web application artifacts. Similar to the Jar however, -the war plugin can create self-contained executable archives.

-
-
-

Learn more about the war plugin

-
-
-
-

Storm

-
-

The Storm plugin enables developers to create -Apache Storm applications, also referred to as -"topologies", in Ruby via the Redstorm library.

-
-
-

Learn more about the storm plugin

-
-
-
-
-
- - \ No newline at end of file + diff --git a/latest-news.html b/latest-news.html new file mode 100644 index 0000000..829950d --- /dev/null +++ b/latest-news.html @@ -0,0 +1,523 @@ + + + + + + + +Improvements to jar packaging + + + + + + + +
+
+

Improvements to jar packaging

+
+
+

Hello

+
+
+
+
+ + + \ No newline at end of file diff --git a/news/2015-07-08-new-jruby-default.html b/news/2015-07-08-new-jruby-default.html new file mode 100644 index 0000000..a83faf4 --- /dev/null +++ b/news/2015-07-08-new-jruby-default.html @@ -0,0 +1,521 @@ + + + + + + + +JRuby 1.7.21 now defaulted + + + + + + + +
+
+

JRuby 1.7.21 now defaulted

+
+ +
+
+
+ + + \ No newline at end of file diff --git a/news/2015-07-09-jrubyjar-improvements.html b/news/2015-07-09-jrubyjar-improvements.html new file mode 100644 index 0000000..829950d --- /dev/null +++ b/news/2015-07-09-jrubyjar-improvements.html @@ -0,0 +1,523 @@ + + + + + + + +Improvements to jar packaging + + + + + + + +
+
+

Improvements to jar packaging

+
+
+

Hello

+
+
+
+
+ + + \ No newline at end of file diff --git a/plugins/base.html b/plugins/base.html index d1ecb9f..6d30b80 100644 --- a/plugins/base.html +++ b/plugins/base.html @@ -4,630 +4,501 @@ - + The Base Plugin + + + @@ -654,7 +525,7 @@ plugins:

-

Compatilibity

+

Compatilibity

This plugin requires Gradle 2.0 or better

@@ -662,25 +533,25 @@ plugins:

-

Getting Started

+

Getting Started

-
buildscript {
+
buildscript {
     repositories { jcenter() }
 
     dependencies {
-      classpath group: 'com.github.jruby-gradle', name: 'jruby-gradle-plugin', version: '0.1.2'
+      classpath group: 'com.github.jruby-gradle', name: 'jruby-gradle-plugin', version: '0.1.2'
     }
 }
 
-apply plugin: 'com.github.jruby-gradle.base'
+apply plugin: 'com.github.jruby-gradle.base'
-

Adding gems

+

Adding gems

You can also add Ruby gem dependencies in your build.gradle file under the @@ -688,16 +559,16 @@ apply plugin: 'com.github.jruby-gradle.base'

-
dependencies {
-    gems group: 'rubygems', name: 'sinatra', version: '1.4.5'
-    gems group: 'rubygems', name: 'rake', version: '10.3.+'
+
dependencies {
+    gems group: 'rubygems', name: 'sinatra', version: '1.4.5'
+    gems group: 'rubygems', name: 'rake', version: '10.3.+'
 }
-

Default Tasks

+

Default Tasks

The plugin provides the following tasks:

@@ -717,7 +588,7 @@ content of Java-based dependencies into .jarcache/ for interpreted
-

JRubyExec - Task for Executing a Ruby Script

+

JRubyExec - Task for Executing a Ruby Script

In a similar vein to JavaExec and @@ -726,15 +597,15 @@ the JRubyExec allows for Ruby scripts to be executed in a Gradle sc

-
import com.github.jrubygradle.JRubyExec
+
import com.github.jrubygradle.JRubyExec
 
 dependencies {
-    jrubyExec 'rubygems:credit_card_validator:1.2.0'
+    jrubyExec 'rubygems:credit_card_validator:1.2.0'
 }
 
-task runMyScript( type: JRubyExec ) {
-    script 'scripts/runme.rb'
-    scriptArgs '-x', '-y'
+task runMyScript( type: JRubyExec ) {
+    script 'scripts/runme.rb'
+    scriptArgs '-x', '-y'
 }
@@ -744,102 +615,102 @@ task runMyScript( type: JRubyExec ) {
  • -

    script - Object (Usually File or String). Path to the script.

    +

    ```script``` - ```Object``` (Usually File or String). Path to the script.

  • -

    scriptArgs - List. List of arguments to pass to script.

    +

    ```scriptArgs``` - ```List```. List of arguments to pass to script.

  • -

    workingDir - Object (Usually File or String). Working directory for script.

    +

    ```workingDir``` - ```Object``` (Usually File or String). Working directory for script.

  • -

    environment - Map. Environment to be set. Do not set GEM_HOME or GEM_PATH with this method.

    +

    ```environment``` - ```Map```. Environment to be set. Do not set ```GEM_HOME``` or ```GEM_PATH``` with this method.

  • -

    standardInput - InputStream. Set an input stream to be read by the script.

    +

    ```standardInput``` - ```InputStream```. Set an input stream to be read by the script.

  • -

    standardOutput - OutputStream. Capture the output of the script.

    +

    ```standardOutput``` - ```OutputStream```. Capture the output of the script.

  • -

    errorOutput - OutputStream. Capture the error output of the script.

    +

    ```errorOutput``` - ```OutputStream```. Capture the error output of the script.

  • -

    ignoreExitValue - Boolean. Ignore the JVm exit value. Exit values are only effective if the exit value of the Ruby script is correctly communicated back to the JVM.

    +

    ```ignoreExitValue``` - ```Boolean```. Ignore the JVm exit value. Exit values are only effective if the exit value of the Ruby script is correctly communicated back to the JVM.

  • -

    configuration - String. Configuration to copy gems from. (*)

    +

    ```configuration``` - ```String```. Configuration to copy gems from. (*)

  • -

    classpath - List. Additional Jars/Directories to place on classpath.

    +

    ```classpath``` - ```List```. Additional Jars/Directories to place on classpath.

  • -

    jrubyVersion - String. JRuby version to use if not the same as project.jruby.execVersion.

    +

    ```jrubyVersion``` - ```String```. JRuby version to use if not the same as ```project.jruby.execVersion```.

  • -

    gemWorkDir - File. Provide a custom working directory for unpacking GEMs. By default each JRubyExec task +

    ```gemWorkDir``` - ```File```. Provide a custom working directory for unpacking GEMs. By default each JRubyExec task uses it’s own work directory. Use this to set a common work directory for a number of tasks.

-

(*) If jRubyVersion has not been set, jrubyExec will used as -configuration. However, if jRubyVersion has been set, no gems will be used unless an explicit configuration has been provided

+

(*) If ```jRubyVersion``` has not been set, ```jrubyExec``` will used as +configuration. However, if ```jRubyVersion``` has been set, no gems will be used unless an explicit configuration has been provided

-

Additional JRubyExec methods for controlling the JVM instance

+

Additional ```JRubyExec``` methods for controlling the JVM instance

-

jrubyexec extension

+

jrubyexec extension

-

Similar to javaexec and exec it is possible to add the execution of a jruby script within another task

+

Similar to ```javaexec``` and ```exec``` it is possible to add the execution of a jruby script within another task

-
task needSomeRubyLove {
+
task needSomeRubyLove {
   jrubyexec {
-    script 'scripts/runme.rb'
-    scriptArgs '-x', '-y'
+    script 'scripts/runme.rb'
+    scriptArgs '-x', '-y'
   }
 }
@@ -851,7 +722,7 @@ configuration. However, if jRubyVersion has been set,
  • The version of jruby-complete is strictly tied to the jruby.execVersion. Therefore trying to set jrubyVersion -in the jrubyexec closure will cause a failure

    +in the ```jrubyexec``` closure will cause a failure

  • GEMs and additional JARs are only taken from the jrubyExec configuration.

    @@ -871,7 +742,7 @@ All other methods should work.

-

Running a Ruby PATH command

+

Running a Ruby PATH command

Because JRubyExec checks for the existence of the script, it might look at first whether running Ruby commands from @@ -881,10 +752,10 @@ All other methods should work.

-
task rake( type : JRubyExec ) {
-    jrubyArgs '-S'
-    script 'rake'
-    scriptArgs '/path/to/Rakefile', 'target1', 'target2'
+
task rake( type : JRubyExec ) {
+    jrubyArgs '-S'
+    script 'rake'
+    scriptArgs '/path/to/Rakefile', 'target1', 'target2'
 }
@@ -893,12 +764,12 @@ All other methods should work.

-
ext {
-    rake = { String target ->
+
ext {
+    rake = { String target ->
         jrubyexec {
-            jrubyArgs '-S'
-            script 'rake'
-            scriptArgs '/path/to/Rakefile', target
+            jrubyArgs '-S'
+            script 'rake'
+            scriptArgs '/path/to/Rakefile', target
         }
     }
 }
@@ -907,23 +778,23 @@ All other methods should work.

-

JRubyPrepareGems - A task for unpacking GEMs

+

JRubyPrepareGems - A task for unpacking GEMs

Unpacking occurs using the default jruby version as set by jruby.execVersion.

-
import com.github.jrubygradle.JRubyPrepareGems
+
import com.github.jrubygradle.JRubyPrepareGems
 
 task unpackMyGems( type : JRubyPrepareGems ) {
 
-  // Parent directory for unpacking GEMs.
-  // Gems will end up in a subdirectory 'gems/GemName-GemVersion'
+  // Parent directory for unpacking GEMs.
+  // Gems will end up in a subdirectory 'gems/GemName-GemVersion'
   outputDir buildDir
 
-  // Add one or more gems
-  // Can be String(s), File(s), FileCollection(s) or Configuration(s)
+  // Add one or more gems
+  // Can be String(s), File(s), FileCollection(s) or Configuration(s)
   gems project.configuration.gems
 
 }
@@ -932,10 +803,10 @@ task unpackMyGems( type : JRubyPrepareGems ) {
-

Advanced Usage

+

Advanced Usage

-

Using a custom Gem repository

+

Using a custom Gem repository

By default the jruby plugin will use rubygems-proxy.torquebox.org as its @@ -953,16 +824,16 @@ server.

-
jruby {
-    defaultRepositories = false
+
jruby {
+    defaultRepositories = false
 }
 
 repositories {
-    maven { url : 'http://localhost:8989/releases' }
+    maven { url : 'http://localhost:8989/releases' }
 }
 
 dependencies {
-    gems group: 'com.lookout', name: 'custom-gem', version: '1.0.+'
+    gems group: 'com.lookout', name: 'custom-gem', version: '1.0.+'
 }
@@ -970,7 +841,7 @@ dependencies {
-

Using the Ruby interpreter

+

Using the Ruby interpreter

There are still plenty of cases, such as for local development, when you might @@ -980,19 +851,19 @@ for your application:

-
# Hack our GEM_HOME to make sure that the `rubygems` support can find our
-# unpacked gems in build/vendor/
-vendored_gems = File.expand_path(File.dirname(__FILE__) + '/build/vendor')
-if File.exists?(vendored_gems)
-  ENV['GEM_HOME'] = vendored_gems
-end
+
# Hack our GEM_HOME to make sure that the `rubygems` support can find our
+# unpacked gems in build/vendor/
+vendored_gems = File.expand_path(File.dirname(__FILE__) + '/build/vendor')
+if File.exists?(vendored_gems)
+  ENV['GEM_HOME'] = vendored_gems
+end
 
-jar_cache = File.expand_path(File.dirname(__FILE__) + '/.jarcache/')
-if File.exists?(jar_cache)
-  # Under JRuby `require`ing a `.jar` file will result in it being added to the
-  # classpath for easy importing
-  Dir["#{jar_cache}/*.jar"].each { |j| require j }
-end
+jar_cache = File.expand_path(File.dirname(__FILE__) + '/.jarcache/') +if File.exists?(jar_cache) + # Under JRuby `require`ing a `.jar` file will result in it being added to the + # classpath for easy importing + Dir["#{jar_cache}/*.jar"].each { |j| require j } +end
@@ -1002,7 +873,7 @@ level of the source tree, i.e. where build.gradle is located

-

Quickstart for those unfamiliar with Gradle

+

Quickstart for those unfamiliar with Gradle

Note: This assumes you already have [Gradle](http://gradle.org) installed. If you are not on Windows it is recommended @@ -1010,7 +881,7 @@ that you use [GVM](http://gvmtool.net<

-
% mkdir fancy-webapp
+
% mkdir fancy-webapp
 % cd fancy-webapp
 % git init
 Initialized empty Git repository in /usr/home/tyler/source/github/fancy-webapp/.git/
@@ -1022,7 +893,7 @@ BUILD SUCCESSFUL
 
 Total time: 6.411 secs
 % git add gradle gradlew gradlew.bat
-% git commit -m "Initial commit with gradle wrappers"
+% git commit -m "Initial commit with gradle wrappers"
@@ -1033,7 +904,7 @@ Total time: 6.411 secs
diff --git a/plugins/jar.html b/plugins/jar.html index cc2f965..7f16a22 100644 --- a/plugins/jar.html +++ b/plugins/jar.html @@ -4,630 +4,501 @@ - + The Jar Plugin + + + @@ -639,7 +510,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
diff --git a/plugins/storm.html b/plugins/storm.html index f9b5d16..0f8b4a9 100644 --- a/plugins/storm.html +++ b/plugins/storm.html @@ -4,630 +4,501 @@ - + The Storm Plugin + + + @@ -647,7 +518,7 @@ storm plugin enables developers to build, test and deploy
-
Note
+
To learn more about Apache Storm itself, please consult @@ -660,61 +531,12 @@ documentation intends only to cover the JRuby Gradle plugin’s functionalit
-

Working with a basic topology

+

Working with a basic topology

build.gradle
-
buildscript {
-    repositories { jcenter() }
-    dependencies {
-        classpath 'com.github.jruby-gradle:jruby-gradle-storm-plugin:0.1.6+'
-    }
-}
-
-apply plugin: 'com.github.jruby-gradle.storm'
-
-/* Need the JRubyStormLocal task to run a "local topology" */
-import com.github.jrubygradle.storm.JRubyStormLocal
-
-dependencies {
-    /* Including a Ruby gem dependency for our topology */
-    gems 'rubygems:colorize:0.7.3+'
-
-    /* Our topology consumes from Kafka so we need our Java dependencies to be
-     * enumerated under the `jrubyStorm` configuration so they get properly
-     * unpacked into the resulting topology .jar file
-     */
-    jrubyStorm group: 'org.apache.storm',
-                name: 'storm-kafka',
-             version: '0.9.2-incubating',
-          transitive: false
-    jrubyStorm group: 'org.apache.kafka',
-                name: 'kafka_2.10',
-             version: '0.8.1.+'
-
-    /* Excluding Zookeeper because storm-core is already pulling in ZK as
-     * dependency to prevent conflicts
-     */
-    jrubyStorm('org.apache.curator:curator-framework:2+') {
-        exclude module: 'zookeeper'
-    }
-}
-
-// topologies/ and bolts/ are already included by default, so we just need to
-// add a few more files to the jar file
-jrubyStorm {
-    /* Pull our code from lib/ into the root of the topology */
-    from 'lib'
-    /* Pull the code in config/ into a config/ dir in the topology */
-    into('config') { from 'config' }
-}
-
-task runLocal(type: JRubyStormLocal) {
-    description 'Run the topology in local topology mode'
-    topology 'topologies/basic_topology.rb'
-    standardInput System.in
-}
+
Unresolved directive in storm.adoc - include::../examples/basic-topology.gradle[]
@@ -722,7 +544,7 @@ task runLocal(type: JRubyStormLocal) {
diff --git a/plugins/war.html b/plugins/war.html index 4ca79db..3efe886 100644 --- a/plugins/war.html +++ b/plugins/war.html @@ -4,630 +4,501 @@ - + The War Plugin + + + @@ -639,7 +510,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } diff --git a/start.html b/start.html index 46f39e7..241ccfd 100644 --- a/start.html +++ b/start.html @@ -4,630 +4,501 @@ - + Hello world + + + @@ -639,7 +510,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } diff --git a/stylesheets/foundation.css b/stylesheets/foundation.css new file mode 100644 index 0000000..cf24d41 --- /dev/null +++ b/stylesheets/foundation.css @@ -0,0 +1,620 @@ +/* normalize.css v2.1.1 | MIT License | git.io/normalize */ +/* ========================================================================== HTML5 display definitions ========================================================================== */ +/** Correct `block` display not defined in IE 8/9. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } + +/** Correct `inline-block` display not defined in IE 8/9. */ +audio, canvas, video { display: inline-block; } + +/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ +audio:not([controls]) { display: none; height: 0; } + +/** Address styling not present in IE 8/9. */ +[hidden] { display: none; } + +/* ========================================================================== Base ========================================================================== */ +/** 1. Prevent system color scheme's background color being used in Firefox, IE, and Opera. 2. Prevent system color scheme's text color being used in Firefox, IE, and Opera. 3. Set default font family to sans-serif. 4. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ +html { background: #fff; /* 1 */ color: #000; /* 2 */ font-family: sans-serif; /* 3 */ -ms-text-size-adjust: 100%; /* 4 */ -webkit-text-size-adjust: 100%; /* 4 */ } + +/** Remove default margin. */ +body { margin: 0; } + +/* ========================================================================== Links ========================================================================== */ +/** Address `outline` inconsistency between Chrome and other browsers. */ +a:focus { outline: thin dotted; } + +/** Improve readability when focused and also mouse hovered in all browsers. */ +a:active, a:hover { outline: 0; } + +/* ========================================================================== Typography ========================================================================== */ +/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/** Address styling not present in IE 8/9, Safari 5, and Chrome. */ +abbr[title] { border-bottom: 1px dotted; } + +/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ +b, strong { font-weight: bold; } + +/** Address styling not present in Safari 5 and Chrome. */ +dfn { font-style: italic; } + +/** Address differences between Firefox and other browsers. */ +hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } + +/** Address styling not present in IE 8/9. */ +mark { background: #ff0; color: #000; } + +/** Correct font family set oddly in Safari 5 and Chrome. */ +code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } + +/** Improve readability of pre-formatted text in all browsers. */ +pre { white-space: pre-wrap; } + +/** Set consistent quote types. */ +q { quotes: "\201C" "\201D" "\2018" "\2019"; } + +/** Address inconsistent and variable font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sup { top: -0.5em; } + +sub { bottom: -0.25em; } + +/* ========================================================================== Embedded content ========================================================================== */ +/** Remove border when inside `a` element in IE 8/9. */ +img { border: 0; } + +/** Correct overflow displayed oddly in IE 9. */ +svg:not(:root) { overflow: hidden; } + +/* ========================================================================== Figures ========================================================================== */ +/** Address margin not present in IE 8/9 and Safari 5. */ +figure { margin: 0; } + +/* ========================================================================== Forms ========================================================================== */ +/** Define consistent border, margin, and padding. */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ +legend { border: 0; /* 1 */ padding: 0; /* 2 */ } + +/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */ +button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } + +/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ +button, input { line-height: normal; } + +/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */ +button, select { text-transform: none; } + +/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */ +button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } + +/** Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { cursor: default; } + +/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ +input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */ +input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } + +/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** Remove inner padding and border in Firefox 4+. */ +button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } + +/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ +textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } + +/* ========================================================================== Tables ========================================================================== */ +/** Remove most spacing between table cells. */ +table { border-collapse: collapse; border-spacing: 0; } + +*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } + +html, body { font-size: 100%; } + +body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } + +a:hover { cursor: pointer; } + +a:focus { outline: none; } + +img, object, embed { max-width: 100%; height: auto; } + +object, embed { height: 100%; } + +img { -ms-interpolation-mode: bicubic; } + +#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } + +.left { float: left !important; } + +.right { float: right !important; } + +.text-left { text-align: left !important; } + +.text-right { text-align: right !important; } + +.text-center { text-align: center !important; } + +.text-justify { text-align: justify !important; } + +.hide { display: none; } + +.antialiased, body { -webkit-font-smoothing: antialiased; } + +img { display: inline-block; vertical-align: middle; } + +textarea { height: auto; min-height: 50px; } + +select { width: 100%; } + +p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } + +.subheader, #content #toctitle, .admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title, .tableblock > caption { line-height: 1.4; color: #6f6f6f; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +/* Typography resets */ +div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; } + +/* Default Link Styles */ +a { color: #2ba6cb; text-decoration: none; line-height: inherit; } +a:hover, a:focus { color: #2795b6; } +a img { border: none; } + +/* Default paragraph styles */ +p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; text-rendering: optimizeLegibility; } +p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } + +/* Default header styles */ +h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: bold; font-style: normal; color: #222222; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; } +h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #6f6f6f; line-height: 0; } + +h1 { font-size: 2.125em; } + +h2 { font-size: 1.6875em; } + +h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } + +h4 { font-size: 1.125em; } + +h5 { font-size: 1.125em; } + +h6 { font-size: 1em; } + +hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } + +/* Helpful Typography Defaults */ +em, i { font-style: italic; line-height: inherit; } + +strong, b { font-weight: bold; line-height: inherit; } + +small { font-size: 60%; line-height: inherit; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #7f0a0c; } + +/* Lists */ +ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; } + +ul, ol { margin-left: 1.5em; } + +/* Unordered Lists */ +ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } +ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } +ul.square { list-style-type: square; } +ul.circle { list-style-type: circle; } +ul.disc { list-style-type: disc; } +ul.no-bullet { list-style: none; } + +/* Ordered Lists */ +ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } + +/* Definition Lists */ +dl dt { margin-bottom: 0.3125em; font-weight: bold; } +dl dd { margin-bottom: 1.25em; } + +/* Abbreviations */ +abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px dotted #dddddd; cursor: help; } + +abbr { text-transform: none; } + +/* Blockquotes */ +blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } +blockquote cite { display: block; font-size: 0.8125em; color: #555555; } +blockquote cite:before { content: "\2014 \0020"; } +blockquote cite a, blockquote cite a:visited { color: #555555; } + +blockquote, blockquote p { line-height: 1.6; color: #6f6f6f; } + +/* Microformats */ +.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } +.vcard li { margin: 0; display: block; } +.vcard .fn { font-weight: bold; font-size: 0.9375em; } + +.vevent .summary { font-weight: bold; } +.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } + +@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } + h1 { font-size: 2.75em; } + h2 { font-size: 2.3125em; } + h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } + h4 { font-size: 1.4375em; } } +/* Print styles. Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) +*/ +.print-only { display: none !important; } + +@media print { * { background: transparent !important; color: #000 !important; /* Black prints faster: h5bp.com/s */ box-shadow: none !important; text-shadow: none !important; } + a, a:visited { text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; /* h5bp.com/t */ } + tr, img { page-break-inside: avoid; } + img { max-width: 100% !important; } + @page { margin: 0.5cm; } + p, h2, h3, #toctitle, .sidebarblock > .content > .title { orphans: 3; widows: 3; } + h2, h3, #toctitle, .sidebarblock > .content > .title { page-break-after: avoid; } + .hide-on-print { display: none !important; } + .print-only { display: block !important; } + .hide-for-print { display: none !important; } + .show-for-print { display: inherit !important; } } +/* Tables */ +table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table thead, table tfoot { background: whitesmoke; font-weight: bold; } +table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; } +table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } + +.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } +.clearfix:after, .float-group:after { clear: both; } + +*:not(pre) > code { font-size: inherit; padding: 0; white-space: nowrap; background-color: inherit; border: 0 solid #dddddd; -webkit-border-radius: 0; border-radius: 0; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: black; font-family: monospace, serif; font-weight: normal; } + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + +.menuseq, .menu { color: #090909; } + +#header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; } +#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } +#header:after, #content:after, #footnotes:after, #footer:after { clear: both; } + +#header { margin-bottom: 2.5em; } +#header > h1 { color: black; font-weight: bold; border-bottom: 1px solid #dddddd; margin-bottom: -28px; padding-bottom: 32px; } +#header span { color: #6f6f6f; } +#header #revnumber { text-transform: capitalize; } +#header br { display: none; } +#header br + span { padding-left: 3px; } +#header br + span:before { content: "\2013 \0020"; } +#header br + span.author { padding-left: 0; } +#header br + span.author:before { content: ", "; } + +#toc { border-bottom: 1px solid #dddddd; padding-bottom: 1.25em; } +#toc > ul { margin-left: 0.25em; } +#toc ul.sectlevel0 > li > a { font-style: italic; } +#toc ul.sectlevel0 ul.sectlevel1 { margin-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } +#toc ul { list-style-type: none; } + +#toctitle { color: #6f6f6f; } + +@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; } + #toc.toc2 { position: fixed; width: 20em; left: 0; top: 0; border-right: 1px solid #dddddd; border-bottom: 0; z-index: 1000; padding: 1em; height: 100%; overflow: auto; } + #toc.toc2 #toctitle { margin-top: 0; } + #toc.toc2 > ul { font-size: .95em; } + #toc.toc2 ul ul { margin-left: 0; padding-left: 1.25em; } + #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } + body.toc2.toc-right { padding-left: 0; padding-right: 20em; } + body.toc2.toc-right #toc.toc2 { border-right: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } } +#content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; border-width: 0; -webkit-border-radius: 0; border-radius: 0; } +#content #toc > :first-child { margin-top: 0; } +#content #toc > :last-child { margin-bottom: 0; } +#content #toc a { text-decoration: none; } + +#content #toctitle { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 1em; padding-left: 0.125em; } + +#footer { max-width: 100%; background-color: #222222; padding: 1.25em; } + +#footer-text { color: #dddddd; line-height: 1.44; } + +.sect1 { padding-bottom: 1.25em; } + +.sect1 + .sect1 { border-top: 1px solid #dddddd; } + +#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; width: 1em; margin-left: -1em; display: block; text-decoration: none; visibility: hidden; text-align: center; font-weight: normal; } +#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: '\00A7'; font-size: .85em; vertical-align: text-top; display: block; margin-top: 0.05em; } +#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; } +#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: #222222; text-decoration: none; } +#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: #151515; } + +.imageblock, .literalblock, .listingblock, .verseblock, .videoblock { margin-bottom: 1.25em; } + +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +.admonitionblock > table { border: 0; background: none; width: 100%; } +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } +.exampleblock > .content > :first-child { margin-top: 0; } +.exampleblock > .content > :last-child { margin-bottom: 0; } +.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6, .exampleblock > .content p { color: #333333; } +.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6 { line-height: 1; margin-bottom: 0.625em; } +.exampleblock > .content h1.subheader, .exampleblock > .content h2.subheader, .exampleblock > .content h3.subheader, .exampleblock > .content .subheader#toctitle, .sidebarblock.exampleblock > .content > .subheader.title, .exampleblock > .content h4.subheader, .exampleblock > .content h5.subheader, .exampleblock > .content h6.subheader { line-height: 1.4; } + +.exampleblock.result > .content { -webkit-box-shadow: 0 1px 8px #d9d9d9; box-shadow: 0 1px 8px #d9d9d9; } + +.sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } +.sidebarblock > :first-child { margin-top: 0; } +.sidebarblock > :last-child { margin-bottom: 0; } +.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6, .sidebarblock p { color: #333333; } +.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6 { line-height: 1; margin-bottom: 0.625em; } +.sidebarblock h1.subheader, .sidebarblock h2.subheader, .sidebarblock h3.subheader, .sidebarblock .subheader#toctitle, .sidebarblock > .content > .subheader.title, .sidebarblock h4.subheader, .sidebarblock h5.subheader, .sidebarblock h6.subheader { line-height: 1.4; } +.sidebarblock > .content > .title { color: #6f6f6f; margin-top: 0; line-height: 1.6; } + +.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; } + +.literalblock > .content pre, .listingblock > .content pre { background: #eeeeee; border-width: 1px; border-style: solid; border-color: #cccccc; -webkit-border-radius: 0; border-radius: 0; padding: 0.8em 0.8em 0.65em 0.8em; word-wrap: break-word; } +.literalblock > .content pre.nowrap, .listingblock > .content pre.nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } +.literalblock > .content pre > code, .listingblock > .content pre > code { display: block; } +@media only screen { .literalblock > .content pre, .listingblock > .content pre { font-size: 0.72em; } } +@media only screen and (min-width: 768px) { .literalblock > .content pre, .listingblock > .content pre { font-size: 0.81em; } } +@media only screen and (min-width: 1280px) { .literalblock > .content pre, .listingblock > .content pre { font-size: 0.9em; } } + +.listingblock > .content { position: relative; } + +.listingblock:hover code[class*=" language-"]:before { text-transform: uppercase; font-size: 0.9em; color: #999; position: absolute; top: 0.375em; right: 0.375em; } + +.listingblock:hover code.asciidoc:before { content: "asciidoc"; } +.listingblock:hover code.clojure:before { content: "clojure"; } +.listingblock:hover code.css:before { content: "css"; } +.listingblock:hover code.groovy:before { content: "groovy"; } +.listingblock:hover code.html:before { content: "html"; } +.listingblock:hover code.java:before { content: "java"; } +.listingblock:hover code.javascript:before { content: "javascript"; } +.listingblock:hover code.python:before { content: "python"; } +.listingblock:hover code.ruby:before { content: "ruby"; } +.listingblock:hover code.scss:before { content: "scss"; } +.listingblock:hover code.xml:before { content: "xml"; } +.listingblock:hover code.yaml:before { content: "yaml"; } + +.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } + +.listingblock.terminal pre .command:not([data-prompt]):before { content: '$'; } + +table.pyhltable { border: 0; margin-bottom: 0; } + +table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; } + +table.pyhltable td.code { padding-left: .75em; padding-right: 0; } + +.highlight.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; } + +.highlight.pygments .lineno { display: inline-block; margin-right: .25em; } + +table.pyhltable .linenodiv { background-color: transparent !important; padding-right: 0 !important; } + +.quoteblock { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } +.quoteblock blockquote { margin: 0 0 1.25em 0; padding: 0 0 0.5625em 0; border: 0; } +.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } +.quoteblock .attribution { margin-top: -.25em; padding-bottom: 0.5625em; font-size: 0.8125em; color: #555555; } +.quoteblock .attribution br { display: none; } +.quoteblock .attribution cite { display: block; margin-bottom: 0.625em; } + +table thead th, table tfoot th { font-weight: bold; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 0; border-radius: 0; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + +td > div.verse { white-space: pre; } + +ol { margin-left: 1.75em; } + +ul li ol { margin-left: 1.5em; } + +dl dd { margin-left: 1.125em; } + +dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } + +ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; } + +ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } + +ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } + +ul.checklist li > p:first-child > i[class^="icon-check"]:first-child, ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; } + +ul.checklist li > p:first-child > input[type="checkbox"]:first-child { position: relative; top: 1px; } + +ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } +ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } +ul.inline > li > * { display: block; } + +.unstyled dl dt { font-weight: normal; font-style: normal; } + +ol.arabic { list-style-type: decimal; } + +ol.decimal { list-style-type: decimal-leading-zero; } + +ol.loweralpha { list-style-type: lower-alpha; } + +ol.upperalpha { list-style-type: upper-alpha; } + +ol.lowerroman { list-style-type: lower-roman; } + +ol.upperroman { list-style-type: upper-roman; } + +ol.lowergreek { list-style-type: lower-greek; } + +.hdlist > table, .colist > table { border: 0; background: none; } +.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } + +td.hdlist1 { padding-right: .8em; font-weight: bold; } + +td.hdlist1, td.hdlist2 { vertical-align: top; } + +.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } + +.colist > table tr > td:first-of-type { padding: 0 .8em; line-height: 1; } +.colist > table tr > td:last-of-type { padding: 0.25em 0; } + +.qanda > ol > li > p > em:only-child { color: #2795b6; } + +.thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } + +.imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } +.imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } +.imageblock > .title { margin-bottom: 0; } +.imageblock.thumb, .imageblock.th { border-width: 6px; } +.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } + +.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } +.image.left { margin-right: 0.625em; } +.image.right { margin-left: 0.625em; } + +a.image { text-decoration: none; } + +span.footnote, span.footnoteref { vertical-align: super; font-size: 0.875em; } +span.footnote a, span.footnoteref a { text-decoration: none; } + +#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } +#footnotes hr { width: 20%; min-width: 6.25em; margin: -.25em 0 .75em 0; border-width: 1px 0 0 0; } +#footnotes .footnote { padding: 0 0.375em; line-height: 1.3; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.2em; margin-bottom: .2em; } +#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } +#footnotes .footnote:last-of-type { margin-bottom: 0; } + +#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } + +.gist .file-data > table { border: none; background: #fff; width: 100%; margin-bottom: 0; } +.gist .file-data > table td.line-data { width: 99%; } + +div.unbreakable { page-break-inside: avoid; } + +.big { font-size: larger; } + +.small { font-size: smaller; } + +.underline { text-decoration: underline; } + +.overline { text-decoration: overline; } + +.line-through { text-decoration: line-through; } + +.aqua { color: #00bfbf; } + +.aqua-background { background-color: #00fafa; } + +.black { color: black; } + +.black-background { background-color: black; } + +.blue { color: #0000bf; } + +.blue-background { background-color: #0000fa; } + +.fuchsia { color: #bf00bf; } + +.fuchsia-background { background-color: #fa00fa; } + +.gray { color: #606060; } + +.gray-background { background-color: #7d7d7d; } + +.green { color: #006000; } + +.green-background { background-color: #007d00; } + +.lime { color: #00bf00; } + +.lime-background { background-color: #00fa00; } + +.maroon { color: #600000; } + +.maroon-background { background-color: #7d0000; } + +.navy { color: #000060; } + +.navy-background { background-color: #00007d; } + +.olive { color: #606000; } + +.olive-background { background-color: #7d7d00; } + +.purple { color: #600060; } + +.purple-background { background-color: #7d007d; } + +.red { color: #bf0000; } + +.red-background { background-color: #fa0000; } + +.silver { color: #909090; } + +.silver-background { background-color: #bcbcbc; } + +.teal { color: #006060; } + +.teal-background { background-color: #007d7d; } + +.white { color: #bfbfbf; } + +.white-background { background-color: #fafafa; } + +.yellow { color: #bfbf00; } + +.yellow-background { background-color: #fafa00; } + +span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; } + +.admonitionblock td.icon [class^="icon-"]:before { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #2ba6cb; color: #207c98; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + +.conum { display: inline-block; color: white !important; background-color: #222222; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; width: 20px; height: 20px; font-size: 12px; font-weight: bold; line-height: 20px; font-family: Arial, sans-serif; font-style: normal; position: relative; top: -2px; letter-spacing: -1px; } +.conum * { color: white !important; } +.conum + b { display: none; } +.conum:after { content: attr(data-value); } +.conum:not([data-value]):empty { display: none; }