twitter-text 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af3710d1c75e90e769b7602895256d53d4855f75
4
- data.tar.gz: 3576ab5879783cb921b5658c4e4df1acc53ff164
3
+ metadata.gz: 5f1bec22f1774f73007ab1490af65c1a5ad75786
4
+ data.tar.gz: bf7463dedb6b11bdc70146d6076132c4d181ba98
5
5
  SHA512:
6
- metadata.gz: 42a2cf6f0d1c37d5ee1b997865d0f0714d6ef388bf295789854779be3abd8b3d42cf2cea2f9b042b5b26e3850c1fc4e1da8a0b4eb05d9f4799f349fbbbb04e2c
7
- data.tar.gz: 00bf947a72ab7ecf86d2b1e66cb7863d961f6b862bf4bd8aebebd0eb58776a92d96e2722fc5d1a684fcc7378ded2373365fe4f38d09e90407e85a2127f9a1878
6
+ metadata.gz: 7756ea6edc3d0a818cc5c4f112c42fcea8d79ff52655e0b15207ed29467c09476d36e0a707e6324d8afef04bf35760199c6363043197d32bfff80ad78a5d71f7
7
+ data.tar.gz: 0a8b3ad25d09d4dee903b1579d1a549dade610863bd1e19cd0258f76415462de838a0fd9c3ce7633db1e59229a71f1d7d28a33cef374abdee3e807e0eb8ec7a1
data/.travis.yml CHANGED
@@ -3,3 +3,7 @@ rvm:
3
3
  - 1.8.7
4
4
  - 1.9.3
5
5
  - 2.0.0
