inversion 0.7.0 → 0.8.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.
data.tar.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == v0.8.0 [2012-04-01] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Optimization fixes
4
+ - Fixed rendering flow control to not use a begin/rescue.
5
+
6
+
1
7
  == v0.7.0 [2012-03-29] Michael Granger <ged@FaerieMUD.org>
2
8
 
3
9
  - Switch to a much more flexible way to render tag bodies. This should
data/Manifest.txt CHANGED
@@ -6,6 +6,7 @@ Rakefile
6
6
  bin/inversion
7
7
  lib/inversion.rb
8
8
  lib/inversion/exceptions.rb
9
+ lib/inversion/logging.rb
9
10
  lib/inversion/mixins.rb
10
11
  lib/inversion/monkeypatches.rb
11
12
  lib/inversion/parser.rb
@@ -40,8 +41,8 @@ lib/inversion/template/unlesstag.rb
40
41
  lib/inversion/template/uriencodetag.rb
41
42
  lib/inversion/template/yieldtag.rb
42
43
  lib/inversion/tilt.rb
43
- lib/inversion/utils.rb
44
44
  spec/data/sinatra/hello.inversion
45
+ spec/inversion/logging_spec.rb
45
46
  spec/inversion/mixins_spec.rb
46
47
  spec/inversion/monkeypatches_spec.rb
47
48
  spec/inversion/parser_spec.rb
data/README.rdoc CHANGED
@@ -118,7 +118,7 @@ and generate the API documentation.
118
118
 
119
119
  == License
120
120
 
121
- Copyright © 2011, Michael Granger and Mahlon E. Smith
121
+ Copyright © 2011-2012, Michael Granger and Mahlon E. Smith
122
122
  All rights reserved.
123
123
 
124
124
  Redistribution and use in source and binary forms, with or without
data/Rakefile CHANGED
@@ -45,7 +45,7 @@ end
45
45
  ENV['VERSION'] ||= hoespec.spec.version.to_s
46
46
 
47
47
  # Ensure the specs pass before checking in
48
- task 'hg:precheckin' => [:check_history, :spec]
48
+ task 'hg:precheckin' => [:check_history, :check_manifest, :spec]
49
49
 
50
50
  if Rake::Task.task_defined?( '.gemtest' )
51
51
  Rake::Task['.gemtest'].clear
data/lib/inversion.rb CHANGED
@@ -1,12 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # vim: set noet nosta sw=4 ts=4 :
3
3
 
4
- require 'logger'
5
-
6
4
 
7
5
  # The Inversion templating system. This module provides the namespace for all the other
8
- # classes and modules, and contains the logging subsystem. A good place to start for
9
- # documentation would be to check out the examples in the README, and then
6
+ # classes and modules, and contains the logging subsystem. A good place to start for
7
+ # documentation would be to check out the examples in the README, and then
10
8
  # Inversion::Template for a list of tags, configuration options, etc.
11
9
  #
12
10
  # == Authors
@@ -20,69 +18,14 @@ module Inversion
20
18
 
21
19
  warn ">>> Inversion requires Ruby 1.9.2 or later. <<<" if RUBY_VERSION < '1.9.2'
22
20
 
23
- require 'inversion/exceptions'
24
- require 'inversion/mixins'
25
- require 'inversion/utils'
26
- require 'inversion/monkeypatches'
27
-
28
21
  # Library version constant
29
- VERSION = '0.7.0'
22
+ VERSION = '0.8.0'
30
23
 
31
24
  # Version-control revision constant
