bootstrap_builders 0.0.60 → 0.0.61
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 250f6cde716d39a305a42b3345c8a388b38bf623
|
4
|
+
data.tar.gz: bab587be818ec8b518ae3641aebc9d3a4d7a2cfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17963e7e6bde475d527cfebeee201ea02f66bbc87bb25faf799a594261274973b9c791ea2a72632675bc65b362ec28ae508f6eb751723445a46a6feb2acd2f78
|
7
|
+
data.tar.gz: 5cfe540f4accaac79d0e2d837e74e9701bbe239802d58b6d180eb0ccf5449208139d02cb1d11582ec22b48daaecaf144270c13d731e5c4269353cfdaa6464a23
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# UrlBuilder
|
2
|
+
|
3
|
+
## Usage
|
4
|
+
|
5
|
+
Start by making a new object with any given URL
|
6
|
+
|
7
|
+
```js
|
8
|
+
var urlb = new UrlBuilder.new(window.location.href)
|
9
|
+
```
|
10
|
+
|
11
|
+
### Manipulate a query parameter
|
12
|
+
|
13
|
+
```js
|
14
|
+
urlb.queryParameters["someParameter"] = "newValue"
|
15
|
+
```
|
16
|
+
|
17
|
+
### Generate a new URL
|
18
|
+
|
19
|
+
```js
|
20
|
+
urlb.generateFullUrl() #=> "http://localhost:3000/?someParameter=newValue"
|
21
|
+
```
|
22
|
+
|
23
|
+
### Generate the path with query parameters
|
24
|
+
|
25
|
+
```js
|
26
|
+
urlb.pathWithQueryParameters #=> "/?someParameter=newValue"
|
27
|
+
```
|
@@ -0,0 +1,140 @@
|
|
1
|
+
class UrlBuilder {
|
2
|
+
constructor(url) {
|
3
|
+
if (url) {
|
4
|
+
this.parseUrlFromString(url)
|
5
|
+
}
|
6
|
+
}
|
7
|
+
|
8
|
+
parseHostAndPortFromUrl() {
|
9
|
+
var match = this.matchAndRemove(/^([A-z\d-\.]+)(|:(\d+))($|\/)/)
|
10
|
+
|
11
|
+
if (match) {
|
12
|
+
this.host = match[1]
|
13
|
+
|
14
|
+
if (match[3]) {
|
15
|
+
this.port = parseInt(match[3])
|
16
|
+
this.portSpecified = true
|
17
|
+
} else {
|
18
|
+
if (this.protocol == "https") {
|
19
|
+
this.port = 443
|
20
|
+
} else {
|
21
|
+
this.port = 80
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
parsePathFromUrl() {
|
28
|
+
var match = this.matchAndRemove(/^([^\?]+)/)
|
29
|
+
|
30
|
+
if (match) {
|
31
|
+
this.path = "/" + match[1]
|
32
|
+
} else {
|
33
|
+
this.path = ""
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
parseProtocolFromUrl() {
|
38
|
+
var match = this.matchAndRemove(/^(.+?):\/\//)
|
39
|
+
|
40
|
+
if (match) {
|
41
|
+
this.protocol = match[1]
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
parseQueryParametersFromUrl() {
|
46
|
+
this.queryParameters = {}
|
47
|
+
|
48
|
+
if (this.matchAndRemove(/^\?/)) {
|
49
|
+
var pairs = this.url.split("&")
|
50
|
+
|
51
|
+
for(var pair in pairs) {
|
52
|
+
var match = pair.match(/^(.+?)=(.+)$/)
|
53
|
+
if (match) {
|
54
|
+
this.queryParameters[match[1]] = match[2]
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
parseUrlFromString(url) {
|
61
|
+
this.url = url
|
62
|
+
|
63
|
+
this.parseProtocolFromUrl()
|
64
|
+
this.parseHostAndPortFromUrl()
|
65
|
+
this.parsePathFromUrl()
|
66
|
+
this.parseQueryParametersFromUrl()
|
67
|
+
}
|
68
|
+
|
69
|
+
generateFullUrl() {
|
70
|
+
var url = this.protocol + "://" + this.host
|
71
|
+
|
72
|
+
if (this.portSpecified) {
|
73
|
+
url += ":" + this.port
|
74
|
+
}
|
75
|
+
|
76
|
+
url += this.path
|
77
|
+
|
78
|
+
if (this.hasQueryParameters()) {
|
79
|
+
url += "?"
|
80
|
+
url += this.queryParametersAsString()
|
81
|
+
}
|
82
|
+
|
83
|
+
return url
|
84
|
+
}
|
85
|
+
|
86
|
+
pathWithQueryParameters() {
|
87
|
+
var generatedPath = this.path
|
88
|
+
|
89
|
+
if (this.hasQueryParameters()) {
|
90
|
+
generatedPath += "?"
|
91
|
+
generatedPath += this.queryParametersAsString()
|
92
|
+
}
|
93
|
+
|
94
|
+
return generatedPath
|
95
|
+
}
|
96
|
+
|
97
|
+
matchAndRemove(regex) {
|
98
|
+
var match = this.url.match(regex)
|
99
|
+
|
100
|
+
if (match) {
|
101
|
+
this.url = this.url.replace(regex, "")
|
102
|
+
return match
|
103
|
+
} else {
|
104
|
+
return false
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
// Returns true if any query parameters has been saved
|
109
|
+
hasQueryParameters() {
|
110
|
+
if (this.queryParameters && Object.keys(this.queryParameters).length > 0) {
|
111
|
+
return true
|
112
|
+
} else {
|
113
|
+
return false
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
// Returns a hash containing the query parameters
|
118
|
+
queryParameters() {
|
119
|
+
this.queryParameters
|
120
|
+
}
|
121
|
+
|
122
|
+
queryParametersAsString() {
|
123
|
+
var queryParametersString = ""
|
124
|
+
var first = true
|
125
|
+
|
126
|
+
for(var key in this.queryParameters) {
|
127
|
+
var value = this.queryParameters[key]
|
128
|
+
|
129
|
+
if (first) {
|
130
|
+
first = false
|
131
|
+
} else {
|
132
|
+
queryParametersString += "&"
|
133
|
+
}
|
134
|
+
|
135
|
+
queryParametersString += key + "=" + value
|
136
|
+
}
|
137
|
+
|
138
|
+
return queryParametersString
|
139
|
+
}
|
140
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_builders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.61
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kaspernj
|
@@ -52,6 +52,8 @@ files:
|
|
52
52
|
- app/assets/javascripts/bootstrap_builders/bb-btn-responsive.js
|
53
53
|
- app/assets/javascripts/bootstrap_builders/date-picker-input.es6
|
54
54
|
- app/assets/javascripts/bootstrap_builders/tabs.js
|
55
|
+
- app/assets/javascripts/bootstrap_builders/url-builder/README.md
|
56
|
+
- app/assets/javascripts/bootstrap_builders/url-builder/lib/url-builder.es6
|
55
57
|
- app/assets/javascripts/bootstrap_builders/view-port-detection.js
|
56
58
|
- app/assets/stylesheets/bootstrap_builders.scss
|
57
59
|
- app/assets/stylesheets/bootstrap_builders/bb-btn-responsive.scss
|