opulent 1.4.8 → 1.5.0

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
  SHA1:
3
- metadata.gz: 545fc982f9080d50be226efb08e5f49544ff1ee7
4
- data.tar.gz: 12abf83589807d627594bc529389632fa9b53604
3
+ metadata.gz: 400a61b79e430257b8e78d35a00168abf0b25b2a
4
+ data.tar.gz: f50f10dfe3f7673cf35eeb197bb06a62dfcaedb5
5
5
  SHA512:
6
- metadata.gz: 2f38dc0e9c3fe1ad5ef7140c1963dca876827b56a591317c8702940f88d6c6c3e8df203700d659f64d73f5e681bf38e047d259bf322bdc082bb191d9ce771953
7
- data.tar.gz: 79bb7237a69dfa4dfc15e3564dbe96b551eb24c5aac9123db62c9affc502eef436f6d8ee52348c9c0fe402ff5faf7686da75267844247b0bea03eabaeb3d25b6
6
+ metadata.gz: 14774d95d2d98deab955e1c62131e6ff6cee05c82aa79d4362aea9c2738f4e244628d05f886e08207e396d2875d43571db33ab030f68a9e6833f6d86857a6d12
7
+ data.tar.gz: 89f0081dd1d91648e877a6aa77efab4e3b70002f581ff739e83bc1bd5d8f51991346b5467d09affa0b2fa1fd83dbc8d7217b3d5204f4dd28cdb126c2d08323f9
@@ -14,10 +14,10 @@ require_relative 'compiler/yield.rb'
14
14
  module Opulent
15
15
  # @Compiler
16
16
  class Compiler
17
- Buffer = :@_opulent_buffer
17
+ BUFFER = :@_opulent_buffer
18
18
 
19
- OpulentKey = :_opulent_key
20
- OpulentValue = :_opulent_value
19
+ OPULENT_KEY = :_opulent_key
20
+ OPULENT_VALUE = :_opulent_value
21
21
 
22
22
  # All node Objects (Array) must follow the next convention in order
23
23
  # to make parsing faster
@@ -67,8 +67,8 @@ module Opulent
67
67
  #
68
68
  def compile(root_node, context = nil)
69
69
  # Compiler generated code
70
- @code = ""
71
- @generator = ""
70
+ @code = ''
71
+ @generator = ''
72
72
 
73
73
  # Set initial parent, from which we start generating code
74
74
  @sibling_stack << root_node[@children].size
@@ -80,7 +80,7 @@ module Opulent
80
80
 
81
81
  @template << [:postamble]
82
82
 
83
- return templatize
83
+ templatize
84
84
  end
85
85
 
86
86
  # Remove the last newline from the current code buffer
@@ -95,9 +95,9 @@ module Opulent
95
95
  # @param indent [String] Indentation string to be appended
96
96
  #
97
97
  def indent_lines(text, indent)
98
- text ||= ""
99
- text.lines.inject("") do |result, line|
100
- result += indent + line
98
+ text ||= ''
99
+ text.lines.inject('') do |_, line|
100
+ indent + line
101
101
  end
102
102
  end
103
103
 
@@ -109,28 +109,33 @@ module Opulent
109
109
  #
110
110
  def self.error(context, *data)
111
111
  message = case context
