middleman-importmap 0.4.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75fbd72f23c3af77696dc8e45dc57b9d939e437c535d7b7002b6774953fc9472
4
- data.tar.gz: 4997e1d7747b0679c51c3d9dfcd691fcacf2728b949efc88fd89f849de90c12d
3
+ metadata.gz: 0f7ea7bfde0f17d3f72c92d067e68b5dcb52cd107c915143199e47b63e10ad3b
4
+ data.tar.gz: 6a18fc68762a8c2bc380484d21570ae1f55d8e2d3487507adda24c8429dac004
5
5
  SHA512:
6
- metadata.gz: 7c84e547bca9e6e94e72ba5044dbd6d192b4b70d73f38fbec16d769f101048db0a7be0fe37580bdaaf81cc49b264b97193c1f27b6be57ed1f10ec47ce9c839d6
7
- data.tar.gz: 2e7418f7f127d3b989a8c15252f389dd33ed209b10b81a296d8c2c030e228f5617ffdb525e7b63ee0a17cbc5668567db154f54a2f66f66bbc19b3803422db5a3
6
+ metadata.gz: 1d6c40acd3b02ad10c296c2727d28343325b14b001317d078125bf52f579178b50874e0e31cbf5af2e502ab1f25acaf6c203e1eeac39ba49c10c3ad574f0117a
7
+ data.tar.gz: 2fdd84511385291c0db34be7c3b5902a78de648ede1768abcabead1d55ff41435155e9b6ddafa1917c9ec26c448ad4c79dc008a56f7ab2a38bb174f1dedf90c3
@@ -1,13 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "erb"
4
- require "yaml"
5
- require "middleman-core"
3
+ require 'erb'
4
+ require 'yaml'
5
+ require 'middleman-core'
6
6
 
7
7
  module Middleman
8
8
  class ImportmapExtension < Extension
9
- option :entrypoint, "site", "define js entrypoint file"
10
- option :use_shim, true, "use importmapdefine js entrypoint file"
9
+ option :entrypoint, 'site', 'define js entrypoint file'
10
+ option :importmap, 'importmap.yml', 'define importmap file'
11
+ option :use_shim, true, 'use ES module shim'
12
+ option :shim_src, 'https://ga.jspm.io/npm:es-module-shims@1.8.2/dist/es-module-shims.js', 'define ES module shim source path'
13
+
14
+ expose_to_template :javascript_importmap_tags,
15
+ :javascript_importmap_shim_tag,
16
+ :javascript_inline_importmap_tag,
17
+ :javascript_inline_module_tag
11
18
 
12
19
  def initialize(app, options_hash = {}, &block)
13
20
  super
@@ -15,33 +22,51 @@ module Middleman
15
22
 
16
23
  def after_configuration; end
17
24
 
18
- helpers do
19
- def javascript_importmap_tags(entrypoint = "site", shim: true)
20
- [
21
- javascript_importmap_shim_tag,
22
- javascript_inline_importmap_tag,
23
- javascript_inline_module_tag(entrypoint),
24
- ].join
25
- end
25
+ def javascript_importmap_tags(entrypoint = options.entrypoint,
26
+ importmap: options.importmap,
27
+ shim: options.use_shim,
28
+ shim_src: options.shim_src)
29
+ [
30
+ (javascript_importmap_shim_tag(shim_src) if shim),
31
+ javascript_inline_importmap_tag(importmap, shim: shim),
32
+ javascript_inline_module_tag(entrypoint, shim: shim)
33
+ ].join
34
+ end
26
35
 
27
- def javascript_importmap_shim_tag
28
- template = File.join(File.dirname(__FILE__), "views/javascript_impotmap_shim_tag.html.erb")
29
- erb = ERB.new(File.read(template))
30
- erb.result
31
- end
36
+ def javascript_importmap_shim_tag(shim_src = options.shim_src)
37
+ template = File.join(File.dirname(__FILE__), 'views/javascript_importmap_shim_tag.html.erb')
38
+
39
+ erb = ERB.new(File.read(template))
40
+ erb.result_with_hash(src: shim_src)
41
+ end
32
42
 
33
- def javascript_inline_importmap_tag(importmap = "importmap.yml")
34
- template = File.join(File.dirname(__FILE__), "views/javascript_inline_impotmap_tag.html.erb")
35
- importmap_config = YAML.load_file(File.join(app.root_path, importmap), symbolize_names: true)
43
+ def javascript_inline_importmap_tag(importmap = options.importmap, shim: options.use_shim)
44
+ template = File.join(File.dirname(__FILE__), 'views/javascript_inline_importmap_tag.html.erb')
45
+ importmap_config = load_importmap(File.join(app.root_path, importmap))
36
46
 
