diograph 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9330e603168cb057aa2a524890765f8bc9f9075
4
- data.tar.gz: 54cb41f4b889d8bb84bc0f6b7cec1c3aaf2dcc2a
3
+ metadata.gz: 0ea38f845d2143ac9939193e7cb846e3e44705e9
4
+ data.tar.gz: 86ff681d76badebdc3c947a94db6563fb5aab293
5
5
  SHA512:
6
- metadata.gz: a367a80542e8ba94031627271c0af8b7686228381e55578b13b494982a71aaaa9914e0396461e40b2a716a9c0aa1613fc95d7ab7abcb6fda1766af44bb6aa489
7
- data.tar.gz: d7499cff811b7614d5555feafefabbd1522e06ac96b7ecb8a09ec356ec2f5d84edc38624088aa187060b781983cf4079a22f6aad7b407f1a0f82cc51e6ac2520
6
+ metadata.gz: 880af575ad718dfadfc8c9a74343629665d581eadb7a632eba0c8e968e1d23fab1a2dc98fe648306099101c4649040bb567015409c9cb45e09f3f1d2d3b3b619
7
+ data.tar.gz: 3cce514d4db4266ba10cda2bb16408332678faeafd5790ef29c8ccc7cb332ec25b25e486cffc64fb3e5d0ca6ea767f0aead61ff44d308905e17246eb94cd2010
@@ -1,144 +1,149 @@
1
- # require 'room'
2
- # require 'diory'
3
- # require 'connection'
4
-
5
- class Diograph
6
-
7
- def self.create_room_from_diograph(diograph, user=nil)
8
- # Parse diograph to hash
9
- diograph = JSON.parse(diograph) if diograph.class == String
10
- # Create room
11
- room = user.nil? ? create_room_from_attributes(diograph) : create_room_from_attributes(diograph, user)
12
- diograph["diories"].map do |diory_hash|
13
- create_diory_and_connections_from_diograph(room, diory_hash)
1
+ require 'diograph/room'
2
+ require 'diograph/diory'
3
+ require 'diograph/connection'
4
+ require 'diograph/diograph'
5
+
6
+ require 'date'
7
+
8
+ module Diograph
9
+
10
+ class << self
11
+
12
+ def create_room_from_diograph(diograph)
13
+ # Parse diograph to hash
14
+ diograph = JSON.parse(diograph) if diograph.class == String
15
+ # Create room
16
+ room = create_room_from_attributes(diograph)
17
+ diograph["diories"].map do |diory_hash|
18
+ create_diory_and_connections_from_diograph(room, diory_hash)
19
+ end
20
+ room
21
+ end
22
+
23
+ def create_connections_and_related_diories(diory, diory_hash)
24
+ diory_hash["connections"].keys.each do |key|
25
+ to_diory = find_or_create_diory_from_attributes(diory.room, diory_hash["connections"][key]["diory"])
26
+ diory.connect_to(to_diory)
27
+ end
14
28
  end
15
- room
16
- end
17
29
 
18
- # def self.create_connections_and_related_diories(diory, diory_hash)
19
- # diory_hash["connections"].keys.each do |key|
20
- # to_diory = find_or_create_diory_from_attributes(diory.room, diory_hash["connections"][key]["diory"])
21
- # diory.connect_to(to_diory)
22
- # end
23
- # end
24
-
25
- def self.create_diory_and_connections_from_diograph(room, diory_hash)
26
- diory_hash = JSON.parse(diory_hash) if diory_hash.class == String
27
- diory = find_or_create_diory_from_attributes(room, diory_hash)
28
- diory_hash["connections"].keys.each do |key|
29
- connection = create_connection_from_hash(diory, diory_hash["connections"][key])
30
- diory.connections << connection
30
+ def create_diory_and_connections_from_diograph(room, diory_hash)
31
+ diory_hash = JSON.parse(diory_hash) if diory_hash.class == String
32
+ diory = find_or_create_diory_from_attributes(room, diory_hash)
33
+ diory_hash["connections"].keys.each do |key|
34
+ connection = create_connection_from_hash(diory, diory_hash["connections"][key])
35
+ diory.connections << connection
36
+ end
37
+ diory
31
38
  end
32
- diory
33
- end
34
39
 
35
40
 
36
- ################################
37
- ### FROM diograph TO diories ###
38
- ################################
39
-
40
- def self.create_room_from_attributes(args={}, user=nil)
41
- room = Room.new(
42
- name: args["name"],
43
- room_id: args["roomID"],
44
- created: args["created"],
45
- modified: args["modified"]
46
- )
47
- room.user = user unless user.nil?
48
- room.save if room.respond_to?(:save)
49
- room
50
- end
41
+ ################################
42
+ ### FROM diograph TO diories ###
43
+ ################################
51
44
 
