sinatra-docdsl 0.6.0 → 0.7.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 +8 -8
- data/lib/docdsl.rb +139 -6
- metadata +16 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                Y2FiZDQ3OGRlY2VhYTBjNDBmODQ1ZTUzYWI2MTNkZTc1ZDUyYjNjMA==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                NGZmODVlYjdmN2Q2ZmUwNWU2Nzg3MTYyMTMwZTNiNDBkMjdiNDE1NA==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                ZjRkZTE1Yzk0YWQyOGFmNTRiZWMxMzgyZDM2ZDQwNDliODMxYzM1MWRjZTBm
         | 
| 10 | 
            +
                MTIwMDRkNTgzYjY5M2FiNGEzZmE2YWE0YmJjNWFkOGJkNjJmNmMxMWJkNzQw
         | 
| 11 | 
            +
                NDExYzVmOGY0ZjVmZmI2NjAxZTQyMzU2ODNjZTU2YmM4ZDNjYzY=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                OTQ4ZDJlODczOGZkNWU1NDU4ZjJmYTA1NzY1OWUyMmIzNjMzMmE3MDZmODRh
         | 
| 14 | 
            +
                ODZmY2I2YTFhMTgyNzIzNzVhZTg0YTljMmI5YjA5NDNiMDRhMTYzMmFjMWM0
         | 
| 15 | 
            +
                YzQ4OTIxZWQ5ZDM4NGJmNzA1NjhmODE3ZTgxZTNjZmNjMzZhMjY=
         | 
    
        data/lib/docdsl.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'json'
         | 
| 2 | 
            +
            require 'kramdown'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Sinatra
         | 
| 4 5 | 
             
              module DocDsl
         | 
| @@ -11,7 +12,8 @@ module Sinatra | |
| 11 12 | 
             
                    @the_introduction="API Documentation for this resource"
         | 
| 12 13 | 
             
                    @the_footer='Powered by <strong><a href="https://github.com/jillesvangurp/sinatra-docdsl">Sinatra DocDSL</a></strong>'
         | 
| 13 14 | 
             
                    configure_renderer do
         | 
| 14 | 
            -
                       | 
| 15 | 
            +
                      # default
         | 
| 16 | 
            +
                      self.render_md
         | 
| 15 17 | 
             
                    end
         | 
| 16 18 | 
             
                    if(block)
         | 
| 17 19 | 
             
                      if block.arity == 1
         | 
| @@ -56,7 +58,138 @@ module Sinatra | |
| 56 58 | 
             
                      :endPoints=>entries
         | 
| 57 59 | 
             
                    }
         | 
| 58 60 |  | 
| 59 | 
            -
                    object.to_json
         | 
| 61 | 
            +
                    [200,{'content-type' => 'application/json;charset=UTF8'},object.to_json]
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                  
         | 
| 64 | 
            +
                  def definition_list(title, definitions) 
         | 
| 65 | 
            +
                    if definitions.length > 0
         | 
| 66 | 
            +
                      definitions.inject("### #{title}\n\n") do | dl, (k,v) |
         | 
| 67 | 
            +
                        dl << "
         | 
| 68 | 
            +
            #{k}
         | 
| 69 | 
            +
            :  #{v}
         | 
| 70 | 
            +
            "
         | 
| 71 | 
            +
                      end
         | 
| 72 | 
            +
                    else
         | 
| 73 | 
            +
                      ''
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                  
         | 
| 77 | 
            +
                  def render_md
         | 
| 78 | 
            +
                    begin
         | 
| 79 | 
            +
                      html=Kramdown::Document.new(to_markdown).to_html
         | 
| 80 | 
            +
                      body= <<-HTML
         | 
| 81 | 
            +
            <html>
         | 
| 82 | 
            +
              <head>
         | 
| 83 | 
            +
                <title>#{@the_title}</title>
         | 
| 84 | 
            +
                <style type="text/css">
         | 
| 85 | 
            +
                  #container{width:960px; margin:1em auto; font-family:monaco, monospace;font-size:11px;}
         | 
