procreate-swatches 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.codeclimate.yml +7 -0
 - data/.gitignore +16 -0
 - data/.rspec +2 -0
 - data/.rubocop.yml +8 -0
 - data/.ruby-version +1 -0
 - data/.travis.yml +19 -0
 - data/.yardopts +5 -0
 - data/CODE_OF_CONDUCT.md +74 -0
 - data/Gemfile +6 -0
 - data/Gemfile.lock +102 -0
 - data/LICENSE.txt +21 -0
 - data/README.md +230 -0
 - data/Rakefile +8 -0
 - data/bin/console +14 -0
 - data/bin/setup +8 -0
 - data/doc/Procreate/Swatches/ColorsHelper.html +693 -0
 - data/doc/Procreate/Swatches/Errors/InvalidFormat.html +220 -0
 - data/doc/Procreate/Swatches/Errors/InvalidPath.html +220 -0
 - data/doc/Procreate/Swatches/Errors.html +128 -0
 - data/doc/Procreate/Swatches/Exporter.html +754 -0
 - data/doc/Procreate/Swatches/Parser.html +622 -0
 - data/doc/Procreate/Swatches/Wrapper.html +1168 -0
 - data/doc/Procreate/Swatches.html +497 -0
 - data/doc/Procreate.html +128 -0
 - data/doc/_index.html +209 -0
 - data/doc/class_list.html +51 -0
 - data/doc/css/common.css +1 -0
 - data/doc/css/full_list.css +58 -0
 - data/doc/css/style.css +496 -0
 - data/doc/file.CODE_OF_CONDUCT.html +146 -0
 - data/doc/file.LICENSE.html +70 -0
 - data/doc/file.README.html +296 -0
 - data/doc/file_list.html +66 -0
 - data/doc/frames.html +17 -0
 - data/doc/index.html +296 -0
 - data/doc/js/app.js +292 -0
 - data/doc/js/full_list.js +216 -0
 - data/doc/js/jquery.js +4 -0
 - data/doc/method_list.html +275 -0
 - data/doc/top-level-namespace.html +110 -0
 - data/lib/procreate/swatches/colors_helper.rb +83 -0
 - data/lib/procreate/swatches/errors/invalid_format.rb +19 -0
 - data/lib/procreate/swatches/errors/invalid_path.rb +16 -0
 - data/lib/procreate/swatches/exporter.rb +131 -0
 - data/lib/procreate/swatches/parser.rb +82 -0
 - data/lib/procreate/swatches/version.rb +8 -0
 - data/lib/procreate/swatches/wrapper.rb +155 -0
 - data/lib/procreate/swatches.rb +60 -0
 - data/procreate-swatches.gemspec +41 -0
 - metadata +275 -0
 
    
        data/doc/index.html
    ADDED
    
    | 
         @@ -0,0 +1,296 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <meta charset="UTF-8">
         
     | 
| 
      
 5 
     | 
    
         
            +
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
         
     | 
| 
      
 6 
     | 
    
         
            +
            <title>
         
     | 
| 
      
 7 
     | 
    
         
            +
              File: README
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
                — Documentation by YARD 0.9.16
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
            </title>
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            <script type="text/javascript" charset="utf-8">
         
     | 
| 
      
 18 
     | 
    
         
            +
              pathId = "README";
         
     | 
| 
      
 19 
     | 
    
         
            +
              relpath = '';
         
     | 
| 
      
 20 
     | 
    
         
            +
            </script>
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 29 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 30 
     | 
    
         
            +
                <div class="nav_wrap">
         
     | 
| 
      
 31 
     | 
    
         
            +
                  <iframe id="nav" src="class_list.html?1"></iframe>
         
     | 
| 
      
 32 
     | 
    
         
            +
                  <div id="resizer"></div>
         
     | 
| 
      
 33 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                <div id="main" tabindex="-1">
         
     | 
| 
      
 36 
     | 
    
         
            +
                  <div id="header">
         
     | 
| 
      
 37 
     | 
    
         
            +
                    <div id="menu">
         
     | 
| 
      
 38 
     | 
    
         
            +
              
         
     | 
| 
      
 39 
     | 
    
         
            +
                <a href="_index.html">Index</a> » 
         
     | 
| 
      
 40 
     | 
    
         
            +
                <span class="title">File: README</span>
         
     | 
| 
      
 41 
     | 
    
         
            +
              
         
     | 
| 
      
 42 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                    <div id="search">
         
     | 
| 
      
 45 
     | 
    
         
            +
              
         
     | 
| 
      
 46 
     | 
    
         
            +
                <a class="full_list_link" id="class_list_link"
         
     | 
| 
      
 47 
     | 
    
         
            +
                    href="class_list.html">
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    <svg width="24" height="24">
         
     | 
| 
      
 50 
     | 
    
         
            +
                      <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
         
     | 
| 
      
 51 
     | 
    
         
            +
                      <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
         
     | 
| 
      
 52 
     | 
    
         
            +
                      <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
         
     | 
| 
      
 53 
     | 
    
         
            +
                    </svg>
         
     | 
| 
      
 54 
     | 
    
         
            +
                </a>
         
     | 
| 
      
 55 
     | 
    
         
            +
              
         
     | 
| 
      
 56 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 57 
     | 
    
         
            +
                    <div class="clear"></div>
         
     | 
| 
      
 58 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  <div id="content"><div id='filecontents'><h1 id="procreateswatches">Procreate::Swatches</h1>
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            <p>A gem to interact with <a href="https://procreate.art">Procreate</a> <code>.swatches</code> files.</p>
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            <p>This gem offers the possibility to:
         
     | 
| 
      
 65 
     | 
    
         
            +
            * parse an existing <code>.swatches</code> color palette to an object and extract the colors in various color formats
         
     | 
