inversion 1.3.1 → 1.4.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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/Examples.md +134 -0
  4. data/GettingStarted.md +50 -0
  5. data/Guide.md +14 -0
  6. data/{History.rdoc → History.md} +52 -43
  7. data/{README.rdoc → README.md} +43 -34
  8. data/Tags.md +555 -0
  9. data/bin/inversion +4 -8
  10. data/lib/inversion/cli/api.rb +75 -0
  11. data/lib/inversion/cli/tagtokens.rb +34 -0
  12. data/lib/inversion/cli/tree.rb +70 -0
  13. data/lib/inversion/cli.rb +406 -0
  14. data/lib/inversion/exceptions.rb +0 -1
  15. data/lib/inversion/mixins.rb +10 -11
  16. data/lib/inversion/parser.rb +5 -6
  17. data/lib/inversion/refinements.rb +18 -0
  18. data/lib/inversion/renderstate.rb +24 -25
  19. data/lib/inversion/sinatra.rb +0 -1
  20. data/lib/inversion/template/attrtag.rb +7 -5
  21. data/lib/inversion/template/begintag.rb +0 -1
  22. data/lib/inversion/template/calltag.rb +0 -1
  23. data/lib/inversion/template/codetag.rb +37 -28
  24. data/lib/inversion/template/commenttag.rb +0 -1
  25. data/lib/inversion/template/configtag.rb +3 -4
  26. data/lib/inversion/template/containertag.rb +1 -2
  27. data/lib/inversion/template/defaulttag.rb +1 -2
  28. data/lib/inversion/template/elsetag.rb +0 -1
  29. data/lib/inversion/template/elsiftag.rb +0 -1
  30. data/lib/inversion/template/endtag.rb +2 -3
  31. data/lib/inversion/template/escapetag.rb +1 -2
  32. data/lib/inversion/template/fortag.rb +2 -3
  33. data/lib/inversion/template/fragmenttag.rb +1 -2
  34. data/lib/inversion/template/iftag.rb +3 -1
  35. data/lib/inversion/template/importtag.rb +2 -3
  36. data/lib/inversion/template/includetag.rb +1 -2
  37. data/lib/inversion/template/node.rb +4 -5
  38. data/lib/inversion/template/pptag.rb +1 -2
  39. data/lib/inversion/template/publishtag.rb +2 -3
  40. data/lib/inversion/template/rescuetag.rb +1 -2
  41. data/lib/inversion/template/subscribetag.rb +3 -4
  42. data/lib/inversion/template/tag.rb +3 -4
  43. data/lib/inversion/template/textnode.rb +1 -2
  44. data/lib/inversion/template/timedeltatag.rb +1 -2
  45. data/lib/inversion/template/unlesstag.rb +0 -1
  46. data/lib/inversion/template/uriencodetag.rb +1 -2
  47. data/lib/inversion/template/yieldtag.rb +0 -1
  48. data/lib/inversion/template.rb +18 -22
  49. data/lib/inversion/tilt.rb +1 -2
  50. data/lib/inversion.rb +2 -3
  51. data/spec/helpers.rb +19 -13
  52. data/spec/inversion/mixins_spec.rb +1 -1
  53. data/spec/inversion/monkeypatches_spec.rb +1 -1
  54. data/spec/inversion/parser_spec.rb +1 -1
  55. data/spec/inversion/renderstate_spec.rb +1 -1
  56. data/spec/inversion/sinatra_spec.rb +1 -1
  57. data/spec/inversion/template/attrtag_spec.rb +1 -1
  58. data/spec/inversion/template/begintag_spec.rb +1 -1
  59. data/spec/inversion/template/calltag_spec.rb +1 -1
  60. data/spec/inversion/template/codetag_spec.rb +24 -1
  61. data/spec/inversion/template/commenttag_spec.rb +1 -1
  62. data/spec/inversion/template/configtag_spec.rb +1 -1
  63. data/spec/inversion/template/containertag_spec.rb +1 -1
  64. data/spec/inversion/template/defaulttag_spec.rb +1 -1
  65. data/spec/inversion/template/elsetag_spec.rb +1 -1
  66. data/spec/inversion/template/elsiftag_spec.rb +1 -1
  67. data/spec/inversion/template/endtag_spec.rb +1 -1
  68. data/spec/inversion/template/escapetag_spec.rb +1 -1
  69. data/spec/inversion/template/fortag_spec.rb +1 -1
  70. data/spec/inversion/template/fragmenttag_spec.rb +1 -1
  71. data/spec/inversion/template/iftag_spec.rb +1 -1
  72. data/spec/inversion/template/importtag_spec.rb +1 -1
  73. data/spec/inversion/template/includetag_spec.rb +1 -1
  74. data/spec/inversion/template/node_spec.rb +1 -1
  75. data/spec/inversion/template/pptag_spec.rb +1 -1
  76. data/spec/inversion/template/publishtag_spec.rb +1 -1
  77. data/spec/inversion/template/rescuetag_spec.rb +1 -1
  78. data/spec/inversion/template/subscribetag_spec.rb +1 -1
  79. data/spec/inversion/template/tag_spec.rb +1 -1
  80. data/spec/inversion/template/textnode_spec.rb +1 -1
  81. data/spec/inversion/template/timedeltatag_spec.rb +1 -1
  82. data/spec/inversion/template/unlesstag_spec.rb +1 -1
  83. data/spec/inversion/template/uriencodetag_spec.rb +1 -1
  84. data/spec/inversion/template/yieldtag_spec.rb +1 -1
  85. data/spec/inversion/template_spec.rb +1 -1
  86. data/spec/inversion/tilt_spec.rb +1 -1
  87. data/spec/inversion_spec.rb +1 -1
  88. data.tar.gz.sig +0 -0
  89. metadata +59 -45
  90. metadata.gz.sig +0 -0
  91. data/Examples.rdoc +0 -134
  92. data/GettingStarted.rdoc +0 -44
  93. data/Guide.rdoc +0 -47
  94. data/Manifest.txt +0 -86
  95. data/Rakefile +0 -7
  96. data/Tags.rdoc +0 -560
  97. data/lib/inversion/command.rb +0 -278
  98. data/lib/inversion/monkeypatches.rb +0 -21
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'loggability'
@@ -21,26 +20,26 @@ class Inversion::RenderState
21
20
  class Scope < BasicObject
