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 +4 -4
- data/bin/charsi +10 -0
- data/charsi.gemspec +2 -1
- data/lib/charsi/app.rb +7 -0
- data/lib/charsi/server.rb +22 -0
- data/lib/charsi/template.rb +11 -1
- data/lib/charsi.rb +1 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68bef40ef4cf1b6c65db0027a9df2ea6d788821d599aea4ee1682543fd11b38e
|
4
|
+
data.tar.gz: 9f3f4f5acda8d2bc23fab91591857cdc032099d12c32567f8519f91a4ac4e66f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
data/lib/charsi/template.rb
CHANGED
@@ -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
|
-
|
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
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.
|
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
|