| 
      
 66 
     | 
    
         
            +
            * generate a Procreate color palette from an array of colors and export it to a <code>.swatches</code> file</p>
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            <p>Behind the scenes, <code>Procreate::Swatches</code> uses the <a href="https://github.com/jfairbank/chroma">Chroma gem</a> to wrap colors and provide a better experience in interacting with colors. For more in depth use cases, consult the documentation for <code>Chroma::Color</code>, available <a href="https://www.rubydoc.info/gems/chroma/0.2.0/Chroma/Color">here</a>.</p>
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            <h2 id="installation">Installation</h2>
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            <p>Add this line to your application’s Gemfile:</p>
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            <p><code>ruby
         
     | 
| 
      
 75 
     | 
    
         
            +
            gem 'procreate-swatches'
         
     | 
| 
      
 76 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            <p>And then execute:</p>
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            <pre class="code ruby"><code class="ruby">$ bundle
         
     | 
| 
      
 81 
     | 
    
         
            +
            </code></pre>
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            <p>Or install it yourself as:</p>
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            <pre class="code ruby"><code class="ruby">$ gem install procreate-swatches
         
     | 
| 
      
 86 
     | 
    
         
            +
            </code></pre>
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            <h2 id="usage">Usage</h2>
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            <p>Before using the gem, you have to require the main file:
         
     | 
| 
      
 91 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 92 
     | 
    
         
            +
            require 'procreate/swatches'
         
     | 
| 
      
 93 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            <h3 id="parsing">Parsing</h3>
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            <p>The gem allows you to parse an existing <code>.swatches</code> file to a <code>Procreate::Swatches::Wrapper</code> instance, which will allow you to further manipulate the colors.</p>
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            <p><em>For full documentation, refer to <a href="https://www.rubydoc.info/gems/procreate-swatches/Procreate/Swatches/Parser">Procreate::Swatches::Parser documentation</a></em></p>
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            <p><strong><em>Example 1</em></strong>
         
     | 
| 
      
 102 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 103 
     | 
    
         
            +
            file_path = '/file/path/to/palette.swatches'
         
     | 
| 
      
 104 
     | 
    
         
            +
            # Initialize a new instance of `Procreate::Swatches::Parser` with the file path to the `.swatches` file
         
     | 
| 
      
 105 
     | 
    
         
            +
            parser = Procreate::Swatches::Parser.new(file_path)
         
     | 
| 
      
 106 
     | 
    
         
            +
            # Use the method `#call` to parse the file; this will return an instance of `Procreate::Swatches::Wrapper`
         
     | 
| 
      
 107 
     | 
    
         
            +
            wrapper = parser.call
         
     | 
| 
      
 108 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            <p><strong><em>Example 2</em></strong></p>
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            <p>For ease of use, a <code>.call</code> method is available:
         
     | 
| 
      
 113 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 114 
     | 
    
         
            +
            file_path = '/file/path/to/palette.swatches'
         
     | 
| 
      
 115 
     | 
    
         
            +
            wrapper = Procreate::Swatches::Parser.call(file_path)
         
     | 
| 
      
 116 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            <p><strong><em>Example 3</em></strong></p>
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            <p>For convenience, a top-level method can be used to parse a <code>.swatches</code> file
         
     | 
| 
      
 121 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 122 
     | 
    
         
            +
            file_path = '/file/path/to/palette.swatches'
         
     | 
| 
      
 123 
     | 
    
         
            +
            wrapper = Procreate::Swatches.parse(file_path)
         
     | 
| 
      
 124 
     | 
    
         
            +
            # which is also aliased as `.from_file`
         
     | 
| 
      
 125 
     | 
    
         
            +
            wrapper = Procreate::Swatches.from_file(file_path)
         
     | 
