als_typograf 0.2.0 → 0.3.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/.gitignore CHANGED
@@ -1,18 +1,3 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
1
  ## PROJECT::GENERAL
17
2
  .yardoc
18
3
  coverage
@@ -21,5 +6,6 @@ doc
21
6
  pkg
22
7
 
23
8
  ## PROJECT::SPECIFIC
24
- test/*.log
25
- test/*.db
9
+ *.log
10
+ *.db
11
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ -Ilib
3
+ -Ispec
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem 'rake'
7
+ gem 'roodi'
8
+ gem 'sqlite3'
9
+ end
10
+
11
+ group :documentation do
12
+ gem 'yard'
13
+ end
data/Rakefile CHANGED
@@ -1,54 +1,11 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require 'bundler/gem_tasks'
3
2
 
4
3
  begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = 'als_typograf'
8
- gem.summary = %Q{ArtLebedevStudio.RemoteTypograf}
9
- gem.description = %Q{ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)}
10
- gem.email = 'rotuka@rotuka.com'
11
- gem.homepage = 'http://github.com/rotuka/als_typograf'
12
- gem.authors = ['Alexander Semyonov']
13
- gem.add_dependency 'activesupport', '>= 2.3.4'
14
- gem.add_development_dependency 'shoulda', '>= 0'
15
- gem.add_development_dependency 'yard', '>= 0'
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
20
- end
21
-
22
- require 'rake/testtask'
23
- Rake::TestTask.new(:test) do |test|
24
- test.libs << 'lib' << 'test'
25
- test.pattern = 'test/**/*_test.rb'
26
- test.verbose = true
27
- end
28
-
29
- begin
30
- require 'rcov/rcovtask'
31
- Rcov::RcovTask.new do |test|
32
- test.libs << 'test'
33
- test.pattern = 'test/**/*_test.rb'
34
- test.verbose = true
35
- end
36
- rescue LoadError
37
- task :rcov do
38
- abort 'RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov'
39
- end
40
- end
41
-
42
- begin
43
- require 'reek/adapters/rake_task'
44
- Reek::RakeTask.new do |t|
45
- t.fail_on_error = true
46
- t.verbose = false
47
- t.source_files = 'lib/**/*.rb'
48
- end
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
49
6
  rescue LoadError
50
- task :reek do
51
- abort 'Reek is not available. In order to run reek, you must: sudo gem install reek'
7
+ task :spec do
8
+ abort 'RSpec is not available. In order to run specs, you must run: gem install rspec'
52
9
  end
53
10
  end
54
11
 
@@ -73,7 +30,4 @@ rescue LoadError
73
30
  end
74
31
  end
75
32
 