37
- erb = ERB.new(File.read(template))
38
- erb.result_with_hash(importmap: importmap_config)
39
- end
47
+ erb = ERB.new(File.read(template))
48
+ erb.result_with_hash(importmap: importmap_config,
49
+ type: shim ? "importmap-shim" : "importmap")
50
+ end
51
+
52
+ def javascript_inline_module_tag(entrypoint = options.entrypoint, shim: options.use_shim)
53
+ template = File.join(File.dirname(__FILE__), 'views/javascript_inline_module_tag.html.erb')
54
+
55
+ erb = ERB.new(File.read(template))
56
+ erb.result_with_hash(entrypoint: entrypoint,
57
+ type: shim ? "module-shim" : "module")
58
+ end
59
+
60
+ private
40
61
 
41
- def javascript_inline_module_tag(entrypoint)
42
- template = File.join(File.dirname(__FILE__), "views/javascript_inline_module_tag.html.erb")
43
- erb = ERB.new(File.read(template))
44
- erb.result_with_hash(entrypoint: entrypoint)
62
+ def load_importmap(path)
63
+ if path.end_with?('.yml', '.yaml')
64
+ importmap = YAML.load_file(path, symbolize_names: true)
65
+ JSON.pretty_generate(importmap)
66
+ elsif path.end_with?('.json')
67
+ File.read(path)
68
+ else
69
+ raise "Importmap format must be YAML or JSON"
45
70
  end
46
71
  end
47
72
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Middleman
4
4
  module Importmap
5
- VERSION = '0.4.0'
5
+ VERSION = '0.6.0'
6
6
  end
7
7
  end
@@ -1,7 +1,6 @@
1
-
2
1
  <script
3
2
  async
4
3
  data-turbo-track="reload"
5
- src="https://ga.jspm.io/npm:es-module-shims@1.8.2/dist/es-module-shims.js"
4
+ src="<%= src %>"
6
5
  crossorigin="anonymous"
7
6
  ></script>
@@ -0,0 +1,3 @@
1
+ <script type="<%= type %>">
2
+ <%= importmap %>
3
+ </script>
@@ -1,4 +1,4 @@
1
1
  <script
2
- type="module-shim"
2
+ type="<%= type %>"
3
3
  src="/javascripts/<%= entrypoint %>.js"
4
4
  ></script>
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "middleman-core"
3
+ require 'middleman-core'
4
4
 
5
5
  Middleman::Extensions.register(:importmap) do
6
- require "middleman-importmap/extension"
7
- ::Middleman::ImportmapExtension
6
+ require 'middleman-importmap/extension'
7
+ Middleman::ImportmapExtension
8
8
  end
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "middleman-importmap"
3
+ require 'middleman-importmap'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-importmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Vinciguerra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-29 00:00:00.000000000 Z
11
+ date: 2024-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -31,17 +31,17 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - features/support/env.rb
35
34
  - lib/middleman-importmap.rb
36
35
  - lib/middleman-importmap/extension.rb
37
36
  - lib/middleman-importmap/version.rb
38
- - lib/middleman-importmap/views/javascript_impotmap_shim_tag.html.erb
39
- - lib/middleman-importmap/views/javascript_inline_impotmap_tag.html.erb
37
+ - lib/middleman-importmap/views/javascript_importmap_shim_tag.html.erb
38
+ - lib/middleman-importmap/views/javascript_inline_importmap_tag.html.erb
40
39
  - lib/middleman-importmap/views/javascript_inline_module_tag.html.erb
41
40
  - lib/middleman_extension.rb
42
41
  homepage: https://github.com/dvinciguerra/middleman-importmap
43
42
  licenses: []
44
- metadata: {}
43
+ metadata:
44
+ rubygems_mfa_required: 'true'
45
45
  post_install_message:
46
46
  rdoc_options: []
47
47
  require_paths:
@@ -61,5 +61,4 @@ rubygems_version: 3.4.22
61
61
  signing_key:
62
62
  specification_version: 4
63
63
  summary: Middleman Importmap extension
64
- test_files:
65
- - features/support/env.rb
64
+ test_files: []
@@ -1,4 +0,0 @@
1
- PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
2
- require 'middleman-core'
3
- require 'middleman-core/step_definitions'
4
- require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-importmap')
@@ -1,3 +0,0 @@
1
- <script type="importmap-shim">
2
- <%= JSON.pretty_generate(importmap) %>
3
- </script>