humanizer 2.6.4 → 2.7.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 39cae7e98d9aeae247f774ada51fdebbf6e09e22
4
- data.tar.gz: ddf26702c8247fc659c6c7a77fe1b220d63692ba
2
+ SHA256:
3
+ metadata.gz: df124f5def849dfe6dcfa45fc2916568e2d05a7f7250c499136cc1aa8fa27fcf
4
+ data.tar.gz: 00aded9be9984c9efd2ae3196841f27559e17b833f5fd8cd3b6de88473c451df
5
5
  SHA512:
6
- metadata.gz: 5a0bbcbe08c9f8ec9d567a01cc48af0e34c86519565a0347e6f66524de4f6d2c2d9066a895586187c9291074cd121ec0ee0083de96f599c668c92a9799aad3fb
7
- data.tar.gz: 05411bf9b0f79c32ac732b03c48558a0c58275acc4259daf033822e6be027945506046da78641fdcbb4f8d0b64c876a0f25fd2c1f53f4abf1e13430ab84a0145
6
+ metadata.gz: 06f1ebf7066bebe4c2abf355a8f4efb4cbf6cfc8dde621b55a59b35e5e6d037ff04cfd9b19988741755d95902be47bb7caa39c035ddf9e010e5cc92efa481cfd
7
+ data.tar.gz: 5089521d758905893cbd21a054d6b14e7247098e03d725b124801f77b12d37396541270d29aa9b7d49b8e4f0496d82e89b6aa01b1b34c1423f7c5bbd4a83ce51
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### Humanizer 2.7.1 (2024-12-19)
2
+
3
+ * Adds HumanizerHelper class for use cases when developers don't have a class they want to include Humanizer on(basic contact form for example)
4
+
1
5
  ### Humanizer 2.6.4 (2017-07-07)
2
6
 
3
7
  * Prevents NoMethodError when form posts non-existing question id
data/README.md CHANGED
@@ -46,6 +46,44 @@ end
46
46
 
47
47
  4. If you are using strong_parameters, remember to permit `:humanizer_answer` and `:humanizer_question_id`.
48
48
 
49
+ ## Usage without a model
50
+
51
+ Alternatively, you many use the built in HumanizerHelper class instead of using your own model (useful for something like a contact form if you don't have a model/class for this). Behavior is the same including `Humanizer` on a model, but all setters are available as optional arguments when initializing a HumanizerHelper instance.
52
+
53
+ 1. Example initialization code(controller):
54
+
55
+ ```ruby
56
+ @humanizer_helper = HumanizerHelper.new
57
+ ```
58
+
59
+ 2. Example rails form usage:
60
+
61
+ ```erb
62
+ <%= label_tag :humanizer_answer, @humanizer_helper.humanizer_question %>
63
+ <%= text_field_tag :humanizer_answer %>
64
+ <%= hidden_field_tag :humanizer_question_id, @humanizer_helper.humanizer_question_id %>
65
+ ```
66
+
67
+ 3. Example response handling:
68
+
69
+ ```ruby
70
+ humanizer_helper = HumanizerHelper.new(humanizer_answer: params[:humanizer_answer], humanizer_question_id: params[:humanizer_question_id])
71
+ if humanizer_helper.humanizer_correct_answer?
72
+ do_stuff
73
+ end
74
+ ```
75
+
76
+ ## Testing
77
+
78
+ A HumanizerHelper instance provides an additional `get_correct_humanizer_answer` method to make testing easier. Example:
79
+
80
+ ```ruby
81
+ question_id = find('#humanizer_question_id', visible: false).value #gets humanizer question id from example form above
82
+ humanizer_helper = HumanizerHelper.new(humanizer_question_id: question_id)
83
+ fill_in 'humanizer_answer', with: humanizer_helper.get_correct_humanizer_answer #fills in answer field from example above with the correct answer
84
+ ```
85
+
86
+
49
87
  ## Configuration
50
88
 
51
89
  Default translations can be found in config/locales/
@@ -102,6 +140,7 @@ Humanizer is licensed under the MIT License, for more details see the LICENSE fi
102
140
  * [seogrady](https://github.com/seogrady)
103
141
  * [yairgo](https://github.com/yairgo)
104
142
  * [woto](https://github.com/woto)
143
+ * [Calvin Delamere](https://github.com/elbartostrikesagain)
105
144
 
106
145
  ## CI Build Status
107
146
 
@@ -1,3 +1,3 @@
1
1
  module Humanizer
2
- VERSION = "2.6.4"
2
+ VERSION = "2.7.1"
3
3
  end
data/lib/humanizer.rb CHANGED
@@ -30,16 +30,15 @@ module Humanizer
30
30
  def humanizer_questions
31
31
  @humanizer_questions ||= begin
32
32
  questions = I18n.translate!("humanizer.questions")
33
- # Poor man's HashWithIndifferentAccess
33
+ # Create new mutable copies of the questions with indifferent access
34
34
  questions.map do |question|
35
- question.default_proc = proc do |h, k|
36
- case k
37
- when String then sym = k.to_sym; h[sym] if h.key?(sym)
38
- when Symbol then str = k.to_s; h[str] if h.key?(str)
39
- end
35
+ new_hash = {}
36
+ question.each do |k, v|
37
+ new_hash[k.to_s] = v # Store everything with string keys
38
+ new_hash[k.to_sym] = v # Store everything with symbol keys
40
39
  end
40
+ new_hash
41
41
  end
42
- questions
43
42
  end
44
43
  end
45
44
 
@@ -0,0 +1,17 @@
1
+ class HumanizerHelper
2
+ include ActiveModel::Validations
3
+ include Humanizer
4
+
5
+ def initialize(options={})
6
+ options[:humanizer_question_id] = options[:humanizer_question_id].to_i unless options[:humanizer_question_id].nil?
7
+ options.each do |k, v|
8
+ self.send("#{k}=", v)
9
+ end
10
+
11
+ humanizer_question_id
12
+ end
13
+
14
+ def get_correct_humanizer_answer
15
+ humanizer_answers_for_id(humanizer_question_id.to_i)[0]
16
+ end
17
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: humanizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.4
4
+ version: 2.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antti Akonniemi
8
8
  - Joao Carlos Cardoso
9
9
  - Matias Korhonen
10
10
  - Vesa Vänskä
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-07-07 00:00:00.000000000 Z
14
+ date: 2024-12-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -104,11 +104,12 @@ files:
104
104
  - lib/generators/templates/locales/zh-TW.yml
105
105
  - lib/humanizer.rb
106
106
  - lib/humanizer/version.rb
107
+ - lib/humanizer_helper.rb
107
108
  homepage: http://github.com/kiskolabs/humanizer
108
109
  licenses:
109
110
  - MIT
110
111
  metadata: {}
111
- post_install_message:
112
+ post_install_message:
112
113
  rdoc_options: []
113
114
  require_paths:
114
115
  - lib
@@ -123,9 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  - !ruby/object:Gem::Version
124
125
  version: 1.3.6
125
126
  requirements: []
126
- rubyforge_project: humanizer
127
- rubygems_version: 2.6.8
128
- signing_key:
127
+ rubygems_version: 3.5.16
128
+ signing_key:
129
129
  specification_version: 4
130
130
  summary: A really simple captcha solution
131
131
  test_files: []