22
21
 
23
22
  ### Create a new RenderState::Scope with its initial tag locals set to
24
- ### +locals+.
23
+ ### `locals`.
25
24
  def initialize( locals={}, fragments={} )
26
25
  @locals = locals
27
26
  @fragments = fragments
28
27
  end
29
28
 
30
29
 
31
- ### Return the tag local with the specified +name+.
30
+ ### Return the tag local with the specified `name`.
32
31
  def []( name )
33
32
  return @locals[ name.to_sym ]
34
33
  end
35
34
 
36
35
 
37
- ### Set the tag local with the specified +name+ to +value+.
36
+ ### Set the tag local with the specified `name` to `value`.
38
37
  def []=( name, value )
39
38
  @locals[ name.to_sym ] = value
40
39
  end
41
40
 
42
41
 
43
- ### Return a copy of the receiving Scope merged with the given +values+,
42
+ ### Return a copy of the receiving Scope merged with the given `values`,
44
43
  ### which can be either another Scope or a Hash.
45
44
  def +( values )
46
45
  return Scope.new( self.__locals__.merge(values), self.__fragments__ )
@@ -75,9 +74,9 @@ class Inversion::RenderState
75
74
 
76
75
 
77
76
  ### Create a new RenderState. If the template is being rendered inside another one, the
