isola 0.1.1 → 0.1.2

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: d1d603cb56640c3cef57383a675c18280a05f7e31cb0b7e12e93a590ab5a3756
4
- data.tar.gz: a143ef3efdb79ea497a74c0843189d8b40e21f1ab4bed895f8533648e50fb714
3
+ metadata.gz: ae141ebf3510995229e7bc854c3c43a566deb7f74b47f5c28c64840c1f25db18
4
+ data.tar.gz: 458948286fb8f457a77e5a7d9e9ed7805258ea53a9c6cb5ee3e4640a35d9f41e
5
5
  SHA512:
6
- metadata.gz: 21a9977148002a45b0bed065e2f22c12da1378b6f0354ee0758bcded391ee9c9b574511d4ce37fa8e0615077f02e5ce281d0950f11a42ae83612fcefab165216
7
- data.tar.gz: f93813208135b400d2de4bb6e8d49c4de710fe722f704e1d7f13a5275e008323bfe64222f52e2fb2885648527cb920b459874cbe8978ff06540f32be674caa76
6
+ metadata.gz: 7909154b135a3667a4289d5e9e91ddcf3e79029801e17b103ddebe906789561ea6a11499de3cb7e090bb83e38339c166786f8b05f1053a536464f3ec6f6843fa
7
+ data.tar.gz: '083de5dffb0186058bd30f4edf7d41e7b9a3472ea09b5b661654a4456585b74062cbf5ab11069af43c4994cf16e80626b5b5a90834effa2f59854c6091e0b246'
data/USAGE.ja.md CHANGED
@@ -59,7 +59,7 @@ title: トップページ
59
59
  ```erb
60
60
  <html>
61
61
  <head>
62
- <title><%= page.title %></title>
62
+ <title><%= page[:title] %></title>
63
63
  </head>
64
64
  <body>
65
65
  <%= content %>
@@ -70,8 +70,8 @@ title: トップページ
70
70
  テンプレート内では以下が使えます:
71
71
 
72
72
  - `content` — ページ本文
73
- - `page.title` など — front-matterの値
74
- - `site.title`, `site.url`, `site.lang` — サイト設定
73
+ - `page[:title]`, `page[:lang]` など — front-matterの値(`lang`はサイト設定から自動的に含まれますが、設定すれば上書きされます)
74
+ - `site[:title]`, `site[:url]` など — サイト設定
75
75
  - `include 'head', key: value` — インクルードの挿入
76
76
 
77
77
  ### 5. ビルド
@@ -83,6 +83,22 @@ isola build
83
83
 
84
84
  `_site/`に生成されます。
85
85
 
86
+ ### 6. 開発サーバー
87
+
88
+ ```bash
89
+ cd my-site
90
+ isola serve
91
+ ```
92
+
93
+ サイトをビルドし、ローカル開発サーバーを起動します。デフォルトでは `http://127.0.0.1:4444` で待ち受けます。ホストとポートは `_config.yaml` で変更できます:
94
+
95
+ ```yaml
96
+ host: 127.0.0.1
97
+ port: 4444
98
+ ```
99
+
100
+ サーバーはファイルの変更を監視し、自動的にサイトを再ビルドします。`</body>` タグを含むHTMLページにはライブリロード用のスクリプトが挿入され、再ビルド後にブラウザが自動的にリロードされます。ライブリロードが機能するのは `</body>` タグを含むHTMLファイルのみです。
101
+
86
102
  ## ファイルの処理
87
103
 
88
104
  Isolaが処理するテンプレートエンジンは現在 **ERB**(`.erb`)と **Markdown**(`.md`, `.markdown`, `.mkd`)のみです。
data/USAGE.md CHANGED
@@ -59,7 +59,7 @@ Use the `.md.erb` extension to enable ERB inside Markdown.
59
59
  ```erb
60
60
  <html>
61
61
  <head>
62
- <title><%= page.title %></title>
62
+ <title><%= page[:title] %></title>
63
63
  </head>
64
64
  <body>
65
65
  <%= content %>
@@ -70,8 +70,8 @@ Use the `.md.erb` extension to enable ERB inside Markdown.
70
70
  The following are available in templates:
71
71
 
72
72
  - `content` — page body
73
- - `page.title` etc. — front-matter values
74
- - `site.title`, `site.url`, `site.lang` — site configuration
73
+ - `page[:title]`, `page[:lang]` etc. — front-matter values (including `lang` from site config; you can overwrite in the page front-matter)
74
+ - `site[:title]`, `site[:url]` etc. — site configuration
75
75
  - `include 'head', key: value` — insert an include
76
76
 
77
77
  ### 5. Build
@@ -83,6 +83,22 @@ isola build
83
83
 
84
84
  Output is generated in `_site/`.
85
85
 
86
+ ### 6. Development Server
87
+
88
+ ```bash
89
+ cd my-site
90
+ isola serve
91
+ ```
92
+
93
+ Builds the site and starts a local development server. By default, the server listens on `http://127.0.0.1:4444`. You can change the host and port in `_config.yaml`:
94
+
95
+ ```yaml
96
+ host: 127.0.0.1
97
+ port: 4444
98
+ ```
99
+
100
+ The server watches for file changes and automatically rebuilds the site. HTML pages that contain a `</body>` tag are injected with a live-reload script, so the browser refreshes automatically after each rebuild. Live reload only works for HTML files with a `</body>` tag.
101
+
86
102
  ## File Processing
