julien51-babylon 0.1.7 → 0.1.8
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/Rakefile +1 -1
- data/lib/babylon.rb +5 -14
- data/lib/babylon/base/view.rb +2 -2
- data/lib/babylon/xmpp_connection.rb +3 -3
- data/lib/babylon/xmpp_parser.rb +24 -12
- metadata +5 -3
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ begin
|
|
17
17
|
gem.add_dependency('julien51-sax-machine')
|
18
18
|
gem.add_dependency('templater')
|
19
19
|
gem.add_dependency('daemons')
|
20
|
-
gem.requirements = ["eventmachine", "yaml", "fileutils", "log4r", "nokogiri", "sax-machine", "templater", "daemons", "optparse", "digest/sha1", "base64", "resolv"]
|
20
|
+
gem.requirements = ["eventmachine", "yaml", "fileutils", "log4r", "nokogiri", "sax-machine", "templater", "daemons", "optparse", "digest/sha1", "base64", "resolv", "activesupport"]
|
21
21
|
gem.executables = "babylon"
|
22
22
|
gem.files = [ "bin/babylon",
|
23
23
|
"lib/babylon.rb",
|
data/lib/babylon.rb
CHANGED
@@ -3,6 +3,7 @@ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname
|
|
3
3
|
|
4
4
|
require 'eventmachine'
|
5
5
|
require 'log4r'
|
6
|
+
require 'activesupport'
|
6
7
|
require 'nokogiri'
|
7
8
|
require 'yaml'
|
8
9
|
require 'fileutils'
|
@@ -10,8 +11,8 @@ require 'sax-machine'
|
|
10
11
|
require 'digest/sha1'
|
11
12
|
require 'base64'
|
12
13
|
require 'resolv'
|
13
|
-
require
|
14
|
-
|
14
|
+
require 'templater'
|
15
|
+
require 'cgi'
|
15
16
|
|
16
17
|
require 'babylon/xmpp_connection'
|
17
18
|
require 'babylon/xmpp_parser'
|
@@ -20,7 +21,7 @@ require 'babylon/client_connection'
|
|
20
21
|
require 'babylon/router'
|
21
22
|
require 'babylon/runner'
|
22
23
|
require 'babylon/generator'
|
23
|
-
require
|
24
|
+
require 'babylon/xpath_helper'
|
24
25
|
require 'babylon/base/controller'
|
25
26
|
require 'babylon/base/view'
|
26
27
|
require 'babylon/base/stanza'
|
@@ -100,17 +101,7 @@ module Babylon
|
|
100
101
|
##
|
101
102
|
# Decodes XML special characters.
|
102
103
|
def self.decode_xml(str)
|
103
|
-
|
104
|
-
'lt' => '<',
|
105
|
-
'gt' => '>',
|
106
|
-
'#38' => '&',
|
107
|
-
'amp' => '&',
|
108
|
-
'quot' => '"',
|
109
|
-
'#13' => "\r",
|
110
|
-
}
|
111
|
-
entities.keys.inject(str) { |string, key|
|
112
|
-
string.gsub(/&#{key};/, entities[key])
|
113
|
-
}
|
104
|
+
CGI.unescapeHTML(str)
|
114
105
|
end
|
115
106
|
|
116
107
|
end
|
data/lib/babylon/base/view.rb
CHANGED
@@ -16,7 +16,7 @@ module Babylon
|
|
16
16
|
def render(xml, options = {})
|
17
17
|
# First, we need to identify the partial file path, based on the @view_template path.
|
18
18
|
partial_path = (@view_template.split("/")[0..-2] + options[:partial].split("/")).join("/").gsub(".xml.builder", "") + ".xml.builder"
|
19
|
-
raise ViewFileNotFound unless Babylon.views[partial_path]
|
19
|
+
raise ViewFileNotFound, "No such file #{partial_path}" unless Babylon.views[partial_path]
|
20
20
|
eval(Babylon.views[partial_path], binding, partial_path, 1)
|
21
21
|
end
|
22
22
|
|
@@ -34,7 +34,7 @@ module Babylon
|
|
34
34
|
# "Loads" the view file, and uses the Nokogiri Builder to build the XML stanzas that will be sent.
|
35
35
|
def evaluate
|
36
36
|
return if @view_template == ""
|
37
|
-
raise ViewFileNotFound unless Babylon.views[@view_template]
|
37
|
+
raise ViewFileNotFound, "No such file #{@view_template}" unless Babylon.views[@view_template]
|
38
38
|
builder = Nokogiri::XML::Builder.new
|
39
39
|
builder.stream do |xml|
|
40
40
|
eval(Babylon.views[@view_template], binding, @view_template, 1)
|
@@ -157,9 +157,9 @@ module Babylon
|
|
157
157
|
# receive_data is called when data is received. It is then passed to the parser.
|
158
158
|
def receive_data(data)
|
159
159
|
begin
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
Babylon.logger.debug {
|
161
|
+
"RECEIVED : #{data}"
|
162
|
+
}
|
163
163
|
@parser.push(data)
|
164
164
|
rescue
|
165
165
|
Babylon.logger.error {
|
data/lib/babylon/xmpp_parser.rb
CHANGED
@@ -44,6 +44,7 @@ module Babylon
|
|
44
44
|
@doc ||= Nokogiri::XML::Document.new
|
45
45
|
@elem ||= @doc # If we have no current element, then, we take the doc
|
46
46
|
@elem = @elem.add_child(Nokogiri::XML::Element.new(qname, @doc))
|
47
|
+
|
47
48
|
add_namespaces_and_attributes_to_current_node(attributes)
|
48
49
|
|
49
50
|
if @elem.name == "stream:stream"
|
@@ -85,21 +86,32 @@ module Babylon
|
|
85
86
|
private
|
86
87
|
|
87
88
|
##
|
88
|
-
# Adds namespaces and attributes. Nokogiri passes them as a array of [
|
89
|
+
# Adds namespaces and attributes. Nokogiri passes them as a array of [[ns_name, ns_url], [ns_name, ns_url]..., key, value, key, value]...
|
89
90
|
def add_namespaces_and_attributes_to_current_node(attrs)
|
90
|
-
|
91
|
-
|
92
|
-
#
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
91
|
+
# Namespaces
|
92
|
+
attrs.select {|k| k.is_a? Array}.each do |pair|
|
93
|
+
# set_namespace(pair[0], pair[1])
|
94
|
+
set_normal_attribute(pair[0], pair[1])
|
95
|
+
end
|
96
|
+
# Attributes
|
97
|
+
attrs.select {|k| k.is_a? String}.in_groups_of(2) do |pair|
|
98
|
+
set_normal_attribute(pair[0], pair[1])
|
99
|
+
end
|
100
|
+
end
|
98
101
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
+
def set_normal_attribute(key, value)
|
103
|
+
@elem.set_attribute key, Babylon.decode_xml(value)
|
104
|
+
end
|
105
|
+
|
106
|
+
def set_namespace(key, value)
|
107
|
+
if key.include? ':'
|
108
|
+
@elem.add_namespace(key.split(':').last, value)
|
109
|
+
else
|
110
|
+
@elem.add_namespace(nil, value)
|
102
111
|
end
|
103
112
|
end
|
113
|
+
|
114
|
+
|
115
|
+
|
104
116
|
end
|
105
117
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: julien51-babylon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- julien Genestoux
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-31 00:00:00 -07:00
|
13
13
|
default_executable: babylon
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- templates/babylon/tmp/pids/README
|
124
124
|
has_rdoc: true
|
125
125
|
homepage: http://github.com/julien51/babylon
|
126
|
+
licenses:
|
126
127
|
post_install_message:
|
127
128
|
rdoc_options:
|
128
129
|
- --charset=UTF-8
|
@@ -153,8 +154,9 @@ requirements:
|
|
153
154
|
- digest/sha1
|
154
155
|
- base64
|
155
156
|
- resolv
|
157
|
+
- activesupport
|
156
158
|
rubyforge_project: babylon
|
157
|
-
rubygems_version: 1.
|
159
|
+
rubygems_version: 1.3.5
|
158
160
|
signing_key:
|
159
161
|
specification_version: 2
|
160
162
|
summary: Babylon is a framework to create EventMachine based XMPP External Components in Ruby.
|