human_routes 0.0.4 → 0.0.7
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 +4 -4
 - data/.rubocop.yml +1 -0
 - data/README.md +49 -0
 - data/lib/human_routes/context.rb +33 -9
 - data/lib/human_routes/version.rb +1 -1
 - metadata +3 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b141f9a399978068f28f1756d0a575a893aaeb48d998ce3aecb641bb0648fb57
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cf69b4906f02fad6d251ec3210e902961f27cea5e9f1e1757a947d8aca34ae9f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4023dccdbcfbd1be66d10124df81e4b1f75fb3daf354d309ce391b90fd4762701e33a28baa18a930bd0a56617729b656d020fad65d045828691f3e4d95913ac1
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 4f4708fe090019fff8a630aa403b76a66d38480feccb26856cfb21559b3cda61a7fdced5d077cd896bdd0aaf48c9044d1d5c0bd0115bf149b119c29facd3c680
         
     | 
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -120,6 +120,7 @@ Rails.application.routes.draw do 
     | 
|
| 
       120 
120 
     | 
    
         
             
              # This will generate the following routes:
         
     | 
| 
       121 
121 
     | 
    
         
             
              #
         
     | 
| 
       122 
122 
     | 
    
         
             
              # GET  /profile         profile_path
         
     | 
| 
      
 123 
     | 
    
         
            +
              # GET  /profile/new     new_profile_path
         
     | 
| 
       123 
124 
     | 
    
         
             
              # POST /profile/new
         
     | 
| 
       124 
125 
     | 
    
         
             
              # GET  /profile/edit    edit_profile_path
         
     | 
| 
       125 
126 
     | 
    
         
             
              # POST /profile/edit
         
     | 
| 
         @@ -128,6 +129,21 @@ Rails.application.routes.draw do 
     | 
|
| 
       128 
129 
     | 
    
         
             
              route "profile" do
         
     | 
| 
       129 
130 
     | 
    
         
             
                all
         
     | 
| 
       130 
131 
     | 
    
         
             
              end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
              # You can use `resource: true` when you want a plural route but need a
         
     | 
| 
      
 134 
     | 
    
         
            +
              # singular resource.
         
     | 
| 
      
 135 
     | 
    
         
            +
              #
         
     | 
| 
      
 136 
     | 
    
         
            +
              # GET  /settings         settings_path
         
     | 
| 
      
 137 
     | 
    
         
            +
              # GET  /settings/new     new_settings_path
         
     | 
| 
      
 138 
     | 
    
         
            +
              # POST /settings/new
         
     | 
| 
      
 139 
     | 
    
         
            +
              # GET  /settings/edit    edit_settings_path
         
     | 
| 
      
 140 
     | 
    
         
            +
              # POST /settings/edit
         
     | 
| 
      
 141 
     | 
    
         
            +
              # GET  /settings/remove  remove_settings_path
         
     | 
| 
      
 142 
     | 
    
         
            +
              # POST /settings/remove
         
     | 
| 
      
 143 
     | 
    
         
            +
              #
         
     | 
| 
      
 144 
     | 
    
         
            +
              route "settings", resource: true do
         
     | 
| 
      
 145 
     | 
    
         
            +
                all
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
       131 
147 
     | 
    
         
             
            end
         
     | 
| 
       132 
148 
     | 
    
         
             
            ```
         
     | 
| 
       133 
149 
     | 
    
         | 
| 
         @@ -159,6 +175,39 @@ Rails.application.routes.draw do 
     | 
|
| 
       159 
175 
     | 
    
         
             
            end
         
     | 
| 
       160 
176 
     | 
    
         
             
            ```
         
     | 
| 
       161 
177 
     | 
    
         | 
| 
      
 178 
     | 
    
         
            +
            For nested paths, you can use `:prefix`:
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 181 
     | 
    
         
            +
            Rails.application.routes.draw do
         
     | 
| 
      
 182 
     | 
    
         
            +
              route :posts do
         
     | 
| 
      
 183 
     | 
    
         
            +
                all
         
     | 
| 
      
 184 
     | 
    
         
            +
              end
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
              route :comments, prefix: "posts/:post_id" do
         
     | 