| 
      
 126 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            <h3 id="interacting-with-a-wrapped-palette">Interacting with a wrapped palette</h3>
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            <p><em>For full documentation, refer to <a href="https://www.rubydoc.info/gems/procreate-swatches/Procreate/Swatches/Wrapper">Procreate::Swatches::Wrapper documentation</a></em></p>
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
            <p>After successfully converting a <code>.swatches</code> file to a <code>Procreate::Swatches::Wrapper</code> instance, you can further interact with the palette in a Ruby way.</p>
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            <p>Using the <code>Procreate::Swatches::Wrapper</code>, you can access the name and the colors array of the <code>.swatches</code> file.</p>
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            <p>```ruby
         
     | 
| 
      
 137 
     | 
    
         
            +
            wrapper.name
         
     | 
| 
      
 138 
     | 
    
         
            +
            # => “Snowy Landscape”</p>
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
            <p>wrapper.colors
         
     | 
| 
      
 141 
     | 
    
         
            +
            # => [hsv(195, 16%, 81%), hsv(288, 6%, 68%), hsv(232, 19%, 67%)]
         
     | 
| 
      
 142 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            <p>By default, each color availabe in the colors array is an instance of Chroma::Color
         
     | 
| 
      
 145 
     | 
    
         
            +
            By providing a format parameter to the <code>#colors</code> method, you can retrieve the colors in one of the availabe formats (supported by Chroma::Color)
         
     | 
| 
      
 146 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 147 
     | 
    
         
            +
            # converting to hex
         
     | 
| 
      
 148 
     | 
    
         
            +
            wrapper.colors(format: :hex)
         
     | 
| 
      
 149 
     | 
    
         
            +
            # => ["#aec6cf", "#aba3ad", "#8a8fab"]
         
     | 
| 
      
 150 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
            <p>All the availabe formats for converting colors:
         
     | 
| 
      
 153 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 154 
     | 
    
         
            +
            wrapper.available_color_formats
         
     | 
| 
      
 155 
     | 
    
         
            +
            # => [:hsv, :hsl, :hex, :hex8, :rgb, :name]</p>
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
            <h1 id="the-list-is-also-available-using">the list is also available using</h1>
         
     | 
| 
      
 158 
     | 
    
         
            +
            <p>Procreate::Swatches::Wrapper::AVAILABLE_COLOR_FORMATS
         
     | 
| 
      
 159 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
            <p>To add a new color to the wrapper’s colors array, use the <code>push</code> or <code><<</code> method
         
     | 
| 
      
 162 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 163 
     | 
    
         
            +
            wrapper.push("#aaa")
         
     | 
| 
      
 164 
     | 
    
         
            +
            # => [hsv(195, 16%, 81%), hsv(288, 6%, 68%), hsv(232, 19%, 67%), #aaa]
         
     | 
| 
      
 165 
     | 
    
         
            +
            wrapper << "#bbb"
         
     | 
| 
      
 166 
     | 
    
         
            +
            # => [hsv(195, 16%, 81%), hsv(288, 6%, 68%), hsv(232, 19%, 67%), #aaa, #bbb]
         
     | 
| 
      
 167 
     | 
    
         
            +
            </code>
         
     | 
| 
      
 168 
     | 
    
         
            +
            This will add the color to the array (if valid) and return the colors array, including the newly-added color. Note that each color is an instance of <code>Chroma::Color</code></p>
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
            <p>For convenience, you can directly export a Procreate::Swatches::Wrapper instance to a <code>.swatches</code> file:
         
     | 
| 
      
 171 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 172 
     | 
    
         
            +
            wrapper.export
         
     | 
| 
      
 173 
     | 
    
         
            +
            # => “path/to/your/palette.swatches”</p>
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
            <h1 id="which-is-also-aliased-as">which is also aliased as</h1>
         
     | 
| 
      
 176 
     | 
    
         
            +
            <p>wrapper.to_file
         
     | 
| 
      
 177 
     | 
    
         
            +
            # => “path/to/your/palette-1.swatches”
         
     | 
| 
      
 178 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            <h3 id="exporting">Exporting</h3>
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
            <p><em>For full documentation, refer to <a href="https://www.rubydoc.info/gems/procreate-swatches/Procreate/Swatches/Exporter">Procreate::Swatches::Exporter documentation</a></em></p>
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
            <p>You can easily export a <code>Procreate::Swatches::Wrapper</code> to a <code>.swatches</code> file.</p>
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
            <p><strong><em>Example 1</em></strong></p>
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
            <p>```ruby
         
     | 
| 
      
 189 
     | 
    
         
            +
            exporter = Procreate::Swatches::Exporter.new(wrapper, options)</p>
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
            <p>swatches_path = export.call
         
     | 
| 
      
 192 
     | 
    
         
            +
            # => “path/to/your/palette.swatches”
         
     | 
| 
      
 193 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
            <p>The <code>.swatches</code> path is also available afterwards, using the <code>swatches_path</code> attribute:
         
     | 
| 
      
 196 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 197 
     | 
    
         
            +
            exporter.swatches_path
         
     | 
| 
      
 198 
     | 
    
         
            +
            # => "path/to/your/palette.swatches"
         
     | 
| 
      
 199 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
            <p><strong><em>Example 2</em></strong></p>
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
            <p>For ease of use, a <code>.call</code> method is available:
         
     | 
| 
      
 204 
     | 
    
         
            +
            <code>ruby
         
     | 
| 
      
 205 
     | 
    
         
            +
            swatches_path = Procreate::Swatches::Exporter.call(wrapper, options)
         
     | 
| 
      
 206 
     | 
    
         
            +
            </code></p>
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
            <p><strong><em>Example 3</em></strong></p>
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
            <p>For convenience, a top-level method can be used to export an array of colors to a <code>.swatches</code> file:
         
     | 
| 
      
 211 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 212 
     | 
    
         
            +
            name = ‘Snowy landscape’
         
     | 
