yaframework 0.4.8 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 63212eea1f540904cec647bd269e65ed74c5f17569d211c5e2df1cacf5e906eb
4
- data.tar.gz: c0d422d3fbcf9f05fb3110062730cfbfa6e943aff65112c2c5262188c79189bf
3
+ metadata.gz: 358c61b6687851be43c785a696574ffc2b2fcda2ecf420a646f0034e9449edc0
4
+ data.tar.gz: 4ecb0b37770f79b4aa441f10c9f773f91901d35bcaecebdd3c2337404357b120
5
5
  SHA512:
6
- metadata.gz: 4c03d0a6d9a2e8a0b59403f4814a79f32169f06984f40a0f62f41d1ed03e3cea55ee7cb53e677d557de3763dbf1e3846152429026983d59b3871e3d813fad60f
7
- data.tar.gz: 9f07579ed44407f75a5431f5c65d33c3f7824c133e672a0ed2278f8033307c37c2b8456eff10a10c8864ad128f69f289a4450bc0143e2d4fb9b34a7c5916953d
6
+ metadata.gz: 168ca10283730aff4c81df587a06c96c6f35e131d67e614cb06909af1f891081b503f33dfa88eeccb062ec230a49a1d8c71d6537c82d87fbd797346426430b77
7
+ data.tar.gz: 7323f3ba8fdc11b9b3fbcd6b5d1f88516a9084e7ff7c19bd3130ef96dcbdad2c721ab4be7e9f8964f8314e5e468e2fa47d9a6c99a287307b43a6c6f2e9f62d94
data/.rubocop.yml CHANGED
@@ -16,6 +16,9 @@ Style/Documentation:
16
16
  Metrics/MethodLength:
17
17
  Enabled: false
18
18
 
19
+ ClassLength:
20
+ Max: 250
21
+
19
22
  Metrics/AbcSize:
20
23
  Max: 25
21
24
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [0.5.2] - 2021-07-26
2
+
3
+ - Error while rendering template fixed
4
+
5
+ ## [0.5.1] - 2021-07-26
6
+
7
+ - `helpers` and `configure` methods added
8
+
9
+ ## [0.5.0] - 2021-07-25
10
+
11
+ - Templates rendering added
12
+
13
+ ## [0.4.9] - 2021-07-25
14
+
15
+ - Some useful aliases added
16
+
1
17
  ## [0.4.8] - 2021-07-25
2
18
 
3
19
  - Before/after hooks added
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yaframework (0.4.8)
4
+ yaframework (0.5.2)
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
data/examples/README.md CHANGED
@@ -36,11 +36,26 @@ Here are some examples of applications created with Yaframework:
36
36
 
37
37
  Adding and deleting cookies
38
38
 
