json_serialisable 0.0.1

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.
Files changed (2) hide show
  1. data/lib/json_serialisable.rb +34 -0
  2. metadata +56 -0
@@ -0,0 +1,34 @@
1
+ # Mixin for the Class class
2
+ class Class
3
+ # A shorthand which automatically adds methods for serialising via JSON
4
+ #
5
+ # Example:
6
+ # attr_serialise :a, :b, ...
7
+ #
8
+ # Arguments:
9
+ # (:variable_label)+
10
+ #
11
+ # Remark:
12
+ # There should be a matching contstructor with the same method signature as the labels used in the function call.
13
+ # This way json_create will not error when it is called.
14
+
15
+ def attr_serialise(*attrs)
16
+
17
+ # Sanity checks
18
+ abort "Please provide at least one argument" if attrs.length == 0
19
+
20
+ #Build to the to_json method
21
+ tojson = "def to_json(*a)\n{ 'json_class' => #{self.name}"
22
+ attrs.each { |a| tojson << ",\n'#{a}' => @#{a}"}
23
+ tojson << "\n}.to_json(*a)\nend"
24
+
25
+ #build to json_create method
26
+ jsoncreate = "def self.json_create(o)\nnew( *o['#{attrs.shift}']"
27
+ attrs.each { |a| jsoncreate << ", *o['#{a}']" }
28
+ jsoncreate << ")\nend"
29
+
30
+ # Add methods
31
+ class_eval(tojson)
32
+ class_eval(jsoncreate)
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: json_serialisable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Carl Ellis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: &20584776 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.5.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *20584776
25
+ description: Adds support for autogenerating json serialisation functions
26
+ email: carlc75@gmail.com
27
+ executables: []
28
+ extensions: []
29
+ extra_rdoc_files: []
30
+ files:
31
+ - lib/json_serialisable.rb
32
+ homepage: http://carlellis.co.uk
33
+ licenses: []
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 1.8.11
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: Class mixin for JSON support
56
+ test_files: []