hobo_fields 2.1.2 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|