xmlize 0.1.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.
File without changes
@@ -0,0 +1,4 @@
1
+
2
+ === 0.1.0 / 2008-08-04
3
+
4
+ * gem is alive!
@@ -0,0 +1,58 @@
1
+ = YamlRpc -- advanced RPC client on YAML
2
+
3
+ Supports:
4
+
5
+ * Data types (String, Regexp, Arrays, Hashes etc.)
6
+ * Passing images, PDFs and other binary data so easy you don't even think about it
7
+ * HTTP redirects
8
+ * HTTP Authentication
9
+
10
+ Simple to use:
11
+
12
+ client = YamlRpc::Client.new('http://localhost:3000/api/basic')
13
+
14
+ client.add_foo_bar( :foo => 3, :bar => 5 ) # -> { :result => 8 }
15
+ client.add(7, 11) # -> 18
16
+ client.upload(:image => open('image.gif', 'rb').read) # -> uploads image
17
+
18
+ Example add_foo_bar POSTs:
19
+
20
+ http://localhost:3000/api/basic/add_foo_bar
21
+
22
+ passing POST data:
23
+
24
+ yamlrpc=---%20%0A:foo:%203%0A:bar:%205%0A
25
+
26
+ which can be captured in any language like PHP, Java or Ruby, ie. Ruby on Rails:
27
+
28
+ class Api::BasicController < ApplicationController
29
+ def add_foo_bar
30
+ @yamlrpc = YAML.load(params[:yamlrpc])
31
+ render :text => (@yamlrpc[:foo] + @yamlrpc[:bar]).to_yaml
32
+ end
33
+ end
34
+
35
+ Result is returned as YAML as well and automatically decoded.
36
+
37
+ See /examples dir for more examples.
38
+
39
+ == Download
40
+
41
+ The latest version:
42
+
43
+ * http://svn.mirekrusin.com/ruby/yamlrpc/trunk
44
+
45
+ == Installation
46
+
47
+ gem install yamlrpc
48
+
49
+ == License
50
+
51
+ This library is released under the LGPL license.
52
+
53
+ == Support
54
+
55
+ The homepage is located under http://www.rubyforge/projects/yamlrpc
56
+
57
+ For other information, feel free to ask on the ruby-talk mailing list
58
+ (which is mirrored to comp.lang.ruby) or contact mailto:ruby@mirekrusin.com
@@ -0,0 +1,8 @@
1
+
2
+ require 'xmlize/hash'
3
+ require 'xmlize/object'
4
+ require 'xmlize/array'
5
+
6
+ module Xmlize
7
+ VERSION = '0.1.1'
8
+ end
File without changes
@@ -0,0 +1,22 @@
1
+
2
+ class Hash
3
+
4
+ def tokens_for_xmlize(tag, attributes = {})
5
+ attr_tokens = []
6
+ other_tokens = []
7
+ tag ||= 'object'
8
+ (self.merge(attributes)).each do |k, v|
9
+ if (k == :tag)
10
+ tag = v
11
+ elsif (k == :innerHTML)
12
+ other_tokens.push(['TEXT', v])
13
+ elsif (k.to_s[0..0] == '@')
14
+ attr_tokens.push(['ATTR', k.to_s[1..-1], v])
15
+ else
16
+ other_tokens = other_tokens.concat(v.tokens_for_xmlize(k))
17
+ end
18
+ end
19
+ [['START', tag]] + attr_tokens + other_tokens + [['END', tag]]
20
+ end
21
+
22
+ end
@@ -0,0 +1,66 @@
1
+
2
+ class Object
3
+
4
+ def xmlize(tag, attributes = {}, options = {})
5
+ options[:add_xml_decl] = options.has_key?(:add_xml_decl) ? true : options[:add_xml_decl]
6
+ options[:version] = options.has_key?(:version) ? options[:version] : '1.0'
7
+ options[:encoding] = options.has_key?(:encoding) ? options[:encoding] : 'utf-8'
8
+ options[:standalone] = options.has_key?(:standalone) ? options[:standalone] : nil
9
+ options[:rails] = options.has_key?(:rails) ? options[:rails] : false
10
+ chunks = []
11
+ state = 'STARTDOC'
12
+ tokens_for_xmlize(tag, attributes).each do |token|
13
+ case token.first
14
+ when 'START'
15
+ if state == 'STARTDOC'
16
+ if (options[:add_xml_decl])
17
+ chunks.push("<?xml version=\"#{options[:version]}\" encoding=\"#{options[:encoding]}\"?>")
18
+ end
19
+ end
20
+ chunks.push(">") if state == 'IN_START'
21
+ name = token[1]
22
+ name = name.gsub(/_/, '-') if options[:rails]
23
+ chunks.push "<#{name}"
24
+ state = 'IN_START'
25
+
26
+ when 'ATTR'
27
+ value = token[2].gsub(/\"/, '&quot;')
28
+ chunks.push " #{token[1]}=\"#{value}\""
29
+ state = 'IN_START'
30
+
31
+ when 'TEXT'
32
+ chunks.push(">") if state == 'IN_START'
33
+ text = token[1]
34
+ [
35
+ [/&/, '&amp;'],
36
+ [/\"/, "&quot;"],
37
+ [/>/, "&gt;"],
38
+ [/</, "&lt;"]
39
+ ].each { |e| text.gsub! e[0], e[1] }
40
+ chunks.push(text)
41
+ state = 'IN_TEXT'
42
+
43
+ when 'END'
44
+ if (state == 'IN_START')
45
+ chunks.push(' />')
46
+ else
47
+ name = token[1]
48
+ name = name.gsub /_/, '-' if (options[:rails])
49
+ chunks.push("</#{name}>")
50
+ end
51
+ state = 'IN_END'
52
+
53
+ end
54
+ end
55
+ chunks.join('')
56
+ end
57
+
58
+ def tokens_for_xmlize(tag, attributes = {})
59
+ tokens = [['START', tag]]
60
+ tokens.concat attributes.map { |k, v| ['ATTR', k, v] }
61
+ tokens << ['TEXT', to_s]
62
+ tokens << ['END', tag]
63
+ tokens
64
+ end
65
+
66
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xmlize
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Mirek Rusin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-17 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.7.0
24
+ version:
25
+ description: Convert Ruby objects to XML
26
+ email: ruby@mirekrusin.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - History.txt
33
+ - README.txt
34
+ files:
35
+ - lib/xmlize
36
+ - lib/xmlize.rb
37
+ - lib/xmlize/array.rb
38
+ - lib/xmlize/hash.rb
39
+ - lib/xmlize/object.rb
40
+ - CHANGELOG
41
+ - History.txt
42
+ - README.txt
43
+ has_rdoc: true
44
+ homepage: http://rubyforge.com/projects/xmlize
45
+ post_install_message:
46
+ rdoc_options:
47
+ - --main
48
+ - README.txt
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ version:
63
+ requirements: []
64
+
65
+ rubyforge_project: xmlize
66
+ rubygems_version: 1.2.0
67
+ signing_key:
68
+ specification_version: 2
69
+ summary: Convert Ruby objects to XML
70
+ test_files: []
71
+