| 
      
 187 
     | 
    
         
            +
                remove #=> /posts/:post_id/comments/:id/remove
         
     | 
| 
      
 188 
     | 
    
         
            +
                list   #=> /posts/:post_id/comments
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                # or
         
     | 
| 
      
 191 
     | 
    
         
            +
                all
         
     | 
| 
      
 192 
     | 
    
         
            +
              end
         
     | 
| 
      
 193 
     | 
    
         
            +
            end
         
     | 
| 
      
 194 
     | 
    
         
            +
            ```
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
            If you need to change the url path, but point to a different controller, then
         
     | 
| 
      
 197 
     | 
    
         
            +
            use `:path_name`:
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 200 
     | 
    
         
            +
            Rails.application.routes.draw do
         
     | 
| 
      
 201 
     | 
    
         
            +
              route :blogs do
         
     | 
| 
      
 202 
     | 
    
         
            +
                all
         
     | 
| 
      
 203 
     | 
    
         
            +
              end
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
              route :blog_comments, path: "blogs/:blog_id", path_name: "comments" do
         
     | 
| 
      
 206 
     | 
    
         
            +
                all
         
     | 
| 
      
 207 
     | 
    
         
            +
              end
         
     | 
| 
      
 208 
     | 
    
         
            +
            end
         
     | 
| 
      
 209 
     | 
    
         
            +
            ```
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
       162 
211 
     | 
    
         
             
            ## Development
         
     | 
| 
       163 
212 
     | 
    
         | 
| 
       164 
213 
     | 
    
         
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run
         
     | 
    
        data/lib/human_routes/context.rb
    CHANGED
    
    | 
         @@ -16,11 +16,19 @@ module HumanRoutes 
     | 
|
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                def singular_controller_name
         
     | 
| 
       19 
     | 
    
         
            -
                  @singular_controller_name ||=  
     | 
| 
      
 19 
     | 
    
         
            +
                  @singular_controller_name ||= if options[:resource]
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                  controller_name
         
     | 
| 
      
 21 
     | 
    
         
            +
                                                else
         
     | 
| 
      
 22 
     | 
    
         
            +
                                                  controller_name.singularize
         
     | 
| 
      
 23 
     | 
    
         
            +
                                                end
         
     | 
| 
       20 
24 
     | 
    
         
             
                end
         
     | 
| 
       21 
25 
     | 
    
         | 
| 
       22 
26 
     | 
    
         
             
                def resource?
         
     | 
| 
       23 
     | 
    
         
            -
                  controller_name == singular_controller_name
         
     | 
| 
      
 27 
     | 
    
         
            +
                  options[:resource] || controller_name == singular_controller_name
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def path_name
         
     | 
| 
      
 31 
     | 
    
         
            +
                  options[:path_name] || controller_name
         
     | 
| 
       24 
32 
     | 
    
         
             
                end
         
     | 
| 
       25 
33 
     | 
    
         | 
| 
       26 
34 
     | 
    
         
             
                def routes
         
     | 
| 
         @@ -129,7 +137,7 @@ module HumanRoutes 
     | 
|
| 
       129 
137 
     | 
    
         
             
                  update
         
     | 
| 
       130 
138 
     | 
    
         
             
                  remove
         
     | 
| 
       131 
139 
     | 
    
         
             
                  show
         
     | 
| 
       132 
     | 
    
         
            -
                  list unless  
     | 
| 
      
 140 
     | 
    
         
            +
                  list unless resource?
         
     | 
| 
       133 
141 
     | 
    
         
             
                end
         
     | 
| 
       134 
142 
     | 
    
         | 
| 
       135 
143 
     | 
    
         
             
                def get(action, *args)
         
     | 
| 
         @@ -180,9 +188,25 @@ module HumanRoutes 
     | 
|
| 
       180 
188 
     | 
    
         
             
                                  .merge(route_options)
         
     | 
| 
       181 
189 
     | 
    
         | 
| 
       182 
