form_stalker 1.0.1 → 1.0.2
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/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
|