yaframework 0.4.9 → 0.5.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: 6cfe57c449982f1b19f548975c965a520181ae0f83937efbfd60cb51c3d20446
4
- data.tar.gz: 237e0074011df90023813924fcf40217f0f168cd0237868e56f6903ca367df9c
3
+ metadata.gz: 374739919ee6fdbc46ee3fc95f5604c162a358d21d593b6709cefa1add1af42a
4
+ data.tar.gz: 1a021b3a32f2358f5444759b30316e6670cd300121a265e95787889e58fdcc70
5
5
  SHA512:
6
- metadata.gz: 6459c931aaed3114f701f6d096dff733a007e94230d6d71320c64847ecba74d99656189a960ab299c58257542968e8e131c6f1dd54f6d96f2f1f1c1a6ea42cdd
7
- data.tar.gz: 561ab785fcf23d3101249f79751b129678a3e00b0e6dd087a98ac8fb4773709e45b80363bd723b563d7f98b1066b035ab09c0911793c430ce99fc045e0771e1b
6
+ metadata.gz: cdca19d28dfdbc2e980357242811bda91e685b383f859e19b0aafdb2e9f66d69eab5c2201f5a9da751648bf6b667b33ffef6a494555a6258bd4dd36ed4efc914
7
+ data.tar.gz: 2029fec4b50c8c9039f7b4449c7ad09198a07e4f979cd36b5b197e8523846c5a3155038b4e7aa8d13e012397003b3822a1f630ceecf2d941f5c412f86f726114
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.5.0] - 2021-07-25
2
+
3
+ - Templates rendering added
4
+
1
5
  ## [0.4.9] - 2021-07-25
2
6
 
3
7
  - Some useful aliases added
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yaframework (0.4.9)
4
+ yaframework (0.5.0)
5
5
  rack (~> 2.2, >= 2.2.3)
6
+ tilt (~> 2.0)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -29,6 +30,7 @@ GEM
29
30
  rubocop-ast (1.7.0)
30
31
  parser (>= 3.0.1.1)
31
32
  ruby-progressbar (1.11.0)
33
+ tilt (2.0.10)
32
34
  unicode-display_width (2.0.0)
33
35
 
34
36
  PLATFORMS
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaframework"
4
+ app = Yaframework::Application
5
+
6
+ app.get "/" do
7
+ render "index"
8
+ end
9
+
10
+ app.listen(4567)
@@ -0,0 +1,3 @@
1
+ require "yaframework"
2
+
3
+ run app
File without changes
File without changes
data/lib/yaframework.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative "yaframework/base"
4
4
  require_relative "yaframework/request"
5
5
  require_relative "yaframework/response"
6
+ require_relative "yaframework/render"
6
7
 
7
8
  module Yaframework
8
9
  end
@@ -1,10 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rack"
4
+ require_relative "../yaframework/render"
4
5
 
5
6
  module Yaframework
6
7
  class Base
7
- attr_reader :routes, :request, :response, :env
8
+ include Yaframework::Render
9
+
10
+ attr_reader :routes, :request, :response, :env, :settings
8
11
  alias req request
9
12
  alias res response
10
13
 
@@ -12,6 +15,7 @@ module Yaframework
12
15
  @routes = Hash.new([])
13
16
  @before_hooks = []
14
17
  @after_hooks = []
18
+ @settings = {}
15
19
  @inbox = {}
16
20
  end
17
21
 
@@ -126,4 +130,5 @@ module Yaframework
126
130
  end
127
131
 
128
132
  Application = Base.new
133
+ Application.setup
129
134
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tilt"
4
+
5
+ module Yaframework
6
+ module Render
7
+ def setup(settings = {})
8
+ @settings = settings
9
+ @settings[:template_engine] ||= "erb"
10
+ @settings[:layout] ||= "layout"
11
+ @settings[:views] ||= File.expand_path("views", File.dirname($PROGRAM_NAME))
12
+ @settings[:options] ||= {
13
+ default_encoding: Encoding.default_external
14
+ }
15
+ end
16
+
17
+ def render(template, locals = {}, layout = @settings[:layout])
18
+ res.headers["Content-Type"] ||= "text/html; charset=utf-8"
19
+ res.write(view(template, locals, layout))
20
+ end
21
+
22
+ def view(template, locals = {}, layout = @settings[:layout])
23
+ partial(layout, locals.merge(content: partial(template, locals)))
24
+ end
25
+
26
+ def partial(template, locals = {})
27
+ _render(template_path(template), locals, @settings[:options])
28
+ end
29
+
30
+ def template_path(template)
31
+ dir = @settings[:views]
32
+ ext = @settings[:template_engine]
33
+ File.join(dir, "#{template}.#{ext}")
34
+ end
35
+
36
+ private
37
+
38
+ def _render(template, locals = {}, options = {}, &block)
39
+ _cache.fetch(template) {
40
+ Tilt.new(template, 1, options.merge(outvar: "@_output"))
41
+ }.render(self, locals, &block)
42
+ end
43
+
44
+ def _cache
45
+ Thread.current[:_cache] ||= Tilt::Cache.new
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yaframework
4
- VERSION = "0.4.9"
4
+ VERSION = "0.5.0"
5
5
  end
data/yaframework.gemspec CHANGED
@@ -33,5 +33,6 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "rake", "~> 13.0"
34
34
  spec.add_development_dependency "rubocop", "~> 1.7"
35
35
 
36
- spec.add_runtime_dependency "rack", "~> 2.2", ">= 2.2.3"
36
+ spec.add_dependency "rack", "~> 2.2", ">= 2.2.3"
37
+ spec.add_dependency "tilt", "~> 2.0"
37
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaframework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.9
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxbarsukov
@@ -86,6 +86,20 @@ dependencies:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: 2.2.3
89
+ - !ruby/object:Gem::Dependency
90
+ name: tilt
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.0'
89
103
  description: What could be better than one more Sinatra?
90
104
  email:
91
105
  - maximbarsukov@bk.ru
@@ -115,8 +129,13 @@ files:
115
129
  - examples/headers.rb
116
130
  - examples/hello_world.rb
117
131
  - examples/params.rb
132
+ - examples/rendering/app.rb
133
+ - examples/rendering/config.ru
134
+ - examples/rendering/views/index.erb
135
+ - examples/rendering/views/layout.erb
118
136
  - lib/yaframework.rb
119
137
  - lib/yaframework/base.rb
138
+ - lib/yaframework/render.rb
120
139
  - lib/yaframework/request.rb
121
140
  - lib/yaframework/response.rb
122
141
  - lib/yaframework/version.rb