112
- when :enumerable
113
- "The provided each structure iteration input \"#{data[0]}\" is not Enumerable."
114
- when :binding
115
- data[0] = data[0].to_s.match(/\`(.*)\'/)
116
- data[0] = data[0][1] if data[0]
117
- "Found an undefined local variable or method \"#{data[0]}\"."
118
- when :variable_name
119
- data[0] = data[0].to_s.match(/\`(.*)\'/)[1]
120
- "Found an undefined local variable or method \"#{data[0]}\" in locals."
121
- when :extension
122
- "The extension sequence \"#{data[0]}\" is not a valid attributes extension. " +
123
- "Please use a Hash to extend attributes."
124
- when :filter_registered
125
- "The \"#{data[0]}\" filter could not be recognized by Opulent."
126
- when :filter_load
127
- "The gem required for the \"#{data[0]}\" filter is not installed. You can install it by running:\n\n#{data[1]}"
128
- end
112
+ when :enumerable
113
+ "The provided each structure iteration input \"#{data[0]}\"" \
114
+ ' is not Enumerable.'
115
+ when :binding
116
+ data[0] = data[0].to_s.match(/\`(.*)\'/)
117
+ data[0] = data[0][1] if data[0]
118
+ "Found an undefined local variable or method \"#{data[0]}\"."
119
+ when :variable_name
120
+ data[0] = data[0].to_s.match(/\`(.*)\'/)[1]
121
+ "Found an undefined local variable or method \"#{data[0]}\"" \
122
+ ' in locals.'
123
+ when :extension
124
+ "The extension sequence \"#{data[0]}\" is not a valid " \
125
+ 'attributes extension. Please use a Hash to extend ' \
126
+ 'attributes.'
127
+ when :filter_registered
128
+ "The \"#{data[0]}\" filter could not be recognized by " \
129
+ 'Opulent.'
130
+ when :filter_load
131
+ "The gem required for the \"#{data[0]}\" filter is not " \
132
+ "installed. You can install it by running:\n\n#{data[1]}"
133
+ end
129
134
 
130
135
  # Reconstruct lines to display where errors occur
131
- fail "\n\nOpulent " + Logger.red("[Runtime Error]") + "\n---\n" +
132
- "A runtime error has been encountered when building the compiled node tree.\n" +
133
- "#{message}\n\n\n"
136
+ fail "\n\nOpulent " + Logger.red('[Runtime Error]') + "\n---\n" \
137
+ 'A runtime error has been encountered when building the compiled ' \
138
+ " node tree.\n #{message}\n\n\n"
134
139
  end
135
140
  end
136
141
  end
@@ -149,9 +149,9 @@ module Opulent
149
149
 
150
150
  # @Hash
151
151
  buffer_eval "elsif #{variable}.is_a? Hash"
152
- buffer_eval "#{variable}.each do |#{OpulentKey}, #{OpulentValue}|"
152
+ buffer_eval "#{variable}.each do |#{OPULENT_KEY}, #{OPULENT_VALUE}|"
153
153
  dynamic ? buffer("\" #{key}-\"") : buffer_freeze(" #{key}-") # key-hashkey="
154
- buffer "\"\#{#{OpulentKey}}\""
154
+ buffer "\"\#{#{OPULENT_KEY}}\""
155
155
  buffer_freeze "=\""
156
156
  escape ? buffer_escape("_opulent_value") : buffer("_opulent_value") # value
157
157
  buffer_freeze '"'
@@ -191,7 +191,7 @@ module Opulent
191
191
  # escape it. Otherwise, evaluate and initialize the type check.
192
192
  if attribute[@value] =~ Tokens[:exp_string]
193
193
  buffer_freeze " #{key}=\""
194
- buffer_split_by_interpolation attribute[@value][1..-2]
194
+ buffer_split_by_interpolation attribute[@value][1..-2], attribute[@options][:escaped]
195
195
  buffer_freeze "\""
196
196
  else
197
197
  # Evaluate and type check
@@ -213,8 +213,8 @@ module Opulent
213
213
 
214
214
  # Process remaining extension keys if there are any
215
215
  if extension
216
- buffer_eval "#{extension}.each do |ext#{OpulentKey}, ext#{OpulentValue}|"
217
- buffer_data_attribute_type_check["\#{ext#{OpulentKey}}", "ext#{OpulentValue}", true, true]
216
+ buffer_eval "#{extension}.each do |ext#{OPULENT_KEY}, ext#{OPULENT_VALUE}|"
217
+ buffer_data_attribute_type_check["\#{ext#{OPULENT_KEY}}", "ext#{OPULENT_VALUE}", true, true]
218
218
  buffer_eval "end"
219
219
  end
220
220
  end
@@ -226,17 +226,17 @@ module Opulent
226
226
  @template.inject("") do |buffer, input|
227
227
  buffer += case input[0]
228
228
  when :preamble
229
- "#{Buffer} = []#{separator}"
229
+ "#{BUFFER} = []#{separator}"
230
230
  when :buffer
231
- "#{Buffer} << (#{input[1]})#{separator}"
231
+ "#{BUFFER} << (#{input[1]})#{separator}"
232
232
  when :escape
233
- "#{Buffer} << (::Opulent::Utils::escape(#{input[1]}))#{separator}"
233
+ "#{BUFFER} << (::Opulent::Utils::escape(#{input[1]}))#{separator}"
234
234
  when :freeze
235
- "#{Buffer} << (#{input[1].inspect}.freeze)#{separator}"
235
+ "#{BUFFER} << (#{input[1].inspect}.freeze)#{separator}"
236
236
  when :eval
237
237
  "#{input[1]}#{separator}"
238
238
  when :postamble
239
- "#{Buffer}.join"
239
+ "#{BUFFER}.join"
240
240
  end
241
241
  end
242
242
  end
@@ -51,8 +51,8 @@ module Opulent
51
51
  # the extension hash
52
52
  if call_node[@options][:extension]
53
53
  extension_attributes = buffer_set_variable :extension, call_node[@options][:extension][@value]
54
- buffer_eval "#{call_attributes}.merge!(#{extension_attributes}) do |#{OpulentKey}, #{OpulentValue}1, #{OpulentValue}2|"
55
- buffer_eval "#{OpulentKey} == :class ? (#{OpulentValue}1 += #{OpulentValue}2) : (#{OpulentValue}2)"
54
+ buffer_eval "#{call_attributes}.merge!(#{extension_attributes}) do |#{OPULENT_KEY}, #{OPULENT_VALUE}1, #{OPULENT_VALUE}2|"
55
+ buffer_eval "#{OPULENT_KEY} == :class ? (#{OPULENT_VALUE}1 += #{OPULENT_VALUE}2) : (#{OPULENT_VALUE}2)"
56
56
  buffer_eval "end"
57
57
  end
58
58
 
@@ -9,7 +9,7 @@ module Opulent
9
9
  # @param context [Context] Context holding environment variables
10
10
  #
11
11
  def root(current, indent, context)
12
- if Keywords.include? current[@type]
12
+ if KEYWORDS.include? current[@type]
13
13
  send :"#{current[@type]}_node", current, indent, context
14
14
  else
15
15
  send current[@type], current, indent, context
@@ -2,9 +2,9 @@
2
2
  module Opulent
3
3
  # @Context
4
4
  #
5
- # The context class is used to differentiate local, instance and class variables
6
- # and to define the current working environment. Each class, method and instance
7
- # has its own context
5
+ # The context class is used to differentiate local, instance and class
6
+ # variables and to define the current working environment. Each class, method
7
+ # and instance has its own context
8
8
  #
9
9
  class Context
10
10
  attr_accessor :block, :binding, :name, :parent
@@ -20,10 +20,10 @@ module Opulent
20
20
  @content = content
21
21
 
22
22
  @block = block
23
- @binding = if @block
24
- @block.binding.clone
23
+ if @block
24
+ @binding = @block.binding.clone
25
25
  else
26
- Binding.new.get
26
+ @binding = Binding.new.get
27
27
  end
28
28
 
29
29
  extend_locals locals
@@ -80,7 +80,7 @@ module Opulent
80
80
  # @Binding
81
81
  class Binding
82
82
  def get
83
- return binding
83
+ binding
84
84
  end
85
85
  end
86
86
  end
@@ -6,8 +6,8 @@ module Opulent
6
6
 
7
7
  # Module method wrapper for creating a new engine instance
8
8
  #
9
- def Opulent.new(input, settings = {})
10
- return Engine.new input, settings
9
+ def self.new(input, settings = {})
10
+ Engine.new input, settings
11
11
  end
12
12
 
13
13
  # @Engine
@@ -28,14 +28,9 @@ module Opulent
28
28
  Settings.update_settings settings unless settings.empty?
29
29
 
30
30
  # Read input parameter based on opening mode. If we have a file mode, we
31
- # get its path and read the code. We need to reset the mode in case the next
32
- # render call is on code, not on a file.
33
- @code = case input
34
- when Symbol
35
- @file = File.expand_path get_eval_file input; File.read @file
36
- else
37
- @file = File.expand_path __FILE__; input
38
- end
31
+ # get its path and read the code. We need to reset the mode in case the
32
+ # next render call is on code, not on a file.
33
+ @code = read input
39
34
 
40
35
  # Get the nodes tree
41
36
  @nodes, @def = Parser.new(@file, @def).parse @code
@@ -44,6 +39,16 @@ module Opulent
44
39
  @template = Compiler.new.compile @nodes
45
40
  end
46
41
 
42
+ def read(input)
43
+ if input.is_a? Symbol
44
+ @file = File.expand_path get_eval_file input
45
+ File.read @file
46
+ else
47
+ @file = File.expand_path __FILE__
48
+ input
49
+ end
50
+ end
51
+
47
52
  # Avoid code duplication when layouting is set. When we have a layout, look
48
53
  # in layouts/application by default.
49
54
  #
@@ -53,16 +58,20 @@ module Opulent
53
58
  #
54
59
  def render(scope = Object.new, locals = {}, &block)
55
60
  # Get opulent buffer value
56
- initial_buffer = scope.instance_variable_defined?(:@_opulent_buffer) ? scope.instance_variable_get(:@_opulent_buffer) : []
61
+ if scope.instance_variable_defined?(:@_opulent_buffer)
62
+ initial_buffer = scope.instance_variable_get(:@_opulent_buffer)
63
+ else
64
+ initial_buffer = []
65
+ end
57
66
 
58
67
  # If a layout is set, get the specific layout, otherwise, set the default
59
68
  # one. If a layout is set to false, the page will be render as it is.
60
69
  if scope.is_a? binding.class
61
- scope_object = eval "self", scope
62
- scope = scope_object.instance_eval{ binding } if block_given?
70
+ scope_object = eval 'self', scope
71
+ scope = scope_object.instance_eval { binding } if block_given?
63
72
  else
64
73
  scope_object = scope
65
- scope = scope_object.instance_eval{ binding }
74
+ scope = scope_object.instance_eval { binding }
66
75
  end
67
76
 
68
77
  # Set input local variables in current scope
@@ -82,15 +91,17 @@ module Opulent
82
91
  end
83
92
 
84
93
  private
94
+
85
95
  # Add .op extension to input file if it isn't already set.
86
96
  #
87
97
  # @param input [Symbol] Input file
88
98
  #
89
99
  def get_eval_file(input)
90
100
  input = input.to_s
91
- input += Settings::FileExtension unless File.extname(input) == Settings::FileExtension
92
- return input
101
+ unless File.extname(input) == Settings::FILE_EXTENSION
102
+ input += Settings::FILE_EXTENSION
103
+ end
104
+ input
93
105
  end
94
-
95
106
  end
96
107
  end
@@ -19,8 +19,8 @@ module Opulent
19
19
 
20
20
  # Check if the chosen filter name is registed within our knowledgebase
21
21
  #
22
- def has_filter?(name)
23
- @filters.has_key? name
22
+ def filter?(name)
23
+ @filters.key? name
24
24
  end
25
25
  end
26
26
 
@@ -39,15 +39,15 @@ module Opulent
39
39
  # Error output in case the filter does not exist
40
40
  #
41
41
  def load_filter
42
- unless gem_name.nil? || @loaded
43
- # Try to load the library associated to the chosen filter
44
- begin
45
- require gem_name
46
- @loaded = true
47
- rescue LoadError => error
48
- # Error output with filter name and installation instructions
49
- Compiler.error :filter_load, @name, install_error
50
- end
42
+ return unless gem_name.nil? || @loaded
43
+
44
+ # Try to load the library associated to the chosen filter
45
+ begin
46
+ require gem_name
47
+ @loaded = true
48
+ rescue LoadError
49
+ # Error output with filter name and installation instructions
50
+ Compiler.error :filter_load, @name, install_error
51
51
  end
52
52
  end
53
53
 
@@ -61,23 +61,23 @@ module Opulent
61
61
  # Process input code using this filter and return the output to the
62
62
  # evaluation method from the Filter Node
63
63
  #
64
- def render(code, options = {})
65
- raise NoMethodError
64
+ def render(_code, _options = {})
65
+ fail NoMethodError
66
66
  end
67
67
 
68
68
  # RubyGems name for explicit library require
69
69
  #
70
70
  def gem_name
71
- raise NoMethodError
71
+ fail NoMethodError
72
72
  # "gem_name"
73
73
  end
74
74
 
75
75
  # After defining how to render the code,
76
76
  #
77
- # Filters.register self, :filter, tag: :tag, attributes: { type: 'text/css' }
77
+ # Filters.register self, :filter, tag: :tag,
78
+ # attributes: { type: 'text/css' }
78
79
  end
79
80
 
80
-
81
81
  # Add the default registered rendering filters for Opulent
82
82
 
83
83
  # @CoffeeScript
@@ -87,15 +87,18 @@ module Opulent
87
87
  end
88
88
 
89
89
  def gem_name
90
- "coffee-script"
90
+ 'coffee-script'
91
91
  end
92
92
 
93
- Filters.register self, :coffeescript, tag: :script, attributes: { type: 'javascript' }
93
+ Filters.register self,
94
+ :coffeescript,
95
+ tag: :script,
96
+ attributes: { type: 'javascript' }
94
97
  end
95
98
 
96
99
  # @JavaScript
97
100
  class JavaScript < Filter
98
- def render(code, options = {})
101
+ def render(code, _options = {})
99
102
  code
100
103
  end
101
104
 
@@ -103,7 +106,10 @@ module Opulent
103
106
  nil
104
107
  end
105
108
 
106
- Filters.register self, :javascript, tag: :script, attributes: { type: 'javascript' }
109
+ Filters.register self,
110
+ :javascript,
111
+ tag: :script,
112
+ attributes: { type: 'javascript' }
107
113
  end
108
114
 
109
115
  # @Scss
@@ -115,10 +121,13 @@ module Opulent
115
121
  end
116
122
 
117
123
  def gem_name
118
- "sass"
124
+ 'sass'
119
125
  end
120
126
 
121
- Filters.register self, :scss, tag: :style, attributes: { type: 'text/css' }
127
+ Filters.register self,
128
+ :scss,
129
+ tag: :style,
130
+ attributes: { type: 'text/css' }
122
131
  end
123
132
 
124
133
  # @Sass
@@ -131,17 +140,20 @@ module Opulent
131
140
  end
132
141
 
133
142
  def gem_name
134
- "sass"
143
+ 'sass'
135
144
  end
136
145
 
137
- Filters.register self, :sass, tag: :style, attributes: { type: 'text/css' }
146
+ Filters.register self,
147
+ :scss,
148
+ tag: :style,
149
+ attributes: { type: 'text/css' }
138
150
  end
139
151
 
140
152
  # @Css
141
153
  class Css < Filter
142
154
  def render(code, options = {})
143
155
  if options[:cdata]
144
- "<![CDATA[\n" + code + "]]>"
156
+ "<![CDATA[\n" + code + ']]>'
145
157
  else
146
158
  code
147
159
  end
@@ -156,8 +168,8 @@ module Opulent
156
168
 
157
169
  # @CData
158
170
  class CData < Filter
159
- def render(code, options = {})
160
- "<![CDATA[\n" + code + "]]>"
171
+ def render(code, _options = {})
172
+ "<![CDATA[\n" + code + ']]>'
161
173
  end
162
174
 
163
175
  def gem_name
@@ -169,7 +181,7 @@ module Opulent
169
181
 
170
182
  # @Escaped
171
183
  class Escaped < Filter
172
- def render(code, options = {})
184
+ def render(code, _options = {})
173
185
  Compiler.escape code
174
186
  end
175
187
 
@@ -187,7 +199,7 @@ module Opulent
187
199
  end
188
200
 
189
201
  def gem_name
190
- "kramdown"
202
+ 'kramdown'
191
203
  end
192
204
 
193
205
  Filters.register self, :markdown, tag: nil, attributes: {}
@@ -200,7 +212,7 @@ module Opulent
200
212
  end
201
213
 
202
214
  def gem_name
203
- "maruku"
215
+ 'maruku'
204
216
  end
205
217
 
206
218
  Filters.register self, :maruku, tag: nil, attributes: {}
@@ -213,7 +225,7 @@ module Opulent
213
225
  end
214
226
 
215
227
  def gem_name
216
- "RedCloth"
228
+ 'RedCloth'
217
229
  end
218
230
 
219
231
  Filters.register self, :textile, tag: nil, attributes: {}
@@ -16,15 +16,41 @@ module Opulent
16
16
 
17
17
  # Colors available in the terminal
18
18
  #
19
- def black(text); colorize(text, "\e[30m"); end
20
- def red(text); colorize(text, "\e[31m"); end
21
- def green(text); colorize(text, "\e[32m"); end
22
- def yellow(text); colorize(text, "\e[33m"); end
23
- def blue(text); colorize(text, "\e[34m"); end
24
- def magenta(text); colorize(text, "\e[35m"); end
25
- def cyan(text); colorize(text, "\e[36m"); end
26
- def white(text); colorize(text, "\e[37m"); end
27
- def default(text); colorize(text, "\e[38m"); end
19
+ def black(text)
20
+ colorize(text, "\e[30m")
21
+ end
22
+
23
+ def red(text)
24
+ colorize(text, "\e[31m")
25
+ end
26
+
27
+ def green(text)
28
+ colorize(text, "\e[32m")
29
+ end
30
+
31
+ def yellow(text)
32
+ colorize(text, "\e[33m")
33
+ end
34
+
35
+ def blue(text)
36
+ colorize(text, "\e[34m")
37
+ end
38
+
39
+ def magenta(text)
40
+ colorize(text, "\e[35m")
41
+ end
42
+
43
+ def cyan(text)
44
+ colorize(text, "\e[36m")
45
+ end
46
+
47
+ def white(text)
48
+ colorize(text, "\e[37m")
49
+ end
50
+
51
+ def default(text)
52
+ colorize(text, "\e[38m")
53
+ end
28
54
 
29
55
  # Require windows libraries for ANSI Console output
30
56
  #
@@ -39,8 +65,7 @@ module Opulent
39
65
 
40
66
  # Pretty print Nodes with their important details
41
67
  #
42
- def pretty_print(model, indent = 0)
43
-
68
+ def pretty_print(_model, _indent = 0)
44
69
  end
45
70
  end
46
71
  end
@@ -64,7 +64,7 @@ module Opulent
64
64
  # nodes and definitions
65
65
  root @root
66
66
 
67
- return @root, @definitions
67
+ [@root, @definitions]
68
68
  end
69
69
 
70
70
  # Check and accept or reject a given token as long as we have tokens
@@ -95,8 +95,8 @@ module Opulent
95
95
  end
96
96
  end
97
97
 
98
- # Helper method which automatically sets the stripped options to true, so that we
99
- # do not have to explicitly specify it
98
+ # Helper method which automatically sets the stripped options to true,
99
+ # so that we do not have to explicitly specify it
100
100
  #
101
101
  # @param token [RegEx] Token to be accepted by the parser
102
102
  # @param required [Boolean] Expect the given token syntax
@@ -122,7 +122,7 @@ module Opulent
122
122
  # @param token [RegEx] Token to be checked by the parser
123
123
  #
124
124
  def lookahead_next_line(token)
125
- return nil unless @code[@i + 1]
125
+ return unless @code[@i + 1]
126
126
 
127
127
  # Check if we match the token to the current line.
128
128
  @code[@i + 1].match Tokens[token]
@@ -134,19 +134,17 @@ module Opulent
134
134
  # @param match [String] Matched string to be undone
135
135
  #
136
136
  def undo(match)
137
- unless match.empty?
138
- @offset -= match.size
139
- return nil
140
- end
137
+ return if match.empty?
138
+ @offset -= match.size
139
+ nil
141
140
  end
142
141
 
143
142
  # Allow expressions to continue on a new line in certain conditions
144
143
  #
145
144
  def accept_newline
146
- if @line[@offset..-1].strip.empty?
147
- @line = @code[(@i += 1)]
148
- @offset = 0
149
- end
145
+ return unless @line[@offset..-1].strip.empty?
146
+ @line = @code[(@i += 1)]
147
+ @offset = 0
150
148
  end
151
149
 
152
150
  # Indent all lines of the input text using give indentation
@@ -155,9 +153,9 @@ module Opulent
155
153
  # @param indent [String] Indentation string to be appended
156
154
  #
157
155
  def indent_lines(text, indent)
158
- text ||= ""
159
- text.lines.inject("") do |result, line|
160
- result += indent + line
156
+ text ||= ''
157
+ text.lines.inject('') do |_, line|
158
+ indent + line
161
159
  end
162
160
  end
163
161
 
@@ -171,8 +169,11 @@ module Opulent
171
169
  when :unknown_node_type
172
170
  "An unknown node type has been encountered at:\n\n#{Logger.red @line}"
173
171
  when :expected
174
- data[0] = "#{Tokens.bracket data[0]}" if [:'(', :'{', :'[', :'<'].include? data[0]
175
- "Expected to find a :#{data[0]} token on line #{@i+1} of input at: \n\n#{@line[0..@offset-1]}#{Logger.red @line[@offset..-1].rstrip}"
172
+ if [:'(', :'{', :'[', :'<'].include? data[0]
173
+ data[0] = "#{Tokens.bracket data[0]}"
174
+ end
175
+ "Expected to find a :#{data[0]} token on line #{@i+1} of input at: " \
176
+ "\n\n#{@line[0..@offset-1]}#{Logger.red @line[@offset..-1].rstrip}"
176
177
  when :root
177
178
  "Unknown node type encountered on line #{@i+1} of input at:\n\n" +
178
179
  "#{@line[0..@offset-1]}#{Logger.red @line[@offset..-1].rstrip}"
@@ -222,9 +223,8 @@ module Opulent
222
223
  end
223
224
 
224
225
  # Reconstruct lines to display where errors occur
225
- fail "\n\nOpulent " + Logger.red("[Parser Error]") +
226
- "\n---\n" +
227
- "#{message}\n\n\n"
226
+ fail "\n\nOpulent " + Logger.red('[Parser Error]') +
227
+ "\n---\n#{message}\n\n\n"
228
228
  end
229
229
  end
230
230
  end
@@ -30,7 +30,7 @@ module Opulent
30
30
  include_path = File.expand_path name, File.dirname(@file[-1][0])
31
31
 
32
32
  # Try to see if it has any existing extension, otherwise add .op
33
- include_path += Settings::FileExtension if File.extname(name).empty?
33
+ include_path += Settings::FILE_EXTENSION if File.extname(name).empty?
34
34
 
35
35
  # Throw an error if the file doesn't exist
36
36
  error :include, name unless Dir[include_path].any?
@@ -11,7 +11,7 @@ module Opulent
11
11
  #
12
12
  def node(parent, indent = nil)
13
13
  if (name = lookahead(:node_lookahead) || lookahead(:shorthand_lookahead))
14
- return nil if Keywords.include? name[0].to_sym
14
+ return nil if KEYWORDS.include? name[0].to_sym
15
15
 
16
16
  # Accept either explicit node_name or implicit :div node_name
17
17
  # with shorthand attributes
@@ -3,10 +3,10 @@ module Opulent
3
3
  # @Settings
4
4
  module Settings
5
5
  # Set buffer variable name
6
- Buffer = :@_opulent_buffer
6
+ BUFFER = :@_opulent_buffer
7
7
 
8
8
  # Default Opulent file extension
9
- FileExtension = '.op'
9
+ FILE_EXTENSION = '.op'
10
10
 
11
11
  # Default yield target which is used for child block replacements
12
12
  DefaultEachKey = :key
@@ -30,7 +30,7 @@ module Opulent
30
30
  # override render() may not support all features.
31
31
  #
32
32
  def evaluate(scope, locals, &block)
33
- raise ArgumentError, 'Invalid scope: must not be frozen.' if scope.frozen?
33
+ fail ArgumentError, 'Invalid scope: must not be frozen.' if scope.frozen?
34
34
  super
35
35
  end
36
36
 
@@ -1,6 +1,7 @@
1
+ # @Opulent
1
2
  module Opulent
2
- # Opulent Keywords
3
- Keywords = %i(def yield include if else elsif unless case when each while until doctype)
3
+ # Opulent KEYWORDS
4
+ KEYWORDS = %i(def yield include if else elsif unless case when each while until doctype)
4
5
 
5
6
  # @Tokens
6
7
  class Tokens
@@ -24,7 +25,7 @@ module Opulent
24
25
  trailing_whitespace: /\A(\-\>)/,
25
26
 
26
27
  # Self enclosing node
27
- self_enclosing: /\A\/(.*)/,
28
+ self_enclosing: %r{\A\/(.*)},
28
29
 
29
30
  # Definition
30
31
  def: /\Adef +/,
@@ -49,7 +50,7 @@ module Opulent
49
50
  inline_child: /\A *\> */,
50
51
 
51
52
  # Comments
52
- comment: /\A\//,
53
+ comment: %r{\A\/},
53
54
 
54
55
  # Intepreted filters
55
56
  filter: /\A\:[a-zA-Z]([\-\_]?[a-zA-Z0-9]+)*/,
@@ -1,4 +1,4 @@
1
1
  # @Opulent
2
2
  module Opulent
3
- VERSION = "1.4.8"
3
+ VERSION = '1.5.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opulent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.8
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Grozav
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-21 00:00:00.000000000 Z
11
+ date: 2015-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler