eac_rails_utils 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a200b85b318ad4085a58fecff3d3d9dddb54d8a6fa96a3f6d07d53a7f417e898
4
- data.tar.gz: 5052af7b7693cf6e6687fc7deea1d74f90998c9bdf20907ea751cd353ec3c9fd
3
+ metadata.gz: 926390e40752868353a97b85802a2f3626ed5b9206c570ce88931c4fde036836
4
+ data.tar.gz: 56fa6a845cedfc2afda247787dd6c94a62013f883def7e2c7dcf06f2cb348260
5
5
  SHA512:
6
- metadata.gz: 60c966c2c0a6657912a4a5b3cfbc792bf16508677d8a562955d9758fad49784b194a822af00c71bb962e1f458261ed7d4662955c09e3e2c5049af599136b4f2d
7
- data.tar.gz: e63356d26e664857f41685f490a35348248d85457da86ea37286a8aa64f682f36517b84adbe4747406461846a0bafbae52a2f17cd65078616db4c18cf12ce776
6
+ metadata.gz: 68dd63e8acea983a4716bd9b9e349d4320358349fe3845b9e4961c5b6005e505362c8c3f7b0c7c121fce3b8d6445687760230c790b4345c88c1ac8d1d33975fc
7
+ data.tar.gz: ccb1f573919f77aee1b7eb14eb8db72eea4e969b6ea465b6561fc632995af978b9bc1c3a46281a89da1e46bce3227ab396541b15170073d9287cb63222e1e488
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+ module EacRailsUtils
3
+ module OpenGraphProtocolHelper
4
+ OGP_META_DEFAULT_PREFIX = 'og'
5
+
6
+ def ogp_meta_prefix
7
+ OGP_META_DEFAULT_PREFIX
8
+ end
9
+
10
+ def ogp_prefix
11
+ "#{ogp_meta_prefix}: http://ogp.me/ns#"
12
+ end
13
+
14
+ def ogp_meta_tags
15
+ ogp_root.children_tags
16
+ end
17
+
18
+ def ogp_root
19
+ @ogp_root ||= RootEntry.new(self)
20
+ end
21
+
22
+ def ogp_set(data)
23
+ ogp_root.data = data
24
+ end
25
+
26
+ class AbstractEntry
27
+ attr_reader :view
28
+
29
+ def initialize(view)
30
+ @view = view
31
+ @children = ::ActiveSupport::HashWithIndifferentAccess.new
32
+ end
33
+
34
+ def child(child_suffix)
35
+ @children[child_suffix] ||= Entry.new(view, self, child_suffix)
36
+ end
37
+
38
+ def children_tags
39
+ view.capture do
40
+ view.concat tag
41
+ @children.values.each do |child|
42
+ view.concat(child.children_tags)
43
+ view.concat("\n")
44
+ end
45
+ end
46
+ end
47
+
48
+ def data=(a_data)
49
+ if a_data.is_a?(::Hash)
50
+ a_data.each { |k, v| child(k).data = v }
51
+ else
52
+ self.content = a_data
53
+ end
54
+ end
55
+ end
56
+
57
+ class Entry < AbstractEntry
58
+ attr_reader :parent, :suffix
59
+
60
+ def initialize(view, parent, suffix)
61
+ super view
62
+ @parent = parent
63
+ @suffix = suffix
64
+ end
65
+
66
+ def components
67
+ (parent.present? ? parent.components : []) + [suffix]
68
+ end
69
+
70
+ def content
71
+ view.content_for content_for_key
72
+ end
73
+
74
+ def content=(a_content)
75
+ view.content_for content_for_key, a_content.to_s
76
+ end
77
+
78
+ def content?
79
+ view.content_for? content_for_key
80
+ end
81
+
82
+ def content_for_key
83
+ "ogp_#{components.join('_')}"
84
+ end
85
+
86
+ def property_value
87
+ "#{view.ogp_meta_prefix}:#{components.join(':')}"
88
+ end
89
+
90
+ def tag
91
+ return ::ActiveSupport::SafeBuffer.new unless content?
92
+ view.tag(:meta, prefix: view.ogp_prefix, property: property_value, content: content)
93
+ end
94
+ end
95
+
96
+ class RootEntry < AbstractEntry
97
+ def components
98
+ []
99
+ end
100
+
101
+ def content=(_a_content)
102
+ raise 'Root OGP entry cannot have content'
103
+ end
104
+
105
+ def tag
106
+ ::ActiveSupport::SafeBuffer.new
107
+ end
108
+ end
109
+ end
110
+ end
@@ -11,7 +11,7 @@ module EacRailsUtils
11
11
  require 'eac_rails_utils/patches/action_controller_base'
12
12
  require 'eac_rails_utils/patches/model_attribute_required'
13
13
  require 'eac_rails_utils/patches/ofx_parser'
14
- require 'eac_rails_utils/rails/engine'
14
+ require 'eac_rails_utils/engine'
15
15
  require 'eac_rails_utils/tableless_model'
16
16
  require 'eac/cpf_validator'
17
17
  require 'eac/common_form_helper/form_builder/association_select_field'
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+ module EacRailsUtils
3
+ class Engine < ::Rails::Engine; end
4
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module EacRailsUtils
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_rails_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - E.A.C.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-06 00:00:00.000000000 Z
11
+ date: 2019-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel-associations
@@ -135,6 +135,7 @@ extensions: []
135
135
  extra_rdoc_files: []
136
136
  files:
137
137
  - Rakefile
138
+ - app/helpers/eac_rails_utils/open_graph_protocol_helper.rb
138
139
  - lib/assets/javascripts/currency_field.js
139
140
  - lib/assets/javascripts/eac_rails_utils.js
140
141
  - lib/assets/javascripts/input_searchable.js
@@ -177,11 +178,11 @@ files:
177
178
  - lib/eac/source_target_fixtures.rb
178
179
  - lib/eac/test_utils.rb
179
180
  - lib/eac_rails_utils.rb
181
+ - lib/eac_rails_utils/engine.rb
180
182
  - lib/eac_rails_utils/helpers/formatter.rb
181
183
  - lib/eac_rails_utils/patches/action_controller_base.rb
182
184
  - lib/eac_rails_utils/patches/model_attribute_required.rb
183
185
  - lib/eac_rails_utils/patches/ofx_parser.rb
184
- - lib/eac_rails_utils/rails/engine.rb
185
186
  - lib/eac_rails_utils/tableless_model.rb
186
187
  - lib/eac_rails_utils/version.rb
187
188
  - test/dummy/Rakefile
@@ -1,5 +0,0 @@
1
- module EacRailsUtils
2
- module Rails
3
- class Engine < ::Rails::Engine; end
4
- end
5
- end