glue 0.30.0 → 0.31.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/ProjectInfo +2 -2
- data/doc/RELEASES +4 -0
- data/lib/glue.rb +3 -3
- data/lib/glue/configuration.rb +0 -5
- data/lib/glue/logger.rb +28 -15
- data/lib/glue/markup.rb +2 -2
- data/lib/glue/template.rb +5 -5
- data/lib/glue/validation.rb +13 -12
- data/test/glue/tc_logger.rb +0 -2
- metadata +63 -67
- data/lib/glue/accumulate.rb +0 -21
- data/lib/glue/attribute.rb +0 -79
- data/lib/glue/flexob.rb +0 -46
- data/test/glue/tc_accumulate.rb +0 -37
- data/test/glue/tc_attribute.rb +0 -22
- data/test/glue/tc_flexob.rb +0 -20
data/ProjectInfo
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
TITLE : &title Glue
|
4
4
|
NAME : &pkg glue
|
5
|
-
VERSION : '0.
|
5
|
+
VERSION : '0.31.0'
|
6
6
|
STATUS : beta
|
7
7
|
|
8
8
|
AUTHOR : George Moschovitis
|
@@ -19,7 +19,7 @@ RUBYFORGE:
|
|
19
19
|
USERNAME: 'gmosx'
|
20
20
|
|
21
21
|
DEPENDENCIES:
|
22
|
-
- [ facets, '= 1.
|
22
|
+
- [ facets, '= 1.4.5' ]
|
23
23
|
|
24
24
|
PACKAGE: !!package
|
25
25
|
distribute: [ gem, tgz, zip ]
|
data/doc/RELEASES
CHANGED
data/lib/glue.rb
CHANGED
@@ -13,10 +13,10 @@ require 'pp'
|
|
13
13
|
|
14
14
|
require 'facet/nullclass'
|
15
15
|
require 'facets/more/paramix' # keep this before module/is
|
16
|
-
require '
|
16
|
+
require 'facets/core/module/is'
|
17
|
+
require 'facets/core/class/cattr'
|
17
18
|
|
18
19
|
require 'glue/property'
|
19
|
-
require 'glue/attribute'
|
20
20
|
|
21
21
|
# Glue is a collection of reusable utilities and methods to
|
22
22
|
# especially suited to Nitro and Og coding. We try to extract
|
@@ -36,7 +36,7 @@ module Glue
|
|
36
36
|
|
37
37
|
# The version.
|
38
38
|
|
39
|
-
Version = '0.
|
39
|
+
Version = '0.31.0'
|
40
40
|
|
41
41
|
# Library path.
|
42
42
|
|
data/lib/glue/configuration.rb
CHANGED
@@ -5,9 +5,6 @@ require 'facet/synchash'
|
|
5
5
|
require 'facet/dictionary'
|
6
6
|
require 'facet/string/capitalized'
|
7
7
|
|
8
|
-
require 'glue/attribute'
|
9
|
-
require 'glue/flexob'
|
10
|
-
|
11
8
|
module Glue
|
12
9
|
|
13
10
|
# A Configuration holds a group of Settings organized by
|
@@ -17,7 +14,6 @@ module Glue
|
|
17
14
|
# You can pass strings, constants or symbols as keys for the
|
18
15
|
# classes to be configured. Passing symbols you can configure
|
19
16
|
# classes even before they are defined.
|
20
|
-
#
|
21
17
|
#--
|
22
18
|
# TODO: implement with annotations.
|
23
19
|
#++
|
@@ -185,7 +181,6 @@ class Configuration
|
|
185
181
|
|
186
182
|
def method_missing(sym)
|
187
183
|
if sym.to_s.capitalized?
|
188
|
-
# Flexob.new(self[sym])
|
189
184
|
bdl = SettingCollection.new
|
190
185
|
bdl.owner = sym
|
191
186
|
if hash = self[sym]
|
data/lib/glue/logger.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
|
-
# A simple
|
3
|
+
# A simple extension of the Ruby logger. Mainly for
|
4
4
|
# compatibility purposes.
|
5
5
|
#
|
6
|
+
# === Convention
|
7
|
+
#
|
8
|
+
# When using debug level logger messages always append 'if $DBG'
|
9
|
+
# at the end. This hack is needed because Ruby does not support
|
10
|
+
# lazy evaluation (lisp macros).
|
6
11
|
#--
|
7
|
-
#
|
12
|
+
# THINK: some people think, this extension is dangerous,
|
13
|
+
# investigate.
|
8
14
|
#++
|
9
15
|
|
10
16
|
class Logger
|
@@ -76,24 +82,24 @@ class Logger
|
|
76
82
|
# block should return formatted strings given severity,
|
77
83
|
# timestamp, msg, progname.
|
78
84
|
#
|
79
|
-
#
|
85
|
+
# === Example
|
80
86
|
#
|
81
87
|
# logger = Logger.new
|
82
|
-
# logger.
|
88
|
+
# logger.setup_format do |severity, timestamp, msg, progname|
|
83
89
|
# "#{progname}@#{timestamp} - #{severity}::#{msg}"
|
84
90
|
# end
|
85
91
|
|
86
92
|
def setup_format(&format_proc)
|
87
|
-
|
88
|
-
|
93
|
+
raise 'Formating block needed' unless format_proc
|
94
|
+
@format_proc = format_proc
|
89
95
|
end
|
90
96
|
|
91
97
|
private
|
92
98
|
|
93
99
|
# hackish use of *args, give me some love.
|
94
100
|
|
95
|
-
alias_method :old_format_message, :format_message
|
96
|
-
def format_message(*args)
|
101
|
+
alias_method :old_format_message, :format_message # :nodoc:
|
102
|
+
def format_message(*args) # :nodoc:
|
97
103
|
@format_proc ? @format_proc.call(*args) : old_format_message(*args)
|
98
104
|
end
|
99
105
|
end
|
@@ -179,18 +185,25 @@ end
|
|
179
185
|
|
180
186
|
module Glue
|
181
187
|
|
188
|
+
# UNDER CONSTRUCTION.
|
189
|
+
#
|
182
190
|
# Add logging capabilities to the including class.
|
183
|
-
# When using the log/logger variables always check
|
184
|
-
# for nil:
|
185
191
|
#
|
186
|
-
#
|
192
|
+
# === Examples
|
187
193
|
#
|
188
|
-
#
|
189
|
-
#
|
194
|
+
# Og.log_info 'Hello' => '[Og] Hello'
|
195
|
+
# Render.log_info ...
|
196
|
+
# In Render:
|
197
|
+
# log_info '...'
|
190
198
|
|
191
199
|
module Logging
|
192
|
-
|
193
|
-
|
200
|
+
=begin
|
201
|
+
def self.included base
|
202
|
+
[ :info, :debug ].each do |l|
|
203
|
+
|
204
|
+
end
|
205
|
+
end
|
206
|
+
=end
|
194
207
|
end
|
195
208
|
|
196
209
|
end
|
data/lib/glue/markup.rb
CHANGED
@@ -2,7 +2,7 @@ require 'singleton'
|
|
2
2
|
require 'redcloth'
|
3
3
|
require 'cgi'
|
4
4
|
|
5
|
-
require '
|
5
|
+
require 'facets/core/module/class_extension'
|
6
6
|
|
7
7
|
require 'glue/sanitize'
|
8
8
|
|
@@ -94,7 +94,7 @@ module Markup
|
|
94
94
|
CGI.unescape(str.gsub(/_/, ' '))
|
95
95
|
end
|
96
96
|
|
97
|
-
|
97
|
+
class_extension do
|
98
98
|
# Helper method for manipulating the sanitize transformation.
|
99
99
|
|
100
100
|
def setup_sanitize_transform(&block)
|
data/lib/glue/template.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'facets/more/openobject'
|
2
2
|
require 'glue/configuration'
|
3
3
|
|
4
4
|
module Glue
|
@@ -164,14 +164,14 @@ class Template
|
|
164
164
|
setting :strip_xml_comments, :default => false, :doc => 'Strip xml comments from templates?'
|
165
165
|
|
166
166
|
class << self
|
167
|
-
include
|
167
|
+
include TemplateMixin
|
168
168
|
alias_method :compile, :compile_template
|
169
169
|
alias_method :transform, :compile_template
|
170
170
|
alias_method :evaluate, :evaluate_template
|
171
171
|
alias_method :process, :process_template
|
172
172
|
end
|
173
173
|
|
174
|
-
include
|
174
|
+
include TemplateMixin
|
175
175
|
|
176
176
|
# Helper.
|
177
177
|
|
@@ -187,8 +187,8 @@ end
|
|
187
187
|
# An intuitive binding mechanism provides the
|
188
188
|
# expansion environment.
|
189
189
|
|
190
|
-
class FileTemplate <
|
191
|
-
include
|
190
|
+
class FileTemplate < OpenObject
|
191
|
+
include TemplateMixin
|
192
192
|
|
193
193
|
@@compiled_template_cache = {}
|
194
194
|
|
data/lib/glue/validation.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require 'facets/core/class/cattr'
|
2
|
+
|
2
3
|
require 'glue/configuration'
|
3
4
|
|
4
5
|
module Glue
|
@@ -70,16 +71,16 @@ module Validation
|
|
70
71
|
class Errors
|
71
72
|
attr_accessor :errors
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
74
|
+
setting :no_value, :default => 'No value provided'
|
75
|
+
setting :no_confirmation, :default => 'Invalid confirmation'
|
76
|
+
setting :invalid_format, :default => 'Invalid format'
|
77
|
+
setting :too_short, :default => 'Too short, must be more than %d characters long'
|
78
|
+
setting :too_long, :default => 'Too long, must be less than %d characters long'
|
79
|
+
setting :invalid_length, :default => 'Must be %d characters long'
|
80
|
+
setting :no_inclusion, :default => 'The value is invalid'
|
81
|
+
setting :no_numeric, :default => 'The value must be numeric'
|
82
|
+
setting :not_unique, :default => 'The value is already used'
|
83
|
+
|
83
84
|
def initialize
|
84
85
|
@errors = {}
|
85
86
|
end
|
@@ -199,7 +200,7 @@ module Validation
|
|
199
200
|
params.each do |field|
|
200
201
|
define_validation(:value, field, c[:on]) do |obj|
|
201
202
|
value = obj.send(field)
|
202
|
-
obj.errors.add(field, c[:msg]) if value.nil? || (value.respond_to?(:empty) && value.empty?)
|
203
|
+
obj.errors.add(field, c[:msg]) if value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
203
204
|
end
|
204
205
|
end
|
205
206
|
end
|
data/test/glue/tc_logger.rb
CHANGED
@@ -14,7 +14,6 @@ class TC_Logger < Test::Unit::TestCase # :nodoc: all
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_logger
|
17
|
-
=begin
|
18
17
|
Logger.info 'hello'
|
19
18
|
assert_equal(" INFO: hello\n", @io.string)
|
20
19
|
|
@@ -39,7 +38,6 @@ class TC_Logger < Test::Unit::TestCase # :nodoc: all
|
|
39
38
|
#
|
40
39
|
Logger.set('hello.log')
|
41
40
|
assert_instance_of(Logger, Logger.get)
|
42
|
-
=end
|
43
41
|
end
|
44
42
|
|
45
43
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: glue
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.31.0
|
7
|
+
date: 2006-07-20 00:00:00 -07:00
|
8
8
|
summary: Utility methods and classes for Nitro.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: gm@navel.gr
|
12
12
|
homepage: http://www.nitroproject.org
|
13
|
-
rubyforge_project:
|
13
|
+
rubyforge_project:
|
14
14
|
description:
|
15
15
|
autorequire:
|
16
16
|
default_executable:
|
@@ -22,88 +22,84 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 0.0.0
|
24
24
|
version:
|
25
|
-
platform:
|
25
|
+
platform: ruby
|
26
26
|
signing_key:
|
27
27
|
cert_chain:
|
28
|
+
post_install_message:
|
28
29
|
authors:
|
29
30
|
- George Moschovitis
|
30
31
|
files:
|
31
|
-
- ProjectInfo
|
32
|
-
- INSTALL
|
33
|
-
- README
|
34
32
|
- doc
|
35
33
|
- lib
|
36
34
|
- test
|
37
|
-
-
|
38
|
-
- doc/CHANGELOG.1
|
39
|
-
- doc/AUTHORS
|
40
|
-
- doc/LICENSE
|
41
|
-
- doc/RELEASES
|
35
|
+
- .
|
42
36
|
- lib/glue
|
43
37
|
- lib/html
|
44
|
-
- lib/glue.rb
|
45
|
-
- lib/glue/attribute.rb
|
46
|
-
- lib/glue/builder
|
47
|
-
- lib/glue/html.rb
|
48
|
-
- lib/glue/mailer
|
49
|
-
- lib/glue/builder.rb
|
50
|
-
- lib/glue/fixture.rb
|
51
|
-
- lib/glue/configuration.rb
|
52
|
-
- lib/glue/flexob.rb
|
53
38
|
- lib/glue/cache
|
54
|
-
- lib/glue/
|
55
|
-
- lib/glue/
|
56
|
-
- lib/glue/mail.rb
|
57
|
-
- lib/glue/property.rb
|
58
|
-
- lib/glue/mailer.rb
|
59
|
-
- lib/glue/cache.rb
|
60
|
-
- lib/glue/sanitize.rb
|
61
|
-
- lib/glue/settings.rb
|
62
|
-
- lib/glue/template.rb
|
63
|
-
- lib/glue/uri.rb
|
64
|
-
- lib/glue/validation.rb
|
65
|
-
- lib/glue/markup.rb
|
66
|
-
- lib/glue/accumulate.rb
|
67
|
-
- lib/glue/autoreload.rb
|
68
|
-
- lib/glue/builder/xml.rb
|
69
|
-
- lib/glue/mailer/incoming.rb
|
70
|
-
- lib/glue/mailer/outgoing.rb
|
71
|
-
- lib/glue/cache/file.rb
|
72
|
-
- lib/glue/cache/drb.rb
|
73
|
-
- lib/glue/cache/memcached.rb
|
74
|
-
- lib/glue/cache/memory.rb
|
75
|
-
- lib/glue/cache/og.rb
|
76
|
-
- lib/html/document.rb
|
77
|
-
- lib/html/node.rb
|
78
|
-
- lib/html/tokenizer.rb
|
79
|
-
- lib/html/version.rb
|
80
|
-
- test/fixture
|
39
|
+
- lib/glue/mailer
|
40
|
+
- lib/glue/builder
|
81
41
|
- test/glue
|
42
|
+
- test/fixture
|
82
43
|
- test/public
|
83
|
-
- test/fixture/article.csv
|
84
|
-
- test/fixture/article.yml
|
85
|
-
- test/fixture/user.yml
|
86
44
|
- test/glue/builder
|
87
|
-
- test/
|
88
|
-
- test/
|
89
|
-
- test/glue/tc_validation.rb
|
45
|
+
- test/public/dummy_mailer
|
46
|
+
- test/fixture/article.csv
|
90
47
|
- test/glue/tc_builder.rb
|
48
|
+
- test/glue/tc_validation.rb
|
49
|
+
- lib/glue/builder/xml.rb
|
50
|
+
- lib/glue/mailer/incoming.rb
|
51
|
+
- lib/glue/cache/memory.rb
|
52
|
+
- lib/glue/cache/drb.rb
|
91
53
|
- test/glue/tc_fixture.rb
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
96
|
-
-
|
97
|
-
-
|
98
|
-
- test/
|
54
|
+
- lib/html/tokenizer.rb
|
55
|
+
- lib/glue/mail.rb
|
56
|
+
- setup.rb
|
57
|
+
- lib/html/node.rb
|
58
|
+
- lib/glue/configuration.rb
|
59
|
+
- lib/glue.rb
|
60
|
+
- test/public/dummy_mailer/registration.xhtml
|
99
61
|
- test/glue/tc_property_mixins.rb
|
100
|
-
- test/glue/tc_uri.rb
|
101
62
|
- test/glue/tc_stores.rb
|
63
|
+
- lib/glue/localization.rb
|
64
|
+
- doc/LICENSE
|
65
|
+
- README
|
66
|
+
- test/glue/tc_aspects.rb
|
67
|
+
- test/glue/tc_property.rb
|
102
68
|
- test/glue/tc_property_type_checking.rb
|
103
|
-
-
|
69
|
+
- lib/html/version.rb
|
70
|
+
- lib/glue/cache/memcached.rb
|
71
|
+
- lib/glue/settings.rb
|
72
|
+
- doc/CHANGELOG.1
|
73
|
+
- test/glue/tc_uri.rb
|
74
|
+
- lib/glue/mailer/outgoing.rb
|
75
|
+
- lib/glue/cache.rb
|
76
|
+
- lib/glue/sanitize.rb
|
77
|
+
- INSTALL
|
78
|
+
- test/fixture/user.yml
|
104
79
|
- test/glue/builder/tc_xml.rb
|
105
|
-
- test/
|
106
|
-
-
|
80
|
+
- test/glue/tc_template.rb
|
81
|
+
- lib/glue/uri.rb
|
82
|
+
- lib/glue/autoreload.rb
|
83
|
+
- lib/glue/markup.rb
|
84
|
+
- test/fixture/article.yml
|
85
|
+
- test/glue/tc_localization.rb
|
86
|
+
- lib/glue/html.rb
|
87
|
+
- lib/glue/property.rb
|
88
|
+
- doc/RELEASES
|
89
|
+
- ProjectInfo
|
90
|
+
- lib/glue/builder.rb
|
91
|
+
- lib/glue/logger.rb
|
92
|
+
- test/glue/tc_logger.rb
|
93
|
+
- test/glue/tc_mail.rb
|
94
|
+
- test/glue/tc_configuration.rb
|
95
|
+
- lib/html/document.rb
|
96
|
+
- lib/glue/cache/file.rb
|
97
|
+
- lib/glue/cache/og.rb
|
98
|
+
- lib/glue/template.rb
|
99
|
+
- lib/glue/fixture.rb
|
100
|
+
- lib/glue/mailer.rb
|
101
|
+
- lib/glue/validation.rb
|
102
|
+
- doc/AUTHORS
|
107
103
|
test_files: []
|
108
104
|
|
109
105
|
rdoc_options: []
|
@@ -124,5 +120,5 @@ dependencies:
|
|
124
120
|
requirements:
|
125
121
|
- - "="
|
126
122
|
- !ruby/object:Gem::Version
|
127
|
-
version: 1.
|
123
|
+
version: 1.4.5
|
128
124
|
version:
|
data/lib/glue/accumulate.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'facet/functor'
|
2
|
-
|
3
|
-
module Enumerable
|
4
|
-
|
5
|
-
# Project has_many Group
|
6
|
-
# Group has_many User
|
7
|
-
# projects.groups.accumulate.users
|
8
|
-
#--
|
9
|
-
# gmosx: any idea for a better name?
|
10
|
-
#++
|
11
|
-
|
12
|
-
def accumulate
|
13
|
-
Functor.new do |op, *args|
|
14
|
-
self.inject([]) { |a, x| a << x.send(op, *args) }.flatten
|
15
|
-
end
|
16
|
-
end
|
17
|
-
alias_method :acc, :accumulate
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/attribute.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
# Original code from Rails distribution.
|
2
|
-
# http://www.rubyonrails.com
|
3
|
-
|
4
|
-
#--
|
5
|
-
# Extends the module object with module and instance accessors
|
6
|
-
# for class attributes, just like the native attr* accessors for
|
7
|
-
# instance attributes. Aliases for classes are also provided.
|
8
|
-
#
|
9
|
-
# Example:
|
10
|
-
#
|
11
|
-
# mattr_accessor :my_attr, 'Default value'
|
12
|
-
#
|
13
|
-
# FIXME: I think those methods do *not* work as expected.
|
14
|
-
# FIXME: I should probably use @-attributes instead of
|
15
|
-
# @@-attributes.
|
16
|
-
#++
|
17
|
-
|
18
|
-
class Module # :nodoc:
|
19
|
-
|
20
|
-
# A macro that creates a reader method for class/module
|
21
|
-
# attributes.
|
22
|
-
|
23
|
-
def mattr_reader(*params)
|
24
|
-
default = if params.last.is_a?(Symbol) then nil else params.pop end
|
25
|
-
|
26
|
-
for sym in params
|
27
|
-
module_eval <<-"end_eval", __FILE__, __LINE__
|
28
|
-
|
29
|
-
if not defined?(@@#{sym.id2name})
|
30
|
-
@@#{sym.id2name} = #{default.inspect}
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.#{sym.id2name}
|
34
|
-
@@#{sym}
|
35
|
-
end
|
36
|
-
|
37
|
-
end_eval
|
38
|
-
end
|
39
|
-
end
|
40
|
-
alias_method :cattr_reader, :mattr_reader
|
41
|
-
|
42
|
-
# A macro that creates a writer method for class/module
|
43
|
-
# attributes.
|
44
|
-
|
45
|
-
def mattr_writer(*params)
|
46
|
-
default = if params.last.is_a?(Symbol) then nil else params.pop end
|
47
|
-
|
48
|
-
for sym in params
|
49
|
-
module_eval <<-"end_eval", __FILE__, __LINE__
|
50
|
-
|
51
|
-
if not defined?(@@#{sym.id2name})
|
52
|
-
@@#{sym.id2name} = #{default.inspect.inspect}
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.#{sym.id2name}=(obj)
|
56
|
-
@@#{sym.id2name} = obj
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.set_#{sym.id2name}(obj)
|
60
|
-
@@#{sym.id2name} = obj
|
61
|
-
end
|
62
|
-
|
63
|
-
end_eval
|
64
|
-
end
|
65
|
-
end
|
66
|
-
alias_method :cattr_writer, :cattr_writer
|
67
|
-
|
68
|
-
# A macro that creates a reader and a writer method for
|
69
|
-
# class/module attributes.
|
70
|
-
|
71
|
-
def mattr_accessor(*syms)
|
72
|
-
mattr_reader(*syms)
|
73
|
-
mattr_writer(*syms)
|
74
|
-
end
|
75
|
-
alias_method :cattr_accessor, :mattr_accessor
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/flexob.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
|
-
module Glue
|
4
|
-
|
5
|
-
# A flexible Object.
|
6
|
-
# Temporarily implemented as a simple OpenStruct.
|
7
|
-
|
8
|
-
class Flexob < OpenStruct
|
9
|
-
|
10
|
-
def update(hash)
|
11
|
-
hash.each do |k, v|
|
12
|
-
send("#{k}=", v)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
alias_method :set, :update
|
16
|
-
alias_method :merge, :update
|
17
|
-
|
18
|
-
def fetch(key, default = nil)
|
19
|
-
if @table.has_key?(key)
|
20
|
-
@table[key.to_sym]
|
21
|
-
else
|
22
|
-
default
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def []=(key, val)
|
27
|
-
@table[key.to_sym] = val
|
28
|
-
end
|
29
|
-
|
30
|
-
def [](key)
|
31
|
-
@table[key.to_sym]
|
32
|
-
end
|
33
|
-
|
34
|
-
def each(&block)
|
35
|
-
@table.each(&block)
|
36
|
-
end
|
37
|
-
|
38
|
-
def has_key?(key)
|
39
|
-
@table.has_key?(key)
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
# * George Moschovitis <gm@navel.gr>
|
data/test/glue/tc_accumulate.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'glue/accumulate'
|
5
|
-
|
6
|
-
class TC_Accumulate < Test::Unit::TestCase # :nodoc: all
|
7
|
-
|
8
|
-
class Project
|
9
|
-
attr_accessor :groups
|
10
|
-
end
|
11
|
-
|
12
|
-
class Group
|
13
|
-
attr_accessor :users
|
14
|
-
end
|
15
|
-
|
16
|
-
class User
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_all
|
20
|
-
pr = Project.new
|
21
|
-
gr1 = Group.new
|
22
|
-
gr2 = Group.new
|
23
|
-
us1 = User.new
|
24
|
-
us2 = User.new
|
25
|
-
gr1.users = [ us1 ]
|
26
|
-
gr2.users = [ us2 ]
|
27
|
-
pr.groups = [ gr1, gr2 ]
|
28
|
-
|
29
|
-
users = pr.groups.accumulate.users
|
30
|
-
assert_equal 2, users.size
|
31
|
-
assert_equal us1, users[0]
|
32
|
-
assert_equal us2, users[1]
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
# * George Moschovitis <gm@navel.gr>
|
data/test/glue/tc_attribute.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'glue/attribute'
|
5
|
-
|
6
|
-
class TC_Attribute < Test::Unit::TestCase # :nodoc: all
|
7
|
-
|
8
|
-
class Dummy
|
9
|
-
cattr_accessor :value, 'Default'
|
10
|
-
cattr_reader :reader, 3
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_attr
|
14
|
-
assert_equal 'Default', Dummy.value
|
15
|
-
assert_nothing_raised { Dummy.value = 2 }
|
16
|
-
assert_equal 2, Dummy.value
|
17
|
-
|
18
|
-
assert_equal 3, Dummy.reader
|
19
|
-
assert_raise(NoMethodError) { Dummy.reader = 19 }
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
data/test/glue/tc_flexob.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'glue/flexob'
|
5
|
-
|
6
|
-
class TC_Flexob < Test::Unit::TestCase # :nodoc: all
|
7
|
-
include Glue
|
8
|
-
|
9
|
-
def test_all
|
10
|
-
f = Flexob.new
|
11
|
-
f.title = 'Test'
|
12
|
-
f[:another] = 'Another'
|
13
|
-
|
14
|
-
assert_equal 'Test', f.title
|
15
|
-
assert_equal 'Another', f.another
|
16
|
-
assert_equal 'Another', f[:another]
|
17
|
-
assert_equal 'Another', f['another']
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|