als_typograf 0.0.5 → 0.1.0
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 +11 -12
- data/VERSION +1 -1
- data/als_typograf.gemspec +5 -8
- data/lib/als_typograf.rb +2 -2
- data/lib/als_typograf/request.rb +28 -13
- data/test/helper.rb +4 -4
- data/test/unit/als_typograf_test.rb +2 -2
- data/test/unit/article_test.rb +3 -3
- metadata +3 -13
data/Rakefile
CHANGED
@@ -4,20 +4,19 @@ require 'rake'
|
|
4
4
|
begin
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name =
|
7
|
+
gem.name = 'als_typograf'
|
8
8
|
gem.summary = %Q{ArtLebedevStudio.RemoteTypograf}
|
9
9
|
gem.description = %Q{ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)}
|
10
|
-
gem.email =
|
11
|
-
gem.homepage =
|
12
|
-
gem.authors = [
|
10
|
+
gem.email = 'rotuka@rotuka.com'
|
11
|
+
gem.homepage = 'http://github.com/rotuka/als_typograf'
|
12
|
+
gem.authors = ['Alexander Semyonov']
|
13
13
|
gem.add_dependency 'activesupport', '>= 2.3.4'
|
14
|
-
gem.
|
15
|
-
gem.add_development_dependency
|
16
|
-
gem.add_development_dependency "yard", ">= 0"
|
14
|
+
gem.add_development_dependency 'shoulda', '>= 0'
|
15
|
+
gem.add_development_dependency 'yard', '>= 0'
|
17
16
|
end
|
18
17
|
Jeweler::GemcutterTasks.new
|
19
18
|
rescue LoadError
|
20
|
-
puts
|
19
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
21
20
|
end
|
22
21
|
|
23
22
|
require 'rake/testtask'
|
@@ -36,7 +35,7 @@ begin
|
|
36
35
|
end
|
37
36
|
rescue LoadError
|
38
37
|
task :rcov do
|
39
|
-
abort
|
38
|
+
abort 'RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov'
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
@@ -49,7 +48,7 @@ begin
|
|
49
48
|
end
|
50
49
|
rescue LoadError
|
51
50
|
task :reek do
|
52
|
-
abort
|
51
|
+
abort 'Reek is not available. In order to run reek, you must: sudo gem install reek'
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
@@ -61,7 +60,7 @@ begin
|
|
61
60
|
end
|
62
61
|
rescue LoadError
|
63
62
|
task :roodi do
|
64
|
-
abort
|
63
|
+
abort 'Roodi is not available. In order to run roodi, you must: sudo gem install roodi'
|
65
64
|
end
|
66
65
|
end
|
67
66
|
|
@@ -70,7 +69,7 @@ begin
|
|
70
69
|
YARD::Rake::YardocTask.new
|
71
70
|
rescue LoadError
|
72
71
|
task :yardoc do
|
73
|
-
abort
|
72
|
+
abort 'YARD is not available. In order to run yardoc, you must: sudo gem install yard'
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/als_typograf.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{als_typograf}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alexander Semyonov"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-24}
|
13
13
|
s.description = %q{ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)}
|
14
14
|
s.email = %q{rotuka@rotuka.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -52,19 +52,16 @@ Gem::Specification.new do |s|
|
|
52
52
|
|
53
53
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
54
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
55
|
-
s.
|
56
|
-
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
55
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
57
56
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
58
57
|
else
|
59
58
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
60
|
-
s.add_dependency(%q<
|
61
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
59
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
62
60
|
s.add_dependency(%q<yard>, [">= 0"])
|
63
61
|
end
|
64
62
|
else
|
65
63
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
66
|
-
s.add_dependency(%q<
|
67
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
64
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
68
65
|
s.add_dependency(%q<yard>, [">= 0"])
|
69
66
|
end
|
70
67
|
end
|
data/lib/als_typograf.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
$KCODE = 'u'
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'active_support'
|
4
4
|
require 'httparty'
|
5
5
|
|
6
6
|
# ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)
|
@@ -102,7 +102,7 @@ module AlsTypograf
|
|
102
102
|
# @option custom_options [String] :max_nobr (3) How many symbols around dash to surround with +<nobr>+ tag
|
103
103
|
# @option custom_options [String] :encoding ('UTF-8') Encoding of text
|
104
104
|
def self.process(text, custom_options = {})
|
105
|
-
Request.
|
105
|
+
Request.process_text(text, custom_options.reverse_merge(options))
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
data/lib/als_typograf/request.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
1
3
|
module AlsTypograf
|
2
4
|
# The request class
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
format :xml
|
7
|
-
headers('Content-Type' => 'text/xml',
|
8
|
-
'Host' => 'typograf.artlebedev.ru',
|
9
|
-
'SOAPAction' => '"http://typograf.artlebedev.ru/webservices/ProcessText"')
|
5
|
+
module Request
|
6
|
+
@@url = URI.parse('http://typograf.artlebedev.ru/webservices/typograf.asmx')
|
7
|
+
@@result_regexp = /<ProcessTextResult>\s*((.|\n)*?)\s*<\/ProcessTextResult>/m
|
10
8
|
|
11
9
|
# Process text with remote web-service
|
12
10
|
# @param [String] text text to process
|
13
11
|
# @param [Hash] options options for web-service
|
14
|
-
def process_text(text, options = {})
|
15
|
-
|
12
|
+
def self.process_text(text, options = {})
|
13
|
+
request = Net::HTTP::Post.new(@@url.path, {
|
14
|
+
'Content-Type' => 'text/xml',
|
15
|
+
'SOAPAction' => '"http://typograf.artlebedev.ru/webservices/ProcessText"'
|
16
|
+
})
|
17
|
+
request.body = <<-END_SOAP
|
16
18
|
<?xml version="1.0" encoding="#{options[:encoding]}" ?>
|
17
19
|
<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/">
|
18
20
|
<soap:Body>
|
@@ -25,11 +27,24 @@ module AlsTypograf
|
|
25
27
|
</ProcessText>
|
26
28
|
</soap:Body>
|
27
29
|
</soap:Envelope>
|
28
|
-
|
29
|
-
|
30
|
-
response
|
30
|
+
END_SOAP
|
31
|
+
|
32
|
+
response = Net::HTTP.new(@@url.host, @@url.port).start do |http|
|
33
|
+
http.request(request)
|
34
|
+
end
|
35
|
+
|
36
|
+
case response
|
37
|
+
when Net::HTTPSuccess
|
38
|
+
result = if @@result_regexp =~ response.body
|
39
|
+
$1.gsub(/>/, '>').gsub(/</, '<').gsub(/&/, '&').gsub(/(\t|\n)$/, '')
|
40
|
+
else
|
41
|
+
text
|
42
|
+
end
|
43
|
+
else
|
44
|
+
text
|
45
|
+
end
|
31
46
|
rescue ::Exception => exception
|
32
|
-
|
47
|
+
text
|
33
48
|
end
|
34
49
|
end
|
35
50
|
end
|
data/test/helper.rb
CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
|
-
require '
|
5
|
+
require 'active_record'
|
6
6
|
require 'shoulda'
|
7
7
|
require 'redgreen' rescue nil
|
8
8
|
require 'als_typograf'
|
@@ -11,8 +11,8 @@ require 'active_support/test_case'
|
|
11
11
|
class ActiveSupport::TestCase
|
12
12
|
def self.process_assertions(assertions)
|
13
13
|
assertions.each do |from, to|
|
14
|
-
should "process
|
15
|
-
assert_equal
|
14
|
+
should "process [#{from}] to [#{to}]" do
|
15
|
+
assert_equal(to, AlsTypograf.process(from))
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -38,7 +38,7 @@ def load_schema
|
|
38
38
|
end
|
39
39
|
|
40
40
|
if db_adapter.nil?
|
41
|
-
raise
|
41
|
+
raise 'No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3.'
|
42
42
|
end
|
43
43
|
|
44
44
|
ActiveRecord::Base.establish_connection(config[db_adapter])
|
@@ -5,14 +5,14 @@ class AlsTypografTest < ActiveSupport::TestCase
|
|
5
5
|
context 'with default configuration' do
|
6
6
|
setup { AlsTypograf.default_options! }
|
7
7
|
process_assertions({
|
8
|
-
'- Это "Типограф"?' => "<p>—
|
8
|
+
'- Это "Типограф"?' => "<p>— Это «Типограф»?<br />\n</p>",
|
9
9
|
})
|
10
10
|
end
|
11
11
|
|
12
12
|
context 'no p' do
|
13
13
|
setup { AlsTypograf.use_p = false }
|
14
14
|
process_assertions({
|
15
|
-
'- Это "Типограф"?' => "—
|
15
|
+
'- Это "Типограф"?' => "— Это «Типограф»?<br />",
|
16
16
|
})
|
17
17
|
end
|
18
18
|
|
data/test/unit/article_test.rb
CHANGED
@@ -23,16 +23,16 @@ class ArticleTest < ActiveSupport::TestCase
|
|
23
23
|
context 'with an Article' do
|
24
24
|
setup do
|
25
25
|
@article = Article.create(:title => '- Does it "Article"?',
|
26
|
-
:content => '
|
26
|
+
:content => 'Да, это - "Статья"...')
|
27
27
|
AlsTypograf.default_options!
|
28
28
|
end
|
29
29
|
|
30
30
|
should 'typograf article’s content with default options' do
|
31
|
-
assert_equal
|
31
|
+
assert_equal "<p>Да, это — «Статья»...<br />\n</p>", @article.content
|
32
32
|
end
|
33
33
|
|
34
34
|
should 'typograf article’s title with custom options' do
|
35
|
-
assert_equal
|
35
|
+
assert_equal "— Does it “Article”?", @article.title
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
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.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Semyonov
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-24 00:00:00 +03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -23,17 +23,7 @@ dependencies:
|
|
23
23
|
version: 2.3.4
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
type: :runtime
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.4.5
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: thoughtbot-shoulda
|
26
|
+
name: shoulda
|
37
27
|
type: :development
|
38
28
|
version_requirement:
|
39
29
|
version_requirements: !ruby/object:Gem::Requirement
|