32
- REVISION = %q$Revision: 92c2961cf986 $
33
-
34
- #
35
- # Logging
36
- #
37
-
38
- # Log levels
39
- LOG_LEVELS = {
40
- 'debug' => Logger::DEBUG,
41
- 'info' => Logger::INFO,
42
- 'warn' => Logger::WARN,
43
- 'error' => Logger::ERROR,
44
- 'fatal' => Logger::FATAL,
45
- }.freeze
46
-
47
- # Log levels keyed by level
48
- LOG_LEVEL_NAMES = LOG_LEVELS.invert.freeze
49
-
50
- @default_logger = Logger.new( $stderr )
51
- @default_logger.level = $DEBUG ? Logger::DEBUG : Logger::WARN
52
-
53
- @default_log_formatter = Inversion::LogFormatter.new( @default_logger )
54
- @default_logger.formatter = @default_log_formatter
55
-
56
- @logger = @default_logger
57
-
25
+ REVISION = %q$Revision: 2b5542ae6bf6 $
58
26
 
59
- class << self
60
- # the log formatter that will be used when the logging subsystem is reset
61
- attr_accessor :default_log_formatter
62
-
63
- # the logger that will be used when the logging subsystem is reset
64
- attr_accessor :default_logger
65
-
66
- # the logger that's currently in effect
67
- attr_accessor :logger
68
- alias_method :log, :logger
69
- alias_method :log=, :logger=
70
- end
71
-
72
-
73
- ### Reset the global logger object to the default
74
- def self::reset_logger
75
- self.logger = self.default_logger
76
- self.logger.level = Logger::WARN
77
- self.logger.formatter = self.default_log_formatter
78
- end
79
-
80
-
81
- ### Returns +true+ if the global logger has not been set to something other than
82
- ### the default one.
83
- def self::using_default_logger?
84
- return self.logger == self.default_logger
85
- end
27
+ require 'inversion/logging'
28
+ extend Inversion::Logging
86
29
 
87
30
 
88
31
  ### Get the Inversion version.
@@ -92,6 +35,9 @@ module Inversion
92
35
  return vstring
93
36
  end
94
37
 
38
+ require 'inversion/exceptions'
39
+ require 'inversion/mixins'
40
+ require 'inversion/monkeypatches'
95
41
  require 'inversion/template'
96
42
 
97
43
  end # module Inversion
@@ -8,12 +8,64 @@ require 'inversion' unless defined?( Inversion )
8
8
  require 'inversion/mixins'
9
9
 
10
10
 
11
- module Inversion
11
+ # A mixin that provides a top-level logging subsystem based on Logger.
12
+ module Inversion::Logging
13
+
14
+ ### Logging
15
+ # Log levels
16
+ LOG_LEVELS = {
17
+ 'debug' => Logger::DEBUG,
18
+ 'info' => Logger::INFO,
19
+ 'warn' => Logger::WARN,
20
+ 'error' => Logger::ERROR,
21
+ 'fatal' => Logger::FATAL,
22
+ }.freeze
23
+ LOG_LEVEL_NAMES = LOG_LEVELS.invert.freeze
24
+
25
+
26
+ ### Inclusion hook
27
+ def self::extended( mod )
28
+ super
29
+
30
+ class << mod
31
+ # the log formatter that will be used when the logging subsystem is reset
32
+ attr_accessor :default_log_formatter
33
+
34
+ # the logger that will be used when the logging subsystem is reset
35
+ attr_accessor :default_logger
36
+
37
+ # the logger that's currently in effect
38
+ attr_accessor :logger
39
+ alias_method :log, :logger
40
+ alias_method :log=, :logger=
41
+ end
42
+
43
+ mod.default_logger = mod.logger = Logger.new( $stderr )
44
+ mod.default_logger.level = case
45
+ when $DEBUG then Logger::DEBUG
46
+ when $VERBOSE then Logger::INFO
47
+ else Logger::WARN end
48
+ mod.default_log_formatter = Inversion::Logging::Formatter.new( mod.default_logger )
49
+ end
50
+
51
+
52
+ ### Reset the global logger object to the default
53
+ def reset_logger
54
+ self.logger = self.default_logger
55
+ self.logger.level = $DEBUG ? Logger::DEBUG : Logger::WARN
56
+ self.logger.formatter = self.default_log_formatter
57
+ end
58
+
59
+
60
+ ### Returns +true+ if the global logger has not been set to something other than
61
+ ### the default one.
62
+ def using_default_logger?
63
+ return self.logger == self.default_logger
64
+ end
12
65
 
