inversion 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +11 -0
- data/Manifest.txt +0 -1
- data/lib/inversion.rb +2 -2
- data/lib/inversion/template/codetag.rb +9 -0
- data/lib/inversion/template/elsiftag.rb +32 -4
- data/lib/inversion/template/iftag.rb +34 -7
- data/lib/inversion/template/unlesstag.rb +28 -2
- data/spec/data/unknown-tag.tmpl +1 -1
- data/spec/inversion/template/codetag_spec.rb +41 -1
- data/spec/inversion/template/elsiftag_spec.rb +25 -0
- data/spec/inversion/template/iftag_spec.rb +11 -0
- data/spec/inversion/template/unlesstag_spec.rb +11 -0
- metadata +28 -48
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -2078
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cf0ec8317d7f79b22a9794a8e2a3b76bb07997a
|
4
|
+
data.tar.gz: 1f764e3040c76d9bd77a11bd724e810f0ef130f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4556f52e5440ce70bc43fe4be3a6a554e744fd256b02e4db46fa0e1076f6c2b54cfda8a9dca688e8b9ca5155b4401bb13eb4a22c7ad5ee8645c0b966bcbbbdb3
|
7
|
+
data.tar.gz: 622843dfcd26395a459000bbe0e9639d50ebd0f88a0a3ae5be6d10f9369c6cf248ef6cbc6703ca2e91e8619c635f61fbc727fbfda4065caf3c9469f9aa9289ef
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== v1.1.0 [2017-08-17] Mahlon E. Smith <mahlon@martini.nu>
|
2
|
+
|
3
|
+
Mark as stable, update dependencies.
|
4
|
+
|
5
|
+
- Allow the use of the '!' operator in conditional tags, logically
|
6
|
+
inverting the evaluated body.
|
7
|
+
|
8
|
+
- Provide a method for children tags to inherit and append to their
|
9
|
+
parents matcher patterns.
|
10
|
+
|
11
|
+
|
1
12
|
== v1.0.0 [2017-01-16] Michael Granger <ged@FaerieMUD.org>
|
2
13
|
|
3
14
|
Mark as stable, update dependencies.
|
data/Manifest.txt
CHANGED
data/lib/inversion.rb
CHANGED
@@ -26,10 +26,10 @@ module Inversion
|
|
26
26
|
warn ">>> Inversion requires Ruby 2.2.0 or later. <<<" if RUBY_VERSION < '2.2.0'
|
27
27
|
|
28
28
|
# Library version constant
|
29
|
-
VERSION = '1.
|
29
|
+
VERSION = '1.1.0'
|
30
30
|
|
31
31
|
# Version-control revision constant
|
32
|
-
REVISION = %q$Revision:
|
32
|
+
REVISION = %q$Revision: ee12b27acbe2 $
|
33
33
|
|
34
34
|
|
35
35
|
### Get the Inversion version.
|
@@ -100,6 +100,15 @@ class Inversion::Template::CodeTag < Inversion::Template::Tag
|
|
100
100
|
end
|
101
101
|
|
102
102
|
|
103
|
+
### Declarative that forces a tag to inherit existing patterns from
|
104
|
+
### its parent, rather than replacing them. Afterwards, you can use
|
105
|
+
### +tag_pattern+ regularly, appending to the list.
|
106
|
+
def self::inherit_tag_patterns
|
107
|
+
raise ScriptError, "Patterns already exist for this tag." if defined?( @tag_patterns )
|
108
|
+
@tag_patterns = self.superclass.tag_patterns
|
109
|
+
end
|
110
|
+
|
111
|
+
|
103
112
|
#################################################################
|
104
113
|
### I N S T A N C E M E T H O D S
|
105
114
|
#################################################################
|
@@ -24,7 +24,31 @@ require 'inversion/template/iftag' unless
|
|
24
24
|
#
|
25
25
|
class Inversion::Template::ElsifTag < Inversion::Template::AttrTag
|
26
26
|
|
27
|
-
#
|
27
|
+
# Inherit AttrTag's tag patterns first.
|
28
|
+
inherit_tag_patterns
|
29
|
+
|
30
|
+
# Append a 'not' tag matcher.
|
31
|
+
# <?elsif ! foo ?>, <?elsif !foo ?>
|
32
|
+
#
|
33
|
+
tag_pattern '$(op) sp* $(ident)' do |tag, match|
|
34
|
+
op = match.string( 1 )
|
35
|
+
raise Inversion::ParseError, "expected '!', got %p instead" % [ op ] unless op == '!'
|
36
|
+
|
37
|
+
tag.send( :log ).debug " Identifier is: %p (inverted)" % [ match.string(2) ]
|
38
|
+
tag.name = match.string( 2 ).untaint.to_sym
|
39
|
+
tag.inverted = true
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
### Create a new ElsifTag.
|
44
|
+
def initialize( body, linenum=nil, colnum=nil )
|
45
|
+
@inverted = false
|
46
|
+
super
|
47
|
+
end
|
48
|
+
|
49
|
+
# Invert the tag's renderstate if created with the 'not' operator.
|
50
|
+
attr_accessor :inverted
|
51
|
+
|
28
52
|
|
29
53
|
### Parsing callback -- check to be sure the node tree can have an
|
30
54
|
### 'elsif' tag appended to it (i.e., it has an opening 'if' tag).
|
@@ -46,19 +70,23 @@ class Inversion::Template::ElsifTag < Inversion::Template::AttrTag
|
|
46
70
|
end
|
47
71
|
|
48
72
|
|
49
|
-
### Always
|
73
|
+
### Always render as an empty string.
|
50
74
|
def render( * )
|
51
75
|
nil
|
52
76
|
end
|
53
77
|
|
54
78
|
|
55
|
-
### Toggle rendering for the
|
79
|
+
### Toggle rendering for the elsiftag's container if rendering hasn't yet been
|
56
80
|
### toggled.
|
57
81
|
def before_rendering( renderstate )
|
82
|
+
|
83
|
+
evaluated_state = self.evaluate( renderstate )
|
84
|
+
evaluated_state = ! evaluated_state if self.inverted
|
85
|
+
|
58
86
|
if renderstate.tag_data[ :rendering_was_enabled ]
|
59
87
|
self.log.debug "Rendering was previously enabled; disabling"
|
60
88
|
renderstate.disable_rendering
|
61
|
-
elsif
|
89
|
+
elsif evaluated_state
|
62
90
|
self.log.debug "Rendering was previously disabled, and condition is true; enabling"
|
63
91
|
renderstate.tag_data[ :rendering_was_enabled ] = true
|
64
92
|
renderstate.enable_rendering
|
@@ -18,28 +18,55 @@ require 'inversion/template/containertag'
|
|
18
18
|
class Inversion::Template::IfTag < Inversion::Template::AttrTag
|
19
19
|
include Inversion::Template::ContainerTag
|
20
20
|
|
21
|
-
#
|
21
|
+
# Inherit AttrTag's tag patterns first.
|
22
|
+
inherit_tag_patterns
|
23
|
+
|
24
|
+
# Append a 'not' tag matcher.
|
25
|
+
# <?if ! foo ?>, <?if !foo ?>
|
26
|
+
#
|
27
|
+
tag_pattern '$(op) sp* $(ident)' do |tag, match|
|
28
|
+
op = match.string( 1 )
|
29
|
+
raise Inversion::ParseError, "expected '!', got %p instead" % [ op ] unless op == '!'
|
30
|
+
|
31
|
+
tag.send( :log ).debug " Identifier is: %p (inverted)" % [ match.string(2) ]
|
32
|
+
tag.name = match.string( 2 ).untaint.to_sym
|
33
|
+
tag.inverted = true
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
### Create a new IfTag.
|
38
|
+
def initialize( body, linenum=nil, colnum=nil )
|
39
|
+
@inverted = false
|
40
|
+
super
|
41
|
+
end
|
42
|
+
|
43
|
+
# Invert the tag's renderstate if created with the 'not' operator.
|
44
|
+
attr_accessor :inverted
|
45
|
+
|
22
46
|
|
23
47
|
### Render the tag's contents if the condition is true, or any else or elsif sections
|
24
48
|
### if the condition isn't true.
|
25
|
-
def render(
|
49
|
+
def render( renderstate )
|
50
|
+
|
51
|
+
evaluated_state = self.evaluate( renderstate )
|
52
|
+
evaluated_state = ! evaluated_state if self.inverted
|
26
53
|
|
27
54
|
# Start out with rendering enabled if the tag body evaluates trueishly
|
28
|
-
if
|
55
|
+
if evaluated_state
|
29
56
|
self.log.debug "Initial state was TRUE; enabling rendering"
|
30
|
-
|
57
|
+
renderstate.enable_rendering
|
31
58
|
else
|
32
59
|
self.log.debug "Initial state was FALSE; disabling rendering"
|
33
|
-
|
60
|
+
renderstate.disable_rendering
|
34
61
|
end
|
35
62
|
|
36
63
|
# Set the tag state to track whether or not rendering has been enabled during the
|
37
64
|
# 'if' for an 'else' or 'elsif' tag.
|
38
|
-
|
65
|
+
renderstate.with_tag_data( rendering_was_enabled: renderstate.rendering_enabled? ) do
|
39
66
|
super
|
40
67
|
end
|
41
68
|
|
42
|
-
|
69
|
+
renderstate.enable_rendering
|
43
70
|
return nil
|
44
71
|
end
|
45
72
|
|
@@ -20,14 +20,40 @@ require 'inversion/template/elsetag'
|
|
20
20
|
class Inversion::Template::UnlessTag < Inversion::Template::AttrTag
|
21
21
|
include Inversion::Template::ContainerTag
|
22
22
|
|
23
|
-
#
|
23
|
+
# Inherit AttrTag's tag patterns first.
|
24
|
+
inherit_tag_patterns
|
25
|
+
|
26
|
+
# Append a 'not' tag matcher.
|
27
|
+
# <?unless ! foo ?>, <?unless !foo ?>
|
28
|
+
tag_pattern '$(op) sp* $(ident)' do |tag, match|
|
29
|
+
op = match.string( 1 )
|
30
|
+
raise Inversion::ParseError, "expected '!', got %p instead" % [ op ] unless op == '!'
|
31
|
+
|
32
|
+
tag.send( :log ).debug " Identifier is: %p (inverted)" % [ match.string(2) ]
|
33
|
+
tag.name = match.string( 2 ).untaint.to_sym
|
34
|
+
tag.inverted = true
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
### Create a new UnlessTag.
|
39
|
+
def initialize( body, linenum=nil, colnum=nil )
|
40
|
+
@inverted = false
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
44
|
+
# Invert the tag's renderstate if created with the 'not' operator.
|
45
|
+
attr_accessor :inverted
|
46
|
+
|
24
47
|
|
25
48
|
### Render the tag's contents if the condition is true, or any else or elsif sections
|
26
49
|
### if the condition isn't true.
|
27
50
|
def render( state )
|
28
51
|
|
52
|
+
evaluated_state = self.evaluate( state )
|
53
|
+
evaluated_state = ! evaluated_state if self.inverted
|
54
|
+
|
29
55
|
# Start out with rendering *disabled* if the tag body evaluates trueishly
|
30
|
-
if
|
56
|
+
if evaluated_state
|
31
57
|
self.log.debug "Initial state was TRUE; disabling rendering"
|
32
58
|
state.disable_rendering
|
33
59
|
else
|
data/spec/data/unknown-tag.tmpl
CHANGED
@@ -28,6 +28,46 @@ describe Inversion::Template::CodeTag do
|
|
28
28
|
expect( subclass.tag_patterns.first[1].call(:dummy, :king_dummy) ).to eq( :foo )
|
29
29
|
end
|
30
30
|
|
31
|
-
end
|
32
31
|
|
32
|
+
it "can explicitly declare pattern inheritence" do
|
33
|
+
parentclass = Class.new( Inversion::Template::CodeTag ) do
|
34
|
+
tag_pattern "$(ident)" do |tag, match|
|
35
|
+
:foo
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
subclass = Class.new( parentclass ) do
|
40
|
+
inherit_tag_patterns
|
41
|
+
tag_pattern "$(op) $(ident)" do |tag, match|
|
42
|
+
:bar
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
expect( subclass.tag_patterns.size ).to eq( 2 )
|
47
|
+
expect( subclass.tag_patterns.first[0] ).
|
48
|
+
to be_an_instance_of( Inversion::Template::CodeTag::TokenPattern )
|
49
|
+
expect( subclass.tag_patterns.last[0] ).
|
50
|
+
to be_an_instance_of( Inversion::Template::CodeTag::TokenPattern )
|
51
|
+
expect( subclass.tag_patterns.first[1].call(:dummy, :king_dummy) ).to eq( :foo )
|
52
|
+
expect( subclass.tag_patterns.last[1].call(:dummy, :king_dummy) ).to eq( :bar )
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
it "throws an error if trying to inherit patterns after they are declared" do
|
57
|
+
parentclass = Class.new( Inversion::Template::CodeTag ) do
|
58
|
+
tag_pattern "$(ident)" do |tag, match|
|
59
|
+
:foo
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
expect {
|
64
|
+
Class.new( parentclass ) do
|
65
|
+
tag_pattern "$(op) $(ident)" do |tag, match|
|
66
|
+
:bar
|
67
|
+
end
|
68
|
+
inherit_tag_patterns
|
69
|
+
end
|
70
|
+
}.to raise_exception( ScriptError, /patterns already exist/i )
|
71
|
+
end
|
72
|
+
end
|
33
73
|
end
|
@@ -58,6 +58,31 @@ describe Inversion::Template::ElsifTag do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
|
61
|
+
it "inverts its attribute with a ! operator" do
|
62
|
+
template = Inversion::Template.new( <<-END_TEMPLATE )
|
63
|
+
<?if thing ?>
|
64
|
+
Thing!
|
65
|
+
<?elsif ! otherthing ?>
|
66
|
+
Otherthing!
|
67
|
+
<?else ?>
|
68
|
+
Nope.
|
69
|
+
<?end?>
|
70
|
+
END_TEMPLATE
|
71
|
+
|
72
|
+
template.thing = true
|
73
|
+
template.otherthing = true
|
74
|
+
expect( template.render ).to include( "Thing!" )
|
75
|
+
|
76
|
+
template.thing = false
|
77
|
+
template.otherthing = false
|
78
|
+
expect( template.render ).to include( "Otherthing!" )
|
79
|
+
|
80
|
+
template.thing = false
|
81
|
+
template.otherthing = true
|
82
|
+
expect( template.render ).to include( "Nope." )
|
83
|
+
end
|
84
|
+
|
85
|
+
|
61
86
|
it "renders as its attribute value if it's a simple attribute" do
|
62
87
|
renderstate = Inversion::RenderState.new( :bar => :the_attribute_value )
|
63
88
|
tag = Inversion::Template::ElsifTag.new( 'bar' )
|
@@ -47,6 +47,17 @@ describe Inversion::Template::IfTag do
|
|
47
47
|
expect( renderstate.to_s ).to eq( '' )
|
48
48
|
end
|
49
49
|
|
50
|
+
it "inverts its attribute with a ! operator" do
|
51
|
+
template = Inversion::Template.new( <<-END_TEMPLATE )
|
52
|
+
<?if ! thing ?>Yep.<?else?>Nope.<?end?>
|
53
|
+
END_TEMPLATE
|
54
|
+
|
55
|
+
template.thing = false
|
56
|
+
expect( template.render ).to include( "Yep." )
|
57
|
+
template.thing = true
|
58
|
+
expect( template.render ).to include( "Nope." )
|
59
|
+
end
|
60
|
+
|
50
61
|
it "works inside an iterator (ticket #3)" do
|
51
62
|
template = Inversion::Template.new( <<-END_TEMPLATE )
|
52
63
|
<?for item in items ?>
|
@@ -46,6 +46,17 @@ describe Inversion::Template::UnlessTag do
|
|
46
46
|
expect( renderstate.to_s ).to eq( '' )
|
47
47
|
end
|
48
48
|
|
49
|
+
it "inverts its attribute with a ! operator" do
|
50
|
+
template = Inversion::Template.new( <<-END_TEMPLATE )
|
51
|
+
<?unless ! thing ?>Yep.<?else?>Nope.<?end?>
|
52
|
+
END_TEMPLATE
|
53
|
+
|
54
|
+
template.thing = false
|
55
|
+
expect( template.render ).to include( "Nope." )
|
56
|
+
template.thing = true
|
57
|
+
expect( template.render ).to include( "Yep." )
|
58
|
+
end
|
59
|
+
|
49
60
|
context "with an 'else' clause" do
|
50
61
|
|
51
62
|
before( :each ) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inversion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -11,32 +11,27 @@ bindir: bin
|
|
11
11
|
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
DMOr26DBv+qLJRRC/2h34uX71q5QgeOyxvMg+7V3u/Q06DXyQ2VgeeqiwDFFpEH0
|
34
|
-
PFkdPO6ZqbTRcLfNH7mFgCBJjsfSjJrn0sPBlYyOXgCoByfZnZyrIMH/UY+lgQqS
|
35
|
-
6Von1VDsfQm0eJh5zYZD64ZF86phSR7mUX3mXItwH04HrZwkWpvgd871DZVR3i1n
|
36
|
-
w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
|
37
|
-
p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
|
14
|
+
MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQ8wDQYDVQQDDAZtYWhs
|
15
|
+
b24xFzAVBgoJkiaJk/IsZAEZFgdtYXJ0aW5pMRIwEAYKCZImiZPyLGQBGRYCbnUw
|
16
|
+
HhcNMTYxMTE2MTkxMTMwWhcNMTcxMTE2MTkxMTMwWjA+MQ8wDQYDVQQDDAZtYWhs
|
17
|
+
b24xFzAVBgoJkiaJk/IsZAEZFgdtYXJ0aW5pMRIwEAYKCZImiZPyLGQBGRYCbnUw
|
18
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDpXGN0YbMVpYv4EoiCxpQw
|
19
|
+
sxKdyhlkvpvENUkpEhbpnEuMKXgUfRHO4T/vBZf0h8eYgwnrHCRhAeIqesFKfoj9
|
20
|
+
mpEJk5JUuADOAz18aT+v24UqAtJdiwBJLuqhslSNB6CFXZv3OOMny9bjoJegz0hI
|
21
|
+
Fht9ppCuNmxJNd+L3zAX8lD01RUWNRC+8L5QLCjViJtjFDDCFfh9NCirs+XnTCzo
|
22
|
+
AJgFbsZIzFJtSiXUtFgscKr4Ik8ruhRbPbYbmx9rf6W74aTMPxggq/d3gj0Eh32y
|
23
|
+
WsXsQ5giVnmkbsRkBNu3QyZ8Xr5+7mvy5AWyqXKOrcW7lnYaob6Z9x/MGXGNeD6j
|
24
|
+
AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRY8ea6
|
25
|
+
+6kAaW7ukKph2/4MTAD8/TAcBgNVHREEFTATgRFtYWhsb25AbWFydGluaS5udTAc
|
26
|
+
BgNVHRIEFTATgRFtYWhsb25AbWFydGluaS5udTANBgkqhkiG9w0BAQUFAAOCAQEA
|
27
|
+
MxBPdbmfh3dJN51visg0QilqtyPbqxyd8YVm9wbkcmi1D2Sv9deppFvZ+pXyR+eq
|
28
|
+
qy/efw4F+3DAPw+9QNlPJG8DHQ8HrYPrf7wv5DPBpyKLD1atMGnoDb5gijIx5IMR
|
29
|
+
MxiffPYQsT7Noimqaz8KWqP1keDY9aqVKe3iDXUXKBV27sl9GhOt5jJ3rVW9ihok
|
30
|
+
KiEoBnrgQcZIEAOwfXbWT4IaIcOCgD+JloEesuHL72/3zP/vOcqZf4SOcne4+qti
|
31
|
+
DHE5pl144V24tqxZb65WTup/ov22SCXmpU8/wTeZVL3rePGRfwTJNpm+6iYszl7A
|
32
|
+
SixmX0X3SOeYg4FRkblUIA==
|
38
33
|
-----END CERTIFICATE-----
|
39
|
-
date: 2017-
|
34
|
+
date: 2017-08-10 00:00:00.000000000 Z
|
40
35
|
dependencies:
|
41
36
|
- !ruby/object:Gem::Dependency
|
42
37
|
name: loggability
|
@@ -67,47 +62,33 @@ dependencies:
|
|
67
62
|
- !ruby/object:Gem::Version
|
68
63
|
version: '1.4'
|
69
64
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.8'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.8'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: hoe-highline
|
65
|
+
name: highline
|
85
66
|
requirement: !ruby/object:Gem::Requirement
|
86
67
|
requirements:
|
87
68
|
- - "~>"
|
88
69
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
70
|
+
version: '1.6'
|
90
71
|
type: :development
|
91
72
|
prerelease: false
|
92
73
|
version_requirements: !ruby/object:Gem::Requirement
|
93
74
|
requirements:
|
94
75
|
- - "~>"
|
95
76
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
77
|
+
version: '1.6'
|
97
78
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
79
|
+
name: hoe-deveiate
|
99
80
|
requirement: !ruby/object:Gem::Requirement
|
100
81
|
requirements:
|
101
82
|
- - "~>"
|
102
83
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
84
|
+
version: '0.5'
|
104
85
|
type: :development
|
105
86
|
prerelease: false
|
106
87
|
version_requirements: !ruby/object:Gem::Requirement
|
107
88
|
requirements:
|
108
89
|
- - "~>"
|
109
90
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
91
|
+
version: '0.5'
|
111
92
|
- !ruby/object:Gem::Dependency
|
112
93
|
name: rack-test
|
113
94
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,7 +249,6 @@ extra_rdoc_files:
|
|
268
249
|
- README.rdoc
|
269
250
|
- Tags.rdoc
|
270
251
|
files:
|
271
|
-
- ChangeLog
|
272
252
|
- Examples.rdoc
|
273
253
|
- GettingStarted.rdoc
|
274
254
|
- Guide.rdoc
|
@@ -377,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
377
357
|
version: '0'
|
378
358
|
requirements: []
|
379
359
|
rubyforge_project:
|
380
|
-
rubygems_version: 2.
|
360
|
+
rubygems_version: 2.5.2
|
381
361
|
signing_key:
|
382
362
|
specification_version: 4
|
383
363
|
summary: Inversion is a templating system for Ruby
|