39
+
39
40
  8. [**Hooks**](https://github.com/maxbarsukov/yaframework/blob/master/examples/before_after_hooks.rb)
40
41
 
41
42
  How to use `before` and `after` hooks
42
43
 
43
44
 
45
+ 9. [**Rendering**](https://github.com/maxbarsukov/yaframework/tree/master/examples/rendering)
46
+
47
+ Rendering your `.erb` (or any else) files and partials using tilt.
48
+
49
+
50
+ 10. [**Helpers**](https://github.com/maxbarsukov/yaframework/blob/master/examples/helpers.rb)
51
+
52
+ Example of using helpers
53
+
54
+
55
+ 11. [**Configure**](https://github.com/maxbarsukov/yaframework/blob/master/examples/configure.rb)
56
+
57
+ How to configure your application
58
+
44
59
  ## Installation
45
60
 
46
61
  Clone this repo and go to this folder.
@@ -49,4 +64,3 @@ Then, run `bundle install` to install this gem.
49
64
  ## Run
50
65
 
51
66
  Run with `ruby hello-world.rb` or any other file and view at http://localhost:4567
52
-
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaframework"
4
+ app = Yaframework::Application
5
+
6
+ app.configure do
7
+ @app_name = "Your awesome app"
8
+ end
9
+
10
+ app.get "/" do
11
+ "Hey, that's #{@app_name}"
12
+ end
13
+
14
+ app.listen(9292)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaframework"
4
+ app = Yaframework::Application
5
+
6
+ app.helpers do
7
+ def hello
8
+ "Hello"
9
+ end
10
+
11
+ def colon
12
+ ", "
13
+ end
14
+ end
15
+
16
+ app.helpers do
17
+ def world
18
+ "world!"
19
+ end
20
+ end
21
+
22
+ app.get "/" do
23
+ hello + colon + world
24
+ end
25
+
26
+ app.listen(9292)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaframework"
4
+ app = Yaframework::Application
5
+
6
+ app.before do
7
+ @number = Random.rand
8
+ puts @number
9
+ end
10
+
11
+ app.get "/" do
12
+ render "index"
13
+ end
14
+
15
+ app.listen(4567)
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaframework"
4
+ require "./app"
5
+
6
+ run app
@@ -0,0 +1,4 @@
1
+ <h1>Look me in index.erb file</h1>
2
+
3
+ <p>It works!</p>
4
+ <%= partial "partial", number: @number %>
@@ -0,0 +1,10 @@
1
+ <html lang="en">
2
+ <head>
3
+ <meta charset="utf-8">
4
+ <title>Example app</title>
5
+ </head>
6
+
7
+ <body>
8
+ <%= content %>
9
+ </body>
10
+ </html>
@@ -0,0 +1 @@
1
+ <p>Yout number was <b><%= number %></b></p>
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,15 +1,21 @@
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
11
+ alias req request
12
+ alias res response
8
13
 
9
14
  def initialize
10
15
  @routes = Hash.new([])
11
16
  @before_hooks = []
12
17
  @after_hooks = []
18
+ @settings = {}
13
19
  @inbox = {}
14
20
  end
15
21
 
@@ -19,6 +25,14 @@ module Yaframework
19
25
  end
20
26
  end
21
27
 
28
+ def helpers(&block)
29
+ exec(block) if block_given?
30
+ end
31
+
32
+ def configure(&block)
33
+ exec(block) if block_given?
34
+ end
35
+
22
36
  def call(env)
23
37
  @env = env
24
38
  @request = Yaframework::Request.new @env
@@ -38,6 +52,10 @@ module Yaframework
38
52
  @after_hooks << block
39
53
  end
40
54
 
55
+ def params
56
+ request.params
57
+ end
58
+
41
59
  def handle(status, &block)
42
60
  @inbox[status] = block
43
61
  end
@@ -120,4 +138,5 @@ module Yaframework
120
138
  end
121
139
 
122
140
  Application = Base.new
141
+ Application.setup
123
142
  end
@@ -0,0 +1,46 @@
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", Dir.pwd)
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) { Tilt.new(template, 1, options.merge(outvar: "@_output")) }.render(self, locals, &block)
40
+ end
41
+
42
+ def _cache
43
+ Thread.current[:_cache] ||= Tilt::Cache.new
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yaframework
4
- VERSION = "0.4.8"
4
+ VERSION = "0.5.2"
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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaframework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxbarsukov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-25 00:00:00.000000000 Z
11
+ date: 2021-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -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
@@ -108,15 +122,23 @@ files:
108
122
  - examples/Gemfile
109
123
  - examples/README.md
110
124
  - examples/before_after_hooks.rb
125
+ - examples/configure.rb
111
126
  - examples/content_types.rb
112
127
  - examples/cookies.rb
113
128
  - examples/error_handling.rb
114
129
  - examples/halts_and_redirects.rb
115
130
  - examples/headers.rb
116
131
  - examples/hello_world.rb
132
+ - examples/helpers.rb
117
133
  - examples/params.rb
134
+ - examples/rendering/app.rb
135
+ - examples/rendering/config.ru
136
+ - examples/rendering/views/index.erb
137
+ - examples/rendering/views/layout.erb
138
+ - examples/rendering/views/partial.erb
118
139
  - lib/yaframework.rb
119
140
  - lib/yaframework/base.rb
141
+ - lib/yaframework/render.rb
120
142
  - lib/yaframework/request.rb
121
143
  - lib/yaframework/response.rb
122
144
  - lib/yaframework/version.rb