78
- ### containing template's RenderState will be passed as the +containerstate+. The
79
- ### +initial_attributes+ will be deep-copied, and the +options+ will be merged with
80
- ### Inversion::Template::DEFAULT_CONFIG. The +block+ is stored for use by
77
+ ### containing template's RenderState will be passed as the `containerstate`. The
78
+ ### `initial_attributes` will be deep-copied, and the `options` will be merged with
79
+ ### Inversion::Template::DEFAULT_CONFIG. The `block` is stored for use by
81
80
  ### template nodes.
82
81
  def initialize( containerstate=nil, initial_attributes={}, options={}, &block )
83
82
 
@@ -165,7 +164,7 @@ class Inversion::RenderState
165
164
  end
166
165
 
167
166
 
168
- ### Evaluate the specified +code+ in the context of itself and
167
+ ### Evaluate the specified `code` in the context of itself and
169
168
  ### return the result.
170
169
  def eval( code )
171
170
  # self.log.debug "Evaling: %p" [ code ]
@@ -179,7 +178,7 @@ class Inversion::RenderState
179
178
  end
180
179
 
181
180
 
182
- ### Override the state's attributes with the given +overrides+, call the +block+, then
181
+ ### Override the state's attributes with the given `overrides`, call the `block`, then
183
182
  ### restore the attributes to their original values.
184
183
  def with_attributes( overrides )
185
184
  raise LocalJumpError, "no block given" unless block_given?
@@ -228,8 +227,8 @@ class Inversion::RenderState
228
227
  end
229
228
 
230
229
 
231
- ### Set the state's error handler to +handler+ for the duration of the block, restoring
232
- ### the previous handler after the block exits. +Handler+ must respond to #call, and will
230
+ ### Set the state's error handler to `handler` for the duration of the block, restoring
231
+ ### the previous handler after the block exits. `Handler` must respond to #call, and will
233
232
  ### be called with two arguments: the node that raised the exception, and the exception object
234
233
  ### itself.
235
234
  def with_error_handler( handler )
@@ -251,7 +250,7 @@ class Inversion::RenderState
251
250
 
252
251
 
253
252
  ### Returns a new RenderState containing the attributes and options of the receiver
254
- ### merged with those of the +otherstate+.
253
+ ### merged with those of the `otherstate`.
255
254
  def merge( otherstate )
256
255
  merged = self.dup
257
256
  merged.merge!( otherstate )
@@ -259,7 +258,7 @@ class Inversion::RenderState
259
258
  end
260
259
 
261
260
 
262
- ### Merge the attributes and options of the +otherstate+ with those of the receiver,
261
+ ### Merge the attributes and options of the `otherstate` with those of the receiver,
263
262
  ### replacing any with the same keys.
264
263
  def merge!( otherstate )
265
264
  @scopes.push( @scopes.pop + otherstate.scope )
@@ -269,7 +268,7 @@ class Inversion::RenderState
269
268
  end
270
269
 
271
270
 
272
- ### Append operator -- add an node to the final rendered output. If the +node+ renders
271
+ ### Append operator -- add an node to the final rendered output. If the `node` renders
273
272
  ### as an object that itself responds to the #render method, #render will be called and
274
273
  ### the return value will be appended instead. This will continue until the returned
275
274
  ### object either doesn't respond to #render or #renders as itself.
@@ -312,7 +311,7 @@ class Inversion::RenderState
312
311
  end
313
312
 
314
313
 
315
- ### Publish the given +nodes+ to all subscribers to the specified +key+.
314
+ ### Publish the given `nodes` to all subscribers to the specified `key`.
316
315
  def publish( key, *nodes )
317
316
  key = key.to_sym
318
317
  # self.log.debug "[0x%016x] Publishing %p nodes: %p" % [ self.object_id * 2, key, nodes ]
@@ -328,7 +327,7 @@ class Inversion::RenderState
328
327
  alias_method :publish_nodes, :publish
329
328
 
330
329
 
331
- ### Subscribe the given +node+ to nodes published with the specified +key+.
330
+ ### Subscribe the given `node` to nodes published with the specified `key`.
332
331
  def subscribe( key, node )
333
332
  key = key.to_sym
