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
         |