gryphon_nest 2.0.1 → 3.0.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: 19531d127171f4f388faf53f703b2b3f7529dcba0641d6d0eb781a778a7e1390
4
- data.tar.gz: 8f90b27680df5977c8af25d7f35bb238960b86a1c6951d3ded1db56977178741
3
+ metadata.gz: '059e5147460d46712b2b7d7f700e9013aec2b515c440d2e8480dd91429a49055'
4
+ data.tar.gz: 55887001c613917022871f80eb385ea21ec5fad38257d32a87b61c1ee3f2f1fb
5
5
  SHA512:
6
- metadata.gz: 1dae70b86362c2ae2c022ec1c0bb4f37787d65b04691ce828a624a2cc222f05a24bd11c68e4b1ea27b1a864cc7ee0ba29d8b81a5f0e4e9bc80109c93ffe67351
7
- data.tar.gz: eeb408900bafc6c56de025c1edc502ad4354cfbe6c72d30c10c8df1b268747b8cf56dea9898d4ff71fbf0c28deab8d87e49037b717a748a3adc38027592fc2e5
6
+ metadata.gz: f916fed436eb1fba621d6921fbc2075dad54079b148b321accb977c5b8550efc8ed495212cec48519fa8ccfa4383f7892b594f2b7941a88542d7d84545178709
7
+ data.tar.gz: d22e12353543670bd136a803c9b84efa2dc95a88f64897ebe5d1addc638df9e5ad6ef06ea54edaed515a8d7bea282bed1f77bbea21a70ea7a23fe32323811616
data/bin/nest CHANGED
@@ -45,7 +45,7 @@ begin
45
45
  GryphonNest.serve_website(options[:port]) if command == 'serve'
46
46
  rescue OptionParser::ParseError => e
47
47
  usage_error(e.message, parser)
48
- # rescue StandardError => e
49
- # warn e.message
50
- # exit(EXIT_FAILURE)
48
+ rescue StandardError => e
49
+ warn e.message
50
+ exit(EXIT_FAILURE)
51
51
  end
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
 
5
5
  module GryphonNest
6
6
  module Processors
7
+ # Default file processor. Moves files from source to destination
7
8
  class AssetProcessor
8
9
  # @param file [Pathname]
9
10
  # @return [Pathname]
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'htmlbeautifier'
3
4
  require 'yaml'
4
5
 
5
6
  module GryphonNest
6
7
  module Processors
8
+ # Renders a Mustache template into a html file
7
9
  class MustacheProcessor
8
10
  # @param renderer [Renderers::MustacheRenderer]
9
11
  def initialize(renderer)
@@ -17,8 +19,19 @@ module GryphonNest
17
19
  dest = dest_name(file)
18
20
  msg = File.exist?(dest) ? 'Recreating' : 'Creating'
19
21
  puts "#{msg} #{dest}"
22
+
23
+ @layout ||= read_layout_file
24
+
20
25
  context = read_context(file)
21
- content = @renderer.render_file(file, context)
26
+
27
+ if @layout.empty?
28
+ content = @renderer.render_file(file, context)
29
+ else
30
+ context[:yield] = file.basename(TEMPLATE_EXT)
31
+ content = @renderer.render(@layout, context)
32
+ end
33
+
34
+ content = HtmlBeautifier.beautify(content)
22
35
  write_file(dest, content)
23
36
  dest
24
37
  end
@@ -43,7 +56,7 @@ module GryphonNest
43
56
  def read_context(src)
44
57
  basename = src.basename(TEMPLATE_EXT)
45
58
  path = "#{DATA_DIR}/#{basename}.yaml"
46
- YAML.safe_load_file(path)
59
+ YAML.safe_load_file(path, symbolize_names: true)
47
60
  rescue IOError, Errno::ENOENT
48
61
  {}
49
62
  rescue Psych::SyntaxError => e
@@ -57,6 +70,13 @@ module GryphonNest
57
70
  dir.mkpath
58
71
  path.write(content)
59
72
  end
