google_maps_embed 0.1.2 → 0.1.3

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: 9f0630cf61a66a9f1718b08928a9143f3796597f992c6059eab890424a6f2195
4
- data.tar.gz: 5f0a55503fb3ab630c8085270d97421d71af529b80fffdd7be7703109d00eaaf
3
+ metadata.gz: dc9cb730f98c930e4572531f4eb5f8d8ce20600986c2b343e2e783c729c82deb
4
+ data.tar.gz: 97fac49f3818a86b91298f046333892e3ea8e1d3ea5ff2e35746aa37ab67c8a1
5
5
  SHA512:
6
- metadata.gz: 1cafa3586abf3b924af47ea22e2dd92fc263cb8b38965b57a3e2da5e7d0601fdbae62e7f5a86dcc39f1cc64250d95fcda1f2b8c329fe8266429106f818e9c28a
7
- data.tar.gz: fb19398e00f7b8c7a053281f9af2fbf15d62414a7a3fe7e483c95908e706978a83bb18a2818e8e7fa4c5d147cd69859e5f1184d36869933834c62d3af0b02348
6
+ metadata.gz: de6052ebef107a688dcfb4f8f852608a7c6fa43a6078da3b78ea1fc0fbfffc16c3674e897f3b51806db102728dea704f5a8fda9f040574c9668639dbed7f1dbb
7
+ data.tar.gz: 7c5e94a10171d8b79e0a41984d80e284bac2cb292f42cc4151f58ad1a94a9018d08f51f7dde092cf5196cbf57489f6a035807b9e3cb111b4b3a7d9c1386dc3c9
data/.rubocop.yml CHANGED
@@ -11,6 +11,9 @@ Style/StringLiterals:
11
11
  Style/StringLiteralsInInterpolation:
12
12
  EnforcedStyle: double_quotes
13
13
 
14
+ Style/GuardClause:
15
+ Enabled: false
16
+
14
17
  Metrics/MethodLength:
15
18
  Enabled: false
16
19
 
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ # # frozen_string_literal: true
4
+
5
+ module GoogleMapsEmbed
6
+ module IframeGenerator
7
+ def self.generate(src_url, options = {})
8
+ ["<iframe",
9
+ "width=\"#{options[:width] || "450"}\"",
10
+ "height=\"#{options[:height] || "250"}\"",
11
+ "frameborder=\"#{options[:frameborder] || "0"}\"",
12
+ "style=\"#{options[:style] || "border:0"}\"",
13
+ "loading=\"#{options[:loading] || "lazy"}\"",
14
+ "referrerpolicy=\"#{options[:referrer_policy] || "no-referrer-when-downgrade"}\"",
15
+ "src=\"#{src_url}\"",
16
+ "allowfullscreen",
17
+ ">",
18
+ "</iframe>"].join(" ")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "uri"
4
+
5
+ class PlaceMap
6
+ BASE_URL = "https://www.google.com/maps/embed/v1/place"
7
+
8
+ def self.create(options = {})
9
+ unless options.key?(:q)
10
+ raise ArgumentError "Maps API for a place requires a 'q' parameter for a map marker location"
11
+ end
12
+
13
+ api_key = [options[:api_key], GoogleMapsEmbed.configuration.dynamic_key,
14
+ GoogleMapsEmbed.configuration.api_key].compact.first
15
+
16
+ exclude_keys = %i[api_key width height frameborder style loading referrer_policy]
17
+
18
+ filtered_options = options.reject { |key, _| exclude_keys.include?(key) }
19
+ extra_url = filtered_options.map do |key, value|
20
+ "#{key}=#{URI.encode_www_form_component(value)}"
21
+ end.join("&").gsub("%2C", ",")
22
+
23
+ src_url = "#{BASE_URL}?key=#{api_key}&#{extra_url}"
24
+
25
+ GoogleMapsEmbed::IframeGenerator.generate(src_url, options)
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "google_maps_embed"
4
+
5
+ module GoogleMapsEmbed
6
+ class Railtie < Rails::Railtie
7
+ initializer "google_maps_embed.view_helpers" do
8
+ ActiveSupport.on_load(:action_view) do
9
+ include GoogleMapsEmbed::ViewHelpers
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GoogleMapsEmbed
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GoogleMapsEmbed
4
+ module ViewHelpers
5
+ def google_maps_embed(type: :static, **options)
6
+ GoogleMapsEmbed.map(type: type, **options)
7
+ end
8
+ end
9
+ end
@@ -3,6 +3,9 @@
3
3
  require_relative "google_maps_embed/version"
4
4
  require_relative "google_maps_embed/configuration"
5
5
  require_relative "google_maps_embed/static_map"
6
+ require_relative "google_maps_embed/place_map"
7
+ require_relative "google_maps_embed/iframe_generator"
8
+ require "google_maps_embed/railtie" if defined?(Rails)
6
9
 
7
10
  module GoogleMapsEmbed
8
11
  class Error < StandardError; end
@@ -16,12 +19,18 @@ module GoogleMapsEmbed
16
19
  yield(configuration)
17
20
  end
18
21
 
19
- def self.url(type: :static, **options)
22
+ def self.map(type: :static, **options)
20
23
  case type
21
24
  when :static
22
25
  StaticMap.url(options)
26
+ when :place
27
+ PlaceMap.create(options)
23
28
  else
24
29
  raise ArgumentError, "Unknown map type: #{type}"
25
30
  end
26
31
  end
27
32
  end
33
+
34
+ def google_maps_embed(type: :static, **options)
35
+ GoogleMapsEmbed.map(type: type, **options)
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_maps_embed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Nazworth
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-12 00:00:00.000000000 Z
11
+ date: 2024-07-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  Google_Maps_Embed is a versatile Ruby gem designed to simplify the generation of Google Maps URLs
@@ -38,9 +38,13 @@ files:
38
38
  - lib/generators/google_maps_embed/install/templates/google_maps_embed.rb
39
39
  - lib/google_maps_embed.rb
40
40
  - lib/google_maps_embed/configuration.rb
41
+ - lib/google_maps_embed/iframe_generator.rb
42
+ - lib/google_maps_embed/place_map.rb
43
+ - lib/google_maps_embed/railtie.rb
41
44
  - lib/google_maps_embed/static_map.rb
42
45
  - lib/google_maps_embed/url_signer.rb
43
46
  - lib/google_maps_embed/version.rb
47
+ - lib/google_maps_embed/view_helpers.rb
44
48
  - sig/google_maps_embed.rbs
45
49
  homepage: https://github.com/anazworth/google_maps_embed
46
50
  licenses: