nekonote-framework 1.0.0.pre.beta3 → 1.0.0.pre.beta4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -21
- data/data/structure/preference/development/route.yml +3 -1
- data/lib/nekonote/core.rb +1 -1
- data/lib/nekonote/exception/error.rb +4 -2
- data/lib/nekonote/exception/preference_error.rb +2 -2
- data/lib/nekonote/preference.rb +98 -84
- data/lib/nekonote/rackup.rb +4 -2
- data/lib/nekonote/spec.rb +1 -1
- data/lib/nekonote/view.rb +11 -12
- data/lib/nekonote/yaml_access.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93b75ef49754ba2acb077f4e48561f052963a1003069aacb5ea5e25c3b63ad8c
|
4
|
+
data.tar.gz: 991045d68698d89d11998f3799ae5ba0c9a7e8d06f79ea0a5b9b93cfe382e477
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5004e020a5d4c40ccbb99a41025eda8c894a71c597f1f6486d008ecd3390f7815485761f2e25bf4a02ff4d2d1deed37b0711cc23fa84902cea84a54f96db56a
|
7
|
+
data.tar.gz: fbd87c7eb9ca444e8ac5761a346ea4c7df3fe8290d570fa80d5376f6dc9db3c968216e93168a50b3c705b29fce981d9581a42d930027438edb05a20f10b72a08
|
data/README.md
CHANGED
@@ -1,44 +1,43 @@
|
|
1
1
|
# Nekonote Framework
|
2
|
-
|
3
|
-
Nekonote Framework is a small web application framework that helps your web development.
|
2
|
+
Simple and Lightweight Ruby Framework for Web Development
|
4
3
|
|
5
4
|
## Features
|
6
5
|
|
7
6
|
### Simple
|
8
|
-
|
7
|
+
Nekonote Framework is simple and easy to learn.
|
9
8
|
|
10
9
|
### Lightweight
|
11
|
-
|
10
|
+
It's not a kind of full-stack framework. Small and Lightweight.
|
12
11
|
|
13
12
|
### Rack-based
|
14
|
-
|
13
|
+
You can generate a Rack application easily.
|
15
14
|
|
16
15
|
### MVC
|
17
|
-
|
16
|
+
It's Push-MVC based architecture.
|
18
17
|
|
19
|
-
###
|
20
|
-
|
18
|
+
### Structure
|
19
|
+
You can get started with a application structure.
|
21
20
|
|
22
|
-
###
|
23
|
-
|
21
|
+
### Web Server
|
22
|
+
"nekonote" command can controll a web server.
|
24
23
|
|
25
|
-
###
|
26
|
-
You can
|
24
|
+
### Routing
|
25
|
+
You can define routes for your application in the configuration files.
|
27
26
|
|
28
|
-
### Error
|
29
|
-
You may
|
27
|
+
### Error Routes
|
28
|
+
You may define the routes for when some exceptional things happend.
|
30
29
|
|
31
|
-
###
|
32
|
-
|
30
|
+
### Environments
|
31
|
+
You can configure environments for your application.
|
33
32
|
|
34
33
|
### GUI Debuger
|
35
|
-
|
34
|
+
It can display exception's details on your browser.
|
36
35
|
|
37
|
-
###
|
38
|
-
|
36
|
+
### Logger
|
37
|
+
It provides you thread-safe logging.
|
39
38
|
|
40
|
-
|
41
|
-
|
39
|
+
Template Engine
|
40
|
+
The templating engine on Nekonote Framework is Liquid.
|
42
41
|
|
43
42
|
## Getting Started
|
44
43
|
|
@@ -13,11 +13,13 @@
|
|
13
13
|
# custom: some value # unknown fields are not directive. It will be assigned into your templates.
|
14
14
|
|
15
15
|
# ----------------------
|
16
|
-
#
|
16
|
+
# routing options
|
17
17
|
# ----------------------
|
18
18
|
preference:
|
19
19
|
path_as_regexp: false
|
20
20
|
allow_dup_slash: false
|
21
|
+
template_file_extension: tpl
|
22
|
+
layout_file_extension: tpl
|
21
23
|
|
22
24
|
# ----------------------
|
23
25
|
# Routes
|
data/lib/nekonote/core.rb
CHANGED
@@ -83,7 +83,7 @@ module Nekonote
|
|
83
83
|
|
84
84
|
# load and initialize logger if it has been enabled
|
85
85
|
def self.init_logger
|
86
|
-
pref_logger = Preference.instance.get_logger
|
86
|
+
pref_logger = Preference.instance.get_logger
|
87
87
|
|
88
88
|
if pref_logger['write_exception'] == true
|
89
89
|
@@logger_write_exception = true
|
@@ -16,6 +16,7 @@ module Nekonote
|
|
16
16
|
MSG_INVALID_FIELD = %(Invalid format field '%s' in '%s'.)
|
17
17
|
MSG_MISSING_CONST = %(Not found such class or module or contant -> '%s'.)
|
18
18
|
MSG_EMPTY_FILE_NOT_EMPTY = %('%s' is not empty. Failed to create an empty file.)
|
19
|
+
MSG_NOT_FOUND_DIRECTIVE = %('%s' directive is required in '%s')
|
19
20
|
|
20
21
|
# write message as warning to log file if logging is enabled
|
21
22
|
# @param string msg
|
@@ -32,8 +33,6 @@ module Nekonote
|
|
32
33
|
|
33
34
|
# @param StandardError e
|
34
35
|
def self.abort(e)
|
35
|
-
logging_error e
|
36
|
-
|
37
36
|
# if executed from cli do not throw exception
|
38
37
|
if Nekonote.from_cli?
|
39
38
|
warn "#{e.class}; =(-x-=;)" + $/
|
@@ -44,6 +43,9 @@ module Nekonote
|
|
44
43
|
exit 1
|
45
44
|
end
|
46
45
|
|
46
|
+
# logging when logger is enabled
|
47
|
+
logging_error e
|
48
|
+
|
47
49
|
raise e
|
48
50
|
end
|
49
51
|
|
@@ -4,8 +4,8 @@ module Nekonote
|
|
4
4
|
MSG_WRONG_YAML_SYNTAX = %(The yaml file '%s' is invalid syntax.)
|
5
5
|
MSG_MISSING_INCLUDE = %(No such field '%s' in %s.)
|
6
6
|
MSG_INVALID_HANDLER_NAME = %(Handler class name '%s' is invalid.)
|
7
|
-
MSG_DUPLICATE_PATH = %(There is the duplicate path in %s. Values of 'path' directive are supposed to be
|
8
|
-
MSG_EVAL_MIDDLEWARES = %(
|
7
|
+
MSG_DUPLICATE_PATH = %(There is the duplicate path in %s. Values of 'path' directive are supposed to be unique.)
|
8
|
+
MSG_EVAL_MIDDLEWARES = %(Failed to run '%s')
|
9
9
|
MSG_FAILED_INI_HANDLER = %(Failed to make a %s class object.)
|
10
10
|
end
|
11
11
|
end
|
data/lib/nekonote/preference.rb
CHANGED
@@ -8,10 +8,18 @@ module Nekonote
|
|
8
8
|
# for route.yml
|
9
9
|
FIELD_ROUTE_INCLUDE = 'include'
|
10
10
|
|
11
|
-
#
|
12
|
-
|
11
|
+
# routing options
|
12
|
+
FIELD_ROUTING_OPTIONS = 'preference'
|
13
13
|
FIELD_OPTION_ROUTE_REGEXP = 'path_as_regexp'
|
14
14
|
FIELD_OPTION_ALLOW_DUP_SLASH = 'allow_dup_slash'
|
15
|
+
FIELD_OPTION_TEMPLATE_EXT = 'template_file_extension'
|
16
|
+
FIELD_OPTION_LAYOUT_EXT = 'layout_file_extension'
|
17
|
+
|
18
|
+
# default values for routing options
|
19
|
+
DEFAULT_OPTION_ROUTE_REGEXP = false
|
20
|
+
DEFAULT_OPTION_ALLOW_DUP_SLASH = false
|
21
|
+
DEFAULT_OPTION_TEMPLATE_FILE_EXT = 'tpl'
|
22
|
+
DEFAULT_OPTION_LAYOUT_FILE_EXT = 'tpl'
|
15
23
|
|
16
24
|
# for route_error.yml
|
17
25
|
FIELD_ROUTE_ERR_MISSING_ROUTE = 'missing_route'
|
@@ -63,8 +71,7 @@ module Nekonote
|
|
63
71
|
:path_logger_yml
|
64
72
|
|
65
73
|
def initialize
|
66
|
-
|
67
|
-
path = Nekonote.get_root_path + YamlAccess::DIR_PREFERENCE + "/#{env}/"
|
74
|
+
path = Nekonote.get_root_path + YamlAccess::DIR_PREFERENCE + "/#{Nekonote.get_env}/"
|
68
75
|
|
69
76
|
@path_route_yml = path + 'route.yml'
|
70
77
|
@path_route_include_yml = path + 'route_include.yml'
|
@@ -73,132 +80,139 @@ module Nekonote
|
|
73
80
|
@path_middlewares_rb = path + 'middlewares.rb'
|
74
81
|
@path_logger_yml = path + 'logger.yml'
|
75
82
|
|
76
|
-
|
77
|
-
@parsed_route_include_yml = nil
|
78
|
-
@parsed_route_error_yml = nil
|
79
|
-
@parsed_public_yml = nil
|
80
|
-
@parsed_mw_yml = nil
|
81
|
-
@parsed_logger_yml = nil
|
82
|
-
|
83
|
-
# in route.yml
|
84
|
-
@is_path_regexp = nil
|
85
|
-
@is_allow_dup_slash = nil
|
86
|
-
|
87
|
-
# in middleware.yml
|
83
|
+
# check if GUI debugger is on? this value will be set from rackup
|
88
84
|
@is_enabled_show_exceptions = nil
|
89
85
|
|
90
|
-
# check
|
86
|
+
# check if config.ru and route.yml exists
|
91
87
|
if !Util::Filer.available_file? 'config.ru'
|
92
88
|
msg = Error::MSG_MISSING_RACKUP% @@root_path + $/
|
93
89
|
msg += Error::SPACE + Error::MSG_WRONG_ROOT
|
94
90
|
raise Error, msg
|
95
|
-
|
96
|
-
|
97
|
-
if !Util::Filer.available_file? @path_route_yml
|
91
|
+
elsif !Util::Filer.available_file? @path_route_yml
|
98
92
|
raise PreferenceError, Error::MSG_MISSING_FILE% @path_route_yml
|
99
93
|
end
|
100
|
-
end
|
101
|
-
|
102
|
-
# @param string field
|
103
|
-
# @return bool
|
104
|
-
public
|
105
|
-
def has_error_route?(field)
|
106
|
-
pref = get_route_error
|
107
94
|
|
108
|
-
#
|
109
|
-
|
110
|
-
Error.warning "Missing a file which for error routes #{@path_route_error_yml}."
|
111
|
-
return false
|
112
|
-
end
|
113
|
-
|
114
|
-
return pref[field].is_a?(Hash) && pref[field][FIELD_ROUTE_HANDLER].is_a?(String)
|
95
|
+
# read preferences from configuration files
|
96
|
+
init_pref
|
115
97
|
end
|
116
98
|
|
117
|
-
# @
|
118
|
-
# @
|
99
|
+
# @return hash
|
100
|
+
# @throws PreferenceError
|
119
101
|
public
|
120
|
-
def get_route
|
121
|
-
if !@parsed_route_yml.is_a?(Hash) || fresh
|
122
|
-
@parsed_route_yml = YamlAccess::get_parsed_route @path_route_yml
|
123
|
-
if @parsed_route_yml.size == 0
|
124
|
-
raise PreferenceError, PreferenceError::MSG_EMPTY_YAML% @path_route_yml
|
125
|
-
end
|
126
|
-
end
|
102
|
+
def get_route
|
127
103
|
return @parsed_route_yml
|
128
104
|
end
|
129
105
|
|
130
|
-
# @param bool fresh
|
131
106
|
# @return hash
|
132
107
|
public
|
133
|
-
def get_route_include
|
134
|
-
if !@parsed_route_include_yml.is_a?(Hash) || fresh
|
135
|
-
@parsed_route_include_yml = YamlAccess::get_parsed @path_route_include_yml
|
136
|
-
end
|
108
|
+
def get_route_include
|
137
109
|
return @parsed_route_include_yml
|
138
110
|
end
|
139
111
|
|
140
|
-
# @param bool fresh
|
141
112
|
# @return hash
|
142
113
|
public
|
143
|
-
def get_route_error
|
144
|
-
if !@parsed_route_error_yml.is_a?(Hash) || fresh
|
145
|
-
@parsed_route_error_yml = YamlAccess::get_parsed @path_route_error_yml
|
146
|
-
end
|
114
|
+
def get_route_error
|
147
115
|
return @parsed_route_error_yml
|
148
116
|
end
|
149
117
|
|
150
|
-
# @param bool fresh
|
151
118
|
# @return hash
|
152
119
|
public
|
153
|
-
def get_public
|
154
|
-
if !@parsed_public_yml.is_a?(Hash) || fresh
|
155
|
-
@parsed_public_yml = YamlAccess::get_parsed @path_public_yml
|
156
|
-
end
|
120
|
+
def get_public
|
157
121
|
return @parsed_public_yml
|
158
122
|
end
|
159
123
|
|
160
|
-
# @param bool fresh
|
161
124
|
# @return hash
|
162
125
|
public
|
163
|
-
def get_logger
|
164
|
-
if !@parsed_logger_yml.is_a?(Hash) || fresh
|
165
|
-
@parsed_logger_yml = YamlAccess::get_parsed @path_logger_yml
|
166
|
-
end
|
126
|
+
def get_logger
|
167
127
|
return @parsed_logger_yml
|
168
128
|
end
|
169
129
|
|
170
|
-
# @param
|
130
|
+
# @param string field
|
171
131
|
# @return bool
|
172
132
|
public
|
173
|
-
def
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
if pref[FIELD_OPTION_ROUTE].is_a?(Hash) \
|
178
|
-
&& (pref[FIELD_OPTION_ROUTE][FIELD_OPTION_ROUTE_REGEXP] == true || pref[FIELD_OPTION_ROUTE][FIELD_OPTION_ROUTE_REGEXP] == 1)
|
179
|
-
@is_path_regexp = true # using Nekonote::URLMapper
|
180
|
-
else
|
181
|
-
@is_path_regexp = false # using ::Rack::URLMap
|
182
|
-
end
|
133
|
+
def has_error_route?(field)
|
134
|
+
# not found route_error.yml just return false, error pages is not required
|
135
|
+
if @parsed_route_error_yml == nil
|
136
|
+
return false
|
183
137
|
end
|
184
138
|
|
139
|
+
return @parsed_route_error_yml.is_a?(Hash) && @parsed_route_error_yml[field][FIELD_ROUTE_HANDLER].is_a?(String)
|
140
|
+
end
|
141
|
+
|
142
|
+
# @return bool
|
143
|
+
public
|
144
|
+
def is_path_regexp?
|
185
145
|
return @is_path_regexp
|
186
146
|
end
|
187
147
|
|
188
|
-
# @param bool fresh
|
189
148
|
# @return bool
|
190
149
|
public
|
191
|
-
def is_allow_dup_slash?
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
150
|
+
def is_allow_dup_slash?
|
151
|
+
return @is_allow_dup_slash
|
152
|
+
end
|
153
|
+
|
154
|
+
# @return string
|
155
|
+
public
|
156
|
+
def get_template_file_extension
|
157
|
+
return @template_file_extension
|
158
|
+
end
|
159
|
+
|
160
|
+
# @return string
|
161
|
+
public
|
162
|
+
def get_layout_file_extension
|
163
|
+
return @layout_file_extension
|
164
|
+
end
|
165
|
+
|
166
|
+
# initialize preferences
|
167
|
+
public
|
168
|
+
def init_pref
|
169
|
+
@parsed_route_yml = YamlAccess::get_parsed_route @path_route_yml
|
170
|
+
@parsed_route_include_yml = YamlAccess::get_parsed @path_route_include_yml
|
171
|
+
@parsed_route_error_yml = YamlAccess::get_parsed @path_route_error_yml
|
172
|
+
@parsed_public_yml = YamlAccess::get_parsed @path_public_yml
|
173
|
+
@parsed_logger_yml = YamlAccess::get_parsed @path_logger_yml
|
174
|
+
|
175
|
+
# check if found available route
|
176
|
+
if @parsed_route_yml.size == 0
|
177
|
+
raise PreferenceError, PreferenceError::MSG_EMPTY_YAML% @path_route_yml
|
199
178
|
end
|
200
179
|
|
201
|
-
|
180
|
+
# set route options
|
181
|
+
init_routing_options
|
182
|
+
end
|
183
|
+
|
184
|
+
# initialize routing options
|
185
|
+
public
|
186
|
+
def init_routing_options
|
187
|
+
@is_path_regexp = nil
|
188
|
+
@is_allow_dup_slash = nil
|
189
|
+
@template_file_extension = nil
|
190
|
+
@layout_file_extension = nil
|
191
|
+
|
192
|
+
# read route.yml
|
193
|
+
pref = YamlAccess::get_parsed @path_route_yml
|
194
|
+
|
195
|
+
# not found but already it's checked though
|
196
|
+
return if !pref.is_a?(Hash)
|
197
|
+
|
198
|
+
routing_options = pref['preference']
|
199
|
+
|
200
|
+
# not found routing options to default
|
201
|
+
return if !routing_options.is_a?(Hash)
|
202
|
+
|
203
|
+
# set value to property
|
204
|
+
# true -> Nekonote::URLMapper, false -> :Rack::URLMap
|
205
|
+
@is_path_regexp = routing_options[FIELD_OPTION_ROUTE_REGEXP] || DEFAULT_OPTION_ROUTE_REGEXP
|
206
|
+
@is_allow_dup_slash = routing_options[FIELD_OPTION_ALLOW_DUP_SLASH] || DEFAULT_OPTION_ALLOW_DUP_SLASH
|
207
|
+
@template_file_extension = routing_options[FIELD_OPTION_TEMPLATE_EXT] || DEFAULT_OPTION_TEMPLATE_FILE_EXT
|
208
|
+
@layout_file_extension = routing_options[FIELD_OPTION_LAYOUT_EXT] || DEFAULT_OPTION_LAYOUT_FILE_EXT
|
209
|
+
|
210
|
+
# validation for file extension
|
211
|
+
if !@template_file_extension.is_a?(String) || @template_file_extension == ''
|
212
|
+
raise PreferenceError, Error::MSG_WRONG_TYPE% [FIELD_OPTION_TEMPLATE_EXT, 'String']
|
213
|
+
elsif !@layout_file_extension.is_a?(String) || @layout_file_extension == ''
|
214
|
+
raise PreferenceError, Error::MSG_WRONG_TYPE% [FIELD_OPTION_LAYOUT_EXT, 'String']
|
215
|
+
end
|
202
216
|
end
|
203
217
|
|
204
218
|
# @param array info information about route
|
data/lib/nekonote/rackup.rb
CHANGED
@@ -149,8 +149,10 @@ module Nekonote
|
|
149
149
|
# evaluate middlewares.rb as Ruby codes
|
150
150
|
path = Preference.instance.path_middlewares_rb
|
151
151
|
begin
|
152
|
+
# run middlewares.rb
|
152
153
|
instance_eval IO.read path
|
153
154
|
rescue => e
|
155
|
+
# when the web server deamonized it will be output into log/puma.stderr.log
|
154
156
|
warn <<EOS
|
155
157
|
#{PreferenceError::MSG_EVAL_MIDDLEWARES% path}
|
156
158
|
|
@@ -300,8 +302,8 @@ EOS
|
|
300
302
|
# set app
|
301
303
|
begin
|
302
304
|
routes[info[Preference::FIELD_ROUTE_PATH].strip] = Object.const_get(handler).new(info)
|
303
|
-
rescue NameError
|
304
|
-
|
305
|
+
rescue NameError => e
|
306
|
+
Error.abort e
|
305
307
|
end
|
306
308
|
|
307
309
|
paths << path
|
data/lib/nekonote/spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Nekonote
|
2
2
|
LIBS_NAME = %(nekonote-framework).freeze
|
3
|
-
VERSION = %(1.0.0-
|
3
|
+
VERSION = %(1.0.0-beta4).freeze
|
4
4
|
HOMEPAGE = %(https://nekonote-framework.github.io).freeze
|
5
5
|
SUMMARY = %(Simple and Lightweight Ruby Framework for Web Development).freeze
|
6
6
|
DESCRIPTION = %(Nekonote Framework is a small web application framework that helps your web development.).freeze
|
data/lib/nekonote/view.rb
CHANGED
@@ -122,13 +122,12 @@ module Nekonote
|
|
122
122
|
# if nil is given for layout and/or template, No template and/or layout will be used
|
123
123
|
if @template_path != nil && !Util::Filer.available_file?(@template_path)
|
124
124
|
raise ViewError, ViewError::MSG_MISSING_TEMPLATE_FILE% @template_path
|
125
|
-
end
|
126
125
|
|
127
|
-
|
126
|
+
elsif @layout_path != nil && !Util::Filer.available_file?(@layout_path)
|
128
127
|
raise ViewError, ViewError::MSG_MISSING_LAYOUT_FILE% @layout_path
|
129
128
|
end
|
130
129
|
|
131
|
-
@response.write get_parsed
|
130
|
+
@response.write get_parsed
|
132
131
|
end
|
133
132
|
|
134
133
|
# @param string|symbol subject
|
@@ -313,14 +312,16 @@ module Nekonote
|
|
313
312
|
# @return string absolute path
|
314
313
|
private
|
315
314
|
def get_template_path(template)
|
316
|
-
|
315
|
+
ext = Preference.instance.get_template_file_extension
|
316
|
+
return "#{Nekonote.get_root_path}#{PATH_TO_TEMPLATE}/#{template}.#{ext}"
|
317
317
|
end
|
318
318
|
|
319
319
|
# @param string layout relative path to layout file
|
320
320
|
# @return string absolute path
|
321
321
|
private
|
322
322
|
def get_layout_path(layout)
|
323
|
-
|
323
|
+
ext = Preference.instance.get_layout_file_extension
|
324
|
+
return "#{Nekonote.get_root_path}#{PATH_TO_LAYOUT}/#{layout}.#{ext}"
|
324
325
|
end
|
325
326
|
|
326
327
|
# Returns template path for the default when it was found and available
|
@@ -390,21 +391,19 @@ module Nekonote
|
|
390
391
|
end
|
391
392
|
end
|
392
393
|
|
393
|
-
# @param string|nil template_path
|
394
|
-
# @param string|nil layout_path
|
395
394
|
# @return string
|
396
395
|
private
|
397
|
-
def get_parsed
|
396
|
+
def get_parsed
|
398
397
|
data = ''
|
399
398
|
liq_tpl_template = nil
|
400
399
|
liq_tpl_layout = nil
|
401
400
|
begin
|
402
|
-
if template_path.is_a? String
|
403
|
-
liq_tpl_template = Liquid::Template.parse IO.read(template_path)
|
401
|
+
if @template_path.is_a? String
|
402
|
+
liq_tpl_template = Liquid::Template.parse IO.read(@template_path)
|
404
403
|
end
|
405
404
|
|
406
|
-
if layout_path.is_a? String
|
407
|
-
liq_tpl_layout = Liquid::Template.parse IO.read(layout_path)
|
405
|
+
if @layout_path.is_a? String
|
406
|
+
liq_tpl_layout = Liquid::Template.parse IO.read(@layout_path)
|
408
407
|
end
|
409
408
|
|
410
409
|
# parse and render template
|
data/lib/nekonote/yaml_access.rb
CHANGED
@@ -23,6 +23,7 @@ module Nekonote
|
|
23
23
|
|
24
24
|
# Returns the parsed routing information
|
25
25
|
# @param string path
|
26
|
+
# @return hash
|
26
27
|
def self.get_parsed_route(path)
|
27
28
|
if !Util::Filer.available_file? path
|
28
29
|
return nil
|
@@ -34,7 +35,7 @@ module Nekonote
|
|
34
35
|
route_list = []
|
35
36
|
ast.root.children.each_with_index do |node, index|
|
36
37
|
cnt = index / 2
|
37
|
-
if node.is_a?(Psych::Nodes::Scalar) && node.value != Preference::
|
38
|
+
if node.is_a?(Psych::Nodes::Scalar) && node.value != Preference::FIELD_ROUTING_OPTIONS
|
38
39
|
route_list[cnt] = {Preference::FIELD_ROUTE_HANDLER => node.value}
|
39
40
|
elsif node.is_a? Psych::Nodes::Mapping
|
40
41
|
if route_list[cnt].is_a? Hash
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nekonote-framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.
|
4
|
+
version: 1.0.0.pre.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- khotta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: color_echo
|