paramedic 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -19
- data/features/encode_a_request.feature +15 -0
- data/features/step_definitions/steps.rb +29 -0
- data/features/support/command.xml +53 -0
- data/features/support/data.xml +129 -0
- data/features/support/env.rb +14 -0
- data/features/support/expected_output.txt +1 -0
- data/lib/paramedic/encoder.rb +2 -2
- data/lib/paramedic/version.rb +1 -1
- data/lib/paramedic/xml_masseuse.rb +20 -7
- data/paramedic.gemspec +2 -1
- data/spec/paramedic/encoder_spec.rb +33 -0
- data/spec/paramedic/xml_masseuse_spec.rb +90 -20
- metadata +48 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d62dc7b67b68ff1e498b57ed5d6e773406f8d1b
|
4
|
+
data.tar.gz: b22d3ad0db632998a533b53b8fe8f1e676610868
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4287bf0321aa006c052e599727c63f3fd0b554bafb9e2edfa7999b044ebae5f5a49e66befbf9d8f68c39e3ab998222b73445f980e12dea9d364a62533dea318e
|
7
|
+
data.tar.gz: 97fba8e3d5165e331cf7a06aeb9c5465b7a4b08e42e8f3b99cff9b56912b036112d9e3b8a2fc5a6a1a8376bbd0a74c3a3e80c88b6e944a87482cb7d2df99bd1e
|
data/README.md
CHANGED
@@ -22,32 +22,34 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
Encoder takes a hash of params and their values, and makes them safe for older Microsoft services, like so:
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
```ruby
|
26
|
+
params = { CMD: '/cmd?name=bill&id=3' }
|
27
|
+
Paramedic::Encoder.new(params).to_s
|
28
|
+
# => "CMD=%2Fcmd%3Fname%3Dbill%24id%3D3"
|
29
|
+
```
|
28
30
|
|
29
|
-
###
|
31
|
+
### XMLMasseuse
|
30
32
|
|
31
33
|
Let's say that you have an XML document assigned to a variable like so:
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
"""
|
42
|
-
|
43
|
-
If you want the <superheroes /> element's children to be treated like they're not part of the XML document,
|
44
|
-
do the following:
|
35
|
+
```xml
|
36
|
+
<!-- /superheroes.xml -->
|
37
|
+
<superheroes>
|
38
|
+
<superman>
|
39
|
+
<name>Clark Kent</name>
|
40
|
+
</superman>
|
41
|
+
</superheroes>
|
42
|
+
```
|
45
43
|
|
46
|
-
|
44
|
+
If you want the `<superheroes />` element's children to be treated like they're not part of the XML document,
|
45
|
+
do the following:
|
47
46
|
|
48
|
-
|
47
|
+
```ruby
|
48
|
+
xml = File.read('/superheroes.xml')
|
49
|
+
Paramedic::XMLMasseuse.new(xml, escape_tags: ['superheroes']).to_xml
|
49
50
|
|
50
|
-
|
51
|
+
# => "<superheroes><superman><name>Clark Kent</name></superheroes>"
|
52
|
+
```
|
51
53
|
|
52
54
|
## Contributing
|
53
55
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Feature: Encode a query string
|
2
|
+
|
3
|
+
Scenario:
|
4
|
+
Given a query string that requires encoding
|
5
|
+
And a value for REQUESTTYPE of SAVE
|
6
|
+
And a value for TABLE of undefined
|
7
|
+
And a value for GROUP of WEB_RMLEAS
|
8
|
+
And a value for PAGE of APPLY
|
9
|
+
And a value for ID of MRI_1
|
10
|
+
And a value for CMD in command.xml
|
11
|
+
And a value for DATA in data.xml
|
12
|
+
When the keys and values are encoded
|
13
|
+
Then they produce the string in expected_output.txt
|
14
|
+
|
15
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Given(/^a query string that requires encoding$/) do
|
2
|
+
@params = {}
|
3
|
+
end
|
4
|
+
|
5
|
+
Given(/^a value for (\w+)? in (\w+.xml)$/) do |key, file|
|
6
|
+
@params[key] = Paramedic::XMLMasseuse.new(File.readlines("features/support/#{file}").join('')).to_xml
|
7
|
+
end
|
8
|
+
|
9
|
+
And(/^a value for (\w+)? of (\w+)?/) do |key, value|
|
10
|
+
@params[key] = value
|
11
|
+
end
|
12
|
+
|
13
|
+
When(/^the keys and values are encoded$/) do
|
14
|
+
@result = Paramedic::Encoder.new(@params).to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
Then(/^they produce the string in (.+)?$/) do |output_file|
|
18
|
+
expected_output = File.readlines("features/support/#{output_file}").first
|
19
|
+
|
20
|
+
result_hash = produce_hash(@result)
|
21
|
+
|
22
|
+
expected_hash = produce_hash(expected_output)
|
23
|
+
|
24
|
+
result_hash.each_pair do |key, value|
|
25
|
+
expected_value = expected_hash[key]
|
26
|
+
|
27
|
+
expect(value.strip).to eq expected_value.strip
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<ViewCommand>
|
3
|
+
<GROUP>WEB_RMLEAS</GROUP>
|
4
|
+
<PAGE>APPLY</PAGE>
|
5
|
+
<COMMAND>SAVE</COMMAND>
|
6
|
+
<PARMS>~GROUP=WEB_RMLEAS~MODAL=Y~MENUNAME=WEB_RMHOME~MENUID=MRI_69~INHERITMENU=Y~WHERE=NAME.NAMEID=''~RMPROPID=0115~NAMEGROUP=~NAME.RESPROPID=0115~PATH=C:\Program Files (x86)\MriWeb\~URL=/mripage.asp~</PARMS>
|
7
|
+
<CURRENTKEY>~NAMEID=~</CURRENTKEY>
|
8
|
+
<CURRENTORDERFLDS>~NAMEID=''~</CURRENTORDERFLDS>
|
9
|
+
<ORDERBY></ORDERBY>
|
10
|
+
<WHERE>NAME.NAMEID=''</WHERE>
|
11
|
+
<USERQRY></USERQRY>
|
12
|
+
<GROUP>WEB_RMLEAS</GROUP>
|
13
|
+
<MENUNAME>WEB_RMHOME</MENUNAME>
|
14
|
+
<MENUID>MRI_69</MENUID>
|
15
|
+
<PARENTMENUNAME></PARENTMENUNAME>
|
16
|
+
<PARENTMENUID></PARENTMENUID>
|
17
|
+
<FILTERID></FILTERID>
|
18
|
+
<FORM>APPLY</FORM>
|
19
|
+
<CMDBTNS>
|
20
|
+
<BTNSAVE>CLNTCMD{SAVE,CLOSE,RETURN{CLNTCMD{RECALC}}}</BTNSAVE>
|
21
|
+
<BTNCANCEL1>CLNTCMD{CANCELCLOSE}</BTNCANCEL1>
|
22
|
+
</CMDBTNS>
|
23
|
+
<HIDE>
|
24
|
+
<UTILBILLLINK>HIDE</UTILBILLLINK>
|
25
|
+
<CHKOPTOUT>HIDE</CHKOPTOUT>
|
26
|
+
<L_CHKOPTOUT>HIDE</L_CHKOPTOUT>
|
27
|
+
</HIDE>
|
28
|
+
<UPDATEABLE>Y</UPDATEABLE>
|
29
|
+
<ABANDON></ABANDON>
|
30
|
+
<DELETECOOKIES>COOKIE_7;</DELETECOOKIES>
|
31
|
+
<CLIENTEXPR>
|
32
|
+
</CLIENTEXPR>
|
33
|
+
<BASECLIENTEXPR>
|
34
|
+
</BASECLIENTEXPR>
|
35
|
+
<HELPPAGE>RM\RM.htm</HELPPAGE>
|
36
|
+
<PATH>C:\Program Files (x86)\MriWeb\</PATH>
|
37
|
+
<URL>/mripage.asp</URL>
|
38
|
+
<COMMENT>
|
39
|
+
27837.5: Start GetWebHtmlAndData
|
40
|
+
27837.7 0 elapsed for BuildMenu
|
41
|
+
27837.72 0.0156 elapsed for Build HTML
|
42
|
+
27837.72 0 elapsed for CmdXml to Svr
|
43
|
+
27837.73 0 elapsed for cleargroup
|
44
|
+
27837.73 0 elapsed for GetData 1
|
45
|
+
27837.75 0.0176 elapsed for BaseQry SQL
|
46
|
+
27837.77 0.0137 elapsed for BaseQry Fetch
|
47
|
+
27837.77 0.0312 elapsed for ExecuteQuery total
|
48
|
+
27837.78 0 elapsed for Build DataXml (0 Rows)
|
49
|
+
27837.78 0.0469 elapsed for GetData
|
50
|
+
Evaluate Count: 21
|
51
|
+
SQL Time: 0.3398438</COMMENT>
|
52
|
+
<APPLID></APPLID>
|
53
|
+
</ViewCommand>
|
@@ -0,0 +1,129 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<TABLEDATA>
|
3
|
+
<FORM>
|
4
|
+
<PRE_ADDRLEN></PRE_ADDRLEN>
|
5
|
+
<CUR_ADDRLEN></CUR_ADDRLEN>
|
6
|
+
<MRIX_54>
|
7
|
+
<N>:: Application Details for William Brewer</N>
|
8
|
+
</MRIX_54>
|
9
|
+
<PRE_ADDRESS2>
|
10
|
+
<N></N>
|
11
|
+
</PRE_ADDRESS2>
|
12
|
+
<PRE_CITY>
|
13
|
+
<N></N>
|
14
|
+
</PRE_CITY>
|
15
|
+
<PRE_STATE>
|
16
|
+
<N></N>
|
17
|
+
</PRE_STATE>
|
18
|
+
<PRE_ZIP>
|
19
|
+
<N></N>
|
20
|
+
</PRE_ZIP>
|
21
|
+
<EMP_ADDRESS1>
|
22
|
+
<N></N>
|
23
|
+
</EMP_ADDRESS1>
|
24
|
+
<EMP_CITY>
|
25
|
+
<N></N>
|
26
|
+
</EMP_CITY>
|
27
|
+
<EMP_STATE>
|
28
|
+
<N></N>
|
29
|
+
</EMP_STATE>
|
30
|
+
<EMP_ZIP>
|
31
|
+
<N></N>
|
32
|
+
</EMP_ZIP>
|
33
|
+
<EMP_ADDRESS2>
|
34
|
+
<N></N>
|
35
|
+
</EMP_ADDRESS2>
|
36
|
+
<GET_ADDR></GET_ADDR>
|
37
|
+
<PRE_ADDRESS>
|
38
|
+
<N></N>
|
39
|
+
</PRE_ADDRESS>
|
40
|
+
<CUR_ADDRESS2>
|
41
|
+
<N></N>
|
42
|
+
</CUR_ADDRESS2>
|
43
|
+
<CUR_CITY>
|
44
|
+
<N>Mountain View</N>
|
45
|
+
</CUR_CITY>
|
46
|
+
<CUR_STATE>
|
47
|
+
<N>CA</N>
|
48
|
+
</CUR_STATE>
|
49
|
+
<CUR_ZIP>
|
50
|
+
<N>94040</N>
|
51
|
+
</CUR_ZIP>
|
52
|
+
<CUR_ADDRESS>
|
53
|
+
<N>123 Main Str.</N>
|
54
|
+
</CUR_ADDRESS>
|
55
|
+
<APPFEE>
|
56
|
+
<N>$.00</N>
|
57
|
+
</APPFEE>
|
58
|
+
<EMT_NAME>
|
59
|
+
<N></N>
|
60
|
+
</EMT_NAME>
|
61
|
+
<EMT_PHONE>
|
62
|
+
<N></N>
|
63
|
+
</EMT_PHONE>
|
64
|
+
<UTILBILLLINK>
|
65
|
+
<N>Utility Billing</N>
|
66
|
+
</UTILBILLLINK>
|
67
|
+
<PREVNAMEID></PREVNAMEID>
|
68
|
+
<NAME.BIRTHDAY>
|
69
|
+
<N>3/27/1963</N>
|
70
|
+
</NAME.BIRTHDAY>
|
71
|
+
<SSN>
|
72
|
+
<N>999999992</N>
|
73
|
+
</SSN>
|
74
|
+
<PROSPECT.MNLYINC>0<N>4000</N></PROSPECT.MNLYINC>
|
75
|
+
<NAMEGROUP></NAMEGROUP>
|
76
|
+
<TYPE>A</TYPE>
|
77
|
+
<NAMEID></NAMEID>
|
78
|
+
<RMPROPID>0115</RMPROPID>
|
79
|
+
<EMP_COMPANY>
|
80
|
+
<N></N>
|
81
|
+
</EMP_COMPANY>
|
82
|
+
<EMP_JOBTITLE>
|
83
|
+
<N></N>
|
84
|
+
</EMP_JOBTITLE>
|
85
|
+
<EMP_JOBYRS>
|
86
|
+
<N></N>
|
87
|
+
</EMP_JOBYRS>
|
88
|
+
<EMP_PHONE>4085551231</EMP_PHONE>
|
89
|
+
<FIRSTNAME>William</FIRSTNAME>
|
90
|
+
<LASTNAME>Brewer</LASTNAME>
|
91
|
+
<PROSPECT.APPLDATE>3/11/2014</PROSPECT.APPLDATE>
|
92
|
+
<PROSPECT.OCCDATE>4/12/2015</PROSPECT.OCCDATE>
|
93
|
+
<NAME.MVIREASN></NAME.MVIREASN>
|
94
|
+
<PROSPECT.CURRRENT>0.00</PROSPECT.CURRRENT>
|
95
|
+
<PROSPECT.PROPOSEDRENT>.00</PROSPECT.PROPOSEDRENT>
|
96
|
+
<PROSPECT.RMRENTID>41</PROSPECT.RMRENTID>
|
97
|
+
<NOSSN>N</NOSSN>
|
98
|
+
<NAME.LICENSE>
|
99
|
+
<N>B123456789</N>
|
100
|
+
</NAME.LICENSE>
|
101
|
+
<APPCODE>APP</APPCODE>
|
102
|
+
<NAME.RESPROPID>0115</NAME.RESPROPID>
|
103
|
+
<CHKOPTOUT></CHKOPTOUT>
|
104
|
+
<NAME.OCCUPATION></NAME.OCCUPATION>
|
105
|
+
<MRIX_49_URL>
|
106
|
+
<N>~LINK=LOADMODALPAGE{VEHICLE,WEB_RMSHR,,&MENUNAME=WEB_RMHOME&MENUID=MRI_69&INHERITMENU=Y&WHERE=VEHICLE.NAMEID='URLSAFE{CLNTVAL{NAMEID}}'&RETURNCOMMAND=C&PASSED_NAMEID=URLSAFE{CLNTVAL{NAMEID}}}~EXPR=</N>
|
107
|
+
</MRIX_49_URL>
|
108
|
+
<MRIX_51_URL>
|
109
|
+
<N>~LINK=LOADMODALPAGE{APCRED,WEB_RMLEAS,,&MENUNAME=WEB_RMHOME&MENUID=MRI_69&INHERITMENU=Y&WHERE=NAME.NAMEID='URLSAFE{CLNTVAL{NAMEID}}'&RETURNCOMMAND=C&PASSED_NAMEID=URLSAFE{CLNTVAL{NAMEID}}}~EXPR=</N>
|
110
|
+
</MRIX_51_URL>
|
111
|
+
<UTILBILLLINK_URL>
|
112
|
+
<N>~LINK=LOADMODALPAGE{UTILBILL,WEB_RMLEAS,,&MENUNAME=WEB_RMHOME&MENUID=MRI_69&INHERITMENU=Y&NAMEGROUP=URLSAFE{CLNTVAL{NAMEID}}&RMPROPID=URLSAFE{CLNTVAL{RMPROPID}}}~EXPR=</N>
|
113
|
+
</UTILBILLLINK_URL>
|
114
|
+
<NAME.LASTDATE>4/12/2015 7:43:34 AM</NAME.LASTDATE>
|
115
|
+
<NAME.USERID></NAME.USERID>
|
116
|
+
<NAME.WHO>SS</NAME.WHO>
|
117
|
+
<NAME.QUALIFY>N</NAME.QUALIFY>
|
118
|
+
<NAME.PREVRESIDENCE>R</NAME.PREVRESIDENCE>
|
119
|
+
<NAME.INCOME>@@</NAME.INCOME>
|
120
|
+
<NAME.GUARANTOR>N</NAME.GUARANTOR>
|
121
|
+
<NAME.LOCATION>C</NAME.LOCATION>
|
122
|
+
<NAME.MARRIED>N</NAME.MARRIED>
|
123
|
+
<NAME.USIZE>00</NAME.USIZE>
|
124
|
+
<NAME.BACKGRNDSTATUS>A</NAME.BACKGRNDSTATUS>
|
125
|
+
<NAME.WEBNOCHECKS>N</NAME.WEBNOCHECKS>
|
126
|
+
<NAME.AUTOSPREAD>N</NAME.AUTOSPREAD>
|
127
|
+
</FORM>
|
128
|
+
<GRIDS/>
|
129
|
+
</TABLEDATA>
|
@@ -0,0 +1 @@
|
|
1
|
+
REQUESTTYPE=SAVE&TABLE=undefined&GROUP=WEB_RMLEAS&PAGE=APPLY&ID=MRI_1&CMD=%3C%3Fxml%20version%3D%221.0%22%3F%3E%0D%0A%3CViewCommand%3E%3CGROUP%3EWEB_RMLEAS%3C%2FGROUP%3E%3CPAGE%3EAPPLY%3C%2FPAGE%3E%3CCOMMAND%3ESAVE%3C%2FCOMMAND%3E%3CPARMS%3E~GROUP%3DWEB_RMLEAS~MODAL%3DY~MENUNAME%3DWEB_RMHOME~MENUID%3DMRI_69~INHERITMENU%3DY~WHERE%3DNAME.NAMEID%3D''~RMPROPID%3D0115~NAMEGROUP%3D~NAME.RESPROPID%3D0115~PATH%3DC%3A%5CProgram%20Files%20(x86)%5CMriWeb%5C~URL%3D%2Fmripage.asp~%3C%2FPARMS%3E%3CCURRENTKEY%3E~NAMEID%3D~%3C%2FCURRENTKEY%3E%3CCURRENTORDERFLDS%3E~NAMEID%3D''~%3C%2FCURRENTORDERFLDS%3E%3CORDERBY%3E%3C%2FORDERBY%3E%3CWHERE%3ENAME.NAMEID%3D''%3C%2FWHERE%3E%3CUSERQRY%3E%3C%2FUSERQRY%3E%3CGROUP%3EWEB_RMLEAS%3C%2FGROUP%3E%3CMENUNAME%3EWEB_RMHOME%3C%2FMENUNAME%3E%3CMENUID%3EMRI_69%3C%2FMENUID%3E%3CPARENTMENUNAME%3E%3C%2FPARENTMENUNAME%3E%3CPARENTMENUID%3E%3C%2FPARENTMENUID%3E%3CFILTERID%3E%3C%2FFILTERID%3E%3CFORM%3EAPPLY%3C%2FFORM%3E%3CCMDBTNS%3E%3CBTNSAVE%3ECLNTCMD%7BSAVE%2CCLOSE%2CRETURN%7BCLNTCMD%7BRECALC%7D%7D%7D%3C%2FBTNSAVE%3E%3CBTNCANCEL1%3ECLNTCMD%7BCANCELCLOSE%7D%3C%2FBTNCANCEL1%3E%3C%2FCMDBTNS%3E%3CHIDE%3E%3CUTILBILLLINK%3EHIDE%3C%2FUTILBILLLINK%3E%3CCHKOPTOUT%3EHIDE%3C%2FCHKOPTOUT%3E%3CL_CHKOPTOUT%3EHIDE%3C%2FL_CHKOPTOUT%3E%3C%2FHIDE%3E%3CUPDATEABLE%3EY%3C%2FUPDATEABLE%3E%3CABANDON%3E%3C%2FABANDON%3E%3CDELETECOOKIES%3ECOOKIE_7%3B%3C%2FDELETECOOKIES%3E%3CCLIENTEXPR%3E%0D%0A%20%20%3C%2FCLIENTEXPR%3E%3CBASECLIENTEXPR%3E%0D%0A%20%20%3C%2FBASECLIENTEXPR%3E%3CHELPPAGE%3ERM%5CRM.htm%3C%2FHELPPAGE%3E%3CPATH%3EC%3A%5CProgram%20Files%20(x86)%5CMriWeb%5C%3C%2FPATH%3E%3CURL%3E%2Fmripage.asp%3C%2FURL%3E%3CCOMMENT%3E%0D%0A27837.5%3A%20Start%20GetWebHtmlAndData%0D%0A27837.7%20%20%20%20%20%200%20elapsed%20for%20%20%20%20%20BuildMenu%0D%0A27837.72%20%20%20%20%20%200.0156%20elapsed%20for%20%20%20Build%20HTML%0D%0A27837.72%20%20%20%20%20%200%20elapsed%20for%20CmdXml%20to%20Svr%0D%0A27837.73%20%20%20%20%20%200%20elapsed%20for%20cleargroup%0D%0A27837.73%20%20%20%20%20%200%20elapsed%20for%20GetData%201%0D%0A27837.75%20%20%20%20%20%200.0176%20elapsed%20for%20BaseQry%20SQL%0D%0A27837.77%20%20%20%20%20%200.0137%20elapsed%20for%20BaseQry%20Fetch%0D%0A27837.77%20%20%20%20%20%200.0312%20elapsed%20for%20ExecuteQuery%20total%0D%0A27837.78%20%20%20%20%20%200%20elapsed%20for%20Build%20DataXml%20(0%20Rows)%0D%0A27837.78%20%20%20%20%20%200.0469%20elapsed%20for%20GetData%0D%0A%20%20Evaluate%20Count%3A%2021%0D%0A%20%20SQL%20Time%3A%200.3398438%3C%2FCOMMENT%3E%3CAPPLID%3E%3C%2FAPPLID%3E%3C%2FViewCommand%3E%0D%0A&DATA=%3C%3Fxml%20version%3D%221.0%22%3F%3E%0D%0A%3CTABLEDATA%3E%3CFORM%3E%3CPRE_ADDRLEN%3E%3C%2FPRE_ADDRLEN%3E%3CCUR_ADDRLEN%3E%3C%2FCUR_ADDRLEN%3E%3CMRIX_54%3E%3CN%3E%3A%3A%20Application%20Details%20for%20William%20Brewer%3C%2FN%3E%3C%2FMRIX_54%3E%3CPRE_ADDRESS2%3E%3CN%3E%3C%2FN%3E%3C%2FPRE_ADDRESS2%3E%3CPRE_CITY%3E%3CN%3E%3C%2FN%3E%3C%2FPRE_CITY%3E%3CPRE_STATE%3E%3CN%3E%3C%2FN%3E%3C%2FPRE_STATE%3E%3CPRE_ZIP%3E%3CN%3E%3C%2FN%3E%3C%2FPRE_ZIP%3E%3CEMP_ADDRESS1%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_ADDRESS1%3E%3CEMP_CITY%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_CITY%3E%3CEMP_STATE%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_STATE%3E%3CEMP_ZIP%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_ZIP%3E%3CEMP_ADDRESS2%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_ADDRESS2%3E%3CGET_ADDR%3E%3C%2FGET_ADDR%3E%3CPRE_ADDRESS%3E%3CN%3E%3C%2FN%3E%3C%2FPRE_ADDRESS%3E%3CCUR_ADDRESS2%3E%3CN%3E%3C%2FN%3E%3C%2FCUR_ADDRESS2%3E%3CCUR_CITY%3E%3CN%3EMountain%20View%3C%2FN%3E%3C%2FCUR_CITY%3E%3CCUR_STATE%3E%3CN%3ECA%3C%2FN%3E%3C%2FCUR_STATE%3E%3CCUR_ZIP%3E%3CN%3E94040%3C%2FN%3E%3C%2FCUR_ZIP%3E%3CCUR_ADDRESS%3E%3CN%3E123%20Main%20Str.%3C%2FN%3E%3C%2FCUR_ADDRESS%3E%3CAPPFEE%3E%3CN%3E%24.00%3C%2FN%3E%3C%2FAPPFEE%3E%3CEMT_NAME%3E%3CN%3E%3C%2FN%3E%3C%2FEMT_NAME%3E%3CEMT_PHONE%3E%3CN%3E%3C%2FN%3E%3C%2FEMT_PHONE%3E%3CUTILBILLLINK%3E%3CN%3EUtility%20Billing%3C%2FN%3E%3C%2FUTILBILLLINK%3E%3CPREVNAMEID%3E%3C%2FPREVNAMEID%3E%3CNAME.BIRTHDAY%3E%3CN%3E3%2F27%2F1963%3C%2FN%3E%3C%2FNAME.BIRTHDAY%3E%3CSSN%3E%3CN%3E999999992%3C%2FN%3E%3C%2FSSN%3E%3CPROSPECT.MNLYINC%3E0%3CN%3E4000%3C%2FN%3E%3C%2FPROSPECT.MNLYINC%3E%3CNAMEGROUP%3E%3C%2FNAMEGROUP%3E%3CTYPE%3EA%3C%2FTYPE%3E%3CNAMEID%3E%3C%2FNAMEID%3E%3CRMPROPID%3E0115%3C%2FRMPROPID%3E%3CEMP_COMPANY%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_COMPANY%3E%3CEMP_JOBTITLE%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_JOBTITLE%3E%3CEMP_JOBYRS%3E%3CN%3E%3C%2FN%3E%3C%2FEMP_JOBYRS%3E%3CEMP_PHONE%3E4085551231%3C%2FEMP_PHONE%3E%3CFIRSTNAME%3EWilliam%3C%2FFIRSTNAME%3E%3CLASTNAME%3EBrewer%3C%2FLASTNAME%3E%3CPROSPECT.APPLDATE%3E3%2F11%2F2014%3C%2FPROSPECT.APPLDATE%3E%3CPROSPECT.OCCDATE%3E4%2F12%2F2015%3C%2FPROSPECT.OCCDATE%3E%3CNAME.MVIREASN%3E%3C%2FNAME.MVIREASN%3E%3CPROSPECT.CURRRENT%3E0.00%3C%2FPROSPECT.CURRRENT%3E%3CPROSPECT.PROPOSEDRENT%3E.00%3C%2FPROSPECT.PROPOSEDRENT%3E%3CPROSPECT.RMRENTID%3E41%3C%2FPROSPECT.RMRENTID%3E%3CNOSSN%3EN%3C%2FNOSSN%3E%3CNAME.LICENSE%3E%3CN%3EB123456789%3C%2FN%3E%3C%2FNAME.LICENSE%3E%3CAPPCODE%3EAPP%3C%2FAPPCODE%3E%3CNAME.RESPROPID%3E0115%3C%2FNAME.RESPROPID%3E%3CCHKOPTOUT%3E%3C%2FCHKOPTOUT%3E%3CNAME.OCCUPATION%3E%3C%2FNAME.OCCUPATION%3E%3CMRIX_49_URL%3E%3CN%3E~LINK%3DLOADMODALPAGE%7BVEHICLE%2CWEB_RMSHR%2C%2C%26amp%3BMENUNAME%3DWEB_RMHOME%26amp%3BMENUID%3DMRI_69%26amp%3BINHERITMENU%3DY%26amp%3BWHERE%3DVEHICLE.NAMEID%3D'URLSAFE%7BCLNTVAL%7BNAMEID%7D%7D'%26amp%3BRETURNCOMMAND%3DC%26amp%3BPASSED_NAMEID%3DURLSAFE%7BCLNTVAL%7BNAMEID%7D%7D%7D~EXPR%3D%3C%2FN%3E%3C%2FMRIX_49_URL%3E%3CMRIX_51_URL%3E%3CN%3E~LINK%3DLOADMODALPAGE%7BAPCRED%2CWEB_RMLEAS%2C%2C%26amp%3BMENUNAME%3DWEB_RMHOME%26amp%3BMENUID%3DMRI_69%26amp%3BINHERITMENU%3DY%26amp%3BWHERE%3DNAME.NAMEID%3D'URLSAFE%7BCLNTVAL%7BNAMEID%7D%7D'%26amp%3BRETURNCOMMAND%3DC%26amp%3BPASSED_NAMEID%3DURLSAFE%7BCLNTVAL%7BNAMEID%7D%7D%7D~EXPR%3D%3C%2FN%3E%3C%2FMRIX_51_URL%3E%3CUTILBILLLINK_URL%3E%3CN%3E~LINK%3DLOADMODALPAGE%7BUTILBILL%2CWEB_RMLEAS%2C%2C%26amp%3BMENUNAME%3DWEB_RMHOME%26amp%3BMENUID%3DMRI_69%26amp%3BINHERITMENU%3DY%26amp%3BNAMEGROUP%3DURLSAFE%7BCLNTVAL%7BNAMEID%7D%7D%26amp%3BRMPROPID%3DURLSAFE%7BCLNTVAL%7BRMPROPID%7D%7D%7D~EXPR%3D%3C%2FN%3E%3C%2FUTILBILLLINK_URL%3E%3CNAME.LASTDATE%3E4%2F12%2F2015%207%3A43%3A34%20AM%3C%2FNAME.LASTDATE%3E%3CNAME.USERID%3E%3C%2FNAME.USERID%3E%3CNAME.WHO%3ESS%3C%2FNAME.WHO%3E%3CNAME.QUALIFY%3EN%3C%2FNAME.QUALIFY%3E%3CNAME.PREVRESIDENCE%3ER%3C%2FNAME.PREVRESIDENCE%3E%3CNAME.INCOME%3E%40%40%3C%2FNAME.INCOME%3E%3CNAME.GUARANTOR%3EN%3C%2FNAME.GUARANTOR%3E%3CNAME.LOCATION%3EC%3C%2FNAME.LOCATION%3E%3CNAME.MARRIED%3EN%3C%2FNAME.MARRIED%3E%3CNAME.USIZE%3E00%3C%2FNAME.USIZE%3E%3CNAME.BACKGRNDSTATUS%3EA%3C%2FNAME.BACKGRNDSTATUS%3E%3CNAME.WEBNOCHECKS%3EN%3C%2FNAME.WEBNOCHECKS%3E%3CNAME.AUTOSPREAD%3EN%3C%2FNAME.AUTOSPREAD%3E%3C%2FFORM%3E%3CGRIDS%3E%3C%2FGRIDS%3E%3C%2FTABLEDATA%3E%0D%0A
|
data/lib/paramedic/encoder.rb
CHANGED
@@ -29,11 +29,11 @@ module Paramedic
|
|
29
29
|
',' => '%2C',
|
30
30
|
';' => '%3B',
|
31
31
|
'#' => '%23',
|
32
|
-
'&' => '%
|
32
|
+
'&' => '%26',
|
33
33
|
'@' => '%40',
|
34
34
|
#'%' => '%25', # Surprisingly, this one doesn't appear to be replaced. We'll need to confirm.
|
35
35
|
'+' => '%2B',
|
36
|
-
'$' => '%
|
36
|
+
'$' => '%24',
|
37
37
|
'<' => '%3C',
|
38
38
|
'>' => '%3E',
|
39
39
|
#'~' => '%25', # Tilde too.
|
data/lib/paramedic/version.rb
CHANGED
@@ -9,21 +9,34 @@ module Paramedic
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def to_xml
|
12
|
-
|
12
|
+
strip_tag_spacing(
|
13
|
+
escape_specified_tags(
|
14
|
+
Nokogiri::XML(remove_naked_ampersands(xml), &:noblanks)
|
15
|
+
)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def remove_naked_ampersands(text)
|
22
|
+
text.gsub('&', '&')
|
23
|
+
end
|
24
|
+
|
25
|
+
def escape_specified_tags(xml_document)
|
13
26
|
escape_tags.each do |escape_tag|
|
14
27
|
xml_document.css(escape_tag).each do |element|
|
15
28
|
strip_tag_spacing(element)
|
16
29
|
element.inner_html = CGI.escape_html(element.inner_html)
|
17
30
|
end
|
18
31
|
end
|
19
|
-
strip_tag_spacing(xml_document)
|
20
|
-
end
|
21
32
|
|
22
|
-
|
33
|
+
xml_document
|
34
|
+
end
|
23
35
|
|
24
|
-
def strip_tag_spacing(
|
25
|
-
|
26
|
-
save_with: Nokogiri::XML::Node::SaveOptions::
|
36
|
+
def strip_tag_spacing(xml_document)
|
37
|
+
xml_document.to_xml(
|
38
|
+
save_with: Nokogiri::XML::Node::SaveOptions::AS_XML |
|
39
|
+
Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS
|
27
40
|
)
|
28
41
|
end
|
29
42
|
|
data/paramedic.gemspec
CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'nokogiri'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
24
|
-
spec.add_development_dependency '
|
24
|
+
spec.add_development_dependency 'cucumber'
|
25
25
|
spec.add_development_dependency 'guard'
|
26
26
|
spec.add_development_dependency 'guard-rspec'
|
27
27
|
spec.add_development_dependency 'pry'
|
28
|
+
spec.add_development_dependency 'rake'
|
28
29
|
spec.add_development_dependency 'rspec'
|
29
30
|
end
|
@@ -5,6 +5,39 @@ module Paramedic
|
|
5
5
|
describe '#to_s' do
|
6
6
|
subject { described_class.new(args).to_s }
|
7
7
|
|
8
|
+
context 'with single characters' do
|
9
|
+
let(:args) {
|
10
|
+
{
|
11
|
+
'char' => char
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
context 'with a $' do
|
17
|
+
let(:char) { '$' }
|
18
|
+
|
19
|
+
it 'correctly encodes the character' do
|
20
|
+
expect(subject).to eq 'char=%24'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with a %' do
|
25
|
+
let(:char) { '%' }
|
26
|
+
|
27
|
+
it 'correctly encodes the character' do
|
28
|
+
expect(subject).to eq 'char=%25'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with a &' do
|
33
|
+
let(:char) { '&' }
|
34
|
+
|
35
|
+
it 'correctly encodes the character' do
|
36
|
+
expect(subject).to eq 'char=%26'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
8
41
|
context 'with a single parameter' do
|
9
42
|
let(:args) {
|
10
43
|
{
|
@@ -8,8 +8,54 @@ module Paramedic
|
|
8
8
|
context 'with no escape tags specified' do
|
9
9
|
let(:escape_tags) { [] }
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
context 'with a space between tags' do
|
12
|
+
let(:xml) {
|
13
|
+
<<-end_of_xml
|
14
|
+
<root>
|
15
|
+
<a>value1</a>
|
16
|
+
<b>value2</b>
|
17
|
+
</root>
|
18
|
+
end_of_xml
|
19
|
+
}
|
20
|
+
|
21
|
+
it 'strips the spaces between tags' do
|
22
|
+
expect(subject).to eq "<?xml version=\"1.0\"?>\n<root><a>value1</a><b>value2</b></root>\n"
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has a newline after the declaration' do
|
26
|
+
expect(subject).to include("<?xml version=\"1.0\"?>\n")
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'has a newline at the end of the document' do
|
30
|
+
expect(subject[-1]).to eq "\n"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when there are ampersands within the content' do
|
35
|
+
let(:expected_result) { <<-end_of_xml
|
36
|
+
<?xml version="1.0"?>
|
37
|
+
<root><MRIX_49_URL><N>~LINK=LOADMODALPAGE{VEHICLE,WEB_RMSHR,,&MENUNAME=WEB_RMHOME&MENUID=MRI_69&INHERITMENU=Y&WHERE=VEHICLE.NAMEID='URLSAFE{CLNTVAL{NAMEID}}'&RETURNCOMMAND=C&PASSED_NAMEID=URLSAFE{CLNTVAL{NAMEID}}}~EXPR=</N></MRIX_49_URL></root>
|
38
|
+
end_of_xml
|
39
|
+
}
|
40
|
+
|
41
|
+
let(:xml) {
|
42
|
+
<<-end_of_xml
|
43
|
+
<root>
|
44
|
+
<MRIX_49_URL>
|
45
|
+
<N>~LINK=LOADMODALPAGE{VEHICLE,WEB_RMSHR,,&MENUNAME=WEB_RMHOME&MENUID=MRI_69&INHERITMENU=Y&WHERE=VEHICLE.NAMEID='URLSAFE{CLNTVAL{NAMEID}}'&RETURNCOMMAND=C&PASSED_NAMEID=URLSAFE{CLNTVAL{NAMEID}}}~EXPR=</N>
|
46
|
+
</MRIX_49_URL>
|
47
|
+
</root>
|
48
|
+
end_of_xml
|
49
|
+
}
|
50
|
+
|
51
|
+
it 'incorporates the ampersands' do
|
52
|
+
expect(subject).to eq expected_result
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'with complex xml' do
|
57
|
+
let(:xml) {
|
58
|
+
<<-end_of_xml
|
13
59
|
<?xml version="1.0"?>
|
14
60
|
<ViewCommand><GROUP>WEB_RMLEAS</GROUP><PAGE>OCCP</PAGE><COMMAND>SAVE</COMMAND><PARMS>~GROUP=WEB_RMLEAS~MENU=NONE~WHERE=NAME.NAMEID='{{id}}'~INFRAME=Y~PARENTMENUNAME=WEB_RMHOME~PARENTMENUID=MRI_69~PARENTSAVE=Y~PATH=C:\\Program Files (x86)\\MriWeb\\~URL=/mripage.asp~</PARMS>
|
15
61
|
<CURRENTKEY>~NAMEID={{id}}~</CURRENTKEY>
|
@@ -64,29 +110,51 @@ module Paramedic
|
|
64
110
|
</COMMENT>
|
65
111
|
<APPLID></APPLID>
|
66
112
|
</ViewCommand>
|
67
|
-
|
68
|
-
|
113
|
+
end_of_xml
|
114
|
+
}
|
69
115
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
it 'does not collapse elements' do
|
75
|
-
expect(subject.scan(/<USERQRY><\/USERQRY>/).count).to be 1
|
116
|
+
it 'does not collapse elements' do
|
117
|
+
expect(subject.scan(/<USERQRY><\/USERQRY>/).count).to be 1
|
118
|
+
end
|
76
119
|
end
|
77
120
|
end
|
78
121
|
|
79
122
|
context 'with double encode tags specified' do
|
80
123
|
let(:escape_tags) { ['COMMENT'] }
|
81
124
|
|
82
|
-
|
125
|
+
context 'when the encode tag content is text' do
|
126
|
+
let(:expected_result) { <<-end_of_xml
|
127
|
+
<?xml version="1.0"?>
|
128
|
+
<ViewCommand><COMMENT>\n a\nb\n </COMMENT></ViewCommand>
|
129
|
+
end_of_xml
|
130
|
+
}
|
131
|
+
|
132
|
+
let(:xml) {
|
133
|
+
<<-end_of_xml
|
134
|
+
<?xml version="1.0"?>
|
135
|
+
<ViewCommand>
|
136
|
+
<COMMENT>
|
137
|
+
a
|
138
|
+
b
|
139
|
+
</COMMENT>
|
140
|
+
</ViewCommand>
|
141
|
+
end_of_xml
|
142
|
+
}
|
143
|
+
|
144
|
+
it 'html escapes specified elements' do
|
145
|
+
expect(subject).to eq expected_result
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'when the encode tag content is markup' do
|
150
|
+
let(:expected_result) { <<-end_of_xml
|
83
151
|
<?xml version="1.0"?>
|
84
152
|
<ViewCommand><COMMENT><html><body><p>None</p></body></html></COMMENT></ViewCommand>
|
85
|
-
end_of_xml
|
86
|
-
|
153
|
+
end_of_xml
|
154
|
+
}
|
87
155
|
|
88
|
-
|
89
|
-
|
156
|
+
let(:xml) {
|
157
|
+
<<-end_of_xml
|
90
158
|
<?xml version="1.0"?>
|
91
159
|
<ViewCommand>
|
92
160
|
<COMMENT>
|
@@ -97,14 +165,16 @@ end_of_xml
|
|
97
165
|
</html>
|
98
166
|
</COMMENT>
|
99
167
|
</ViewCommand>
|
100
|
-
|
101
|
-
|
168
|
+
end_of_xml
|
169
|
+
}
|
102
170
|
|
103
|
-
|
104
|
-
|
105
|
-
|
171
|
+
it 'html escapes specified elements' do
|
172
|
+
expect(subject).to eq expected_result
|
173
|
+
end
|
106
174
|
end
|
107
175
|
end
|
108
176
|
end
|
109
177
|
end
|
110
178
|
end
|
179
|
+
|
180
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paramedic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Jaber
|
@@ -9,104 +9,118 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-04-
|
12
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '1.6'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '1.6'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: cucumber
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: guard
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: guard-rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - '>='
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: pry
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rake
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
89
103
|
- !ruby/object:Gem::Version
|
90
104
|
version: '0'
|
91
105
|
type: :development
|
92
106
|
prerelease: false
|
93
107
|
version_requirements: !ruby/object:Gem::Requirement
|
94
108
|
requirements:
|
95
|
-
- -
|
109
|
+
- - '>='
|
96
110
|
- !ruby/object:Gem::Version
|
97
111
|
version: '0'
|
98
112
|
- !ruby/object:Gem::Dependency
|
99
113
|
name: rspec
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
101
115
|
requirements:
|
102
|
-
- -
|
116
|
+
- - '>='
|
103
117
|
- !ruby/object:Gem::Version
|
104
118
|
version: '0'
|
105
119
|
type: :development
|
106
120
|
prerelease: false
|
107
121
|
version_requirements: !ruby/object:Gem::Requirement
|
108
122
|
requirements:
|
109
|
-
- -
|
123
|
+
- - '>='
|
110
124
|
- !ruby/object:Gem::Version
|
111
125
|
version: '0'
|
112
126
|
description: Parameter handler
|
@@ -117,13 +131,19 @@ executables: []
|
|
117
131
|
extensions: []
|
118
132
|
extra_rdoc_files: []
|
119
133
|
files:
|
120
|
-
-
|
121
|
-
-
|
134
|
+
- .gitignore
|
135
|
+
- .rspec
|
122
136
|
- Gemfile
|
123
137
|
- Guardfile
|
124
138
|
- LICENSE.txt
|
125
139
|
- README.md
|
126
140
|
- Rakefile
|
141
|
+
- features/encode_a_request.feature
|
142
|
+
- features/step_definitions/steps.rb
|
143
|
+
- features/support/command.xml
|
144
|
+
- features/support/data.xml
|
145
|
+
- features/support/env.rb
|
146
|
+
- features/support/expected_output.txt
|
127
147
|
- lib/paramedic.rb
|
128
148
|
- lib/paramedic/encoder.rb
|
129
149
|
- lib/paramedic/version.rb
|
@@ -142,21 +162,27 @@ require_paths:
|
|
142
162
|
- lib
|
143
163
|
required_ruby_version: !ruby/object:Gem::Requirement
|
144
164
|
requirements:
|
145
|
-
- -
|
165
|
+
- - '>='
|
146
166
|
- !ruby/object:Gem::Version
|
147
167
|
version: '0'
|
148
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
169
|
requirements:
|
150
|
-
- -
|
170
|
+
- - '>='
|
151
171
|
- !ruby/object:Gem::Version
|
152
172
|
version: '0'
|
153
173
|
requirements: []
|
154
174
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.
|
175
|
+
rubygems_version: 2.0.14
|
156
176
|
signing_key:
|
157
177
|
specification_version: 4
|
158
178
|
summary: Parameter handler
|
159
179
|
test_files:
|
180
|
+
- features/encode_a_request.feature
|
181
|
+
- features/step_definitions/steps.rb
|
182
|
+
- features/support/command.xml
|
183
|
+
- features/support/data.xml
|
184
|
+
- features/support/env.rb
|
185
|
+
- features/support/expected_output.txt
|
160
186
|
- spec/paramedic/encoder_spec.rb
|
161
187
|
- spec/paramedic/xml_masseuse_spec.rb
|
162
188
|
- spec/spec_helper.rb
|