13
- # :stopdoc:
14
66
 
15
67
  # A alternate formatter for Logger instances.
16
- class LogFormatter < Logger::Formatter
68
+ class Formatter < Logger::Formatter
17
69
 
18
70
  # The format to output unless debugging is turned on
19
71
  DEFAULT_FORMAT = "[%1$s.%2$06d %3$d/%4$s] %5$5s -- %7$s\n"
@@ -64,11 +116,11 @@ module Inversion
64
116
  return self.format % args
65
117
  end
66
118
  end
67
- end # class LogFormatter
119
+ end # class Formatter
68
120
 
69
121
 
70
122
  # A ANSI-colorized formatter for Logger instances.
71
- class ColorLogFormatter < Logger::Formatter
123
+ class ColorFormatter < Logger::Formatter
72
124
 
73
125
  # Set some ANSI escape code constants (Shamelessly stolen from Perl's
74
126
  # Term::ANSIColor by Russ Allbery <rra@stanford.edu> and Zenin <zenin@best.com>
@@ -173,12 +225,12 @@ module Inversion
173
225
  return self.settings[ severity.downcase.to_sym ] % args
174
226
  end
175
227
 
176
- end # class LogFormatter
228
+ end # class Formatter
177
229
 
178
230
 
179
231
  # An alternate formatter for Logger instances that outputs +div+ HTML
180
232
  # fragments.
181
- class HtmlLogFormatter < Logger::Formatter
233
+ class HtmlFormatter < Logger::Formatter
182
234
  include ERB::Util # for html_escape()
183
235
 
184
236
  # The default HTML fragment that'll be used as the template for each log message.
@@ -229,7 +281,7 @@ module Inversion
229
281
  return self.format % args
230
282
  end
231
283
 
232
- end # class HtmlLogFormatter
284
+ end # class HtmlFormatter
233
285
 
234
286
  end # module Inversion
235
287
 
@@ -6,12 +6,12 @@ require 'logger'
6
6
 
7
7
  module Inversion
8
8
 
9
- # Add logging to a Inversion class. Including classes get #log and
9
+ # Add logging to a Inversion class. Including classes get #log and
10
10
  # #log_debug methods.
11
11
  #
12
12
  # class MyClass
13
13
  # include Inversion::Loggable
14
- #
14
+ #
15
15
  # def a_method
16
16
  # self.log.debug "Doing a_method stuff..."
17
17
  # end
@@ -189,10 +189,10 @@ module Inversion
189
189
 
190
190
 
191
191
  # A mixin that adds configurable escaping to a tag class.
192
- #
192
+ #
193
193
  # class MyTag < Inversion::Template::Tag
194
194
  # include Inversion::Escaping
195
- #
195
+ #
196
196
  # def render( renderstate )
197
197
  # val = self.get_rendered_value
198
198
  # return self.escape( val.to_s, renderstate )
@@ -232,5 +232,47 @@ module Inversion
232
232
 
233
233
  end # Escaping
234
234
 