87
103
 
88
104
  Isola currently supports only **ERB** (`.erb`) and **Markdown** (`.md`, `.markdown`, `.mkd`) as template engines.
data/exe/isola CHANGED
@@ -19,13 +19,13 @@ class IsolaCLI < Thor
19
19
  site = construct_site
20
20
  site.build
21
21
 
22
- site_dir = File.join(site.root_dir, site.config[:destination])
23
- host = site.config[:host]
24
- port = site.config[:port]
22
+ site_dir = File.join(site[:root_dir], site[:destination])
23
+ host = site[:host]
24
+ port = site[:port]
25
25
  server = Isola::DevServer.new(site_dir, host, port)
26
26
 
27
27
  watcher = Isola::Watcher.new(site) { server.notify_reload }
28
- listener = Listen.to(File.expand_path(site.root_dir), &watcher.method(:handle_changes))
28
+ listener = Listen.to(File.expand_path(site[:root_dir]), &watcher.method(:handle_changes))
29
29
  listener.start
30
30
 
31
31
  puts "serving at http://#{host}:#{port}"
data/lib/isola/context.rb CHANGED
@@ -5,14 +5,14 @@ module Isola
5
5
  attr_reader :site, :content, :layout
6
6
  def initialize(page, site)
7
7
  @page_source = page
8
- @page_meta = Data.define(*page.meta.keys).new(**page.meta)
8
+ @meta = {lang: site[:lang]}.merge(page.meta).freeze
9
9
  @site = site
10
10
  @content = ""
11
11
  @layout = {}
12
12
  end
13
13
 
14
14
  def page
15
- @page_meta
15
+ @meta
16
16
  end
17
17
 
18
18
  def include name, params = {}
@@ -8,7 +8,7 @@ module Isola
8
8
 
9
9
  def readpartial(maxlen, buf = +"")
10
10
  if !@data
11
- @data = @queue.pop
11
+ @data = @queue.pop.dup
12
12
  @data.force_encoding(Encoding::ASCII_8BIT)
13
13
  end
14
14
 
data/lib/isola/site.rb CHANGED
@@ -18,20 +18,11 @@ module Isola
18
18
  collect_files
19
19
  end
20
20
 
21
- def title
22
- @config[:title]
23
- end
24
-
25
- def url
26
- @config[:url]
27
- end
28
-
29
- def lang
30
- @config[:default_language]
31
- end
32
-
33
- def root_dir
34
- @config[:root_dir]
21
+ def [] key
22
+ if key == :lang
23
+ key = :default_language
24
+ end
25
+ @config[key]
35
26
  end
36
27
 
37
28
  def supported_ext? ext
@@ -76,7 +67,7 @@ module Isola
76
67
  private
77
68
 
78
69
  def collect_files
79
- @file_handler = FileHandler.new(root_dir, excludes: @config[:excludes])
70
+ @file_handler = FileHandler.new(config[:root_dir], excludes: @config[:excludes])
80
71
  @parsed_layouts = {}
81
72
  @parsed_includes = {}
82
73
  end
@@ -91,7 +82,7 @@ module Isola
91
82
  end
92
83
 
93
84
  def read_in_site(p)
94
- File.read(File.join(root_dir, p))
85
+ File.read(File.join(config[:root_dir], p))
95
86
  end
96
87
  end
97
88
  end
data/lib/isola/source.rb CHANGED
@@ -12,6 +12,10 @@ module Isola
12
12
  end
13
13
  end
14
14
 
15
+ def [] key
16
+ @meta[key]
17
+ end
18
+
15
19
  def render(context, site, params = {})
16
20
  path = @filepath.dup
17
21
  rendered = @content.dup
data/lib/isola/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Isola
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isola
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi Kojima
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: 4.0.0
116
+ version: 3.4.0
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - ">="