loquacious 1.4.2 → 1.5.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/History.txt +7 -0
- data/README.rdoc +1 -1
- data/Rakefile +1 -5
- data/lib/loquacious.rb +29 -21
- data/lib/loquacious/configuration.rb +8 -4
- data/spec/configuration_spec.rb +22 -0
- data/spec/loquacious_spec.rb +3 -3
- data/version.txt +1 -0
- metadata +23 -11
- data/.gitignore +0 -16
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -212,7 +212,7 @@ they can appear above the attribute and value on their own line.
|
|
212
212
|
|
213
213
|
(The MIT License)
|
214
214
|
|
215
|
-
Copyright (c) 2009
|
215
|
+
Copyright (c) 2009-2010
|
216
216
|
|
217
217
|
Permission is hereby granted, free of charge, to any person obtaining
|
218
218
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -5,9 +5,6 @@ rescue LoadError
|
|
5
5
|
abort '### please install the "bones" gem ###'
|
6
6
|
end
|
7
7
|
|
8
|
-
ensure_in_path 'lib'
|
9
|
-
require 'loquacious'
|
10
|
-
|
11
8
|
task :default => 'spec:specdoc'
|
12
9
|
task 'gem:release' => 'spec:run'
|
13
10
|
|
@@ -16,7 +13,6 @@ Bones {
|
|
16
13
|
authors 'Tim Pease'
|
17
14
|
email 'tim.pease@gmail.com'
|
18
15
|
url 'http://gemcutter.org/gems/loquacious'
|
19
|
-
version Loquacious::VERSION
|
20
16
|
readme_file 'README.rdoc'
|
21
17
|
ignore_file '.gitignore'
|
22
18
|
spec.opts << '--color'
|
@@ -31,6 +27,6 @@ task 'ann:prereqs' do
|
|
31
27
|
end
|
32
28
|
|
33
29
|
# depending on bones (even as a development dependency) creates a circular
|
34
|
-
# reference that prevents the auto install of
|
30
|
+
# reference that prevents the auto install of loquacious when instsalling
|
35
31
|
# bones
|
36
32
|
::Bones.config.gem._spec.dependencies.delete_if {|d| d.name == 'bones'}
|
data/lib/loquacious.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
module Loquacious
|
3
3
|
|
4
4
|
# :stopdoc:
|
5
|
-
VERSION = '1.4.2'
|
6
5
|
LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
|
7
6
|
PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
|
8
7
|
# :startdoc:
|
@@ -35,36 +34,40 @@ module Loquacious
|
|
35
34
|
# Returns the version string for the library.
|
36
35
|
#
|
37
36
|
def version
|
38
|
-
|
37
|
+
@version ||= File.read(path('version.txt')).strip
|
39
38
|
end
|
40
39
|
|
41
40
|
# Returns the library path for the module. If any arguments are given,
|
42
41
|
# they will be joined to the end of the libray path using
|
43
42
|
# <tt>File.join</tt>.
|
44
43
|
#
|
45
|
-
def libpath( *args )
|
46
|
-
args.empty? ? LIBPATH : ::File.join(LIBPATH, args.flatten)
|
44
|
+
def libpath( *args, &block )
|
45
|
+
rv = args.empty? ? LIBPATH : ::File.join(LIBPATH, args.flatten)
|
46
|
+
if block
|
47
|
+
begin
|
48
|
+
$LOAD_PATH.unshift LIBPATH
|
49
|
+
rv = block.call
|
50
|
+
ensure
|
51
|
+
$LOAD_PATH.shift
|
52
|
+
end
|
53
|
+
end
|
54
|
+
return rv
|
47
55
|
end
|
48
56
|
|
49
57
|
# Returns the lpath for the module. If any arguments are given, they
|
50
58
|
# will be joined to the end of the path using <tt>File.join</tt>.
|
51
59
|
#
|
52
|
-
def path( *args )
|
53
|
-
args.empty? ? PATH : ::File.join(PATH, args.flatten)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
dir ||= ::File.basename(fname, '.*')
|
64
|
-
search_me = ::File.expand_path(
|
65
|
-
::File.join(::File.dirname(fname), dir, '**', '*.rb'))
|
66
|
-
|
67
|
-
Dir.glob(search_me).sort.each {|rb| require rb}
|
60
|
+
def path( *args, &block )
|
61
|
+
rv = args.empty? ? PATH : ::File.join(PATH, args.flatten)
|
62
|
+
if block
|
63
|
+
begin
|
64
|
+
$LOAD_PATH.unshift PATH
|
65
|
+
rv = block.call
|
66
|
+
ensure
|
67
|
+
$LOAD_PATH.shift
|
68
|
+
end
|
69
|
+
end
|
70
|
+
return rv
|
68
71
|
end
|
69
72
|
|
70
73
|
# This is merely a convenience method to remove methods from the
|
@@ -91,6 +94,11 @@ module Loquacious
|
|
91
94
|
end # class << self
|
92
95
|
end # module Loquacious
|
93
96
|
|
94
|
-
Loquacious.
|
97
|
+
Loquacious.libpath {
|
98
|
+
require 'loquacious/core_ext/string'
|
99
|
+
require 'loquacious/configuration'
|
100
|
+
require 'loquacious/configuration/iterator'
|
101
|
+
require 'loquacious/configuration/help'
|
102
|
+
}
|
95
103
|
|
96
104
|
# EOF
|
@@ -86,18 +86,22 @@ module Loquacious
|
|
86
86
|
__eigenclass_eval "attr_writer :#{m}"
|
87
87
|
__eigenclass_eval <<-CODE
|
88
88
|
def #{m}( *args, &block )
|
89
|
+
if args.empty? and !block
|
90
|
+
return @#{m} if @#{m}.kind_of?(Configuration)
|
91
|
+
return @#{m}.respond_to?(:call) ? @#{m}.call : @#{m}
|
92
|
+
end
|
93
|
+
|
89
94
|
v = (1 == args.length ? args.first : args)
|
90
|
-
v = nil if args.empty?
|
91
95
|
v = DSL.evaluate(&block) if block
|
92
96
|
|
93
|
-
return @#{m} unless v or v == false
|
94
|
-
|
95
97
|
if @#{m}.kind_of?(Configuration)
|
96
98
|
@#{m}.merge! v
|
97
99
|
else
|
98
100
|
@#{m} = v
|
99
101
|
end
|
100
|
-
|
102
|
+
|
103
|
+
return @#{m} if @#{m}.kind_of?(Configuration)
|
104
|
+
return @#{m}.respond_to?(:call) ? @#{m}.call : @#{m}
|
101
105
|
end
|
102
106
|
CODE
|
103
107
|
|
data/spec/configuration_spec.rb
CHANGED
@@ -88,6 +88,28 @@ describe Loquacious::Configuration do
|
|
88
88
|
cfg[:split].should == 'join'
|
89
89
|
cfg[:raise].should == 'double down'
|
90
90
|
cfg[:puts].should == 'not what you think'
|
91
|
+
|
92
|
+
cfg.fork.should == 'spoon knife spork'
|
93
|
+
cfg.split.should == 'join'
|
94
|
+
cfg.raise.should == 'double down'
|
95
|
+
cfg.puts.should == 'not what you think'
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should evaluate Proc objects when fetching values' do
|
99
|
+
obj = Loquacious::Configuration.new {
|
100
|
+
first 'foo'
|
101
|
+
second 'bar'
|
102
|
+
}
|
103
|
+
|
104
|
+
obj.third = Proc.new { obj.first + obj.second }
|
105
|
+
obj.third.should == 'foobar'
|
106
|
+
|
107
|
+
obj.second = 'baz'
|
108
|
+
obj.third.should == 'foobaz'
|
109
|
+
|
110
|
+
obj.first = 'Hello '
|
111
|
+
obj.second = 'World!'
|
112
|
+
obj.third.should == 'Hello World!'
|
91
113
|
end
|
92
114
|
|
93
115
|
# -----------------------------------------------------------------------
|
data/spec/loquacious_spec.rb
CHANGED
@@ -12,11 +12,11 @@ describe Loquacious do
|
|
12
12
|
|
13
13
|
it "finds things releative to 'lib'" do
|
14
14
|
Loquacious.libpath(%w[loquacious config.rb]).should == File.join(@root_dir, %w[lib loquacious config.rb])
|
15
|
-
end
|
16
|
-
|
15
|
+
end
|
16
|
+
|
17
17
|
it "finds things releative to 'root'" do
|
18
18
|
Loquacious.path('Rakefile').should == File.join(@root_dir, 'Rakefile')
|
19
|
-
end
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
# EOF
|
data/version.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.5.0
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loquacious
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 5
|
8
|
+
- 0
|
9
|
+
version: 1.5.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Tim Pease
|
@@ -9,19 +14,23 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-03-11 00:00:00 -07:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 3
|
30
|
+
- 0
|
31
|
+
version: 1.3.0
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
description: |-
|
26
35
|
Descriptive configuration files for Ruby written in Ruby.
|
27
36
|
|
@@ -74,8 +83,8 @@ extensions: []
|
|
74
83
|
extra_rdoc_files:
|
75
84
|
- History.txt
|
76
85
|
- README.rdoc
|
86
|
+
- version.txt
|
77
87
|
files:
|
78
|
-
- .gitignore
|
79
88
|
- History.txt
|
80
89
|
- README.rdoc
|
81
90
|
- Rakefile
|
@@ -94,6 +103,7 @@ files:
|
|
94
103
|
- spec/spec.opts
|
95
104
|
- spec/spec_helper.rb
|
96
105
|
- spec/string_spec.rb
|
106
|
+
- version.txt
|
97
107
|
has_rdoc: true
|
98
108
|
homepage: http://gemcutter.org/gems/loquacious
|
99
109
|
licenses: []
|
@@ -108,18 +118,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
118
|
requirements:
|
109
119
|
- - ">="
|
110
120
|
- !ruby/object:Gem::Version
|
121
|
+
segments:
|
122
|
+
- 0
|
111
123
|
version: "0"
|
112
|
-
version:
|
113
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
125
|
requirements:
|
115
126
|
- - ">="
|
116
127
|
- !ruby/object:Gem::Version
|
128
|
+
segments:
|
129
|
+
- 0
|
117
130
|
version: "0"
|
118
|
-
version:
|
119
131
|
requirements: []
|
120
132
|
|
121
133
|
rubyforge_project: codeforpeople
|
122
|
-
rubygems_version: 1.3.
|
134
|
+
rubygems_version: 1.3.6
|
123
135
|
signing_key:
|
124
136
|
specification_version: 3
|
125
137
|
summary: Descriptive configuration files for Ruby written in Ruby
|
data/.gitignore
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# The list of files that should be ignored by Mr Bones.
|
2
|
-
# Lines that start with '#' are comments.
|
3
|
-
#
|
4
|
-
# A .gitignore file can be used instead by setting it as the ignore
|
5
|
-
# file in your Rakefile:
|
6
|
-
#
|
7
|
-
# PROJ.ignore_file = '.gitignore'
|
8
|
-
#
|
9
|
-
# For a project with a C extension, the following would be a good set of
|
10
|
-
# exclude patterns (uncomment them if you want to use them):
|
11
|
-
# *.[oa]
|
12
|
-
# *~
|
13
|
-
announcement.txt
|
14
|
-
coverage
|
15
|
-
doc
|
16
|
-
pkg
|