raindeer 0.5.0 → 0.6.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 +4 -4
- data/lib/pages/pages.rb +48 -0
- data/lib/raindeer/boot.rb +24 -0
- data/lib/router/router.rb +7 -1
- data/lib/router/wildcard_route_event.rb +15 -0
- data/lib/system/layouts/layout_node.rbx +1 -1
- data/lib/version.rb +1 -1
- metadata +46 -2
- /data/lib/system/{system.rb → system_routes.rb} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e0b76037f60987d82171f076418703e068203ea1a9326964c630049a7aef633
|
|
4
|
+
data.tar.gz: 92a5be3103a09b81f287f3dafb74d75cf41761271d2c917500bf762fefb4613a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 06b5fb27769c9319b0c0dbe7ef75cbdab5f5ea6e1c9b116bcd73faffbb9c56211a9818e62aae4ebe27b3a120eb0fc689caabe55e14d751f7461a85a0aeaf9448
|
|
7
|
+
data.tar.gz: d96c8de0e0d25782b167c7fd72bd610463f353379df85024323edfaae941490bb7f751db37effb4112aa31788ba3de9f757bb38c16be937f03ed3329739f9bf5
|
data/lib/pages/pages.rb
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'kramdown'
|
|
4
|
+
require 'kramdown-parser-gfm'
|
|
5
|
+
require 'rouge'
|
|
6
|
+
|
|
7
|
+
module Rain
|
|
8
|
+
class Pages
|
|
9
|
+
include LowType
|
|
10
|
+
|
|
11
|
+
attr_reader :url_paths
|
|
12
|
+
|
|
13
|
+
Result = Struct.new(:metadata, :html)
|
|
14
|
+
|
|
15
|
+
def initialize(metadata:)
|
|
16
|
+
@url_paths = metadata.url_paths
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def process(file_path:)
|
|
20
|
+
metadata, text = parse_file(file_path:)
|
|
21
|
+
html = Kramdown::Document.new(text, input: 'GFM', syntax_highlighter: 'rouge').to_html
|
|
22
|
+
|
|
23
|
+
Result.new(metadata, html)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def parse_file(file_path:)
|
|
29
|
+
dash_lines = []
|
|
30
|
+
data_lines = []
|
|
31
|
+
text_lines = []
|
|
32
|
+
|
|
33
|
+
File.foreach(file_path).with_index do |line, index|
|
|
34
|
+
if line.strip == '---' && dash_lines.count < 2
|
|
35
|
+
dash_lines << line
|
|
36
|
+
next
|
|
37
|
+
elsif dash_lines.count > 0 && dash_lines.count < 2
|
|
38
|
+
data_lines << line
|
|
39
|
+
next
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
text_lines << line
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
[YAML.safe_load(data_lines.join, symbolize_names: true), text_lines.join.strip]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/lib/raindeer/boot.rb
CHANGED
|
@@ -6,9 +6,14 @@ require 'low_type'
|
|
|
6
6
|
require 'observers'
|
|
7
7
|
require 'providers'
|
|
8
8
|
|
|
9
|
+
require_relative '../pages/pages'
|
|
9
10
|
require_relative '../router/router'
|
|
10
11
|
require_relative '../support/config_loader'
|
|
11
12
|
|
|
13
|
+
#################################################
|
|
14
|
+
# INTERNAL API
|
|
15
|
+
#################################################
|
|
16
|
+
|
|
12
17
|
module Rain
|
|
13
18
|
env = {
|
|
14
19
|
host: ENV.fetch('RAIN_HOST', nil),
|
|
@@ -37,6 +42,10 @@ module Rain
|
|
|
37
42
|
end
|
|
38
43
|
end
|
|
39
44
|
|
|
45
|
+
#################################################
|
|
46
|
+
# EXTERNAL API
|
|
47
|
+
#################################################
|
|
48
|
+
|
|
40
49
|
module Raindeer
|
|
41
50
|
class << self
|
|
42
51
|
def router(&block)
|
|
@@ -45,5 +54,20 @@ module Raindeer
|
|
|
45
54
|
end
|
|
46
55
|
end
|
|
47
56
|
|
|
57
|
+
#################################################
|
|
58
|
+
# USER CODE
|
|
59
|
+
#################################################
|
|
60
|
+
|
|
61
|
+
require 'antlers' # LowLoad supports antlers but doesn't make it a hard dependency.
|
|
48
62
|
require 'lowload'
|
|
49
63
|
LowLoad.dirload(File.expand_path('../system', __dir__))
|
|
64
|
+
|
|
65
|
+
application_path = File.expand_path('app', Dir.pwd)
|
|
66
|
+
return unless Dir.exist?(application_path)
|
|
67
|
+
|
|
68
|
+
metadata = LowLoad.dirload(application_path)
|
|
69
|
+
return unless Dir.exist?(File.expand_path('pages', application_path))
|
|
70
|
+
|
|
71
|
+
Providers.define('rain.pages', eager: true) do
|
|
72
|
+
Rain::Pages.new(metadata:)
|
|
73
|
+
end
|
data/lib/router/router.rb
CHANGED
|
@@ -6,6 +6,7 @@ require 'providers'
|
|
|
6
6
|
require_relative 'route'
|
|
7
7
|
require_relative 'route_event'
|
|
8
8
|
require_relative 'trie'
|
|
9
|
+
require_relative 'wildcard_route_event'
|
|
9
10
|
|
|
10
11
|
module Rain
|
|
11
12
|
class Router
|
|
@@ -58,9 +59,14 @@ module Rain
|
|
|
58
59
|
@trie.match(path: event.request.path.delete_suffix('/')).each do |route_event|
|
|
59
60
|
response_event = route_event.trigger
|
|
60
61
|
end
|
|
61
|
-
|
|
62
62
|
return response_event if response_event
|
|
63
63
|
|
|
64
|
+
if @routes['/*']
|
|
65
|
+
route = Route.new(path: event.request.path, verbs: @routes['/*'].verbs)
|
|
66
|
+
wildcard_event = WildcardRouteEvent.trigger(key: '/*', action: :render, route:)
|
|
67
|
+
return wildcard_event if wildcard_event
|
|
68
|
+
end
|
|
69
|
+
|
|
64
70
|
Low::Events::StatusEvent.trigger(status: Low::Types::Status[404], request: event.request)
|
|
65
71
|
end
|
|
66
72
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'low_event'
|
|
4
|
+
|
|
5
|
+
module Rain
|
|
6
|
+
class WildcardRouteEvent < ::LowEvent
|
|
7
|
+
attr_reader :route, :params
|
|
8
|
+
|
|
9
|
+
def initialize(key:, route:, action: :render)
|
|
10
|
+
super(key:, action:)
|
|
11
|
+
|
|
12
|
+
@route = route
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -5,7 +5,7 @@ module System
|
|
|
5
5
|
def render(event:)
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<link rel="stylesheet" href="/
|
|
8
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
|
|
9
9
|
<link rel="stylesheet" href="/system/system.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: raindeer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maedi
|
|
@@ -37,6 +37,48 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: kramdown
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: kramdown-parser-gfm
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: rouge
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
40
82
|
- !ruby/object:Gem::Dependency
|
|
41
83
|
name: low_event
|
|
42
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -190,12 +232,14 @@ files:
|
|
|
190
232
|
- lib/matrix/effects/leet_effect.rb
|
|
191
233
|
- lib/matrix/matrix.rb
|
|
192
234
|
- lib/matrix/stream.rb
|
|
235
|
+
- lib/pages/pages.rb
|
|
193
236
|
- lib/raindeer/boot.rb
|
|
194
237
|
- lib/router/route.rb
|
|
195
238
|
- lib/router/route_event.rb
|
|
196
239
|
- lib/router/router.rb
|
|
197
240
|
- lib/router/trie.rb
|
|
198
241
|
- lib/router/trie_node.rb
|
|
242
|
+
- lib/router/wildcard_route_event.rb
|
|
199
243
|
- lib/support/config_loader.rb
|
|
200
244
|
- lib/system/dashboard_node.rbx
|
|
201
245
|
- lib/system/events_node.rbx
|
|
@@ -206,7 +250,7 @@ files:
|
|
|
206
250
|
- lib/system/routes_node.rbx
|
|
207
251
|
- lib/system/status_404_node.rbx
|
|
208
252
|
- lib/system/status_node.rbx
|
|
209
|
-
- lib/system/
|
|
253
|
+
- lib/system/system_routes.rb
|
|
210
254
|
- lib/version.rb
|
|
211
255
|
homepage: https://codeberg.org/raindeer/raindeer
|
|
212
256
|
licenses: []
|
|
File without changes
|