76
- task :test => :check_dependencies
77
- task :default => :test
78
- desc 'Push release to github and gemcutter and install gem in the system'
79
- task :push => %w(git:release release install)
33
+ task :default => :spec
@@ -1,68 +1,25 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'als_typograf/version'
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{als_typograf}
8
- s.version = "0.2.0"
6
+ s.name = %q{als_typograf}
7
+ s.version = AlsTypograf::VERSION
8
+ s.authors = ['Alexander Semyonov']
9
+ s.email = 'al@semyonov.us'
10
+ s.homepage = 'http://github.com/alsemyonov/als_typograf'
11
+ s.summary = 'ArtLebedevStudio.RemoteTypograf'
12
+ s.description = 'Ruby client for ArtLebedevStudio.RemoteTypograf service'
9
13
 
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{2010-09-13}
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/active_model/typograf.rb",
28
- "lib/als_typograf.rb",
29
- "lib/als_typograf/request.rb",
30
- "rails/init.rb",
31
- "test/database.yml",
32
- "test/helper.rb",
33
- "test/schema.rb",
34
- "test/unit/als_typograf_test.rb",
35
- "test/unit/article_test.rb"
36
- ]
37
- s.homepage = %q{http://github.com/rotuka/als_typograf}
38
- s.rdoc_options = ["--charset=UTF-8"]
39
- s.require_paths = ["lib"]
40
- s.rubygems_version = %q{1.3.7}
41
- s.summary = %q{ArtLebedevStudio.RemoteTypograf}
42
- s.test_files = [
43
- "test/schema.rb",
44
- "test/helper.rb",
45
- "test/unit/article_test.rb",
46
- "test/unit/als_typograf_test.rb"
47
- ]
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = %w(lib)
48
18
 
49
- if s.respond_to? :specification_version then
50
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
51
- s.specification_version = 3
52
-
53
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
- s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
55
- s.add_development_dependency(%q<shoulda>, [">= 0"])
56
- s.add_development_dependency(%q<yard>, [">= 0"])
57
- else
58
- s.add_dependency(%q<activesupport>, [">= 2.3.4"])
59
- s.add_dependency(%q<shoulda>, [">= 0"])
60
- s.add_dependency(%q<yard>, [">= 0"])
61
- end
62
- else
63
- s.add_dependency(%q<activesupport>, [">= 2.3.4"])
64
- s.add_dependency(%q<shoulda>, [">= 0"])
65
- s.add_dependency(%q<yard>, [">= 0"])
66
- end
19
+ s.add_runtime_dependency('activesupport', ['>= 2.3.4'])
20
+ s.add_development_dependency('activerecord', ['>= 2.3.4'])
21
+ s.add_development_dependency('sqlite3')
22
+ s.add_development_dependency('rspec')
23
+ s.add_development_dependency('yard')
67
24
  end
68
25
 
@@ -1,3 +1,5 @@
1
+ require 'active_model'
2
+
1
3
  module ActiveModel
2
4
  module Typograf
3
5
  module InstanceMethods
@@ -1,12 +1,11 @@
1
- $KCODE = 'u'
1
+ # -*- encoding: utf-8 -*-
2
+ require 'active_support/core_ext/hash/reverse_merge'
3
+ require 'als_typograf/version'
2
4
 
3
- require 'active_support'
4
-
5
- # ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)
5
+ # Ruby client for ArtLebedevStudio.RemoteTypograf web-service
6
6
  # @author Alexander Semyonov
7
7
  module AlsTypograf
8
8
  autoload :Request, 'als_typograf/request'
9
- autoload :ActiveRecord, 'als_typograf/active_record'
10
9
 
11
10
  HTML_ENTITIES = 1
12
11
  XML_ENTITIES = 2
@@ -14,16 +13,19 @@ module AlsTypograf
14
13
  MIXED_ENTITIES = 4
15
14
 
16
15
  DEFAULT_OPTIONS = {
17
- :entity_type => NO_ENTITIES,
18
- :use_br => 1,
19
- :use_p => 1,
20
- :max_nobr => 3,
21
- :encoding => 'UTF-8'
16
+ entity_type: NO_ENTITIES,
17
+ use_br: true,
18
+ use_p: true,
19
+ max_nobr: 3,
20
+ encoding: 'UTF-8',
21
+ debug: false
22
22
  }
23
23
  VALID_OPTIONS = DEFAULT_OPTIONS.keys.join('|')
24
24
 
25
- mattr_accessor :options
26
- @@options = DEFAULT_OPTIONS.dup
25
+ class << self
26
+ attr_accessor :options
27
+ end
28
+ self.options = DEFAULT_OPTIONS.dup
27
29
 
28
30
  # Get a global AlsTypograf option
29
31
  # @param [String, Symbol] param option name
@@ -40,7 +42,7 @@ module AlsTypograf
40
42
 
41
43
  # Reset default options
42
44
  def self.default_options!
43
- @@options = DEFAULT_OPTIONS.dup
45
+ self.options = DEFAULT_OPTIONS.dup
44
46
  end
45
47
 
46
48
  # Set option #entity_type to HTML (e. g. &nbsp;, &mdash;)
@@ -66,13 +68,13 @@ module AlsTypograf
66
68
  # Option to replace \n with +<br />+
67
69
  # @param [Boolean] value to use +<br />+ or not
68
70
  def self.use_br=(value)
69
- self[:use_br] = value ? 1 : 0
71
+ self[:use_br] = value
70
72
  end
71
73
 
72
74
  # Option to wrap paragraphs with +<p></p>+
73
75
  # @param [Boolean] value to wrap para or not
74
76
  def self.use_p=(value)
75
- self[:use_p] = value ? 1 : 0
77
+ self[:use_p] = value
76
78
  end
77
79
 
78
80
  # How many symbols around dash to surround with +<nobr>+ tag
@@ -81,6 +83,10 @@ module AlsTypograf
81
83
  self[:max_nobr] = value ? value : 0
82
84
  end
83
85
 
86
+ def self.debug?
87
+ !!self[:debug]
88
+ end
89
+
84
90
  def self.method_missing(method_name, *args)
85
91
  case method_name.to_s
86
92
  when /^(#{VALID_OPTIONS})=$/
@@ -88,7 +94,7 @@ module AlsTypograf
88
94
  when /^(#{VALID_OPTIONS})$/
89
95
  self[method_name.to_sym]
90
96
  else
91
- super(method_name, *args)
97
+ super
92
98
  end
93
99
  end
94
100
 
@@ -103,6 +109,14 @@ module AlsTypograf
103
109
  def self.process(text, custom_options = {})
104
110
  Request.process_text(text, custom_options.reverse_merge(options))
105
111
  end
112
+
113
+ # @param [Exception] exception
114
+ def self.log_exception(exception)
115
+ if debug?
116
+ $stderr.puts exception.message
117
+ $stderr.puts exception.backtrace.join("\n")
118
+ end
119
+ end
106
120
  end
107
121
 
108
122
  if defined? ActiveModel
@@ -1,19 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  require 'net/http'
2
3
 
3
4
  module AlsTypograf
4
5
  # The request class
5
6
  module Request
6
- @@url = URI.parse('http://typograf.artlebedev.ru/webservices/typograf.asmx')
7
- @@result_regexp = /<ProcessTextResult>\s*((.|\n)*?)\s*<\/ProcessTextResult>/m
7
+ SERVICE_URL = URI.parse('http://typograf.artlebedev.ru/webservices/typograf.asmx')
8
+ RESULT_REGEXP = /<ProcessTextResult>\s*((.|\n)*?)\s*<\/ProcessTextResult>/
8
9
 
9
10
  # Process text with remote web-service
10
11
  # @param [String] text text to process
11
12
  # @param [Hash] options options for web-service
12
13
  def self.process_text(text, options = {})
13
- request = Net::HTTP::Post.new(@@url.path, {
14
+ text = text.encode(options[:encoding])
15
+
16
+ #noinspection RubyStringKeysInHashInspection
17
+ request = Net::HTTP::Post.new(SERVICE_URL.path, {
14
18
  'Content-Type' => 'text/xml',
15
- 'SOAPAction' => '"http://typograf.artlebedev.ru/webservices/ProcessText"'
19
+ 'SOAPAction' => '"http://typograf.artlebedev.ru/webservices/ProcessText"'
16
20
  })
21
+
17
22
  request.body = <<-END_SOAP
18
23
  <?xml version="1.0" encoding="#{options[:encoding]}" ?>
19
24
  <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/">
@@ -27,23 +32,28 @@ module AlsTypograf
27
32
  </ProcessText>
28
33
  </soap:Body>
29
34
  </soap:Envelope>
30
- END_SOAP
35
+ END_SOAP
31
36
 
32
- response = Net::HTTP.new(@@url.host, @@url.port).start do |http|
37
+ response = Net::HTTP.new(SERVICE_URL.host, SERVICE_URL.port).start do |http|
33
38
  http.request(request)
34
39
  end
35
40
 
36
- case response
37
- when Net::HTTPSuccess
38
- result = if @@result_regexp =~ response.body
39
- $1.gsub(/&gt;/, '>').gsub(/&lt;/, '<').gsub(/&amp;/, '&').gsub(/(\t|\n)$/, '')
40
- else
41
- text
42
- end
43
- else
44
- text
45
- end
46
- rescue ::Exception => exception
41
+ response.body.force_encoding(options[:encoding]) if response.body.respond_to?(:force_encoding)
42
+
43
+ text = case response
44
+ when Net::HTTPSuccess
45
+ if RESULT_REGEXP =~ response.body
46
+ $1.gsub(/&gt;/, '>').gsub(/&lt;/, '<').gsub(/&amp;/, '&').gsub(/(\t|\n)$/, '')
47
+ else
48
+ text
49
+ end
50
+ else
51
+ text
52
+ end
53
+
54
+ text.encode(options[:encoding])
55
+ rescue StandardError => e
56
+ AlsTypograf.log_exception(e)
47
57
  text
48
58
  end
49
59
  end
@@ -0,0 +1,3 @@
1
+ module AlsTypograf
2
+ VERSION = '0.3.0'
3
+ end
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require 'active_model/typograf'
4
+
5
+ describe ActiveModel::Typograf do
6
+ class Article < ActiveRecord::Base
7
+ typograf(:content)
8
+ typograf(:title => {:use_p => false, :use_br => false})
9
+ typograf(:skills, :achievements, :description, :use_br => false)
10
+ end
11
+
12
+ subject { Article }
13
+
14
+ it 'have class method #typograf' do
15
+ Article.should respond_to(:typograf)
16
+ end
17
+ %w(typograf_fields typograf_current_fields).each do |field|
18
+ it "have instance method \##{field}" do
19
+ Article.new.should respond_to(field)
20
+ end
21
+ end
22
+
23
+ it 'load schema correctly' do
24
+ Article.all.should == []
25
+ end
26
+
27
+ context 'with an Article' do
28
+ before do
29
+ @article = Article.create(:title => '- Does it "Article"?',
30
+ :content => 'Да, это - "Статья"...')
31
+ AlsTypograf.default_options!
32
+ end
33
+
34
+ subject { @article }
35
+
36
+ its(:content) { should == "<p>Да, это — «Статья»...<br />\n</p>" }
37
+ its(:title) { should == '— Does it «Article»?' }
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe AlsTypograf do
5
+ def self.process_assertions(assertions)
6
+ assertions.each do |from, to|
7
+ it "process [#{from}] to [#{to}]" do
8
+ AlsTypograf.process(from).should == to
9
+ end
10
+ end
11
+ end
12
+
13
+ context '.default_options!' do
14
+ before { AlsTypograf.default_options! }
15
+
16
+ process_assertions({
17
+ '- Это "Типограф"?' => "<p>— Это «Типограф»?<br />\n</p>",
18
+ })
19
+ end
20
+
21
+ context '.use_p == false' do
22
+ before { AlsTypograf.use_p = false }
23
+
24
+ process_assertions({
25
+ '- Это "Типограф"?' => '— Это «Типограф»?<br />',
26
+ })
27
+ end
28
+ end
@@ -0,0 +1,19 @@
1
+ SPEC_ROOT = File.expand_path('../..', __FILE__)
2
+ require 'bundler/setup'
3
+ require 'rspec'
4
+ require 'active_record'
5
+ require 'als_typograf'
6
+
7
+ Encoding.default_internal = 'utf-8'
8
+ Encoding.default_external = 'utf-8'
9
+
10
+ Dir[File.join(SPEC_ROOT, 'spec/support/**/*.rb')].each {|f| require f}
11
+
12
+ #noinspection RubyResolve
13
+ RSpec.configure do |config|
14
+ config.mock_with :rspec
15
+ config.order = 'random'
16
+ config.treat_symbols_as_metadata_keys_with_true_values = true
17
+ config.filter_run focus: true
18
+ config.run_all_when_everything_filtered = true
19
+ end
@@ -1,10 +1,10 @@
1
1
  sqlite:
2
2
  :adapter: sqlite
3
- :database: test/als_typograf_plugin.sqlite.db
3
+ :database: spec/support/als_typograf_plugin.sqlite.db
4
4
 
5
5
  sqlite3:
6
6
  :adapter: sqlite3
7
- :database: test/als_typograf_plugin.sqlite3.db
7
+ :database: spec/support/als_typograf_plugin.sqlite3.db
8
8
 
9
9
  postgresql:
10
10
  :adapter: postgresql
@@ -0,0 +1,35 @@
1
+ require 'active_record'
2
+ require 'logger'
3
+
4
+ config = YAML::load(File.read(File.join(SPEC_ROOT, 'spec/support/database.yml')))
5
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/debug.log')
6
+
7
+ db_adapter = ENV['DB']
8
+
9
+ # no db passed, try one of these fine config-free DBs before bombing.
10
+ db_adapter ||=
11
+ begin
12
+ require 'sqlite'
13
+ 'sqlite'
14
+ rescue MissingSourceFile
15
+ begin
16
+ require 'sqlite3'
17
+ 'sqlite3'
18
+ rescue MissingSourceFile
19
+ nil
20
+ end
21
+ end
22
+
23
+ if db_adapter.nil?
24
+ raise 'No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3.'
25
+ end
26
+
27
+ ActiveRecord::Base.establish_connection(config[db_adapter])
28
+
29
+ ActiveRecord::Schema.define(:version => 0) do
30
+ create_table :articles, :force => true do |t|
31
+ t.string :title
32
+ t.text :content, :skills, :achievements, :description,
33
+ :foo, :bar, :baz
34
+ end
35
+ end
metadata CHANGED
@@ -1,79 +1,106 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: als_typograf
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Alexander Semyonov
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-09-13 00:00:00 +04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: activesupport
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 11
30
- segments:
31
- - 2
32
- - 3
33
- - 4
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.3.4
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: shoulda
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.3.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: activerecord
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 2.3.4
49
38
  type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: yard
53
39
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
55
41
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.4
46
+ - !ruby/object:Gem::Dependency
47
+ name: sqlite3
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
63
54
  type: :development
64
- version_requirements: *id003
65
- description: ruby-implementation of ArtLebedevStudio.RemoteTypograf class (web-service client)
66
- email: rotuka@rotuka.com
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: yard
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Ruby client for ArtLebedevStudio.RemoteTypograf service
95
+ email: al@semyonov.us
67
96
  executables: []
68
-
69
97
  extensions: []
70
-
71
- extra_rdoc_files:
72
- - LICENSE
73
- - README.rdoc
74
- files:
98
+ extra_rdoc_files: []
99
+ files:
75
100
  - .document
76
101
  - .gitignore
102
+ - .rspec
103
+ - Gemfile
77
104
  - LICENSE
78
105
  - README.rdoc
79
106
  - Rakefile
@@ -82,48 +109,40 @@ files:
82
109
  - lib/active_model/typograf.rb
83
110
  - lib/als_typograf.rb
84
111
  - lib/als_typograf/request.rb
85
- - rails/init.rb
86
- - test/database.yml
87
- - test/helper.rb
88
- - test/schema.rb
89
- - test/unit/als_typograf_test.rb
90
- - test/unit/article_test.rb
91
- has_rdoc: true
92
- homepage: http://github.com/rotuka/als_typograf
112
+ - lib/als_typograf/version.rb
113
+ - spec/active_model/typograf_spec.rb
114
+ - spec/als_typograf_spec.rb
115
+ - spec/spec_helper.rb
116
+ - spec/support/database.yml
117
+ - spec/support/schema.rb
118
+ homepage: http://github.com/alsemyonov/als_typograf
93
119
  licenses: []
94
-
95
120
  post_install_message:
96
- rdoc_options:
97
- - --charset=UTF-8
98
- require_paths:
121
+ rdoc_options: []
122
+ require_paths:
99
123
  - lib
100
- required_ruby_version: !ruby/object:Gem::Requirement
124
+ required_ruby_version: !ruby/object:Gem::Requirement
101
125
  none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
109
- required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
131
  none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
118
136
  requirements: []
119
-
120
137
  rubyforge_project:
121
- rubygems_version: 1.3.7
138
+ rubygems_version: 1.8.24
122
139
  signing_key:
123
140
  specification_version: 3
124
141
  summary: ArtLebedevStudio.RemoteTypograf
125
- test_files:
126
- - test/schema.rb
127
- - test/helper.rb
128
- - test/unit/article_test.rb
129
- - test/unit/als_typograf_test.rb
142
+ test_files:
143
+ - spec/active_model/typograf_spec.rb
144
+ - spec/als_typograf_spec.rb
145
+ - spec/spec_helper.rb
146
+ - spec/support/database.yml
147
+ - spec/support/schema.rb
148
+ has_rdoc:
@@ -1 +0,0 @@
1
- require 'als_typograf'
@@ -1,49 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
-
4
- require 'rubygems'
5
- require 'active_record'
6
- require 'shoulda'
7
- require 'redgreen' rescue nil
8
- require 'als_typograf'
9
- require 'active_support/test_case'
10
- require 'logger'
11
-
12
- class ActiveSupport::TestCase
13
- def self.process_assertions(assertions)
14
- assertions.each do |from, to|
15
- should "process [#{from}] to [#{to}]" do
16
- assert_equal(to, AlsTypograf.process(from))
17
- end
18
- end
19
- end
20
- end
21
-
22
- def load_schema
23
- config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
24
- ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
25
-
26
- db_adapter = ENV['DB']
27
-
28
- # no db passed, try one of these fine config-free DBs before bombing.
29
- db_adapter ||=
30
- begin
31
- require 'sqlite'
32
- 'sqlite'
33
- rescue MissingSourceFile
34
- begin
35
- require 'sqlite3'
36
- 'sqlite3'
37
- rescue MissingSourceFile
38
- end
39
- end
40
-
41
- if db_adapter.nil?
42
- raise 'No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3.'
43
- end
44
-
45
- ActiveRecord::Base.establish_connection(config[db_adapter])
46
- load(File.dirname(__FILE__) + "/schema.rb")
47
- require File.dirname(__FILE__) + '/../rails/init.rb'
48
- end
49
-
@@ -1,7 +0,0 @@
1
- ActiveRecord::Schema.define(:version => 0) do
2
- create_table :articles, :force => true do |t|
3
- t.string :title
4
- t.text :content, :skills, :achievements, :description,
5
- :foo, :bar, :baz
6
- end
7
- end
@@ -1,19 +0,0 @@
1
- require 'helper'
2
-
3
- class AlsTypografTest < ActiveSupport::TestCase
4
- # TODO: need more tests or not?
5
- context 'with default configuration' do
6
- setup { AlsTypograf.default_options! }
7
- process_assertions({
8
- '- Это "Типограф"?' => "<p>— Это «Типограф»?<br />\n</p>",
9
- })
10
- end
11
-
12
- context 'no p' do
13
- setup { AlsTypograf.use_p = false }
14
- process_assertions({
15
- '- Это "Типограф"?' => "— Это «Типограф»?<br />",
16
- })
17
- end
18
-
19
- end
@@ -1,44 +0,0 @@
1
- require 'helper'
2
- require 'shoulda/active_record/matchers'
3
- require 'shoulda/active_record/macros'
4
-
5
- load_schema
6
-
7
- class Article < ActiveRecord::Base
8
- typograf(:content)
9
- typograf(:title => {:use_p => false, :use_br => false})
10
- typograf(:skills, :achievements, :description, :use_br => false)
11
- end
12
-
13
- class ArticleTest < ActiveSupport::TestCase
14
- extend Shoulda::ActiveRecord::Macros
15
-
16
- should "have class method #typograf" do
17
- assert Article.respond_to?(:typograf)
18
- end
19
- %w(typograf_fields typograf_current_fields).each do |field|
20
- should "have instance method \##{field}" do
21
- assert Article.instance_methods.include?(field)
22
- end
23
- end
24
-
25
- should 'load schema correctly' do
26
- assert_equal [], Article.all
27
- end
28
-
29
- context 'with an Article' do
30
- setup do
31
- @article = Article.create(:title => '- Does it "Article"?',
32
- :content => 'Да, это - "Статья"...')
33
- AlsTypograf.default_options!
34
- end
35
-
36
- should 'typograf article’s content with default options' do
37
- assert_equal "<p>Да, это — «Статья»...<br />\n</p>", @article.content
38
- end
39
-
40
- should 'typograf article’s title with custom options' do
41
- assert_equal "— Does it «Article»?", @article.title
42
- end
43
- end
44
- end