loquacious 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ == 1.3.1 / 2009-10-30
2
+
3
+ * 1 minor enhancement
4
+ - Added a remove method to clobber unwanted methods in the configuration
5
+ * 1 bug fix
6
+ - Could not assign false as a default value
7
+
1
8
  == 1.3.0 / 2009-04-05
2
9
 
3
10
  * 1 minor enhancement
data/lib/loquacious.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  module Loquacious
3
3
 
4
4
  # :stopdoc:
5
- VERSION = '1.3.0'
5
+ VERSION = '1.3.1'
6
6
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
7
7
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
8
8
  # :startdoc:
@@ -67,6 +67,27 @@ module Loquacious
67
67
  Dir.glob(search_me).sort.each {|rb| require rb}
68
68
  end
69
69
 
70
+ # This is merely a convenience method to remove methods from the
71
+ # Loquacious::Configuration class. Some ruby gems add lots of crap to the
72
+ # Kernel module, and this interferes with the configuration system. The
73
+ # remove method should be used to anihilate unwanted methods from the
74
+ # configuration class as needed.
75
+ #
76
+ # Loquacious.remove :gem # courtesy of rubygems
77
+ # Loquacious.remove :test, :file # courtesy of rake
78
+ #
79
+ def remove( *args )
80
+ args.each { |name|
81
+ name = name.to_s.delete('=')
82
+ code = <<-__
83
+ undef_method :#{name} rescue nil
84
+ undef_method :#{name}= rescue nil
85
+ __
86
+ Loquacious::Configuration.module_eval code
87
+ Loquacious::Configuration::DSL.module_eval code
88
+ }
89
+ end
90
+
70
91
  end # class << self
71
92
  end # module Loquacious
72
93
 
@@ -80,8 +80,8 @@ module Loquacious
80
80
  v = (1 == args.length ? args.first : args)
81
81
  v = nil if args.empty?
82
82
  v = DSL.evaluate(&block) if block
83
-
84
- return @#{m} unless v
83
+
84
+ return @#{m} unless v or v == false
85
85
 
86
86
  if @#{m}.kind_of?(Configuration)
87
87
  @#{m}.merge! v
@@ -162,7 +162,7 @@ module Loquacious
162
162
 
163
163
  instance_methods.each do |m|
164
164
  undef_method m unless m[%r/^__/] or m.to_s == 'object_id'
165
- end
165
+ end
166
166
 
167
167
  # Create a new DSL and evaluate the given _block_ in the context of
168
168
  # the DSL. Returns a newly created configuration object.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loquacious
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pease
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-05 00:00:00 -06:00
12
+ date: 2009-10-30 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.2.2
23
+ version: 1.2.8
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bones
@@ -30,9 +30,52 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.5.0
33
+ version: 2.5.1
34
34
  version:
35
- description: "Descriptive configuration files for Ruby written in Ruby. Loquacious provides a very open configuration system written in ruby and descriptions for each configuration attribute. The attributes and descriptions can be iterated over allowing for helpful information about those attributes to be displayed to the user. In the simple case we have a file something like Loquacious.configuration_for('app') { name 'value', :desc => \"Defines the name\" foo 'bar', :desc => \"FooBar\" id 42, :desc => \"Ara T. Howard\" } Which can be loaded via the standard Ruby loading mechanisms Kernel.load 'config/app.rb' The attributes and their descriptions can be printed by using a Help object help = Loquacious.help_for('app') help.show :values => true # show the values for the attributes, too Descriptions are optional, and configurations can be nested arbitrarily deep. Loquacious.configuration_for('nested') { desc \"The outermost level\" a { desc \"One more level in\" b { desc \"Finally, a real value\" c 'value' } } } config = Loquacious.configuration_for('nested') p config.a.b.c #=> \"value\" And as you can see, descriptions can either be given inline after the value or they can appear above the attribute and value on their own line."
35
+ description: |-
36
+ Descriptive configuration files for Ruby written in Ruby.
37
+
38
+ Loquacious provides a very open configuration system written in ruby and
39
+ descriptions for each configuration attribute. The attributes and descriptions
40
+ can be iterated over allowing for helpful information about those attributes to
41
+ be displayed to the user.
42
+
43
+ In the simple case we have a file something like
44
+
45
+ Loquacious.configuration_for('app') {
46
+ name 'value', :desc => "Defines the name"
47
+ foo 'bar', :desc => "FooBar"
48
+ id 42, :desc => "Ara T. Howard"
49
+ }
50
+
51
+ Which can be loaded via the standard Ruby loading mechanisms
52
+
53
+ Kernel.load 'config/app.rb'
54
+
55
+ The attributes and their descriptions can be printed by using a Help object
56
+
57
+ help = Loquacious.help_for('app')
58
+ help.show :values => true # show the values for the attributes, too
59
+
60
+ Descriptions are optional, and configurations can be nested arbitrarily deep.
61
+
62
+ Loquacious.configuration_for('nested') {
63
+ desc "The outermost level"
64
+ a {
65
+ desc "One more level in"
66
+ b {
67
+ desc "Finally, a real value"
68
+ c 'value'
69
+ }
70
+ }
71
+ }
72
+
73
+ config = Loquacious.configuration_for('nested')
74
+
75
+ p config.a.b.c #=> "value"
76
+
77
+ And as you can see, descriptions can either be given inline after the value or
78
+ they can appear above the attribute and value on their own line.
36
79
  email: tim.pease@gmail.com
37
80
  executables: []
38
81
 
@@ -76,6 +119,8 @@ files:
76
119
  - tasks/zentest.rake
77
120
  has_rdoc: true
78
121
  homepage: http://codeforpeople.rubyforge.org/loquacious
122
+ licenses: []
123
+
79
124
  post_install_message:
80
125
  rdoc_options:
81
126
  - --main
@@ -97,9 +142,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
142
  requirements: []
98
143
 
99
144
  rubyforge_project: codeforpeople
100
- rubygems_version: 1.3.1
145
+ rubygems_version: 1.3.5
101
146
  signing_key:
102
- specification_version: 2
147
+ specification_version: 3
103
148
  summary: Descriptive configuration files for Ruby written in Ruby
104
149
  test_files: []
105
150