235
+
236
+ # A collection of methods for declaring other methods.
237
+ #
238
+ # class MyClass
239
+ # include Inversion::MethodUtilities
240
+ #
241
+ # singleton_attr_accessor :types
242
+ # end
243
+ #
244
+ # MyClass.types = [ :pheno, :proto, :stereo ]
245
+ #
246
+ module MethodUtilities
247
+
248
+ ### Creates instance variables and corresponding methods that return their
249
+ ### values for each of the specified +symbols+ in the singleton of the
250
+ ### declaring object (e.g., class instance variables and methods if declared
251
+ ### in a Class).
252
+ def singleton_attr_reader( *symbols )
253
+ symbols.each do |sym|
254
+ singleton_class.__send__( :attr_reader, sym )
255
+ end
256
+ end
257
+
258
+ ### Creates methods that allow assignment to the attributes of the singleton
259
+ ### of the declaring object that correspond to the specified +symbols+.
260
+ def singleton_attr_writer( *symbols )
261
+ symbols.each do |sym|
262
+ singleton_class.__send__( :attr_writer, sym )
263
+ end
264
+ end
265
+
266
+ ### Creates readers and writers that allow assignment to the attributes of
267
+ ### the singleton of the declaring object that correspond to the specified
268
+ ### +symbols+.
269
+ def singleton_attr_accessor( *symbols )
270
+ symbols.each do |sym|
271
+ singleton_class.__send__( :attr_accessor, sym )
272
+ end
273
+ end
274
+
275
+ end # module MethodUtilities
276
+
235
277
  end # module Inversion
236
278
 
@@ -37,11 +37,7 @@ class Inversion::RenderState
37
37
  ### which can be either another Scope or a Hash.
38
38
  def +( values )
39
39
  # Have to do it this kludgy way because Scopes don't have #respond_to?
40
- begin
41
- return Scope.new( @locals.merge(values.__locals__) )
42
- rescue ::NameError
43
- return Scope.new( @locals.merge(values) )
44
- end
40
+ return Scope.new( @locals.merge(values) )
45
41
  end
46
42
 
47
43
 
@@ -49,6 +45,7 @@ class Inversion::RenderState
49
45
  def __locals__
50
46
  return @locals
51
47
  end
48
+ alias_method :to_hash, :__locals__
52
49
 
53
50
 
54
51
  #########
@@ -150,7 +147,7 @@ class Inversion::RenderState
150
147
  ### Evaluate the specified +code+ in the context of itself and
151
148
  ### return the result.
152
149
  def eval( code )
153
- self.log.debug "Evaling: %p" [ code ]
150
+ # self.log.debug "Evaling: %p" [ code ]
154
151
  return self.scope.instance_eval( code )
155
152
  end
156
153
 
@@ -165,7 +162,7 @@ class Inversion::RenderState
165
162
  ### restore the attributes to their original values.
166
163
  def with_attributes( overrides )
167
164
  raise LocalJumpError, "no block given" unless block_given?
168
- self.log.debug "Overriding template attributes with: %p" % [ overrides ]
165
+ # self.log.debug "Overriding template attributes with: %p" % [ overrides ]
169
166
 
170
167
  begin
171
168
  newscope = self.scope + overrides
@@ -181,7 +178,7 @@ class Inversion::RenderState
181
178
  ### revert the tag state back to what it was prior to running the block.
182
179
  def with_tag_data( newhash={} )
183
180
  raise LocalJumpError, "no block given" unless block_given?
184
- self.log.debug "Overriding tag state with: %p" % [ newhash ]
181
+ # self.log.debug "Overriding tag state with: %p" % [ newhash ]
185
182
 
186
183
  begin
187
184
  @tag_data.push( @tag_data.last.merge(newhash) )
@@ -196,13 +193,13 @@ class Inversion::RenderState
196
193
  ### destination when the block returns.
197
194
  def with_destination( new_destination )
198
195
  raise LocalJumpError, "no block given" unless block_given?
199
- self.log.debug "Overriding render destination with: %p" % [ new_destination ]
196
+ # self.log.debug "Overriding render destination with: %p" % [ new_destination ]
200
197
 
201
198
  begin
202
199
  @destinations.push( new_destination )
203
200
  yield
204
201
  ensure
205
- self.log.debug " removing overridden render destination: %p" % [ @destinations.last ]
202
+ # self.log.debug " removing overridden render destination: %p" % [ @destinations.last ]
206
203
  @destinations.pop