73
+
74
+ # @return [String]
75
+ def read_layout_file
76
+ File.read(LAYOUT_FILE)
77
+ rescue IOError, Errno::ENOENT
78
+ ''
79
+ end
60
80
  end
61
81
  end
62
82
  end
@@ -1,35 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'htmlbeautifier'
4
3
  require 'mustache'
5
4
 
6
5
  module GryphonNest
7
6
  module Renderers
8
- # Renders mustache templates to html
7
+ # Class to override default Mustache behavior
9
8
  class MustacheRenderer < Mustache
10
- # @param template [String]
11
- # @param context [Hash]
12
- # @return [String]
13
- def render_file(template, context = {})
14
- content = super
15
- HtmlBeautifier.beautify(content)
16
- end
17
-
18
- # @param name [String]
19
- # @return [String]
20
- def partial(name)
21
- content = File.read(name)
22
- layout ||= read_layout_file
23
- layout.empty? ? content : layout.sub(/{{{\s*yield\s*}}}/, content)
24
- end
25
-
26
- private
27
9
 
10
+ # @param _name [String]
28
11
  # @return [String]
29
- def read_layout_file
30
- File.read(LAYOUT_FILE)
31
- rescue IOError, Errno::ENOENT
32
- ''
12
+ def partial(_name)
13
+ name = @context[:yield]
14
+ path = "#{template_path}/#{name}.#{template_extension}"
15
+ File.read(path)
33
16
  end
34
17
  end
35
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GryphonNest
4
- VERSION = '2.0.1'
4
+ VERSION = '3.0.0'
5
5
  end
data/lib/gryphon_nest.rb CHANGED
@@ -13,20 +13,16 @@ module GryphonNest
13
13
  CONTENT_DIR = 'content'
14
14
  DATA_DIR = 'data'
15
15
  TEMPLATE_EXT = '.mustache'
16
- LAYOUT_FILE = 'layouts/main.mustache'
16
+ LAYOUT_FILE = 'layout.mustache'
17
17
 
18
18
  class << self
19
19
  # @raise [Errors::NotFoundError]
20
20
  def build_website
21
21
  raise Errors::NotFoundError, "Content directory doesn't exist in the current directory" unless Dir.exist?(CONTENT_DIR)
22
22
 
23
- existing_files = []
24
- if Dir.exist?(BUILD_DIR)
25
- existing_files = glob("#{BUILD_DIR}/**/*")
26
- else
27
- Dir.mkdir(BUILD_DIR)
28
- end
23
+ Dir.mkdir(BUILD_DIR) unless Dir.exist?(BUILD_DIR)
29
24
 
25
+ existing_files = glob("#{BUILD_DIR}/**/*")
30
26
  existing_files = existing_files.difference(process_content)
31
27
  delete_files(existing_files)
32
28
  end
@@ -44,20 +40,18 @@ module GryphonNest
44
40
 
45
41
  # @return [Array<Pathname>]
46
42
  def process_content
47
- processed_files = []
48
43
  renderer = Renderers::MustacheRenderer.new
44
+ renderer.template_path = CONTENT_DIR
49
45
  asset_processor = Processors::AssetProcessor.new
50
46
 
51
47
  processors = {
52
48
  TEMPLATE_EXT => Processors::MustacheProcessor.new(renderer)
53
49
  }
54
50
 
55
- glob("#{CONTENT_DIR}/**/*").each do |source_file|
51
+ glob("#{CONTENT_DIR}/**/*").map do |source_file|
56
52
  processor = processors.fetch(source_file.extname, asset_processor)
57
- processed_files << processor.process(source_file)
53
+ processor.process(source_file)
58
54
  end
59
-
60
- processed_files
61
55
  end
62
56
 
63
57
  # @params path [String]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gryphon_nest
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Birmingham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-21 00:00:00.000000000 Z
11
+ date: 2024-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlbeautifier
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.4'
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: '1.0'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mustache
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '1.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
- rubygems_version: 3.2.33
137
+ rubygems_version: 3.4.20
138
138
  signing_key:
139
139
  specification_version: 4
140
140
  summary: Yet another static site generator