334
333
  self.log.debug "Adding subscription to %p nodes for %p" % [ key, node ]
@@ -342,8 +341,8 @@ class Inversion::RenderState
342
341
  end
343
342
 
344
343
 
345
- ### Add one or more rendered +nodes+ to the state as a reusable fragment associated
346
- ### with the specified +name+.
344
+ ### Add one or more rendered `nodes` to the state as a reusable fragment associated
345
+ ### with the specified `name`.
347
346
  def add_fragment( name, *nodes )
348
347
  self.log.debug "Adding a %s fragment with %d nodes." % [ name, nodes.size ]
349
348
  nodes.flatten!
@@ -361,7 +360,7 @@ class Inversion::RenderState
361
360
  end
362
361
 
363
362
 
364
- ### Handle an +exception+ that was raised while appending a node by calling the
363
+ ### Handle an `exception` that was raised while appending a node by calling the
365
364
  ### #errhandler.
366
365
  def handle_render_error( node, exception )
367
366
  self.log.error "%s while rendering %p: %s" %
@@ -386,7 +385,7 @@ class Inversion::RenderState
386
385
  end
387
386
 
388
387
 
389
- ### Default exception handler: Handle an +exception+ while rendering +node+ according to the
388
+ ### Default exception handler: Handle an `exception` while rendering `node` according to the
390
389
  ### behavior specified by the `on_render_error` option. Returns the string which should be
391
390
  ### appended to the output, if any.
392
391
  def default_error_handler( state, node, exception )
@@ -414,7 +413,7 @@ class Inversion::RenderState
414
413
  end
415
414
 
416
415
 
417
- ### Return +true+ if rendered nodes are being saved for output.
416
+ ### Return `true` if rendered nodes are being saved for output.
418
417
  def rendering_enabled?
419
418
  return @rendering_enabled ? true : false
420
419
  end
@@ -461,14 +460,14 @@ class Inversion::RenderState
461
460
  protected
462
461
  #########
463
462
 
464
- ### Return the +node+ as a comment if debugging comments are enabled.
463
+ ### Return the `node` as a comment if debugging comments are enabled.
465
464
  def make_node_comment( node )
466
465
  comment_body = node.as_comment_body or return ''
467
466
  return self.make_comment( comment_body )
468
467
  end
469
468
 
470
469
 
471
- ### Return the specified +content+ inside of the configured comment characters.
470
+ ### Return the specified `content` inside of the configured comment characters.
472
471
  def make_comment( content )