207
204
  end
208
205
 
@@ -296,12 +293,12 @@ class Inversion::RenderState
296
293
  ### Publish the given +nodes+ to all subscribers to the specified +key+.
297
294
  def publish( key, *nodes )
298
295
  key = key.to_sym
299
- self.log.debug "[0x%016x] Publishing %p nodes: %p" % [ self.object_id * 2, key, nodes ]
296
+ # self.log.debug "[0x%016x] Publishing %p nodes: %p" % [ self.object_id * 2, key, nodes ]
300
297
 
301
298
  self.containerstate.publish( key, *nodes ) if self.containerstate
302
299
  self.subscriptions[ key ].each do |subscriber|
303
- self.log.debug " sending %d nodes to subscriber: %p (a %p)" %
304
- [ nodes.length, subscriber, subscriber.class ]
300
+ # self.log.debug " sending %d nodes to subscriber: %p (a %p)" %
301
+ # [ nodes.length, subscriber, subscriber.class ]
305
302
  subscriber.publish( *nodes )
306
303
  end
307
304
  end
@@ -432,7 +429,7 @@ class Inversion::RenderState
432
429
  ### Handle attribute methods.
433
430
  def method_missing( sym, *args, &block )
434
431
  return super unless sym.to_s =~ /^\w+$/
435
- self.log.debug "mapping missing method call to tag local: %p" % [ sym ]
432
+ # self.log.debug "mapping missing method call to tag local: %p" % [ sym ]
436
433
  return self.scope[ sym ]
437
434
  end
438
435
 
@@ -117,7 +117,7 @@ class Inversion::Template
117
117
  ### Create a new Inversion:Template with the given +source+.
118
118
  def initialize( source, parsestate=nil, opts={} )
119
119
  if parsestate.is_a?( Hash )
120
- self.log.debug "Shifting template options: %p" % [ parsestate ]
120
+ # self.log.debug "Shifting template options: %p" % [ parsestate ]
121
121
  opts = parsestate
122
122
  parsestate = nil
123
123
  else
@@ -85,12 +85,12 @@ class Inversion::Template::ForTag < Inversion::Template::CodeTag
85
85
  lvalue = state.eval( self.enumerator ) or return nil
86
86
  lvalue = lvalue.each unless lvalue.respond_to?( :next )
87
87
 
88
- self.log.debug "Rendering %p via block args: %p" % [ lvalue, self.block_args ]
88
+ # self.log.debug "Rendering %p via block args: %p" % [ lvalue, self.block_args ]
89
89
 
90
90
  # Loop will exit as soon as the Enumerator runs out of elements
91
91
  loop do
92
92
  args = Array( lvalue.next )
93
- self.log.debug " iterated block args are: %p" % [ args ]
93
+ # self.log.debug " iterated block args are: %p" % [ args ]
94
94
 
95
95
  # Turn the block arguments into an overrides hash by zipping up
96
96
  # the arguments names and values
@@ -14,6 +14,7 @@ require 'inversion/mixins'
14
14
  # in a gem of your own, put them into a directory named 'inversion/template' and
15
15
  # name the files <tt><tagname>tag.rb</tt> and the classes <tagname.capitalize>Tag.
16
16
  class Inversion::Template::Tag < Inversion::Template::Node
17
+ extend Inversion::MethodUtilities
17
18
  include Inversion::Loggable,
18
19
  Inversion::AbstractClass
19
20
 
@@ -26,21 +27,23 @@ class Inversion::Template::Tag < Inversion::Template::Node
26
27
  ### C L A S S M E T H O D S
27
28
  ########################################################################
28
29
 
29
- # The hash of loaded tag types
30
+ @derivatives = []
30
31
  @types = nil
31
32
 
32
- # Derivatives of this class
33
- @derivatives = []
34
33
 
