logansama-flexible_object 0.1.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/CHANGES +3 -0
- data/LICENSE +34 -0
- data/README +34 -0
- data/Rakefile +58 -0
- data/TODO +7 -0
- metadata +60 -0
data/CHANGES
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
== CREATIVE COMMONS GPL.
|
2
|
+
|
3
|
+
GNU General Public License, Free Software Foundation
|
4
|
+
|
5
|
+
The GNU General Public License is a Free Software license. Like any Free
|
6
|
+
Software license, it grants to you the four following freedoms:
|
7
|
+
|
8
|
+
1. The freedom to run the program for any purpose.
|
9
|
+
2. The freedom to study how the program works and adapt it to your needs.
|
10
|
+
3. The freedom to redistribute copies so you can help your neighbor.
|
11
|
+
4. The freedom to improve the program and release your improvements to the
|
12
|
+
public, so that the whole community benefits.
|
13
|
+
|
14
|
+
You may exercise the freedoms specified here provided that you comply with the
|
15
|
+
express conditions of this license. The principal conditions are:
|
16
|
+
|
17
|
+
- You must conspicuously and appropriately publish on each copy distributed an
|
18
|
+
appropriate copyright notice and disclaimer of warranty and keep intact all
|
19
|
+
the notices that refer to this License and to the absence of any warranty;
|
20
|
+
and give any other recipients of the Program a copy of the GNU General Public
|
21
|
+
License along with the Program. Any translation of the GNU General Public
|
22
|
+
License must be accompanied by the GNU General Public License.
|
23
|
+
- If you modify your copy or copies of the program or any portion of it, or
|
24
|
+
develop a program based upon it, you may distribute the resulting work
|
25
|
+
provided you do so under the GNU General Public License. Any translation of
|
26
|
+
the GNU General Public License must be accompanied by the GNU General Public
|
27
|
+
License.
|
28
|
+
- If you copy or distribute the program, you must accompany it with the complete
|
29
|
+
corresponding machine-readable source code or with a written offer, valid for
|
30
|
+
at least three years, to furnish the complete corresponding machine-readable
|
31
|
+
source code.
|
32
|
+
|
33
|
+
Any of the above conditions can be waived if you get permission from the
|
34
|
+
copyright holder.
|
data/README
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
== OPEN OBJECT
|
2
|
+
|
3
|
+
The Open Object data type is a pure Ruby re-implementation of the Open Struct
|
4
|
+
data type which allows the recursive definition of attributes.
|
5
|
+
|
6
|
+
=== Purpose.
|
7
|
+
|
8
|
+
The sole purpose of this data type is to create a data type capable of handling
|
9
|
+
the creation and actualization of hierarchical data structures defined by using
|
10
|
+
nested Hashes instances.
|
11
|
+
|
12
|
+
=== Concept.
|
13
|
+
|
14
|
+
The Open Object data type, by being capable of create and update the values of
|
15
|
+
hierarchical attributes, is conceived as a perfect unit for in-memory data
|
16
|
+
storage.
|
17
|
+
|
18
|
+
This data type adapts dynamically to a given data object hierarchy defined by
|
19
|
+
nested Hashes in order to allow access to its attributes and their respective
|
20
|
+
dependent attributes easily.
|
21
|
+
|
22
|
+
=== Features.
|
23
|
+
|
24
|
+
The current version of this data type implements these features:
|
25
|
+
- Recursive initialization of its attributes.
|
26
|
+
- Direct read/write access to the dynamically created attributes.
|
27
|
+
- Data conversion to built-in Hash instances.
|
28
|
+
|
29
|
+
=== Limitations.
|
30
|
+
|
31
|
+
The limitations are the following:
|
32
|
+
- An instance of this data type cannot store Hash instances natively because
|
33
|
+
every instance of this built-in class will be converted into an OpenObject
|
34
|
+
instance due to implementation reasons.
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
require 'rake/rdoctask'
|
6
|
+
require 'spec/rake/spectask'
|
7
|
+
|
8
|
+
desc 'GemSpec definition.'
|
9
|
+
spec = Gem::Specification.new do |specification|
|
10
|
+
specification.name = 'flexible_object'
|
11
|
+
specification.rubyforge_project = 'flexible_object'
|
12
|
+
specification.version = '0.1.0'
|
13
|
+
specification.date = '2009-02-25'
|
14
|
+
specification.author = 'Julio Javier Cicchelli'
|
15
|
+
specification.email = 'javier@rock-n-code.com'
|
16
|
+
specification.homepage = 'http://rock-n-code.com'
|
17
|
+
specification.summary = 'Flexible Object data type for Ruby'
|
18
|
+
specification.description = <<-TEXT
|
19
|
+
A pure Ruby and extremely flexible re-implementation of the OpenStruct class
|
20
|
+
that allows a recursive definition of attributes.
|
21
|
+
TEXT
|
22
|
+
specification.files = %w(LICENSE README CHANGES TODO Rakefile) + \
|
23
|
+
Dir.glob("{bin,lib,spec}/**/*")
|
24
|
+
specification.require_path = "lib"
|
25
|
+
specification.has_rdoc = true
|
26
|
+
specification.extra_rdoc_files = ['README', 'LICENSE', 'CHANGES', 'TODO']
|
27
|
+
end
|
28
|
+
|
29
|
+
desc 'Package building.'
|
30
|
+
Rake::GemPackageTask.new(spec) do |package|
|
31
|
+
package.gem_spec = spec
|
32
|
+
package.need_tar = false
|
33
|
+
package.need_zip = false
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'Documentation generation.'
|
37
|
+
Rake::RDocTask.new do |rdoc|
|
38
|
+
files =['README', 'LICENSE', 'CHANGES', 'TODO', 'lib/**/*.rb']
|
39
|
+
rdoc.rdoc_files.add(files)
|
40
|
+
rdoc.main = "README"
|
41
|
+
rdoc.title = "Flexible Object Documentation"
|
42
|
+
rdoc.rdoc_dir = 'doc/rdoc'
|
43
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
44
|
+
end
|
45
|
+
|
46
|
+
desc 'Unit testing with RSpec.'
|
47
|
+
Spec::Rake::SpecTask.new do |rspec|
|
48
|
+
rspec.spec_files = FileList['spec/**/*.rb']
|
49
|
+
end
|
50
|
+
|
51
|
+
desc 'Cleaning the generated packaging and documentation files.'
|
52
|
+
CLEAN.include ["**/.*.sw?", "pkg", "lib/*.bundle", "lib/*.so", "*.gem", "doc",
|
53
|
+
".config", "coverage", "cache", "spec/**/*.log", ".DS_Store"]
|
54
|
+
|
55
|
+
desc 'Building and installing as a local gem.'
|
56
|
+
task :install => [:clean, :package] do
|
57
|
+
sh "gem install pkg/#{spec.name}-#{spec.version}.gem"
|
58
|
+
end
|
data/TODO
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
== TODO
|
2
|
+
|
3
|
+
The following tasks should be done as soon as possible:
|
4
|
+
- Rearrange the :missing_method method.
|
5
|
+
- Fix bugs produced when reading and writing from/to a non-existing hierarchy.
|
6
|
+
- Finish writing RSpec unit tests.
|
7
|
+
- Overall optimization and refactoring wherever possible.
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logansama-flexible_object
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julio Javier Cicchelli
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-25 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A pure Ruby and extremely flexible re-implementation of the OpenStruct class that allows a recursive definition of attributes.
|
17
|
+
email: javier@rock-n-code.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
- LICENSE
|
25
|
+
- CHANGES
|
26
|
+
- TODO
|
27
|
+
files:
|
28
|
+
- LICENSE
|
29
|
+
- README
|
30
|
+
- CHANGES
|
31
|
+
- TODO
|
32
|
+
- Rakefile
|
33
|
+
has_rdoc: true
|
34
|
+
homepage: http://rock-n-code.com
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
|
38
|
+
require_paths:
|
39
|
+
- lib
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
version:
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "0"
|
51
|
+
version:
|
52
|
+
requirements: []
|
53
|
+
|
54
|
+
rubyforge_project: flexible_object
|
55
|
+
rubygems_version: 1.2.0
|
56
|
+
signing_key:
|
57
|
+
specification_version: 2
|
58
|
+
summary: Flexible Object data type for Ruby
|
59
|
+
test_files: []
|
60
|
+
|