| 86 | 
            +
                  dt{ background:#f5f5f5; font-weight:bold; float:left; margin-right:1em; }
         | 
| 87 | 
            +
                  dd{ margin-left:1em; }
         | 
| 88 | 
            +
                </style>
         | 
| 89 | 
            +
              </head>
         | 
| 90 | 
            +
              <body>
         | 
| 91 | 
            +
                <div id="container">
         | 
| 92 | 
            +
                  #{html}
         | 
| 93 | 
            +
                </div>
         | 
| 94 | 
            +
              </body>
         | 
| 95 | 
            +
            </html>
         | 
| 96 | 
            +
            HTML
         | 
| 97 | 
            +
                      [200,{'content-type' => 'text/html;charset=UTF8'},body]
         | 
| 98 | 
            +
                    rescue => e
         | 
| 99 | 
            +
                      [500,"oops, #{e.to_s}\n#{e.backtrace}"]
         | 
| 100 | 
            +
                    end
         | 
| 101 | 
            +
                  end
         | 
| 102 | 
            +
                  
         | 
| 103 | 
            +
                  def md
         | 
| 104 | 
            +
                    [200,{'content-type' => 'text/plain;charset=UTF8'},to_markdown]
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
                  
         | 
| 107 | 
            +
                  def to_markdown
         | 
| 108 | 
            +
                    markdown="
         | 
| 109 | 
            +
            #{@the_header}
         | 
| 110 | 
            +
                    
         | 
| 111 | 
            +
            # #{@the_title}
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            #{@the_introduction}
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            "
         | 
| 116 | 
            +
            # :description=>@desc, 
         | 
| 117 | 
            +
            # :url_parameters=>@params, 
         | 
| 118 | 
            +
            # :paths=>@paths, 
         | 
| 119 | 
            +
            # :query_parameters=>@query_params, 
         | 
| 120 | 
            +
            # :headers=>@headers, 
         | 
| 121 | 
            +
            # :payload=>@the_payload, 
         | 
| 122 | 
            +
            # :sample_request=>@sample_request,
         | 
| 123 | 
            +
            # :response=>@the_response,
         | 
| 124 | 
            +
            # :status_codes=>@status_codes,
         | 
| 125 | 
            +
            # :sample_response=>@sample_response
         | 
| 126 | 
            +
                    markdown = @entries.inject(markdown) do | md, entry |
         | 
| 127 | 
            +
                      path = entry.paths.join(', ')
         | 
| 128 | 
            +
                      params = definition_list("Url Parameters", entry.params)
         | 
| 129 | 
            +
                      query_params = definition_list("Query Parameters", entry.query_params)
         | 
| 130 | 
            +
                      header_params = definition_list("Header Parameters", entry.headers)
         | 
| 131 | 
            +
                            
         | 
| 132 | 
            +
                      if entry.the_payload
         | 
| 133 | 
            +
                        payload="
         | 
| 134 | 
            +
            ### Request body
         | 
| 135 | 
            +
             | 
| 136 | 
            +
            #{entry.the_payload} 
         | 
| 137 | 
            +
                       
         | 
| 138 | 
            +
            "
         | 
| 139 | 
            +
                        if(entry.sample_request)
         | 
| 140 | 
            +
                          payload << "
         | 
| 141 | 
            +
            ~~~ javascript
         | 
| 142 | 
            +
            #{JSON.pretty_generate(entry.sample_request)}
         | 
| 143 | 
            +
            ~~~
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            "
         | 
| 146 | 
            +
                        end
         | 
| 147 | 
            +
                      end
         | 
| 148 | 
            +
                      payload ||=''
         | 
| 149 | 
            +
                      
         | 
| 150 | 
            +
                      
         | 
| 151 | 
            +
                      if entry.the_response            
         | 
| 152 | 
            +
                        response="
         | 
| 153 | 
            +
            ### Response
         | 
| 154 | 
            +
            #{entry.the_response}
         | 
| 155 | 
            +
             | 
| 156 | 
            +
            "          
         | 
| 157 | 
            +
                        if(entry.sample_response)
         | 
| 158 | 
            +
                          response << "
         | 
| 159 | 
            +
            ~~~ javascript
         | 
| 160 | 
            +
            #{JSON.pretty_generate(entry.sample_response)}
         | 
| 161 | 
            +
            ~~~
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            "
         | 
| 164 | 
            +
                        end
         | 
| 165 | 
            +
                      end
         | 
| 166 | 
            +
                      response ||=''
         | 
| 167 | 
            +
                      status_codes=definition_list("Status codes", entry.status_codes)
         | 
| 168 | 
            +
             | 
| 169 | 
            +
             | 
| 170 | 
            +
                      md << "
         | 
| 171 | 
            +
            ## #{path}
         | 
| 172 | 
            +
             | 
| 173 | 
            +
            #{entry.desc}
         | 
| 174 | 
            +
             | 
| 175 | 
            +
            #{params}
         | 
| 176 | 
            +
             | 
| 177 | 
            +
            #{query_params}
         | 
| 178 | 
            +
             | 
| 179 | 
            +
            #{header_params}
         | 
| 180 | 
            +
             | 
| 181 | 
            +
            #{payload}
         | 
| 182 | 
            +
             | 
| 183 | 
            +
            #{response}
         | 
| 184 | 
            +
             | 
| 185 | 
            +
            #{status_codes}
         | 
| 186 | 
            +
            "
         | 
| 187 | 
            +
                    end
         | 
| 188 | 
            +
                    
         | 
| 189 | 
            +
                    markdown << "
         | 
| 190 | 
            +
            #{@the_footer}
         | 
| 191 | 
            +
            "
         | 
| 192 | 
            +
                    markdown
         | 
| 60 193 | 
             
                  end
         | 
| 61 194 |  | 
| 62 195 | 
             
                  def html
         | 
| @@ -84,10 +217,10 @@ module Sinatra | |
| 84 217 | 
             
                          </body>
         | 
| 85 218 | 
             
                        </html>
         | 
| 86 219 | 
             
                      HTML
         | 
| 220 | 
            +
                      [200,{'content-type' => 'text/html;charset=UTF8'},body]
         | 
| 87 221 | 
             
                    rescue => e
         | 
| 88 | 
            -
                       | 
| 89 | 
            -
                    end
         | 
| 90 | 
            -
                    body
         | 
| 222 | 
            +
                      [500,"oops, #{e.to_s}\n#{e.backtrace}"]
         | 
| 223 | 
            +
                    end        
         | 
| 91 224 | 
             
                  end 
         | 
| 92 225 |  | 
| 93 226 | 
             
                  def render_html_entries 
         | 
| @@ -283,7 +416,7 @@ module Sinatra | |
| 283 416 | 
             
                    begin
         | 
| 284 417 | 
             
                      app.instance_eval { 
         | 
| 285 418 | 
             
                        @page_doc ||= PageDoc.new             
         | 
| 286 | 
            -
                         | 
| 419 | 
            +
                        @page_doc.render
         | 
| 287 420 | 
             
                      }
         | 
| 288 421 | 
             
                    rescue Exception=>e
         | 
| 289 422 | 
             
                      puts e.message, e.backtrace.inspect
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sinatra-docdsl
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.7.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jilles van Gurp
         | 
| @@ -9,7 +9,21 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 | 
             
            date: 2013-08-30 00:00:00.000000000 Z
         | 
| 12 | 
            -
            dependencies: | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: kramdown
         | 
| 15 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 21 | 
            +
                requirements:
         | 
| 22 | 
            +
                - - ">="
         | 
| 23 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 24 | 
            +
                    version: '0'
         | 
| 25 | 
            +
              prerelease: false
         | 
| 26 | 
            +
              type: :runtime
         | 
| 13 27 | 
             
            description: A simple DSL for documenting Sinatra apps and generating a /doc endpoint in a sinatra resource
         | 
| 14 28 | 
             
            email: incoming@jillesvangurp.xom
         | 
| 15 29 | 
             
            executables: []
         |