35
- class << self
36
- attr_reader :types, :derivatives
37
- end
34
+ ##
35
+ # The hash of loaded tag types, keyed by the tag name as a Symbol
36
+ singleton_attr_reader :types
37
+
38
+ ##
39
+ # The Array of subclasses of this class
40
+ singleton_attr_reader :derivatives
38
41
 
39
42
 
40
43
  ### Inheritance hook -- keep track of loaded derivatives.
41
44
  def self::inherited( subclass )
42
45
  # Inversion.log.debug "%p inherited from %p" % [ subclass, self ]
43
- Inversion::Template::Tag.derivatives << subclass
46
+ Inversion::Template::Tag.derivatives << subclass
44
47
  Inversion.log.debug "Loaded tag type %p" % [ subclass ]
45
48
  super
46
49
  end
@@ -0,0 +1,74 @@
1
+ # -*- ruby -*-
2
+ # vim: set nosta noet ts=4 sw=4:
3
+ # encoding: utf-8
4
+
5
+ BEGIN {
6
+ require 'pathname'
7
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent
8
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
9
+ }
10
+
11
+ require 'rspec'
12
+ require 'stringio'
13
+
14
+ require 'spec/lib/helpers'
15
+
16
+ require 'inversion'
17
+ require 'inversion/logging'
18
+
19
+
20
+ #####################################################################
21
+ ### C O N T E X T S
22
+ #####################################################################
23
+
24
+ describe Inversion::Logging, "-extended module" do
25
+
26
+ before( :each ) do
27
+ @extended_module = Module.new do
28
+ extend Inversion::Logging
29
+ end
30
+ end
31
+
32
+ it "should have a default Logger" do
33
+ @extended_module.logger.should be_a( Logger )
34
+ @extended_module.default_logger.should equal( @extended_module.logger )
35
+ end
36
+
37
+ it "should know if its default logger is replaced" do
38
+ @extended_module.should be_using_default_logger
39
+ @extended_module.logger = Logger.new( $stderr )
40
+ @extended_module.should_not be_using_default_logger
41
+ end
42
+
43
+ it "has the default logger instance after being reset" do
44
+ @extended_module.reset_logger
45
+ @extended_module.logger.should equal( @extended_module.default_logger )
46
+ end
47
+
48
+ it "has the default log formatter instance after being reset" do
49
+ @extended_module.reset_logger
50
+ @extended_module.logger.formatter.should equal( @extended_module.default_log_formatter )
51
+ end
52
+
53
+
54
+ context "with new defaults" do
55
+
56
+ before( :each ) do
57
+ @sink = StringIO.new
58
+ @logger = Logger.new( @sink )
59
+ @formatter = Inversion::Logging::ColorFormatter.new( @logger )
60
+
61
+ @extended_module.default_logger = @logger
62
+ @extended_module.default_log_formatter = @formatter
63
+ end
64
+
65
+ it "uses the new defaults when the logging subsystem is reset" do
66
+ @extended_module.reset_logger
67
+ @extended_module.logger.should equal( @logger )
68
+ end
69
+
70
+ end
71
+
72
+
73
+ end
74
+
data/spec/lib/helpers.rb CHANGED
@@ -117,8 +117,8 @@ module Inversion::SpecHelpers
117
117
  def setup_logging( level=Logger::FATAL )
118
118
 
119
119
  # Turn symbol-style level config into Logger's expected Fixnum level
120
- if Inversion::LOG_LEVELS.key?( level.to_s )
121
- level = Inversion::LOG_LEVELS[ level.to_s ]
120
+ if Inversion::Logging::LOG_LEVELS.key?( level.to_s )
121
+ level = Inversion::Logging::LOG_LEVELS[ level.to_s ]
122
122
  end
123
123
 
124
124
  logger = Logger.new( $stderr )
@@ -131,7 +131,7 @@ module Inversion::SpecHelpers
131
131
  logdevice = ArrayLogger.new( Thread.current['logger-output'] )