| 
      
 213 
     | 
    
         
            +
            colors = [“#aaa”, “#bbb”, “#ccc”]</p>
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
            <p>swatches_path = Procreate::Swatches.export(name, colors)
         
     | 
| 
      
 216 
     | 
    
         
            +
            # => “path/to/your/snowy_landscape.swatches”</p>
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
            <h1 id="which-is-also-aliased-as-1">which is also aliased as</h1>
         
     | 
| 
      
 219 
     | 
    
         
            +
            <p>swatches_path = Procreate::Swatches.to_file(name, colors)
         
     | 
| 
      
 220 
     | 
    
         
            +
            # => “path/to/your/snowy_landscape-1.swatches”
         
     | 
| 
      
 221 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
            <h4 id="export-options">Export options</h4>
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
            <p>The <code>Procreate::Swatches::Exporter</code> class supports a number of options while exporting to a <code>.swatches</code> file.</p>
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            <p>```ruby
         
     | 
| 
      
 228 
     | 
    
         
            +
            options = { export_directory: ‘/Users/username/Desktop’ }</p>
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
            <p>swatches_path = Procreate::Swatches.to_file(name, colors, options)
         
     | 
| 
      
 231 
     | 
    
         
            +
            # => “/Users/username/Desktop/snowy_landscape.swatches”
         
     | 
| 
      
 232 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
            <p>```ruby
         
     | 
| 
      
 235 
     | 
    
         
            +
            options = {
         
     | 
| 
      
 236 
     | 
    
         
            +
              export_directory = ‘/Users/username/Desktop’,
         
     | 
| 
      
 237 
     | 
    
         
            +
              file_name: ‘gorgeous_palette’
         
     | 
| 
      
 238 
     | 
    
         
            +
            }</p>
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
            <p>swatches_path = Procreate::Swatches.to_file(name, colors, options)
         
     | 
| 
      
 241 
     | 
    
         
            +
            # => “/Users/username/Desktop/gorgeous_palette.swatches”
         
     | 
| 
      
 242 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 243 
     | 
    
         
            +
             
     | 
| 
      
 244 
     | 
    
         
            +
            <p>The default values for these options are:
         
     | 
| 
      
 245 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 246 
     | 
    
         
            +
            # The result of calling <code>Dir.pwd</code>, which returns the current working directory
         
     | 
| 
      
 247 
     | 
    
         
            +
            export_directory = Dir.pwd</p>
         
     | 
| 
      
 248 
     | 
    
         
            +
             
     | 
| 
      
 249 
     | 
    
         
            +
            <h1 id="the-sanitized-string-of-the-procreateswatcheswrapper-name">The sanitized string of the <code>Procreate::Swatches::Wrapper</code> name</h1>
         
     | 
| 
      
 250 
     | 
    
         
            +
            <p>file_name = wrapper.name
         
     | 
| 
      
 251 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
            <p>These options are supported on every method that can export a <code>.swatches</code> file:</p>
         
     | 
| 
      
 254 
     | 
    
         
            +
             
     | 
| 
      
 255 
     | 
    
         
            +
            <p>```ruby
         
     | 
| 
      
 256 
     | 
    
         
            +
            Procreate::Swatches::Exporter.new(wrapper, options).call</p>
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
            <p>Procreate::Swatches::Exporter.call(wrapper, options)</p>
         
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
            <p>Procreate::Swatches.to_file(name, colors, options)</p>
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
      
 262 
     | 
    
         
            +
            <p>Procreate::Swatches.export(name, colors, options)</p>
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
      
 264 
     | 
    
         
            +
            <p>wrapper.export(options)</p>
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
            <p>wrapper.to_file(options)
         
     | 
| 
      
 267 
     | 
    
         
            +
            ```</p>
         
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
            <h2 id="development">Development</h2>
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
            <p>After checking out the repo, run <code>bin/setup</code> to install dependencies. Then, run <code>rake spec</code> to run the tests. You can also run <code>bin/console</code> for an interactive prompt that will allow you to experiment.</p>
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
            <p>To install this gem onto your local machine, run <code>bundle exec rake install</code>. To release a new version, update the version number in <code>version.rb</code>, and then run <code>bundle exec rake release</code>, which will create a git tag for the version, push git commits and tags, and push the <code>.gem</code> file to <a href="https://rubygems.org">rubygems.org</a>.</p>
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
            <h2 id="contributing">Contributing</h2>
         
     | 
| 
      
 276 
     | 
    
         
            +
             
     | 
| 
      
 277 
     | 
    
         
            +
            <p>Bug reports and pull requests are welcome on GitHub at <a href="https://github.com/laurentzziu/procreate-swatches">https://github.com/laurentzziu/procreate-swatches</a>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the <a href="http://contributor-covenant.org">Contributor Covenant</a> code of conduct.</p>
         
     | 
| 
      
 278 
     | 
    
         
            +
             
     | 
| 
      
 279 
     | 
    
         
            +
            <h2 id="license">License</h2>
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
      
 281 
     | 
    
         
            +
            <p>The gem is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
         
     | 
| 
      
 282 
     | 
    
         
            +
             
     | 
| 
      
 283 
     | 
    
         
            +
            <h2 id="code-of-conduct">Code of Conduct</h2>
         
     | 
| 
      
 284 
     | 
    
         
            +
             
     | 
| 
      
 285 
     | 
    
         
            +
            <p>Everyone interacting in the <code>Procreate::Swatches</code> project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the <a href="https://github.com/laurentzziu/procreate-swatches/blob/master/CODE_OF_CONDUCT.md">code of conduct</a>.</p>
         
     | 
| 
      
 286 
     | 
    
         
            +
            </div></div>
         
     | 
| 
      
 287 
     | 
    
         
            +
             
     | 
| 
      
 288 
     | 
    
         
            +
                  <div id="footer">
         
     | 
| 
      
 289 
     | 
    
         
            +
              Generated on Sat Apr 27 09:32:32 2019 by
         
     | 
| 
      
 290 
     | 
    
         
            +
              <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
         
     | 
| 
      
 291 
     | 
    
         
            +
              0.9.16 (ruby-2.4.3).
         
     | 
| 
      
 292 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 295 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 296 
     | 
    
         
            +
            </html>
         
     | 
    
        data/doc/js/app.js
    ADDED
    
    | 
         @@ -0,0 +1,292 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            (function() {
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            var localStorage = {}, sessionStorage = {};
         
     | 
| 
      
 4 
     | 
    
         
            +
            try { localStorage = window.localStorage; } catch (e) { }
         
     | 
| 
      
 5 
     | 
    
         
            +
            try { sessionStorage = window.sessionStorage; } catch (e) { }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            function createSourceLinks() {
         
     | 
| 
      
 8 
     | 
    
         
            +
                $('.method_details_list .source_code').
         
     | 
| 
      
 9 
     | 
    
         
            +
                    before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
         
     | 
| 
      
 10 
     | 
    
         
            +
                $('.toggleSource').toggle(function() {
         
     | 
| 
      
 11 
     | 
    
         
            +
                   $(this).parent().nextAll('.source_code').slideDown(100);
         
     | 
| 
      
 12 
     | 
    
         
            +
                   $(this).text("Hide source");
         
     | 
| 
      
 13 
     | 
    
         
            +
                },
         
     | 
| 
      
 14 
     | 
    
         
            +
                function() {
         
     | 
| 
      
 15 
     | 
    
         
            +
                    $(this).parent().nextAll('.source_code').slideUp(100);
         
     | 
| 
      
 16 
     | 
    
         
            +
                    $(this).text("View source");
         
     | 
| 
      
 17 
     | 
    
         
            +
                });
         
     | 
| 
      
 18 
     | 
    
         
            +
            }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            function createDefineLinks() {
         
     | 
| 
      
 21 
     | 
    
         
            +
                var tHeight = 0;
         
     | 
| 
      
 22 
     | 
    
         
            +
                $('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
         
     | 
| 
      
 23 
     | 
    
         
            +
                $('.toggleDefines').toggle(function() {
         
     | 
| 
      
 24 
     | 
    
         
            +
                    tHeight = $(this).parent().prev().height();
         
     | 
| 
      
 25 
     | 
    
         
            +
                    $(this).prev().css('display', 'inline');
         
     | 
| 
      
 26 
     | 
    
         
            +
                    $(this).parent().prev().height($(this).parent().height());
         
     | 
| 
      
 27 
     | 
    
         
            +
                    $(this).text("(less)");
         
     | 
| 
      
 28 
     | 
    
         
            +
                },
         
     | 
| 
      
 29 
     | 
    
         
            +
                function() {
         
     | 
| 
      
 30 
     | 
    
         
            +
                    $(this).prev().hide();
         
     | 
| 
      
 31 
     | 
    
         
            +
                    $(this).parent().prev().height(tHeight);
         
     | 
| 
      
 32 
     | 
    
         
            +
                    $(this).text("more...");
         
     | 
| 
      
 33 
     | 
    
         
            +
                });
         
     | 
| 
      
 34 
     | 
    
         
            +
            }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            function createFullTreeLinks() {
         
     | 
| 
      
 37 
     | 
    
         
            +
                var tHeight = 0;
         
     | 
| 
      
 38 
     | 
    
         
            +
                $('.inheritanceTree').toggle(function() {
         
     | 
| 
      
 39 
     | 
    
         
            +
                    tHeight = $(this).parent().prev().height();
         
     | 
| 
      
 40 
     | 
    
         
            +
                    $(this).parent().toggleClass('showAll');
         
     | 
| 
      
 41 
     | 
    
         
            +
                    $(this).text("(hide)");
         
     | 
| 
      
 42 
     | 
    
         
            +
                    $(this).parent().prev().height($(this).parent().height());
         
     | 
| 
      
 43 
     | 
    
         
            +
                },
         
     | 
| 
      
 44 
     | 
    
         
            +
                function() {
         
     | 
| 
      
 45 
     | 
    
         
            +
                    $(this).parent().toggleClass('showAll');
         
     | 
| 
      
 46 
     | 
    
         
            +
                    $(this).parent().prev().height(tHeight);
         
     | 
| 
      
 47 
     | 
    
         
            +
                    $(this).text("show all");
         
     | 
| 
      
 48 
     | 
    
         
            +
                });
         
     | 
| 
      
 49 
     | 
    
         
            +
            }
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            function searchFrameButtons() {
         
     | 
| 
      
 52 
     | 
    
         
            +
              $('.full_list_link').click(function() {
         
     | 
| 
      
 53 
     | 
    
         
            +
                toggleSearchFrame(this, $(this).attr('href'));
         
     | 
| 
      
 54 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 55 
     | 
    
         
            +
              });
         
     | 
| 
      
 56 
     | 
    
         
            +
              window.addEventListener('message', function(e) {
         
     | 
| 
      
 57 
     | 
    
         
            +
                if (e.data === 'navEscape') {
         
     | 
| 
      
 58 
     | 
    
         
            +
                  $('#nav').slideUp(100);
         
     | 
| 
      
 59 
     | 
    
         
            +
                  $('#search a').removeClass('active inactive');
         
     | 
| 
      
 60 
     | 
    
         
            +
                  $(window).focus();
         
     | 
| 
      
 61 
     | 
    
         
            +
                }
         
     | 
| 
      
 62 
     | 
    
         
            +
              });
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              $(window).resize(function() {
         
     | 
| 
      
 65 
     | 
    
         
            +
                if ($('#search:visible').length === 0) {
         
     | 
| 
      
 66 
     | 
    
         
            +
                  $('#nav').removeAttr('style');
         
     | 
| 
      
 67 
     | 
    
         
            +
                  $('#search a').removeClass('active inactive');
         
     | 
| 
      
 68 
     | 
    
         
            +
                  $(window).focus();
         
     | 
| 
      
 69 
     | 
    
         
            +
                }
         
     | 
| 
      
 70 
     | 
    
         
            +
              });
         
     | 
| 
      
 71 
     | 
    
         
            +
            }
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            function toggleSearchFrame(id, link) {
         
     | 
| 
      
 74 
     | 
    
         
            +
              var frame = $('#nav');
         
     | 
| 
      
 75 
     | 
    
         
            +
              $('#search a').removeClass('active').addClass('inactive');
         
     | 
| 
      
 76 
     | 
    
         
            +
              if (frame.attr('src') === link && frame.css('display') !== "none") {
         
     | 
| 
      
 77 
     | 
    
         
            +
                frame.slideUp(100);
         
     | 
| 
      
 78 
     | 
    
         
            +
                $('#search a').removeClass('active inactive');
         
     | 
| 
      
 79 
     | 
    
         
            +
              }
         
     | 
| 
      
 80 
     | 
    
         
            +
              else {
         
     | 
| 
      
 81 
     | 
    
         
            +
                $(id).addClass('active').removeClass('inactive');
         
     | 
| 
      
 82 
     | 
    
         
            +
                if (frame.attr('src') !== link) frame.attr('src', link);
         
     | 
| 
      
 83 
     | 
    
         
            +
                frame.slideDown(100);
         
     | 
| 
      
 84 
     | 
    
         
            +
              }
         
     | 
| 
      
 85 
     | 
    
         
            +
            }
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            function linkSummaries() {
         
     | 
| 
      
 88 
     | 
    
         
            +
              $('.summary_signature').click(function() {
         
     | 
| 
      
 89 
     | 
    
         
            +
                document.location = $(this).find('a').attr('href');
         
     | 
| 
      
 90 
     | 
    
         
            +
              });
         
     | 
| 
      
 91 
     | 
    
         
            +
            }
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            function summaryToggle() {
         
     | 
| 
      
 94 
     | 
    
         
            +
              $('.summary_toggle').click(function(e) {
         
     | 
| 
      
 95 
     | 
    
         
            +
                e.preventDefault();
         
     | 
| 
      
 96 
     | 
    
         
            +
                localStorage.summaryCollapsed = $(this).text();
         
     | 
| 
      
 97 
     | 
    
         
            +
                $('.summary_toggle').each(function() {
         
     | 
| 
      
 98 
     | 
    
         
            +
                  $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
         
     | 
| 
      
 99 
     | 
    
         
            +
                  var next = $(this).parent().parent().nextAll('ul.summary').first();
         
     | 
| 
      
 100 
     | 
    
         
            +
                  if (next.hasClass('compact')) {
         
     | 
| 
      
 101 
     | 
    
         
            +
                    next.toggle();
         
     | 
| 
      
 102 
     | 
    
         
            +
                    next.nextAll('ul.summary').first().toggle();
         
     | 
| 
      
 103 
     | 
    
         
            +
                  }
         
     | 
| 
      
 104 
     | 
    
         
            +
                  else if (next.hasClass('summary')) {
         
     | 
| 
      
 105 
     | 
    
         
            +
                    var list = $('<ul class="summary compact" />');
         
     | 
| 
      
 106 
     | 
    
         
            +
                    list.html(next.html());
         
     | 
| 
      
 107 
     | 
    
         
            +
                    list.find('.summary_desc, .note').remove();
         
     | 
| 
      
 108 
     | 
    
         
            +
                    list.find('a').each(function() {
         
     | 
| 
      
 109 
     | 
    
         
            +
                      $(this).html($(this).find('strong').html());
         
     | 
| 
      
 110 
     | 
    
         
            +
                      $(this).parent().html($(this)[0].outerHTML);
         
     | 
| 
      
 111 
     | 
    
         
            +
                    });
         
     | 
| 
      
 112 
     | 
    
         
            +
                    next.before(list);
         
     | 
| 
      
 113 
     | 
    
         
            +
                    next.toggle();
         
     | 
| 
      
 114 
     | 
    
         
            +
                  }
         
     | 
| 
      
 115 
     | 
    
         
            +
                });
         
     | 
| 
      
 116 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 117 
     | 
    
         
            +
              });
         
     | 
| 
      
 118 
     | 
    
         
            +
              if (localStorage.summaryCollapsed == "collapse") {
         
     | 
| 
      
 119 
     | 
    
         
            +
                $('.summary_toggle').first().click();
         
     | 
| 
      
 120 
     | 
    
         
            +
              } else { localStorage.summaryCollapsed = "expand"; }
         
     | 
| 
      
 121 
     | 
    
         
            +
            }
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            function constantSummaryToggle() {
         
     | 
| 
      
 124 
     | 
    
         
            +
              $('.constants_summary_toggle').click(function(e) {
         
     | 
| 
      
 125 
     | 
    
         
            +
                e.preventDefault();
         
     | 
| 
      
 126 
     | 
    
         
            +
                localStorage.summaryCollapsed = $(this).text();
         
     | 
| 
      
 127 
     | 
    
         
            +
                $('.constants_summary_toggle').each(function() {
         
     | 
| 
      
 128 
     | 
    
         
            +
                  $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
         
     | 
| 
      
 129 
     | 
    
         
            +
                  var next = $(this).parent().parent().nextAll('dl.constants').first();
         
     | 
| 
      
 130 
     | 
    
         
            +
                  if (next.hasClass('compact')) {
         
     | 
| 
      
 131 
     | 
    
         
            +
                    next.toggle();
         
     | 
| 
      
 132 
     | 
    
         
            +
                    next.nextAll('dl.constants').first().toggle();
         
     | 
| 
      
 133 
     | 
    
         
            +
                  }
         
     | 
| 
      
 134 
     | 
    
         
            +
                  else if (next.hasClass('constants')) {
         
     | 
| 
      
 135 
     | 
    
         
            +
                    var list = $('<dl class="constants compact" />');
         
     | 
| 
      
 136 
     | 
    
         
            +
                    list.html(next.html());
         
     | 
| 
      
 137 
     | 
    
         
            +
                    list.find('dt').each(function() {
         
     | 
| 
      
 138 
     | 
    
         
            +
                       $(this).addClass('summary_signature');
         
     | 
| 
      
 139 
     | 
    
         
            +
                       $(this).text( $(this).text().split('=')[0]);
         
     | 
| 
      
 140 
     | 
    
         
            +
                      if ($(this).has(".deprecated").length) {
         
     | 
| 
      
 141 
     | 
    
         
            +
                         $(this).addClass('deprecated');
         
     | 
| 
      
 142 
     | 
    
         
            +
                      };
         
     | 
| 
      
 143 
     | 
    
         
            +
                    });
         
     | 
| 
      
 144 
     | 
    
         
            +
                    // Add the value of the constant as "Tooltip" to the summary object
         
     | 
| 
      
 145 
     | 
    
         
            +
                    list.find('pre.code').each(function() {
         
     | 
| 
      
 146 
     | 
    
         
            +
                      console.log($(this).parent());
         
     | 
| 
      
 147 
     | 
    
         
            +
                      var dt_element = $(this).parent().prev();
         
     | 
| 
      
 148 
     | 
    
         
            +
                      var tooltip = $(this).text();
         
     | 
| 
      
 149 
     | 
    
         
            +
                      if (dt_element.hasClass("deprecated")) {
         
     | 
| 
      
 150 
     | 
    
         
            +
                         tooltip = 'Deprecated. ' + tooltip;
         
     | 
| 
      
 151 
     | 
    
         
            +
                      };
         
     | 
| 
      
 152 
     | 
    
         
            +
                      dt_element.attr('title', tooltip);
         
     | 
| 
      
 153 
     | 
    
         
            +
                    });
         
     | 
| 
      
 154 
     | 
    
         
            +
                    list.find('.docstring, .tags, dd').remove();
         
     | 
| 
      
 155 
     | 
    
         
            +
                    next.before(list);
         
     | 
| 
      
 156 
     | 
    
         
            +
                    next.toggle();
         
     | 
| 
      
 157 
     | 
    
         
            +
                  }
         
     | 
| 
      
 158 
     | 
    
         
            +
                });
         
     | 
| 
      
 159 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 160 
     | 
    
         
            +
              });
         
     | 
| 
      
 161 
     | 
    
         
            +
              if (localStorage.summaryCollapsed == "collapse") {
         
     | 
| 
      
 162 
     | 
    
         
            +
                $('.constants_summary_toggle').first().click();
         
     | 
| 
      
 163 
     | 
    
         
            +
              } else { localStorage.summaryCollapsed = "expand"; }
         
     | 
| 
      
 164 
     | 
    
         
            +
            }
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
            function generateTOC() {
         
     | 
| 
      
 167 
     | 
    
         
            +
              if ($('#filecontents').length === 0) return;
         
     | 
| 
      
 168 
     | 
    
         
            +
              var _toc = $('<ol class="top"></ol>');
         
     | 
| 
      
 169 
     | 
    
         
            +
              var show = false;
         
     | 
| 
      
 170 
     | 
    
         
            +
              var toc = _toc;
         
     | 
| 
      
 171 
     | 
    
         
            +
              var counter = 0;
         
     | 
| 
      
 172 
     | 
    
         
            +
              var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
         
     | 
| 
      
 173 
     | 
    
         
            +
              var i;
         
     | 
| 
      
 174 
     | 
    
         
            +
              if ($('#filecontents h1').length > 1) tags.unshift('h1');
         
     | 
| 
      
 175 
     | 
    
         
            +
              for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
         
     | 
| 
      
 176 
     | 
    
         
            +
              var lastTag = parseInt(tags[0][1], 10);
         
     | 
| 
      
 177 
     | 
    
         
            +
              $(tags.join(', ')).each(function() {
         
     | 
| 
      
 178 
     | 
    
         
            +
                if ($(this).parents('.method_details .docstring').length != 0) return;
         
     | 
| 
      
 179 
     | 
    
         
            +
                if (this.id == "filecontents") return;
         
     | 
| 
      
 180 
     | 
    
         
            +
                show = true;
         
     | 
| 
      
 181 
     | 
    
         
            +
                var thisTag = parseInt(this.tagName[1], 10);
         
     | 
| 
      
 182 
     | 
    
         
            +
                if (this.id.length === 0) {
         
     | 
| 
      
 183 
     | 
    
         
            +
                  var proposedId = $(this).attr('toc-id');
         
     | 
| 
      
 184 
     | 
    
         
            +
                  if (typeof(proposedId) != "undefined") this.id = proposedId;
         
     | 
| 
      
 185 
     | 
    
         
            +
                  else {
         
     | 
| 
      
 186 
     | 
    
         
            +
                    var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
         
     | 
| 
      
 187 
     | 
    
         
            +
                    if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
         
     | 
| 
      
 188 
     | 
    
         
            +
                    this.id = proposedId;
         
     | 
| 
      
 189 
     | 
    
         
            +
                  }
         
     | 
| 
      
 190 
     | 
    
         
            +
                }
         
     | 
| 
      
 191 
     | 
    
         
            +
                if (thisTag > lastTag) {
         
     | 
| 
      
 192 
     | 
    
         
            +
                  for (i = 0; i < thisTag - lastTag; i++) {
         
     | 
| 
      
 193 
     | 
    
         
            +
                    var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
         
     | 
| 
      
 194 
     | 
    
         
            +
                  }
         
     | 
| 
      
 195 
     | 
    
         
            +
                }
         
     | 
| 
      
 196 
     | 
    
         
            +
                if (thisTag < lastTag) {
         
     | 
| 
      
 197 
     | 
    
         
            +
                  for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
         
     | 
| 
      
 198 
     | 
    
         
            +
                }
         
     | 
| 
      
 199 
     | 
    
         
            +
                var title = $(this).attr('toc-title');
         
     | 
| 
      
 200 
     | 
    
         
            +
                if (typeof(title) == "undefined") title = $(this).text();
         
     | 
| 
      
 201 
     | 
    
         
            +
                toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
         
     | 
| 
      
 202 
     | 
    
         
            +
                lastTag = thisTag;
         
     | 
| 
      
 203 
     | 
    
         
            +
              });
         
     | 
| 
      
 204 
     | 
    
         
            +
              if (!show) return;
         
     | 
| 
      
 205 
     | 
    
         
            +
              html = '<div id="toc"><p class="title hide_toc"><a href="#"><strong>Table of Contents</strong></a></p></div>';
         
     | 
| 
      
 206 
     | 
    
         
            +
              $('#content').prepend(html);
         
     | 
| 
      
 207 
     | 
    
         
            +
              $('#toc').append(_toc);
         
     | 
| 
      
 208 
     | 
    
         
            +
              $('#toc .hide_toc').toggle(function() {
         
     | 
| 
      
 209 
     | 
    
         
            +
                $('#toc .top').slideUp('fast');
         
     | 
| 
      
 210 
     | 
    
         
            +
                $('#toc').toggleClass('hidden');
         
     | 
| 
      
 211 
     | 
    
         
            +
                $('#toc .title small').toggle();
         
     | 
| 
      
 212 
     | 
    
         
            +
              }, function() {
         
     | 
| 
      
 213 
     | 
    
         
            +
                $('#toc .top').slideDown('fast');
         
     | 
| 
      
 214 
     | 
    
         
            +
                $('#toc').toggleClass('hidden');
         
     | 
| 
      
 215 
     | 
    
         
            +
                $('#toc .title small').toggle();
         
     | 
| 
      
 216 
     | 
    
         
            +
              });
         
     | 
| 
      
 217 
     | 
    
         
            +
            }
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
            function navResizeFn(e) {
         
     | 
| 
      
 220 
     | 
    
         
            +
              if (e.which !== 1) {
         
     | 
| 
      
 221 
     | 
    
         
            +
                navResizeFnStop();
         
     | 
| 
      
 222 
     | 
    
         
            +
                return;
         
     | 
| 
      
 223 
     | 
    
         
            +
              }
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
              sessionStorage.navWidth = e.pageX.toString();
         
     | 
| 
      
 226 
     | 
    
         
            +
              $('.nav_wrap').css('width', e.pageX);
         
     | 
| 
      
 227 
     | 
    
         
            +
              $('.nav_wrap').css('-ms-flex', 'inherit');
         
     | 
| 
      
 228 
     | 
    
         
            +
            }
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
            function navResizeFnStop() {
         
     | 
| 
      
 231 
     | 
    
         
            +
              $(window).unbind('mousemove', navResizeFn);
         
     | 
| 
      
 232 
     | 
    
         
            +
              window.removeEventListener('message', navMessageFn, false);
         
     | 
| 
      
 233 
     | 
    
         
            +
            }
         
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
      
 235 
     | 
    
         
            +
            function navMessageFn(e) {
         
     | 
| 
      
 236 
     | 
    
         
            +
              if (e.data.action === 'mousemove') navResizeFn(e.data.event);
         
     | 
| 
      
 237 
     | 
    
         
            +
              if (e.data.action === 'mouseup') navResizeFnStop();
         
     | 
| 
      
 238 
     | 
    
         
            +
            }
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
            function navResizer() {
         
     | 
| 
      
 241 
     | 
    
         
            +
              $('#resizer').mousedown(function(e) {
         
     | 
| 
      
 242 
     | 
    
         
            +
                e.preventDefault();
         
     | 
| 
      
 243 
     | 
    
         
            +
                $(window).mousemove(navResizeFn);
         
     | 
| 
      
 244 
     | 
    
         
            +
                window.addEventListener('message', navMessageFn, false);
         
     | 
| 
      
 245 
     | 
    
         
            +
              });
         
     | 
| 
      
 246 
     | 
    
         
            +
              $(window).mouseup(navResizeFnStop);
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
              if (sessionStorage.navWidth) {
         
     | 
| 
      
 249 
     | 
    
         
            +
                navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)});
         
     | 
| 
      
 250 
     | 
    
         
            +
              }
         
     | 
| 
      
 251 
     | 
    
         
            +
            }
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
            function navExpander() {
         
     | 
| 
      
 254 
     | 
    
         
            +
              var done = false, timer = setTimeout(postMessage, 500);
         
     | 
| 
      
 255 
     | 
    
         
            +
              function postMessage() {
         
     | 
| 
      
 256 
     | 
    
         
            +
                if (done) return;
         
     | 
| 
      
 257 
     | 
    
         
            +
                clearTimeout(timer);
         
     | 
| 
      
 258 
     | 
    
         
            +
                var opts = { action: 'expand', path: pathId };
         
     | 
| 
      
 259 
     | 
    
         
            +
                document.getElementById('nav').contentWindow.postMessage(opts, '*');
         
     | 
| 
      
 260 
     | 
    
         
            +
                done = true;
         
     | 
| 
      
 261 
     | 
    
         
            +
              }
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
              window.addEventListener('message', function(event) {
         
     | 
| 
      
 264 
     | 
    
         
            +
                if (event.data === 'navReady') postMessage();
         
     | 
| 
      
 265 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 266 
     | 
    
         
            +
              }, false);
         
     | 
| 
      
 267 
     | 
    
         
            +
            }
         
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
            function mainFocus() {
         
     | 
| 
      
 270 
     | 
    
         
            +
              var hash = window.location.hash;
         
     | 
| 
      
 271 
     | 
    
         
            +
              if (hash !== '' && $(hash)[0]) {
         
     | 
| 
      
 272 
     | 
    
         
            +
                $(hash)[0].scrollIntoView();
         
     | 
| 
      
 273 
     | 
    
         
            +
              }
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
              setTimeout(function() { $('#main').focus(); }, 10);
         
     | 
| 
      
 276 
     | 
    
         
            +
            }
         
     | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
      
 278 
     | 
    
         
            +
            $(document).ready(function() {
         
     | 
| 
      
 279 
     | 
    
         
            +
              navResizer();
         
     | 
| 
      
 280 
     | 
    
         
            +
              navExpander();
         
     | 
| 
      
 281 
     | 
    
         
            +
              createSourceLinks();
         
     | 
| 
      
 282 
     | 
    
         
            +
              createDefineLinks();
         
     | 
| 
      
 283 
     | 
    
         
            +
              createFullTreeLinks();
         
     | 
| 
      
 284 
     | 
    
         
            +
              searchFrameButtons();
         
     | 
| 
      
 285 
     | 
    
         
            +
              linkSummaries();
         
     | 
| 
      
 286 
     | 
    
         
            +
              summaryToggle();
         
     | 
| 
      
 287 
     | 
    
         
            +
              constantSummaryToggle();
         
     | 
| 
      
 288 
     | 
    
         
            +
              generateTOC();
         
     | 
| 
      
 289 
     | 
    
         
            +
              mainFocus();
         
     | 
| 
      
 290 
     | 
    
         
            +
            });
         
     | 
| 
      
 291 
     | 
    
         
            +
             
     | 
| 
      
 292 
     | 
    
         
            +
            })();
         
     |