6
+ - 2.1.0
7
+ before_install:
8
+ - gem update --system
9
+ - gem --version
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- == twitter-text {<img src="https://secure.travis-ci.org/twitter/twitter-text-rb.png" />}[http://travis-ci.org/twitter/twitter-text-rb] {<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/twitter/twitter-text-rb]
1
+ == twitter-text {<img src="https://secure.travis-ci.org/twitter/twitter-text-rb.png?branch=master" />}[http://travis-ci.org/twitter/twitter-text-rb] {<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/twitter/twitter-text-rb]
2
2
 
3
3
  A gem that provides text processing routines for Twitter Tweets. The major
4
4
  reason for this is to unify the various auto-linking and extraction of
data/Rakefile CHANGED
@@ -46,7 +46,7 @@ namespace :test do
46
46
  end
47
47
 
48
48
  desc "Run conformance test suite"
49
- task :conformance => ['conformance:latest', 'conformance:run'] do
49
+ task :conformance => ['conformance:update', 'conformance:run'] do
50
50
  end
51
51
  end
52
52
 
@@ -64,7 +64,7 @@ module Twitter
64
64
  options[:html_attrs] = extract_html_attrs_from_options!(options)
65
65
  options[:html_attrs][:rel] ||= "nofollow" unless options[:suppress_no_follow]
66
66
 
67
- Twitter::Rewriter.rewrite_entities(text, entities) do |entity, chars|
67
+ Twitter::Rewriter.rewrite_entities(text.dup, entities) do |entity, chars|
68
68
  if entity[:url]
69
69
  link_to_url(entity, chars, options, &block)
70
70
  elsif entity[:hashtag]
@@ -370,9 +370,9 @@ module Twitter
370
370
 
371
371
  def link_to_screen_name(entity, chars, options = {})
372
372
  name = "#{entity[:screen_name]}#{entity[:list_slug]}"
373
- chunk = name
374
- chunk = yield(name) if block_given?
375
- name.downcase!
373
+
374
+ chunk = name.dup
375
+ chunk = yield(chunk) if block_given?
376
376
 
377
377
  at = chars[entity[:indices].first]
378
378
 
@@ -187,7 +187,20 @@ module Twitter
187
187
  REGEXEN[:valid_subdomain] = /(?:(?:#{DOMAIN_VALID_CHARS}(?:[_-]|#{DOMAIN_VALID_CHARS})*)?#{DOMAIN_VALID_CHARS}\.)/io
188
188
  REGEXEN[:valid_domain_name] = /(?:(?:#{DOMAIN_VALID_CHARS}(?:[-]|#{DOMAIN_VALID_CHARS})*)?#{DOMAIN_VALID_CHARS}\.)/io
189
189
 
190
- REGEXEN[:valid_gTLD] = /(?:(?:aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|xxx)(?=[^0-9a-z@]|$))/i
190
+ REGEXEN[:valid_gTLD] = %r{
191
+ (?:
192
+ (?:academy|aero|agency|arpa|asia|bargains|berlin|bike|biz|blue|boutique|build|builders|buzz|cab|camera|camp|careers|cat|catering|
193
+ center|ceo|cheap|cleaning|clothing|club|codes|coffee|com|community|company|computer|construction|contractors|cool|coop|cruises|
194
+ dance|dating|democrat|diamonds|directory|domains|edu|education|email|enterprises|equipment|estate|events|expert|exposed|farm|
195
+ flights|florist|gallery|gift|glass|gov|graphics|guitars|guru|holdings|holiday|house|immobilien|info|institute|int|international|
196
+ jobs|kaufen|kim|kitchen|kiwi|land|lighting|limo|link|luxury|management|marketing|menu|mil|mobi|moda|monash|museum|nagoya|name|net|
197
+ ninja|onl|org|partners|photo|photography|photos|pics|pink|plumbing|post|pro|properties|recipes|red|rentals|repair|report|rich|ruhr|
198
+ sexy|shiksha|shoes|singles|social|solar|solutions|support|systems|tattoo|technology|tel|tienda|tips|today|tokyo|tools|training|
199
+ travel|uno|ventures|viajes|voting|voyage|wang|watch|wed|wien|works|xxx|zone)
200
+ (?=[^0-9a-z@]|$)
201
+ )
202
+ }ix
203
+
191
204
  REGEXEN[:valid_ccTLD] = %r{
192
205
  (?:
193
206
  (?:ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|
@@ -23,6 +23,14 @@ describe Twitter::Autolink do
23
23
  end
24
24
  end
25
25
 
26
+ context "username in camelCase" do
27
+ def original_text() "@jaCob iS cOoL" end
28
+
29
+ it "should be linked" do
30
+ @autolinked_text.should link_to_screen_name('jaCob')
31
+ end
32
+ end
33
+
26
34
  context "username at beginning of line" do
27
35
  def original_text; "@jacob you're cool"; end
28
36
 
data/spec/spec_helper.rb CHANGED
@@ -59,7 +59,7 @@ RSpec::Matchers.define :link_to_screen_name do |screen_name, inner_text|
59
59
  @link = Nokogiri::HTML(text).search("a.username")
60
60
  @link &&
61
61
  @link.inner_text == expected &&
62
- "https://twitter.com/#{screen_name}".downcase.should == @link.first['href']
62
+ "https://twitter.com/#{screen_name}".should == @link.first['href']
63
63
  end
64
64
 
65
65
  failure_message_for_should do |text|
@@ -3,9 +3,11 @@ require 'nokogiri'
3
3
  require 'test/unit'
4
4
  require 'yaml'
5
5
 
6
- # Ruby 1.8 encoding check
6
+ # Detect Ruby 1.8 and older to apply necessary encoding fixes
7
7
  major, minor, patch = RUBY_VERSION.split('.')
8
- if major.to_i == 1 && minor.to_i < 9
8
+ OLD_RUBY = major.to_i == 1 && minor.to_i < 9
9
+
10
+ if OLD_RUBY
9
11
  $KCODE='u'
10
12
  end
11
13
 
@@ -19,12 +21,24 @@ class ConformanceTest < Test::Unit::TestCase
19
21
 
20
22
  private
21
23
 
22
- %w(description expected text json hits).each do |key|
24
+ %w(description expected json hits).each do |key|
23
25
  define_method key.to_sym do
24
26
  @test_info[key]
25
27
  end
26
28
  end
27
29
 
30
+ if OLD_RUBY
31
+ def text
32
+ @test_info['text'].gsub(/\\u([0-9a-f]{8})/i) do
33
+ [$1.to_i(16)].pack('U*')
34
+ end
35
+ end
36
+ else
37
+ def text
38
+ @test_info['text']
39
+ end
40
+ end
41
+
28
42
  def assert_equal_without_attribute_order(expected, actual, failure_message = nil)
29
43
  assert_block(build_message(failure_message, "<?> expected but was\n<?>", expected, actual)) do
30
44
  equal_nodes?(Nokogiri::HTML(expected).root, Nokogiri::HTML(actual).root)
@@ -53,8 +67,10 @@ class ConformanceTest < Test::Unit::TestCase
53
67
  yaml = YAML.load_file(File.join(CONFORMANCE_DIR, file))
54
68
  raise "No such test suite: #{test_type.to_s}" unless yaml["tests"][test_type.to_s]
55
69
 
70
+ file_name = file.split('.').first
71
+
56
72
  yaml["tests"][test_type.to_s].each do |test_info|
57
- name = :"test_#{test_type} #{test_info['description']}"
73
+ name = :"test_#{file_name}_#{test_type} #{test_info['description']}"
58
74
  define_method name do
59
75
  @test_info = test_info
60
76
  instance_eval(&block)
data/twitter-text.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "twitter-text"
5
- s.version = "1.7.0"
5
+ s.version = "1.8.0"
6
6
  s.authors = ["Matt Sanford", "Patrick Ewing", "Ben Cherry", "Britt Selvitelle",
7
7
  "Raffi Krikorian", "J.P. Cummins", "Yoshimasa Niwa", "Keita Fujii", "James Koval"]
8
8
  s.email = ["matt@twitter.com", "patrick.henry.ewing@gmail.com", "bcherry@gmail.com", "bs@brittspace.com",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-text
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Sanford
@@ -16,104 +16,104 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2013-11-13 00:00:00.000000000 Z
19
+ date: 2014-02-25 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: multi_json
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.3'
28
28
  type: :development
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.3'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: nokogiri
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.5.10
42
42
  type: :development
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ~>
47
47
  - !ruby/object:Gem::Version
48
48
  version: 1.5.10
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rake
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: rdoc
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: rspec
79
79
  requirement: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  type: :development
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: simplecov
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: unf
107
107
  requirement: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - "~>"
109
+ - - ~>
110
110
  - !ruby/object:Gem::Version
111
111
  version: 0.1.0
112
112
  type: :runtime
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - "~>"
116
+ - - ~>
117
117
  - !ruby/object:Gem::Version
118
118
  version: 0.1.0
119
119
  description: A gem that provides text handling for Twitter
@@ -131,11 +131,11 @@ executables: []
131
131
  extensions: []
132
132
  extra_rdoc_files: []
133
133
  files:
134
- - ".gemtest"
135
- - ".gitignore"
136
- - ".gitmodules"
137
- - ".rspec"
138
- - ".travis.yml"
134
+ - .gemtest
135
+ - .gitignore
136
+ - .gitmodules
137
+ - .rspec
138
+ - .travis.yml
139
139
  - Gemfile
140
140
  - LICENSE
141
141
  - README.rdoc
@@ -174,17 +174,17 @@ require_paths:
174
174
  - lib
175
175
  required_ruby_version: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - ">="
177
+ - - '>='
178
178
  - !ruby/object:Gem::Version
179
179
  version: '0'
180
180
  required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  requirements:
182
- - - ">="
182
+ - - '>='
183
183
  - !ruby/object:Gem::Version
184
184
  version: '0'
185
185
  requirements: []
186
186
  rubyforge_project:
187
- rubygems_version: 2.0.3
187
+ rubygems_version: 2.1.11
188
188
  signing_key:
189
189
  specification_version: 4
190
190
  summary: Twitter text handling library