132
132
  Inversion.logger = Logger.new( logdevice )
133
133
  # Inversion.logger.level = level
134
- Inversion.logger.formatter = Inversion::HtmlLogFormatter.new( logger )
134
+ Inversion.logger.formatter = Inversion::Logging::HtmlFormatter.new( logger )
135
135
  end
136
136
  end
137
137
 
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: 0.7.0
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -37,11 +37,11 @@ cert_chain:
37
37
  YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
38
38
  Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
39
39
  cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
40
- date: 2012-03-30 00:00:00.000000000 Z
40
+ date: 2012-04-01 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: hoe-mercurial
44
- requirement: &70356568944040 !ruby/object:Gem::Requirement
44
+ requirement: &70337034178000 !ruby/object:Gem::Requirement
45
45
  none: false
46
46
  requirements:
47
47
  - - ~>
@@ -49,10 +49,10 @@ dependencies:
49
49
  version: 1.4.0
50
50
  type: :development
51
51
  prerelease: false
52
- version_requirements: *70356568944040
52
+ version_requirements: *70337034178000
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: hoe-manualgen
55
- requirement: &70356568943280 !ruby/object:Gem::Requirement
55
+ requirement: &70337034177180 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
58
58
  - - ~>
@@ -60,10 +60,10 @@ dependencies:
60
60
  version: 0.3.0
61
61
  type: :development
62
62
  prerelease: false
63
- version_requirements: *70356568943280
63
+ version_requirements: *70337034177180
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: hoe-highline
66
- requirement: &70356568942000 !ruby/object:Gem::Requirement
66
+ requirement: &70337034192680 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
69
69
  - - ~>
@@ -71,10 +71,10 @@ dependencies:
71
71
  version: 0.0.1
72
72
  type: :development
73
73
  prerelease: false
74
- version_requirements: *70356568942000
74
+ version_requirements: *70337034192680
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rdoc
77
- requirement: &70356568957180 !ruby/object:Gem::Requirement
77
+ requirement: &70337034191900 !ruby/object:Gem::Requirement
78
78
  none: false
79
79
  requirements:
80
80
  - - ~>
@@ -82,10 +82,10 @@ dependencies:
82
82
  version: '3.10'
83
83
  type: :development
84
84
  prerelease: false
85
- version_requirements: *70356568957180
85
+ version_requirements: *70337034191900
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: rspec
88
- requirement: &70356568956420 !ruby/object:Gem::Requirement
88
+ requirement: &70337034191120 !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
91
  - - ~>
@@ -93,10 +93,10 @@ dependencies:
93
93
  version: '2.8'
94
94
  type: :development
95
95
  prerelease: false
96
- version_requirements: *70356568956420
96
+ version_requirements: *70337034191120
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: tilt
99
- requirement: &70356568955640 !ruby/object:Gem::Requirement
99
+ requirement: &70337034190160 !ruby/object:Gem::Requirement
100
100
  none: false
101
101
  requirements:
102
102
  - - ~>
@@ -104,10 +104,10 @@ dependencies:
104
104
  version: '1.3'
105
105
  type: :development
106
106
  prerelease: false
107
- version_requirements: *70356568955640
107
+ version_requirements: *70337034190160
108
108
  - !ruby/object:Gem::Dependency
109
109
  name: sinatra
110
- requirement: &70356568954760 !ruby/object:Gem::Requirement
110
+ requirement: &70337034189500 !ruby/object:Gem::Requirement
111
111
  none: false
112
112
  requirements:
113
113
  - - ~>
@@ -115,10 +115,10 @@ dependencies:
115
115
  version: '1.2'
116
116
  type: :development
117
117
  prerelease: false
118
- version_requirements: *70356568954760
118
+ version_requirements: *70337034189500
119
119
  - !ruby/object:Gem::Dependency
120
120
  name: rack-test
