charsi 0.1.1 → 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: 13f9c33cc143b1ba678512bc2a2a2d18eaec7dc0cf415b56de4aed7ccbc0de91
4
- data.tar.gz: cda881471b17de5bdadde2380bc3597cc2c58fae1eb7aaa70c89b2a5d763b2bd
3
+ metadata.gz: 68bef40ef4cf1b6c65db0027a9df2ea6d788821d599aea4ee1682543fd11b38e
4
+ data.tar.gz: 9f3f4f5acda8d2bc23fab91591857cdc032099d12c32567f8519f91a4ac4e66f
5
5
  SHA512:
6
- metadata.gz: 755013228a16d5982abf82c05c4536818fd5d9b52ffa69d5213d0da1619393b8f22d52007a3e2ad6e15fdf68b671548fcfd2c83580c5853f05b92d9d5c013650
7
- data.tar.gz: 5ba4457348c9d05d987a17721e6fadec39c47896778bdc649d9f126cbcfa0600729d43954c02faa9654b893c62156d22367b2d7615b60139075ae94857bbb5a0
6
+ metadata.gz: f29a0ff3a07e0043db88b04a9de7d51dc8301b639249fad95a9a3855f9e18498d1a9a6790b5bd2d736daca1c7182ab34b3e9d8904ca5ad6af093b3509775a3b0
7
+ data.tar.gz: 545bf0905a06d7174e3373aaeb72ce82cf51399debc26f3c54068e6b5f3c746c865483801d52342b090e831a9615ff08a5cba704a46d72c9dbb5734f408782a4
data/bin/charsi CHANGED
@@ -16,6 +16,16 @@ elsif command == 'new'
16
16
  raise ArgumentError, 'Project name is required' if project_name.nil?
17
17
 
18
18
  Charsi::Generator.generate(project_name)
19
+
20
+ elsif command == 'serve'
21
+ charsi = Charsi::Builder.new
22
+ server = Charsi::Server.new
23
+
24
+ charsi.build
25
+
26
+ Thread.new { charsi.watch } if watch_flag
27
+
28
+ server.serve
19
29
  else
20
30
  puts 'Usage: charsi build [--watch]'
21
31
  end
data/charsi.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'charsi'
3
- spec.version = '0.1.1'
3
+ spec.version = '0.1.3'
4
4
 
5
5
  spec.authors = ['Ryan Beasse']
6
6
  spec.email = ['me@ryanbeasse.com']
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency 'tailwindcss-ruby', '~> 4.1'
30
30
  spec.add_dependency 'filewatcher', '~> 2.1'
31
31
  spec.add_dependency 'logger', '~> 1.6'
32
+ spec.add_dependency 'webrick', '~> 1.9'
32
33
  end
data/lib/charsi/app.rb CHANGED
@@ -23,6 +23,13 @@ module Charsi
23
23
  "<script src='assets/javascript/#{asset}?#{@cache_slug}'></script>"
24
24
  end
25
25
 
26
+ def render_partial(partial_name, **locals)
27
+ partial_path = @config.path(:views_dir, "_#{partial_name}.erb")
28
+ template = Tilt::ERBTemplate.new(partial_path)
29
+
30
+ template.render(self, **locals)
31
+ end
32
+
26
33
  private
27
34
 
28
35
  def load_helpers
@@ -0,0 +1,22 @@
1
+ require 'webrick'
2
+
3
+ module Charsi
4
+ class Server
5
+ DEFAULT_PORT = 8000
6
+
7
+ def initialize
8
+ @config = Configuration.new
9
+ end
10
+
11
+ def serve
12
+ build_dir = @config.path(:output_dir)
13
+
14
+ server = WEBrick::HTTPServer.new(Port: DEFAULT_PORT, DocumentRoot: build_dir)
15
+ trap('INT') { server.shutdown }
16
+
17
+ puts "[charsi] Serving #{build_dir} at http://localhost:#{DEFAULT_PORT}"
18
+
19
+ server.start
20
+ end
21
+ end
22
+ end
@@ -12,7 +12,9 @@ module Charsi
12
12
  views_path = @config.path(:views_dir, '*.erb')
13
13
 
14
14
  Dir.glob(views_path).each do |view|
15
- output_file = File.basename(view, '.erb') + '.html'
15
+ next if File.basename(view).start_with?('_')
16
+
17
+ output_file = determine_output_filename(view)
16
18
  output_path = @config.path(:output_dir, output_file)
17
19
 
18
20
  processed_view = parse_erb_with_layout(view)
@@ -23,6 +25,14 @@ module Charsi
23
25
 
24
26
  private
25
27
 
28
+ def determine_output_filename(view_path)
29
+ basename = File.basename(view_path, '.erb')
30
+
31
+ # If basename already has an extension, use it as-is
32
+ # otherwise, default to .htmli
33
+ basename.include?('.') ? basename : "#{basename}.html"
34
+ end
35
+
26
36
  def parse_erb_with_layout(view_path, layout: 'default.erb')
27
37
  layout_path = @config.path(:layout_dir, layout)
28
38
 
data/lib/charsi.rb CHANGED
@@ -14,4 +14,5 @@ module Charsi
14
14
  require 'charsi/app'
15
15
  require 'charsi/builder'
16
16
  require 'charsi/generator'
17
+ require 'charsi/server'
17
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: charsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Beasse
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '1.6'
82
+ - !ruby/object:Gem::Dependency
83
+ name: webrick
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.9'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.9'
82
96
  email:
83
97
  - me@ryanbeasse.com
84
98
  executables:
@@ -99,6 +113,7 @@ files:
99
113
  - lib/charsi/configuration.rb
100
114
  - lib/charsi/file.rb
101
115
  - lib/charsi/generator.rb
116
+ - lib/charsi/server.rb
102
117
  - lib/charsi/template.rb
103
118
  - templates/site/Gemfile.template
104
119
  - templates/site/assets/css/tailwind.css.template