52
- def self.find_or_create_diory_from_attributes(room, args={})
53
- existing_diory = room.diories.find{|d| d.diory_id == args["ID"]}
54
- if existing_diory.nil?
55
- create_diory_from_attributes(room, args)
56
- else
57
- existing_diory
45
+ def create_room_from_attributes(args={})
46
+ room = Room.new(
47
+ name: args["name"],
48
+ room_id: args["roomID"],
49
+ created: args["created"],
50
+ modified: args["modified"]
51
+ )
52
+ room.save if room.respond_to?(:save)
53
+ room
58
54
  end
59
- end
60
55
 
61
- def self.create_diory_from_attributes(room, args={})
62
- diory = Diory.new(
63
- diory_id: args["ID"],
64
- name: args["name"],
65
- diory_type: args["type"],
66
- date: args["date"],
67
- address: args["address"],
68
- background: args["background"],
69
- modified: args["modified"] || DateTime.now,
70
- created: args["created"] || DateTime.now,
71
- room: room
72
- )
73
- room.diories << diory if diory.respond_to?(:save)
74
- diory.save if diory.respond_to?(:save)
75
- diory
76
- end
56
+ def find_or_create_diory_from_attributes(room, args={})
57
+ existing_diory = room.diories.find{|d| d.diory_id == args["ID"]}
58
+ if existing_diory.nil?
59
+ create_diory_from_attributes(room, args)
60
+ else
61
+ existing_diory
62
+ end
63
+ end
77
64
 
78
- def self.create_connection_from_hash(diory, connection_hash)
79
- connected_diory_hash = connection_hash["diory"]
80
- to_diory = find_or_create_diory_from_attributes(diory.room, connected_diory_hash)
81
- connection = Connection.new(
82
- from_diory: diory,
83
- to_diory: to_diory,
84
- room_id: diory.room.room_id
85
- )
86
- connection.save if connection.respond_to?(:save)
87
- connection
88
- end
65
+ def create_diory_from_attributes(room, args={})
66
+ diory = Diory.new(
67
+ diory_id: args["diory_id"] || args["ID"],
68
+ name: args["name"],
69
+ diory_type: args["type"],
70
+ date: args["date"],
71
+ address: args["address"],
72
+ background: args["background"],
73
+ modified: args["modified"] || DateTime.now,
74
+ created: args["created"] || DateTime.now,
75
+ room: room
76
+ )
77
+ room.diories << diory if diory.respond_to?(:save)
78
+ diory.save if diory.respond_to?(:save)
79
+ diory
80
+ end
89
81
 
82
+ def create_connection_from_hash(diory, connection_hash)
83
+ connected_diory_hash = connection_hash["diory"]
84
+ to_diory = find_or_create_diory_from_attributes(diory.room, connected_diory_hash)
85
+ connection = Connection.new(
86
+ from_diory: diory,
87
+ to_diory: to_diory,
88
+ room_id: diory.room.room_id
89
+ )
90
+ connection.save if connection.respond_to?(:save)
91
+ connection
92
+ end
90
93
 
91
- ################################
92
- ### FROM diories TO diograph ###
93
- ################################
94
94
 
95
- def self.create_from_room(room)
96
- dg = {
97
- name: room.name,
98
- roomID: room.room_id,
99
- created: room.created,
100
- modified: room.modified,
101
- diories: room.diories.map{|d| create_from_diory(d)}
102
- }
103
- return JSON.parse dg.to_json # stringify keys
104
- end
95
+ ################################
96
+ ### FROM diories TO diograph ###
97
+ ################################
105
98
 
106
- def self.create_from_diory(diory, include_connections=true)
107
- dg = {
108
- ID: diory.diory_id,
109
- name: diory.name,
110
- type: diory.diory_type,
111
- created: diory.created,
112
- modified: diory.modified,
113
- date: diory.date,
114
- address: diory.address,
115
- background: diory.background
116
- }
117
- if include_connections
118
- dg[:connections] = {}
119
- diory.connections.each do |c|
120
- dg[:connections][c.to_diory.diory_id] = self.create_from_connection(c)
99
+ def create_from_room(room)
100
+ dg = {
101
+ name: room.name,
102
+ roomID: room.room_id,
103
+ created: room.created,
104
+ modified: room.modified,
105
+ diories: room.diories.map{|d| create_from_diory(d)}
106
+ }
107
+ return JSON.parse dg.to_json # stringify keys
108
+ end
109
+
110
+ def create_from_diory(diory, include_connections=true)
111
+ dg = {
112
+ diory_id: diory.diory_id,
113
+ type: diory.diory_type,
114
+ text: diory.name,
115
+ image: diory.background,
116
+ style: { text: { color: "white"} },
117
+ data: { geo: { latitude: diory.latitude, longitude: diory.longitude, zoom: 10 } },
118
+ address: diory.address,
119
+ date: diory.date,
120
+ created: diory.created,
121
+ modified: diory.modified,
122
+ }
123
+ if include_connections
124
+ dg[:diorys] = {}
125
+ diory.connections.each_with_index do |c, i|
126
+ dg[:diorys][i] = create_from_connection(c)
127
+ end
121
128
  end
129
+ return JSON.parse dg.to_json # stringify keys
122
130
  end
