diff options
| author | Florian Frank <flori@ping.de> | 2011-09-12 20:04:08 +0200 |
|---|---|---|
| committer | Florian Frank <flori@ping.de> | 2011-09-12 20:04:08 +0200 |
| commit | 05f22914aa8679e17588995eb334b4c4335c9265 (patch) | |
| tree | ced9a145c489f755c91b9220fd0191d31e54bf4f /lib/json/add/regexp.rb | |
| parent | f0adb8f0c89192aea4bb36ff8c2414e247477fcf (diff) | |
| download | json-05f22914aa8679e17588995eb334b4c4335c9265.tar.gz | |
Split all implementations into single files
This way it's easier to create one's own serialisations by picking just
the desired ones and mixing them with one's own implementations.
Diffstat (limited to 'lib/json/add/regexp.rb')
| -rw-r--r-- | lib/json/add/regexp.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/json/add/regexp.rb b/lib/json/add/regexp.rb new file mode 100644 index 0000000..2fcbb6f --- /dev/null +++ b/lib/json/add/regexp.rb @@ -0,0 +1,30 @@ +unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED + require 'json' +end + +# Regexp serialization/deserialization +class Regexp + + # Deserializes JSON string by constructing new Regexp object with source + # <tt>s</tt> (Regexp or String) and options <tt>o</tt> serialized by + # <tt>to_json</tt> + def self.json_create(object) + new(object['s'], object['o']) + end + + # Returns a hash, that will be turned into a JSON object and represent this + # object. + def as_json(*) + { + JSON.create_id => self.class.name, + 'o' => options, + 's' => source, + } + end + + # Stores class name (Regexp) with options <tt>o</tt> and source <tt>s</tt> + # (Regexp or String) as JSON string + def to_json(*) + as_json.to_json + end +end |
