url_maker 1.0.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.
Files changed (2) hide show
  1. data/lib/url_maker.rb +31 -0
  2. metadata +64 -0
data/lib/url_maker.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'cgi'
2
+ require 'uri'
3
+
4
+ module UrlMaker
5
+ def build_query_string(pars, escape_method = :cgi)
6
+ pars.map {|key, val| _escape(key, escape_method) + '=' + _escape(val, escape_method) }.join("&")
7
+ end
8
+
9
+ def build_url(url, pars, escape = :cgi)
10
+ append_url_param(url, build_query_string(pars, escape))
11
+ end
12
+
13
+ def append_url_param(url, param)
14
+ return url if param.blank?
15
+ joiner = url.index('?') ? '&' : '?'
16
+ [url, param].join(joiner)
17
+ end
18
+
19
+ def _escape(value, method)
20
+ case method.to_s
21
+ when 'cgi'
22
+ CGI.escape(value.to_s)
23
+ when 'uri'
24
+ URI.escape(value.to_s, Regexp.new("[^#{URI::REGEXP::PATTERN::UNRESERVED}]"))
25
+ when ''
26
+ value.to_s
27
+ else
28
+ raise ArgumentError.new("unknown escape method: #{method}")
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: url_maker
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - David Wegman
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-11-02 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Helper functions for building URLs and query strings
22
+ email: dwegman@twistage.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/url_maker.rb
31
+ has_rdoc: true
32
+ homepage: http://rubygems.org/gems/url_maker
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ requirements: []
57
+
58
+ rubyforge_project:
59
+ rubygems_version: 1.3.7
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: URL Maker
63
+ test_files: []
64
+