123
- return JSON.parse dg.to_json # stringify keys
124
- end
125
131
 
126
132
 
127
- ### 0.1.0 stuff ###
133
+ ### 0.1.0 stuff ###
128
134
 
129
- def self.create_from_connection(connection)
130
- d = connection.to_diory
131
- connection_dg = {}
132
- # connection_dg["ID"] = connection.connection_id
133
- connection_dg["roomID"] = d.room.room_id
134
- connection_dg["diory"] = create_from_diory(d, false)
135
- connection_dg
136
- end
135
+ def create_from_connection(connection)
136
+ d = connection.to_diory
137
+ connection_dg = create_from_diory(d, false)
138
+ connection_dg
139
+ end
140
+
141
+ def is_equal(diograph1, diograph2)
142
+ one = diograph1["diories"].sort_by{|d| d["ID"]} unless diograph1.nil?
143
+ two = diograph2["diories"].sort_by{|d| d["ID"]} unless diograph2.nil?
144
+ one == two
145
+ end
137
146
 
138
- def self.is_equal(diograph1, diograph2)
139
- one = diograph1["diories"].sort_by{|d| d["ID"]} unless diograph1.nil?
140
- two = diograph2["diories"].sort_by{|d| d["ID"]} unless diograph2.nil?
141
- one == two
142
147
  end
143
148
 
144
149
  end
@@ -0,0 +1,24 @@
1
+ module Diograph
2
+
3
+ class Connection
4
+
5
+ attr_reader :from_diory, :to_diory
6
+
7
+ def initialize(args={})
8
+ @from_diory = args[:from_diory]
9
+ @to_diory = args[:to_diory]
10
+ end
11
+
12
+ def from_diory_id
13
+ nil if @from_diory.nil?
14
+ @from_diory.diory_id
15
+ end
16
+
17
+ def to_diory_id
18
+ nil if @to_diory.nil?
19
+ @to_diory.diory_id
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,41 @@
1
+ module Diograph
2
+
3
+ class Diory
4
+
5
+ attr_reader :diory_id, :name, :diory_type, :date, :address, :background, :latitude, :longitude, :created, :modified
6
+ attr_reader :room, :connections, :connected_diories
7
+
8
+ def initialize(args={})
9
+ @diory_id = args[:diory_id] || args[:ID]
10
+ @name = args[:name]
11
+ @diory_type = args[:diory_type]
12
+ @date = args[:date]
13
+ @address = args[:address]
14
+ @background = args[:background]
15
+ @latitude = args[:latitude]
16
+ @longitude = args[:longitude]
17
+ @created = args[:created]
18
+ @modified = args[:modified]
19
+
20
+ @room = args[:room]
21
+ @room.diories << self if @room
22
+
23
+ @connections = args[:connections] || []
24
+ @connected_diories = args[:connected_diories] || []
25
+ end
26
+
27
+ def connect_to(to_diory)
28
+ connection = Connection.new(from_diory: self, to_diory: to_diory)
29
+ @connections << connection
30
+ @connected_diories << to_diory
31
+ to_diory.connections << connection
32
+ to_diory.connected_diories << self
33
+ end
34
+
35
+ def connected_diories=(connected_diories)
36
+ @connected_diories = connected_diories
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,21 @@
1
+ module Diograph
2
+
3
+ class Room
4
+
5
+ attr_reader :room_id, :name, :modified, :created, :diories
6
+
7
+ def initialize(args={})
8
+
9
+ # Attributes
10
+ @room_id = args[:room_id]
11
+ @name = args[:name]
12
+ @modified = args[:modified]
13
+ @created = args[:created]
14
+
15
+ # Relations
16
+ @diories = args[:diories] || []
17
+ end
18
+
19
+ end
20
+
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diograph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jvalanen
@@ -14,14 +14,14 @@ dependencies:
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: Library to deal with diographs in Personal Web applications
@@ -31,6 +31,9 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/diograph.rb
34
+ - lib/diograph/connection.rb
35
+ - lib/diograph/diory.rb
36
+ - lib/diograph/room.rb
34
37
  homepage: http://rubygems.org/gems/diograph
35
38
  licenses: []
36
39
  metadata: {}
@@ -40,17 +43,17 @@ require_paths:
40
43
  - lib
41
44
  required_ruby_version: !ruby/object:Gem::Requirement
42
45
  requirements:
43
- - - '>='
46
+ - - ">="
44
47
  - !ruby/object:Gem::Version
45
48
  version: '0'
46
49
  required_rubygems_version: !ruby/object:Gem::Requirement
47
50
  requirements:
48
- - - '>='
51
+ - - ">="
49
52
  - !ruby/object:Gem::Version
50
53
  version: '0'
51
54
  requirements: []
52
55
  rubyforge_project:
53
- rubygems_version: 2.0.14.1
56
+ rubygems_version: 2.6.13
54
57
  signing_key:
55
58
  specification_version: 4
56
59
  summary: Library to deal with diographs in Personal Web applications