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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b32f1eee7efca73e34710b9180b5f1358b8ae1c6
4
- data.tar.gz: 0c85f46173c155550830617e7acbe9bb274e62fb
3
+ metadata.gz: 7c6c157ea0f59610e9e34e86d1ab5dcdb2ca941a
4
+ data.tar.gz: 8e36059c4113539ac839eab25bede83732c53f11
5
5
  SHA512:
6
- metadata.gz: 5b06ab3be3ad932d756530d8d7cdeef49d3f431043847a10b8976197606de7260606bc53e4043ea2b05d6d601edaa0a67eed753b4a45a99ac595d864ff7ef72f
7
- data.tar.gz: af92d5230619f03b7949a58bbd85ead871d5f3b995531a5c980a9a987f44812dda1089800dd2f0e67a665267169b1c01ed5434d6d1ed08436a63aeb2d4dc713e
6
+ metadata.gz: f98838ba9b8f8e36b04b708477a2881dd01bbc82557a844922084aca8a5ade15fdc1b56bb7b0d2a0c5c0a84caad842a92a90b529816f7b48a1e17407198e5171
7
+ data.tar.gz: e3a8ab3349d4c499864846bb57354a64b235a3847134adce93be26eaebe1cd7d73c672d14f6db0f6d5d27f6af035f37ef59ab4d3f1a7609f94f48063cf50acd9
@@ -43,6 +43,10 @@ module FormStalker
43
43
 
44
44
  super(@parser.parse_attributes)
45
45
  end
46
+
47
+ def attributes_before_type_cast
48
+ parser.attributes_before_type_cast
49
+ end
46
50
  end
47
51
  end
48
52
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module FormStalker
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
data/lib/form_stalker.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'form_stalker/version'
2
+ require 'form_stalker/helpers'
2
3
  require 'form_stalker/client'
3
4
  require 'form_stalker/config'
4
5
 
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.1
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-01 00:00:00.000000000 Z
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