121
- requirement: &70356568954020 !ruby/object:Gem::Requirement
121
+ requirement: &70337034188740 !ruby/object:Gem::Requirement
122
122
  none: false
123
123
  requirements:
124
124
  - - ~>
@@ -126,10 +126,10 @@ dependencies:
126
126
  version: '0.6'
127
127
  type: :development
128
128
  prerelease: false
129
- version_requirements: *70356568954020
129
+ version_requirements: *70337034188740
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: simplecov
132
- requirement: &70356568953240 !ruby/object:Gem::Requirement
132
+ requirement: &70337034188120 !ruby/object:Gem::Requirement
133
133
  none: false
134
134
  requirements:
135
135
  - - ~>
@@ -137,10 +137,10 @@ dependencies:
137
137
  version: '0.4'
138
138
  type: :development
139
139
  prerelease: false
140
- version_requirements: *70356568953240
140
+ version_requirements: *70337034188120
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: trollop
143
- requirement: &70356568952520 !ruby/object:Gem::Requirement
143
+ requirement: &70337034187480 !ruby/object:Gem::Requirement
144
144
  none: false
145
145
  requirements:
146
146
  - - ~>
@@ -148,10 +148,10 @@ dependencies:
148
148
  version: '1.16'
149
149
  type: :development
150
150
  prerelease: false
151
- version_requirements: *70356568952520
151
+ version_requirements: *70337034187480
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: highline
154
- requirement: &70356568951720 !ruby/object:Gem::Requirement
154
+ requirement: &70337034186680 !ruby/object:Gem::Requirement
155
155
  none: false
156
156
  requirements:
157
157
  - - ~>
@@ -159,10 +159,10 @@ dependencies:
159
159
  version: '1.6'
160
160
  type: :development
161
161
  prerelease: false
162
- version_requirements: *70356568951720
162
+ version_requirements: *70337034186680
163
163
  - !ruby/object:Gem::Dependency
164
164
  name: sysexits
165
- requirement: &70356568950980 !ruby/object:Gem::Requirement
165
+ requirement: &70337034186080 !ruby/object:Gem::Requirement
166
166
  none: false
167
167
  requirements:
168
168
  - - ~>
@@ -170,10 +170,10 @@ dependencies:
170
170
  version: '1.0'
171
171
  type: :development
172
172
  prerelease: false
173
- version_requirements: *70356568950980
173
+ version_requirements: *70337034186080
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: hoe
176
- requirement: &70356568950160 !ruby/object:Gem::Requirement
176
+ requirement: &70337034185360 !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements:
179
179
  - - ~>
@@ -181,7 +181,7 @@ dependencies:
181
181
  version: '3.0'
182
182
  type: :development
183
183
  prerelease: false
184
- version_requirements: *70356568950160
184
+ version_requirements: *70337034185360
185
185
  description: ! 'Inversion is a templating system for Ruby. It uses the "Inversion
186
186
  of Control"
187
187
 
@@ -209,6 +209,7 @@ files:
209
209
  - bin/inversion
210
210
  - lib/inversion.rb
211
211
  - lib/inversion/exceptions.rb
212
+ - lib/inversion/logging.rb
212
213
  - lib/inversion/mixins.rb
213
214
  - lib/inversion/monkeypatches.rb
214
215
  - lib/inversion/parser.rb
@@ -243,8 +244,8 @@ files:
243
244
  - lib/inversion/template/uriencodetag.rb
244
245
  - lib/inversion/template/yieldtag.rb
245
246
  - lib/inversion/tilt.rb
246
- - lib/inversion/utils.rb
247
247
  - spec/data/sinatra/hello.inversion
248
+ - spec/inversion/logging_spec.rb
248
249
  - spec/inversion/mixins_spec.rb
249
250
  - spec/inversion/monkeypatches_spec.rb
250
251
  - spec/inversion/parser_spec.rb
metadata.gz.sig CHANGED
Binary file