inversion 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/Examples.md +134 -0
- data/GettingStarted.md +50 -0
- data/Guide.md +14 -0
- data/{History.rdoc → History.md} +52 -43
- data/{README.rdoc → README.md} +43 -34
- data/Tags.md +555 -0
- data/bin/inversion +4 -8
- data/lib/inversion/cli/api.rb +75 -0
- data/lib/inversion/cli/tagtokens.rb +34 -0
- data/lib/inversion/cli/tree.rb +70 -0
- data/lib/inversion/cli.rb +406 -0
- data/lib/inversion/exceptions.rb +0 -1
- data/lib/inversion/mixins.rb +10 -11
- data/lib/inversion/parser.rb +5 -6
- data/lib/inversion/refinements.rb +18 -0
- data/lib/inversion/renderstate.rb +24 -25
- data/lib/inversion/sinatra.rb +0 -1
- data/lib/inversion/template/attrtag.rb +7 -5
- data/lib/inversion/template/begintag.rb +0 -1
- data/lib/inversion/template/calltag.rb +0 -1
- data/lib/inversion/template/codetag.rb +37 -28
- data/lib/inversion/template/commenttag.rb +0 -1
- data/lib/inversion/template/configtag.rb +3 -4
- data/lib/inversion/template/containertag.rb +1 -2
- data/lib/inversion/template/defaulttag.rb +1 -2
- data/lib/inversion/template/elsetag.rb +0 -1
- data/lib/inversion/template/elsiftag.rb +0 -1
- data/lib/inversion/template/endtag.rb +2 -3
- data/lib/inversion/template/escapetag.rb +1 -2
- data/lib/inversion/template/fortag.rb +2 -3
- data/lib/inversion/template/fragmenttag.rb +1 -2
- data/lib/inversion/template/iftag.rb +3 -1
- data/lib/inversion/template/importtag.rb +2 -3
- data/lib/inversion/template/includetag.rb +1 -2
- data/lib/inversion/template/node.rb +4 -5
- data/lib/inversion/template/pptag.rb +1 -2
- data/lib/inversion/template/publishtag.rb +2 -3
- data/lib/inversion/template/rescuetag.rb +1 -2
- data/lib/inversion/template/subscribetag.rb +3 -4
- data/lib/inversion/template/tag.rb +3 -4
- data/lib/inversion/template/textnode.rb +1 -2
- data/lib/inversion/template/timedeltatag.rb +1 -2
- data/lib/inversion/template/unlesstag.rb +0 -1
- data/lib/inversion/template/uriencodetag.rb +1 -2
- data/lib/inversion/template/yieldtag.rb +0 -1
- data/lib/inversion/template.rb +18 -22
- data/lib/inversion/tilt.rb +1 -2
- data/lib/inversion.rb +2 -3
- data/spec/helpers.rb +19 -13
- data/spec/inversion/mixins_spec.rb +1 -1
- data/spec/inversion/monkeypatches_spec.rb +1 -1
- data/spec/inversion/parser_spec.rb +1 -1
- data/spec/inversion/renderstate_spec.rb +1 -1
- data/spec/inversion/sinatra_spec.rb +1 -1
- data/spec/inversion/template/attrtag_spec.rb +1 -1
- data/spec/inversion/template/begintag_spec.rb +1 -1
- data/spec/inversion/template/calltag_spec.rb +1 -1
- data/spec/inversion/template/codetag_spec.rb +24 -1
- data/spec/inversion/template/commenttag_spec.rb +1 -1
- data/spec/inversion/template/configtag_spec.rb +1 -1
- data/spec/inversion/template/containertag_spec.rb +1 -1
- data/spec/inversion/template/defaulttag_spec.rb +1 -1
- data/spec/inversion/template/elsetag_spec.rb +1 -1
- data/spec/inversion/template/elsiftag_spec.rb +1 -1
- data/spec/inversion/template/endtag_spec.rb +1 -1
- data/spec/inversion/template/escapetag_spec.rb +1 -1
- data/spec/inversion/template/fortag_spec.rb +1 -1
- data/spec/inversion/template/fragmenttag_spec.rb +1 -1
- data/spec/inversion/template/iftag_spec.rb +1 -1
- data/spec/inversion/template/importtag_spec.rb +1 -1
- data/spec/inversion/template/includetag_spec.rb +1 -1
- data/spec/inversion/template/node_spec.rb +1 -1
- data/spec/inversion/template/pptag_spec.rb +1 -1
- data/spec/inversion/template/publishtag_spec.rb +1 -1
- data/spec/inversion/template/rescuetag_spec.rb +1 -1
- data/spec/inversion/template/subscribetag_spec.rb +1 -1
- data/spec/inversion/template/tag_spec.rb +1 -1
- data/spec/inversion/template/textnode_spec.rb +1 -1
- data/spec/inversion/template/timedeltatag_spec.rb +1 -1
- data/spec/inversion/template/unlesstag_spec.rb +1 -1
- data/spec/inversion/template/uriencodetag_spec.rb +1 -1
- data/spec/inversion/template/yieldtag_spec.rb +1 -1
- data/spec/inversion/template_spec.rb +1 -1
- data/spec/inversion/tilt_spec.rb +1 -1
- data/spec/inversion_spec.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +59 -45
- metadata.gz.sig +0 -0
- data/Examples.rdoc +0 -134
- data/GettingStarted.rdoc +0 -44
- data/Guide.rdoc +0 -47
- data/Manifest.txt +0 -86
- data/Rakefile +0 -7
- data/Tags.rdoc +0 -560
- data/lib/inversion/command.rb +0 -278
- 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 'inversion/template' unless defined?( Inversion::Template )
|
@@ -31,7 +30,7 @@ class Inversion::Template::PublishTag < Inversion::Template::Tag
|
|
31
30
|
include Inversion::Template::ContainerTag
|
32
31
|
|
33
32
|
|
34
|
-
### Create a new PublishTag with the given
|
33
|
+
### Create a new PublishTag with the given `body`.
|
35
34
|
def initialize( body, line=nil, column=nil )
|
36
35
|
super
|
37
36
|
|
@@ -50,7 +49,7 @@ class Inversion::Template::PublishTag < Inversion::Template::Tag
|
|
50
49
|
attr_reader :key
|
51
50
|
|
52
51
|
|
53
|
-
### Render the published subnodes in the context of the given
|
52
|
+
### Render the published subnodes in the context of the given `renderstate`, but
|
54
53
|
### save them for publication after the render is done.
|
55
54
|
def render( renderstate )
|
56
55
|
self.log.debug "Publishing %d nodes as %s" % [ self.subnodes.length, self.key ]
|
@@ -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 )
|
@@ -72,7 +71,7 @@ class Inversion::Template::RescueTag < Inversion::Template::Tag
|
|
72
71
|
private
|
73
72
|
#######
|
74
73
|
|
75
|
-
### Parse one or more exception classes from the given
|
74
|
+
### Parse one or more exception classes from the given `rescuespec` and return them.
|
76
75
|
def parse_exception_types( rescuespec )
|
77
76
|
return [ ::RuntimeError ] if rescuespec.nil? || rescuespec == ''
|
78
77
|
|
@@ -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 )
|
@@ -29,7 +28,7 @@ require 'inversion/template/tag'
|
|
29
28
|
#
|
30
29
|
class Inversion::Template::SubscribeTag < Inversion::Template::Tag
|
31
30
|
|
32
|
-
### Create a new SubscribeTag with the given
|
31
|
+
### Create a new SubscribeTag with the given `body`.
|
33
32
|
def initialize( body, line=nil, column=nil )
|
34
33
|
super
|
35
34
|
|
@@ -60,7 +59,7 @@ class Inversion::Template::SubscribeTag < Inversion::Template::Tag
|
|
60
59
|
attr_reader :content
|
61
60
|
|
62
61
|
|
63
|
-
### Tell the
|
62
|
+
### Tell the `renderstate` that this tag is interested in nodes that are published with
|
64
63
|
### its key.
|
65
64
|
def before_rendering( renderstate )
|
66
65
|
@content.clear
|
@@ -74,7 +73,7 @@ class Inversion::Template::SubscribeTag < Inversion::Template::Tag
|
|
74
73
|
end
|
75
74
|
|
76
75
|
|
77
|
-
### Pub/sub callback. Called from the RenderState when a PublishTag publishes
|
76
|
+
### Pub/sub callback. Called from the RenderState when a PublishTag publishes `nodes`
|
78
77
|
### with the same key as the current tag.
|
79
78
|
def publish( *nodes )
|
80
79
|
self.log.debug "Adding published nodes %p to %p" % [ nodes, @content ]
|
@@ -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'
|
@@ -105,7 +104,7 @@ class Inversion::Template::Tag < Inversion::Template::Node
|
|
105
104
|
end
|
106
105
|
|
107
106
|
|
108
|
-
### Safely load the specified
|
107
|
+
### Safely load the specified `tagfile`.
|
109
108
|
def self::load( tagfile )
|
110
109
|
tagrequire = tagfile[ %r{inversion/template/\w+tag} ] or
|
111
110
|
raise "tag file %p doesn't look like a tag plugin" % [ tagfile ]
|
@@ -118,7 +117,7 @@ class Inversion::Template::Tag < Inversion::Template::Node
|
|
118
117
|
end
|
119
118
|
|
120
119
|
|
121
|
-
### Create a new Inversion::Template::Tag from the specified
|
120
|
+
### Create a new Inversion::Template::Tag from the specified `tagname` and `body`.
|
122
121
|
def self::create( tagname, body, linenum=nil, colnum=nil )
|
123
122
|
tagname =~ /^(\w+)$/i or raise ArgumentError, "invalid tag name %p" % [ tagname ]
|
124
123
|
tagtype = $1.downcase
|
@@ -137,7 +136,7 @@ class Inversion::Template::Tag < Inversion::Template::Node
|
|
137
136
|
### I N S T A N C E M E T H O D S
|
138
137
|
########################################################################
|
139
138
|
|
140
|
-
### Create a new Inversion::Template::Tag with the specified
|
139
|
+
### Create a new Inversion::Template::Tag with the specified `body`.
|
141
140
|
def initialize( body, linenum=nil, colnum=nil )
|
142
141
|
super
|
143
142
|
@body = body.to_s.strip
|
@@ -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/node'
|
|
8
7
|
# Inversion text node class -- container for static content in templates between tags.
|
9
8
|
class Inversion::Template::TextNode < Inversion::Template::Node
|
10
9
|
|
11
|
-
### Create a new TextNode with the specified
|
10
|
+
### Create a new TextNode with the specified `source`.
|
12
11
|
def initialize( body, linenum=nil, colnum=nil )
|
13
12
|
@body = body
|
14
13
|
super
|
@@ -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 'uri'
|
@@ -74,7 +73,7 @@ class Inversion::Template::TimeDeltaTag < Inversion::Template::AttrTag
|
|
74
73
|
private
|
75
74
|
#######
|
76
75
|
|
77
|
-
### Return a string describing
|
76
|
+
### Return a string describing `seconds` as an approximate interval of time.
|
78
77
|
def timeperiod( seconds )
|
79
78
|
return case
|
80
79
|
when seconds < MINUTES - 5
|
@@ -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 'uri'
|
@@ -19,7 +18,7 @@ class Inversion::Template::UriencodeTag < Inversion::Template::AttrTag
|
|
19
18
|
include Inversion::Escaping
|
20
19
|
|
21
20
|
|
22
|
-
### Render the method chains against the attributes of the specified
|
21
|
+
### Render the method chains against the attributes of the specified `render_state`
|
23
22
|
### and return them.
|
24
23
|
def render( render_state )
|
25
24
|
raw = super
|
data/lib/inversion/template.rb
CHANGED
@@ -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'
|
@@ -28,23 +27,23 @@ end
|
|
28
27
|
#
|
29
28
|
# == Template Options
|
30
29
|
#
|
31
|
-
# Inversion supports the
|
32
|
-
# API, and registers itself with the
|
33
|
-
# a
|
30
|
+
# Inversion supports the [Configurability](http://rubygems.org/gems/configurability)
|
31
|
+
# API, and registers itself with the `templates` key. This means you can either add
|
32
|
+
# a `templates` section to your Configurability config, or call
|
34
33
|
# ::configure yourself with a config Hash (or something that quacks like one).
|
35
34
|
#
|
36
35
|
# To set options on a per-template basis, you can pass an options hash to either
|
37
36
|
# Inversion::Template::load or Inversion::Template::new, or set them from within the template
|
38
|
-
# itself using the
|
37
|
+
# itself using the [config tag](rdoc-ref:Tags@config).
|
39
38
|
#
|
40
39
|
# The available options are:
|
41
40
|
#
|
42
41
|
# [:ignore_unknown_tags]
|
43
42
|
# Setting to false causes unknown tags used in templates to raise an
|
44
|
-
# Inversion::ParseError. Defaults to
|
43
|
+
# Inversion::ParseError. Defaults to `true`.
|
45
44
|
#
|
46
45
|
# [:on_render_error]
|
47
|
-
# Dictates the behavior of exceptions during rendering. Defaults to
|
46
|
+
# Dictates the behavior of exceptions during rendering. Defaults to `:comment`.
|
48
47
|
#
|
49
48
|
# [:ignore]
|
50
49
|
# Exceptions are silently ignored.
|
@@ -55,7 +54,7 @@ end
|
|
55
54
|
#
|
56
55
|
#
|
57
56
|
# [:debugging_comments]
|
58
|
-
# Insert various Inversion parse and render statements while rendering. Defaults to
|
57
|
+
# Insert various Inversion parse and render statements while rendering. Defaults to `false`.
|
59
58
|
#
|
60
59
|
# [:comment_start]
|
61
60
|
# When rendering debugging comments, the comment is started with these characters.
|
@@ -71,16 +70,16 @@ end
|
|
71
70
|
# last checked member of this. Defaults to <code>[]</code>.
|
72
71
|
#
|
73
72
|
# [:escape_format]
|
74
|
-
# The escaping used by tags such as
|
73
|
+
# The escaping used by tags such as `escape` and `pp`. Default: `:html`.
|
75
74
|
#
|
76
75
|
# [:strip_tag_lines]
|
77
76
|
# If a tag's presence introduces a blank line into the output, this option
|
78
|
-
# removes it. Defaults to
|
77
|
+
# removes it. Defaults to `true`.
|
79
78
|
#
|
80
79
|
# [:stat_delay]
|
81
80
|
# Templates know when they've been altered on disk, and can dynamically
|
82
81
|
# reload themselves in long running applications. Setting this option creates
|
83
|
-
# a purposeful delay between reloads for busy servers. Defaults to
|
82
|
+
# a purposeful delay between reloads for busy servers. Defaults to `0`
|
84
83
|
# (disabled).
|
85
84
|
#
|
86
85
|
# [:strict_attributes]
|
@@ -111,9 +110,6 @@ class Inversion::Template
|
|
111
110
|
require 'inversion/template/tag'
|
112
111
|
require 'inversion/renderstate'
|
113
112
|
|
114
|
-
# Alias to maintain backward compatibility with <0.2.0 code
|
115
|
-
Parser = Inversion::Parser
|
116
|
-
|
117
113
|
# Valid actions for 'on_render_error'
|
118
114
|
VALID_ERROR_ACTIONS = [
|
119
115
|
:ignore,
|
@@ -165,7 +161,7 @@ class Inversion::Template
|
|
165
161
|
end
|
166
162
|
|
167
163
|
|
168
|
-
### Read a template object from the specified
|
164
|
+
### Read a template object from the specified `path`.
|
169
165
|
def self::load( path, parsestate=nil, opts={} )
|
170
166
|
|
171
167
|
# Shift the options hash over if there isn't a parse state
|
@@ -210,10 +206,10 @@ class Inversion::Template
|
|
210
206
|
end
|
211
207
|
|
212
208
|
|
213
|
-
### Add one or more extension
|
209
|
+
### Add one or more extension `modules` to Inversion::Template. This allows tags to decorate
|
214
210
|
### the template class with new functionality.
|
215
211
|
###
|
216
|
-
### Each one of the given
|
212
|
+
### Each one of the given `modules` will be included as a mixin, and if it also
|
217
213
|
### contains a constant called ClassMethods and/or PrependedMethods, it will
|
218
214
|
### also be extended/prepended (respectively) with it.
|
219
215
|
###
|
@@ -260,7 +256,7 @@ class Inversion::Template
|
|
260
256
|
end
|
261
257
|
|
262
258
|
|
263
|
-
### Create a new Inversion:Template with the given
|
259
|
+
### Create a new Inversion:Template with the given `source`.
|
264
260
|
def initialize( source, parsestate=nil, opts={} )
|
265
261
|
if parsestate.is_a?( Hash )
|
266
262
|
# self.log.debug "Shifting template options: %p" % [ parsestate ]
|
@@ -325,7 +321,7 @@ class Inversion::Template
|
|
325
321
|
end
|
326
322
|
|
327
323
|
|
328
|
-
### Returns
|
324
|
+
### Returns `true` if the template was loaded from a file and the file's mtime
|
329
325
|
### is after the time the template was created.
|
330
326
|
def changed?
|
331
327
|
return false unless file = self.source_file
|
@@ -408,7 +404,7 @@ class Inversion::Template
|
|
408
404
|
end
|
409
405
|
|
410
406
|
|
411
|
-
### Parse the given
|
407
|
+
### Parse the given `source` into the template node tree.
|
412
408
|
def parse( source, parsestate=nil )
|
413
409
|
opts = self.class.config.merge( self.options )
|
414
410
|
parser = Inversion::Parser.new( self, opts )
|
@@ -442,7 +438,7 @@ class Inversion::Template
|
|
442
438
|
end
|
443
439
|
|
444
440
|
|
445
|
-
### Add attributes for the given
|
441
|
+
### Add attributes for the given `node`'s identifiers.
|
446
442
|
def add_attributes_from_node( node )
|
447
443
|
if node.respond_to?( :identifiers )
|
448
444
|
node.identifiers.each do |id|
|
@@ -453,7 +449,7 @@ class Inversion::Template
|
|
453
449
|
end
|
454
450
|
|
455
451
|
|
456
|
-
### Install reader and writer methods for the attribute associated with the specified
|
452
|
+
### Install reader and writer methods for the attribute associated with the specified `key`.
|
457
453
|
def install_accessors( key )
|
458
454
|
reader, writer = self.make_attribute_accessors( key )
|
459
455
|
|
data/lib/inversion/tilt.rb
CHANGED
@@ -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 'tilt'
|
@@ -36,7 +35,7 @@ if defined?( ::Tilt )
|
|
36
35
|
self.evaluate( *args )
|
37
36
|
end
|
38
37
|
|
39
|
-
### Tilt::Template API: render the template with the given
|
38
|
+
### Tilt::Template API: render the template with the given `scope`, `locals`, and `block`.
|
40
39
|
def evaluate( scope, locals, &block )
|
41
40
|
@template.attributes.merge!( scope.to_h ) if scope.respond_to?( :to_h )
|
42
41
|
@template.attributes.merge!( locals )
|
data/lib/inversion.rb
CHANGED
@@ -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'
|
@@ -26,7 +25,7 @@ module Inversion
|
|
26
25
|
warn ">>> Inversion requires Ruby 2.4.0 or later. <<<" if RUBY_VERSION < '2.4.0'
|
27
26
|
|
28
27
|
# Library version constant
|
29
|
-
VERSION = '1.
|
28
|
+
VERSION = '1.4.0'
|
30
29
|
|
31
30
|
# Version-control revision constant
|
32
31
|
REVISION = %q$Revision$
|
@@ -40,8 +39,8 @@ module Inversion
|
|
40
39
|
end
|
41
40
|
|
42
41
|
require 'inversion/exceptions'
|
42
|
+
require 'inversion/refinements'
|
43
43
|
require 'inversion/mixins'
|
44
|
-
require 'inversion/monkeypatches'
|
45
44
|
require 'inversion/template'
|
46
45
|
|
47
46
|
end # module Inversion
|
data/spec/helpers.rb
CHANGED
@@ -11,7 +11,7 @@ require 'loggability/spechelpers'
|
|
11
11
|
|
12
12
|
require 'inversion'
|
13
13
|
|
14
|
-
Inversion::Template::Tag.load_all
|
14
|
+
# Inversion::Template::Tag.load_all
|
15
15
|
|
16
16
|
|
17
17
|
### RSpec helper functions.
|
@@ -21,14 +21,14 @@ module Inversion::SpecHelpers
|
|
21
21
|
module_function
|
22
22
|
###############
|
23
23
|
|
24
|
-
### Make an easily-comparable version vector out of
|
24
|
+
### Make an easily-comparable version vector out of `ver` and return it.
|
25
25
|
def vvec( ver )
|
26
26
|
return ver.split('.').collect {|char| char.to_i }.pack('N*')
|
27
27
|
end
|
28
28
|
|
29
29
|
|
30
|
-
### Create a string containing an XML Processing Instruction with the given
|
31
|
-
### and
|
30
|
+
### Create a string containing an XML Processing Instruction with the given `name`
|
31
|
+
### and `data`.
|
32
32
|
def create_pi( name, data )
|
33
33
|
return "<?#{name} #{data} ?>"
|
34
34
|
end
|
@@ -37,19 +37,25 @@ end
|
|
37
37
|
|
38
38
|
|
39
39
|
### Mock with RSpec
|
40
|
-
RSpec.configure do |
|
40
|
+
RSpec.configure do |config|
|
41
41
|
|
42
|
-
|
43
|
-
c.filter_run :focus
|
44
|
-
c.order = 'random'
|
45
|
-
c.mock_with( :rspec ) do |mock|
|
42
|
+
config.mock_with( :rspec ) do |mock|
|
46
43
|
mock.syntax = :expect
|
47
44
|
end
|
48
|
-
c.wait_timeout = 3
|
49
|
-
c.example_status_persistence_file_path = 'spec/.state'
|
50
45
|
|
51
|
-
|
52
|
-
|
46
|
+
config.disable_monkey_patching!
|
47
|
+
config.example_status_persistence_file_path = "spec/.status"
|
48
|
+
config.filter_run :focus
|
49
|
+
config.filter_run_when_matching :focus
|
50
|
+
config.order = :random
|
51
|
+
config.profile_examples = 5
|
52
|
+
config.run_all_when_everything_filtered = true
|
53
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
54
|
+
config.wait_timeout = 3
|
55
|
+
# config.warnings = true
|
56
|
+
|
57
|
+
config.include( Inversion::SpecHelpers )
|
58
|
+
config.include( Loggability::SpecHelpers )
|
53
59
|
end
|
54
60
|
|
55
61
|
# vim: set nosta noet ts=4 sw=4:
|
@@ -11,7 +11,7 @@ require 'inversion/template/fragmenttag'
|
|
11
11
|
require 'inversion/template/subscribetag'
|
12
12
|
require 'inversion/template/publishtag'
|
13
13
|
|
14
|
-
describe Inversion::RenderState do
|
14
|
+
RSpec.describe Inversion::RenderState do
|
15
15
|
|
16
16
|
|
17
17
|
it "provides access to the block it was constructed with if there was one" do
|
@@ -13,7 +13,7 @@ rescue LoadError => err
|
|
13
13
|
$sinatra_support = false
|
14
14
|
end
|
15
15
|
|
16
|
-
describe "Sinatra support", :if => $sinatra_support do
|
16
|
+
RSpec.describe "Sinatra support", :if => $sinatra_support do
|
17
17
|
include Rack::Test::Methods if defined?( ::Rack )
|
18
18
|
|
19
19
|
before( :each ) do
|
@@ -11,7 +11,7 @@ require 'inversion/template/rescuetag'
|
|
11
11
|
require 'inversion/template/endtag'
|
12
12
|
require 'inversion/renderstate'
|
13
13
|
|
14
|
-
describe Inversion::Template::BeginTag do
|
14
|
+
RSpec.describe Inversion::Template::BeginTag do
|
15
15
|
|
16
16
|
|
17
17
|
context "without any rescue clauses" do
|
@@ -5,7 +5,7 @@ require_relative '../../helpers'
|
|
5
5
|
|
6
6
|
require 'inversion/template/codetag'
|
7
7
|
|
8
|
-
describe Inversion::Template::CodeTag do
|
8
|
+
RSpec.describe Inversion::Template::CodeTag do
|
9
9
|
|
10
10
|
|
11
11
|
it "is an abstract class" do
|
@@ -70,4 +70,27 @@ describe Inversion::Template::CodeTag do
|
|
70
70
|
}.to raise_exception( ScriptError, /patterns already exist/i )
|
71
71
|
end
|
72
72
|
end
|
73
|
+
|
74
|
+
|
75
|
+
it "throws an error if trying to declare a tag pattern with an invalid character" do
|
76
|
+
expect {
|
77
|
+
Class.new( described_class ) do
|
78
|
+
tag_pattern "°°°" do |tag, match|
|
79
|
+
:foo
|
80
|
+
end
|
81
|
+
end
|
82
|
+
}.to raise_error( Ripper::TokenPattern::CompileError, /invalid char/i )
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
it "throws an error if given an invalid tag pattern" do
|
87
|
+
expect {
|
88
|
+
Class.new( described_class ) do
|
89
|
+
tag_pattern "$(ident)$(" do |tag, match|
|
90
|
+
:foo
|
91
|
+
end
|
92
|
+
end
|
93
|
+
}.to raise_error( Ripper::TokenPattern::CompileError, /unmatched paren/i )
|
94
|
+
end
|
95
|
+
|
73
96
|
end
|
@@ -8,7 +8,7 @@ require 'inversion/template/attrtag'
|
|
8
8
|
require 'inversion/template/textnode'
|
9
9
|
require 'inversion/renderstate'
|
10
10
|
|
11
|
-
describe Inversion::Template::CommentTag do
|
11
|
+
RSpec.describe Inversion::Template::CommentTag do
|
12
12
|
|
13
13
|
it "allows any free-form text in its body" do
|
14
14
|
# <?comment Disabled for now ?>...<?end?>
|
@@ -10,7 +10,7 @@ require 'inversion/template/commenttag'
|
|
10
10
|
require 'inversion/template/fortag'
|
11
11
|
require 'inversion/renderstate'
|
12
12
|
|
13
|
-
describe Inversion::Template::ElseTag do
|
13
|
+
RSpec.describe Inversion::Template::ElseTag do
|
14
14
|
|
15
15
|
it "handles a non-existant body" do
|
16
16
|
Inversion::Template::ElseTag.new( nil )
|
@@ -8,7 +8,7 @@ require 'inversion/template/textnode'
|
|
8
8
|
require 'inversion/template/endtag'
|
9
9
|
require 'inversion/renderstate'
|
10
10
|
|
11
|
-
describe Inversion::Template::EndTag do
|
11
|
+
RSpec.describe Inversion::Template::EndTag do
|
12
12
|
|
13
13
|
before( :each ) do
|
14
14
|
@tag = Inversion::Template::EndTag.new
|
@@ -9,7 +9,7 @@ require 'inversion/template/attrtag'
|
|
9
9
|
require 'inversion/template/textnode'
|
10
10
|
require 'inversion/renderstate'
|
11
11
|
|
12
|
-
describe Inversion::Template::ForTag do
|
12
|
+
RSpec.describe Inversion::Template::ForTag do
|
13
13
|
|
14
14
|
it "knows which identifiers should be added to the template" do
|
15
15
|
tag = Inversion::Template::ForTag.new( 'foo in bar' )
|
@@ -8,7 +8,7 @@ require 'inversion/template/attrtag'
|
|
8
8
|
require 'inversion/template/textnode'
|
9
9
|
require 'inversion/renderstate'
|
10
10
|
|
11
|
-
describe Inversion::Template::FragmentTag do
|
11
|
+
RSpec.describe Inversion::Template::FragmentTag do
|
12
12
|
|
13
13
|
it "raises a parse error if the body isn't a simple attribute" do
|
14
14
|
expect {
|
@@ -5,7 +5,7 @@ require_relative '../../helpers'
|
|
5
5
|
|
6
6
|
require 'inversion/template/importtag'
|
7
7
|
|
8
|
-
describe Inversion::Template::ImportTag do
|
8
|
+
RSpec.describe Inversion::Template::ImportTag do
|
9
9
|
|
10
10
|
it "can import a single attribute" do
|
11
11
|
tag = Inversion::Template::ImportTag.new( 'txn ' )
|
@@ -7,7 +7,7 @@ require 'timeout'
|
|
7
7
|
require 'inversion/template'
|
8
8
|
require 'inversion/template/includetag'
|
9
9
|
|
10
|
-
describe Inversion::Template::IncludeTag do
|
10
|
+
RSpec.describe Inversion::Template::IncludeTag do
|
11
11
|
|
12
12
|
it "renders the IncludeTag as an empty string" do
|
13
13
|
included_path = Pathname.pwd + 'included.tmpl'
|