Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Created gh-pages branch via GitHub

  • Loading branch information...
commit 4be130779f89ab0b33574a9e023e31e17a054404 0 parents
@joshbuddy joshbuddy authored
BIN  images/bg_hr.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  images/blacktocat.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  images/icon_download.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  images/sprite_download.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
205 index.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta charset='utf-8' />
+ <meta http-equiv="X-UA-Compatible" content="chrome=1" />
+ <meta name="description" content="Jsonpath : Ruby implementation of http://goessner.net/articles/JsonPath/" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
+
+ <title>Jsonpath</title>
+ </head>
+
+ <body>
+
+ <!-- HEADER -->
+ <div id="header_wrap" class="outer">
+ <header class="inner">
+ <a id="forkme_banner" href="https://github.com/joshbuddy/jsonpath">Fork Me on GitHub</a>
+
+ <h1 id="project_title">Jsonpath</h1>
+ <h2 id="project_tagline">Ruby implementation of http://goessner.net/articles/JsonPath/</h2>
+
+ <section id="downloads">
+ <a class="zip_download_link" href="https://github.com/joshbuddy/jsonpath/zipball/master">Download this project as a .zip file</a>
+ <a class="tar_download_link" href="https://github.com/joshbuddy/jsonpath/tarball/master">Download this project as a tar.gz file</a>
+ </section>
+ </header>
+ </div>
+
+ <!-- MAIN CONTENT -->
+ <div id="main_content_wrap" class="outer">
+ <section id="main_content" class="inner">
+ <h1>JsonPath</h1>
+
+<p>This is an implementation of <a href="http://goessner.net/articles/JsonPath/">http://goessner.net/articles/JsonPath/</a>.</p>
+
+<h2>What is JsonPath?</h2>
+
+<p>JsonPath is a way of addressing elements within a JSON object. Similar to xpath of yore, JsonPath lets you
+traverse a json object and manipulate or access it.</p>
+
+<h2>Usage</h2>
+
+<h3>Command-line</h3>
+
+<p>There is stand-alone usage through the binary <code>jsonpath</code></p>
+
+<pre><code>jsonpath [expression] (file|string)
+
+If you omit the second argument, it will read stdin, assuming one valid JSON object
+per line. Expression must be a valid jsonpath expression.
+</code></pre>
+
+<h3>Library</h3>
+
+<p>To use JsonPath as a library simply include and get goin'!</p>
+
+<div class="highlight">
+<pre><span class="nb">require</span> <span class="s1">'jsonpath'</span>
+
+<span class="n">json</span> <span class="o">=</span> <span class="o">&lt;&lt;-</span><span class="no">HERE_DOC</span>
+<span class="sh">{"store":</span>
+<span class="sh"> {"bicycle":</span>
+<span class="sh"> {"price":19.95, "color":"red"},</span>
+<span class="sh"> "book":[</span>
+<span class="sh"> {"price":8.95, "category":"reference", "title":"Sayings of the Century", "author":"Nigel Rees"},</span>
+<span class="sh"> {"price":12.99, "category":"fiction", "title":"Sword of Honour", "author":"Evelyn Waugh"},</span>
+<span class="sh"> {"price":8.99, "category":"fiction", "isbn":"0-553-21311-3", "title":"Moby Dick", "author":"Herman Melville","color":"blue"},</span>
+<span class="sh"> {"price":22.99, "category":"fiction", "isbn":"0-395-19395-8", "title":"The Lord of the Rings", "author":"Tolkien"}</span>
+<span class="sh"> ]</span>
+<span class="sh"> }</span>
+<span class="sh">}</span>
+<span class="no">HERE_DOC</span>
+</pre>
+</div>
+
+
+<p>Now that we have a JSON object, let's get all the prices present in the object. We create an object for the path
+in the following way.</p>
+
+<div class="highlight">
+<pre><span class="n">path</span> <span class="o">=</span> <span class="no">JsonPath</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'$..price'</span><span class="p">)</span>
+</pre>
+</div>
+
+
+<p>Now that we have a path, let's apply it to the object above.</p>
+
+<div class="highlight">
+<pre><span class="n">path</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
+<span class="c1"># =&gt; [19.95, 8.95, 12.99, 8.99, 22.99]</span>
+</pre>
+</div>
+
+
+<p>Or on some other object ...</p>
+
+<div class="highlight">
+<pre><span class="n">path</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="s1">'{"books":[{"title":"A Tale of Two Somethings","price":18.88}]}'</span><span class="p">)</span>
+<span class="c1"># =&gt; [18.88]</span>
+</pre>
+</div>
+
+
+<p>You can also just combine this into one mega-call with the convenient <code>JsonPath.on</code> method.</p>
+
+<div class="highlight">
+<pre><span class="no">JsonPath</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="s1">'$..author'</span><span class="p">)</span>
+<span class="c1"># =&gt; ["Nigel Rees", "Evelyn Waugh", "Herman Melville", "Tolkien"]</span>
+</pre>
+</div>
+
+
+<p>Of course the full JsonPath syntax is supported, such as array slices</p>
+
+<div class="highlight">
+<pre><span class="no">JsonPath</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'$..book[::2]'</span><span class="p">)</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
+<span class="c1"># =&gt; [</span>
+<span class="c1"># {"price"=&gt;8.95, "category"=&gt;"reference", "author"=&gt;"Nigel Rees", "title"=&gt;"Sayings of the Century"},</span>
+<span class="c1"># {"price"=&gt;8.99, "category"=&gt;"fiction", "author"=&gt;"Herman Melville", "title"=&gt;"Moby Dick", "isbn"=&gt;"0-553-21311-3"}</span>
+<span class="c1"># ]</span>
+</pre>
+</div>
+
+
+<p>...and evals.</p>
+
+<div class="highlight">
+<pre><span class="no">JsonPath</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'$..price[?(@ &lt; 20)]'</span><span class="p">)</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
+<span class="c1"># =&gt; [8.95, 8.99]</span>
+</pre>
+</div>
+
+
+<p>There is a convenience method, <code>#first</code> that gives you the first element for a JSON object and path.</p>
+
+<div class="highlight">
+<pre><span class="no">JsonPath</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'$..color'</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">(</span><span class="n">object</span><span class="p">)</span>
+<span class="c1"># =&gt; "red"</span>
+</pre>
+</div>
+
+
+<p>As well, we can directly create an <code>Enumerable</code> at any time using <code>#[]</code>. </p>
+
+<div class="highlight">
+<pre><span class="n">enum</span> <span class="o">=</span> <span class="no">JsonPath</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'$..color'</span><span class="p">)</span><span class="o">[</span><span class="n">object</span><span class="o">]</span>
+<span class="c1"># =&gt; #&lt;JsonPath::Enumerable:...&gt;</span>
+<span class="n">enum</span><span class="o">.</span><span class="n">first</span>
+<span class="c1"># =&gt; "red"</span>
+<span class="n">enum</span><span class="o">.</span><span class="n">any?</span><span class="p">{</span> <span class="o">|</span><span class="n">c</span><span class="o">|</span> <span class="n">c</span> <span class="o">==</span> <span class="s1">'red'</span> <span class="p">}</span>
+<span class="c1"># =&gt; true</span>
+</pre>
+</div>
+
+
+<p>You can optionally prevent eval from being called on sub-expressions by passing in :allow_eval =&gt; false to the constructor.</p>
+
+<h3>Manipulation</h3>
+
+<p>If you'd like to do substitution in a json object, you can use <code>#gsub</code> or <code>#gsub!</code> to modify the object in place.</p>
+
+<div class="highlight">
+<pre><span class="no">JsonPath</span><span class="o">.</span><span class="n">for</span><span class="p">(</span><span class="s1">'{"candy":"lollipop"}'</span><span class="p">)</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="s1">'$..candy'</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">v</span><span class="o">|</span> <span class="s2">"big turks"</span> <span class="p">}</span><span class="o">.</span><span class="n">to_hash</span>
+</pre>
+</div>
+
+
+<p>The result will be</p>
+
+<div class="highlight">
+<pre><span class="p">{</span><span class="s1">'candy'</span> <span class="o">=&gt;</span> <span class="s1">'big turks'</span><span class="p">}</span>
+</pre>
+</div>
+
+
+<p>If you'd like to remove all nil keys, you can use <code>#compact</code> and <code>#compact!</code>. To remove all keys under a certain path, use <code>#delete</code> or <code>#delete!</code>. You can even chain these methods together as follows:</p>
+
+<div class="highlight">
+<pre><span class="n">json</span> <span class="o">=</span> <span class="s1">'{"candy":"lollipop","noncandy":null,"other":"things"}'</span>
+<span class="n">o</span> <span class="o">=</span> <span class="no">JsonPath</span><span class="o">.</span><span class="n">for</span><span class="p">(</span><span class="n">json</span><span class="p">)</span><span class="o">.</span>
+ <span class="nb">gsub</span><span class="p">(</span><span class="s1">'$..candy'</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">v</span><span class="o">|</span> <span class="s2">"big turks"</span> <span class="p">}</span><span class="o">.</span>
+ <span class="n">compact</span><span class="o">.</span>
+ <span class="n">delete</span><span class="p">(</span><span class="s1">'$..other'</span><span class="p">)</span><span class="o">.</span>
+ <span class="n">to_hash</span>
+<span class="c1"># =&gt; {"candy" =&gt; "big turks"}</span>
+</pre>
+</div>
+
+ </section>
+ </div>
+
+ <!-- FOOTER -->
+ <div id="footer_wrap" class="outer">
+ <footer class="inner">
+ <p class="copyright">Jsonpath maintained by <a href="https://github.com/joshbuddy">joshbuddy</a></p>
+ <p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
+ </footer>
+ </div>
+
+
+
+ </body>
+</html>
1  javascripts/main.js
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
1  params.json
@@ -0,0 +1 @@
+{"name":"Jsonpath","body":"# JsonPath\r\n\r\nThis is an implementation of http://goessner.net/articles/JsonPath/.\r\n\r\n## What is JsonPath?\r\n\r\nJsonPath is a way of addressing elements within a JSON object. Similar to xpath of yore, JsonPath lets you\r\ntraverse a json object and manipulate or access it.\r\n\r\n## Usage\r\n\r\n### Command-line\r\n\r\nThere is stand-alone usage through the binary `jsonpath`\r\n\r\n jsonpath [expression] (file|string)\r\n\r\n If you omit the second argument, it will read stdin, assuming one valid JSON object\r\n per line. Expression must be a valid jsonpath expression.\r\n\r\n### Library\r\n\r\nTo use JsonPath as a library simply include and get goin'!\r\n\r\n~~~~~ {ruby}\r\nrequire 'jsonpath'\r\n\r\njson = <<-HERE_DOC\r\n{\"store\":\r\n {\"bicycle\":\r\n {\"price\":19.95, \"color\":\"red\"},\r\n \"book\":[\r\n {\"price\":8.95, \"category\":\"reference\", \"title\":\"Sayings of the Century\", \"author\":\"Nigel Rees\"},\r\n {\"price\":12.99, \"category\":\"fiction\", \"title\":\"Sword of Honour\", \"author\":\"Evelyn Waugh\"},\r\n {\"price\":8.99, \"category\":\"fiction\", \"isbn\":\"0-553-21311-3\", \"title\":\"Moby Dick\", \"author\":\"Herman Melville\",\"color\":\"blue\"},\r\n {\"price\":22.99, \"category\":\"fiction\", \"isbn\":\"0-395-19395-8\", \"title\":\"The Lord of the Rings\", \"author\":\"Tolkien\"}\r\n ]\r\n }\r\n}\r\nHERE_DOC\r\n~~~~~\r\n\r\nNow that we have a JSON object, let's get all the prices present in the object. We create an object for the path\r\nin the following way.\r\n\r\n~~~~~ {ruby}\r\npath = JsonPath.new('$..price')\r\n~~~~~\r\n\r\nNow that we have a path, let's apply it to the object above.\r\n\r\n~~~~~ {ruby}\r\npath.on(json)\r\n# => [19.95, 8.95, 12.99, 8.99, 22.99]\r\n~~~~~\r\n\r\nOr on some other object ...\r\n\r\n~~~~~ {ruby}\r\npath.on('{\"books\":[{\"title\":\"A Tale of Two Somethings\",\"price\":18.88}]}')\r\n# => [18.88]\r\n~~~~~\r\n\r\nYou can also just combine this into one mega-call with the convenient `JsonPath.on` method.\r\n\r\n~~~~~ {ruby}\r\nJsonPath.on(json, '$..author')\r\n# => [\"Nigel Rees\", \"Evelyn Waugh\", \"Herman Melville\", \"Tolkien\"]\r\n~~~~~\r\n\r\nOf course the full JsonPath syntax is supported, such as array slices\r\n\r\n~~~~~ {ruby}\r\nJsonPath.new('$..book[::2]').on(json)\r\n# => [\r\n# {\"price\"=>8.95, \"category\"=>\"reference\", \"author\"=>\"Nigel Rees\", \"title\"=>\"Sayings of the Century\"},\r\n# {\"price\"=>8.99, \"category\"=>\"fiction\", \"author\"=>\"Herman Melville\", \"title\"=>\"Moby Dick\", \"isbn\"=>\"0-553-21311-3\"}\r\n# ]\r\n~~~~~\r\n\r\n...and evals.\r\n\r\n~~~~~ {ruby}\r\nJsonPath.new('$..price[?(@ < 20)]').on(json)\r\n# => [8.95, 8.99]\r\n~~~~~\r\n\r\nThere is a convenience method, `#first` that gives you the first element for a JSON object and path.\r\n\r\n~~~~~ {ruby}\r\nJsonPath.new('$..color').first(object)\r\n# => \"red\"\r\n~~~~~\r\n\r\nAs well, we can directly create an `Enumerable` at any time using `#[]`. \r\n\r\n~~~~~ {ruby}\r\nenum = JsonPath.new('$..color')[object]\r\n# => #<JsonPath::Enumerable:...>\r\nenum.first\r\n# => \"red\"\r\nenum.any?{ |c| c == 'red' }\r\n# => true\r\n~~~~~\r\n\r\nYou can optionally prevent eval from being called on sub-expressions by passing in :allow_eval => false to the constructor.\r\n\r\n### Manipulation\r\n\r\nIf you'd like to do substitution in a json object, you can use `#gsub` or `#gsub!` to modify the object in place.\r\n\r\n~~~~~ {ruby}\r\nJsonPath.for('{\"candy\":\"lollipop\"}').gsub('$..candy') {|v| \"big turks\" }.to_hash\r\n~~~~~\r\n\r\nThe result will be\r\n\r\n~~~~~ {ruby}\r\n{'candy' => 'big turks'}\r\n~~~~~\r\n\r\nIf you'd like to remove all nil keys, you can use `#compact` and `#compact!`. To remove all keys under a certain path, use `#delete` or `#delete!`. You can even chain these methods together as follows:\r\n\r\n~~~~~ {ruby}\r\njson = '{\"candy\":\"lollipop\",\"noncandy\":null,\"other\":\"things\"}'\r\no = JsonPath.for(json).\r\n gsub('$..candy') {|v| \"big turks\" }.\r\n compact.\r\n delete('$..other').\r\n to_hash\r\n# => {\"candy\" => \"big turks\"}\r\n~~~~~","tagline":"Ruby implementation of http://goessner.net/articles/JsonPath/","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
70 stylesheets/pygment_trac.css
@@ -0,0 +1,70 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
429 stylesheets/stylesheet.css
@@ -0,0 +1,429 @@
+/*******************************************************************************
+Slate Theme for Github Pages
+by Jason Costello, @jsncostello
+*******************************************************************************/
+
+@import url(pygment_trac.css);
+
+/*******************************************************************************
+MeyerWeb Reset
+*******************************************************************************/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+
+ol, ul {
+ list-style: none;
+}
+
+blockquote, q {
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+a:focus {
+ outline: none;
+}
+
+/*******************************************************************************
+Theme Styles
+*******************************************************************************/
+
+body {
+ box-sizing: border-box;
+ color:#373737;
+ background: #212121;
+ font-size: 16px;
+ font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ -webkit-font-smoothing: antialiased;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 10px 0;
+ font-weight: 700;
+ color:#222222;
+ font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
+ letter-spacing: -1px;
+}
+
+h1 {
+ font-size: 36px;
+ font-weight: 700;
+}
+
+h2 {
+ padding-bottom: 10px;
+ font-size: 32px;
+ background: url('../images/bg_hr.png') repeat-x bottom;
+}
+
+h3 {
+ font-size: 24px;
+}
+
+h4 {
+ font-size: 21px;
+}
+
+h5 {
+ font-size: 18px;
+}
+
+h6 {
+ font-size: 16px;
+}
+
+p {
+ margin: 10px 0 15px 0;
+}
+
+footer p {
+ color: #f2f2f2;
+}
+
+a {
+ text-decoration: none;
+ color: #007edf;
+ text-shadow: none;
+
+ transition: color 0.5s ease;
+ transition: text-shadow 0.5s ease;
+ -moz-transition: color 0.5s ease;
+ -moz-transition: text-shadow 0.5s ease;
+ -o-transition: color 0.5s ease;
+ -o-transition: text-shadow 0.5s ease;
+ -ms-transition: color 0.5s ease;
+ -ms-transition: text-shadow 0.5s ease;
+}
+
+#main_content a:hover {
+ color: #0069ba;
+ text-shadow: #0090ff 0px 0px 2px;
+}
+
+footer a:hover {
+ color: #43adff;
+ text-shadow: #0090ff 0px 0px 2px;
+}
+
+em {
+ font-style: italic;
+}
+
+strong {
+ font-weight: bold;
+}
+
+img {
+ position: relative;
+ margin: 0 auto;
+ max-width: 739px;
+ padding: 5px;
+ margin: 10px 0 10px 0;
+ border: 1px solid #ebebeb;
+
+ box-shadow: 0 0 5px #ebebeb;
+ -webkit-box-shadow: 0 0 5px #ebebeb;
+ -moz-box-shadow: 0 0 5px #ebebeb;
+ -o-box-shadow: 0 0 5px #ebebeb;
+ -ms-box-shadow: 0 0 5px #ebebeb;
+}
+
+pre, code {
+ width: 100%;
+ color: #222;
+ background-color: #fff;
+
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ font-size: 14px;
+
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+
+
+
+}
+
+pre {
+ width: 100%;
+ padding: 10px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+ overflow: auto;
+}
+
+code {
+ padding: 3px;
+ margin: 0 3px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+}
+
+pre code {
+ display: block;
+ box-shadow: none;
+}
+
+blockquote {
+ color: #666;
+ margin-bottom: 20px;
+ padding: 0 0 0 20px;
+ border-left: 3px solid #bbb;
+}
+
+ul, ol, dl {
+ margin-bottom: 15px
+}
+
+ul li {
+ list-style: inside;
+ padding-left: 20px;
+}
+
+ol li {
+ list-style: decimal inside;
+ padding-left: 20px;
+}
+
+dl dt {
+ font-weight: bold;
+}
+
+dl dd {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+dl p {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+hr {
+ height: 1px;
+ margin-bottom: 5px;
+ border: none;
+ background: url('../images/bg_hr.png') repeat-x center;
+}
+
+table {
+ border: 1px solid #373737;
+ margin-bottom: 20px;
+ text-align: left;
+ }
+
+th {
+ font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ padding: 10px;
+ background: #373737;
+ color: #fff;
+ }
+
+td {
+ padding: 10px;
+ border: 1px solid #373737;
+ }
+
+form {
+ background: #f2f2f2;
+ padding: 20px;
+}
+
+img {
+ width: 100%;
+ max-width: 100%;
+}
+
+/*******************************************************************************
+Full-Width Styles
+*******************************************************************************/
+
+.outer {
+ width: 100%;
+}
+
+.inner {
+ position: relative;
+ max-width: 640px;
+ padding: 20px 10px;
+ margin: 0 auto;
+}
+
+#forkme_banner {
+ display: block;
+ position: absolute;
+ top:0;
+ right: 10px;
+ z-index: 10;
+ padding: 10px 50px 10px 10px;
+ color: #fff;
+ background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
+ font-weight: 700;
+ box-shadow: 0 0 10px rgba(0,0,0,.5);
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+
+#header_wrap {
+ background: #212121;
+ background: -moz-linear-gradient(top, #373737, #212121);
+ background: -webkit-linear-gradient(top, #373737, #212121);
+ background: -ms-linear-gradient(top, #373737, #212121);
+ background: -o-linear-gradient(top, #373737, #212121);
+ background: linear-gradient(top, #373737, #212121);
+}
+
+#header_wrap .inner {
+ padding: 50px 10px 30px 10px;
+}
+
+#project_title {
+ margin: 0;
+ color: #fff;
+ font-size: 42px;
+ font-weight: 700;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#project_tagline {
+ color: #fff;
+ font-size: 24px;
+ font-weight: 300;
+ background: none;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#downloads {
+ position: absolute;
+ width: 210px;
+ z-index: 10;
+ bottom: -40px;
+ right: 0;
+ height: 70px;
+ background: url('../images/icon_download.png') no-repeat 0% 90%;
+}
+
+.zip_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom left;
+}
+
+.tar_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom right;
+ margin-left: 10px;
+}
+
+.zip_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top left;
+}
+
+.tar_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top right;
+}
+
+#main_content_wrap {
+ background: #f2f2f2;
+ border-top: 1px solid #111;
+ border-bottom: 1px solid #111;
+}
+
+#main_content {
+ padding-top: 40px;
+}
+
+#footer_wrap {
+ background: #212121;
+}
+
+
+
+/*******************************************************************************
+Small Device Styles
+*******************************************************************************/
+
+@media screen and (max-width: 480px) {
+ body {
+ font-size:14px;
+ }
+
+ #downloads {
+ display: none;
+ }
+
+ .inner {
+ min-width: 320px;
+ max-width: 480px;
+ }
+
+ #project_title {
+ font-size: 32px;
+ }
+
+ h1 {
+ font-size: 28px;
+ }
+
+ h2 {
+ font-size: 24px;
+ }
+
+ h3 {
+ font-size: 21px;
+ }
+
+ h4 {
+ font-size: 18px;
+ }
+
+ h5 {
+ font-size: 14px;
+ }
+
+ h6 {
+ font-size: 12px;
+ }
+
+ code, pre {
+ min-width: 320px;
+ max-width: 480px;
+ font-size: 11px;
+ }
+
+}
Please sign in to comment.
Something went wrong with that request. Please try again.