brick 1.0.119 → 1.0.120
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
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faca98f57870f50ba6474325fa995fe70ac36b4efd4c58946553242afe7ccb86
|
4
|
+
data.tar.gz: 3dd28e3cb60b74bd99209da86e302b7301e0eb844e314e7c56dde43ed4475b7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ccbfc86abb0a16f053ddbf0b43e0c96a6d70a9f2ab3cab95ea008d76bcba1572aaf87b5d6eb9a79a342c20b26b900c42a1dd178c6b478e6f0f8daf372bb9189
|
7
|
+
data.tar.gz: 464e92a80e820c66c8ed2517593440e0752bfc4b8d7fdf3667fd662291b6663e95e417f60281647529cea7c11c0d13a3fa5c22d69142c6b880db5ae077e632d3
|
@@ -2,6 +2,39 @@
|
|
2
2
|
|
3
3
|
module Brick
|
4
4
|
module Rails
|
5
|
+
def self.display_binary(val)
|
6
|
+
@image_signatures ||= { (+"\xFF\xD8\xFF\xEE").force_encoding('ASCII-8BIT') => 'jpeg',
|
7
|
+
(+"\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01").force_encoding('ASCII-8BIT') => 'jpeg',
|
8
|
+
(+"\x89PNG\r\n\x1A\n").force_encoding('ASCII-8BIT') => 'png',
|
9
|
+
'<svg' => 'svg+xml', # %%% Not yet very good detection for SVG
|
10
|
+
(+'BM').force_encoding('ASCII-8BIT') => 'bmp',
|
11
|
+
(+'GIF87a').force_encoding('ASCII-8BIT') => 'gif',
|
12
|
+
(+'GIF89a').force_encoding('ASCII-8BIT') => 'gif' }
|
13
|
+
|
14
|
+
if val[0..1] == "\x15\x1C" # One of those goofy Microsoft OLE containers?
|
15
|
+
package_header_length = val[2..3].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
16
|
+
# This will often be just FF FF FF FF
|
17
|
+
# object_size = val[16..19].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
18
|
+
friendly_and_class_names = val[20...package_header_length].split("\0")
|
19
|
+
object_type_name_length = val[package_header_length + 8..package_header_length+11].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
20
|
+
friendly_and_class_names << val[package_header_length + 12...package_header_length + 12 + object_type_name_length].strip
|
21
|
+
# friendly_and_class_names will now be something like: ['Bitmap Image', 'Paint.Picture', 'PBrush']
|
22
|
+
real_object_size = val[package_header_length + 20 + object_type_name_length..package_header_length + 23 + object_type_name_length].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
23
|
+
object_start = package_header_length + 24 + object_type_name_length
|
24
|
+
val = val[object_start...object_start + real_object_size]
|
25
|
+
end
|
26
|
+
|
27
|
+
if (signature = @image_signatures.find { |k, _v| val[0...k.length] == k })
|
28
|
+
if val.length < 500_000
|
29
|
+
"<img src=\"data:image/#{signature.last};base64,#{Base64.encode64(val)}\">"
|
30
|
+
else
|
31
|
+
"< #{signature.last} image, #{val.length} bytes >"
|
32
|
+
end
|
33
|
+
else
|
34
|
+
"< Binary, #{val.length} bytes >"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
5
38
|
# See http://guides.rubyonrails.org/engines.html
|
6
39
|
class Engine < ::Rails::Engine
|
7
40
|
JS_CHANGEOUT = "function changeout(href, param, value, trimAfter) {
|
@@ -938,7 +971,7 @@ def display_value(col_type, val)
|
|
938
971
|
'(Add RGeo gem to parse geometry detail)'
|
939
972
|
end
|
940
973
|
when :binary
|
941
|
-
display_binary(val) if val
|
974
|
+
::Brick::Rails.display_binary(val) if val
|
942
975
|
else
|
943
976
|
if col_type
|
944
977
|
hide_bcrypt(val, col_type == :xml)
|
@@ -948,39 +981,6 @@ def display_value(col_type, val)
|
|
948
981
|
end
|
949
982
|
end
|
950
983
|
|
951
|
-
def image_signatures
|
952
|
-
@image_signatures ||= { \"\\xFF\\xD8\\xFF\\xEE\".force_encoding('ASCII-8BIT') => 'jpeg',
|
953
|
-
\"\\xFF\\xD8\\xFF\\xE0\\x00\\x10\\x4A\\x46\\x49\\x46\\x00\\x01\".force_encoding('ASCII-8BIT') => 'jpeg',
|
954
|
-
\"\\x89PNG\\r\\n\\x1A\\n\".force_encoding('ASCII-8BIT') => 'png',
|
955
|
-
'<svg' => 'svg+xml', # %%% Not yet very good detection for SVG
|
956
|
-
'BM'.force_encoding('ASCII-8BIT') => 'bmp',
|
957
|
-
'GIF87a'.force_encoding('ASCII-8BIT') => 'gif',
|
958
|
-
'GIF89a'.force_encoding('ASCII-8BIT') => 'gif' }
|
959
|
-
end
|
960
|
-
def display_binary(val)
|
961
|
-
if val[0..1] == \"\\x15\\x1C\" # One of those goofy Microsoft OLE containers?
|
962
|
-
package_header_length = val[2..3].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
963
|
-
# This will often be just FF FF FF FF
|
964
|
-
# object_size = val[16..19].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
965
|
-
friendly_and_class_names = val[20...package_header_length].split(\"\\0\")
|
966
|
-
object_type_name_length = val[package_header_length + 8..package_header_length+11].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
967
|
-
friendly_and_class_names << val[package_header_length + 12...package_header_length + 12 + object_type_name_length].strip
|
968
|
-
# friendly_and_class_names will now be something like: ['Bitmap Image', 'Paint.Picture', 'PBrush']
|
969
|
-
real_object_size = val[package_header_length + 20 + object_type_name_length..package_header_length + 23 + object_type_name_length].bytes.reverse.inject(0) {|m, b| (m << 8) + b }
|
970
|
-
object_start = package_header_length + 24 + object_type_name_length
|
971
|
-
val = val[object_start...object_start + real_object_size]
|
972
|
-
end
|
973
|
-
if (signature = image_signatures.find { |k, _v| val[0...k.length] == k })
|
974
|
-
if val.length < 500_000
|
975
|
-
\"<img src=\\\"data:image/#\{signature.last};base64,#\{Base64.encode64(val)}\\\">\"
|
976
|
-
else
|
977
|
-
\"< #\{signature.last} image, #\{val.length} bytes >\"
|
978
|
-
end
|
979
|
-
else
|
980
|
-
\"< Binary, #\{val.length} bytes >\"
|
981
|
-
end
|
982
|
-
end
|
983
|
-
|
984
984
|
# Accommodate composite primary keys that include strings with forward-slash characters
|
985
985
|
def slashify(*vals)
|
986
986
|
vals.map { |val_part| val_part.is_a?(String) ? val_part.gsub('/', '^^sl^^') : val_part }
|
@@ -1685,7 +1685,7 @@ end
|
|
1685
1685
|
if val.length < 31 && (val.length - 6) % 8 == 0 && val[0..5].bytes == [230, 16, 0, 0, 1, 12]
|
1686
1686
|
display_value('geography', val)
|
1687
1687
|
else
|
1688
|
-
display_binary(val)
|
1688
|
+
::Brick::Rails.display_binary(val)
|
1689
1689
|
end.html_safe
|
1690
1690
|
end %>
|
1691
1691
|
<% when :primary_key
|
@@ -90,7 +90,7 @@ module Brick::Rails::FormTags
|
|
90
90
|
# 0..62 because Postgres column names are limited to 63 characters
|
91
91
|
obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, bt_id_col
|
92
92
|
)
|
93
|
-
bt_txt = display_binary(bt_txt).html_safe if bt_txt&.encoding&.name == 'ASCII-8BIT'
|
93
|
+
bt_txt = ::Brick::Rails.display_binary(bt_txt).html_safe if bt_txt&.encoding&.name == 'ASCII-8BIT'
|
94
94
|
bt_txt ||= "<span class=\"orphan\"><< Orphaned ID: #{val} >></span>" if val
|
95
95
|
bt_id = bt_id_col&.map { |id_col| obj.respond_to?(id_sym = id_col.to_sym) ? obj.send(id_sym) : id_col }
|
96
96
|
out << (bt_id&.first ? link_to(bt_txt, send("#{bt_class.base_class._brick_index(:singular)}_path".to_sym, bt_id)) : bt_txt || '')
|
data/lib/brick/version_number.rb
CHANGED
@@ -268,7 +268,7 @@ if ActiveRecord::Base.respond_to?(:brick_select) && !::Brick.initializer_loaded
|
|
268
268
|
# # FRIENDLY DSL
|
269
269
|
|
270
270
|
# # A simple DSL is available to allow more user-friendly display of objects. Normally a user object might be shown
|
271
|
-
# # as its first non-metadata column, or if that is not available then something like \"User #
|
271
|
+
# # as its first non-metadata column, or if that is not available then something like \"User #42\" where 42 is that
|
272
272
|
# # object's ID. If there is no primary key then even that is not possible, so the object's .to_s method is called.
|
273
273
|
# # To override these defaults and specify exactly what you want shown, such as first names and last names for a
|
274
274
|
# # user, then you can use model_descrips like this, putting expressions with property references in square brackets:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.120
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|