190 
     | 
    
         
             
                  path = args.first || path_for(segment, route_options)
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                  path = [
         
     | 
| 
      
 193 
     | 
    
         
            +
                    route_options[:prefix].to_s.split("/"),
         
     | 
| 
      
 194 
     | 
    
         
            +
                    path.to_s.split("/")
         
     | 
| 
      
 195 
     | 
    
         
            +
                  ].flatten.compact
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
      
 197 
     | 
    
         
            +
                  path = path.map do |s|
         
     | 
| 
      
 198 
     | 
    
         
            +
                    s.start_with?(":") ? s : s.dasherize
         
     | 
| 
      
 199 
     | 
    
         
            +
                  end.join("/")
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
       184 
201 
     | 
    
         
             
                  name = route_options.delete(:as) { default_name.underscore.tr("/", "_") }
         
     | 
| 
       185 
202 
     | 
    
         | 
| 
      
 203 
     | 
    
         
            +
                  %i[
         
     | 
| 
      
 204 
     | 
    
         
            +
                    bare
         
     | 
| 
      
 205 
     | 
    
         
            +
                    prefix
         
     | 
| 
      
 206 
     | 
    
         
            +
                    path_name
         
     | 
| 
      
 207 
     | 
    
         
            +
                    resource
         
     | 
| 
      
 208 
     | 
    
         
            +
                  ].each {|key| route_options.delete(key) }
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
       186 
210 
     | 
    
         
             
                  [path, name, route_options]
         
     | 
| 
       187 
211 
     | 
    
         
             
                end
         
     | 
| 
       188 
212 
     | 
    
         | 
| 
         @@ -205,7 +229,7 @@ module HumanRoutes 
     | 
|
| 
       205 
229 
     | 
    
         
             
                end
         
     | 
| 
       206 
230 
     | 
    
         | 
| 
       207 
231 
     | 
    
         
             
                private def resource_segments(segment, _param, options)
         
     | 
| 
       208 
     | 
    
         
            -
                  segments = [ 
     | 
| 
      
 232 
     | 
    
         
            +
                  segments = [path_name]
         
     | 
| 
       209 
233 
     | 
    
         
             
                  segments << segment unless options[:bare]
         
     | 
| 
       210 
234 
     | 
    
         
             
                  segments
         
     | 
| 
       211 
235 
     | 
    
         
             
                end
         
     | 
| 
         @@ -213,13 +237,13 @@ module HumanRoutes 
     | 
|
| 
       213 
237 
     | 
    
         
             
                private def resources_segments(segment, param, _options)
         
     | 
| 
       214 
238 
     | 
    
         
             
                  case segment
         
     | 
| 
       215 
239 
     | 
    
         
             
                  when :list
         
     | 
| 
       216 
     | 
    
         
            -
                    [ 
     | 
| 
      
 240 
     | 
    
         
            +
                    [path_name]
         
     | 
| 
       217 
241 
     | 
    
         
             
                  when :new
         
     | 
| 
       218 
     | 
    
         
            -
                    [ 
     | 
| 
      
 242 
     | 
    
         
            +
                    [path_name, segment]
         
     | 
| 
       219 
243 
     | 
    
         
             
                  when :show
         
     | 
| 
       220 
     | 
    
         
            -
                    [ 
     | 
| 
      
 244 
     | 
    
         
            +
                    [path_name, ":#{param}"]
         
     | 
| 
       221 
245 
     | 
    
         
             
                  else
         
     | 
| 
       222 
     | 
    
         
            -
                    [ 
     | 
| 
      
 246 
     | 
    
         
            +
                    [path_name, ":#{param}", segment]
         
     | 
| 
       223 
247 
     | 
    
         
             
                  end
         
     | 
| 
       224 
248 
     | 
    
         
             
                end
         
     | 
| 
       225 
249 
     | 
    
         
             
              end
         
     | 
    
        data/lib/human_routes/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: human_routes
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Nando Vieira
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-07-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     | 
| 
         @@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       167 
167 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       168 
168 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       169 
169 
     | 
    
         
             
            requirements: []
         
     | 
| 
       170 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 170 
     | 
    
         
            +
            rubygems_version: 3.3.17
         
     | 
| 
       171 
171 
     | 
    
         
             
            signing_key:
         
     | 
| 
       172 
172 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       173 
173 
     | 
    
         
             
            summary: I say no to REST for client-facing urls.
         
     |