als_typograf 0.0.1 → 0.0.2
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/.gitignore +2 -0
- data/README.rdoc +12 -2
- data/VERSION +1 -1
- data/als_typograf.gemspec +57 -0
- data/lib/als_typograf.rb +64 -23
- data/test/test_als_typograf.rb +1 -1
- metadata +2 -1
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,16 @@
|
|
1
|
-
=
|
1
|
+
= AlsTypograf
|
2
2
|
|
3
|
-
|
3
|
+
ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)
|
4
|
+
|
5
|
+
* Typograf homepage: http://typograf.artlebedev.ru/
|
6
|
+
* Web-service address: http://typograf.artlebedev.ru/webservices/typograf.asmx
|
7
|
+
* WSDL-description: http://typograf.artlebedev.ru/webservices/typograf.asmx?WSDL
|
8
|
+
|
9
|
+
Default charset: UTF-8
|
10
|
+
|
11
|
+
Example:
|
12
|
+
require 'als_typograf'
|
13
|
+
puts AlsTypograf.process('"Вы все еще кое-как верстаете в "Ворде"? - Тогда мы идем к вам!"')
|
4
14
|
|
5
15
|
== Note on Patches/Pull Requests
|
6
16
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{als_typograf}
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Alexander Semyonov"]
|
12
|
+
s.date = %q{2009-11-24}
|
13
|
+
s.description = %q{ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)}
|
14
|
+
s.email = %q{rotuka@rotuka.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"als_typograf.gemspec",
|
27
|
+
"lib/als_typograf.rb",
|
28
|
+
"test/helper.rb",
|
29
|
+
"test/test_als_typograf.rb"
|
30
|
+
]
|
31
|
+
s.homepage = %q{http://github.com/rotuka/als_typograf}
|
32
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
33
|
+
s.require_paths = ["lib"]
|
34
|
+
s.rubygems_version = %q{1.3.5}
|
35
|
+
s.summary = %q{ArtLebedevStudio.RemoteTypograf}
|
36
|
+
s.test_files = [
|
37
|
+
"test/helper.rb",
|
38
|
+
"test/test_als_typograf.rb"
|
39
|
+
]
|
40
|
+
|
41
|
+
if s.respond_to? :specification_version then
|
42
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
48
|
+
else
|
49
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
50
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
51
|
+
end
|
52
|
+
else
|
53
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
54
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
data/lib/als_typograf.rb
CHANGED
@@ -3,7 +3,10 @@ $KCODE = 'u'
|
|
3
3
|
require 'activesupport'
|
4
4
|
require 'httparty'
|
5
5
|
|
6
|
+
# ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)
|
7
|
+
# @author Alexander Semyonov
|
6
8
|
module AlsTypograf
|
9
|
+
# The request class
|
7
10
|
class Request
|
8
11
|
include HTTParty
|
9
12
|
base_uri 'typograf.artlebedev.ru'
|
@@ -12,30 +15,19 @@ module AlsTypograf
|
|
12
15
|
'Host' => 'typograf.artlebedev.ru',
|
13
16
|
'SOAPAction' => '"http://typograf.artlebedev.ru/webservices/ProcessText"')
|
14
17
|
|
18
|
+
# Process text with remote web-service
|
19
|
+
# @param [String] text to process
|
20
|
+
# @param [Hash] options for web-service
|
15
21
|
def process_text(text, options = {})
|
16
22
|
prepared_text = text.gsub(/&/, '&').
|
17
23
|
gsub(/</, '<').
|
18
24
|
gsub(/>/, '>')
|
19
|
-
|
20
|
-
:body => soap_request(prepared_text, options))
|
21
|
-
result = response['soap:Envelope']['soap:Body']['ProcessTextResponse']['ProcessTextResult'].
|
22
|
-
gsub(/&/, '&').
|
23
|
-
gsub(/</, '<').
|
24
|
-
gsub(/>/, '>').
|
25
|
-
gsub(/\t$/, '')
|
26
|
-
rescue
|
27
|
-
text
|
28
|
-
end
|
29
|
-
|
30
|
-
protected
|
31
|
-
|
32
|
-
def soap_request(text, options = {})
|
33
|
-
soap_body = <<-END_SOAP
|
25
|
+
soap_request = <<-END_SOAP
|
34
26
|
<?xml version="1.0" encoding="#{options[:encoding]}" ?>
|
35
27
|
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
36
28
|
<soap:Body>
|
37
29
|
<ProcessText xmlns="http://typograf.artlebedev.ru/webservices/">
|
38
|
-
<text>#{
|
30
|
+
<text>#{prepared_text}</text>
|
39
31
|
<entityType>#{options[:entity_type]}</entityType>
|
40
32
|
<useBr>#{options[:use_br]}</useBr>
|
41
33
|
<useP>#{options[:use_p]}</useP>
|
@@ -44,11 +36,18 @@ module AlsTypograf
|
|
44
36
|
</soap:Body>
|
45
37
|
</soap:Envelope>
|
46
38
|
END_SOAP
|
39
|
+
response = self.class.post('/webservices/typograf.asmx',
|
40
|
+
:body => soap_request)
|
41
|
+
response['soap:Envelope']['soap:Body']['ProcessTextResponse']['ProcessTextResult'].
|
42
|
+
gsub(/&/, '&').
|
43
|
+
gsub(/</, '<').
|
44
|
+
gsub(/>/, '>').
|
45
|
+
gsub(/\t$/, '')
|
46
|
+
rescue
|
47
|
+
text
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
50
|
-
mattr_accessor :options
|
51
|
-
|
52
51
|
DEFAULT_OPTIONS = {
|
53
52
|
:entity_type => 4,
|
54
53
|
:use_br => 1,
|
@@ -56,42 +55,84 @@ module AlsTypograf
|
|
56
55
|
:max_nobr => 3,
|
57
56
|
:encoding => 'UTF-8'
|
58
57
|
}
|
58
|
+
VALID_OPTIONS = DEFAULT_OPTIONS.keys.join('|')
|
59
|
+
|
60
|
+
mattr_accessor :options
|
59
61
|
@@options = DEFAULT_OPTIONS.dup
|
60
62
|
|
63
|
+
# Get a global AlsTypograf option
|
64
|
+
# @param [String, Symbol] option name
|
65
|
+
def self.[](param)
|
66
|
+
self.options[param.to_sym]
|
67
|
+
end
|
61
68
|
|
69
|
+
# Set a global AlsTypograf option
|
70
|
+
# @param [String, Symbol] option name
|
71
|
+
# @param [Numeric, String] value for the option
|
62
72
|
def self.[]=(param, value)
|
63
|
-
self.options[param] = value
|
73
|
+
self.options[param.to_sym] = value
|
64
74
|
end
|
65
75
|
|
76
|
+
# Reset default options
|
66
77
|
def self.default_options!
|
67
78
|
@@options = DEFAULT_OPTIONS.dup
|
68
79
|
end
|
69
80
|
|
81
|
+
# Set option #entity_type to HTML (e. g. , —)
|
70
82
|
def self.html_entities!
|
71
83
|
self[:entity_type] = 1
|
72
84
|
end
|
73
85
|
|
86
|
+
# Set option #entity_type to XML (e. g. ©, ›)
|
74
87
|
def self.xml_entities!
|
75
88
|
self[:entity_type] = 2
|
76
89
|
end
|
77
90
|
|
91
|
+
# Set option #entity_type to nothing (e. g. —, ©, ×)
|
78
92
|
def self.no_entities!
|
79
93
|
self[:entity_type] = 3
|
80
94
|
end
|
81
95
|
|
96
|
+
# Set option #entity_type to mixed (e. g. ©, )
|
82
97
|
def self.mixed_entities!
|
83
98
|
self[:entity_type] = 4
|
84
99
|
end
|
85
100
|
|
86
|
-
|
101
|
+
# Option to replace \n with +<br />+
|
102
|
+
# @param [Boolean] to use +<br />+ or not
|
103
|
+
def self.use_br=(value)
|
104
|
+
self[:use_br] = value ? 1 : 0
|
105
|
+
end
|
106
|
+
|
107
|
+
# Option to wrap paragraphs with +<p></p>+
|
108
|
+
# @param [Boolean] to wrap para or not
|
109
|
+
def self.use_p=(value)
|
87
110
|
self[:use_p] = value ? 1 : 0
|
88
111
|
end
|
89
112
|
|
90
|
-
|
113
|
+
# How many symbols around dash to surround with +<nobr>+ tag
|
114
|
+
# @param [Numeric, Boolean] symbols count
|
115
|
+
def self.max_nobr=(value)
|
91
116
|
self[:max_nobr] = value ? value : 0
|
92
117
|
end
|
93
118
|
|
94
|
-
def self.
|
95
|
-
|
119
|
+
def self.method_missing(method_name, *args)
|
120
|
+
case method_name.to_s
|
121
|
+
when /^(#{VALID_OPTIONS})=$/
|
122
|
+
self[$1.to_sym] = args.first
|
123
|
+
when /^(#{VALID_OPTIONS})$/
|
124
|
+
self[method_name.to_sym]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Process text with Typograf web-service
|
129
|
+
# @param [String] text to process
|
130
|
+
# @param [Hash] custom_options the options to process current text with
|
131
|
+
# @option custom_options [String] :entity_type Type of entities to use in processed text
|
132
|
+
# @option custom_options [String] :use_br Whether or not to use +<br />+
|
133
|
+
# @option custom_options [String] :use_p Whether or not to surround paras with +<p></p>+
|
134
|
+
# @option custom_options [String] :encoding Encoding of text
|
135
|
+
def self.process(text, custom_options = {})
|
136
|
+
Request.new.process_text(text, custom_options.reverse_merge(options))
|
96
137
|
end
|
97
138
|
end
|
data/test/test_als_typograf.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: als_typograf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Semyonov
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- README.rdoc
|
49
49
|
- Rakefile
|
50
50
|
- VERSION
|
51
|
+
- als_typograf.gemspec
|
51
52
|
- lib/als_typograf.rb
|
52
53
|
- test/helper.rb
|
53
54
|
- test/test_als_typograf.rb
|