inversion 1.0.0 → 1.1.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: f4b8da84f00dd67a57f9f261339c2f8fd0dad397
4
- data.tar.gz: 21dbe5879f682b3b5b4a8c955bc48619cd6636ab
3
+ metadata.gz: 7cf0ec8317d7f79b22a9794a8e2a3b76bb07997a
4
+ data.tar.gz: 1f764e3040c76d9bd77a11bd724e810f0ef130f9
5
5
  SHA512:
6
- metadata.gz: 586cf26085d8dc43c9034c686428009ba5d55d12c9c8bdeb2ad9a888aa8a8b5b5eefb305a0be3485b74d1d3e7a08d14ec9ac9e0a668ddc412f547883be426ca4
7
- data.tar.gz: 7c5995c50244a22c035242a5363901fb110ac84fc541e6feea4ca172a954598e570ca0b75b11a452fe8d448f6330496cd009fcabe42189398720d979b2fd8b9d
6
+ metadata.gz: 4556f52e5440ce70bc43fe4be3a6a554e744fd256b02e4db46fa0e1076f6c2b54cfda8a9dca688e8b9ca5155b4401bb13eb4a22c7ad5ee8645c0b966bcbbbdb3
7
+ data.tar.gz: 622843dfcd26395a459000bbe0e9639d50ebd0f88a0a3ae5be6d10f9369c6cf248ef6cbc6703ca2e91e8619c635f61fbc727fbfda4065caf3c9469f9aa9289ef
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -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.
@@ -1,4 +1,3 @@
1
- ChangeLog
2
1
  Examples.rdoc
3
2
  GettingStarted.rdoc
4
3
  Guide.rdoc
@@ -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.0.0'
29
+ VERSION = '1.1.0'
30
30
 
31
31
  # Version-control revision constant
32
- REVISION = %q$Revision: a4b621e66915 $
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
- # Inherits AttrTag's tag patterns
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 remder as an empty string.
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 iftag's container if rendering hasn't yet been
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 self.evaluate( renderstate )
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
- # Inherits AttrTag's tag patterns
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( state )
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 self.evaluate( state )
55
+ if evaluated_state
29
56
  self.log.debug "Initial state was TRUE; enabling rendering"
30
- state.enable_rendering
57
+ renderstate.enable_rendering
31
58
  else
32
59
  self.log.debug "Initial state was FALSE; disabling rendering"
33
- state.disable_rendering
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
- state.with_tag_data( rendering_was_enabled: state.rendering_enabled? ) do
65
+ renderstate.with_tag_data( rendering_was_enabled: renderstate.rendering_enabled? ) do
39
66
  super
40
67
  end
41
68
 
42
- state.enable_rendering
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
- # Inherits AttrTag's tag patterns
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 self.evaluate( state )
56
+ if evaluated_state
31
57
  self.log.debug "Initial state was TRUE; disabling rendering"
32
58
  state.disable_rendering
33
59
  else
@@ -1,4 +1,4 @@
1
- <!-- $Id$ -->
1
+ <!-- $Id: unknown-tag.tmpl,v 1b4030ae65f3 2013/06/19 16:00:23 ged $ -->
2
2
  <?unknown This is an unknown tag type ?>
3
3
  <?comment Some stuff. ?>
4
4
  Stuff
@@ -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.0.0
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
- 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
- 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
- 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
- GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
18
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
32
+ SixmX0X3SOeYg4FRkblUIA==
38
33
  -----END CERTIFICATE-----
39
- date: 2017-01-16 00:00:00.000000000 Z
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: hoe-deveiate
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: '0.2'
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: '0.2'
77
+ version: '1.6'
97
78
  - !ruby/object:Gem::Dependency
98
- name: highline
79
+ name: hoe-deveiate
99
80
  requirement: !ruby/object:Gem::Requirement
100
81
  requirements:
101
82
  - - "~>"
102
83
  - !ruby/object:Gem::Version
103
- version: '1.6'
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: '1.6'
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.6.8
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