hobo_fields 2.1.2 → 2.2.0
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/Gemfile +1 -0
- data/VERSION +1 -1
- data/lib/generators/hobo/migration/migration_generator.rb +1 -1
- data/lib/hobo_fields/extensions/active_record/attribute_methods.rb +4 -4
- data/lib/hobo_fields/model.rb +4 -2
- data/lib/hobo_fields/types/html_string.rb +0 -8
- data/test/migration_generator.rdoctest +2 -2
- data/test/rich_types.rdoctest +3 -27
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cb6f597b6b09d18cc9a657af73a95a6c1b110a9
|
4
|
+
data.tar.gz: 4adaa4fce5fb6546fbd44df4b521a72286acd66c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bb5b8f0f133084cddf90702eea6bae7d574cf98fcdfa39c19b5875d601c36d76467a3895bdee6b8dcbf7c5fe43faeaa1dc4015962b9c404e1c1157da1f8104b
|
7
|
+
data.tar.gz: 292b1aacb444a563a47d5d40c362749e057e3320e4d7b59d9e962a7960dbf5ce2ae708c8865ef1b549354404f081516b0bc81b420b57ac7b4ef3e3e68cfca209
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.0
|
@@ -91,7 +91,7 @@ module Hobo
|
|
91
91
|
private
|
92
92
|
|
93
93
|
def migrations_pending?
|
94
|
-
pending_migrations = ActiveRecord::Migrator.new(:up, 'db/migrate').pending_migrations
|
94
|
+
pending_migrations = ActiveRecord::Migrator.new(:up, ActiveRecord::Migrator.migrations('db/migrate')).pending_migrations
|
95
95
|
|
96
96
|
if pending_migrations.any?
|
97
97
|
say "You have #{pending_migrations.size} pending migration#{'s' if pending_migrations.size > 1}:"
|
@@ -1,9 +1,9 @@
|
|
1
1
|
ActiveRecord::Base.class_eval do
|
2
|
-
def
|
2
|
+
def _read_attribute_with_hobo(attr_name)
|
3
3
|
name = attr_name.to_s
|
4
4
|
if self.class.can_wrap_with_hobo_type?(name)
|
5
5
|
attr_name = attr_name.to_sym
|
6
|
-
val =
|
6
|
+
val = _read_attribute_without_hobo(name)
|
7
7
|
wrapper_type = self.class.attr_type(attr_name)
|
8
8
|
if HoboFields.can_wrap?(wrapper_type, val)
|
9
9
|
wrapper_type.new(val)
|
@@ -11,10 +11,10 @@ ActiveRecord::Base.class_eval do
|
|
11
11
|
val
|
12
12
|
end
|
13
13
|
else
|
14
|
-
|
14
|
+
_read_attribute_without_hobo(name)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
alias_method_chain :
|
17
|
+
alias_method_chain :_read_attribute, :hobo
|
18
18
|
|
19
19
|
class << self
|
20
20
|
|
data/lib/hobo_fields/model.rb
CHANGED
@@ -98,7 +98,7 @@ module HoboFields
|
|
98
98
|
index_options = {}
|
99
99
|
index_options[:name] = options.delete(:index) if options.has_key?(:index)
|
100
100
|
bt = belongs_to_without_field_declarations(name, *args, &block)
|
101
|
-
refl = reflections[name.
|
101
|
+
refl = reflections[name.to_s]
|
102
102
|
fkey = refl.foreign_key
|
103
103
|
declare_field(fkey.to_sym, :integer, column_options)
|
104
104
|
if refl.options[:polymorphic]
|
@@ -157,6 +157,7 @@ module HoboFields
|
|
157
157
|
validates_presence_of name if :required.in?(args)
|
158
158
|
validates_uniqueness_of name, :allow_nil => !:required.in?(args) if :unique.in?(args)
|
159
159
|
|
160
|
+
# Support for custom validations in Hobo Fields
|
160
161
|
type_class = HoboFields.to_class(type)
|
161
162
|
if type_class && type_class.public_method_defined?("validate")
|
162
163
|
self.validate do |record|
|
@@ -164,6 +165,7 @@ module HoboFields
|
|
164
165
|
record.errors.add(name, v) if v.is_a?(String)
|
165
166
|
end
|
166
167
|
end
|
168
|
+
|
167
169
|
end
|
168
170
|
|
169
171
|
def self.add_formatting_for_field(name, type, args)
|
@@ -209,7 +211,7 @@ module HoboFields
|
|
209
211
|
|
210
212
|
attr_types[name] or
|
211
213
|
|
212
|
-
if (refl = reflections[name.
|
214
|
+
if (refl = reflections[name.to_s])
|
213
215
|
if refl.macro.in?([:has_one, :belongs_to]) && !refl.options[:polymorphic]
|
214
216
|
refl.klass
|
215
217
|
else
|
@@ -1,15 +1,7 @@
|
|
1
1
|
module HoboFields
|
2
2
|
module Types
|
3
3
|
class HtmlString < RawHtmlString
|
4
|
-
|
5
|
-
include SanitizeHtml
|
6
|
-
|
7
|
-
def self.declared(model, name, options)
|
8
|
-
model.before_save { |record| record[name] = HoboFields::SanitizeHtml.sanitize(record[name]) }
|
9
|
-
end
|
10
|
-
|
11
4
|
HoboFields.register_type(:html, self)
|
12
5
|
end
|
13
|
-
|
14
6
|
end
|
15
7
|
end
|
@@ -166,7 +166,7 @@ Let's apply that change to the database
|
|
166
166
|
end
|
167
167
|
>> up, down = Generators::Hobo::Migration::Migrator.run
|
168
168
|
>> up
|
169
|
-
=> "change_column :adverts, :title, :text
|
169
|
+
=> "change_column :adverts, :title, :text"
|
170
170
|
>> down
|
171
171
|
=> "change_column :adverts, :title, :string"
|
172
172
|
|
@@ -184,7 +184,7 @@ Let's apply that change to the database
|
|
184
184
|
>> up.split(',').slice(0,3).join(',')
|
185
185
|
=> 'change_column :adverts, :title, :string'
|
186
186
|
>> up.split(',').slice(3,2).sort.join(',')
|
187
|
-
=>
|
187
|
+
=> " :default => \"Untitled\""
|
188
188
|
>> down
|
189
189
|
=> "change_column :adverts, :title, :string"
|
190
190
|
|
data/test/rich_types.rdoctest
CHANGED
@@ -7,13 +7,6 @@ Our test requires to prepare the testapp:
|
|
7
7
|
|
8
8
|
doctest_require: 'prepare_testapp'
|
9
9
|
|
10
|
-
>>
|
11
|
-
ActiveRecord::Migration.create_table :articles do |t|
|
12
|
-
t.text :body
|
13
|
-
t.string :status
|
14
|
-
end
|
15
|
-
>>
|
16
|
-
|
17
10
|
{.hidden}
|
18
11
|
|
19
12
|
## `to_html` method
|
@@ -103,7 +96,7 @@ Provides validation of correct email address format.
|
|
103
96
|
|
104
97
|
### `HoboFields::Types::HtmlString`
|
105
98
|
|
106
|
-
`HtmlString` provides no special behavior. The main reason for using this type is that the `to_html` method does not do any html-escaping. Use this for columns that store raw HTML in the database.
|
99
|
+
`HtmlString` provides no special behavior. The main reason for using this type is that the `to_html` method does not do any html-escaping. Use this for columns that store raw HTML in the database. Exactly the same as RawHtmlString.
|
107
100
|
|
108
101
|
# no safety treatments are done by `to_html`.
|
109
102
|
# even if `nasty.to_html` is actually unsafe, it is marked as html_safe.
|
@@ -113,23 +106,6 @@ Provides validation of correct email address format.
|
|
113
106
|
>> nasty.to_html.html_safe?
|
114
107
|
=> true
|
115
108
|
|
116
|
-
>>
|
117
|
-
class Article < ActiveRecord::Base
|
118
|
-
fields do
|
119
|
-
body HoboFields::Types::HtmlString
|
120
|
-
end
|
121
|
-
attr_accessible :body
|
122
|
-
end
|
123
|
-
>> article = Article.create!(:body => "</div>>>p1<p>p2</p>p3<nasty>p4</nasty>p5<script>p6<script>p7</script>p8")
|
124
|
-
# some unsafe html fragements are removed on save,
|
125
|
-
# but there's no guarantees that it is well-formed
|
126
|
-
>> article.body
|
127
|
-
=> "</div>>>p1<p>p2</p>p3p4p5<script>p6p8"
|
128
|
-
>> article.body == article.body.to_html
|
129
|
-
=> true
|
130
|
-
>> article.body.to_html.html_safe?
|
131
|
-
=> true
|
132
|
-
|
133
109
|
|
134
110
|
### `HoboFields::Types::MarkdownString`
|
135
111
|
`HoboFields::Types::MarkdownString` provides a `to_html` that renders markdown syntax into html. It looks for RDiscount, Kramdown, Maruku or BlueCloth in that order.
|
@@ -148,7 +124,7 @@ Provides validation of correct email address format.
|
|
148
124
|
# unsafe html behaviour depends on the parser used.
|
149
125
|
>> markdown = HoboFields::Types::MarkdownString.new("</div>p1<script>p2")
|
150
126
|
>> markdown.to_html
|
151
|
-
=> "<p></div>
|
127
|
+
=> "<p></div>p1p2</p>\n"
|
152
128
|
# Bluecloth would return
|
153
129
|
# => "<p></div>p1</p>"
|
154
130
|
>> markdown.to_html.html_safe?
|
@@ -170,7 +146,7 @@ Provides validation of correct email address format.
|
|
170
146
|
# but there's no guarantees that it is well-formed
|
171
147
|
>> textile = HoboFields::Types::TextileString.new("</div>>>p1<script>p2")
|
172
148
|
>> textile.to_html
|
173
|
-
=> "<p
|
149
|
+
=> "<p>>>p1p2</p></p>"
|
174
150
|
>> textile.to_html.html_safe?
|
175
151
|
=> true
|
176
152
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobo_fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Locke
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.2.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: RedCloth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|