form_stalker 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/form_stalker/data/base.rb +4 -0
- data/lib/form_stalker/data/check_logic.rb +44 -0
- data/lib/form_stalker/data/form.rb +10 -0
- data/lib/form_stalker/data/form_fields_logic.rb +40 -0
- data/lib/form_stalker/helpers.rb +17 -0
- data/lib/form_stalker/version.rb +1 -1
- data/lib/form_stalker.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c6c157ea0f59610e9e34e86d1ab5dcdb2ca941a
|
4
|
+
data.tar.gz: 8e36059c4113539ac839eab25bede83732c53f11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f98838ba9b8f8e36b04b708477a2881dd01bbc82557a844922084aca8a5ade15fdc1b56bb7b0d2a0c5c0a84caad842a92a90b529816f7b48a1e17407198e5171
|
7
|
+
data.tar.gz: e3a8ab3349d4c499864846bb57354a64b235a3847134adce93be26eaebe1cd7d73c672d14f6db0f6d5d27f6af035f37ef59ab4d3f1a7609f94f48063cf50acd9
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'form_stalker/data/base'
|
2
|
+
|
3
|
+
module FormStalker
|
4
|
+
module Data
|
5
|
+
class CheckLogic < Base
|
6
|
+
schema field: :integer, target: :integer
|
7
|
+
|
8
|
+
def initialize(attributes)
|
9
|
+
if attributes.is_a? String
|
10
|
+
attributes = Helpers.json_to_hash "{#{js_to_json(attributes)}}"
|
11
|
+
end
|
12
|
+
|
13
|
+
super attributes
|
14
|
+
end
|
15
|
+
|
16
|
+
def parse_fields(fields)
|
17
|
+
fields.map(&:to_i)
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_checks(checks)
|
21
|
+
checks.map { |check| CheckLogic.new(check).attributes }
|
22
|
+
end
|
23
|
+
|
24
|
+
protected ####################### PROTECTED ##############################
|
25
|
+
|
26
|
+
def js_to_json(js_object)
|
27
|
+
js_object.split(',').map(&:strip).map do |js_string|
|
28
|
+
escape_js_to_json(js_string)
|
29
|
+
end.join(', ')
|
30
|
+
end
|
31
|
+
|
32
|
+
private ######################### PRIVATE ################################
|
33
|
+
|
34
|
+
def escape_js_to_json(js_string)
|
35
|
+
string = js_string.tr('"', '\"')
|
36
|
+
.tr("'", '"')
|
37
|
+
.gsub('{', '{"')
|
38
|
+
.gsub(':', '":')
|
39
|
+
|
40
|
+
"\"#{string}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'form_stalker/data/base'
|
2
|
+
require 'form_stalker/data/form_field'
|
3
|
+
require 'form_stalker/data/form_fields_logic'
|
2
4
|
|
3
5
|
module FormStalker
|
4
6
|
module Data
|
@@ -16,6 +18,14 @@ module FormStalker
|
|
16
18
|
last_submission_id: :integer,
|
17
19
|
last_submission_time: :datetime
|
18
20
|
|
21
|
+
attr_reader :logic
|
22
|
+
|
23
|
+
def parse_html(html)
|
24
|
+
@logic = FormFieldsLogic.new(html)
|
25
|
+
|
26
|
+
html
|
27
|
+
end
|
28
|
+
|
19
29
|
def parse_fields(fields_array)
|
20
30
|
(fields_array || []).map { |fields| FormField.new(fields) }
|
21
31
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'form_stalker/data/check_logic'
|
2
|
+
require 'form_stalker/data/base'
|
3
|
+
|
4
|
+
module FormStalker
|
5
|
+
module Data
|
6
|
+
class FormFieldsLogic < Base
|
7
|
+
def initialize(html)
|
8
|
+
super checks: extract_checks(html),
|
9
|
+
calc_field_ids: extract_calc_field_ids(html),
|
10
|
+
logic_field_ids: extract_logic_field_ids(html)
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse_calc_field_ids(value)
|
14
|
+
Helpers.string_to_array_of_integers(value)
|
15
|
+
end
|
16
|
+
|
17
|
+
def parse_logic_field_ids(value)
|
18
|
+
Helpers.string_to_array_of_integers(value)
|
19
|
+
end
|
20
|
+
|
21
|
+
def parse_checks(values)
|
22
|
+
values.map { |js_object| CheckLogic.new(js_object).attributes }
|
23
|
+
end
|
24
|
+
|
25
|
+
protected ####################### PROTECTED ##############################
|
26
|
+
|
27
|
+
def extract_checks(html)
|
28
|
+
Helpers.extract_from_regex(html, /.*checks.push\({(.*)}\)/i)
|
29
|
+
end
|
30
|
+
|
31
|
+
def extract_calc_field_ids(html)
|
32
|
+
Helpers.extract_from_regex(html, /.*calcFields.*=.*\[(.*)\]/i)[0]
|
33
|
+
end
|
34
|
+
|
35
|
+
def extract_logic_field_ids(html)
|
36
|
+
Helpers.extract_from_regex(html, /.*logicFields.*=.*\[(.*)\]/i)[0]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module FormStalker
|
2
|
+
module Helpers
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def json_to_hash(string)
|
6
|
+
JSON.parse(string)
|
7
|
+
end
|
8
|
+
|
9
|
+
def string_to_array_of_integers(string)
|
10
|
+
string.delete("'").delete('"').split(',').map(&:to_i)
|
11
|
+
end
|
12
|
+
|
13
|
+
def extract_from_regex(string, regex)
|
14
|
+
string.scan(regex).flatten
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/form_stalker/version.rb
CHANGED
data/lib/form_stalker.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: form_stalker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- StreetBees Dev Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vcr
|
@@ -134,9 +134,12 @@ files:
|
|
134
134
|
- lib/form_stalker/config.rb
|
135
135
|
- lib/form_stalker/connection.rb
|
136
136
|
- lib/form_stalker/data/base.rb
|
137
|
+
- lib/form_stalker/data/check_logic.rb
|
137
138
|
- lib/form_stalker/data/form.rb
|
138
139
|
- lib/form_stalker/data/form_field.rb
|
140
|
+
- lib/form_stalker/data/form_fields_logic.rb
|
139
141
|
- lib/form_stalker/data/parser.rb
|
142
|
+
- lib/form_stalker/helpers.rb
|
140
143
|
- lib/form_stalker/request.rb
|
141
144
|
- lib/form_stalker/response.rb
|
142
145
|
- lib/form_stalker/version.rb
|