473
472
  return [
474
473
  self.options[:comment_start],
@@ -478,7 +477,7 @@ class Inversion::RenderState
478
477
  end
479
478
 
480
479
 
481
- ### Return the given +nodes+ as a String in the configured encoding.
480
+ ### Return the given `nodes` as a String in the configured encoding.
482
481
  def stringify_nodes( nodes )
483
482
  # self.log.debug "Rendering nodes: %p" % [ nodes ]
484
483
  strings = nodes.flatten.map( &:to_s )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
 
@@ -1,10 +1,12 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
6
5
  require 'inversion/template/codetag'
7
6
 
7
+ using Inversion::Refinements
8
+
9
+
8
10
  # Inversion attribute tag.
9
11
  #
10
12
  # Attribute tags add an accessor to a template like 'attr_accessor' does for Ruby classes.
@@ -49,8 +51,8 @@ class Inversion::Template::AttrTag < Inversion::Template::CodeTag
49
51
 
50
52
 
51
53
 
52
- ### Create a new AttrTag with the given +name+, which should be a valid
53
- ### Ruby identifier. The +linenum+ and +colnum+ should be the line and column of
54
+ ### Create a new AttrTag with the given `name`, which should be a valid
55
+ ### Ruby identifier. The `linenum` and `colnum` should be the line and column of
54
56
  ### the tag in the template source, if available.
55
57
  def initialize( body, linenum=nil, colnum=nil )
56
58
  @name = nil
@@ -79,7 +81,7 @@ class Inversion::Template::AttrTag < Inversion::Template::CodeTag
79
81
  attr_accessor :methodchain
80
82
 
81
83
 
82
- ### Render the tag attributes of the specified +renderstate+ and return them.
84
+ ### Render the tag attributes of the specified `renderstate` and return them.
83
85
  def render( renderstate )
84
86
  value = self.evaluate( renderstate ) # :FIXME: or return value # nil or false?
85
87
 
@@ -92,7 +94,7 @@ class Inversion::Template::AttrTag < Inversion::Template::CodeTag
92
94
  end
93
95
 
94
96
 
95
- ### Evaluate the body of the tag in the context of +renderstate+ and return the results.
97
+ ### Evaluate the body of the tag in the context of `renderstate` and return the results.
96
98
  def evaluate( renderstate )
97
99
  code = [ self.name.to_s, self.methodchain ].join( '' )
98
100
  return renderstate.eval( code )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -1,15 +1,19 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
4
+ require 'loggability'
5
+
5
6
  require 'ripper'
6
7
  require 'inversion/template' unless defined?( Inversion::Template )
7
8
  require 'inversion/template/tag'
8
9
 
10
+ using Inversion::Refinements
11
+
12
+
9
13
  # The base class for Inversion tags that parse the body section of the tag using
10
14
  # a Ruby parser.
11
15
  #
12
- # It provides a +tag_pattern+ declarative method that is used to specify a pattern of
16
+ # It provides a `tag_pattern` declarative method that is used to specify a pattern of
13
17
  # tokens to match, and a block for handling tag instances that match the pattern.
14
18
  #
15
19
  # class Inversion::Template::MyTag < Inversion::Template::CodeTag
@@ -21,7 +25,7 @@ require 'inversion/template/tag'
21
25
  #
22
26
  # end
23
27
  #
24
- # The tokens in the +tag_pattern+ are Ruby token names used by the parser. If you're creating
28
+ # The tokens in the `tag_pattern` are Ruby token names used by the parser. If you're creating
25
29
  # your own tag, you can dump the tokens for a particular snippet using the 'inversion'
26
30
  # command-line tool that comes with the gem:
27
31
  #
@@ -36,49 +40,53 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
36
40
  include Inversion::AbstractClass
37
41
 
38
42
 
39
- ### A subclass of Ripper::TokenPattern that binds matches to the beginning and
40
- ### end of the matched string.
41
43
  class TokenPattern < Ripper::TokenPattern
44
+ extend Loggability
45
+
46
+ # Loggability API -- use Inversion's logger
47
+ log_to :inversion
42
48
 
43
- # the token pattern's source string
49
+ # Expose the source attribute
44
50
  attr_reader :source
45
51
 
46
- #########
47
- protected
48
- #########
49
52
 
50
- ### Compile the token pattern into a Regexp
53
+ ### Overloaded to generate a bound regex.
51
54
  def compile( pattern )
55
+ self.log.debug "Compiling token pattern from: %p" % [ pattern ]
56
+
52
57
  if m = /[^\w\s$()\[\]{}?*+\.]/.match( pattern )
53
- raise Ripper::TokenPattern::CompileError,
54
- "invalid char in pattern: #{m[0].inspect}"
58
+ raise Ripper::TokenPattern::CompileError, "invalid char in pattern: #{m[0].inspect}"
55
59
  end
56
60
 
57
- buf = String.new( '^' )
58
- pattern.scan( /(?:\w+|\$\(|[()\[\]\{\}?*+\.]+)/ ) do |tok|
61
+ buf = +'\\A'
62
+ pattern.scan(/(?:\w+|\$\(|[()\[\]\{\}?*+\.]+)/) do |tok|
59
63
  case tok
60
64
  when /\w/
61
- buf << map_token( tok )
65
+ buf.concat( map_token(tok) )
62
66
  when '$('
63
- buf << '('
67
+ buf.concat( '(' )
64
68
  when '('
65
- buf << '(?:'
69
+ buf.concat( '(?:' )
66
70
  when /[?*\[\])\.]/
67
- buf << tok
71
+ buf.concat( tok )
68
72
  else
69
- raise ScriptError, "invalid token in pattern: %p" % [ tok ]
73
+ raise 'must not happen'
70
74
  end
71
75
  end
72
- buf << '$'
76
+ buf.concat( '\z' )
77
+
78
+ self.log.debug " resulting token pattern is: %p" % [ buf ]
79
+ return Regexp.compile( buf )
73
80
 
74
- Regexp.compile( buf )
75
81
  rescue RegexpError => err
76
82
  raise Ripper::TokenPattern::CompileError, err.message
77
83
  end
78
84
 
85
+
79
86
  end # class TokenPattern
80
87
 
81
88
 
89
+
82
90
  #################################################################
83
91
  ### C L A S S M E T H O D S
84
92
  #################################################################
@@ -91,10 +99,10 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
91
99
  end
92
100
 
93
101
 
94
- ### Declare a +token_pattern+ for tag bodies along with a +callback+ that will
95
- ### be called when a tag matching the pattern is instantiated. The +callback+ will
102
+ ### Declare a `token_pattern` for tag bodies along with a `callback` that will
103
+ ### be called when a tag matching the pattern is instantiated. The `callback` will
96
104
  ### be called with the tag instance, and the MatchData object that resulted from
97
- ### matching the input, and should set up the yielded +tag+ object appropriately.
105
+ ### matching the input, and should set up the yielded `tag` object appropriately.
98
106
  def self::tag_pattern( token_pattern, &callback ) #:yield: tag, match_data
99
107
  pattern = TokenPattern.compile( token_pattern )
100
108
  @tag_patterns = [] unless defined?( @tag_patterns )
@@ -104,7 +112,7 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
104
112
 
105
113
  ### Declarative that forces a tag to inherit existing patterns from
106
114
  ### its parent, rather than replacing them. Afterwards, you can use
107
- ### +tag_pattern+ regularly, appending to the list.
115
+ ### `tag_pattern` regularly, appending to the list.
108
116
  def self::inherit_tag_patterns
109
117
  raise ScriptError, "Patterns already exist for this tag." if defined?( @tag_patterns )
110
118
  @tag_patterns = self.superclass.tag_patterns
@@ -115,8 +123,8 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
115
123
  ### I N S T A N C E M E T H O D S
116
124
  #################################################################
117
125
 
118
- ### Initialize a new tag that expects Ruby code in its +body+. Calls the
119
- ### tag's #parse_pi_body method with the specified +body+.
126
+ ### Initialize a new tag that expects Ruby code in its `body`. Calls the
127
+ ### tag's #parse_pi_body method with the specified `body`.
120
128
  def initialize( body, linenum=nil, colnum=nil ) # :notnew:
121
129
  super
122
130
 
@@ -146,12 +154,13 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
146
154
  protected
147
155
  #########
148
156
 
149
- ### Match the given +body+ against one of the tag's tag patterns, calling the
157
+ ### Match the given `body` against one of the tag's tag patterns, calling the
150
158
  ### block associated with the first one that matches and returning the matching
151
159
  ### pattern.
152
160
  def match_tag_pattern( body )
153
161
 
154
162
  self.class.tag_patterns.each do |tp, callback|
163
+ self.log.debug "Testing for a match against %p" % [ tp ]
155
164
  if match = tp.match( body.strip )
156
165
  self.log.debug "Matched tag pattern: %p, match is: %p" % [ tp, match ]
157
166
  callback.call( self, match )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'yaml'
@@ -32,7 +31,7 @@ class Inversion::Template::ConfigTag < Inversion::Template::Tag
32
31
  include Inversion::HashUtilities
33
32
 
34
33
 
35
- ### Create a new ConfigTag with the specified +body+.
34
+ ### Create a new ConfigTag with the specified `body`.
36
35
  def initialize( body, linenum=nil, colnum=nil )
37
36
  raise Inversion::ParseError, 'Empty config settings' if
38
37
  body.nil? || body.strip.empty?
@@ -57,14 +56,14 @@ class Inversion::Template::ConfigTag < Inversion::Template::Tag
57
56
  attr_reader :options
58
57
 
59
58
 
60
- ### Override the options in the +parsestate+ when the config is appended to
59
+ ### Override the options in the `parsestate` when the config is appended to
61
60
  ### the tree.
62
61
  def before_appending( parsestate )
63
62
  parsestate.options.merge!( self.options )
64
63
  end
65
64
 
66
65
 
67
- ### Override the options in the +renderstate+ when the config is rendered.
66
+ ### Override the options in the `renderstate` when the config is rendered.
68
67
  def before_rendering( renderstate )
69
68
  renderstate.options.merge!( self.options )
70
69
  end
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -40,7 +39,7 @@ module Inversion::Template::ContainerTag
40
39
  end
41
40
 
42
41
 
43
- ### Append the container's subnodes to the +renderstate+.
42
+ ### Append the container's subnodes to the `renderstate`.
44
43
  def render_subnodes( renderstate )
45
44
  self.subnodes.each {|node| renderstate << node }
46
45
  end
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -55,7 +54,7 @@ class Inversion::Template::DefaultTag < Inversion::Template::CodeTag
55
54
  end
56
55
 
57
56
 
58
- ### Create a new DefaultTag with the given +name+, which should be a valid
57
+ ### Create a new DefaultTag with the given `name`, which should be a valid
59
58
  ### Ruby identifier.
60
59
  def initialize( body, linenum=nil, colnum=nil )
61
60
  @name = nil
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -8,7 +7,7 @@ require 'inversion/template/tag'
8
7
  # Closing tag class
9
8
  class Inversion::Template::EndTag < Inversion::Template::Tag
10
9
 
11
- ### Overridden to provide a default +body+.
10
+ ### Overridden to provide a default `body`.
12
11
  def initialize( body='', linenum=nil, colnum=nil )
13
12
  super
14
13
  @opener = nil
@@ -23,7 +22,7 @@ class Inversion::Template::EndTag < Inversion::Template::Tag
23
22
  attr_reader :opener
24
23
 
25
24
 
26
- ### Parser callback -- close the given +state+'s currently-open container node.
25
+ ### Parser callback -- close the given `state`'s currently-open container node.
27
26
  def before_appending( state )
28
27
  @opener = state.pop
29
28
  self.log.debug "End tag for %s at %s" % [ @opener.tagname, @opener.location ]
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -18,7 +17,7 @@ require 'inversion/template/attrtag'
18
17
  class Inversion::Template::EscapeTag < Inversion::Template::AttrTag
19
18
  include Inversion::Escaping
20
19
 
21
- ### Render the method chains against the attributes of the specified +render_state+
20
+ ### Render the method chains against the attributes of the specified `render_state`
22
21
  ### and return them.
23
22
  def render( render_state )
24
23
  return self.escape( super, render_state )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -59,7 +58,7 @@ class Inversion::Template::ForTag < Inversion::Template::CodeTag
59
58
 
60
59
 
61
60
 
62
- ### Create a new ForTag with the specified +body+.
61
+ ### Create a new ForTag with the specified `body`.
63
62
  def initialize( body, linenum=nil, colnum=nil )
64
63
  @block_args = []
65
64
  @enumerator = nil
@@ -80,7 +79,7 @@ class Inversion::Template::ForTag < Inversion::Template::CodeTag
80
79
  attr_accessor :enumerator
81
80
 
82
81
 
83
- ### Iterate over the enumerator in +state+ and render the tag's
82
+ ### Iterate over the enumerator in `state` and render the tag's
84
83
  ### contents for each iteration.
85
84
  def render( state )
86
85
  lvalue = state.eval( self.enumerator ) or return nil
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -21,7 +20,7 @@ class Inversion::Template::FragmentTag < Inversion::Template::Tag
21
20
  include Inversion::Template::ContainerTag
22
21
 
23
22
 
24
- ### Create a new FragmentTag with the given +body+.
23
+ ### Create a new FragmentTag with the given `body`.
25
24
  def initialize( body, line=nil, column=nil )
26
25
  super
27
26
 
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/mixins'
@@ -7,6 +6,9 @@ require 'inversion/template' unless defined?( Inversion::Template )
7
6
  require 'inversion/template/attrtag'
8
7
  require 'inversion/template/containertag'
9
8
 
9
+ using Inversion::Refinements
10
+
11
+
10
12
  # Inversion 'if' tag.
11
13
  #
12
14
  # This tag causes a section of the template to be rendered only if its methodchain or attribute
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'inversion/template' unless defined?( Inversion::Template )
@@ -17,7 +16,7 @@ require 'inversion/template/tag'
17
16
  #
18
17
  class Inversion::Template::ImportTag < Inversion::Template::Tag
19
18
 
20
- ### Create a new ImportTag with the given +name+, which should be a valid
19
+ ### Create a new ImportTag with the given `name`, which should be a valid
21
20
  ### Ruby identifier.
22
21
  def initialize( body, linenum=nil, colnum=nil )
23
22
  super
@@ -33,7 +32,7 @@ class Inversion::Template::ImportTag < Inversion::Template::Tag
33
32
  attr_reader :attributes
34
33
 
35
34
 
36
- ### Merge the inherited renderstate into the current template's +renderstate+.
35
+ ### Merge the inherited renderstate into the current template's `renderstate`.
37
36
  def render( renderstate )
38
37
  if (( cstate = renderstate.containerstate ))
39
38
  # self.log.debug "Importing inherited attributes: %p from %p" %
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'pathname'
@@ -20,7 +19,7 @@ require 'inversion/template/tag'
20
19
  #
21
20
  class Inversion::Template::IncludeTag < Inversion::Template::Tag
22
21
 
23
- ### Create a new IncludeTag with the specified +path+.
22
+ ### Create a new IncludeTag with the specified `path`.
24
23
  def initialize( path, linenum=nil, colnum=nil )
25
24
  super
26
25
  self.log.debug "Body is: %p" % [ @body ]
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'loggability'
@@ -21,7 +20,7 @@ class Inversion::Template::Node
21
20
  log_to :inversion
22
21
 
23
22
 
24
- ### Create a new TextNode with the specified +source+.
23
+ ### Create a new TextNode with the specified `source`.
25
24
  def initialize( body, linenum=nil, colnum=nil )
26
25
  @body = body
27
26
  @linenum = linenum
@@ -40,8 +39,8 @@ class Inversion::Template::Node
40
39
  attr_reader :colnum
41
40
 
42
41
 
43
- ### Render the node using the given +render_state+. By default, rendering a node
44
- ### returns +nil+.
42
+ ### Render the node using the given `render_state`. By default, rendering a node
43
+ ### returns `nil`.
45
44
  def render( render_state )
46
45
  return nil
47
46
  end
@@ -53,7 +52,7 @@ class Inversion::Template::Node
53
52
  end
54
53
 
55
54
 
56
- ### Returns +true+ if the node introduces a new parsing/rendering scope.
55
+ ### Returns `true` if the node introduces a new parsing/rendering scope.
57
56
  def is_container?
58
57
  return false
59
58
  end
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- # frozen_string_literal: true
3
2
  # vim: set noet nosta sw=4 ts=4 :
4
3
 
5
4
  require 'pp'
@@ -17,7 +16,7 @@ require 'inversion/template/calltag'
17
16
  class Inversion::Template::PpTag < Inversion::Template::CallTag
18
17
  include Inversion::Escaping
19
18
 
20
- ### Render the method chains against the attributes of the specified +render_state+
19
+ ### Render the method chains against the attributes of the specified `render_state`
21
20
  ### and return them.
22
21
  def render( render_state )
23
22
  raw = super